@bizdoc/core 3.3.3 → 3.3.4

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.
@@ -1983,7 +1983,7 @@ const STRINGS = {
1983
1983
  ShowAs: 'Show as: {0}',
1984
1984
  Unauthorized: 'Unauthorized access',
1985
1985
  NotAcceptable: 'Unauthorized access',
1986
- LicenseErr: 'License',
1986
+ LicenseErr: 'Limited license, contact support',
1987
1987
  RemoveAsk: 'Are you sure?',
1988
1988
  Comments: 'Comments',
1989
1989
  Remove: 'Remove',
@@ -8790,7 +8790,7 @@ class StatePipe {
8790
8790
  return state[args[0]] || state.title;
8791
8791
  return state.title;
8792
8792
  }
8793
- return `_${value}`;
8793
+ return value;
8794
8794
  }
8795
8795
  constructor(session) {
8796
8796
  this._map = new Map();
@@ -15985,6 +15985,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
15985
15985
  }]
15986
15986
  }], ctorParameters: () => [] });
15987
15987
 
15988
+ class RolePipe {
15989
+ transform(value, ...args) {
15990
+ const role = this.map.get(value);
15991
+ if (role) {
15992
+ if (args.length)
15993
+ return role[args[0]] || role.title;
15994
+ return role.title;
15995
+ }
15996
+ return value;
15997
+ }
15998
+ constructor(session) {
15999
+ this.map = new Map();
16000
+ session.profile.roles.forEach(a => this.map.set(a.name, a));
16001
+ }
16002
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, deps: [{ token: SessionService }], target: i0.ɵɵFactoryTarget.Pipe }); }
16003
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, isStandalone: false, name: "role" }); }
16004
+ }
16005
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, decorators: [{
16006
+ type: Pipe,
16007
+ args: [{
16008
+ standalone: false,
16009
+ name: 'role'
16010
+ }]
16011
+ }], ctorParameters: () => [{ type: SessionService }] });
16012
+
15988
16013
  /** component showing trace table */
15989
16014
  class TraceViewComponent extends TraceBase {
15990
16015
  constructor(session, _translate, _accounts, _chat, hub) {
@@ -16049,17 +16074,19 @@ class TraceViewComponent extends TraceBase {
16049
16074
  }
16050
16075
  const trace = [];
16051
16076
  for (let l of log) {
16052
- let action;
16077
+ let action, fileName;
16053
16078
  switch (l.type) {
16054
16079
  case 'ActionTaken':
16055
16080
  {
16056
16081
  action = this._session.profile.actions.find(a => a.name === l.action);
16057
- if (action.loggable === false)
16082
+ if (!action || action.loggable === false)
16058
16083
  continue;
16059
16084
  break;
16060
16085
  }
16061
16086
  case 'CheckIn':
16062
16087
  case 'CheckOut':
16088
+ let attachment = attachments.find(f => f.id === l.fileId);
16089
+ fileName = attachment.fileName;
16063
16090
  break;
16064
16091
  case 'ModelChange':
16065
16092
  break;
@@ -16075,17 +16102,12 @@ class TraceViewComponent extends TraceBase {
16075
16102
  time: l.time,
16076
16103
  type: l.type,
16077
16104
  duration: l.duration,
16105
+ fileName,
16106
+ role: l.role,
16078
16107
  note: l.note,
16079
16108
  state: l.state
16080
16109
  };
16081
16110
  trace.push(step);
16082
- switch (l.type) {
16083
- case 'CheckIn':
16084
- case 'CheckOut':
16085
- let attachment = attachments.find(f => f.id === l.fileId);
16086
- step.fileName = attachment.fileName;
16087
- break;
16088
- }
16089
16111
  if (l.recipientId) {
16090
16112
  let recipient = recipients.find(r => r.id === l.recipientId);
16091
16113
  if (recipient.role)
@@ -16184,14 +16206,21 @@ class TraceViewComponent extends TraceBase {
16184
16206
  if (by.role)
16185
16207
  step.role = by.role;
16186
16208
  }
16209
+ if (action)
16210
+ step.action = await actionBy(action, who.gender);
16187
16211
  }
16188
- else if (l.userId === this._session.userId)
16212
+ else if (l.userId === this._session.userId) {
16189
16213
  step.name = this._translate.get('You');
16214
+ if (action)
16215
+ step.action = await actionBy(action, this._session.gender);
16216
+ }
16190
16217
  else {
16191
16218
  let who = await profileOf(l.userId);
16192
16219
  step.name = nameOf(who);
16193
16220
  if (who.role)
16194
16221
  step.role = who.role;
16222
+ if (action)
16223
+ step.action = await actionBy(action, who.gender);
16195
16224
  }
16196
16225
  }
16197
16226
  for (let recipient of recipients) {
@@ -16274,7 +16303,9 @@ class TraceViewComponent extends TraceBase {
16274
16303
  _filter() {
16275
16304
  switch (this._showMode) {
16276
16305
  case 'active':
16277
- this.data = this.model.issued ? this._data.filter(l => l.time >= this.model.issued) : this._data.slice();
16306
+ this.data = this.model.issued ?
16307
+ this._data.filter(l => l.time >= this.model.issued) :
16308
+ this._data.slice();
16278
16309
  break;
16279
16310
  case 'route':
16280
16311
  this.data = this._data.filter(l => l.type === 'ActionTaken' || l.type === 'Estimate' || l.type === 'Pending');
@@ -16305,11 +16336,11 @@ class TraceViewComponent extends TraceBase {
16305
16336
  this.versionSelected.emit(log.time);
16306
16337
  }
16307
16338
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: TraceViewComponent, deps: [{ token: SessionService }, { token: TranslateService }, { token: AccountService }, { token: ChatInfo }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component }); }
16308
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: TraceViewComponent, isStandalone: false, selector: "bizdoc-trace", inputs: { model: "model", version: "version" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, ngImport: i0, template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showMode='route'\">\r\n <mat-icon>{{ showMode === 'route' ? 'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='active'\">\r\n <mat-icon>{{ showMode === 'active' ? 'check':'' }}</mat-icon>\r\n <span>{{'ActiveRoute' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='everything'\">\r\n <mat-icon>{{ showMode === 'everything' ? 'check':'' }}</mat-icon>\r\n <span>{{'Everything' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-mdc-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n @for(l of data; track l){\r\n <tr class=\"mat-mdc-row\" @item>\r\n <td class=\"mat-mdc-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n @if(l.role) {<span>{{'JoinComma'|translate}}{{l.role}}</span>}\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @switch (l.type) {\r\n @case('ActionTaken') {\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n }\r\n @case('Submit') {\r\n <span>{{'Issued' | translate}}</span>\r\n }\r\n @case('Pending') {\r\n <span>{{'IsPending' | translate}}</span>\r\n }\r\n @case('CheckOut') {\r\n <span>{{'CheckedIn' | translate : l.fileName}}</span>\r\n }\r\n @case('CheckIn') {\r\n <span>{{'CheckedOut' | translate : l.fileName}}</span>\r\n }\r\n @case('Estimate') {\r\n <span>{{'Estimate' | translate}}</span>\r\n }\r\n @case('ModelChange') {\r\n <span>{{'Changed' | translate}}</span>\r\n }\r\n }\r\n @if(l.fyi) {\r\n <span>&nbsp;{{'FYI'|translate}}</span>\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if(l.estimate) {\r\n @if(l.durationMax && l.durationMax === l.durationMin)\r\n {<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n }\r\n @if(l.durationMax && l.durationMax !== l.durationMin){<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>}\r\n }\r\n @else {\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n @if(l.duration) {<span [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>}\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if (l.note) {<span>{{l.note}}</span> }\r\n @if (l.type==='ModelChange') {<button mat-icon-button (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>}\r\n </td>\r\n </tr>}\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"], dependencies: [{ kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: DurationPipe, name: "amDuration" }, { kind: "pipe", type: DurationFormatPipe, name: "amDurationFormat" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }], animations: [listAnimation, itemAnimation] }); }
16339
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: TraceViewComponent, isStandalone: false, selector: "bizdoc-trace", inputs: { model: "model", version: "version" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, ngImport: i0, template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showMode='route'\">\r\n <mat-icon>{{ showMode === 'route' ? 'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='active'\">\r\n <mat-icon>{{ showMode === 'active' ? 'check':'' }}</mat-icon>\r\n <span>{{'ActiveRoute' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='everything'\">\r\n <mat-icon>{{ showMode === 'everything' ? 'check':'' }}</mat-icon>\r\n <span>{{'Everything' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-mdc-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n @for(l of data; track l){\r\n <tr class=\"mat-mdc-row\" @item>\r\n <td class=\"mat-mdc-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n @if(l.role) {<span>{{'JoinComma'|translate}}{{l.role | role}}</span>}\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @switch (l.type) {\r\n @case('ActionTaken') {\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n }\r\n @case('Submit') {\r\n <span>{{'Issued' | translate}}</span>\r\n }\r\n @case('Pending') {\r\n <span>{{'IsPending' | translate}}</span>\r\n }\r\n @case('CheckOut') {\r\n <span>{{'CheckedIn' | translate : l.fileName}}</span>\r\n }\r\n @case('CheckIn') {\r\n <span>{{'CheckedOut' | translate : l.fileName}}</span>\r\n }\r\n @case('Estimate') {\r\n <span>{{'Estimate' | translate}}</span>\r\n }\r\n @case('ModelChange') {\r\n <span>{{'Changed' | translate}}</span>\r\n }\r\n }\r\n @if(l.fyi) {\r\n <span>&nbsp;{{'FYI'|translate}}</span>\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if(l.estimate) {\r\n @if(l.durationMax && l.durationMax === l.durationMin)\r\n {<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n }\r\n @if(l.durationMax && l.durationMax !== l.durationMin){<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>}\r\n }\r\n @else {\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n @if(l.duration) {<span [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>}\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if (l.note) {<span>{{l.note}}</span> }\r\n @if (l.type==='ModelChange') {<button mat-icon-button (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>}\r\n </td>\r\n </tr>}\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"], dependencies: [{ kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: DurationPipe, name: "amDuration" }, { kind: "pipe", type: DurationFormatPipe, name: "amDurationFormat" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: RolePipe, name: "role" }], animations: [listAnimation, itemAnimation] }); }
16309
16340
  }
16310
16341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: TraceViewComponent, decorators: [{
16311
16342
  type: Component,
16312
- args: [{ standalone: false, selector: 'bizdoc-trace', animations: [listAnimation, itemAnimation], template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showMode='route'\">\r\n <mat-icon>{{ showMode === 'route' ? 'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='active'\">\r\n <mat-icon>{{ showMode === 'active' ? 'check':'' }}</mat-icon>\r\n <span>{{'ActiveRoute' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='everything'\">\r\n <mat-icon>{{ showMode === 'everything' ? 'check':'' }}</mat-icon>\r\n <span>{{'Everything' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-mdc-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n @for(l of data; track l){\r\n <tr class=\"mat-mdc-row\" @item>\r\n <td class=\"mat-mdc-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n @if(l.role) {<span>{{'JoinComma'|translate}}{{l.role}}</span>}\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @switch (l.type) {\r\n @case('ActionTaken') {\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n }\r\n @case('Submit') {\r\n <span>{{'Issued' | translate}}</span>\r\n }\r\n @case('Pending') {\r\n <span>{{'IsPending' | translate}}</span>\r\n }\r\n @case('CheckOut') {\r\n <span>{{'CheckedIn' | translate : l.fileName}}</span>\r\n }\r\n @case('CheckIn') {\r\n <span>{{'CheckedOut' | translate : l.fileName}}</span>\r\n }\r\n @case('Estimate') {\r\n <span>{{'Estimate' | translate}}</span>\r\n }\r\n @case('ModelChange') {\r\n <span>{{'Changed' | translate}}</span>\r\n }\r\n }\r\n @if(l.fyi) {\r\n <span>&nbsp;{{'FYI'|translate}}</span>\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if(l.estimate) {\r\n @if(l.durationMax && l.durationMax === l.durationMin)\r\n {<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n }\r\n @if(l.durationMax && l.durationMax !== l.durationMin){<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>}\r\n }\r\n @else {\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n @if(l.duration) {<span [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>}\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if (l.note) {<span>{{l.note}}</span> }\r\n @if (l.type==='ModelChange') {<button mat-icon-button (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>}\r\n </td>\r\n </tr>}\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"] }]
16343
+ args: [{ standalone: false, selector: 'bizdoc-trace', animations: [listAnimation, itemAnimation], template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showMode='route'\">\r\n <mat-icon>{{ showMode === 'route' ? 'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='active'\">\r\n <mat-icon>{{ showMode === 'active' ? 'check':'' }}</mat-icon>\r\n <span>{{'ActiveRoute' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='everything'\">\r\n <mat-icon>{{ showMode === 'everything' ? 'check':'' }}</mat-icon>\r\n <span>{{'Everything' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-mdc-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n @for(l of data; track l){\r\n <tr class=\"mat-mdc-row\" @item>\r\n <td class=\"mat-mdc-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n @if(l.role) {<span>{{'JoinComma'|translate}}{{l.role | role}}</span>}\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @switch (l.type) {\r\n @case('ActionTaken') {\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n }\r\n @case('Submit') {\r\n <span>{{'Issued' | translate}}</span>\r\n }\r\n @case('Pending') {\r\n <span>{{'IsPending' | translate}}</span>\r\n }\r\n @case('CheckOut') {\r\n <span>{{'CheckedIn' | translate : l.fileName}}</span>\r\n }\r\n @case('CheckIn') {\r\n <span>{{'CheckedOut' | translate : l.fileName}}</span>\r\n }\r\n @case('Estimate') {\r\n <span>{{'Estimate' | translate}}</span>\r\n }\r\n @case('ModelChange') {\r\n <span>{{'Changed' | translate}}</span>\r\n }\r\n }\r\n @if(l.fyi) {\r\n <span>&nbsp;{{'FYI'|translate}}</span>\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if(l.estimate) {\r\n @if(l.durationMax && l.durationMax === l.durationMin)\r\n {<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n }\r\n @if(l.durationMax && l.durationMax !== l.durationMin){<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>}\r\n }\r\n @else {\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n @if(l.duration) {<span [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>}\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if (l.note) {<span>{{l.note}}</span> }\r\n @if (l.type==='ModelChange') {<button mat-icon-button (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>}\r\n </td>\r\n </tr>}\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"] }]
16313
16344
  }], ctorParameters: () => [{ type: SessionService }, { type: TranslateService }, { type: AccountService }, { type: ChatInfo }, { type: HubService }], propDecorators: { model: [{
16314
16345
  type: Input
16315
16346
  }], version: [{
@@ -26587,7 +26618,7 @@ class ActionPipe {
26587
26618
  return action[args[0]] || (args[1] !== false ? action.title : null);
26588
26619
  return action.title;
26589
26620
  }
26590
- return `_${value}`;
26621
+ return value;
26591
26622
  }
26592
26623
  constructor(session) {
26593
26624
  this.map = new Map();
@@ -27780,31 +27811,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
27780
27811
  type: Output
27781
27812
  }] } });
27782
27813
 
27783
- class RolePipe {
27784
- transform(value, ...args) {
27785
- const role = this.map.get(value);
27786
- if (role) {
27787
- if (args.length)
27788
- return role[args[0]] || role.title;
27789
- return role.title;
27790
- }
27791
- return `_${value}`;
27792
- }
27793
- constructor(session) {
27794
- this.map = new Map();
27795
- session.profile.roles.forEach(a => this.map.set(a.name, a));
27796
- }
27797
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, deps: [{ token: SessionService }], target: i0.ɵɵFactoryTarget.Pipe }); }
27798
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, isStandalone: false, name: "role" }); }
27799
- }
27800
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, decorators: [{
27801
- type: Pipe,
27802
- args: [{
27803
- standalone: false,
27804
- name: 'role'
27805
- }]
27806
- }], ctorParameters: () => [{ type: SessionService }] });
27807
-
27808
27814
  class JoinPipe {
27809
27815
  transform(value, ...args) {
27810
27816
  return this._translate.join(value);