@sumaris-net/ngx-components 1.22.8 → 1.22.11-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sumaris-net.ngx-components.umd.js +202 -509
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +6 -0
- package/esm2015/public_api.js +2 -3
- package/esm2015/src/app/core/menu/menu.component.js +2 -2
- package/esm2015/src/app/social/social.module.js +7 -2
- package/esm2015/src/app/social/user-event/notification/user-event-notification.icon.js +94 -0
- package/esm2015/src/app/social/user-event/notification/user-event-notification.list.js +17 -15
- package/esm2015/src/app/social/user-event/testing/user-event.testing.service.js +6 -3
- package/esm2015/src/app/social/user-event/user-event.module.js +5 -13
- package/esm2015/src/app/social/user-event/user-event.service.js +11 -89
- package/esm2015/sumaris-net.ngx-components.js +7 -8
- package/fesm2015/sumaris-net.ngx-components.js +176 -434
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -2
- package/src/app/social/user-event/notification/{user-event-notification.component.d.ts → user-event-notification.icon.d.ts} +3 -2
- package/src/app/social/user-event/user-event.service.d.ts +5 -17
- package/sumaris-net.ngx-components.d.ts +6 -7
- package/sumaris-net.ngx-components.metadata.json +1 -1
- package/esm2015/src/app/social/user-event/notification/user-event-notification.component.js +0 -89
- package/esm2015/src/app/social/user-event/user-events.table.js +0 -131
- package/src/app/social/user-event/user-events.table.d.ts +0 -58
|
@@ -21485,7 +21485,7 @@ class MenuComponent {
|
|
|
21485
21485
|
MenuComponent.decorators = [
|
|
21486
21486
|
{ type: Component, args: [{
|
|
21487
21487
|
selector: 'app-menu',
|
|
21488
|
-
template: "<ion-split-pane #splitPane [contentId]=\"contentId\" (swiperight)=\"onSwipeRight($event)\">\n\n <ion-menu [id]=\"id\" [menuId]=\"menuId\" [contentId]=\"contentId\">\n <ion-header>\n\n <ion-toolbar @fadeInAnimation *ngIf=\"isLogin; else notLogin\" class=\"ion-toolbar-top\">\n <ion-grid>\n <ion-row>\n <ion-col size=\"4\">\n <button type=\"button\" mat-flat-button\n class=\"user-avatar\" [class.primary]=\"!accountAvatar\"\n [style.background-image]=\"'url('+(accountAvatar||'./assets/img/person.png')+')'\"\n [routerLink]=\"['/account']\"\n routerDirection=\"root\"\n routerLinkActive=\"ion-color-primary\"\n (click)=\"close()\"\n [title]=\"'MENU.BTN_MY_ACCOUNT'|translate\">\n </button>\n </ion-col>\n <ion-col size=\"8\" class=\"user-logo\">\n <img *ngIf=\"logo\" src=\"{{logo}}\" [title]=\"'APP_NAME'|translate: {appName: appName}\" width=\"108px\"/>\n <span *ngIf=\"!logo\" style=\"width: 108px;\">{{appName}}</span>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n <ion-col>\n <button mat-button type=\"button\"\n [routerLink]=\"['/account']\"\n routerDirection=\"root\"\n routerLinkActive=\"ion-color-primary\"\n (click)=\"close()\"\n [title]=\"'MENU.BTN_MY_ACCOUNT'|translate\">\n <ion-label color=\"primary\" class=\"ion-text-wrap ion-text-start\">\n <h3 class=\"no-margin username\">\n <b>{{accountName}}</b>\n </h3>\n <h4>{{accountEmail}}</h4>\n </ion-label>\n </button>\n </ion-col>\n\n <!-- Insertion
|
|
21488
|
+
template: "<ion-split-pane #splitPane [contentId]=\"contentId\" (swiperight)=\"onSwipeRight($event)\">\n\n <ion-menu [id]=\"id\" [menuId]=\"menuId\" [contentId]=\"contentId\">\n <ion-header>\n\n <ion-toolbar @fadeInAnimation *ngIf=\"isLogin; else notLogin\" class=\"ion-toolbar-top\">\n <ion-grid>\n <ion-row>\n <ion-col size=\"4\">\n <button type=\"button\" mat-flat-button\n class=\"user-avatar\" [class.primary]=\"!accountAvatar\"\n [style.background-image]=\"'url('+(accountAvatar||'./assets/img/person.png')+')'\"\n [routerLink]=\"['/account']\"\n routerDirection=\"root\"\n routerLinkActive=\"ion-color-primary\"\n (click)=\"close()\"\n [title]=\"'MENU.BTN_MY_ACCOUNT'|translate\">\n </button>\n </ion-col>\n <ion-col size=\"8\" class=\"user-logo\">\n <img *ngIf=\"logo\" src=\"{{logo}}\" [title]=\"'APP_NAME'|translate: {appName: appName}\" width=\"108px\"/>\n <span *ngIf=\"!logo\" style=\"width: 108px;\">{{appName}}</span>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n <ion-col>\n <button mat-button type=\"button\"\n [routerLink]=\"['/account']\"\n routerDirection=\"root\"\n routerLinkActive=\"ion-color-primary\"\n (click)=\"close()\"\n [title]=\"'MENU.BTN_MY_ACCOUNT'|translate\">\n <ion-label color=\"primary\" class=\"ion-text-wrap ion-text-start\">\n <h3 class=\"no-margin username\">\n <b>{{accountName}}</b>\n </h3>\n <h4>{{accountEmail}}</h4>\n </ion-label>\n </button>\n </ion-col>\n\n <!-- Insertion headerBottomRight -->\n <ion-col size=\"auto\">\n <ng-container *ngTemplateOutlet=\"headerBottomRight\"></ng-container>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-toolbar>\n\n <!-- User not logged -->\n <ng-template #notLogin>\n <mat-toolbar class=\"ion-padding\" @fadeInAnimation\n style=\"height: unset; display: block; margin: auto; text-align: center;\">\n <img *ngIf=\"logo\" src=\"{{logo}}\" [title]=\"'APP_NAME'|translate: {appName: appName}\" width=\"150px;\">\n <span *ngIf=\"!logo\" style=\"width: 150px\">{{appName}}</span>\n </mat-toolbar>\n </ng-template>\n </ion-header>\n\n <ion-content [class.has-user-header]=\"isLogin\">\n\n <ion-list lines=\"none\">\n <ion-menu-toggle auto-hide=\"false\"\n [class.flex-spacer]=\"item.cssClass == 'flex-spacer'\"\n *ngFor=\"let item of $items | async\">\n\n <!-- link -->\n <ion-item *ngIf=\"!loading && item.path\"\n @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}} text-1x\"\n tappable\n [routerLink]=\"item.path\"\n routerDirection=\"root\"\n routerLinkActive=\"selected\"\n [routerLinkActiveOptions]=\"{exact: (item.path === '/')}\">\n <ion-icon slot=\"start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item>\n\n <!-- action -->\n <ion-item *ngIf=\"!loading && item.action\"\n @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}} text-1x\"\n tappable\n (click)=\"doAction(item.action, $event)\">\n <ion-icon slot=\"start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item>\n\n <!-- divider -->\n <ion-item-divider @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}}\"\n *ngIf=\"!loading && !item.path && !item.action\">\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item-divider>\n\n </ion-menu-toggle>\n </ion-list>\n </ion-content>\n\n <ion-footer class=\"hidden-xs hidden-sm\">\n <ion-toolbar>\n\n <ion-buttons slot=\"start\">\n <ion-button mat-icon-button color=\"accent\" (click)=\"openAboutModal($event)\">\n <mat-icon slot=\"icon-only\">help_outline</mat-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title (click)=\"openAboutModal($event)\" color=\"medium\">\n {{'MENU.FOOTER_VERSION_ABOUT'| translate: {version: appVersion} }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <button mat-icon-button color=\"accent\" (click)=\"toggleSplitPaneShow($event)\"\n class=\"hidden-xs hidden-sm hidden-md\"\n [title]=\"(splitPane.when ? 'COMMON.BTN_HIDE_MENU' : 'COMMON.BTN_SHOW_MENU') |translate\">\n <mat-icon><span>{{splitPane.when ? '«' : '»'}}</span></mat-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n </ion-footer>\n\n </ion-menu>\n\n <ng-content></ng-content>\n\n</ion-split-pane>\n\n<ng-template #headerBottomRight>\n <ng-content select=\"[headerBottomRight]\"></ng-content>\n</ng-template>\n",
|
|
21489
21489
|
animations: [fadeInAnimation],
|
|
21490
21490
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
21491
21491
|
styles: ["ion-menu{--ion-item-background:transparent;--ion-item-divider-background:transparent;--ion-item-icon-color:var(--ion-color-primary-tint);--ion-item-text-color:var(--ion-color-primary-tint);--ion-item-background-selected:var(--ion-color-secondary100);--ion-item-text-color-selected:var(--ion-color-primary);--ion-item-icon-color-selected:var(--ion-color-primary);--ion-item-text-color-disable:var(--ion-color-medium);--ion-item-icon-color-disable:var(--ion-color-medium)}ion-menu ion-header ion-text{color:var(--ion-color-primary)}ion-menu ion-header .user-avatar{background-size:cover;background-repeat:no-repeat;background-position:50%;background-color:var(--ion-color-secondary);border:1px solid var(--ion-color-primary);overflow:hidden!important;font-size:var(--avatar-size,60px)!important;line-height:var(--avatar-size,60px);height:var(--avatar-size,60px)!important;width:var(--avatar-size,60px)!important;border-radius:50%;display:inline-block}ion-menu ion-header .user-avatar:hover{background-color:var(--ion-color-secondary-shade);border:2px solid var(--ion-color-primary-shade)}ion-menu ion-header .user-logo{text-align:right}ion-menu ion-header .user-logo img{max-width:120px;max-height:var(--avatar-size,60px);width:auto}ion-menu ion-header .username{padding-top:0;margin-top:0;margin-bottom:0;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}ion-menu ion-header button[mat-button]{padding:0;text-align:start!important;width:100%}ion-menu .scroll-content{margin-top:79px!important}ion-menu .has-user-header .scroll-content{margin-top:188px!important}ion-menu ion-content.has-profile-header{--offset-top:188px}ion-menu ion-content.no-profile-header{--offset-top:79px}ion-menu ion-content ion-list{min-height:100%;display:flex;flex-direction:column;justify-content:flex-start}ion-menu ion-content ion-list ion-menu-toggle.flex-spacer{flex:1 1 auto;display:flex;flex-direction:column;justify-content:flex-end}ion-menu ion-content ion-list ion-item.primary{--ion-item-icon-color:var(--ion-color-primary-tint);--ion-item-text-color:var(--ion-color-primary-tint)}ion-menu ion-content ion-list ion-item.secondary{--ion-item-icon-color:var(--ion-color-secondary-tint);--ion-item-text-color:var(--ion-color-secondary-tint)}ion-menu ion-content ion-list ion-item.tertiary{--ion-item-icon-color:var(--ion-color-tertiary-tint);--ion-item-text-color:var(--ion-color-tertiary-tint)}ion-menu ion-content ion-list ion-item.danger{--ion-item-icon-color:var(--ion-color-danger-tint);--ion-item-text-color:var(--ion-color-danger-tint)}ion-menu ion-content ion-list ion-item.medium{--ion-item-icon-color:var(--ion-color-medium-shade);--ion-item-text-color:var(--ion-color-medium-shade)}ion-menu ion-content ion-list ion-item.dark{--ion-item-icon-color:var(--ion-color-dark-tint);--ion-item-text-color:var(--ion-color-dark-tint)}ion-menu ion-content ion-list ion-item ion-icon,ion-menu ion-content ion-list ion-item mat-icon{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-menu ion-content ion-list ion-item ion-label,ion-menu ion-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-menu ion-content ion-list ion-item.selected{background-color:var(--ion-item-background-selected)!important;--color-hover:var(--ion-item-background-selected)!important}ion-menu ion-content ion-list ion-item.selected ion-icon,ion-menu ion-content ion-list ion-item.selected mat-icon{color:var(--ion-item-icon-color-selected)!important;fill:currentColor;stroke:currentColor}ion-menu ion-content ion-list ion-item.selected ion-label,ion-menu ion-content ion-list ion-item.selected ion-text{color:var(--ion-item-text-color-selected)!important}ion-menu ion-content ion-list ion-item.selected:hover{--color-hover:var(--ion-item-background-selected)!important;--ion-item-icon-color-selected:var(--ion-item-icon-color)!important;--ion-item-text-color-selected:var(--ion-item-text-color)!important}ion-menu ion-footer{display:block!important}ion-menu ion-footer ion-toolbar ion-title{cursor:pointer;font-size:12pt;font-weight:400;text-align:center;padding:0 8px}ion-menu ion-footer ion-toolbar ion-button{--width:40px}@media screen and (max-width:767px){ion-menu ion-footer{display:none!important;visibility:hidden!important}}@media screen and (min-width:768px){ion-menu ion-scroll{overflow-y:auto!important}ion-menu .user-avatar{font-size:var(--avatar-size,80px)!important;line-height:var(--avatar-size,80px);height:var(--avatar-size,80px)!important;width:var(--avatar-size,80px)!important}ion-menu .user-logo img{max-height:var(--avatar-size,80px)}}"]
|
|
@@ -25958,130 +25958,6 @@ const SocialErrorCodes = {
|
|
|
25958
25958
|
SUBSCRIBE_JOB_PROGRESSION_ERROR: 50010
|
|
25959
25959
|
};
|
|
25960
25960
|
|
|
25961
|
-
var UserEvent_1;
|
|
25962
|
-
const UserEventTypes = {
|
|
25963
|
-
DEBUG_DATA: 'DEBUG_DATA',
|
|
25964
|
-
INBOX_MESSAGE: 'INBOX_MESSAGE'
|
|
25965
|
-
};
|
|
25966
|
-
// @dynamic
|
|
25967
|
-
let UserEvent = UserEvent_1 = class UserEvent extends Entity {
|
|
25968
|
-
constructor() {
|
|
25969
|
-
super(UserEvent_1.TYPENAME);
|
|
25970
|
-
}
|
|
25971
|
-
asObject(opts) {
|
|
25972
|
-
const target = super.asObject(opts);
|
|
25973
|
-
target.creationDate = toDateISOString(this.creationDate);
|
|
25974
|
-
target.readDate = toDateISOString(this.readDate);
|
|
25975
|
-
// Serialize content
|
|
25976
|
-
if (typeof target.content === 'object') {
|
|
25977
|
-
target.content = JSON.stringify(target.content);
|
|
25978
|
-
}
|
|
25979
|
-
delete target.avatar;
|
|
25980
|
-
delete target.avatarIcon;
|
|
25981
|
-
delete target.icon;
|
|
25982
|
-
delete target.actions;
|
|
25983
|
-
return target;
|
|
25984
|
-
}
|
|
25985
|
-
fromObject(source) {
|
|
25986
|
-
Object.assign(this, source); // Copy all properties
|
|
25987
|
-
super.fromObject(source);
|
|
25988
|
-
this.creationDate = fromDateISOString(source.creationDate);
|
|
25989
|
-
this.readDate = fromDateISOString(source.readDate);
|
|
25990
|
-
try {
|
|
25991
|
-
// Deserialize content
|
|
25992
|
-
if (typeof source.content === 'string' && source.content.startsWith('{')) {
|
|
25993
|
-
this.content = JSON.parse(source.content);
|
|
25994
|
-
}
|
|
25995
|
-
// Deserialize content.context
|
|
25996
|
-
if (this.content && typeof this.content.context === 'string' && this.content.context.startsWith('{')) {
|
|
25997
|
-
this.content.context = JSON.parse(this.content.context);
|
|
25998
|
-
}
|
|
25999
|
-
}
|
|
26000
|
-
catch (err) {
|
|
26001
|
-
console.error('Error during UserEvent deserialization', err);
|
|
26002
|
-
}
|
|
26003
|
-
}
|
|
26004
|
-
};
|
|
26005
|
-
UserEvent = UserEvent_1 = __decorate([
|
|
26006
|
-
EntityClass({ typename: 'UserEventVO' })
|
|
26007
|
-
], UserEvent);
|
|
26008
|
-
// @dynamic
|
|
26009
|
-
let UserEventFilter = class UserEventFilter extends EntityFilter {
|
|
26010
|
-
constructor() {
|
|
26011
|
-
super(...arguments);
|
|
26012
|
-
this.types = [];
|
|
26013
|
-
this.levels = [];
|
|
26014
|
-
this.issuers = [];
|
|
26015
|
-
this.recipients = [];
|
|
26016
|
-
this.startDate = null;
|
|
26017
|
-
this.excludeRead = false;
|
|
26018
|
-
}
|
|
26019
|
-
fromObject(source, opts) {
|
|
26020
|
-
super.fromObject(source, opts);
|
|
26021
|
-
this.types = source.types || [];
|
|
26022
|
-
this.levels = source.levels || [];
|
|
26023
|
-
this.issuers = source.issuers || [];
|
|
26024
|
-
this.recipients = source.recipients || [];
|
|
26025
|
-
this.startDate = fromDateISOString(source.startDate);
|
|
26026
|
-
this.excludeRead = source.excludeRead || false;
|
|
26027
|
-
}
|
|
26028
|
-
buildFilter() {
|
|
26029
|
-
const filterFns = super.buildFilter();
|
|
26030
|
-
if (isNotEmptyArray(this.types)) {
|
|
26031
|
-
filterFns.push(t => this.types.includes(t.type));
|
|
26032
|
-
}
|
|
26033
|
-
if (isNotEmptyArray(this.levels)) {
|
|
26034
|
-
filterFns.push(t => this.levels.includes(t.level));
|
|
26035
|
-
}
|
|
26036
|
-
if (isNotEmptyArray(this.issuers)) {
|
|
26037
|
-
filterFns.push(t => this.issuers.includes(t.issuer));
|
|
26038
|
-
}
|
|
26039
|
-
if (isNotEmptyArray(this.recipients)) {
|
|
26040
|
-
filterFns.push(t => this.recipients.includes(t.recipient));
|
|
26041
|
-
}
|
|
26042
|
-
if (isNotNil(this.startDate)) {
|
|
26043
|
-
filterFns.push(t => this.startDate.isSameOrBefore(t.creationDate));
|
|
26044
|
-
}
|
|
26045
|
-
if (this.excludeRead === true) {
|
|
26046
|
-
filterFns.push(t => isNil(t.readSignature)); // todo or t.signature ?
|
|
26047
|
-
}
|
|
26048
|
-
return filterFns;
|
|
26049
|
-
}
|
|
26050
|
-
asObject(opts) {
|
|
26051
|
-
const target = super.asObject(opts);
|
|
26052
|
-
return target;
|
|
26053
|
-
}
|
|
26054
|
-
};
|
|
26055
|
-
UserEventFilter = __decorate([
|
|
26056
|
-
EntityClass({ typename: 'UserEventFilterVO' })
|
|
26057
|
-
], UserEventFilter);
|
|
26058
|
-
|
|
26059
|
-
const UserEventFragments = {
|
|
26060
|
-
userEvent: gql `fragment UserEventFragment on UserEventVO {
|
|
26061
|
-
id
|
|
26062
|
-
issuer
|
|
26063
|
-
updateDate
|
|
26064
|
-
creationDate
|
|
26065
|
-
eventType
|
|
26066
|
-
recipient
|
|
26067
|
-
content
|
|
26068
|
-
hash
|
|
26069
|
-
signature
|
|
26070
|
-
readSignature
|
|
26071
|
-
__typename
|
|
26072
|
-
}`,
|
|
26073
|
-
lightUserEvent: gql `fragment LightUserEventFragment on UserEventVO {
|
|
26074
|
-
id
|
|
26075
|
-
issuer
|
|
26076
|
-
recipient
|
|
26077
|
-
updateDate
|
|
26078
|
-
creationDate
|
|
26079
|
-
eventType
|
|
26080
|
-
readSignature
|
|
26081
|
-
__typename
|
|
26082
|
-
}`
|
|
26083
|
-
};
|
|
26084
|
-
|
|
26085
25961
|
const moment$6 = momentImported;
|
|
26086
25962
|
const USER_EVENT_SERVICE = new InjectionToken('UserEventService');
|
|
26087
25963
|
class AbstractUserEventService extends BaseGraphqlService {
|
|
@@ -26092,7 +25968,7 @@ class AbstractUserEventService extends BaseGraphqlService {
|
|
|
26092
25968
|
this.network = network;
|
|
26093
25969
|
this.translate = translate;
|
|
26094
25970
|
this.options = options;
|
|
26095
|
-
this.
|
|
25971
|
+
this._countSubject = new BehaviorSubject(0);
|
|
26096
25972
|
this.listeners = [];
|
|
26097
25973
|
this._subscriptions = new Subscription();
|
|
26098
25974
|
this.queries = options.queries;
|
|
@@ -26100,13 +25976,14 @@ class AbstractUserEventService extends BaseGraphqlService {
|
|
|
26100
25976
|
this.subscriptions = options.subscriptions || {};
|
|
26101
25977
|
this._logPrefix = '[user-event-service] ';
|
|
26102
25978
|
}
|
|
26103
|
-
get
|
|
26104
|
-
return this.
|
|
25979
|
+
get countSubject() {
|
|
25980
|
+
return this._countSubject;
|
|
26105
25981
|
}
|
|
26106
25982
|
ngOnStart() {
|
|
26107
25983
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26108
25984
|
// Update component when refresh is need (=login events)
|
|
26109
|
-
this._subscriptions.add(merge(this.accountService.onLogin, this.accountService.onLogout)
|
|
25985
|
+
this._subscriptions.add(merge(this.accountService.onLogin, this.accountService.onLogout, of() // Starts with - first attempt if account is ready
|
|
25986
|
+
)
|
|
26110
25987
|
.pipe(
|
|
26111
25988
|
// Wait account service ready (can be restarted)
|
|
26112
25989
|
mergeMap(() => this.accountService.ready()), map(() => this.accountService.isLogin()), distinctUntilChanged())
|
|
@@ -26118,11 +25995,6 @@ class AbstractUserEventService extends BaseGraphqlService {
|
|
|
26118
25995
|
this.onLogout();
|
|
26119
25996
|
}
|
|
26120
25997
|
}));
|
|
26121
|
-
// First attempt if account is ready
|
|
26122
|
-
yield this.accountService.ready();
|
|
26123
|
-
if (this.accountService.isLogin()) {
|
|
26124
|
-
setTimeout(() => this.onLogin());
|
|
26125
|
-
}
|
|
26126
25998
|
});
|
|
26127
25999
|
}
|
|
26128
26000
|
ngOnDestroy() {
|
|
@@ -26185,7 +26057,7 @@ class AbstractUserEventService extends BaseGraphqlService {
|
|
|
26185
26057
|
data: entity
|
|
26186
26058
|
});
|
|
26187
26059
|
// Update count
|
|
26188
|
-
this.
|
|
26060
|
+
this._countSubject.next(this._countSubject.value + 1);
|
|
26189
26061
|
}
|
|
26190
26062
|
count(filter, options) {
|
|
26191
26063
|
var _a;
|
|
@@ -26237,7 +26109,7 @@ class AbstractUserEventService extends BaseGraphqlService {
|
|
|
26237
26109
|
if (total && this._debug)
|
|
26238
26110
|
console.debug(`${this._logPrefix}Received new user events count:`, total);
|
|
26239
26111
|
// update count
|
|
26240
|
-
this.
|
|
26112
|
+
this._countSubject.next(total);
|
|
26241
26113
|
return total;
|
|
26242
26114
|
}));
|
|
26243
26115
|
}
|
|
@@ -26383,7 +26255,7 @@ class AbstractUserEventService extends BaseGraphqlService {
|
|
|
26383
26255
|
this.listeners.push(listener);
|
|
26384
26256
|
}
|
|
26385
26257
|
resetCount() {
|
|
26386
|
-
this.
|
|
26258
|
+
this._countSubject.next(undefined);
|
|
26387
26259
|
this.resetCountDate = moment$6();
|
|
26388
26260
|
// restart listening count changes
|
|
26389
26261
|
this.startListenCountChanges();
|
|
@@ -26396,7 +26268,7 @@ class AbstractUserEventService extends BaseGraphqlService {
|
|
|
26396
26268
|
if (this._debug)
|
|
26397
26269
|
console.debug(`${this._logPrefix}Receiving user events count`, count);
|
|
26398
26270
|
// Update count
|
|
26399
|
-
this.
|
|
26271
|
+
this._countSubject.next(count);
|
|
26400
26272
|
// Then listen changes
|
|
26401
26273
|
this.startListenCountChanges();
|
|
26402
26274
|
});
|
|
@@ -26507,197 +26379,6 @@ AbstractUserEventService.ctorParameters = () => [
|
|
|
26507
26379
|
{ type: TranslateService },
|
|
26508
26380
|
{ type: undefined }
|
|
26509
26381
|
];
|
|
26510
|
-
const userEventQueries = {
|
|
26511
|
-
loadAll: gql `
|
|
26512
|
-
query UserEvents($filter: UserEventFilterVOInput, $page: PageInput){
|
|
26513
|
-
data: userEvents(filter: $filter, page: $page){
|
|
26514
|
-
...LightUserEventFragment
|
|
26515
|
-
}
|
|
26516
|
-
}
|
|
26517
|
-
${UserEventFragments.lightUserEvent}
|
|
26518
|
-
`,
|
|
26519
|
-
loadAllWithContent: gql `
|
|
26520
|
-
query UserEventsWithContent($filter: UserEventFilterVOInput, $page: PageInput){
|
|
26521
|
-
data: userEvents(filter: $filter, page: $page){
|
|
26522
|
-
...UserEventFragment
|
|
26523
|
-
}
|
|
26524
|
-
}
|
|
26525
|
-
${UserEventFragments.userEvent}
|
|
26526
|
-
`
|
|
26527
|
-
};
|
|
26528
|
-
const userEventMutations = {
|
|
26529
|
-
deleteByIds: gql `
|
|
26530
|
-
mutation DeleteUserEvents($ids:[Int]){
|
|
26531
|
-
deleteUserEvents(ids: $ids)
|
|
26532
|
-
}
|
|
26533
|
-
`,
|
|
26534
|
-
save: gql `
|
|
26535
|
-
mutation SaveUserEvent($data: UserEventVOInput){
|
|
26536
|
-
data: saveUserEvent(userEvent: $data){
|
|
26537
|
-
...UserEventFragment
|
|
26538
|
-
}
|
|
26539
|
-
}
|
|
26540
|
-
${UserEventFragments.userEvent}
|
|
26541
|
-
`
|
|
26542
|
-
};
|
|
26543
|
-
class UserEventService extends AbstractUserEventService {
|
|
26544
|
-
constructor(graphql, accountService, network, translate, environment) {
|
|
26545
|
-
super(graphql, accountService, network, translate, {
|
|
26546
|
-
queries: userEventQueries,
|
|
26547
|
-
mutations: userEventMutations,
|
|
26548
|
-
production: environment === null || environment === void 0 ? void 0 : environment.production
|
|
26549
|
-
});
|
|
26550
|
-
this.graphql = graphql;
|
|
26551
|
-
this.accountService = accountService;
|
|
26552
|
-
this.network = network;
|
|
26553
|
-
this.translate = translate;
|
|
26554
|
-
this.environment = environment;
|
|
26555
|
-
}
|
|
26556
|
-
asFilter(filter) {
|
|
26557
|
-
return UserEventFilter.fromObject(filter);
|
|
26558
|
-
}
|
|
26559
|
-
fromObject(source) {
|
|
26560
|
-
return UserEvent.fromObject(source);
|
|
26561
|
-
}
|
|
26562
|
-
/* -- protected methods -- */
|
|
26563
|
-
fillDefaultProperties(entity) {
|
|
26564
|
-
entity.issuer = this.accountService.account.pubkey;
|
|
26565
|
-
// TODO: compute hash (using cryptoService)
|
|
26566
|
-
// TODO: compute sign
|
|
26567
|
-
console.warn('TODO: sign user event before sending');
|
|
26568
|
-
}
|
|
26569
|
-
}
|
|
26570
|
-
UserEventService.decorators = [
|
|
26571
|
-
{ type: Injectable }
|
|
26572
|
-
];
|
|
26573
|
-
UserEventService.ctorParameters = () => [
|
|
26574
|
-
{ type: GraphqlService },
|
|
26575
|
-
{ type: AccountService },
|
|
26576
|
-
{ type: NetworkService },
|
|
26577
|
-
{ type: TranslateService },
|
|
26578
|
-
{ type: Environment, decorators: [{ type: Optional }, { type: Inject, args: [ENVIRONMENT,] }] }
|
|
26579
|
-
];
|
|
26580
|
-
|
|
26581
|
-
const ICONS_MAP = {
|
|
26582
|
-
DEBUG_DATA: { matIcon: 'bug_report' },
|
|
26583
|
-
INBOX_MESSAGE: { matIcon: 'mail' }
|
|
26584
|
-
};
|
|
26585
|
-
class UserEventsTable extends AppTable {
|
|
26586
|
-
constructor(injector, accountService, service, entities, cd, environment) {
|
|
26587
|
-
super(injector,
|
|
26588
|
-
// columns
|
|
26589
|
-
RESERVED_START_COLUMNS
|
|
26590
|
-
.concat([
|
|
26591
|
-
'creationDate',
|
|
26592
|
-
'icon',
|
|
26593
|
-
'eventType',
|
|
26594
|
-
'message'
|
|
26595
|
-
])
|
|
26596
|
-
.concat(RESERVED_END_COLUMNS), null, null);
|
|
26597
|
-
this.accountService = accountService;
|
|
26598
|
-
this.service = service;
|
|
26599
|
-
this.entities = entities;
|
|
26600
|
-
this.cd = cd;
|
|
26601
|
-
this.environment = environment;
|
|
26602
|
-
this.i18nColumnPrefix = 'SOCIAL.USER_EVENT.';
|
|
26603
|
-
this.autoLoad = false; // this.start()
|
|
26604
|
-
this.inlineEdition = false;
|
|
26605
|
-
this.defaultSortBy = 'creationDate';
|
|
26606
|
-
this.defaultSortDirection = 'desc';
|
|
26607
|
-
}
|
|
26608
|
-
ngOnInit() {
|
|
26609
|
-
super.ngOnInit();
|
|
26610
|
-
// Load date/time pattern
|
|
26611
|
-
this.dateTimePattern = this.translate.instant('COMMON.DATE_TIME_PATTERN');
|
|
26612
|
-
this.withContent = toBoolean(this.withContent, false);
|
|
26613
|
-
const account = this.accountService.account;
|
|
26614
|
-
const pubkey = account && account.pubkey;
|
|
26615
|
-
this.isAdmin = this.accountService.isAdmin();
|
|
26616
|
-
this.canEdit = this.isAdmin || pubkey === this.recipient;
|
|
26617
|
-
this.canDelete = this.canEdit;
|
|
26618
|
-
this.setDatasource(new EntitiesTableDataSource(UserEvent, this.service, null, {
|
|
26619
|
-
prependNewElements: false,
|
|
26620
|
-
suppressErrors: true,
|
|
26621
|
-
dataServiceOptions: {
|
|
26622
|
-
withContent: this.withContent
|
|
26623
|
-
}
|
|
26624
|
-
}));
|
|
26625
|
-
const filter = this.filter || new UserEventFilter();
|
|
26626
|
-
filter.recipients = [this.recipient];
|
|
26627
|
-
this.setFilter(filter, { emitEvent: true });
|
|
26628
|
-
}
|
|
26629
|
-
start() {
|
|
26630
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
26631
|
-
console.debug('[user-event] Starting...');
|
|
26632
|
-
// Waiting account to be ready
|
|
26633
|
-
yield this.accountService.ready();
|
|
26634
|
-
// Load data
|
|
26635
|
-
this.onRefresh.emit();
|
|
26636
|
-
});
|
|
26637
|
-
}
|
|
26638
|
-
getIcon(source) {
|
|
26639
|
-
return ICONS_MAP[source.type];
|
|
26640
|
-
}
|
|
26641
|
-
getDetail(source) {
|
|
26642
|
-
if (!source)
|
|
26643
|
-
return undefined;
|
|
26644
|
-
if (source.content && source.type === UserEventTypes.DEBUG_DATA) {
|
|
26645
|
-
const context = source.content.context;
|
|
26646
|
-
if (context && context.__typename) {
|
|
26647
|
-
// const actions = this.service.getActionsByTypename(context.__typename);
|
|
26648
|
-
return {
|
|
26649
|
-
// actions,
|
|
26650
|
-
title: source.content.error && source.content.error.message || source.content.message,
|
|
26651
|
-
description: source.content.error && source.content.error.details || undefined
|
|
26652
|
-
};
|
|
26653
|
-
}
|
|
26654
|
-
}
|
|
26655
|
-
console.debug('TODO: implement getDetail() for event: ', source);
|
|
26656
|
-
return {};
|
|
26657
|
-
}
|
|
26658
|
-
doAction(action, row) {
|
|
26659
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
26660
|
-
const event = row.currentData;
|
|
26661
|
-
// const context = event.content && event.content.context;
|
|
26662
|
-
this.markAsLoading();
|
|
26663
|
-
if (action && typeof action.executeAction === 'function') {
|
|
26664
|
-
try {
|
|
26665
|
-
let res = action.executeAction(event /*, context*/);
|
|
26666
|
-
res = (res instanceof Promise) ? yield res : res;
|
|
26667
|
-
}
|
|
26668
|
-
catch (err) {
|
|
26669
|
-
this.setError(err && err.message || err);
|
|
26670
|
-
console.error(`[user-event] Failed to execute action ${action.name}: ${err && err.message || err}`, err);
|
|
26671
|
-
}
|
|
26672
|
-
finally {
|
|
26673
|
-
this.markAsLoaded();
|
|
26674
|
-
}
|
|
26675
|
-
}
|
|
26676
|
-
});
|
|
26677
|
-
}
|
|
26678
|
-
}
|
|
26679
|
-
UserEventsTable.decorators = [
|
|
26680
|
-
{ type: Component, args: [{
|
|
26681
|
-
selector: 'app-user-events-table',
|
|
26682
|
-
template: "\n<!-- Type = options menu -->\n<mat-menu #optionsMenu=\"matMenu\" xPosition=\"after\">\n\n <!-- display columns -->\n <button mat-menu-item\n (click)=\"openSelectColumnsModal($event)\">\n <mat-icon>view_column</mat-icon>\n <ion-label translate>COMMON.DISPLAYED_COLUMNS_DOTS</ion-label>\n </button>\n\n</mat-menu>\n\n<!-- top header -->\n<mat-toolbar>\n\n <ng-container *ngIf=\"!selection.hasValue(); else hasSelection\">\n\n <button mat-icon-button [title]=\"'COMMON.BTN_REFRESH'|translate\" (click)=\"onRefresh.emit()\">\n <mat-icon>refresh</mat-icon>\n </button>\n\n </ng-container>\n\n <!-- if row selection -->\n <ng-template #hasSelection>\n\n <!-- delete -->\n <button mat-icon-button class=\"hidden-xs hidden-sm\" *ngIf=\"canDelete\"\n [title]=\"'COMMON.BTN_DELETE'|translate\" (click)=\"deleteSelection($event)\">\n <mat-icon>delete</mat-icon>\n </button>\n </ng-template>\n\n <!-- error -->\n <ion-item *ngIf=\"error\" hidden-xs hidden-sm hidden-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <div class=\"toolbar-spacer\"></div>\n\n <button mat-icon-button\n [title]=\"'COMMON.BTN_OPTIONS'|translate\"\n [matMenuTriggerFor]=\"optionsMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n</mat-toolbar>\n\n\n<mat-table [dataSource]=\"dataSource\" matSort\n [matSortActive]=\"defaultSortBy\"\n [matSortDirection]=\"defaultSortDirection\"\n matSortDisableClear [trackBy]=\"trackByFn\">\n\n <!-- select -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <!-- id -->\n <ng-container matColumnDef=\"id\">\n <mat-header-cell *matHeaderCellDef mat-sort-header [class.cdk-visually-hidden]=\"!isAdmin\">\n <app-loading-spinner [loading]=\"loadingSubject|async\"><ion-label>#</ion-label></app-loading-spinner>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!isAdmin\">{{ row.currentData.id | mathAbs }}</mat-cell>\n </ng-container>\n\n <!-- creationDate -->\n <ng-container matColumnDef=\"creationDate\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>SOCIAL.USER_EVENT.CREATION_DATE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\">\n <ion-text>\n {{row.currentData.creationDate | dateFromNow }}<br/>\n <ion-text color=\"medium\"><small>{{row.currentData.creationDate | dateFormat: {time: true} }}</small></ion-text>\n </ion-text>\n </mat-cell>\n </ng-container>\n\n <!-- icon -->\n <ng-container matColumnDef=\"icon\">\n <mat-header-cell *matHeaderCellDef>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"getIcon(row.currentData); let details\">\n <ion-icon slot=\"start\" *ngIf=\"details.icon\" [name]=\"details.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"details.matIcon\">{{details.matIcon}}</mat-icon>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <!-- event type -->\n <ng-container matColumnDef=\"eventType\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>SOCIAL.USER_EVENT.EVENT_TYPE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <span>{{'SOCIAL.USER_EVENT.TYPE_ENUM.' + row.currentData.eventType | translate}}</span>\n </mat-cell>\n </ng-container>\n\n <!-- message -->\n <ng-container matColumnDef=\"message\">\n <mat-header-cell *matHeaderCellDef>\n <ion-label translate>SOCIAL.USER_EVENT.MESSAGE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"getDetail(row.currentData); let details\">\n <ion-text [innerHTML]=\"details.title|translate\">\n </ion-text>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <!-- Actions buttons column -->\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\">\n <ng-container *ngIf=\"getDetail(row.currentData); let details\">\n <button mat-icon-button color=\"light\"\n *ngFor=\"let action of details.actions\"\n [title]=\"action.title |translate\"\n [color]=\"action.color\"\n (click)=\"doAction(action, row)\">\n <app-icon slot=\"start\" *ngIf=\"action.iconRef\" [ref]=\"action.iconRef\"></app-icon>\n </button>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"mat-row-disabled\"\n (click)=\"clickRow($event, row)\"></mat-row>\n\n</mat-table>\n\n<ion-row class=\"ion-no-padding\">\n <ion-col></ion-col>\n <ion-col class=\"ion-no-padding\" size=\"auto\">\n <mat-paginator [length]=\"totalRowCount\" [pageSize]=\"defaultPageSize\" [pageSizeOptions]=\"defaultPageSizeOptions\" showFirstLastButtons>\n </mat-paginator>\n </ion-col>\n</ion-row>\n",
|
|
26683
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
26684
|
-
styles: [".mat-header-row .mat-column-icon,.mat-row .mat-column-icon{max-width:40px;padding-left:0}.mat-header-row .mat-column-icon ion-icon,.mat-header-row .mat-column-icon mat-icon,.mat-row .mat-column-icon ion-icon,.mat-row .mat-column-icon mat-icon{font-size:1.2em;height:1.2em;width:1.2em}.mat-header-row .mat-column-creationDate,.mat-row .mat-column-creationDate{min-width:100px;max-width:120px}"]
|
|
26685
|
-
},] }
|
|
26686
|
-
];
|
|
26687
|
-
UserEventsTable.ctorParameters = () => [
|
|
26688
|
-
{ type: Injector },
|
|
26689
|
-
{ type: AccountService },
|
|
26690
|
-
{ type: undefined, decorators: [{ type: Inject, args: [USER_EVENT_SERVICE,] }] },
|
|
26691
|
-
{ type: EntitiesStorage },
|
|
26692
|
-
{ type: ChangeDetectorRef },
|
|
26693
|
-
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] }
|
|
26694
|
-
];
|
|
26695
|
-
UserEventsTable.propDecorators = {
|
|
26696
|
-
recipient: [{ type: Input }],
|
|
26697
|
-
withContent: [{ type: Input }],
|
|
26698
|
-
defaultSortBy: [{ type: Input }],
|
|
26699
|
-
defaultSortDirection: [{ type: Input }]
|
|
26700
|
-
};
|
|
26701
26382
|
|
|
26702
26383
|
class UserEventNotificationList {
|
|
26703
26384
|
constructor(cd, popoverController, userEventService) {
|
|
@@ -26710,20 +26391,22 @@ class UserEventNotificationList {
|
|
|
26710
26391
|
}
|
|
26711
26392
|
ngOnInit() {
|
|
26712
26393
|
// Watch all user events
|
|
26713
|
-
|
|
26714
|
-
.
|
|
26715
|
-
|
|
26716
|
-
|
|
26717
|
-
|
|
26718
|
-
|
|
26719
|
-
|
|
26720
|
-
|
|
26721
|
-
|
|
26722
|
-
|
|
26723
|
-
.
|
|
26724
|
-
|
|
26725
|
-
|
|
26726
|
-
|
|
26394
|
+
if (this.userEventService) {
|
|
26395
|
+
this.subscriptions.add(this.userEventService
|
|
26396
|
+
.watchAll(0, 10, 'creationDate', 'desc', undefined)
|
|
26397
|
+
.subscribe(result => {
|
|
26398
|
+
if (this.debug)
|
|
26399
|
+
console.debug(`[user-event-notification-list] receiving ${result.total} user events`, result.data);
|
|
26400
|
+
this.userEvents.next(result.data);
|
|
26401
|
+
this.markForCheck();
|
|
26402
|
+
}));
|
|
26403
|
+
// Listen changes
|
|
26404
|
+
this.subscriptions.add(this.userEventService.listenChanges(undefined)
|
|
26405
|
+
.subscribe(data => {
|
|
26406
|
+
if (this.debug)
|
|
26407
|
+
console.debug(`[user-event-notification-list] receiving ${data.length} new user events`, data);
|
|
26408
|
+
}));
|
|
26409
|
+
}
|
|
26727
26410
|
}
|
|
26728
26411
|
ngOnDestroy() {
|
|
26729
26412
|
this.subscriptions.unsubscribe();
|
|
@@ -26773,7 +26456,7 @@ UserEventNotificationList.propDecorators = {
|
|
|
26773
26456
|
readEvents: [{ type: Output }]
|
|
26774
26457
|
};
|
|
26775
26458
|
|
|
26776
|
-
class
|
|
26459
|
+
class AppUserEventNotificationIcon {
|
|
26777
26460
|
constructor(userEventService, accountService, popoverController) {
|
|
26778
26461
|
this.userEventService = userEventService;
|
|
26779
26462
|
this.accountService = accountService;
|
|
@@ -26781,13 +26464,17 @@ class UserEventNotificationComponent {
|
|
|
26781
26464
|
this.debug = false;
|
|
26782
26465
|
this.titleI18n = 'SOCIAL.USER_EVENT.NOTIFICATION.TITLE';
|
|
26783
26466
|
this.disabled = false;
|
|
26467
|
+
this.filter = null;
|
|
26784
26468
|
this._logPrefix = '[user-event-notification] ';
|
|
26785
26469
|
this._readEvent = new EventEmitter();
|
|
26786
26470
|
this._readEvents = new EventEmitter();
|
|
26787
26471
|
}
|
|
26788
|
-
get
|
|
26789
|
-
|
|
26790
|
-
|
|
26472
|
+
get countChanges() {
|
|
26473
|
+
if (!this.userEventService)
|
|
26474
|
+
return of();
|
|
26475
|
+
return this.userEventService
|
|
26476
|
+
.countSubject
|
|
26477
|
+
.pipe(map(value => value === 0 ? undefined : value));
|
|
26791
26478
|
}
|
|
26792
26479
|
ngOnInit() {
|
|
26793
26480
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -26835,94 +26522,25 @@ class UserEventNotificationComponent {
|
|
|
26835
26522
|
}
|
|
26836
26523
|
}
|
|
26837
26524
|
}
|
|
26838
|
-
|
|
26525
|
+
AppUserEventNotificationIcon.decorators = [
|
|
26839
26526
|
{ type: Component, args: [{
|
|
26840
|
-
selector: 'app-user-event-notification-
|
|
26841
|
-
template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"
|
|
26842
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
26843
|
-
styles: [""]
|
|
26527
|
+
selector: 'app-user-event-notification-icon',
|
|
26528
|
+
template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"countChanges | async\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >notifications\n </mat-icon>\n</button>\n\n",
|
|
26529
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
26844
26530
|
},] }
|
|
26845
26531
|
];
|
|
26846
|
-
|
|
26532
|
+
AppUserEventNotificationIcon.ctorParameters = () => [
|
|
26847
26533
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [USER_EVENT_SERVICE,] }] },
|
|
26848
26534
|
{ type: AccountService },
|
|
26849
26535
|
{ type: PopoverController }
|
|
26850
26536
|
];
|
|
26851
|
-
|
|
26537
|
+
AppUserEventNotificationIcon.propDecorators = {
|
|
26852
26538
|
debug: [{ type: Input }],
|
|
26853
26539
|
titleI18n: [{ type: Input }],
|
|
26854
|
-
disabled: [{ type: Input }]
|
|
26540
|
+
disabled: [{ type: Input }],
|
|
26541
|
+
filter: [{ type: Input }]
|
|
26855
26542
|
};
|
|
26856
26543
|
|
|
26857
|
-
class UserEventTestService extends AbstractUserEventService {
|
|
26858
|
-
constructor(graphql, accountService, network, translate, environment) {
|
|
26859
|
-
super(graphql, accountService, network, translate, {
|
|
26860
|
-
queries: {
|
|
26861
|
-
loadAll: null,
|
|
26862
|
-
loadAllWithContent: null
|
|
26863
|
-
},
|
|
26864
|
-
production: environment === null || environment === void 0 ? void 0 : environment.production
|
|
26865
|
-
});
|
|
26866
|
-
this.graphql = graphql;
|
|
26867
|
-
this.accountService = accountService;
|
|
26868
|
-
this.network = network;
|
|
26869
|
-
this.translate = translate;
|
|
26870
|
-
this.environment = environment;
|
|
26871
|
-
this.userEvents = [];
|
|
26872
|
-
}
|
|
26873
|
-
fromObject(source) {
|
|
26874
|
-
return UserEvent.fromObject(source);
|
|
26875
|
-
}
|
|
26876
|
-
add(entity) {
|
|
26877
|
-
entity = this.processUserEvent(entity);
|
|
26878
|
-
entity.id = this.userEvents.length + 1;
|
|
26879
|
-
this.userEvents.push(entity);
|
|
26880
|
-
this.count$.next(this.userEvents.length);
|
|
26881
|
-
}
|
|
26882
|
-
asFilter(filter) {
|
|
26883
|
-
return filter;
|
|
26884
|
-
}
|
|
26885
|
-
count(filter, options) {
|
|
26886
|
-
return Promise.resolve(this.userEvents.length);
|
|
26887
|
-
}
|
|
26888
|
-
delete(entity) {
|
|
26889
|
-
return Promise.resolve(undefined);
|
|
26890
|
-
}
|
|
26891
|
-
deleteAll(data, opts) {
|
|
26892
|
-
return Promise.resolve(undefined);
|
|
26893
|
-
}
|
|
26894
|
-
listenChanges(filter, options) {
|
|
26895
|
-
return of();
|
|
26896
|
-
}
|
|
26897
|
-
save(entity, options) {
|
|
26898
|
-
var _a;
|
|
26899
|
-
const toSave = (_a = this.userEvents) === null || _a === void 0 ? void 0 : _a.find(value => value.id == (entity === null || entity === void 0 ? void 0 : entity.id));
|
|
26900
|
-
Object.assign(toSave, entity);
|
|
26901
|
-
return entity;
|
|
26902
|
-
}
|
|
26903
|
-
saveAll(data, opts) {
|
|
26904
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
26905
|
-
for (const entity of (data || [])) {
|
|
26906
|
-
yield this.save(entity);
|
|
26907
|
-
}
|
|
26908
|
-
return Promise.resolve(this.userEvents);
|
|
26909
|
-
});
|
|
26910
|
-
}
|
|
26911
|
-
watchAll(offset, size, sortBy, sortDirection, filter, options) {
|
|
26912
|
-
return of({ data: this.userEvents });
|
|
26913
|
-
}
|
|
26914
|
-
}
|
|
26915
|
-
UserEventTestService.decorators = [
|
|
26916
|
-
{ type: Injectable }
|
|
26917
|
-
];
|
|
26918
|
-
UserEventTestService.ctorParameters = () => [
|
|
26919
|
-
{ type: GraphqlService },
|
|
26920
|
-
{ type: AccountService },
|
|
26921
|
-
{ type: NetworkService },
|
|
26922
|
-
{ type: TranslateService },
|
|
26923
|
-
{ type: Environment, decorators: [{ type: Optional }, { type: Inject, args: [ENVIRONMENT,] }] }
|
|
26924
|
-
];
|
|
26925
|
-
|
|
26926
26544
|
class UserEventModule {
|
|
26927
26545
|
}
|
|
26928
26546
|
UserEventModule.decorators = [
|
|
@@ -26933,16 +26551,11 @@ UserEventModule.decorators = [
|
|
|
26933
26551
|
AppIconModule
|
|
26934
26552
|
],
|
|
26935
26553
|
declarations: [
|
|
26936
|
-
|
|
26937
|
-
|
|
26938
|
-
UserEventNotificationList,
|
|
26554
|
+
AppUserEventNotificationIcon,
|
|
26555
|
+
UserEventNotificationList
|
|
26939
26556
|
],
|
|
26940
26557
|
exports: [
|
|
26941
|
-
|
|
26942
|
-
UserEventNotificationComponent
|
|
26943
|
-
],
|
|
26944
|
-
providers: [
|
|
26945
|
-
{ provide: USER_EVENT_SERVICE, useClass: UserEventTestService }
|
|
26558
|
+
AppUserEventNotificationIcon
|
|
26946
26559
|
]
|
|
26947
26560
|
},] }
|
|
26948
26561
|
];
|
|
@@ -27484,11 +27097,140 @@ SocialModule.decorators = [
|
|
|
27484
27097
|
SharedModule,
|
|
27485
27098
|
UserEventModule,
|
|
27486
27099
|
JobModule,
|
|
27487
|
-
MessageModule
|
|
27100
|
+
MessageModule
|
|
27488
27101
|
],
|
|
27102
|
+
exports: [
|
|
27103
|
+
UserEventModule,
|
|
27104
|
+
JobModule,
|
|
27105
|
+
MessageModule
|
|
27106
|
+
]
|
|
27489
27107
|
},] }
|
|
27490
27108
|
];
|
|
27491
27109
|
|
|
27110
|
+
var UserEvent_1;
|
|
27111
|
+
const UserEventTypes = {
|
|
27112
|
+
DEBUG_DATA: 'DEBUG_DATA',
|
|
27113
|
+
INBOX_MESSAGE: 'INBOX_MESSAGE'
|
|
27114
|
+
};
|
|
27115
|
+
// @dynamic
|
|
27116
|
+
let UserEvent = UserEvent_1 = class UserEvent extends Entity {
|
|
27117
|
+
constructor() {
|
|
27118
|
+
super(UserEvent_1.TYPENAME);
|
|
27119
|
+
}
|
|
27120
|
+
asObject(opts) {
|
|
27121
|
+
const target = super.asObject(opts);
|
|
27122
|
+
target.creationDate = toDateISOString(this.creationDate);
|
|
27123
|
+
target.readDate = toDateISOString(this.readDate);
|
|
27124
|
+
// Serialize content
|
|
27125
|
+
if (typeof target.content === 'object') {
|
|
27126
|
+
target.content = JSON.stringify(target.content);
|
|
27127
|
+
}
|
|
27128
|
+
delete target.avatar;
|
|
27129
|
+
delete target.avatarIcon;
|
|
27130
|
+
delete target.icon;
|
|
27131
|
+
delete target.actions;
|
|
27132
|
+
return target;
|
|
27133
|
+
}
|
|
27134
|
+
fromObject(source) {
|
|
27135
|
+
Object.assign(this, source); // Copy all properties
|
|
27136
|
+
super.fromObject(source);
|
|
27137
|
+
this.creationDate = fromDateISOString(source.creationDate);
|
|
27138
|
+
this.readDate = fromDateISOString(source.readDate);
|
|
27139
|
+
try {
|
|
27140
|
+
// Deserialize content
|
|
27141
|
+
if (typeof source.content === 'string' && source.content.startsWith('{')) {
|
|
27142
|
+
this.content = JSON.parse(source.content);
|
|
27143
|
+
}
|
|
27144
|
+
// Deserialize content.context
|
|
27145
|
+
if (this.content && typeof this.content.context === 'string' && this.content.context.startsWith('{')) {
|
|
27146
|
+
this.content.context = JSON.parse(this.content.context);
|
|
27147
|
+
}
|
|
27148
|
+
}
|
|
27149
|
+
catch (err) {
|
|
27150
|
+
console.error('Error during UserEvent deserialization', err);
|
|
27151
|
+
}
|
|
27152
|
+
}
|
|
27153
|
+
};
|
|
27154
|
+
UserEvent = UserEvent_1 = __decorate([
|
|
27155
|
+
EntityClass({ typename: 'UserEventVO' })
|
|
27156
|
+
], UserEvent);
|
|
27157
|
+
// @dynamic
|
|
27158
|
+
let UserEventFilter = class UserEventFilter extends EntityFilter {
|
|
27159
|
+
constructor() {
|
|
27160
|
+
super(...arguments);
|
|
27161
|
+
this.types = [];
|
|
27162
|
+
this.levels = [];
|
|
27163
|
+
this.issuers = [];
|
|
27164
|
+
this.recipients = [];
|
|
27165
|
+
this.startDate = null;
|
|
27166
|
+
this.excludeRead = false;
|
|
27167
|
+
}
|
|
27168
|
+
fromObject(source, opts) {
|
|
27169
|
+
super.fromObject(source, opts);
|
|
27170
|
+
this.types = source.types || [];
|
|
27171
|
+
this.levels = source.levels || [];
|
|
27172
|
+
this.issuers = source.issuers || [];
|
|
27173
|
+
this.recipients = source.recipients || [];
|
|
27174
|
+
this.startDate = fromDateISOString(source.startDate);
|
|
27175
|
+
this.excludeRead = source.excludeRead || false;
|
|
27176
|
+
}
|
|
27177
|
+
buildFilter() {
|
|
27178
|
+
const filterFns = super.buildFilter();
|
|
27179
|
+
if (isNotEmptyArray(this.types)) {
|
|
27180
|
+
filterFns.push(t => this.types.includes(t.type));
|
|
27181
|
+
}
|
|
27182
|
+
if (isNotEmptyArray(this.levels)) {
|
|
27183
|
+
filterFns.push(t => this.levels.includes(t.level));
|
|
27184
|
+
}
|
|
27185
|
+
if (isNotEmptyArray(this.issuers)) {
|
|
27186
|
+
filterFns.push(t => this.issuers.includes(t.issuer));
|
|
27187
|
+
}
|
|
27188
|
+
if (isNotEmptyArray(this.recipients)) {
|
|
27189
|
+
filterFns.push(t => this.recipients.includes(t.recipient));
|
|
27190
|
+
}
|
|
27191
|
+
if (isNotNil(this.startDate)) {
|
|
27192
|
+
filterFns.push(t => this.startDate.isSameOrBefore(t.creationDate));
|
|
27193
|
+
}
|
|
27194
|
+
if (this.excludeRead === true) {
|
|
27195
|
+
filterFns.push(t => isNil(t.readSignature)); // todo or t.signature ?
|
|
27196
|
+
}
|
|
27197
|
+
return filterFns;
|
|
27198
|
+
}
|
|
27199
|
+
asObject(opts) {
|
|
27200
|
+
const target = super.asObject(opts);
|
|
27201
|
+
return target;
|
|
27202
|
+
}
|
|
27203
|
+
};
|
|
27204
|
+
UserEventFilter = __decorate([
|
|
27205
|
+
EntityClass({ typename: 'UserEventFilterVO' })
|
|
27206
|
+
], UserEventFilter);
|
|
27207
|
+
|
|
27208
|
+
const UserEventFragments = {
|
|
27209
|
+
userEvent: gql `fragment UserEventFragment on UserEventVO {
|
|
27210
|
+
id
|
|
27211
|
+
issuer
|
|
27212
|
+
updateDate
|
|
27213
|
+
creationDate
|
|
27214
|
+
eventType
|
|
27215
|
+
recipient
|
|
27216
|
+
content
|
|
27217
|
+
hash
|
|
27218
|
+
signature
|
|
27219
|
+
readSignature
|
|
27220
|
+
__typename
|
|
27221
|
+
}`,
|
|
27222
|
+
lightUserEvent: gql `fragment LightUserEventFragment on UserEventVO {
|
|
27223
|
+
id
|
|
27224
|
+
issuer
|
|
27225
|
+
recipient
|
|
27226
|
+
updateDate
|
|
27227
|
+
creationDate
|
|
27228
|
+
eventType
|
|
27229
|
+
readSignature
|
|
27230
|
+
__typename
|
|
27231
|
+
}`
|
|
27232
|
+
};
|
|
27233
|
+
|
|
27492
27234
|
const Mutations = {
|
|
27493
27235
|
send: gql `mutation SendMessage($data: MessageVOInput){
|
|
27494
27236
|
done: sendMessage(message: $data)
|
|
@@ -29420,5 +29162,5 @@ CoreTestingModule.decorators = [
|
|
|
29420
29162
|
* Generated bundle index. Do not edit.
|
|
29421
29163
|
*/
|
|
29422
29164
|
|
|
29423
|
-
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_TESTING_PAGES, AboutModal, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AndroidOsEnvironment, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppIconComponent, AppIconModule, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutoTitleDirective, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DragAndDropDirective, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, FormGetValuePipe, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, Job, JobModule, JobProgression, JobProgressionComponent, JobProgressionService, JobProgressionServiceToken, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBadgeIconDirective, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItems, MenuOptions, MenuService, Message, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, ResizableComponent, ResizableDirective, ResizableModule, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBadgeIconModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, Software, StartableService, StatusById, StatusIds, StatusList, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, USER_EVENT_SERVICE, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UserEvent, UserEventFilter, UserEventFragments, UserEventModule,
|
|
29165
|
+
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_TESTING_PAGES, AboutModal, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AndroidOsEnvironment, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppIconComponent, AppIconModule, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppUserEventNotificationIcon, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutoTitleDirective, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DragAndDropDirective, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, FormGetValuePipe, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, Job, JobModule, JobProgression, JobProgressionComponent, JobProgressionService, JobProgressionServiceToken, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBadgeIconDirective, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItems, MenuOptions, MenuService, Message, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, ResizableComponent, ResizableDirective, ResizableModule, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBadgeIconModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, Software, StartableService, StatusById, StatusIds, StatusList, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, USER_EVENT_SERVICE, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UserEvent, UserEventFilter, UserEventFragments, UserEventModule, UserEventTypes, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, escapeRegExp, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isBlankString, isControlHasInput, isCordova, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isProgressEvent, isResponseEvent, isTouchUi, isWindows, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moment$5 as moment, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, tz, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitForFalse, waitForTrue, waitIdle, waitWhilePending, ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh, AppUpdateOfflineModeCard as ɵi, UserEventNotificationList as ɵj, JobProgressionList as ɵk, DateTestPage as ɵl, NumpadTestPage as ɵm, MatBadgeIconTestPage as ɵn, ToastTestingModule as ɵo, ToastTestingPage as ɵp };
|
|
29424
29166
|
//# sourceMappingURL=sumaris-net.ngx-components.js.map
|