@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.
Files changed (25) hide show
  1. package/bundles/sumaris-net.ngx-components.umd.js +202 -509
  2. package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
  3. package/bundles/sumaris-net.ngx-components.umd.min.js +1 -1
  4. package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
  5. package/doc/changelog.md +6 -0
  6. package/esm2015/public_api.js +2 -3
  7. package/esm2015/src/app/core/menu/menu.component.js +2 -2
  8. package/esm2015/src/app/social/social.module.js +7 -2
  9. package/esm2015/src/app/social/user-event/notification/user-event-notification.icon.js +94 -0
  10. package/esm2015/src/app/social/user-event/notification/user-event-notification.list.js +17 -15
  11. package/esm2015/src/app/social/user-event/testing/user-event.testing.service.js +6 -3
  12. package/esm2015/src/app/social/user-event/user-event.module.js +5 -13
  13. package/esm2015/src/app/social/user-event/user-event.service.js +11 -89
  14. package/esm2015/sumaris-net.ngx-components.js +7 -8
  15. package/fesm2015/sumaris-net.ngx-components.js +176 -434
  16. package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
  17. package/package.json +1 -1
  18. package/public_api.d.ts +1 -2
  19. package/src/app/social/user-event/notification/{user-event-notification.component.d.ts → user-event-notification.icon.d.ts} +3 -2
  20. package/src/app/social/user-event/user-event.service.d.ts +5 -17
  21. package/sumaris-net.ngx-components.d.ts +6 -7
  22. package/sumaris-net.ngx-components.metadata.json +1 -1
  23. package/esm2015/src/app/social/user-event/notification/user-event-notification.component.js +0 -89
  24. package/esm2015/src/app/social/user-event/user-events.table.js +0 -131
  25. package/src/app/social/user-event/user-events.table.d.ts +0 -58
@@ -24829,7 +24829,7 @@
24829
24829
  MenuComponent.decorators = [
24830
24830
  { type: i0.Component, args: [{
24831
24831
  selector: 'app-menu',
24832
- 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 slot='header-bottom-right' -->\n <ion-col size=\"auto\">\n <ng-content select=\"[slot=header-bottom-right]\"></ng-content>\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 ? '&#xab;' : '&#xbb;'}}</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",
24832
+ 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 ? '&#xab;' : '&#xbb;'}}</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",
24833
24833
  animations: [fadeInAnimation],
24834
24834
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
24835
24835
  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)}}"]
@@ -30234,116 +30234,6 @@
30234
30234
  SUBSCRIBE_JOB_PROGRESSION_ERROR: 50010
30235
30235
  };
30236
30236
 
30237
- var UserEvent_1;
30238
- var UserEventTypes = {
30239
- DEBUG_DATA: 'DEBUG_DATA',
30240
- INBOX_MESSAGE: 'INBOX_MESSAGE'
30241
- };
30242
- // @dynamic
30243
- exports.UserEvent = UserEvent_1 = /** @class */ (function (_super) {
30244
- __extends(UserEvent, _super);
30245
- function UserEvent() {
30246
- return _super.call(this, UserEvent_1.TYPENAME) || this;
30247
- }
30248
- UserEvent.prototype.asObject = function (opts) {
30249
- var target = _super.prototype.asObject.call(this, opts);
30250
- target.creationDate = toDateISOString(this.creationDate);
30251
- target.readDate = toDateISOString(this.readDate);
30252
- // Serialize content
30253
- if (typeof target.content === 'object') {
30254
- target.content = JSON.stringify(target.content);
30255
- }
30256
- delete target.avatar;
30257
- delete target.avatarIcon;
30258
- delete target.icon;
30259
- delete target.actions;
30260
- return target;
30261
- };
30262
- UserEvent.prototype.fromObject = function (source) {
30263
- Object.assign(this, source); // Copy all properties
30264
- _super.prototype.fromObject.call(this, source);
30265
- this.creationDate = fromDateISOString(source.creationDate);
30266
- this.readDate = fromDateISOString(source.readDate);
30267
- try {
30268
- // Deserialize content
30269
- if (typeof source.content === 'string' && source.content.startsWith('{')) {
30270
- this.content = JSON.parse(source.content);
30271
- }
30272
- // Deserialize content.context
30273
- if (this.content && typeof this.content.context === 'string' && this.content.context.startsWith('{')) {
30274
- this.content.context = JSON.parse(this.content.context);
30275
- }
30276
- }
30277
- catch (err) {
30278
- console.error('Error during UserEvent deserialization', err);
30279
- }
30280
- };
30281
- return UserEvent;
30282
- }(Entity));
30283
- exports.UserEvent = UserEvent_1 = __decorate([
30284
- EntityClass({ typename: 'UserEventVO' })
30285
- ], exports.UserEvent);
30286
- // @dynamic
30287
- exports.UserEventFilter = /** @class */ (function (_super) {
30288
- __extends(UserEventFilter, _super);
30289
- function UserEventFilter() {
30290
- var _this = _super.apply(this, __spread(arguments)) || this;
30291
- _this.types = [];
30292
- _this.levels = [];
30293
- _this.issuers = [];
30294
- _this.recipients = [];
30295
- _this.startDate = null;
30296
- _this.excludeRead = false;
30297
- return _this;
30298
- }
30299
- UserEventFilter.prototype.fromObject = function (source, opts) {
30300
- _super.prototype.fromObject.call(this, source, opts);
30301
- this.types = source.types || [];
30302
- this.levels = source.levels || [];
30303
- this.issuers = source.issuers || [];
30304
- this.recipients = source.recipients || [];
30305
- this.startDate = fromDateISOString(source.startDate);
30306
- this.excludeRead = source.excludeRead || false;
30307
- };
30308
- UserEventFilter.prototype.buildFilter = function () {
30309
- var _this = this;
30310
- var filterFns = _super.prototype.buildFilter.call(this);
30311
- if (isNotEmptyArray(this.types)) {
30312
- filterFns.push(function (t) { return _this.types.includes(t.type); });
30313
- }
30314
- if (isNotEmptyArray(this.levels)) {
30315
- filterFns.push(function (t) { return _this.levels.includes(t.level); });
30316
- }
30317
- if (isNotEmptyArray(this.issuers)) {
30318
- filterFns.push(function (t) { return _this.issuers.includes(t.issuer); });
30319
- }
30320
- if (isNotEmptyArray(this.recipients)) {
30321
- filterFns.push(function (t) { return _this.recipients.includes(t.recipient); });
30322
- }
30323
- if (isNotNil(this.startDate)) {
30324
- filterFns.push(function (t) { return _this.startDate.isSameOrBefore(t.creationDate); });
30325
- }
30326
- if (this.excludeRead === true) {
30327
- filterFns.push(function (t) { return isNil(t.readSignature); }); // todo or t.signature ?
30328
- }
30329
- return filterFns;
30330
- };
30331
- UserEventFilter.prototype.asObject = function (opts) {
30332
- var target = _super.prototype.asObject.call(this, opts);
30333
- return target;
30334
- };
30335
- return UserEventFilter;
30336
- }(EntityFilter));
30337
- exports.UserEventFilter = __decorate([
30338
- EntityClass({ typename: 'UserEventFilterVO' })
30339
- ], exports.UserEventFilter);
30340
-
30341
- var UserEventFragments = {
30342
- userEvent: core.gql(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject(["fragment UserEventFragment on UserEventVO {\n id\n issuer\n updateDate\n creationDate\n eventType\n recipient\n content\n hash\n signature\n readSignature\n __typename\n }"], ["fragment UserEventFragment on UserEventVO {\n id\n issuer\n updateDate\n creationDate\n eventType\n recipient\n content\n hash\n signature\n readSignature\n __typename\n }"]))),
30343
- lightUserEvent: core.gql(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject(["fragment LightUserEventFragment on UserEventVO {\n id\n issuer\n recipient\n updateDate\n creationDate\n eventType\n readSignature\n __typename\n }"], ["fragment LightUserEventFragment on UserEventVO {\n id\n issuer\n recipient\n updateDate\n creationDate\n eventType\n readSignature\n __typename\n }"])))
30344
- };
30345
- var templateObject_1$2, templateObject_2$2;
30346
-
30347
30237
  var moment$6 = momentImported__namespace;
30348
30238
  var USER_EVENT_SERVICE = new i0.InjectionToken('UserEventService');
30349
30239
  var AbstractUserEventService = /** @class */ (function (_super) {
@@ -30355,7 +30245,7 @@
30355
30245
  _this.network = network;
30356
30246
  _this.translate = translate;
30357
30247
  _this.options = options;
30358
- _this.count$ = new rxjs.BehaviorSubject(0);
30248
+ _this._countSubject = new rxjs.BehaviorSubject(0);
30359
30249
  _this.listeners = [];
30360
30250
  _this._subscriptions = new rxjs.Subscription();
30361
30251
  _this.queries = options.queries;
@@ -30364,9 +30254,9 @@
30364
30254
  _this._logPrefix = '[user-event-service] ';
30365
30255
  return _this;
30366
30256
  }
30367
- Object.defineProperty(AbstractUserEventService.prototype, "userEventCount", {
30257
+ Object.defineProperty(AbstractUserEventService.prototype, "countSubject", {
30368
30258
  get: function () {
30369
- return this.count$.asObservable();
30259
+ return this._countSubject;
30370
30260
  },
30371
30261
  enumerable: false,
30372
30262
  configurable: true
@@ -30375,31 +30265,21 @@
30375
30265
  return __awaiter(this, void 0, void 0, function () {
30376
30266
  var _this = this;
30377
30267
  return __generator(this, function (_b) {
30378
- switch (_b.label) {
30379
- case 0:
30380
- // Update component when refresh is need (=login events)
30381
- this._subscriptions.add(rxjs.merge(this.accountService.onLogin, this.accountService.onLogout)
30382
- .pipe(
30383
- // Wait account service ready (can be restarted)
30384
- operators.mergeMap(function () { return _this.accountService.ready(); }), operators.map(function () { return _this.accountService.isLogin(); }), operators.distinctUntilChanged())
30385
- .subscribe(function (login) {
30386
- if (login) {
30387
- _this.onLogin();
30388
- }
30389
- else {
30390
- _this.onLogout();
30391
- }
30392
- }));
30393
- // First attempt if account is ready
30394
- return [4 /*yield*/, this.accountService.ready()];
30395
- case 1:
30396
- // First attempt if account is ready
30397
- _b.sent();
30398
- if (this.accountService.isLogin()) {
30399
- setTimeout(function () { return _this.onLogin(); });
30400
- }
30401
- return [2 /*return*/];
30402
- }
30268
+ // Update component when refresh is need (=login events)
30269
+ this._subscriptions.add(rxjs.merge(this.accountService.onLogin, this.accountService.onLogout, rxjs.of() // Starts with - first attempt if account is ready
30270
+ )
30271
+ .pipe(
30272
+ // Wait account service ready (can be restarted)
30273
+ operators.mergeMap(function () { return _this.accountService.ready(); }), operators.map(function () { return _this.accountService.isLogin(); }), operators.distinctUntilChanged())
30274
+ .subscribe(function (login) {
30275
+ if (login) {
30276
+ _this.onLogin();
30277
+ }
30278
+ else {
30279
+ _this.onLogout();
30280
+ }
30281
+ }));
30282
+ return [2 /*return*/];
30403
30283
  });
30404
30284
  });
30405
30285
  };
@@ -30465,7 +30345,7 @@
30465
30345
  data: entity
30466
30346
  });
30467
30347
  // Update count
30468
- this.count$.next(this.count$.value + 1);
30348
+ this._countSubject.next(this._countSubject.value + 1);
30469
30349
  };
30470
30350
  AbstractUserEventService.prototype.count = function (filter, options) {
30471
30351
  var _a;
@@ -30527,7 +30407,7 @@
30527
30407
  if (total && _this._debug)
30528
30408
  console.debug(_this._logPrefix + "Received new user events count:", total);
30529
30409
  // update count
30530
- _this.count$.next(total);
30410
+ _this._countSubject.next(total);
30531
30411
  return total;
30532
30412
  }));
30533
30413
  };
@@ -30774,7 +30654,7 @@
30774
30654
  this.listeners.push(listener);
30775
30655
  };
30776
30656
  AbstractUserEventService.prototype.resetCount = function () {
30777
- this.count$.next(undefined);
30657
+ this._countSubject.next(undefined);
30778
30658
  this.resetCountDate = moment$6();
30779
30659
  // restart listening count changes
30780
30660
  this.startListenCountChanges();
@@ -30791,7 +30671,7 @@
30791
30671
  if (this._debug)
30792
30672
  console.debug(this._logPrefix + "Receiving user events count", count);
30793
30673
  // Update count
30794
- this.count$.next(count);
30674
+ this._countSubject.next(count);
30795
30675
  // Then listen changes
30796
30676
  this.startListenCountChanges();
30797
30677
  return [2 /*return*/];
@@ -30923,206 +30803,6 @@
30923
30803
  { type: i1$2.TranslateService },
30924
30804
  { type: undefined }
30925
30805
  ]; };
30926
- var userEventQueries = {
30927
- loadAll: core.gql(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["\n query UserEvents($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...LightUserEventFragment\n }\n }\n ", "\n "], ["\n query UserEvents($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...LightUserEventFragment\n }\n }\n ", "\n "])), UserEventFragments.lightUserEvent),
30928
- loadAllWithContent: core.gql(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject(["\n query UserEventsWithContent($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...UserEventFragment\n }\n }\n ", "\n "], ["\n query UserEventsWithContent($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...UserEventFragment\n }\n }\n ", "\n "])), UserEventFragments.userEvent)
30929
- };
30930
- var userEventMutations = {
30931
- deleteByIds: core.gql(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject(["\n mutation DeleteUserEvents($ids:[Int]){\n deleteUserEvents(ids: $ids)\n }\n "], ["\n mutation DeleteUserEvents($ids:[Int]){\n deleteUserEvents(ids: $ids)\n }\n "]))),
30932
- save: core.gql(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject(["\n mutation SaveUserEvent($data: UserEventVOInput){\n data: saveUserEvent(userEvent: $data){\n ...UserEventFragment\n }\n }\n ", "\n "], ["\n mutation SaveUserEvent($data: UserEventVOInput){\n data: saveUserEvent(userEvent: $data){\n ...UserEventFragment\n }\n }\n ", "\n "])), UserEventFragments.userEvent)
30933
- };
30934
- var UserEventService = /** @class */ (function (_super) {
30935
- __extends(UserEventService, _super);
30936
- function UserEventService(graphql, accountService, network, translate, environment) {
30937
- var _this = _super.call(this, graphql, accountService, network, translate, {
30938
- queries: userEventQueries,
30939
- mutations: userEventMutations,
30940
- production: environment === null || environment === void 0 ? void 0 : environment.production
30941
- }) || this;
30942
- _this.graphql = graphql;
30943
- _this.accountService = accountService;
30944
- _this.network = network;
30945
- _this.translate = translate;
30946
- _this.environment = environment;
30947
- return _this;
30948
- }
30949
- UserEventService.prototype.asFilter = function (filter) {
30950
- return exports.UserEventFilter.fromObject(filter);
30951
- };
30952
- UserEventService.prototype.fromObject = function (source) {
30953
- return exports.UserEvent.fromObject(source);
30954
- };
30955
- /* -- protected methods -- */
30956
- UserEventService.prototype.fillDefaultProperties = function (entity) {
30957
- entity.issuer = this.accountService.account.pubkey;
30958
- // TODO: compute hash (using cryptoService)
30959
- // TODO: compute sign
30960
- console.warn('TODO: sign user event before sending');
30961
- };
30962
- return UserEventService;
30963
- }(AbstractUserEventService));
30964
- UserEventService.decorators = [
30965
- { type: i0.Injectable }
30966
- ];
30967
- UserEventService.ctorParameters = function () { return [
30968
- { type: GraphqlService },
30969
- { type: AccountService },
30970
- { type: NetworkService },
30971
- { type: i1$2.TranslateService },
30972
- { type: Environment, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [ENVIRONMENT,] }] }
30973
- ]; };
30974
- var templateObject_1$3, templateObject_2$3, templateObject_3$2, templateObject_4$2;
30975
-
30976
- var ICONS_MAP = {
30977
- DEBUG_DATA: { matIcon: 'bug_report' },
30978
- INBOX_MESSAGE: { matIcon: 'mail' }
30979
- };
30980
- var UserEventsTable = /** @class */ (function (_super) {
30981
- __extends(UserEventsTable, _super);
30982
- function UserEventsTable(injector, accountService, service, entities, cd, environment) {
30983
- var _this = _super.call(this, injector,
30984
- // columns
30985
- RESERVED_START_COLUMNS
30986
- .concat([
30987
- 'creationDate',
30988
- 'icon',
30989
- 'eventType',
30990
- 'message'
30991
- ])
30992
- .concat(RESERVED_END_COLUMNS), null, null) || this;
30993
- _this.accountService = accountService;
30994
- _this.service = service;
30995
- _this.entities = entities;
30996
- _this.cd = cd;
30997
- _this.environment = environment;
30998
- _this.i18nColumnPrefix = 'SOCIAL.USER_EVENT.';
30999
- _this.autoLoad = false; // this.start()
31000
- _this.inlineEdition = false;
31001
- _this.defaultSortBy = 'creationDate';
31002
- _this.defaultSortDirection = 'desc';
31003
- return _this;
31004
- }
31005
- UserEventsTable.prototype.ngOnInit = function () {
31006
- _super.prototype.ngOnInit.call(this);
31007
- // Load date/time pattern
31008
- this.dateTimePattern = this.translate.instant('COMMON.DATE_TIME_PATTERN');
31009
- this.withContent = toBoolean(this.withContent, false);
31010
- var account = this.accountService.account;
31011
- var pubkey = account && account.pubkey;
31012
- this.isAdmin = this.accountService.isAdmin();
31013
- this.canEdit = this.isAdmin || pubkey === this.recipient;
31014
- this.canDelete = this.canEdit;
31015
- this.setDatasource(new EntitiesTableDataSource(exports.UserEvent, this.service, null, {
31016
- prependNewElements: false,
31017
- suppressErrors: true,
31018
- dataServiceOptions: {
31019
- withContent: this.withContent
31020
- }
31021
- }));
31022
- var filter = this.filter || new exports.UserEventFilter();
31023
- filter.recipients = [this.recipient];
31024
- this.setFilter(filter, { emitEvent: true });
31025
- };
31026
- UserEventsTable.prototype.start = function () {
31027
- return __awaiter(this, void 0, void 0, function () {
31028
- return __generator(this, function (_a) {
31029
- switch (_a.label) {
31030
- case 0:
31031
- console.debug('[user-event] Starting...');
31032
- // Waiting account to be ready
31033
- return [4 /*yield*/, this.accountService.ready()];
31034
- case 1:
31035
- // Waiting account to be ready
31036
- _a.sent();
31037
- // Load data
31038
- this.onRefresh.emit();
31039
- return [2 /*return*/];
31040
- }
31041
- });
31042
- });
31043
- };
31044
- UserEventsTable.prototype.getIcon = function (source) {
31045
- return ICONS_MAP[source.type];
31046
- };
31047
- UserEventsTable.prototype.getDetail = function (source) {
31048
- if (!source)
31049
- return undefined;
31050
- if (source.content && source.type === UserEventTypes.DEBUG_DATA) {
31051
- var context = source.content.context;
31052
- if (context && context.__typename) {
31053
- // const actions = this.service.getActionsByTypename(context.__typename);
31054
- return {
31055
- // actions,
31056
- title: source.content.error && source.content.error.message || source.content.message,
31057
- description: source.content.error && source.content.error.details || undefined
31058
- };
31059
- }
31060
- }
31061
- console.debug('TODO: implement getDetail() for event: ', source);
31062
- return {};
31063
- };
31064
- UserEventsTable.prototype.doAction = function (action, row) {
31065
- return __awaiter(this, void 0, void 0, function () {
31066
- var event, res, _a, err_1;
31067
- return __generator(this, function (_b) {
31068
- switch (_b.label) {
31069
- case 0:
31070
- event = row.currentData;
31071
- // const context = event.content && event.content.context;
31072
- this.markAsLoading();
31073
- if (!(action && typeof action.executeAction === 'function')) return [3 /*break*/, 7];
31074
- _b.label = 1;
31075
- case 1:
31076
- _b.trys.push([1, 5, 6, 7]);
31077
- res = action.executeAction(event /*, context*/);
31078
- if (!(res instanceof Promise)) return [3 /*break*/, 3];
31079
- return [4 /*yield*/, res];
31080
- case 2:
31081
- _a = _b.sent();
31082
- return [3 /*break*/, 4];
31083
- case 3:
31084
- _a = res;
31085
- _b.label = 4;
31086
- case 4:
31087
- res = _a;
31088
- return [3 /*break*/, 7];
31089
- case 5:
31090
- err_1 = _b.sent();
31091
- this.setError(err_1 && err_1.message || err_1);
31092
- console.error("[user-event] Failed to execute action " + action.name + ": " + (err_1 && err_1.message || err_1), err_1);
31093
- return [3 /*break*/, 7];
31094
- case 6:
31095
- this.markAsLoaded();
31096
- return [7 /*endfinally*/];
31097
- case 7: return [2 /*return*/];
31098
- }
31099
- });
31100
- });
31101
- };
31102
- return UserEventsTable;
31103
- }(AppTable));
31104
- UserEventsTable.decorators = [
31105
- { type: i0.Component, args: [{
31106
- selector: 'app-user-events-table',
31107
- 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",
31108
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
31109
- 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}"]
31110
- },] }
31111
- ];
31112
- UserEventsTable.ctorParameters = function () { return [
31113
- { type: i0.Injector },
31114
- { type: AccountService },
31115
- { type: undefined, decorators: [{ type: i0.Inject, args: [USER_EVENT_SERVICE,] }] },
31116
- { type: EntitiesStorage },
31117
- { type: i0.ChangeDetectorRef },
31118
- { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
31119
- ]; };
31120
- UserEventsTable.propDecorators = {
31121
- recipient: [{ type: i0.Input }],
31122
- withContent: [{ type: i0.Input }],
31123
- defaultSortBy: [{ type: i0.Input }],
31124
- defaultSortDirection: [{ type: i0.Input }]
31125
- };
31126
30806
 
31127
30807
  var UserEventNotificationList = /** @class */ (function () {
31128
30808
  function UserEventNotificationList(cd, popoverController, userEventService) {
@@ -31136,20 +30816,22 @@
31136
30816
  UserEventNotificationList.prototype.ngOnInit = function () {
31137
30817
  var _this = this;
31138
30818
  // Watch all user events
31139
- this.subscriptions.add(this.userEventService
31140
- .watchAll(0, 10, 'creationDate', "desc", undefined)
31141
- .subscribe(function (result) {
31142
- if (_this.debug)
31143
- console.debug("[user-event-notification-list] receiving " + result.total + " user events", result.data);
31144
- _this.userEvents.next(result.data);
31145
- _this.markForCheck();
31146
- }));
31147
- // Listen changes
31148
- this.subscriptions.add(this.userEventService.listenChanges(undefined)
31149
- .subscribe(function (data) {
31150
- if (_this.debug)
31151
- console.debug("[user-event-notification-list] receiving " + data.length + " new user events", data);
31152
- }));
30819
+ if (this.userEventService) {
30820
+ this.subscriptions.add(this.userEventService
30821
+ .watchAll(0, 10, 'creationDate', 'desc', undefined)
30822
+ .subscribe(function (result) {
30823
+ if (_this.debug)
30824
+ console.debug("[user-event-notification-list] receiving " + result.total + " user events", result.data);
30825
+ _this.userEvents.next(result.data);
30826
+ _this.markForCheck();
30827
+ }));
30828
+ // Listen changes
30829
+ this.subscriptions.add(this.userEventService.listenChanges(undefined)
30830
+ .subscribe(function (data) {
30831
+ if (_this.debug)
30832
+ console.debug("[user-event-notification-list] receiving " + data.length + " new user events", data);
30833
+ }));
30834
+ }
31153
30835
  };
31154
30836
  UserEventNotificationList.prototype.ngOnDestroy = function () {
31155
30837
  this.subscriptions.unsubscribe();
@@ -31200,31 +30882,35 @@
31200
30882
  readEvents: [{ type: i0.Output }]
31201
30883
  };
31202
30884
 
31203
- var UserEventNotificationComponent = /** @class */ (function () {
31204
- function UserEventNotificationComponent(userEventService, accountService, popoverController) {
30885
+ var AppUserEventNotificationIcon = /** @class */ (function () {
30886
+ function AppUserEventNotificationIcon(userEventService, accountService, popoverController) {
31205
30887
  this.userEventService = userEventService;
31206
30888
  this.accountService = accountService;
31207
30889
  this.popoverController = popoverController;
31208
30890
  this.debug = false;
31209
30891
  this.titleI18n = 'SOCIAL.USER_EVENT.NOTIFICATION.TITLE';
31210
30892
  this.disabled = false;
30893
+ this.filter = null;
31211
30894
  this._logPrefix = '[user-event-notification] ';
31212
30895
  this._readEvent = new i0.EventEmitter();
31213
30896
  this._readEvents = new i0.EventEmitter();
31214
30897
  }
31215
- Object.defineProperty(UserEventNotificationComponent.prototype, "count", {
30898
+ Object.defineProperty(AppUserEventNotificationIcon.prototype, "countChanges", {
31216
30899
  get: function () {
31217
- var _a;
31218
- return (_a = this.userEventService) === null || _a === void 0 ? void 0 : _a.userEventCount.pipe(operators.map(function (value) { return value === 0 ? undefined : value; }));
30900
+ if (!this.userEventService)
30901
+ return rxjs.of();
30902
+ return this.userEventService
30903
+ .countSubject
30904
+ .pipe(operators.map(function (value) { return value === 0 ? undefined : value; }));
31219
30905
  },
31220
30906
  enumerable: false,
31221
30907
  configurable: true
31222
30908
  });
31223
- UserEventNotificationComponent.prototype.ngOnInit = function () {
30909
+ AppUserEventNotificationIcon.prototype.ngOnInit = function () {
31224
30910
  return __awaiter(this, void 0, void 0, function () {
31225
30911
  var _this = this;
31226
- return __generator(this, function (_b) {
31227
- switch (_b.label) {
30912
+ return __generator(this, function (_a) {
30913
+ switch (_a.label) {
31228
30914
  case 0:
31229
30915
  if (isNil(this.userEventService)) {
31230
30916
  console.warn(this._logPrefix + "No service injected");
@@ -31235,7 +30921,7 @@
31235
30921
  return [4 /*yield*/, this.userEventService.ready()];
31236
30922
  case 1:
31237
30923
  // Wait service
31238
- _b.sent();
30924
+ _a.sent();
31239
30925
  // Subscribe to read event
31240
30926
  this._readEvent.subscribe(function (value) {
31241
30927
  // default: mark event as read
@@ -31249,11 +30935,11 @@
31249
30935
  });
31250
30936
  });
31251
30937
  };
31252
- UserEventNotificationComponent.prototype.showList = function (event) {
30938
+ AppUserEventNotificationIcon.prototype.showList = function (event) {
31253
30939
  return __awaiter(this, void 0, void 0, function () {
31254
30940
  var popover;
31255
- return __generator(this, function (_b) {
31256
- switch (_b.label) {
30941
+ return __generator(this, function (_a) {
30942
+ switch (_a.label) {
31257
30943
  case 0:
31258
30944
  // Reset count
31259
30945
  this.userEventService.resetCount();
@@ -31272,141 +30958,41 @@
31272
30958
  cssClass: 'popover-large'
31273
30959
  })];
31274
30960
  case 1:
31275
- popover = _b.sent();
30961
+ popover = _a.sent();
31276
30962
  return [4 /*yield*/, popover.present()];
31277
30963
  case 2:
31278
- _b.sent();
30964
+ _a.sent();
31279
30965
  return [2 /*return*/];
31280
30966
  }
31281
30967
  });
31282
30968
  });
31283
30969
  };
31284
- UserEventNotificationComponent.prototype.ngOnDestroy = function () {
30970
+ AppUserEventNotificationIcon.prototype.ngOnDestroy = function () {
31285
30971
  if (this.debug) {
31286
30972
  console.debug(this._logPrefix + "Destroying");
31287
30973
  }
31288
30974
  };
31289
- return UserEventNotificationComponent;
30975
+ return AppUserEventNotificationIcon;
31290
30976
  }());
31291
- UserEventNotificationComponent.decorators = [
30977
+ AppUserEventNotificationIcon.decorators = [
31292
30978
  { type: i0.Component, args: [{
31293
- selector: 'app-user-event-notification-component',
31294
- 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]=\"count | async\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >notifications\n </mat-icon>\n</button>\n\n",
31295
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
31296
- styles: [""]
30979
+ selector: 'app-user-event-notification-icon',
30980
+ 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",
30981
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
31297
30982
  },] }
31298
30983
  ];
31299
- UserEventNotificationComponent.ctorParameters = function () { return [
30984
+ AppUserEventNotificationIcon.ctorParameters = function () { return [
31300
30985
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [USER_EVENT_SERVICE,] }] },
31301
30986
  { type: AccountService },
31302
30987
  { type: i1$5.PopoverController }
31303
30988
  ]; };
31304
- UserEventNotificationComponent.propDecorators = {
30989
+ AppUserEventNotificationIcon.propDecorators = {
31305
30990
  debug: [{ type: i0.Input }],
31306
30991
  titleI18n: [{ type: i0.Input }],
31307
- disabled: [{ type: i0.Input }]
30992
+ disabled: [{ type: i0.Input }],
30993
+ filter: [{ type: i0.Input }]
31308
30994
  };
31309
30995
 
31310
- var UserEventTestService = /** @class */ (function (_super) {
31311
- __extends(UserEventTestService, _super);
31312
- function UserEventTestService(graphql, accountService, network, translate, environment) {
31313
- var _this = _super.call(this, graphql, accountService, network, translate, {
31314
- queries: {
31315
- loadAll: null,
31316
- loadAllWithContent: null
31317
- },
31318
- production: environment === null || environment === void 0 ? void 0 : environment.production
31319
- }) || this;
31320
- _this.graphql = graphql;
31321
- _this.accountService = accountService;
31322
- _this.network = network;
31323
- _this.translate = translate;
31324
- _this.environment = environment;
31325
- _this.userEvents = [];
31326
- return _this;
31327
- }
31328
- UserEventTestService.prototype.fromObject = function (source) {
31329
- return exports.UserEvent.fromObject(source);
31330
- };
31331
- UserEventTestService.prototype.add = function (entity) {
31332
- entity = this.processUserEvent(entity);
31333
- entity.id = this.userEvents.length + 1;
31334
- this.userEvents.push(entity);
31335
- this.count$.next(this.userEvents.length);
31336
- };
31337
- UserEventTestService.prototype.asFilter = function (filter) {
31338
- return filter;
31339
- };
31340
- UserEventTestService.prototype.count = function (filter, options) {
31341
- return Promise.resolve(this.userEvents.length);
31342
- };
31343
- UserEventTestService.prototype.delete = function (entity) {
31344
- return Promise.resolve(undefined);
31345
- };
31346
- UserEventTestService.prototype.deleteAll = function (data, opts) {
31347
- return Promise.resolve(undefined);
31348
- };
31349
- UserEventTestService.prototype.listenChanges = function (filter, options) {
31350
- return rxjs.of();
31351
- };
31352
- UserEventTestService.prototype.save = function (entity, options) {
31353
- var _a;
31354
- var toSave = (_a = this.userEvents) === null || _a === void 0 ? void 0 : _a.find(function (value) { return value.id == (entity === null || entity === void 0 ? void 0 : entity.id); });
31355
- Object.assign(toSave, entity);
31356
- return entity;
31357
- };
31358
- UserEventTestService.prototype.saveAll = function (data, opts) {
31359
- return __awaiter(this, void 0, void 0, function () {
31360
- var _b, _c, entity, e_1_1;
31361
- var e_1, _d;
31362
- return __generator(this, function (_e) {
31363
- switch (_e.label) {
31364
- case 0:
31365
- _e.trys.push([0, 5, 6, 7]);
31366
- _b = __values((data || [])), _c = _b.next();
31367
- _e.label = 1;
31368
- case 1:
31369
- if (!!_c.done) return [3 /*break*/, 4];
31370
- entity = _c.value;
31371
- return [4 /*yield*/, this.save(entity)];
31372
- case 2:
31373
- _e.sent();
31374
- _e.label = 3;
31375
- case 3:
31376
- _c = _b.next();
31377
- return [3 /*break*/, 1];
31378
- case 4: return [3 /*break*/, 7];
31379
- case 5:
31380
- e_1_1 = _e.sent();
31381
- e_1 = { error: e_1_1 };
31382
- return [3 /*break*/, 7];
31383
- case 6:
31384
- try {
31385
- if (_c && !_c.done && (_d = _b.return)) _d.call(_b);
31386
- }
31387
- finally { if (e_1) throw e_1.error; }
31388
- return [7 /*endfinally*/];
31389
- case 7: return [2 /*return*/, Promise.resolve(this.userEvents)];
31390
- }
31391
- });
31392
- });
31393
- };
31394
- UserEventTestService.prototype.watchAll = function (offset, size, sortBy, sortDirection, filter, options) {
31395
- return rxjs.of({ data: this.userEvents });
31396
- };
31397
- return UserEventTestService;
31398
- }(AbstractUserEventService));
31399
- UserEventTestService.decorators = [
31400
- { type: i0.Injectable }
31401
- ];
31402
- UserEventTestService.ctorParameters = function () { return [
31403
- { type: GraphqlService },
31404
- { type: AccountService },
31405
- { type: NetworkService },
31406
- { type: i1$2.TranslateService },
31407
- { type: Environment, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [ENVIRONMENT,] }] }
31408
- ]; };
31409
-
31410
30996
  var UserEventModule = /** @class */ (function () {
31411
30997
  function UserEventModule() {
31412
30998
  }
@@ -31420,16 +31006,11 @@
31420
31006
  AppIconModule
31421
31007
  ],
31422
31008
  declarations: [
31423
- UserEventsTable,
31424
- UserEventNotificationComponent,
31425
- UserEventNotificationList,
31009
+ AppUserEventNotificationIcon,
31010
+ UserEventNotificationList
31426
31011
  ],
31427
31012
  exports: [
31428
- UserEventsTable,
31429
- UserEventNotificationComponent
31430
- ],
31431
- providers: [
31432
- { provide: USER_EVENT_SERVICE, useClass: UserEventTestService }
31013
+ AppUserEventNotificationIcon
31433
31014
  ]
31434
31015
  },] }
31435
31016
  ];
@@ -31718,7 +31299,7 @@
31718
31299
  ], exports.JobProgression);
31719
31300
 
31720
31301
  var JobProgressionServiceToken = new i0.InjectionToken('JobProgressionService');
31721
- var jobProgressionSubscription = core.gql(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject(["subscription UpdateJobProgression($id: Int!, $interval: Int){\n data: updateJobProgression(id: $id, interval: $interval) {\n id\n name\n message\n current\n total\n }\n}"], ["subscription UpdateJobProgression($id: Int!, $interval: Int){\n data: updateJobProgression(id: $id, interval: $interval) {\n id\n name\n message\n current\n total\n }\n}"])));
31302
+ var jobProgressionSubscription = core.gql(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject(["subscription UpdateJobProgression($id: Int!, $interval: Int){\n data: updateJobProgression(id: $id, interval: $interval) {\n id\n name\n message\n current\n total\n }\n}"], ["subscription UpdateJobProgression($id: Int!, $interval: Int){\n data: updateJobProgression(id: $id, interval: $interval) {\n id\n name\n message\n current\n total\n }\n}"])));
31722
31303
  var JobProgressionService = /** @class */ (function (_super) {
31723
31304
  __extends(JobProgressionService, _super);
31724
31305
  function JobProgressionService(graphql, environment) {
@@ -31758,7 +31339,7 @@
31758
31339
  { type: GraphqlService },
31759
31340
  { type: Environment, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [ENVIRONMENT,] }] }
31760
31341
  ]; };
31761
- var templateObject_1$4;
31342
+ var templateObject_1$2;
31762
31343
 
31763
31344
  var JobProgressionList = /** @class */ (function () {
31764
31345
  function JobProgressionList() {
@@ -32026,13 +31607,128 @@
32026
31607
  SharedModule,
32027
31608
  UserEventModule,
32028
31609
  JobModule,
32029
- MessageModule,
31610
+ MessageModule
32030
31611
  ],
31612
+ exports: [
31613
+ UserEventModule,
31614
+ JobModule,
31615
+ MessageModule
31616
+ ]
32031
31617
  },] }
32032
31618
  ];
32033
31619
 
31620
+ var UserEvent_1;
31621
+ var UserEventTypes = {
31622
+ DEBUG_DATA: 'DEBUG_DATA',
31623
+ INBOX_MESSAGE: 'INBOX_MESSAGE'
31624
+ };
31625
+ // @dynamic
31626
+ exports.UserEvent = UserEvent_1 = /** @class */ (function (_super) {
31627
+ __extends(UserEvent, _super);
31628
+ function UserEvent() {
31629
+ return _super.call(this, UserEvent_1.TYPENAME) || this;
31630
+ }
31631
+ UserEvent.prototype.asObject = function (opts) {
31632
+ var target = _super.prototype.asObject.call(this, opts);
31633
+ target.creationDate = toDateISOString(this.creationDate);
31634
+ target.readDate = toDateISOString(this.readDate);
31635
+ // Serialize content
31636
+ if (typeof target.content === 'object') {
31637
+ target.content = JSON.stringify(target.content);
31638
+ }
31639
+ delete target.avatar;
31640
+ delete target.avatarIcon;
31641
+ delete target.icon;
31642
+ delete target.actions;
31643
+ return target;
31644
+ };
31645
+ UserEvent.prototype.fromObject = function (source) {
31646
+ Object.assign(this, source); // Copy all properties
31647
+ _super.prototype.fromObject.call(this, source);
31648
+ this.creationDate = fromDateISOString(source.creationDate);
31649
+ this.readDate = fromDateISOString(source.readDate);
31650
+ try {
31651
+ // Deserialize content
31652
+ if (typeof source.content === 'string' && source.content.startsWith('{')) {
31653
+ this.content = JSON.parse(source.content);
31654
+ }
31655
+ // Deserialize content.context
31656
+ if (this.content && typeof this.content.context === 'string' && this.content.context.startsWith('{')) {
31657
+ this.content.context = JSON.parse(this.content.context);
31658
+ }
31659
+ }
31660
+ catch (err) {
31661
+ console.error('Error during UserEvent deserialization', err);
31662
+ }
31663
+ };
31664
+ return UserEvent;
31665
+ }(Entity));
31666
+ exports.UserEvent = UserEvent_1 = __decorate([
31667
+ EntityClass({ typename: 'UserEventVO' })
31668
+ ], exports.UserEvent);
31669
+ // @dynamic
31670
+ exports.UserEventFilter = /** @class */ (function (_super) {
31671
+ __extends(UserEventFilter, _super);
31672
+ function UserEventFilter() {
31673
+ var _this = _super.apply(this, __spread(arguments)) || this;
31674
+ _this.types = [];
31675
+ _this.levels = [];
31676
+ _this.issuers = [];
31677
+ _this.recipients = [];
31678
+ _this.startDate = null;
31679
+ _this.excludeRead = false;
31680
+ return _this;
31681
+ }
31682
+ UserEventFilter.prototype.fromObject = function (source, opts) {
31683
+ _super.prototype.fromObject.call(this, source, opts);
31684
+ this.types = source.types || [];
31685
+ this.levels = source.levels || [];
31686
+ this.issuers = source.issuers || [];
31687
+ this.recipients = source.recipients || [];
31688
+ this.startDate = fromDateISOString(source.startDate);
31689
+ this.excludeRead = source.excludeRead || false;
31690
+ };
31691
+ UserEventFilter.prototype.buildFilter = function () {
31692
+ var _this = this;
31693
+ var filterFns = _super.prototype.buildFilter.call(this);
31694
+ if (isNotEmptyArray(this.types)) {
31695
+ filterFns.push(function (t) { return _this.types.includes(t.type); });
31696
+ }
31697
+ if (isNotEmptyArray(this.levels)) {
31698
+ filterFns.push(function (t) { return _this.levels.includes(t.level); });
31699
+ }
31700
+ if (isNotEmptyArray(this.issuers)) {
31701
+ filterFns.push(function (t) { return _this.issuers.includes(t.issuer); });
31702
+ }
31703
+ if (isNotEmptyArray(this.recipients)) {
31704
+ filterFns.push(function (t) { return _this.recipients.includes(t.recipient); });
31705
+ }
31706
+ if (isNotNil(this.startDate)) {
31707
+ filterFns.push(function (t) { return _this.startDate.isSameOrBefore(t.creationDate); });
31708
+ }
31709
+ if (this.excludeRead === true) {
31710
+ filterFns.push(function (t) { return isNil(t.readSignature); }); // todo or t.signature ?
31711
+ }
31712
+ return filterFns;
31713
+ };
31714
+ UserEventFilter.prototype.asObject = function (opts) {
31715
+ var target = _super.prototype.asObject.call(this, opts);
31716
+ return target;
31717
+ };
31718
+ return UserEventFilter;
31719
+ }(EntityFilter));
31720
+ exports.UserEventFilter = __decorate([
31721
+ EntityClass({ typename: 'UserEventFilterVO' })
31722
+ ], exports.UserEventFilter);
31723
+
31724
+ var UserEventFragments = {
31725
+ userEvent: core.gql(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["fragment UserEventFragment on UserEventVO {\n id\n issuer\n updateDate\n creationDate\n eventType\n recipient\n content\n hash\n signature\n readSignature\n __typename\n }"], ["fragment UserEventFragment on UserEventVO {\n id\n issuer\n updateDate\n creationDate\n eventType\n recipient\n content\n hash\n signature\n readSignature\n __typename\n }"]))),
31726
+ lightUserEvent: core.gql(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject(["fragment LightUserEventFragment on UserEventVO {\n id\n issuer\n recipient\n updateDate\n creationDate\n eventType\n readSignature\n __typename\n }"], ["fragment LightUserEventFragment on UserEventVO {\n id\n issuer\n recipient\n updateDate\n creationDate\n eventType\n readSignature\n __typename\n }"])))
31727
+ };
31728
+ var templateObject_1$3, templateObject_2$2;
31729
+
32034
31730
  var Mutations = {
32035
- send: core.gql(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject(["mutation SendMessage($data: MessageVOInput){\n done: sendMessage(message: $data)\n }"], ["mutation SendMessage($data: MessageVOInput){\n done: sendMessage(message: $data)\n }"])))
31731
+ send: core.gql(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject(["mutation SendMessage($data: MessageVOInput){\n done: sendMessage(message: $data)\n }"], ["mutation SendMessage($data: MessageVOInput){\n done: sendMessage(message: $data)\n }"])))
32036
31732
  };
32037
31733
  var MessageService = /** @class */ (function (_super) {
32038
31734
  __extends(MessageService, _super);
@@ -32116,7 +31812,7 @@
32116
31812
  { type: i1$5.ToastController },
32117
31813
  { type: Environment, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [ENVIRONMENT,] }] }
32118
31814
  ]; };
32119
- var templateObject_1$5;
31815
+ var templateObject_1$4;
32120
31816
 
32121
31817
  var PersonFilter_1;
32122
31818
  // @dynamic
@@ -32175,15 +31871,15 @@
32175
31871
  ], exports.PersonFilter);
32176
31872
 
32177
31873
  var PersonFragments = {
32178
- person: core.gql(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject(["fragment PersonFragment on PersonVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n username\n usernameExtranet\n department {\n id\n label\n name\n logo\n __typename\n }\n __typename\n }"], ["fragment PersonFragment on PersonVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n username\n usernameExtranet\n department {\n id\n label\n name\n logo\n __typename\n }\n __typename\n }"])))
31874
+ person: core.gql(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject(["fragment PersonFragment on PersonVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n username\n usernameExtranet\n department {\n id\n label\n name\n logo\n __typename\n }\n __typename\n }"], ["fragment PersonFragment on PersonVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n username\n usernameExtranet\n department {\n id\n label\n name\n logo\n __typename\n }\n __typename\n }"])))
32179
31875
  };
32180
31876
  // Load persons query
32181
31877
  var PersonQueries = {
32182
- loadAll: core.gql(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject(["\n query Persons($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n }\n ", ""], ["\n query Persons($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n }\n ", ""])), PersonFragments.person),
32183
- loadAllWithTotal: core.gql(templateObject_3$3 || (templateObject_3$3 = __makeTemplateObject(["\n query PersonsWithTotal($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n total: personsCount(filter: $filter)\n }\n ", ""], ["\n query PersonsWithTotal($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n total: personsCount(filter: $filter)\n }\n ", ""])), PersonFragments.person)
31878
+ loadAll: core.gql(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject(["\n query Persons($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n }\n ", ""], ["\n query Persons($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n }\n ", ""])), PersonFragments.person),
31879
+ loadAllWithTotal: core.gql(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject(["\n query PersonsWithTotal($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n total: personsCount(filter: $filter)\n }\n ", ""], ["\n query PersonsWithTotal($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n total: personsCount(filter: $filter)\n }\n ", ""])), PersonFragments.person)
32184
31880
  };
32185
31881
  var PersonMutations = {
32186
- saveAll: core.gql(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject(["\n mutation savePersons($data:[PersonVOInput]){\n data: savePersons(persons: $data){\n ...PersonFragment\n }\n }\n ", ""], ["\n mutation savePersons($data:[PersonVOInput]){\n data: savePersons(persons: $data){\n ...PersonFragment\n }\n }\n ", ""])), PersonFragments.person),
31882
+ saveAll: core.gql(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject(["\n mutation savePersons($data:[PersonVOInput]){\n data: savePersons(persons: $data){\n ...PersonFragment\n }\n }\n ", ""], ["\n mutation savePersons($data:[PersonVOInput]){\n data: savePersons(persons: $data){\n ...PersonFragment\n }\n }\n ", ""])), PersonFragments.person),
32187
31883
  deleteAll: core.gql(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject(["\n mutation deletePersons($ids:[Int]){\n deletePersons(ids: $ids)\n }"], ["\n mutation deletePersons($ids:[Int]){\n deletePersons(ids: $ids)\n }"])))
32188
31884
  };
32189
31885
  var PersonService = /** @class */ (function (_super_1) {
@@ -32315,7 +32011,7 @@
32315
32011
  { type: NetworkService },
32316
32012
  { type: EntitiesStorage }
32317
32013
  ]; };
32318
- var templateObject_1$6, templateObject_2$4, templateObject_3$3, templateObject_4$3, templateObject_5$2;
32014
+ var templateObject_1$5, templateObject_2$3, templateObject_3$2, templateObject_4$2, templateObject_5$2;
32319
32015
 
32320
32016
  var PersonValidatorService = /** @class */ (function () {
32321
32017
  function PersonValidatorService(formBuilder, accountValidatorService) {
@@ -34212,6 +33908,7 @@
34212
33908
  exports.AppTable = AppTable;
34213
33909
  exports.AppTableDataSourceOptions = AppTableDataSourceOptions;
34214
33910
  exports.AppTableUtils = AppTableUtils;
33911
+ exports.AppUserEventNotificationIcon = AppUserEventNotificationIcon;
34215
33912
  exports.AppValidatorService = AppValidatorService;
34216
33913
  exports.AppendToInputDirective = AppendToInputDirective;
34217
33914
  exports.ArrayFilterPipe = ArrayFilterPipe;
@@ -34448,10 +34145,7 @@
34448
34145
  exports.UriUtils = UriUtils;
34449
34146
  exports.UserEventFragments = UserEventFragments;
34450
34147
  exports.UserEventModule = UserEventModule;
34451
- exports.UserEventNotificationComponent = UserEventNotificationComponent;
34452
- exports.UserEventService = UserEventService;
34453
34148
  exports.UserEventTypes = UserEventTypes;
34454
- exports.UserEventsTable = UserEventsTable;
34455
34149
  exports.UsersPage = UsersPage;
34456
34150
  exports.accountToString = accountToString;
34457
34151
  exports.adaptValueToControl = adaptValueToControl;
@@ -34615,13 +34309,12 @@
34615
34309
  exports.ɵh = LocalSettingsValidatorService;
34616
34310
  exports.ɵi = AppUpdateOfflineModeCard;
34617
34311
  exports.ɵj = UserEventNotificationList;
34618
- exports.ɵk = UserEventTestService;
34619
- exports.ɵl = JobProgressionList;
34620
- exports.ɵm = DateTestPage;
34621
- exports.ɵn = NumpadTestPage;
34622
- exports.ɵo = MatBadgeIconTestPage;
34623
- exports.ɵp = ToastTestingModule;
34624
- exports.ɵq = ToastTestingPage;
34312
+ exports.ɵk = JobProgressionList;
34313
+ exports.ɵl = DateTestPage;
34314
+ exports.ɵm = NumpadTestPage;
34315
+ exports.ɵn = MatBadgeIconTestPage;
34316
+ exports.ɵo = ToastTestingModule;
34317
+ exports.ɵp = ToastTestingPage;
34625
34318
 
34626
34319
  Object.defineProperty(exports, '__esModule', { value: true });
34627
34320