@bizdoc/core 1.13.0-next.1 → 1.13.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/bizdoc-schema.json +1 -14
- package/esm2020/lib/admin/diff/configuration-diff.component.mjs +5 -2
- package/esm2020/lib/admin/document-trace/trace-element.component.mjs +22 -26
- package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -2
- package/esm2020/lib/app.component.mjs +1 -1
- package/esm2020/lib/browse/browse-items.component.mjs +4 -4
- package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +65 -51
- package/esm2020/lib/compose/form.component.mjs +2 -2
- package/esm2020/lib/compose/trace/flow.component.mjs +136 -145
- package/esm2020/lib/compose/trace/trace.component.mjs +24 -32
- package/esm2020/lib/core/hub.service.mjs +1 -1
- package/esm2020/lib/core/mailbox.service.mjs +31 -6
- package/esm2020/lib/core/models.mjs +1 -1
- package/esm2020/lib/core/slots/slots.component.mjs +3 -3
- package/esm2020/lib/core/translations.mjs +10 -3
- package/esm2020/lib/cube/cube.service.mjs +3 -3
- package/esm2020/lib/cube/explore/explore-items.component.mjs +3 -2
- package/esm2020/lib/cube/explore/explore.pane.component.mjs +3 -1
- package/esm2020/lib/cube/matrix/table.component.mjs +17 -17
- package/esm2020/lib/home/home-base.component.mjs +2 -2
- package/esm2020/lib/shared.module.mjs +17 -2
- package/fesm2015/bizdoc-core.mjs +330 -283
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +326 -281
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/diff/configuration-diff.component.d.ts +1 -0
- package/lib/admin/document-trace/trace-element.component.d.ts +1 -1
- package/lib/app.component.d.ts +2 -2
- package/lib/browse/expanded-item/expanded-item.component.d.ts +6 -6
- package/lib/core/hub.service.d.ts +1 -0
- package/lib/core/mailbox.service.d.ts +4 -1
- package/lib/core/models.d.ts +7 -0
- package/lib/core/translations.d.ts +8 -1
- package/lib/cube/cube.service.d.ts +1 -1
- package/lib/cube/explore/explore-items.component.d.ts +1 -0
- package/package.json +10 -10
package/fesm2015/bizdoc-core.mjs
CHANGED
@@ -128,7 +128,7 @@ import { Spreadsheet, isNumber, SpreadsheetModule, SelectionService as Selection
|
|
128
128
|
import * as i4$1 from '@ctrl/ngx-emoji-mart';
|
129
129
|
import { PickerModule } from '@ctrl/ngx-emoji-mart';
|
130
130
|
import * as i11$1 from '@syncfusion/ej2-angular-diagrams';
|
131
|
-
import { Diagram, UndoRedo, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node, SymbolPaletteComponent, ComplexHierarchicalTree, BpmnDiagrams, DataBinding, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, ToolBase } from '@syncfusion/ej2-angular-diagrams';
|
131
|
+
import { Diagram, UndoRedo, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node, SymbolPaletteComponent, ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, ToolBase } from '@syncfusion/ej2-angular-diagrams';
|
132
132
|
import * as i9$2 from '@syncfusion/ej2-angular-schedule';
|
133
133
|
import { Schedule, Day, WorkWeek, Month, MonthAgenda, Agenda, Year, ScheduleModule, ExcelExportService as ExcelExportService$2, DayService, WorkWeekService, MonthService, MonthAgendaService, ICalendarExportService, AgendaService, YearService } from '@syncfusion/ej2-angular-schedule';
|
134
134
|
import * as i10$2 from '@syncfusion/ej2-angular-kanban';
|
@@ -1247,6 +1247,8 @@ class MailboxService {
|
|
1247
1247
|
};
|
1248
1248
|
messaging.new$.
|
1249
1249
|
subscribe(m => {
|
1250
|
+
if (m.userId !== _session.profile.userId)
|
1251
|
+
return;
|
1250
1252
|
_session.profile.inboxCount++;
|
1251
1253
|
const folder = _session.profile.folders.find(f => f.name === m.model.folderId);
|
1252
1254
|
folder.count++;
|
@@ -1564,20 +1566,43 @@ function isHttpProgressEvent(event) {
|
|
1564
1566
|
}
|
1565
1567
|
function calculateState(upload, event) {
|
1566
1568
|
if (isHttpProgressEvent(event)) {
|
1567
|
-
return {
|
1569
|
+
return new UploadEvent({
|
1568
1570
|
progress: event.total
|
1569
1571
|
? Math.round((100 * event.loaded) / event.total)
|
1570
1572
|
: upload.progress,
|
1571
1573
|
state: 'progress',
|
1572
|
-
};
|
1574
|
+
});
|
1573
1575
|
}
|
1574
1576
|
if (isHttpResponse(event)) {
|
1575
|
-
return {
|
1577
|
+
return new UploadEvent({
|
1576
1578
|
progress: 100,
|
1577
1579
|
state: 'done',
|
1578
|
-
};
|
1580
|
+
});
|
1579
1581
|
}
|
1580
1582
|
return upload;
|
1583
|
+
}
|
1584
|
+
class UploadEvent {
|
1585
|
+
constructor(options) { }
|
1586
|
+
}
|
1587
|
+
function reportprogress(filename) {
|
1588
|
+
return (source) => source.pipe(map(r => {
|
1589
|
+
//if (event instanceof ProgressEvent) {
|
1590
|
+
// observe.next(new UploadEvent(
|
1591
|
+
// file.name,
|
1592
|
+
// (event as ProgressEvent).loaded,
|
1593
|
+
// (event as ProgressEvent).total
|
1594
|
+
// ));
|
1595
|
+
//} else if (event instanceof HttpResponse) {
|
1596
|
+
// const res = event as HttpResponse<any>;
|
1597
|
+
// if (res.status === 200) {
|
1598
|
+
// const model = res.body as Attachment;
|
1599
|
+
// observe.next(model);
|
1600
|
+
// }
|
1601
|
+
// else
|
1602
|
+
// observe.error({ status: res.status, error: res.body });
|
1603
|
+
// observe.complete();
|
1604
|
+
return r;
|
1605
|
+
}));
|
1581
1606
|
}
|
1582
1607
|
|
1583
1608
|
class ActionRef {
|
@@ -1928,7 +1953,7 @@ const STRINGS = {
|
|
1928
1953
|
NoEstimate: '(No estimate)',
|
1929
1954
|
EstimateTime: '(Estimated time {0})',
|
1930
1955
|
NodeStandardTime: '(Standard time: {0})',
|
1931
|
-
EstimateTimeRange: '(Estimated time {0}
|
1956
|
+
EstimateTimeRange: '(Estimated time between {0} and {1})',
|
1932
1957
|
Connect: 'Connect',
|
1933
1958
|
Requirments: 'Requirments',
|
1934
1959
|
Anyone: 'Anyone',
|
@@ -2077,6 +2102,9 @@ const STRINGS = {
|
|
2077
2102
|
YouRepliedTo: 'You replied {0}',
|
2078
2103
|
ReplyingToYou: '{0} in reply to you',
|
2079
2104
|
ByYou: '{0} by you',
|
2105
|
+
ActionBy: '{0} by {1}',
|
2106
|
+
ActionByBy: '{0} by {1} on behalf of {2}',
|
2107
|
+
ActionByYou: '{0} by you',
|
2080
2108
|
Received: 'Received',
|
2081
2109
|
ChangeLanguage: 'Language',
|
2082
2110
|
NewMail: 'New {0} #{1} {2}',
|
@@ -2348,6 +2376,7 @@ const STRINGS = {
|
|
2348
2376
|
Votes: 'Votes',
|
2349
2377
|
Tasks: 'Tasks',
|
2350
2378
|
System: 'System',
|
2379
|
+
Everything: 'Everything',
|
2351
2380
|
NothingHere: 'Nothing to see here',
|
2352
2381
|
Matrix: 'Matrix',
|
2353
2382
|
Working: 'Working on it...'
|
@@ -2384,7 +2413,7 @@ const STRINGS = {
|
|
2384
2413
|
Skipped: '- דולג',
|
2385
2414
|
Route: 'חותמים',
|
2386
2415
|
Trace: 'הסטוריה',
|
2387
|
-
|
2416
|
+
Everything: 'הסטוריה',
|
2388
2417
|
ProfilerSearchHelp: 'הקלד/י שם משתמש ובחר/י מהרשימה כדי לסקור פעולותיו.',
|
2389
2418
|
TraceSearchHelp: 'הקלד/י מספר מסמך ובחר/י כדי לעקוב אחרי תנועותיו.',
|
2390
2419
|
DiagramVersion: 'גרסה {0}',
|
@@ -2745,6 +2774,9 @@ const STRINGS = {
|
|
2745
2774
|
YouRepliedTo: '{0}השבת ל',
|
2746
2775
|
ReplyingToYou: '{0} השיב לך',
|
2747
2776
|
ByYou: '{0} דרכך',
|
2777
|
+
ActionByYou: '{0} דרכך',
|
2778
|
+
ActionByBy: '{0} דרך {1} בשם {2}',
|
2779
|
+
ActionBy: '{0} דרך {1}',
|
2748
2780
|
EscalatedTo: 'החרפה אל {0} אחרי <em>{1}</em>',
|
2749
2781
|
EscalatedFrom: 'החרפה מ-{0} אחרי <em>{1}</em>',
|
2750
2782
|
EscalatedBy: '{0} הועבר אל {1}',
|
@@ -5705,8 +5737,8 @@ class CubeService {
|
|
5705
5737
|
* get segments
|
5706
5738
|
* @param cube
|
5707
5739
|
*/
|
5708
|
-
segments(cube,
|
5709
|
-
return this._cacheOr(`${
|
5740
|
+
segments(cube, name) {
|
5741
|
+
return this._cacheOr(`${name}-segments`, () => this._http.get(`/api/cube/segments/${cube}/${name}`));
|
5710
5742
|
}
|
5711
5743
|
/**
|
5712
5744
|
* get user patterns
|
@@ -6917,15 +6949,15 @@ function getSecondsUntilUpdate(time) {
|
|
6917
6949
|
|
6918
6950
|
const REFRESH_TIME = 30000, TYPING_HINT_TIME = 1500;
|
6919
6951
|
class ExpandedItemComponent {
|
6920
|
-
constructor(_sb, _chat, _accounts,
|
6952
|
+
constructor(_sb, _chat, _accounts, _mailbox, _session, _dir, _dialog, _translate, _messaging) {
|
6921
6953
|
this._sb = _sb;
|
6922
6954
|
this._chat = _chat;
|
6923
6955
|
this._accounts = _accounts;
|
6924
|
-
this._dir = _dir;
|
6925
|
-
this._translate = _translate;
|
6926
6956
|
this._mailbox = _mailbox;
|
6927
|
-
this._dialog = _dialog;
|
6928
6957
|
this._session = _session;
|
6958
|
+
this._dir = _dir;
|
6959
|
+
this._dialog = _dialog;
|
6960
|
+
this._translate = _translate;
|
6929
6961
|
this._messaging = _messaging;
|
6930
6962
|
this.sent = new EventEmitter();
|
6931
6963
|
this._destroy = new Subject();
|
@@ -6933,22 +6965,22 @@ class ExpandedItemComponent {
|
|
6933
6965
|
ngOnInit() {
|
6934
6966
|
this._messaging.comment$.pipe(takeUntil(this._destroy)).
|
6935
6967
|
subscribe(e => {
|
6936
|
-
if (e.id === this.
|
6968
|
+
if (e.id === this.model.id && (e.model.byId || e.model.userId) !== this._session.userId) {
|
6937
6969
|
this._comments();
|
6938
6970
|
this._accounts.get(e.model.userId).subscribe(u => this._sb.toast('Commented', u.gender, u.name));
|
6939
6971
|
}
|
6940
6972
|
});
|
6941
6973
|
this._messaging.update$.pipe(takeUntil(this._destroy)).subscribe(e => {
|
6942
|
-
if (e.model.id === this.
|
6974
|
+
if (e.model.id === this.model.id) {
|
6943
6975
|
this._refresh();
|
6944
|
-
(e.userId !== this._session.userId) && this._accounts.get(e.userId).subscribe(u => this._sb.toast('MailVersionUpdate', this.
|
6976
|
+
(e.userId !== this._session.userId) && this._accounts.get(e.userId).subscribe(u => this._sb.toast('MailVersionUpdate', this.model.number, u.name));
|
6945
6977
|
}
|
6946
6978
|
});
|
6947
6979
|
this._mailbox.changed.pipe(takeUntil(this._destroy)).subscribe(e => {
|
6948
|
-
if (e.id === this.
|
6980
|
+
if (e.id === this.model.id)
|
6949
6981
|
this._refresh();
|
6950
6982
|
});
|
6951
|
-
this._messaging.commentTyping$.pipe(takeUntil(this._destroy), filter$1(e => e.id === this.
|
6983
|
+
this._messaging.commentTyping$.pipe(takeUntil(this._destroy), filter$1(e => e.id === this.model.documentId)).subscribe(c => {
|
6952
6984
|
this.typing = true;
|
6953
6985
|
clearTimeout(this._typingTask);
|
6954
6986
|
this._typingTask = setTimeout(() => this.typing = false, TYPING_HINT_TIME);
|
@@ -6958,40 +6990,37 @@ class ExpandedItemComponent {
|
|
6958
6990
|
}
|
6959
6991
|
_note() {
|
6960
6992
|
return __awaiter(this, void 0, void 0, function* () {
|
6961
|
-
const { ownerId, issued, substitutingId, received, replied, log, id, note, byId, action, toId } = this.
|
6993
|
+
const { ownerId, issued, substitutingId, received, replied, log, id, note, byId, action, toId, escalated, originId } = this.model;
|
6962
6994
|
if (substitutingId) {
|
6963
|
-
this._accounts.get(substitutingId).
|
6964
|
-
|
6965
|
-
|
6966
|
-
|
6967
|
-
|
6968
|
-
|
6969
|
-
this.note = this._translate.personalize('YouSubstituteActionTaken', u.gender, adjective, this._formatUserElement(u), time);
|
6970
|
-
}
|
6971
|
-
else {
|
6972
|
-
const escalations = issued &&
|
6973
|
-
log.filter(l => l.time > issued &&
|
6974
|
-
l.type === 'Escalation'
|
6975
|
-
&& l.recipientId === id);
|
6976
|
-
if (escalations && escalations.length) {
|
6977
|
-
const duration = dayjs(escalations[0].time).diff(received, 's');
|
6978
|
-
this.note = this._translate.personalize('EscalatedFrom', u.gender, this._formatUserElement(u), this._duration(duration));
|
6979
|
-
}
|
6980
|
-
else {
|
6981
|
-
const time = this._fromNow(received);
|
6982
|
-
this.note = this._translate.personalize('SubstitutingNote', u.gender, this._formatUserElement(u), time, note || '');
|
6983
|
-
}
|
6995
|
+
const substituting = yield this._accounts.get(substitutingId).toPromise();
|
6996
|
+
if (replied) {
|
6997
|
+
const time = this._fromNow(replied), action = this._session.profile.actions.find(a => a.name === action), adjective = (action.adjective || action.title).toLowerCase();
|
6998
|
+
if (toId) {
|
6999
|
+
const to = yield this._accounts.get(toId).toPromise();
|
7000
|
+
this.note = this._translate.personalize('YouSubstituteActionTakenTo', substituting.gender, adjective, this._formatUserElement(to), this._formatUserElement(substituting), time);
|
6984
7001
|
}
|
6985
|
-
|
7002
|
+
else
|
7003
|
+
this.note = this._translate.personalize('YouSubstituteActionTaken', substituting.gender, adjective, this._formatUserElement(substituting), time);
|
7004
|
+
}
|
7005
|
+
else if (escalated) {
|
7006
|
+
const escalations = log.filter(l => l.time > issued &&
|
7007
|
+
l.type === 'Escalation'
|
7008
|
+
&& l.recipientId === id);
|
7009
|
+
this.note = this._translate.personalize('EscalatedFrom', substituting.gender, this._formatUserElement(substituting), this._duration(escalations[0].duration));
|
7010
|
+
}
|
7011
|
+
else {
|
7012
|
+
const time = this._fromNow(received);
|
7013
|
+
this.note = this._translate.personalize('SubstitutingNote', substituting.gender, this._formatUserElement(substituting), time, note || '');
|
7014
|
+
}
|
6986
7015
|
}
|
6987
7016
|
else if (replied) {
|
6988
7017
|
const time = this._fromNow(replied);
|
6989
7018
|
if (byId) {
|
6990
7019
|
if (byId === this._session.profile.byId) {
|
6991
7020
|
if (toId)
|
6992
|
-
this._accounts.get(toId).subscribe(u => this.note = this._translate.get('
|
7021
|
+
this._accounts.get(toId).subscribe(u => this.note = this._translate.get('ActionTakenByYouTo', this._actionName(action, 'you'), this._formatUserElement(u), this._session.profile.name, time));
|
6993
7022
|
else
|
6994
|
-
this.note = this._translate.get('
|
7023
|
+
this.note = this._translate.get('ActionTakenByYou', this._actionName(action, 'you'), this._session.profile.name, time);
|
6995
7024
|
}
|
6996
7025
|
else
|
6997
7026
|
this._accounts.get(byId).subscribe(u => {
|
@@ -7016,6 +7045,23 @@ class ExpandedItemComponent {
|
|
7016
7045
|
}
|
7017
7046
|
else if (note)
|
7018
7047
|
this.note = note;
|
7048
|
+
else if (originId) {
|
7049
|
+
const origin = this.model.recipients.find(r => r.id === originId);
|
7050
|
+
if (origin.toId) {
|
7051
|
+
const action = this._session.profile.actions.find(a => a.name === origin.action), adjective = action.adjective || action.past || action.title;
|
7052
|
+
if ((origin.byId || origin.userId) === this._session.userId)
|
7053
|
+
this.note = this._translate.get('ActionByYou', adjective);
|
7054
|
+
else if (origin.byId) {
|
7055
|
+
const who = yield this._accounts.get(origin.userId).toPromise();
|
7056
|
+
const by = yield this._accounts.get(origin.byId).toPromise();
|
7057
|
+
this.note = this._translate.get('ActionByBy', adjective, by.name, who.name);
|
7058
|
+
}
|
7059
|
+
else {
|
7060
|
+
const who = yield this._accounts.get(origin.userId).toPromise();
|
7061
|
+
this.note = this._translate.get('ActionBy', adjective, who.name);
|
7062
|
+
}
|
7063
|
+
}
|
7064
|
+
}
|
7019
7065
|
else if (ownerId === this._session.profile.userId && issued) {
|
7020
7066
|
const time = this._fromNow(issued);
|
7021
7067
|
if (byId) {
|
@@ -7058,9 +7104,9 @@ class ExpandedItemComponent {
|
|
7058
7104
|
/** */
|
7059
7105
|
_refresh() {
|
7060
7106
|
return __awaiter(this, void 0, void 0, function* () {
|
7061
|
-
const { actions } = this.
|
7107
|
+
const { actions } = this.model;
|
7062
7108
|
this.actions = actions && actions.length ? this._session.profile.actions.filter(a => actions.indexOf(a.name) > -1) : null;
|
7063
|
-
const { senderId } = this.
|
7109
|
+
const { senderId } = this.model;
|
7064
7110
|
// sender
|
7065
7111
|
if (senderId && (senderId !== this._session.userId)) {
|
7066
7112
|
const who = yield this._accounts.get(senderId).toPromise();
|
@@ -7072,14 +7118,14 @@ class ExpandedItemComponent {
|
|
7072
7118
|
});
|
7073
7119
|
}
|
7074
7120
|
_comments() {
|
7075
|
-
const { viewed, comments } = this.
|
7121
|
+
const { viewed, comments } = this.model;
|
7076
7122
|
this.newComments = viewed ?
|
7077
7123
|
comments.filter(c => c.time > viewed && (c.byId || c.userId) !== this._session.userId).length || null : null;
|
7078
7124
|
}
|
7079
7125
|
_awaiting() {
|
7080
7126
|
return __awaiter(this, void 0, void 0, function* () {
|
7081
7127
|
//awaiting
|
7082
|
-
let recipients = this.
|
7128
|
+
let recipients = this.model.recipients.filter(r => r.pending && !r.estimate).
|
7083
7129
|
sort((r0, r1) => r0.received > r1.received ? 1 : -1).
|
7084
7130
|
map(r => r.userId);
|
7085
7131
|
recipients = recipients.filter((r, i) => recipients.indexOf(r) === i); /* unique */
|
@@ -7111,10 +7157,10 @@ class ExpandedItemComponent {
|
|
7111
7157
|
* @param action
|
7112
7158
|
*/
|
7113
7159
|
send(action) {
|
7114
|
-
const { id, number, version, formId } = this.
|
7160
|
+
const { id, number, version, formId } = this.model;
|
7115
7161
|
const data = {
|
7116
7162
|
action,
|
7117
|
-
item: this.
|
7163
|
+
item: this.model
|
7118
7164
|
};
|
7119
7165
|
this._dialog.open(ActionDialog, {
|
7120
7166
|
data,
|
@@ -7128,10 +7174,10 @@ class ExpandedItemComponent {
|
|
7128
7174
|
this._accounts.get(r.toId).subscribe(u => this._sb.toast('SentTo', number, adjective.toLowerCase(), u.name));
|
7129
7175
|
else
|
7130
7176
|
this._sb.toast('Sent', number, adjective.toLowerCase());
|
7131
|
-
this.sent.emit(this.
|
7177
|
+
this.sent.emit(this.model);
|
7132
7178
|
this.mode = 'done';
|
7133
7179
|
}, e => {
|
7134
|
-
this._handleResponse(e, this.
|
7180
|
+
this._handleResponse(e, this.model, 'SendErr');
|
7135
7181
|
this.mode = 'failed';
|
7136
7182
|
});
|
7137
7183
|
}
|
@@ -7175,12 +7221,12 @@ class ExpandedItemComponent {
|
|
7175
7221
|
this._typingTask && clearTimeout(this._typingTask);
|
7176
7222
|
}
|
7177
7223
|
}
|
7178
|
-
ExpandedItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ExpandedItemComponent, deps: [{ token: PromptService }, { token: ChatInfo }, { token: AccountService }, { token:
|
7179
|
-
ExpandedItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: {
|
7224
|
+
ExpandedItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ExpandedItemComponent, deps: [{ token: PromptService }, { token: ChatInfo }, { token: AccountService }, { token: MailboxService }, { token: SessionService }, { token: i7$2.Directionality }, { token: i3$2.MatDialog }, { token: TranslateService }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
|
7225
|
+
ExpandedItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { model: "model" }, outputs: { sent: "sent" }, ngImport: i0, template: "<div class=\"summary\" *ngIf=\"model.summary\" [innerHTML]=\"model.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small\" fxLayout=\"row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n \r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n \r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span> \r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div fxLayoutAlign=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"model.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"model.tags\">\r\n <span *ngFor=\"let tag of model.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"], components: [{ type: AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { type: DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i6$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }], pipes: { "sanitizeHtml": SanitizeHtmlPipe, "state": StatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "translate": TranslatePipe } });
|
7180
7226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ExpandedItemComponent, decorators: [{
|
7181
7227
|
type: Component,
|
7182
|
-
args: [{ selector: 'bizdoc-expanded-item', template: "<div class=\"summary\" *ngIf=\"
|
7183
|
-
}], ctorParameters: function () { return [{ type: PromptService }, { type: ChatInfo }, { type: AccountService }, { type:
|
7228
|
+
args: [{ selector: 'bizdoc-expanded-item', template: "<div class=\"summary\" *ngIf=\"model.summary\" [innerHTML]=\"model.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small\" fxLayout=\"row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n \r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n \r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span> \r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div fxLayoutAlign=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"model.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"model.tags\">\r\n <span *ngFor=\"let tag of model.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"] }]
|
7229
|
+
}], ctorParameters: function () { return [{ type: PromptService }, { type: ChatInfo }, { type: AccountService }, { type: MailboxService }, { type: SessionService }, { type: i7$2.Directionality }, { type: i3$2.MatDialog }, { type: TranslateService }, { type: HubService }]; }, propDecorators: { model: [{
|
7184
7230
|
type: Input
|
7185
7231
|
}], sent: [{
|
7186
7232
|
type: Output
|
@@ -7280,7 +7326,7 @@ class BrowseItemsComponent {
|
|
7280
7326
|
this._remove(item);
|
7281
7327
|
});
|
7282
7328
|
this._messaging.new$.pipe(takeUntil(this._destroy)).subscribe(m => {
|
7283
|
-
if (!this.dataSource)
|
7329
|
+
if (!this.dataSource || m.userId !== this._session.profile.userId)
|
7284
7330
|
return;
|
7285
7331
|
const item = this.dataSource.data.find(c => c.id === m.model.id);
|
7286
7332
|
if (!item && this.folderId === m.model.folderId) {
|
@@ -7613,7 +7659,7 @@ class BrowseItemsComponent {
|
|
7613
7659
|
}
|
7614
7660
|
}
|
7615
7661
|
BrowseItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowseItemsComponent, deps: [{ token: MailboxService }, { token: AccountService }, { token: CubeService }, { token: SessionService }, { token: PromptService }, { token: TranslateService }, { token: i0.ChangeDetectorRef }, { token: RouterImpl }, { token: HubService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
7616
|
-
BrowseItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onview: "view" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [item]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], components: [{ type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["item"], outputs: ["sent"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i18.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i22.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i25.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i22.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i22.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { type: i22.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i8$2.MatMenuContent, selector: "ng-template[matMenuContent]" }], pipes: { "translate": TranslatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "number": i10.DecimalPipe, "currency": i10.CurrencyPipe }, animations: [
|
7662
|
+
BrowseItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onview: "view" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [model]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], components: [{ type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["model"], outputs: ["sent"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i18.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i22.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i25.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i22.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i22.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { type: i22.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i8$2.MatMenuContent, selector: "ng-template[matMenuContent]" }], pipes: { "translate": TranslatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "number": i10.DecimalPipe, "currency": i10.CurrencyPipe }, animations: [
|
7617
7663
|
listAnimation,
|
7618
7664
|
itemAnimation,
|
7619
7665
|
expandListItemAnimation,
|
@@ -7626,7 +7672,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
7626
7672
|
itemAnimation,
|
7627
7673
|
expandListItemAnimation,
|
7628
7674
|
listItemUpdatedAnimation
|
7629
|
-
], template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [item]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"] }]
|
7675
|
+
], template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [model]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"] }]
|
7630
7676
|
}], ctorParameters: function () {
|
7631
7677
|
return [{ type: MailboxService }, { type: AccountService }, { type: CubeService }, { type: SessionService }, { type: PromptService }, { type: TranslateService }, { type: i0.ChangeDetectorRef }, { type: RouterImpl }, { type: HubService }, { type: undefined, decorators: [{
|
7632
7678
|
type: Inject,
|
@@ -8493,7 +8539,7 @@ class ComposeFormComponent {
|
|
8493
8539
|
return this._mailbox.send(id, version, formId, model, action, params).
|
8494
8540
|
subscribe(r => {
|
8495
8541
|
if (r.toId)
|
8496
|
-
this._accounts.get(r.toId).subscribe(u => this._sb.toast('
|
8542
|
+
this._accounts.get(r.toId).subscribe(u => this._sb.toast('SentTo', number, this._getActionAdjective(action), u.name));
|
8497
8543
|
else
|
8498
8544
|
this._sb.toast('Sent', number, this._getActionAdjective(action));
|
8499
8545
|
this.working = false;
|
@@ -11976,6 +12022,7 @@ class ExploreItemsComponent {
|
|
11976
12022
|
});
|
11977
12023
|
}
|
11978
12024
|
_datasource(data) {
|
12025
|
+
this._data = data;
|
11979
12026
|
this.dataSource = new MatTableDataSource(data);
|
11980
12027
|
this.dataSource.sort = this.sort;
|
11981
12028
|
this.dataSource.paginator = this.paginator;
|
@@ -12000,7 +12047,7 @@ class ExploreItemsComponent {
|
|
12000
12047
|
}
|
12001
12048
|
}))
|
12002
12049
|
}];
|
12003
|
-
this.
|
12050
|
+
this._data.forEach((r, i) => rows.push({
|
12004
12051
|
index: i + 2,
|
12005
12052
|
cells: this.columns.map((c, j) => {
|
12006
12053
|
const isnumber = c.type === 'Currency' || c.type === 'Number';
|
@@ -12105,6 +12152,7 @@ class CubeExplorePaneComponent {
|
|
12105
12152
|
relativeTo: this._pane,
|
12106
12153
|
queryParams: this.axes,
|
12107
12154
|
state: { item },
|
12155
|
+
policy: OpenPolicy.Tab | OpenPolicy.Dismissable,
|
12108
12156
|
group: this._pane.group
|
12109
12157
|
});
|
12110
12158
|
this.loading = false;
|
@@ -12580,7 +12628,7 @@ class WorkflowNodeComponent {
|
|
12580
12628
|
if (annotationArg && m[annotationArg.name] !== null && m[annotationArg.name] !== undefined) {
|
12581
12629
|
node.annotations[0].content = m[annotationArg.name];
|
12582
12630
|
}
|
12583
|
-
Object.assign(addInfo, m);
|
12631
|
+
Object.assign(addInfo, cleanup(m));
|
12584
12632
|
this.change.emit();
|
12585
12633
|
}
|
12586
12634
|
if (tool.template) {
|
@@ -13228,8 +13276,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
13228
13276
|
args: [{ name: 'amDurationFormat' }]
|
13229
13277
|
}], ctorParameters: function () { return [{ type: TranslateService }]; } });
|
13230
13278
|
|
13231
|
-
Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
|
13232
|
-
const
|
13279
|
+
Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution /*, LineRouting, ConnectorBridging, LayoutAnimation, LineRouting, ConnectorBridging*/);
|
13280
|
+
const
|
13281
|
+
//ELLIPSIS = 'M 650, 150 a 75,150 0 1,0 1,0 z',
|
13282
|
+
FYI_PATH = 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z', ESCALATED_PATH = 'M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z', WARNNING_PATH$1 = 'M 13.763735,1.8433735 H 6.3037349 l -5.27,5.27 v 7.4599995 l 5.27,5.27 h 7.4600001 l 5.27,-5.27 V 7.1133735 Z m -3.73,14.2999995 c -0.7200001,0 -1.3000001,-0.58 -1.3000001,-1.3 0,-0.72 0.58,-1.3 1.3000001,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3 z m 1,-4.3 H 9.0337349 V 5.8433735 h 2.0000001 z';
|
13233
13283
|
/** flow-view component*/
|
13234
13284
|
class FlowViewComponent extends TraceBase {
|
13235
13285
|
/** workflow-view ctor */
|
@@ -13245,19 +13295,20 @@ class FlowViewComponent extends TraceBase {
|
|
13245
13295
|
this.diagramConstraints = DiagramConstraints.Default |
|
13246
13296
|
DiagramConstraints.Pan |
|
13247
13297
|
DiagramConstraints.LineRouting |
|
13248
|
-
DiagramConstraints.
|
13298
|
+
DiagramConstraints.Zoom;
|
13249
13299
|
this.layout = {
|
13250
13300
|
type: 'ComplexHierarchicalTree',
|
13251
13301
|
connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
|
13252
13302
|
horizontalSpacing: 50,
|
13303
|
+
enableRouting: true,
|
13253
13304
|
verticalSpacing: 50,
|
13254
|
-
|
13305
|
+
horizontalAlignment: 'Center',
|
13255
13306
|
connectionDirection: 'Orientation',
|
13256
13307
|
orientation: this._session.inverse ? 'RightToLeft' : 'LeftToRight',
|
13257
|
-
margin: { left: 10, right: 10, top: 10, bottom: 10 }
|
13258
13308
|
};
|
13259
13309
|
this.scrollSettings = {
|
13260
13310
|
minZoom: .5,
|
13311
|
+
scrollLimit: 'Limited',
|
13261
13312
|
canAutoScroll: true,
|
13262
13313
|
currentZoom: 1.2,
|
13263
13314
|
padding: { top: 0, bottom: 0 },
|
@@ -13342,7 +13393,6 @@ class FlowViewComponent extends TraceBase {
|
|
13342
13393
|
obj.style.strokeWidth = 0;
|
13343
13394
|
}
|
13344
13395
|
else {
|
13345
|
-
// obj.shape = { type: 'Bpmn', shape: 'Event' } as BpmnShapeModel;
|
13346
13396
|
obj.width = obj.height = 50;
|
13347
13397
|
if (obj.annotations && obj.annotations.length)
|
13348
13398
|
obj.annotations[0].style.color = this._session.theme.dark ? 'white' : 'black';
|
@@ -13353,7 +13403,8 @@ class FlowViewComponent extends TraceBase {
|
|
13353
13403
|
}
|
13354
13404
|
else {
|
13355
13405
|
obj.style.strokeColor = this._accentColor;
|
13356
|
-
obj.style.fill = recipient && recipient.pending ?
|
13406
|
+
obj.style.fill = recipient && recipient.pending ?
|
13407
|
+
this._session.getAccent(recipient.userId === this._session.userId ? 500 : 400) : 'transparent';
|
13357
13408
|
}
|
13358
13409
|
obj.style.strokeWidth = 2;
|
13359
13410
|
}
|
@@ -13449,7 +13500,7 @@ class FlowViewComponent extends TraceBase {
|
|
13449
13500
|
}
|
13450
13501
|
}]
|
13451
13502
|
};
|
13452
|
-
if (r > 0)
|
13503
|
+
if (r > 0)
|
13453
13504
|
dconnectors.forEach(c => {
|
13454
13505
|
if (c.targetId === node.id)
|
13455
13506
|
connectors.push({
|
@@ -13459,7 +13510,10 @@ class FlowViewComponent extends TraceBase {
|
|
13459
13510
|
estimate: c.estimate
|
13460
13511
|
}
|
13461
13512
|
});
|
13462
|
-
if (c.sourceId === node.id)
|
13513
|
+
if (c.sourceId === node.id) {
|
13514
|
+
//
|
13515
|
+
if (c.virtual && c.originId && c.originId !== recipient.id)
|
13516
|
+
return;
|
13463
13517
|
connectors.push({
|
13464
13518
|
sourceID: nod.id,
|
13465
13519
|
targetID: c.targetId,
|
@@ -13467,8 +13521,8 @@ class FlowViewComponent extends TraceBase {
|
|
13467
13521
|
estimate: c.estimate
|
13468
13522
|
}
|
13469
13523
|
});
|
13524
|
+
}
|
13470
13525
|
});
|
13471
|
-
}
|
13472
13526
|
nodes.push(nod);
|
13473
13527
|
if (recipient.action) {
|
13474
13528
|
const action = this._session.profile.actions.find(a => a.name === recipient.action);
|
@@ -13491,56 +13545,40 @@ class FlowViewComponent extends TraceBase {
|
|
13491
13545
|
indicators.push(actionIndicator);
|
13492
13546
|
}
|
13493
13547
|
}
|
13494
|
-
if (recipient.
|
13548
|
+
if (recipient.fyi)
|
13495
13549
|
indicators.push({
|
13496
|
-
id: nod.id + '
|
13550
|
+
id: nod.id + 'fyi',
|
13497
13551
|
shape: {
|
13498
13552
|
type: 'Path',
|
13499
|
-
data:
|
13500
|
-
align: this._session.inverse ? '
|
13553
|
+
data: FYI_PATH,
|
13554
|
+
align: this._session.inverse ? 'XMinYMax' : 'XMaxYMax'
|
13501
13555
|
},
|
13502
13556
|
style: {
|
13503
|
-
fill:
|
13557
|
+
fill: '#1976d2'
|
13504
13558
|
},
|
13505
13559
|
addInfo: {
|
13506
13560
|
indicator: true,
|
13507
13561
|
parentId: nod.id
|
13508
13562
|
}
|
13509
13563
|
});
|
13510
|
-
if (recipient.
|
13511
|
-
|
13512
|
-
id: nod.id + '
|
13564
|
+
if (recipient.escalated) {
|
13565
|
+
const escalateIndicator = {
|
13566
|
+
id: nod.id + 'escalate',
|
13513
13567
|
shape: {
|
13514
13568
|
type: 'Path',
|
13515
|
-
data:
|
13569
|
+
data: ESCALATED_PATH,
|
13516
13570
|
align: this._session.inverse ? 'XMinYMax' : 'XMaxYMax'
|
13517
13571
|
},
|
13518
13572
|
style: {
|
13519
|
-
fill:
|
13573
|
+
fill: this._session.getAccent(900)
|
13520
13574
|
},
|
13521
13575
|
addInfo: {
|
13522
13576
|
indicator: true,
|
13523
13577
|
parentId: nod.id
|
13524
13578
|
}
|
13525
|
-
}
|
13526
|
-
|
13527
|
-
|
13528
|
-
// id: nod.id + 'escalate',
|
13529
|
-
// shape: {
|
13530
|
-
// type: 'Path',
|
13531
|
-
// data: ESCALATED_PATH,
|
13532
|
-
// align: this._session.inverse ? 'XMinYMax' : 'XMaxYMax'
|
13533
|
-
// },
|
13534
|
-
// style: {
|
13535
|
-
// fill: this._session.getAccent(900)
|
13536
|
-
// },
|
13537
|
-
// addInfo: {
|
13538
|
-
// indicator: true,
|
13539
|
-
// parentId: nod.id
|
13540
|
-
// } as NodeInfoModel
|
13541
|
-
// } as NodeModel;
|
13542
|
-
// indicators.push(escalateIndicator);
|
13543
|
-
// }
|
13579
|
+
};
|
13580
|
+
indicators.push(escalateIndicator);
|
13581
|
+
}
|
13544
13582
|
}
|
13545
13583
|
}
|
13546
13584
|
else {
|
@@ -13607,36 +13645,6 @@ class FlowViewComponent extends TraceBase {
|
|
13607
13645
|
}
|
13608
13646
|
}
|
13609
13647
|
}
|
13610
|
-
/**
|
13611
|
-
*
|
13612
|
-
* @param connector
|
13613
|
-
* @param index
|
13614
|
-
* @param vconnectors
|
13615
|
-
*/
|
13616
|
-
function reroute(connector, index) {
|
13617
|
-
while (index < dconnectors.length) {
|
13618
|
-
let dconnector = dconnectors[index];
|
13619
|
-
if (dconnector.sourceId === connector.targetId) {
|
13620
|
-
if (nodes.some(n => n.id === dconnector.targetId))
|
13621
|
-
connectors.push({
|
13622
|
-
sourceID: connector.sourceId,
|
13623
|
-
targetID: dconnector.targetId,
|
13624
|
-
addInfo: {
|
13625
|
-
estimate: dconnector.estimate,
|
13626
|
-
time: dconnector.time
|
13627
|
-
}
|
13628
|
-
});
|
13629
|
-
else
|
13630
|
-
reroute({
|
13631
|
-
time: dconnector.time,
|
13632
|
-
targetId: dconnector.targetId,
|
13633
|
-
estimate: dconnector.estimate,
|
13634
|
-
sourceId: connector.sourceId
|
13635
|
-
}, index + 1);
|
13636
|
-
}
|
13637
|
-
index++;
|
13638
|
-
}
|
13639
|
-
}
|
13640
13648
|
return { connectors, nodes, indicators };
|
13641
13649
|
});
|
13642
13650
|
}
|
@@ -13654,7 +13662,7 @@ class FlowViewComponent extends TraceBase {
|
|
13654
13662
|
const stateLog = log.find(l => l.type === 'StateChange');
|
13655
13663
|
if (stateLog) {
|
13656
13664
|
state = this._session.profile.states.find(s => s.name === stateLog.state);
|
13657
|
-
annotation =
|
13665
|
+
annotation = (node.estimate ? state.future : state.past) || state.title;
|
13658
13666
|
}
|
13659
13667
|
if (node.type === START_NODE) {
|
13660
13668
|
if (!node.estimate) {
|
@@ -13676,8 +13684,8 @@ class FlowViewComponent extends TraceBase {
|
|
13676
13684
|
const { min, max } = super._estimateTime(node);
|
13677
13685
|
if (max)
|
13678
13686
|
return !min || min === max ?
|
13679
|
-
this._translate.get('EstimateTime',
|
13680
|
-
this._translate.get('EstimateTimeRange',
|
13687
|
+
this._translate.get('EstimateTime', dayjs.duration(max).humanize()) :
|
13688
|
+
this._translate.get('EstimateTimeRange', dayjs.duration(min).humanize(), dayjs.duration(max).humanize());
|
13681
13689
|
}
|
13682
13690
|
_tooltip(obj) {
|
13683
13691
|
const { note, role, substituting, escalation, duration, standardTime, estimatedTime, error, fyi } = obj;
|
@@ -13732,23 +13740,55 @@ class FlowViewComponent extends TraceBase {
|
|
13732
13740
|
const tooltip = {};
|
13733
13741
|
let annotation;
|
13734
13742
|
// you
|
13735
|
-
if (
|
13736
|
-
|
13737
|
-
|
13738
|
-
|
13739
|
-
|
13740
|
-
|
13741
|
-
|
13742
|
-
|
13743
|
-
|
13743
|
+
if (recipient.userId === this._session.userId) {
|
13744
|
+
if (this._session.isImpersonating)
|
13745
|
+
annotation = this._session.profile.name;
|
13746
|
+
else
|
13747
|
+
annotation = this._translate.get('You');
|
13748
|
+
if (recipient.role) {
|
13749
|
+
const role = this._session.profile.roles.find(o => o.name === recipient.role);
|
13750
|
+
if (role)
|
13751
|
+
tooltip.role = `- ${role.title}`;
|
13752
|
+
}
|
13753
|
+
}
|
13754
|
+
else
|
13755
|
+
// someone else
|
13756
|
+
{
|
13757
|
+
const who = yield this._accounts.get(recipient.userId).toPromise();
|
13758
|
+
annotation = who.name;
|
13759
|
+
if (who.role)
|
13760
|
+
tooltip.role = `- ${who.role}`;
|
13761
|
+
else if (recipient.role) {
|
13762
|
+
const role = this._session.profile.roles.find(o => o.name === recipient.role);
|
13763
|
+
if (role)
|
13764
|
+
tooltip.role = `- ${role.title}`;
|
13765
|
+
}
|
13766
|
+
}
|
13767
|
+
if (recipient.replied) {
|
13768
|
+
const time = this._fromNow(recipient.replied);
|
13769
|
+
if (recipient.byId) {
|
13770
|
+
if (recipient.byId === this._session.profile.byId) {
|
13771
|
+
const action = this._action(recipient.action, this._session.profile.byGender);
|
13772
|
+
if (recipient.toId) {
|
13773
|
+
const to = yield this._accounts.get(recipient.toId).toPromise();
|
13774
|
+
if (recipient.userId === this._session.profile.userId)
|
13744
13775
|
tooltip.note = this._translate.get('ActionTakenByYouTo', action, to.name, this._session.profile.name, time);
|
13776
|
+
else {
|
13777
|
+
const who = yield this._accounts.get(recipient.userId).toPromise();
|
13778
|
+
tooltip.note = this._translate.get('ActionTakenByYouTo', action, to.name, who.name, time);
|
13745
13779
|
}
|
13746
|
-
else
|
13747
|
-
tooltip.note = this._translate.get('ActionTakenByYou', action, this._session.profile.name, time);
|
13748
13780
|
}
|
13781
|
+
else if (recipient.userId === this._session.profile.userId)
|
13782
|
+
tooltip.note = this._translate.get('ActionTakenByYou', action, this._session.profile.name, time);
|
13749
13783
|
else {
|
13750
|
-
const
|
13751
|
-
|
13784
|
+
const who = yield this._accounts.get(recipient.userId).toPromise();
|
13785
|
+
tooltip.note = this._translate.get('ActionTakenByYou', action, who.name, time);
|
13786
|
+
}
|
13787
|
+
}
|
13788
|
+
else {
|
13789
|
+
const by = yield this._accounts.get(recipient.byId).toPromise();
|
13790
|
+
const action = this._action(recipient.action, by.gender);
|
13791
|
+
if (recipient.userId === this._session.profile.userId) {
|
13752
13792
|
if (recipient.toId) {
|
13753
13793
|
const to = yield this._accounts.get(recipient.toId).toPromise();
|
13754
13794
|
tooltip.note = this._translate.get('YouTakenActionByTo', by.name, action, to.name, time);
|
@@ -13756,75 +13796,57 @@ class FlowViewComponent extends TraceBase {
|
|
13756
13796
|
else
|
13757
13797
|
tooltip.note = this._translate.get('YouTakenActionBy', by.name, action, time);
|
13758
13798
|
}
|
13799
|
+
else {
|
13800
|
+
const who = yield this._accounts.get(recipient.userId).toPromise();
|
13801
|
+
if (recipient.toId) {
|
13802
|
+
const to = yield this._accounts.get(recipient.toId).toPromise();
|
13803
|
+
tooltip.note = this._translate.get('ActionTakenByTo', by.name, action, to.name, who.name, time);
|
13804
|
+
}
|
13805
|
+
else
|
13806
|
+
tooltip.note = this._translate.get('ActionTakenBy', by.name, action, who.name, time);
|
13807
|
+
}
|
13759
13808
|
}
|
13760
|
-
|
13761
|
-
|
13809
|
+
}
|
13810
|
+
else if (recipient.toId) {
|
13811
|
+
const to = yield this._accounts.get(recipient.toId).toPromise();
|
13812
|
+
if (recipient.userId === this._session.profile.userId) {
|
13762
13813
|
const action = this._action(recipient.action, this._session.profile.gender);
|
13763
13814
|
if (this._session.isImpersonating)
|
13764
13815
|
tooltip.note = this._translate.get('ActionTakenTo', this._session.profile.name, action, to.name, time);
|
13765
13816
|
else
|
13766
13817
|
tooltip.note = this._translate.get('YouTakenActionTo', action, to.name, time);
|
13767
13818
|
}
|
13768
|
-
else if (this._session.isImpersonating) {
|
13769
|
-
const action = this._action(recipient.action, this._session.profile.gender);
|
13770
|
-
tooltip.note = this._translate.get('ActionTaken', this._session.profile.name, action, time);
|
13771
|
-
}
|
13772
13819
|
else {
|
13773
|
-
const
|
13774
|
-
|
13820
|
+
const who = yield this._accounts.get(recipient.userId).toPromise();
|
13821
|
+
const action = this._action(recipient.action, who.gender);
|
13822
|
+
tooltip.note = this._translate.get('ActionTakenTo', who.name, action, to.name);
|
13775
13823
|
}
|
13776
13824
|
}
|
13777
|
-
else if (
|
13778
|
-
const
|
13779
|
-
|
13780
|
-
tooltip.note = this._translate.personalize('ReceivedBy', this._session.profile.gender, this._session.profile.name, time);
|
13781
|
-
else
|
13782
|
-
tooltip.note = this._translate.get('YouReceived', time);
|
13825
|
+
else if (this._session.isImpersonating) {
|
13826
|
+
const action = this._action(recipient.action, this._session.profile.gender);
|
13827
|
+
tooltip.note = this._translate.get('ActionTaken', this._session.profile.name, action, time);
|
13783
13828
|
}
|
13784
|
-
if (recipient.
|
13785
|
-
const
|
13786
|
-
|
13787
|
-
|
13829
|
+
else if (recipient.userId === this._session.profile.userId) {
|
13830
|
+
const action = this._action(recipient.action, You);
|
13831
|
+
tooltip.note = this._translate.get('YouTakenAction', action, time);
|
13832
|
+
}
|
13833
|
+
else {
|
13834
|
+
const who = yield this._accounts.get(recipient.userId).toPromise();
|
13835
|
+
const action = this._action(recipient.action, who.gender);
|
13836
|
+
tooltip.note = this._translate.get('ActionTaken', who.name, action, time);
|
13788
13837
|
}
|
13789
13838
|
}
|
13790
|
-
else
|
13791
|
-
|
13792
|
-
|
13839
|
+
else if (!node.estimate) {
|
13840
|
+
const time = this._fromNow(recipient.received);
|
13841
|
+
if (this._session.isImpersonating)
|
13842
|
+
tooltip.note = this._translate.personalize('ReceivedBy', this._session.profile.gender, this._session.profile.name, time);
|
13843
|
+
else
|
13844
|
+
tooltip.note = this._translate.get('YouReceived', time);
|
13845
|
+
}
|
13846
|
+
else if (!recipient.estimate) {
|
13793
13847
|
const who = yield this._accounts.get(recipient.userId).toPromise();
|
13794
|
-
|
13795
|
-
|
13796
|
-
tooltip.role = `- ${who.role}`;
|
13797
|
-
else if (recipient.role) {
|
13798
|
-
const crole = this._session.profile.roles.find(o => o.name === recipient.role);
|
13799
|
-
if (crole)
|
13800
|
-
tooltip.role = `- ${crole.title}`;
|
13801
|
-
}
|
13802
|
-
if (recipient.replied) {
|
13803
|
-
const time = this._fromNow(recipient.replied);
|
13804
|
-
if (recipient.byId) {
|
13805
|
-
const by = yield this._accounts.get(recipient.byId).toPromise();
|
13806
|
-
const action = this._action(recipient.action, by.gender);
|
13807
|
-
if (recipient.toId) {
|
13808
|
-
const to = yield this._accounts.get(recipient.toId).toPromise();
|
13809
|
-
tooltip.note = this._translate.get('ActionTakenByTo', by.name, action, to.name, who.name, time);
|
13810
|
-
}
|
13811
|
-
else
|
13812
|
-
tooltip.note = this._translate.get('ActionTakenBy', by.name, action, who.name, time);
|
13813
|
-
}
|
13814
|
-
else if (recipient.toId) {
|
13815
|
-
const to = yield this._accounts.get(recipient.toId).toPromise();
|
13816
|
-
const action = this._action(recipient.action, who.gender);
|
13817
|
-
tooltip.note = this._translate.get('ActionTakenTo', who.name, action, to.name);
|
13818
|
-
}
|
13819
|
-
else {
|
13820
|
-
const action = this._action(recipient.action, who.gender);
|
13821
|
-
tooltip.note = this._translate.get('ActionTaken', who.name, action, time);
|
13822
|
-
}
|
13823
|
-
}
|
13824
|
-
else if (!recipient.estimate) {
|
13825
|
-
const time = this._fromNow(recipient.received);
|
13826
|
-
tooltip.note = this._translate.personalize('ReceivedTime', who.gender, time);
|
13827
|
-
}
|
13848
|
+
const time = this._fromNow(recipient.received);
|
13849
|
+
tooltip.note = this._translate.personalize('ReceivedTime', who.gender, time);
|
13828
13850
|
}
|
13829
13851
|
if (recipient.substitutingId) {
|
13830
13852
|
if (recipient.substitutingId === this._session.userId)
|
@@ -13834,11 +13856,28 @@ class FlowViewComponent extends TraceBase {
|
|
13834
13856
|
tooltip.substituting = this._translate.personalize('SubstitutingFor', substituting.gender, substituting.name);
|
13835
13857
|
}
|
13836
13858
|
}
|
13837
|
-
|
13838
|
-
|
13859
|
+
if (recipient.originId && !recipient.replied) {
|
13860
|
+
const origin = this.model.recipients.find(r => r.id === recipient.originId);
|
13861
|
+
if (origin.toId) {
|
13862
|
+
const action = this._session.profile.actions.find(a => a.name === origin.action), adjective = action.adjective || action.past || action.title;
|
13863
|
+
if ((origin.byId || origin.userId) === this._session.userId)
|
13864
|
+
tooltip.substituting = this._translate.get('ActionByYou', adjective);
|
13865
|
+
else if (origin.byId) {
|
13866
|
+
const who = yield this._accounts.get(origin.userId).toPromise();
|
13867
|
+
const by = yield this._accounts.get(origin.byId).toPromise();
|
13868
|
+
tooltip.substituting = this._translate.get('ActionByBy', adjective, by.name, who.name);
|
13869
|
+
}
|
13870
|
+
else {
|
13871
|
+
const who = yield this._accounts.get(origin.userId).toPromise();
|
13872
|
+
tooltip.substituting = this._translate.get('ActionBy', adjective, who.name);
|
13873
|
+
}
|
13874
|
+
}
|
13875
|
+
}
|
13876
|
+
if (recipient.escalated) {
|
13877
|
+
const escalations = this.model.log.filter(l => l.type === 'Escalation' && l.recipientId === recipient.id);
|
13839
13878
|
const userIds = escalations.map(e => e.userId);
|
13840
13879
|
const users = yield this._accounts.getAll(userIds).toPromise();
|
13841
|
-
const duration = this._duration.transform(dayjs(escalations[escalations.length - 1].
|
13880
|
+
const duration = this._duration.transform(dayjs.duration(escalations[escalations.length - 1].duration, 's'));
|
13842
13881
|
tooltip.escalation = this._translate.get('EscalatedTo', this._translate.join(users.map(u => u.name)), duration);
|
13843
13882
|
}
|
13844
13883
|
if (recipient.replied) {
|
@@ -14059,22 +14098,16 @@ class TraceViewComponent extends TraceBase {
|
|
14059
14098
|
}
|
14060
14099
|
}
|
14061
14100
|
else if (recipient.byId) {
|
14062
|
-
let who = yield profileOf(recipient.userId);
|
14063
|
-
if (recipient.byId === this._session.userId)
|
14101
|
+
let who = yield profileOf(recipient.userId), by = yield profileOf(recipient.byId);
|
14102
|
+
if (recipient.byId === this._session.userId)
|
14064
14103
|
step.name = this._translate.get('ByYou', nameOf(who));
|
14065
|
-
if (action)
|
14066
|
-
step.action = yield actionBy(action, You, recipient.toId);
|
14067
|
-
}
|
14068
14104
|
else {
|
14069
|
-
let by = yield profileOf(recipient.byId);
|
14070
14105
|
step.name = this._translate.get('By', nameOf(who), nameOf(by));
|
14071
14106
|
if (by.role)
|
14072
14107
|
step.role = by.role;
|
14073
|
-
if (action)
|
14074
|
-
step.action = yield actionBy(action, by.gender, recipient.toId);
|
14075
14108
|
}
|
14076
14109
|
if (action)
|
14077
|
-
step.action = yield actionBy(action,
|
14110
|
+
step.action = yield actionBy(action, by.gender, recipient.toId);
|
14078
14111
|
}
|
14079
14112
|
else {
|
14080
14113
|
if (recipient.userId === this._session.userId)
|
@@ -14174,30 +14207,28 @@ class TraceViewComponent extends TraceBase {
|
|
14174
14207
|
step.role = by.role;
|
14175
14208
|
}
|
14176
14209
|
}
|
14177
|
-
else {
|
14210
|
+
else if (recipient.escalated) {
|
14178
14211
|
let escalations = this.model.log.filter(l => l.time > issued &&
|
14179
14212
|
l.type === 'Escalation' && l.recipientId === recipient.id);
|
14180
|
-
|
14181
|
-
|
14182
|
-
|
14183
|
-
|
14184
|
-
escalate.push(who);
|
14185
|
-
}
|
14186
|
-
let who = yield profileOf(recipient.userId);
|
14187
|
-
if (escalations.length === 1 && escalate[0] === this._session.userId)
|
14188
|
-
step.name = this._translate.get('EscalatedByYou', nameOf(who));
|
14189
|
-
else
|
14190
|
-
step.name = this._translate.get('EscalatedBy', nameOf(who), this._translate.join(escalate.map(e => nameOf(e))));
|
14213
|
+
let escalate = [];
|
14214
|
+
for (let escalation of escalations) {
|
14215
|
+
let who = yield profileOf(escalation.userId);
|
14216
|
+
escalate.push(who);
|
14191
14217
|
}
|
14218
|
+
let who = yield profileOf(recipient.userId);
|
14219
|
+
if (escalations.length === 1 && escalate[0] === this._session.userId)
|
14220
|
+
step.name = this._translate.get('EscalatedByYou', nameOf(who));
|
14221
|
+
else
|
14222
|
+
step.name = this._translate.get('EscalatedBy', nameOf(who), this._translate.join(escalate.map(e => nameOf(e))));
|
14223
|
+
}
|
14224
|
+
else {
|
14225
|
+
if (recipient.userId === this._session.userId)
|
14226
|
+
step.name = this._translate.get('You');
|
14192
14227
|
else {
|
14193
|
-
|
14194
|
-
|
14195
|
-
|
14196
|
-
|
14197
|
-
step.name = nameOf(who);
|
14198
|
-
if (who.role)
|
14199
|
-
step.role = who.role;
|
14200
|
-
}
|
14228
|
+
let who = yield profileOf(recipient.userId);
|
14229
|
+
step.name = nameOf(who);
|
14230
|
+
if (who.role)
|
14231
|
+
step.role = who.role;
|
14201
14232
|
}
|
14202
14233
|
}
|
14203
14234
|
trace.push(step);
|
@@ -14236,10 +14267,10 @@ class TraceViewComponent extends TraceBase {
|
|
14236
14267
|
}
|
14237
14268
|
}
|
14238
14269
|
TraceViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TraceViewComponent, deps: [{ token: SessionService }, { token: TranslateService }, { token: AccountService }, { token: ChatInfo }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
|
14239
|
-
TraceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TraceViewComponent, selector: "bizdoc-trace", inputs: { model: "model" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, usesOnChanges: 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)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'
|
14270
|
+
TraceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TraceViewComponent, selector: "bizdoc-trace", inputs: { model: "model" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, usesOnChanges: 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)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'Everything' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <ng-container *ngSwitchCase=\"'ActionTaken'\">\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'Submit'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\"> {{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\"> ({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.type==='ModelChange'\" (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"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe, "amDurationFormat": DurationFormatPipe, "amDuration": DurationPipe, "amCalendar": CalendarPipe }, animations: [listAnimation, itemAnimation] });
|
14240
14271
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TraceViewComponent, decorators: [{
|
14241
14272
|
type: Component,
|
14242
|
-
args: [{ 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)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'
|
14273
|
+
args: [{ 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)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'Everything' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <ng-container *ngSwitchCase=\"'ActionTaken'\">\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'Submit'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\"> {{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\"> ({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.type==='ModelChange'\" (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"] }]
|
14243
14274
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: TranslateService }, { type: AccountService }, { type: ChatInfo }, { type: HubService }]; }, propDecorators: { model: [{
|
14244
14275
|
type: Input
|
14245
14276
|
}], versionSelected: [{
|
@@ -14798,7 +14829,7 @@ class CubeMatrixComponent {
|
|
14798
14829
|
this.refresh();
|
14799
14830
|
}
|
14800
14831
|
_addindices() {
|
14801
|
-
const collection = this.indexAt === '
|
14832
|
+
const collection = this.indexAt === 'xAxis' ? this.columns : this.rows;
|
14802
14833
|
this.indices.forEach((x, i) => {
|
14803
14834
|
const header = {
|
14804
14835
|
key: x.name,
|
@@ -14806,10 +14837,10 @@ class CubeMatrixComponent {
|
|
14806
14837
|
index: x,
|
14807
14838
|
accumulate: x.accumulate
|
14808
14839
|
};
|
14809
|
-
if (this.placeAt === '
|
14810
|
-
collection.splice(i, 0, header);
|
14811
|
-
else
|
14840
|
+
if (this.placeAt === 'trailing')
|
14812
14841
|
collection.push(header);
|
14842
|
+
else
|
14843
|
+
collection.splice(i, 0, header);
|
14813
14844
|
});
|
14814
14845
|
}
|
14815
14846
|
_addsumheaders() {
|
@@ -14875,17 +14906,17 @@ class CubeMatrixComponent {
|
|
14875
14906
|
const d = {};
|
14876
14907
|
series.forEach(s => {
|
14877
14908
|
if (s.index) {
|
14878
|
-
if (this.indexAt === '
|
14879
|
-
const row = d[s.index] = {};
|
14880
|
-
s.points.forEach(p => row[p.x] = p.y);
|
14881
|
-
}
|
14882
|
-
else
|
14909
|
+
if (this.indexAt === 'xAxis')
|
14883
14910
|
s.points.forEach(p => {
|
14884
14911
|
let row = d[p.x];
|
14885
14912
|
if (!row)
|
14886
14913
|
row = d[p.x] = {};
|
14887
14914
|
row[s.index] = p.y;
|
14888
14915
|
});
|
14916
|
+
else {
|
14917
|
+
const row = d[s.index] = {};
|
14918
|
+
s.points.forEach(p => row[p.x] = p.y);
|
14919
|
+
}
|
14889
14920
|
}
|
14890
14921
|
else {
|
14891
14922
|
const row = d[s.name] = {};
|
@@ -14908,20 +14939,20 @@ class CubeMatrixComponent {
|
|
14908
14939
|
this.rows.forEach(r => {
|
14909
14940
|
const datarow = data[r.key];
|
14910
14941
|
if (datarow) {
|
14911
|
-
let
|
14942
|
+
let columnTotal = 0;
|
14912
14943
|
this.columns.forEach(c => {
|
14913
14944
|
if (c.accumulate === false || c.sum !== undefined)
|
14914
14945
|
return;
|
14915
14946
|
let val = datarow[c.key];
|
14916
14947
|
if (val !== undefined)
|
14917
|
-
|
14948
|
+
columnTotal += this.indices.length === 0 || this.indexAt !== 'xAxis' ||
|
14918
14949
|
c.index !== undefined ? val : -val;
|
14919
14950
|
});
|
14920
|
-
datarow['_total'] = this._format(
|
14951
|
+
datarow['_total'] = this._format(columnTotal, r);
|
14921
14952
|
if (!r.sum)
|
14922
14953
|
grand += this.indices.length === 0 ||
|
14923
14954
|
this.indexAt === 'xAxis' ||
|
14924
|
-
r.index !== undefined ?
|
14955
|
+
r.index !== undefined ? columnTotal : -columnTotal;
|
14925
14956
|
}
|
14926
14957
|
else
|
14927
14958
|
data[r.key] = {
|
@@ -14931,16 +14962,16 @@ class CubeMatrixComponent {
|
|
14931
14962
|
const totals = data['_total'] = this.totals = {};
|
14932
14963
|
totals['_grand'] = this._format(grand);
|
14933
14964
|
this.columns.forEach(c => {
|
14934
|
-
let
|
14965
|
+
let rowTotal = 0;
|
14935
14966
|
this.rows.forEach(row => {
|
14936
14967
|
if (row.accumulate === false || row.sum !== undefined)
|
14937
14968
|
return;
|
14938
14969
|
const val = data[row.key][c.key];
|
14939
14970
|
if (val !== undefined)
|
14940
|
-
|
14971
|
+
rowTotal += this.indices.length === 0 || this.indexAt === 'xAxis' ||
|
14941
14972
|
row.index !== undefined ? val : -val;
|
14942
14973
|
});
|
14943
|
-
totals[c.key] = this._format(
|
14974
|
+
totals[c.key] = this._format(rowTotal, c);
|
14944
14975
|
});
|
14945
14976
|
}
|
14946
14977
|
_calculatesum(data) {
|
@@ -17324,7 +17355,7 @@ class HomeBase {
|
|
17324
17355
|
this._messaging.new$.subscribe(m => {
|
17325
17356
|
const { model: { formId: name, subject, number } } = m;
|
17326
17357
|
const form = this._session.profile.forms.find(f => f.name === name), msg = this._translate.get('NewMail', form.title, number, subject || '');
|
17327
|
-
this._snackBar.open(msg, this._translate.get('OpenNew'), {
|
17358
|
+
this._snackBar.open(msg, m.userId === this._session.profile.userId ? this._translate.get('OpenNew') : null, {
|
17328
17359
|
duration: 5000,
|
17329
17360
|
direction: this._session.direction,
|
17330
17361
|
politeness: 'assertive'
|
@@ -18778,7 +18809,7 @@ class SlotsComponent {
|
|
18778
18809
|
}
|
18779
18810
|
}
|
18780
18811
|
SlotsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SlotsComponent, deps: [{ token: PANES_DATA }, { token: PromptService }, { token: SessionService }, { token: i0.ChangeDetectorRef }, { token: PanesRouter }, { token: WindowTitleService }, { token: GuideService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
18781
|
-
SlotsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SlotsComponent, selector: "bizdoc-panes", host: { listeners: { "document:keydown.escape": "collapse()" } }, viewQueries: [{ propertyName: "_panesContainerRef", first: true, predicate: ["paning"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "_tabsElement", first: true, predicate: ["tabing"], descendants: true }, { propertyName: "_scrollable", first: true, predicate: CdkScrollable, descendants: true, static: true }], ngImport: i0, template: "<div class=\"panes\">\r\n <div class=\"backdrop\" [style.display]=\"dialog ? '' : 'none'\"></div>\r\n <div class=\"scroll-arrow\" (click)=\"scrollBy(-400)\" matRipple [matRippleUnbounded]=\"true\" [matRippleCentered]=\"true\" [matRippleColor]=\"accent\"\r\n *ngIf=\"prev\">\r\n <i class=\"material-icons mat-icon-rtl-mirror\">\r\n arrow_back_ios\r\n </i>\r\n </div>\r\n <div class=\"panes-title\" [@title]=\"titleAnimation\">\r\n <h1>\r\n <button mat-icon-button (click)=\"back()\" *ngIf=\"swap\" [bizdocTooltip]=\"'Back'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon></button>\r\n <ng-container *ngFor=\"let p of panes; let first = first\">\r\n <span class=\"
|
18812
|
+
SlotsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SlotsComponent, selector: "bizdoc-panes", host: { listeners: { "document:keydown.escape": "collapse()" } }, viewQueries: [{ propertyName: "_panesContainerRef", first: true, predicate: ["paning"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "_tabsElement", first: true, predicate: ["tabing"], descendants: true }, { propertyName: "_scrollable", first: true, predicate: CdkScrollable, descendants: true, static: true }], ngImport: i0, template: "<div class=\"panes\">\r\n <div class=\"backdrop\" [style.display]=\"dialog ? '' : 'none'\"></div>\r\n <div class=\"scroll-arrow\" (click)=\"scrollBy(-400)\" matRipple [matRippleUnbounded]=\"true\" [matRippleCentered]=\"true\" [matRippleColor]=\"accent\"\r\n *ngIf=\"prev\">\r\n <i class=\"material-icons mat-icon-rtl-mirror\">\r\n arrow_back_ios\r\n </i>\r\n </div>\r\n <div class=\"panes-title\" [@title]=\"titleAnimation\">\r\n <h1>\r\n <button mat-icon-button (click)=\"back()\" *ngIf=\"swap\" [bizdocTooltip]=\"'Back'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon></button>\r\n <ng-container *ngFor=\"let p of panes; let first = first\">\r\n <span class=\"breadcrumbs\" *ngIf=\"!first\">\\</span>\r\n {{p.title}}\r\n </ng-container>\r\n <button mat-icon-button (click)=\"guide(panes[0].guide)\" *ngIf=\"panes[0]?.guide\" [bizdocTooltip]=\"'Help'|translate\"><mat-icon>help</mat-icon></button>\r\n </h1>\r\n <span class=\"divider\">\r\n </span>\r\n <bizdoc-quicktools></bizdoc-quicktools>\r\n </div>\r\n <div #paning class=\"panes-container\"\r\n cdkScrollable\r\n @panes\r\n (scroll)=\"navigationArrows($event)\">\r\n <ng-container *ngFor=\"let p of panes; let i = index\">\r\n <div (mouseenter)=\"selectedIndex !== i && !dragging && select(i)\"\r\n (click)=\"select(i)\"\r\n [class.active]=\"selectedIndex === i\" class=\"pane-content\" @pane>\r\n <ngx-component-outlet [type]=\"p.component\" [injector]=\"p.injector\" (create)=\"p._instance = $event\"></ngx-component-outlet>\r\n </div>\r\n <div class=\"pane-separator\" *ngIf=\"i < panes.length - 1\" (mousedown)=\"onResize(p, $event)\"> </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"scroll-arrow forward\"\r\n *ngIf=\"next\">\r\n <i class=\"material-icons mat-icon-rtl-mirror\" matRipple [matRippleUnbounded]=\"true\" [matRippleCentered]=\"true\" [matRippleRadius]=\"30\" [matRippleColor]=\"accent\"\r\n (click)=\"scrollBy(400)\">\r\n arrow_forward_ios\r\n </i>\r\n </div>\r\n</div>\r\n<ng-container *ngIf=\"tabs.length\">\r\n <div class=\"tabs-separator\" (mousedown)=\"onTabResize($event)\"> </div>\r\n <div class=\"mat-elevation-z18 tabs\" [@tabs]=\"tabsAnimation\" (@tabs.done)=\"done()\" #tabing>\r\n <div class=\"row tabs-title\">\r\n <button mat-icon-button (click)=\"tabBack()\" *ngIf=\"swapTab\" [bizdocTooltip]=\"prevGroup || ('Back'|translate)\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\r\n <h2>{{group}}</h2>\r\n <button mat-icon-button (click)=\"expandTab()\" [bizdocTooltip]=\"'Expand'| translate\"><mat-icon inline=\"true\" class=\"mat-icon-rtl-mirror\">open_in_full</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"collapse()\" bizdocTooltip=\"Esc\"><mat-icon>close</mat-icon></button>\r\n </div>\r\n <nav mat-tab-nav-bar color=\"accent\" [disablePagination]=\"true\">\r\n <a mat-tab-link *ngFor=\"let p of tabs; let i = index\" class=\"mat-tab-link\"\r\n (click)=\"selectedTabIndex = i\"\r\n [active]=\"selectedTabIndex === i\">\r\n <mat-icon [matBadge]=\"p.badge\" [matBadgeHidden]=\"!p.badge\" matBadgeSize=\"small\" matBadgeColor=\"accent\">{{p.icon}}</mat-icon> \r\n {{p.title}}\r\n <mat-icon *ngIf=\"p.dismissable\" (click)=\"closeTab(i)\" class=\"tool\">close</mat-icon>\r\n <!--inline=\"true\"-->\r\n </a>\r\n </nav>\r\n <div *ngFor=\"let t of tabs; let i = index\" [style.display]=\"selectedTabIndex === i ? '': 'none'\" class=\"tab\" [@tab]=\"selectedTabIndex\">\r\n <ngx-component-outlet [type]=\"t.component\" [injector]=\"t.injector\" (create)=\"t._instance = $event\"></ngx-component-outlet>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:row;flex-grow:1;overflow-x:hidden}.panes{flex-grow:1;position:relative;overflow-x:hidden;display:inline-flex;flex-direction:column;flex-basis:100%}.panes .panes-title{display:flex;flex-direction:row;align-items:center;min-width:max-content}.panes .panes-title h1{font-size:xx-large;margin:12px;font-weight:100}.panes .panes-title h1 button{vertical-align:middle}.panes .panes-title h1 .breadcrumbs{font-size:smaller}.panes .scroll-arrow{position:absolute;cursor:pointer;top:50%;z-index:1000}.panes .scroll-arrow i{font-size:50px;opacity:.2}.panes .scroll-arrow i:hover{opacity:.9}.panes .scroll-arrow:last-child{right:0}.panes .panes-container{overflow-x:auto;height:100%;display:flex;flex-direction:row}.panes .panes-container .pane-content{display:block;border-right:1px solid #00000014;height:inherit;border-left-width:1px;border-left-style:double;border-left-color:transparent;flex-grow:1;min-width:420px;overflow-y:auto}.panes .panes-container .pane-content .pane{flex-grow:1}.panes .panes-container .pane-separator{width:8px}.pane-separator,.tabs-separator{cursor:ew-resize;background-repeat:no-repeat;background-position:center;display:table;height:100%;-webkit-user-select:none;user-select:none}.tabs-separator{width:12px}::ng-deep [dir=rtl] .scroll-arrow:last-child{right:unset;left:0}.tabs{display:flex;flex-direction:column;z-index:1;-webkit-flex-grow:0;flex-shrink:1;flex-basis:0}.tabs .tabs-title{align-items:center}.tabs .tabs-title h2{font-size:x-large;margin:9px;font-weight:100}.tabs .tabs-title:hover{opacity:1}.tabs .mat-tab-link .tool{opacity:0}.tabs .mat-tab-link:hover .tool{opacity:1}.tabs .tab{flex-grow:1;overflow-y:auto;overflow-x:hidden;display:flex}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: QuickToolsComponent, selector: "bizdoc-quicktools" }, { type: i9$3.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["color"], exportAs: ["matTabNavBar", "matTabNav"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13$1.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { type: NgxComponentOutlet, selector: "ngx-component-outlet", inputs: ["type", "injector", "ngxComponentOutletContent"], outputs: ["create"] }, { type: i9$3.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matTabLink"] }, { type: i13.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }], pipes: { "translate": TranslatePipe }, animations: [panesAnimation,
|
18782
18813
|
panesTitleAnimation,
|
18783
18814
|
paneAnimation,
|
18784
18815
|
paramAnimation,
|
@@ -18795,7 +18826,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
18795
18826
|
queryAnimation,
|
18796
18827
|
tabsAnimation,
|
18797
18828
|
tabAnimation
|
18798
|
-
], template: "<div class=\"panes\">\r\n <div class=\"backdrop\" [style.display]=\"dialog ? '' : 'none'\"></div>\r\n <div class=\"scroll-arrow\" (click)=\"scrollBy(-400)\" matRipple [matRippleUnbounded]=\"true\" [matRippleCentered]=\"true\" [matRippleColor]=\"accent\"\r\n *ngIf=\"prev\">\r\n <i class=\"material-icons mat-icon-rtl-mirror\">\r\n arrow_back_ios\r\n </i>\r\n </div>\r\n <div class=\"panes-title\" [@title]=\"titleAnimation\">\r\n <h1>\r\n <button mat-icon-button (click)=\"back()\" *ngIf=\"swap\" [bizdocTooltip]=\"'Back'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon></button>\r\n <ng-container *ngFor=\"let p of panes; let first = first\">\r\n <span class=\"
|
18829
|
+
], template: "<div class=\"panes\">\r\n <div class=\"backdrop\" [style.display]=\"dialog ? '' : 'none'\"></div>\r\n <div class=\"scroll-arrow\" (click)=\"scrollBy(-400)\" matRipple [matRippleUnbounded]=\"true\" [matRippleCentered]=\"true\" [matRippleColor]=\"accent\"\r\n *ngIf=\"prev\">\r\n <i class=\"material-icons mat-icon-rtl-mirror\">\r\n arrow_back_ios\r\n </i>\r\n </div>\r\n <div class=\"panes-title\" [@title]=\"titleAnimation\">\r\n <h1>\r\n <button mat-icon-button (click)=\"back()\" *ngIf=\"swap\" [bizdocTooltip]=\"'Back'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon></button>\r\n <ng-container *ngFor=\"let p of panes; let first = first\">\r\n <span class=\"breadcrumbs\" *ngIf=\"!first\">\\</span>\r\n {{p.title}}\r\n </ng-container>\r\n <button mat-icon-button (click)=\"guide(panes[0].guide)\" *ngIf=\"panes[0]?.guide\" [bizdocTooltip]=\"'Help'|translate\"><mat-icon>help</mat-icon></button>\r\n </h1>\r\n <span class=\"divider\">\r\n </span>\r\n <bizdoc-quicktools></bizdoc-quicktools>\r\n </div>\r\n <div #paning class=\"panes-container\"\r\n cdkScrollable\r\n @panes\r\n (scroll)=\"navigationArrows($event)\">\r\n <ng-container *ngFor=\"let p of panes; let i = index\">\r\n <div (mouseenter)=\"selectedIndex !== i && !dragging && select(i)\"\r\n (click)=\"select(i)\"\r\n [class.active]=\"selectedIndex === i\" class=\"pane-content\" @pane>\r\n <ngx-component-outlet [type]=\"p.component\" [injector]=\"p.injector\" (create)=\"p._instance = $event\"></ngx-component-outlet>\r\n </div>\r\n <div class=\"pane-separator\" *ngIf=\"i < panes.length - 1\" (mousedown)=\"onResize(p, $event)\"> </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"scroll-arrow forward\"\r\n *ngIf=\"next\">\r\n <i class=\"material-icons mat-icon-rtl-mirror\" matRipple [matRippleUnbounded]=\"true\" [matRippleCentered]=\"true\" [matRippleRadius]=\"30\" [matRippleColor]=\"accent\"\r\n (click)=\"scrollBy(400)\">\r\n arrow_forward_ios\r\n </i>\r\n </div>\r\n</div>\r\n<ng-container *ngIf=\"tabs.length\">\r\n <div class=\"tabs-separator\" (mousedown)=\"onTabResize($event)\"> </div>\r\n <div class=\"mat-elevation-z18 tabs\" [@tabs]=\"tabsAnimation\" (@tabs.done)=\"done()\" #tabing>\r\n <div class=\"row tabs-title\">\r\n <button mat-icon-button (click)=\"tabBack()\" *ngIf=\"swapTab\" [bizdocTooltip]=\"prevGroup || ('Back'|translate)\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\r\n <h2>{{group}}</h2>\r\n <button mat-icon-button (click)=\"expandTab()\" [bizdocTooltip]=\"'Expand'| translate\"><mat-icon inline=\"true\" class=\"mat-icon-rtl-mirror\">open_in_full</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"collapse()\" bizdocTooltip=\"Esc\"><mat-icon>close</mat-icon></button>\r\n </div>\r\n <nav mat-tab-nav-bar color=\"accent\" [disablePagination]=\"true\">\r\n <a mat-tab-link *ngFor=\"let p of tabs; let i = index\" class=\"mat-tab-link\"\r\n (click)=\"selectedTabIndex = i\"\r\n [active]=\"selectedTabIndex === i\">\r\n <mat-icon [matBadge]=\"p.badge\" [matBadgeHidden]=\"!p.badge\" matBadgeSize=\"small\" matBadgeColor=\"accent\">{{p.icon}}</mat-icon> \r\n {{p.title}}\r\n <mat-icon *ngIf=\"p.dismissable\" (click)=\"closeTab(i)\" class=\"tool\">close</mat-icon>\r\n <!--inline=\"true\"-->\r\n </a>\r\n </nav>\r\n <div *ngFor=\"let t of tabs; let i = index\" [style.display]=\"selectedTabIndex === i ? '': 'none'\" class=\"tab\" [@tab]=\"selectedTabIndex\">\r\n <ngx-component-outlet [type]=\"t.component\" [injector]=\"t.injector\" (create)=\"t._instance = $event\"></ngx-component-outlet>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:row;flex-grow:1;overflow-x:hidden}.panes{flex-grow:1;position:relative;overflow-x:hidden;display:inline-flex;flex-direction:column;flex-basis:100%}.panes .panes-title{display:flex;flex-direction:row;align-items:center;min-width:max-content}.panes .panes-title h1{font-size:xx-large;margin:12px;font-weight:100}.panes .panes-title h1 button{vertical-align:middle}.panes .panes-title h1 .breadcrumbs{font-size:smaller}.panes .scroll-arrow{position:absolute;cursor:pointer;top:50%;z-index:1000}.panes .scroll-arrow i{font-size:50px;opacity:.2}.panes .scroll-arrow i:hover{opacity:.9}.panes .scroll-arrow:last-child{right:0}.panes .panes-container{overflow-x:auto;height:100%;display:flex;flex-direction:row}.panes .panes-container .pane-content{display:block;border-right:1px solid #00000014;height:inherit;border-left-width:1px;border-left-style:double;border-left-color:transparent;flex-grow:1;min-width:420px;overflow-y:auto}.panes .panes-container .pane-content .pane{flex-grow:1}.panes .panes-container .pane-separator{width:8px}.pane-separator,.tabs-separator{cursor:ew-resize;background-repeat:no-repeat;background-position:center;display:table;height:100%;-webkit-user-select:none;user-select:none}.tabs-separator{width:12px}::ng-deep [dir=rtl] .scroll-arrow:last-child{right:unset;left:0}.tabs{display:flex;flex-direction:column;z-index:1;-webkit-flex-grow:0;flex-shrink:1;flex-basis:0}.tabs .tabs-title{align-items:center}.tabs .tabs-title h2{font-size:x-large;margin:9px;font-weight:100}.tabs .tabs-title:hover{opacity:1}.tabs .mat-tab-link .tool{opacity:0}.tabs .mat-tab-link:hover .tool{opacity:1}.tabs .tab{flex-grow:1;overflow-y:auto;overflow-x:hidden;display:flex}\n"] }]
|
18799
18830
|
}], ctorParameters: function () {
|
18800
18831
|
return [{ type: undefined, decorators: [{
|
18801
18832
|
type: Inject,
|
@@ -26551,7 +26582,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
26551
26582
|
args: ['attr.aria-describedby']
|
26552
26583
|
}] } });
|
26553
26584
|
|
26554
|
-
|
26585
|
+
// https://day.js.org/docs/en/customization/relative-time
|
26586
|
+
dayjs.extend(relativeTime, {
|
26587
|
+
thresholds: [
|
26588
|
+
{ l: 's', r: 1 },
|
26589
|
+
{ l: 'm', r: 1 },
|
26590
|
+
{ l: 'mm', r: 59, d: 'minute' },
|
26591
|
+
{ l: 'h', r: 1 },
|
26592
|
+
{ l: 'hh', r: 24, d: 'hour' },
|
26593
|
+
{ l: 'd', r: 1 },
|
26594
|
+
{ l: 'dd', r: 29, d: 'day' },
|
26595
|
+
{ l: 'M', r: 1 },
|
26596
|
+
{ l: 'MM', r: 11, d: 'month' },
|
26597
|
+
{ l: 'y' },
|
26598
|
+
{ l: 'yy', d: 'year' }
|
26599
|
+
]
|
26600
|
+
});
|
26555
26601
|
dayjs.extend(duration);
|
26556
26602
|
dayjs.extend(calendar);
|
26557
26603
|
const CORE_COMPONENTS = [CubeParallelViewComponent, CubeExploreViewComponent, CubeChartViewComponent, CubeDocumentSumComponent, CubeDocumentMatrixComponent, CubeDocumentViewComponent, CubePivotViewComponent, TimelineViewComponent,
|
@@ -26936,33 +26982,31 @@ class TraceElementComponent {
|
|
26936
26982
|
this.nodeType = this._session.profile.nodes.find(n => n.name === addInfo.nodeType);
|
26937
26983
|
}
|
26938
26984
|
recipientInfo(recipient) {
|
26939
|
-
|
26940
|
-
|
26941
|
-
|
26942
|
-
|
26943
|
-
|
26944
|
-
const
|
26945
|
-
|
26946
|
-
}
|
26947
|
-
|
26948
|
-
|
26949
|
-
|
26950
|
-
|
26951
|
-
|
26952
|
-
|
26953
|
-
|
26954
|
-
|
26955
|
-
|
26956
|
-
if (
|
26957
|
-
|
26958
|
-
|
26959
|
-
|
26960
|
-
else
|
26961
|
-
|
26962
|
-
|
26963
|
-
|
26964
|
-
return us[0];
|
26965
|
-
}));
|
26985
|
+
return __awaiter(this, void 0, void 0, function* () {
|
26986
|
+
const info = [];
|
26987
|
+
const who = yield this._accounts.get(recipient.userId).toPromise();
|
26988
|
+
if (recipient.escalated) {
|
26989
|
+
const escalations = this.timeline.log.filter(l => l.type === 'Escalation' && l.recipientId === recipient.id);
|
26990
|
+
const escalate = yield this._accounts.get(escalations[0].userId).toPromise();
|
26991
|
+
info.push(this._translate.get('EscalatedBy', this._chat.format(escalate), this._chat.format(who)));
|
26992
|
+
}
|
26993
|
+
if (recipient.substitutingId) {
|
26994
|
+
const substitute = yield this._accounts.get(recipient.substitutingId).toPromise();
|
26995
|
+
if (recipient.byId) {
|
26996
|
+
const by = yield this._accounts.get(recipient.byId).toPromise();
|
26997
|
+
info.push(this._translate.get('SubstitutingBy', this._chat.format(who), this._chat.format(substitute), this._chat.format(by)));
|
26998
|
+
}
|
26999
|
+
else
|
27000
|
+
info.push(this._translate.get('Substituting', this._chat.format(who), this._chat.format(substitute)));
|
27001
|
+
}
|
27002
|
+
else if (recipient.byId) {
|
27003
|
+
const by = yield this._accounts.get(recipient.byId).toPromise();
|
27004
|
+
info.push(this._translate.get('By', this._chat.format(who), this._chat.format(by)));
|
27005
|
+
}
|
27006
|
+
else
|
27007
|
+
info.push(this._chat.format(who));
|
27008
|
+
return info.join(this._translate.comma);
|
27009
|
+
});
|
26966
27010
|
}
|
26967
27011
|
logInfo(log) {
|
26968
27012
|
const observables = [];
|
@@ -27390,7 +27434,10 @@ let SystemDiffComponent = class SystemDiffComponent {
|
|
27390
27434
|
* @param index
|
27391
27435
|
*/
|
27392
27436
|
compare(index) {
|
27393
|
-
const { time: date1 } = this.versions[index],
|
27437
|
+
const { time: date1, file } = this.versions[index], version = this.versions.slice(index + 1).find(v => v.file === file);
|
27438
|
+
if (!version)
|
27439
|
+
return;
|
27440
|
+
const { time: date2 } = version;
|
27394
27441
|
this._working.next(25);
|
27395
27442
|
this._utilityRef.execute({ date1, date2 }).subscribe(r => {
|
27396
27443
|
this.html = '';
|