@sumaris-net/ngx-components 1.22.8 → 1.22.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sumaris-net.ngx-components.umd.js +142 -460
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/esm2015/public_api.js +1 -2
- package/esm2015/src/app/social/social.module.js +2 -2
- package/esm2015/src/app/social/user-event/user-event.module.js +2 -10
- package/esm2015/src/app/social/user-event/user-event.service.js +4 -82
- package/esm2015/sumaris-net.ngx-components.js +7 -8
- package/fesm2015/sumaris-net.ngx-components.js +129 -398
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +0 -1
- package/src/app/social/user-event/user-event.service.d.ts +1 -13
- package/sumaris-net.ngx-components.d.ts +6 -7
- package/sumaris-net.ngx-components.metadata.json +1 -1
- package/esm2015/src/app/social/user-event/user-events.table.js +0 -131
- package/src/app/social/user-event/user-events.table.d.ts +0 -58
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Injector, Input } from '@angular/core';
|
|
3
|
-
import { USER_EVENT_SERVICE } from './user-event.service';
|
|
4
|
-
import { AccountService } from '../../core/services/account.service';
|
|
5
|
-
import { UserEvent, UserEventFilter, UserEventTypes } from './user-event.model';
|
|
6
|
-
import { toBoolean } from '../../shared/functions';
|
|
7
|
-
import { AppTable, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS } from '../../core/table/table.class';
|
|
8
|
-
import { EntitiesTableDataSource } from '../../core/table/entities-table-datasource.class';
|
|
9
|
-
import { EntitiesStorage } from '../../core/services/storage/entities-storage.service';
|
|
10
|
-
import { ENVIRONMENT } from '../../../environments/environment.class';
|
|
11
|
-
const ICONS_MAP = {
|
|
12
|
-
DEBUG_DATA: { matIcon: 'bug_report' },
|
|
13
|
-
INBOX_MESSAGE: { matIcon: 'mail' }
|
|
14
|
-
};
|
|
15
|
-
export class UserEventsTable extends AppTable {
|
|
16
|
-
constructor(injector, accountService, service, entities, cd, environment) {
|
|
17
|
-
super(injector,
|
|
18
|
-
// columns
|
|
19
|
-
RESERVED_START_COLUMNS
|
|
20
|
-
.concat([
|
|
21
|
-
'creationDate',
|
|
22
|
-
'icon',
|
|
23
|
-
'eventType',
|
|
24
|
-
'message'
|
|
25
|
-
])
|
|
26
|
-
.concat(RESERVED_END_COLUMNS), null, null);
|
|
27
|
-
this.accountService = accountService;
|
|
28
|
-
this.service = service;
|
|
29
|
-
this.entities = entities;
|
|
30
|
-
this.cd = cd;
|
|
31
|
-
this.environment = environment;
|
|
32
|
-
this.i18nColumnPrefix = 'SOCIAL.USER_EVENT.';
|
|
33
|
-
this.autoLoad = false; // this.start()
|
|
34
|
-
this.inlineEdition = false;
|
|
35
|
-
this.defaultSortBy = 'creationDate';
|
|
36
|
-
this.defaultSortDirection = 'desc';
|
|
37
|
-
}
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
super.ngOnInit();
|
|
40
|
-
// Load date/time pattern
|
|
41
|
-
this.dateTimePattern = this.translate.instant('COMMON.DATE_TIME_PATTERN');
|
|
42
|
-
this.withContent = toBoolean(this.withContent, false);
|
|
43
|
-
const account = this.accountService.account;
|
|
44
|
-
const pubkey = account && account.pubkey;
|
|
45
|
-
this.isAdmin = this.accountService.isAdmin();
|
|
46
|
-
this.canEdit = this.isAdmin || pubkey === this.recipient;
|
|
47
|
-
this.canDelete = this.canEdit;
|
|
48
|
-
this.setDatasource(new EntitiesTableDataSource(UserEvent, this.service, null, {
|
|
49
|
-
prependNewElements: false,
|
|
50
|
-
suppressErrors: true,
|
|
51
|
-
dataServiceOptions: {
|
|
52
|
-
withContent: this.withContent
|
|
53
|
-
}
|
|
54
|
-
}));
|
|
55
|
-
const filter = this.filter || new UserEventFilter();
|
|
56
|
-
filter.recipients = [this.recipient];
|
|
57
|
-
this.setFilter(filter, { emitEvent: true });
|
|
58
|
-
}
|
|
59
|
-
start() {
|
|
60
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
console.debug('[user-event] Starting...');
|
|
62
|
-
// Waiting account to be ready
|
|
63
|
-
yield this.accountService.ready();
|
|
64
|
-
// Load data
|
|
65
|
-
this.onRefresh.emit();
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
getIcon(source) {
|
|
69
|
-
return ICONS_MAP[source.type];
|
|
70
|
-
}
|
|
71
|
-
getDetail(source) {
|
|
72
|
-
if (!source)
|
|
73
|
-
return undefined;
|
|
74
|
-
if (source.content && source.type === UserEventTypes.DEBUG_DATA) {
|
|
75
|
-
const context = source.content.context;
|
|
76
|
-
if (context && context.__typename) {
|
|
77
|
-
// const actions = this.service.getActionsByTypename(context.__typename);
|
|
78
|
-
return {
|
|
79
|
-
// actions,
|
|
80
|
-
title: source.content.error && source.content.error.message || source.content.message,
|
|
81
|
-
description: source.content.error && source.content.error.details || undefined
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
console.debug('TODO: implement getDetail() for event: ', source);
|
|
86
|
-
return {};
|
|
87
|
-
}
|
|
88
|
-
doAction(action, row) {
|
|
89
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
-
const event = row.currentData;
|
|
91
|
-
// const context = event.content && event.content.context;
|
|
92
|
-
this.markAsLoading();
|
|
93
|
-
if (action && typeof action.executeAction === 'function') {
|
|
94
|
-
try {
|
|
95
|
-
let res = action.executeAction(event /*, context*/);
|
|
96
|
-
res = (res instanceof Promise) ? yield res : res;
|
|
97
|
-
}
|
|
98
|
-
catch (err) {
|
|
99
|
-
this.setError(err && err.message || err);
|
|
100
|
-
console.error(`[user-event] Failed to execute action ${action.name}: ${err && err.message || err}`, err);
|
|
101
|
-
}
|
|
102
|
-
finally {
|
|
103
|
-
this.markAsLoaded();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
UserEventsTable.decorators = [
|
|
110
|
-
{ type: Component, args: [{
|
|
111
|
-
selector: 'app-user-events-table',
|
|
112
|
-
template: "\n<!-- Type = options menu -->\n<mat-menu #optionsMenu=\"matMenu\" xPosition=\"after\">\n\n <!-- display columns -->\n <button mat-menu-item\n (click)=\"openSelectColumnsModal($event)\">\n <mat-icon>view_column</mat-icon>\n <ion-label translate>COMMON.DISPLAYED_COLUMNS_DOTS</ion-label>\n </button>\n\n</mat-menu>\n\n<!-- top header -->\n<mat-toolbar>\n\n <ng-container *ngIf=\"!selection.hasValue(); else hasSelection\">\n\n <button mat-icon-button [title]=\"'COMMON.BTN_REFRESH'|translate\" (click)=\"onRefresh.emit()\">\n <mat-icon>refresh</mat-icon>\n </button>\n\n </ng-container>\n\n <!-- if row selection -->\n <ng-template #hasSelection>\n\n <!-- delete -->\n <button mat-icon-button class=\"hidden-xs hidden-sm\" *ngIf=\"canDelete\"\n [title]=\"'COMMON.BTN_DELETE'|translate\" (click)=\"deleteSelection($event)\">\n <mat-icon>delete</mat-icon>\n </button>\n </ng-template>\n\n <!-- error -->\n <ion-item *ngIf=\"error\" hidden-xs hidden-sm hidden-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <div class=\"toolbar-spacer\"></div>\n\n <button mat-icon-button\n [title]=\"'COMMON.BTN_OPTIONS'|translate\"\n [matMenuTriggerFor]=\"optionsMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n</mat-toolbar>\n\n\n<mat-table [dataSource]=\"dataSource\" matSort\n [matSortActive]=\"defaultSortBy\"\n [matSortDirection]=\"defaultSortDirection\"\n matSortDisableClear [trackBy]=\"trackByFn\">\n\n <!-- select -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <!-- id -->\n <ng-container matColumnDef=\"id\">\n <mat-header-cell *matHeaderCellDef mat-sort-header [class.cdk-visually-hidden]=\"!isAdmin\">\n <app-loading-spinner [loading]=\"loadingSubject|async\"><ion-label>#</ion-label></app-loading-spinner>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!isAdmin\">{{ row.currentData.id | mathAbs }}</mat-cell>\n </ng-container>\n\n <!-- creationDate -->\n <ng-container matColumnDef=\"creationDate\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>SOCIAL.USER_EVENT.CREATION_DATE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\">\n <ion-text>\n {{row.currentData.creationDate | dateFromNow }}<br/>\n <ion-text color=\"medium\"><small>{{row.currentData.creationDate | dateFormat: {time: true} }}</small></ion-text>\n </ion-text>\n </mat-cell>\n </ng-container>\n\n <!-- icon -->\n <ng-container matColumnDef=\"icon\">\n <mat-header-cell *matHeaderCellDef>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"getIcon(row.currentData); let details\">\n <ion-icon slot=\"start\" *ngIf=\"details.icon\" [name]=\"details.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"details.matIcon\">{{details.matIcon}}</mat-icon>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <!-- event type -->\n <ng-container matColumnDef=\"eventType\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>SOCIAL.USER_EVENT.EVENT_TYPE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <span>{{'SOCIAL.USER_EVENT.TYPE_ENUM.' + row.currentData.eventType | translate}}</span>\n </mat-cell>\n </ng-container>\n\n <!-- message -->\n <ng-container matColumnDef=\"message\">\n <mat-header-cell *matHeaderCellDef>\n <ion-label translate>SOCIAL.USER_EVENT.MESSAGE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"getDetail(row.currentData); let details\">\n <ion-text [innerHTML]=\"details.title|translate\">\n </ion-text>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <!-- Actions buttons column -->\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\">\n <ng-container *ngIf=\"getDetail(row.currentData); let details\">\n <button mat-icon-button color=\"light\"\n *ngFor=\"let action of details.actions\"\n [title]=\"action.title |translate\"\n [color]=\"action.color\"\n (click)=\"doAction(action, row)\">\n <app-icon slot=\"start\" *ngIf=\"action.iconRef\" [ref]=\"action.iconRef\"></app-icon>\n </button>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"mat-row-disabled\"\n (click)=\"clickRow($event, row)\"></mat-row>\n\n</mat-table>\n\n<ion-row class=\"ion-no-padding\">\n <ion-col></ion-col>\n <ion-col class=\"ion-no-padding\" size=\"auto\">\n <mat-paginator [length]=\"totalRowCount\" [pageSize]=\"defaultPageSize\" [pageSizeOptions]=\"defaultPageSizeOptions\" showFirstLastButtons>\n </mat-paginator>\n </ion-col>\n</ion-row>\n",
|
|
113
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
114
|
-
styles: [".mat-header-row .mat-column-icon,.mat-row .mat-column-icon{max-width:40px;padding-left:0}.mat-header-row .mat-column-icon ion-icon,.mat-header-row .mat-column-icon mat-icon,.mat-row .mat-column-icon ion-icon,.mat-row .mat-column-icon mat-icon{font-size:1.2em;height:1.2em;width:1.2em}.mat-header-row .mat-column-creationDate,.mat-row .mat-column-creationDate{min-width:100px;max-width:120px}"]
|
|
115
|
-
},] }
|
|
116
|
-
];
|
|
117
|
-
UserEventsTable.ctorParameters = () => [
|
|
118
|
-
{ type: Injector },
|
|
119
|
-
{ type: AccountService },
|
|
120
|
-
{ type: undefined, decorators: [{ type: Inject, args: [USER_EVENT_SERVICE,] }] },
|
|
121
|
-
{ type: EntitiesStorage },
|
|
122
|
-
{ type: ChangeDetectorRef },
|
|
123
|
-
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] }
|
|
124
|
-
];
|
|
125
|
-
UserEventsTable.propDecorators = {
|
|
126
|
-
recipient: [{ type: Input }],
|
|
127
|
-
withContent: [{ type: Input }],
|
|
128
|
-
defaultSortBy: [{ type: Input }],
|
|
129
|
-
defaultSortDirection: [{ type: Input }]
|
|
130
|
-
};
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudHMudGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3VzZXItZXZlbnRzLnRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBRXJILE9BQU8sRUFBb0Isa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFDLFNBQVMsRUFBbUIsZUFBZSxFQUFFLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQy9GLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxPQUFPLEVBQUMsUUFBUSxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDcEcsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFFekYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBR3JGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQWlDcEUsTUFBTSxTQUFTLEdBQXFDO0lBQ2xELFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7SUFDckMsYUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtDQUNuQyxDQUFDO0FBU0YsTUFBTSxPQUFPLGVBQWdCLFNBQVEsUUFBb0M7SUFjdkUsWUFDRSxRQUFrQixFQUNSLGNBQThCLEVBQ0YsT0FBc0QsRUFDbEYsUUFBeUIsRUFDekIsRUFBcUIsRUFDQSxXQUFXO1FBRTFDLEtBQUssQ0FBQyxRQUFRO1FBQ1osVUFB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LENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUMxRzt3QkFBUztvQkFDUixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7aUJBQ3JCO2FBQ0Y7UUFDSCxDQUFDO0tBQUE7OztZQW5JRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFFakMsMHdMQUF1QztnQkFDdkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUF4RHNFLFFBQVE7WUFHdkUsY0FBYzs0Q0F3RWpCLE1BQU0sU0FBQyxrQkFBa0I7WUFqRXRCLGVBQWU7WUFWVSxpQkFBaUI7NENBOEU3QyxNQUFNLFNBQUMsV0FBVzs7O3dCQVpwQixLQUFLOzBCQUVMLEtBQUs7NEJBQ0wsS0FBSzttQ0FDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RhYmxlRWxlbWVudH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7SVVzZXJFdmVudFNlcnZpY2UsIFVTRVJfRVZFTlRfU0VSVklDRX0gZnJvbSAnLi91c2VyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZX0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyRXZlbnQsIFVzZXJFdmVudEFjdGlvbiwgVXNlckV2ZW50RmlsdGVyLCBVc2VyRXZlbnRUeXBlc30gZnJvbSAnLi91c2VyLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7dG9Cb29sZWFufSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7TW9tZW50fSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtBcHBUYWJsZSwgUkVTRVJWRURfRU5EX0NPTFVNTlMsIFJFU0VSVkVEX1NUQVJUX0NPTFVNTlN9IGZyb20gJy4uLy4uL2NvcmUvdGFibGUvdGFibGUuY2xhc3MnO1xuaW1wb3J0IHtFbnRpdGllc1RhYmxlRGF0YVNvdXJjZX0gZnJvbSAnLi4vLi4vY29yZS90YWJsZS9lbnRpdGllcy10YWJsZS1kYXRhc291cmNlLmNsYXNzJztcbmltcG9ydCB7U29ydERpcmVjdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge0VudGl0aWVzU3RvcmFnZX0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9zdG9yYWdlL2VudGl0aWVzLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1ByZWRlZmluZWRDb2xvcnN9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7SUVudGl0eX0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtFTlZJUk9OTUVOVH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJFdmVudERldGFpbDxUIGV4dGVuZHMgSUVudGl0eTxUPj4ge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcblxuICBhY3Rpb24/OiBzdHJpbmcgfCBhbnk7XG4gIGFjdGlvblRpdGxlPzogc3RyaW5nO1xuICBhY3Rpb25Db2xvcj86IFByZWRlZmluZWRDb2xvcnM7XG5cbiAgaWNvbj86IHN0cmluZztcbiAgbWF0SWNvbj86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGNzc0NsYXNzPzogc3RyaW5nO1xuICB0aW1lPzogTW9tZW50O1xuXG4gIC8vIEEgY29uZmlnIHByb3BlcnR5LCB0byBvdmVycmlkZSB0aGUgdGl0bGVcbiAgdGl0bGVQcm9wZXJ0eT86IHN0cmluZztcbiAgdGl0bGVBcmdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvLyBjb252ZXJzaW9uXG4gIGZyb21PYmplY3Q/OiAoc291cmNlOiBhbnkpID0+IFQ7XG4gIGNoaWxkcmVuRmllbGRzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckV2ZW50SWNvbiB7XG4gIGljb24/OiBzdHJpbmc7XG4gIG1hdEljb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogUHJlZGVmaW5lZENvbG9ycztcbn1cblxuY29uc3QgSUNPTlNfTUFQOiB7IFtrZXk6IHN0cmluZ106IFVzZXJFdmVudEljb24gfSA9IHtcbiAgREVCVUdfREFUQTogeyBtYXRJY29uOiAnYnVnX3JlcG9ydCcgfSxcbiAgSU5CT1hfTUVTU0FHRTogeyBtYXRJY29uOiAnbWFpbCcgfVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXItZXZlbnRzLXRhYmxlJyxcbiAgc3R5bGVVcmxzOiBbJ3VzZXItZXZlbnRzLnRhYmxlLnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItZXZlbnRzLnRhYmxlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudHNUYWJsZSBleHRlbmRzIEFwcFRhYmxlPFVzZXJFdmVudCwgVXNlckV2ZW50RmlsdGVyPlxuICBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZGF0ZVRpbWVQYXR0ZXJuOiBzdHJpbmc7XG4gIGNhbkVkaXQ6IGJvb2xlYW47XG4gIGNhbkRlbGV0ZTogYm9vbGVhbjtcbiAgaXNBZG1pbjogYm9vbGVhbjtcblxuICBASW5wdXQoKSByZWNpcGllbnQ6IHN0cmluZztcblxuICBASW5wdXQoKSB3aXRoQ29udGVudDogYm9vbGVhbjtcbiAgQElucHV0KCkgZGVmYXVsdFNvcnRCeTogc3RyaW5nO1xuICBASW5wdXQoKSBkZWZhdWx0U29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBASW5qZWN0KFVTRVJfRVZFTlRfU0VSVklDRSkgcHJvdGVjdGVkIHNlcnZpY2U6IElVc2VyRXZlbnRTZXJ2aWNlPFVzZXJFdmVudCwgVXNlckV2ZW50RmlsdGVyPixcbiAgICBwcm90ZWN0ZWQgZW50aXRpZXM6IEVudGl0aWVzU3RvcmFnZSxcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudFxuICApIHtcbiAgICBzdXBlcihpbmplY3RvcixcbiAgICAgIC8vIGNvbHVtbnNcbiAgICAgIFJFU0VSVkVEX1NUQVJUX0NPTFVNTlNcbiAgICAgICAgLmNvbmNhdChbXG4gICAgICAgICAgJ2NyZWF0aW9uRGF0ZScsXG4gICAgICAgICAgJ2ljb24nLFxuICAgICAgICAgICdldmVudFR5cGUnLFxuICAgICAgICAgICdtZXNzYWdlJ1xuICAgICAgICBdKVxuICAgICAgICAuY29uY2F0KFJFU0VSVkVEX0VORF9DT0xVTU5TKSxcbiAgICAgIG51bGwsXG4gICAgICBudWxsKTtcblxuICAgIHRoaXMuaTE4bkNvbHVtblByZWZpeCA9ICdTT0NJQUwuVVNFUl9FVkVOVC4nO1xuICAgIHRoaXMuYXV0b0xvYWQgPSBmYWxzZTsgLy8gdGhpcy5zdGFydCgpXG4gICAgdGhpcy5pbmxpbmVFZGl0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5kZWZhdWx0U29ydEJ5ID0gJ2NyZWF0aW9uRGF0ZSc7XG4gICAgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbiA9ICdkZXNjJztcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIExvYWQgZGF0ZS90aW1lIHBhdHRlcm5cbiAgICB0aGlzLmRhdGVUaW1lUGF0dGVybiA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0NPTU1PTi5EQVRFX1RJTUVfUEFUVEVSTicpO1xuICAgIHRoaXMud2l0aENvbnRlbnQgPSB0b0Jvb2xlYW4odGhpcy53aXRoQ29udGVudCwgZmFsc2UpO1xuXG4gICAgY29uc3QgYWNjb3VudCA9IHRoaXMuYWNjb3VudFNlcnZpY2UuYWNjb3VudDtcbiAgICBjb25zdCBwdWJrZXkgPSBhY2NvdW50ICYmIGFjY291bnQucHVia2V5O1xuICAgIHRoaXMuaXNBZG1pbiA9IHRoaXMuYWNjb3VudFNlcnZpY2UuaXNBZG1pbigpO1xuICAgIHRoaXMuY2FuRWRpdCA9IHRoaXMuaXNBZG1pbiB8fCBwdWJrZXkgPT09IHRoaXMucmVjaXBpZW50O1xuICAgIHRoaXMuY2FuRGVsZXRlID0gdGhpcy5jYW5FZGl0O1xuXG4gICAgdGhpcy5zZXREYXRhc291cmNlKG5ldyBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZShVc2VyRXZlbnQsXG4gICAgICB0aGlzLnNlcnZpY2UsXG4gICAgICBudWxsLFxuICAgICAge1xuICAgICAgICBwcmVwZW5kTmV3RWxlbWVudHM6IGZhbHNlLFxuICAgICAgICBzdXBwcmVzc0Vycm9yczogdHJ1ZSxcbiAgICAgICAgZGF0YVNlcnZpY2VPcHRpb25zOiB7XG4gICAgICAgICAgd2l0aENvbnRlbnQ6IHRoaXMud2l0aENvbnRlbnRcbiAgICAgICAgfVxuICAgICAgfSkpO1xuXG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5maWx0ZXIgfHwgbmV3IFVzZXJFdmVudEZpbHRlcigpO1xuICAgIGZpbHRlci5yZWNpcGllbnRzID0gW3RoaXMucmVjaXBpZW50XTtcbiAgICB0aGlzLnNldEZpbHRlcihmaWx0ZXIsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnW3VzZXItZXZlbnRdIFN0YXJ0aW5nLi4uJyk7XG5cbiAgICAvLyBXYWl0aW5nIGFjY291bnQgdG8gYmUgcmVhZHlcbiAgICBhd2FpdCB0aGlzLmFjY291bnRTZXJ2aWNlLnJlYWR5KCk7XG5cbiAgICAvLyBMb2FkIGRhdGFcbiAgICB0aGlzLm9uUmVmcmVzaC5lbWl0KCk7XG4gIH1cblxuICBnZXRJY29uKHNvdXJjZTogVXNlckV2ZW50KTogVXNlckV2ZW50SWNvbiB7XG4gICAgcmV0dXJuIElDT05TX01BUFtzb3VyY2UudHlwZV07XG4gIH1cblxuICBnZXREZXRhaWwoc291cmNlOiBVc2VyRXZlbnQpOiBQYXJ0aWFsPFVzZXJFdmVudERldGFpbDxJRW50aXR5PGFueT4+ICYgeyBhY3Rpb25zOiBVc2VyRXZlbnRBY3Rpb25bXSB9PiB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoc291cmNlLmNvbnRlbnQgJiYgc291cmNlLnR5cGUgPT09IFVzZXJFdmVudFR5cGVzLkRFQlVHX0RBVEEpIHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzb3VyY2UuY29udGVudC5jb250ZXh0O1xuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fX3R5cGVuYW1lKSB7XG4gICAgICAgIC8vIGNvbnN0IGFjdGlvbnMgPSB0aGlzLnNlcnZpY2UuZ2V0QWN0aW9uc0J5VHlwZW5hbWUoY29udGV4dC5fX3R5cGVuYW1lKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAvLyBhY3Rpb25zLFxuICAgICAgICAgIHRpdGxlOiBzb3VyY2UuY29udGVudC5lcnJvciAmJiBzb3VyY2UuY29udGVudC5lcnJvci5tZXNzYWdlIHx8IHNvdXJjZS5jb250ZW50Lm1lc3NhZ2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHNvdXJjZS5jb250ZW50LmVycm9yICYmIHNvdXJjZS5jb250ZW50LmVycm9yLmRldGFpbHMgfHwgdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZygnVE9ETzogaW1wbGVtZW50IGdldERldGFpbCgpIGZvciBldmVudDogJywgc291cmNlKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuXG4gIGFzeW5jIGRvQWN0aW9uKGFjdGlvbjogVXNlckV2ZW50QWN0aW9uLCByb3c6IFRhYmxlRWxlbWVudDxVc2VyRXZlbnQ+KSB7XG5cbiAgICBjb25zdCBldmVudCA9IHJvdy5jdXJyZW50RGF0YTtcbiAgICAvLyBjb25zdCBjb250ZXh0ID0gZXZlbnQuY29udGVudCAmJiBldmVudC5jb250ZW50LmNvbnRleHQ7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIGlmIChhY3Rpb24gJiYgdHlwZW9mIGFjdGlvbi5leGVjdXRlQWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgcmVzID0gYWN0aW9uLmV4ZWN1dGVBY3Rpb24oZXZlbnQvKiwgY29udGV4dCovKTtcbiAgICAgICAgcmVzID0gKHJlcyBpbnN0YW5jZW9mIFByb21pc2UpID8gYXdhaXQgcmVzIDogcmVzO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFt1c2VyLWV2ZW50XSBGYWlsZWQgdG8gZXhlY3V0ZSBhY3Rpb24gJHthY3Rpb24ubmFtZX06ICR7ZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycn1gLCBlcnIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIl19
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Injector, OnInit } from '@angular/core';
|
|
2
|
-
import { TableElement } from '@e-is/ngx-material-table';
|
|
3
|
-
import { IUserEventService } from './user-event.service';
|
|
4
|
-
import { AccountService } from '../../core/services/account.service';
|
|
5
|
-
import { UserEvent, UserEventAction, UserEventFilter } from './user-event.model';
|
|
6
|
-
import { Moment } from 'moment';
|
|
7
|
-
import { AppTable } from '../../core/table/table.class';
|
|
8
|
-
import { SortDirection } from '@angular/material/sort';
|
|
9
|
-
import { EntitiesStorage } from '../../core/services/storage/entities-storage.service';
|
|
10
|
-
import { PredefinedColors } from '@ionic/core';
|
|
11
|
-
import { IEntity } from '../../core/services/model/entity.model';
|
|
12
|
-
export interface UserEventDetail<T extends IEntity<T>> {
|
|
13
|
-
title: string;
|
|
14
|
-
description?: string;
|
|
15
|
-
path?: string;
|
|
16
|
-
action?: string | any;
|
|
17
|
-
actionTitle?: string;
|
|
18
|
-
actionColor?: PredefinedColors;
|
|
19
|
-
icon?: string;
|
|
20
|
-
matIcon?: string;
|
|
21
|
-
color?: string;
|
|
22
|
-
cssClass?: string;
|
|
23
|
-
time?: Moment;
|
|
24
|
-
titleProperty?: string;
|
|
25
|
-
titleArgs?: {
|
|
26
|
-
[key: string]: string;
|
|
27
|
-
};
|
|
28
|
-
fromObject?: (source: any) => T;
|
|
29
|
-
childrenFields?: string[];
|
|
30
|
-
}
|
|
31
|
-
export interface UserEventIcon {
|
|
32
|
-
icon?: string;
|
|
33
|
-
matIcon?: string;
|
|
34
|
-
color?: PredefinedColors;
|
|
35
|
-
}
|
|
36
|
-
export declare class UserEventsTable extends AppTable<UserEvent, UserEventFilter> implements OnInit {
|
|
37
|
-
protected accountService: AccountService;
|
|
38
|
-
protected service: IUserEventService<UserEvent, UserEventFilter>;
|
|
39
|
-
protected entities: EntitiesStorage;
|
|
40
|
-
protected cd: ChangeDetectorRef;
|
|
41
|
-
protected environment: any;
|
|
42
|
-
dateTimePattern: string;
|
|
43
|
-
canEdit: boolean;
|
|
44
|
-
canDelete: boolean;
|
|
45
|
-
isAdmin: boolean;
|
|
46
|
-
recipient: string;
|
|
47
|
-
withContent: boolean;
|
|
48
|
-
defaultSortBy: string;
|
|
49
|
-
defaultSortDirection: SortDirection;
|
|
50
|
-
constructor(injector: Injector, accountService: AccountService, service: IUserEventService<UserEvent, UserEventFilter>, entities: EntitiesStorage, cd: ChangeDetectorRef, environment: any);
|
|
51
|
-
ngOnInit(): void;
|
|
52
|
-
start(): Promise<void>;
|
|
53
|
-
getIcon(source: UserEvent): UserEventIcon;
|
|
54
|
-
getDetail(source: UserEvent): Partial<UserEventDetail<IEntity<any>> & {
|
|
55
|
-
actions: UserEventAction[];
|
|
56
|
-
}>;
|
|
57
|
-
doAction(action: UserEventAction, row: TableElement<UserEvent>): Promise<void>;
|
|
58
|
-
}
|