@firestitch/system 12.2.3 → 12.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/components/crons/crons.component.d.ts +2 -0
- package/bundles/firestitch-system.umd.js +8 -2
- package/bundles/firestitch-system.umd.js.map +1 -1
- package/esm2015/app/components/crons/crons.component.js +11 -3
- package/fesm2015/firestitch-system.js +9 -3
- package/fesm2015/firestitch-system.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,6 +11,8 @@ import { CronStates } from '../../consts';
|
|
|
11
11
|
import { CronState } from '../../enums';
|
|
12
12
|
import { SelectionActionType } from '@firestitch/selection';
|
|
13
13
|
import { FsPrompt } from '@firestitch/prompt';
|
|
14
|
+
import { parse } from '@firestitch/date';
|
|
15
|
+
import { differenceInSeconds } from 'date-fns';
|
|
14
16
|
import * as i0 from "@angular/core";
|
|
15
17
|
import * as i1 from "@firestitch/message";
|
|
16
18
|
import * as i2 from "@angular/material/dialog";
|
|
@@ -26,6 +28,7 @@ export class CronsComponent {
|
|
|
26
28
|
this._prompt = _prompt;
|
|
27
29
|
this.config = null;
|
|
28
30
|
this.cronStates = indexNameValue(CronStates);
|
|
31
|
+
this.CronState = CronState;
|
|
29
32
|
this._destroy$ = new Subject();
|
|
30
33
|
}
|
|
31
34
|
ngOnInit() {
|
|
@@ -51,7 +54,12 @@ export class CronsComponent {
|
|
|
51
54
|
fetch: query => {
|
|
52
55
|
query.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
53
56
|
return this.loadCrons(query)
|
|
54
|
-
.pipe(map((
|
|
57
|
+
.pipe(map((crons) => ({
|
|
58
|
+
data: crons
|
|
59
|
+
.map((cron) => {
|
|
60
|
+
return Object.assign(Object.assign({}, cron), { runningDuration: differenceInSeconds(parse(cron.createDate), new Date()) });
|
|
61
|
+
})
|
|
62
|
+
})));
|
|
55
63
|
},
|
|
56
64
|
};
|
|
57
65
|
if (this.bulk) {
|
|
@@ -188,7 +196,7 @@ export class CronsComponent {
|
|
|
188
196
|
}
|
|
189
197
|
}
|
|
190
198
|
CronsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CronsComponent, deps: [{ token: i1.FsMessage }, { token: i2.MatDialog }, { token: i3.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
|
|
191
|
-
CronsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronsComponent, selector: "fs-system-crons", inputs: { enable: "enable", disable: "disable", kill: "kill", queue: "queue", run: "run", loadCrons: "loadCrons", loadCron: "loadCron", loadCronLogs: "loadCronLogs", bulk: "bulk" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a (click)=\"open(row)\">{{row.name}}</a>\r\n <div *ngIf=\"row.cronSetting\">\r\n <small>{{row.cronSetting.summary}}</small>\r\n </div>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column align=\"center\">\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.host || row.processId; else status\">\r\n <fs-popover \r\n [maxWidth]=\"
|
|
199
|
+
CronsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronsComponent, selector: "fs-system-crons", inputs: { enable: "enable", disable: "disable", kill: "kill", queue: "queue", run: "run", loadCrons: "loadCrons", loadCron: "loadCron", loadCronLogs: "loadCronLogs", bulk: "bulk" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a (click)=\"open(row)\">{{row.name}}</a>\r\n <div *ngIf=\"row.cronSetting\">\r\n <small>{{row.cronSetting.summary}}</small>\r\n </div>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column align=\"center\">\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.host || row.processId; else status\">\r\n <fs-popover \r\n [maxWidth]=\"null\"\r\n [template]=\"statusPopover\" \r\n size=\"small\">\r\n <ng-container *ngTemplateOutlet=\"status\"></ng-container>\r\n </fs-popover>\r\n <ng-template #statusPopover>\r\n <div *ngIf=\"row.host\">Host: {{row.host}}</div>\r\n <div *ngIf=\"row.processId\">Process ID: {{row.processId}}</div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #status>\r\n {{cronStates[row.state]}}\r\n <ng-container *ngIf=\"row.state === CronState.Running\">\r\n <div class=\"small\">\r\n Duration: {{ row.runningDuration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Last Ran</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.duration===null; else lastRan\">\r\n Never\r\n </ng-container>\r\n <ng-template #lastRan>\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n <div class=\"small\" *ngIf=\"row.duration\">\r\n Duration: {{ row.duration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\r\n </div>\r\n </ng-template>\r\n </ng-template>\r\n </fs-list-column>\r\n</fs-list>\r\n", styles: [""], components: [{ type: i4.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i5.FsPopoverComponent, selector: "fs-popover", inputs: ["template", "data", "leaveDelay", "showDelay", "maxWidth", "wrapperClass", "autoShow", "autoClose", "loadingDiameter", "loading", "indication", "position", "theme", "size", "trigger"] }, { type: i6.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i4.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i4.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i4.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "fsDateDuration": i6.FsDateDurationPipe } });
|
|
192
200
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CronsComponent, decorators: [{
|
|
193
201
|
type: Component,
|
|
194
202
|
args: [{
|
|
@@ -218,4 +226,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
218
226
|
}], bulk: [{
|
|
219
227
|
type: Input
|
|
220
228
|
}] } });
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2Nyb25zL2Nyb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jcm9ucy9jcm9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFnQixlQUFlLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFFdkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7QUFROUMsTUFBTSxPQUFPLGNBQWM7SUFtQnpCLFlBQ1UsUUFBbUIsRUFDbkIsT0FBa0IsRUFDbEIsT0FBaUI7UUFGakIsYUFB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SUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUNwSixDQUFDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7OzRHQWxOVSxjQUFjO2dHQUFkLGNBQWMsbVJBRWQsZUFBZSw4REN6QjVCLGlyREEyQ0E7NEZEcEJhLGNBQWM7a0JBTDFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsV0FBVyxFQUFFLHdCQUF3QjtvQkFDckMsU0FBUyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3RDOytJQUcrQyxJQUFJO3NCQUFqRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRTVCLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsR0FBRztzQkFBbEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XHJcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcclxuaW1wb3J0IHsgRnNMaXN0Q29uZmlnLCBGc0xpc3RDb21wb25lbnQsIEZzTGlzdEFjdGlvblNlbGVjdGVkIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGlzdCc7XHJcblxyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IGluZGV4TmFtZVZhbHVlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbmRleC1uYW1lLXZhbHVlJztcclxuaW1wb3J0IHsgQ3JvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nyb24vY3Jvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDcm9uU3RhdGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcclxuaW1wb3J0IHsgQ3JvblN0YXRlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25BY3Rpb25UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0aW9uJztcclxuaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZnMtc3lzdGVtLWNyb25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3JvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Nyb25zLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcm9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZChGc0xpc3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGxpc3Q6IEZzTGlzdENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGVuYWJsZTogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGtpbGw6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgcXVldWU6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgcnVuOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGxvYWRDcm9uczogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgcHVibGljIGxvYWRDcm9uOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGxvYWRDcm9uTG9nczogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTx7IGRhdGE6IGFueVtdLCBwYWdpbmc6IGFueSB9PjtcclxuICBASW5wdXQoKSBwdWJsaWMgYnVsazogKGFjdGlvbk5hbWU6IHN0cmluZywgZGF0YTogYW55W10pID0+IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgcHVibGljIGNvbmZpZzogRnNMaXN0Q29uZmlnID0gbnVsbDtcclxuICBwdWJsaWMgY3JvblN0YXRlcyA9IGluZGV4TmFtZVZhbHVlKENyb25TdGF0ZXMpO1xyXG5cclxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2UsXHJcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgX3Byb21wdDogRnNQcm9tcHQsXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29uZmlnTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29uZmlnTGlzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnID0ge1xyXG4gICAgICBwYWdpbmc6IGZhbHNlLFxyXG4gICAgICBmaWx0ZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuS2V5d29yZCxcclxuICAgICAgICAgIG5hbWU6ICdrZXl3b3JkJyxcclxuICAgICAgICAgIGxhYmVsOiAnU2VhcmNoJ1xyXG4gICAgICAgIH1cclxuICAgICAgXSxcclxuICAgICAgcm93QWN0aW9uczogdGhpcy5nZXRDcm9uQWN0aW9ucygpXHJcbiAgICAgIC5tYXAoKHJvd0FjdGlvbikgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5yb3dBY3Rpb24sXHJcbiAgICAgICAgICBjbGljazogKGNyb24pID0+IHtcclxuICAgICAgICAgICAgcm93QWN0aW9uLmFjdGlvbihjcm9uKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIGZldGNoOiBxdWVyeSA9PiB7XHJcbiAgICAgICAgcXVlcnkudGltZXpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZENyb25zKHF1ZXJ5KVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+ICh7IGRhdGE6IHJlc3BvbnNlIH0pKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSwgICAgXHJcbiAgICB9O1xyXG5cclxuICAgIGlmKHRoaXMuYnVsaykge1xyXG4gICAgICB0aGlzLmNvbmZpZy5zZWxlY3Rpb24gPSB7XHJcbiAgICAgICAgc2VsZWN0QWxsOiBmYWxzZSxcclxuICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IFNlbGVjdGlvbkFjdGlvblR5cGUuQWN0aW9uLFxyXG4gICAgICAgICAgICBuYW1lOiAnZGlzYWJsZScsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnRGlzYWJsZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IFNlbGVjdGlvbkFjdGlvblR5cGUuQWN0aW9uLFxyXG4gICAgICAgICAgICBuYW1lOiAnZW5hYmxlJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdFbmFibGUnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgYWN0aW9uU2VsZWN0ZWQ6IChhY3Rpb246IEZzTGlzdEFjdGlvblNlbGVjdGVkKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5idWxrKGFjdGlvbi5hY3Rpb24ubmFtZSwgYWN0aW9uLnNlbGVjdGVkKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnQXBwbGllZCBDaGFuZ2VzJyk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW4oY3Jvbikge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oQ3JvbkNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7IFxyXG4gICAgICAgIGNyb24sXHJcbiAgICAgICAgbG9hZENyb25Mb2dzOiB0aGlzLmxvYWRDcm9uTG9ncyxcclxuICAgICAgICBsb2FkQ3JvbjogdGhpcy5sb2FkQ3JvbixcclxuICAgICAgICBjcm9uQWN0aW9uczogdGhpcy5nZXRDcm9uQWN0aW9ucygpLFxyXG4gICAgICB9LFxyXG4gICAgICB3aWR0aDogJzg1JSdcclxuICAgIH0pO1xyXG4gIH0gIFxyXG5cclxuICBwdWJsaWMgZ2V0Q3JvbkFjdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMucXVldWUoZGF0YSlcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnUXVldWVkIGNyb24nKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsOiAnUXVldWUnLFxyXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLklkbGUgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMucnVuKGRhdGEpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0Nyb24gcmFuJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsOiAnUnVuJyxcclxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5JZGxlIHx8IGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5GYWlsZWQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVuYWJsZShkYXRhKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdFbmFibGVkIGNyb24nKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsOiAnRW5hYmxlJyxcclxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5EaXNhYmxlZDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZShkYXRhKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdEaXNhYmxlZCBjcm9uJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbDogJ0Rpc2FibGUnLFxyXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLklkbGUgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21wdC5jb25maXJtKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtJyxcclxuICAgICAgICAgICAgdGVtcGxhdGU6ICdBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8ga2lsbCB0aGUgY3Jvbj8nLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmtpbGwoZGF0YSk7XHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnS2lsbGVkIGNyb24nKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9KSwgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXHJcbiAgICAgICAgICAgICk7ICAgICAgICAgIFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGFiZWw6ICdLaWxsJyxcclxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm0nLFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byByZXNldCB0aGUgY3Jvbj8nLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVuYWJsZShkYXRhKTtcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdSZXNldCBjcm9uJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgfSksICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxyXG4gICAgICAgICAgICApOyBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsOiAnUmVzZXQnLFxyXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLktpbGxpbmcgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLlJ1bm5pbmcgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZCB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuUXVldWVkO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdOyAgICBcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxmcy1saXN0IFtjb25maWddPVwiY29uZmlnXCI+XHJcbiAgPGZzLWxpc3QtY29sdW1uPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPk5hbWU8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgIDxhIChjbGljayk9XCJvcGVuKHJvdylcIj57e3Jvdy5uYW1lfX08L2E+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJyb3cuY3JvblNldHRpbmdcIj5cclxuICAgICAgICA8c21hbGw+e3tyb3cuY3JvblNldHRpbmcuc3VtbWFyeX19PC9zbWFsbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZnMtbGlzdC1jb2x1bW4+XHJcbiAgPGZzLWxpc3QtY29sdW1uIGFsaWduPVwiY2VudGVyXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+U3RhdHVzPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93Lmhvc3QgfHwgcm93LnByb2Nlc3NJZDsgZWxzZSBzdGF0dXNcIj5cclxuICAgICAgICA8ZnMtcG9wb3ZlciBcclxuICAgICAgICAgICAgW21heFdpZHRoXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cInN0YXR1c1BvcG92ZXJcIiBcclxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhdHVzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9mcy1wb3BvdmVyPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhdHVzUG9wb3Zlcj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3cuaG9zdFwiPkhvc3Q6IHt7cm93Lmhvc3R9fTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInJvdy5wcm9jZXNzSWRcIj5Qcm9jZXNzIElEOiB7e3Jvdy5wcm9jZXNzSWR9fTwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3N0YXR1cz5cclxuICAgICAgICB7e2Nyb25TdGF0ZXNbcm93LnN0YXRlXX19XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZnMtbGlzdC1jb2x1bW4+XHJcbiAgPGZzLWxpc3QtY29sdW1uPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPkxhc3QgUmFuPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LmR1cmF0aW9uPT09bnVsbDsgZWxzZSBsYXN0UmFuXCI+XHJcbiAgICAgICAgTmV2ZXJcclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjbGFzdFJhbj5cclxuICAgICAgICA8ZnMtZGF0ZS1hZ28gW2RhdGVdPVwicm93LmNyZWF0ZURhdGVcIj48L2ZzLWRhdGUtYWdvPlxyXG4gICAgICAgIDxkaXY+PHNtYWxsICpuZ0lmPVwicm93LmR1cmF0aW9uXCI+RHVyYXRpb246IHt7IHJvdy5kdXJhdGlvbiB8IGZzRGF0ZUR1cmF0aW9uIH19PC9zbWFsbD48L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9mcy1saXN0LWNvbHVtbj5cclxuPC9mcy1saXN0PlxyXG4iXX0=
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2Nyb25zL2Nyb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jcm9ucy9jcm9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFnQixlQUFlLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFFdkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFV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WTtzQkFBM0IsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XHJcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcclxuaW1wb3J0IHsgRnNMaXN0Q29uZmlnLCBGc0xpc3RDb21wb25lbnQsIEZzTGlzdEFjdGlvblNlbGVjdGVkIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGlzdCc7XHJcblxyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IGluZGV4TmFtZVZhbHVlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbmRleC1uYW1lLXZhbHVlJztcclxuaW1wb3J0IHsgQ3JvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nyb24vY3Jvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDcm9uU3RhdGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcclxuaW1wb3J0IHsgQ3JvblN0YXRlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25BY3Rpb25UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0aW9uJztcclxuaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xyXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RhdGUnO1xyXG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5TZWNvbmRzIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZnMtc3lzdGVtLWNyb25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3JvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Nyb25zLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcm9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZChGc0xpc3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGxpc3Q6IEZzTGlzdENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGVuYWJsZTogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGtpbGw6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgcXVldWU6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgcnVuOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGxvYWRDcm9uczogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgcHVibGljIGxvYWRDcm9uOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGxvYWRDcm9uTG9nczogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTx7IGRhdGE6IGFueVtdLCBwYWdpbmc6IGFueSB9PjtcclxuICBASW5wdXQoKSBwdWJsaWMgYnVsazogKGFjdGlvbk5hbWU6IHN0cmluZywgZGF0YTogYW55W10pID0+IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgcHVibGljIGNvbmZpZzogRnNMaXN0Q29uZmlnID0gbnVsbDtcclxuICBwdWJsaWMgY3JvblN0YXRlcyA9IGluZGV4TmFtZVZhbHVlKENyb25TdGF0ZXMpO1xyXG4gIHB1YmxpYyBDcm9uU3RhdGUgPSBDcm9uU3RhdGU7XHJcblxyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX21lc3NhZ2U6IEZzTWVzc2FnZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBfcHJvbXB0OiBGc1Byb21wdCxcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb25maWdMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb25maWdMaXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgIHBhZ2luZzogZmFsc2UsXHJcbiAgICAgIGZpbHRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5LZXl3b3JkLFxyXG4gICAgICAgICAgbmFtZTogJ2tleXdvcmQnLFxyXG4gICAgICAgICAgbGFiZWw6ICdTZWFyY2gnXHJcbiAgICAgICAgfVxyXG4gICAgICBdLFxyXG4gICAgICByb3dBY3Rpb25zOiB0aGlzLmdldENyb25BY3Rpb25zKClcclxuICAgICAgLm1hcCgocm93QWN0aW9uKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnJvd0FjdGlvbixcclxuICAgICAgICAgIGNsaWNrOiAoY3JvbikgPT4ge1xyXG4gICAgICAgICAgICByb3dBY3Rpb24uYWN0aW9uKGNyb24pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgZmV0Y2g6IHF1ZXJ5ID0+IHtcclxuICAgICAgICBxdWVyeS50aW1lem9uZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkQ3JvbnMocXVlcnkpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgbWFwKChjcm9ucykgPT4gKHsgXHJcbiAgICAgICAgICAgICAgZGF0YTogY3JvbnNcclxuICAgICAgICAgICAgICAubWFwKChjcm9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAuLi5jcm9uLFxyXG4gICAgICAgICAgICAgICAgICBydW5uaW5nRHVyYXRpb246IGRpZmZlcmVuY2VJblNlY29uZHMocGFyc2UoY3Jvbi5jcmVhdGVEYXRlKSwgbmV3IERhdGUoKSlcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9LCAgICBcclxuICAgIH07XHJcblxyXG4gICAgaWYodGhpcy5idWxrKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnLnNlbGVjdGlvbiA9IHtcclxuICAgICAgICBzZWxlY3RBbGw6IGZhbHNlLFxyXG4gICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogU2VsZWN0aW9uQWN0aW9uVHlwZS5BY3Rpb24sXHJcbiAgICAgICAgICAgIG5hbWU6ICdkaXNhYmxlJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdEaXNhYmxlJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogU2VsZWN0aW9uQWN0aW9uVHlwZS5BY3Rpb24sXHJcbiAgICAgICAgICAgIG5hbWU6ICdlbmFibGUnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ0VuYWJsZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBhY3Rpb25TZWxlY3RlZDogKGFjdGlvbjogRnNMaXN0QWN0aW9uU2VsZWN0ZWQpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmJ1bGsoYWN0aW9uLmFjdGlvbi5uYW1lLCBhY3Rpb24uc2VsZWN0ZWQpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdBcHBsaWVkIENoYW5nZXMnKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3Blbihjcm9uKSB7XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihDcm9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHsgXHJcbiAgICAgICAgY3JvbixcclxuICAgICAgICBsb2FkQ3JvbkxvZ3M6IHRoaXMubG9hZENyb25Mb2dzLFxyXG4gICAgICAgIGxvYWRDcm9uOiB0aGlzLmxvYWRDcm9uLFxyXG4gICAgICAgIGNyb25BY3Rpb25zOiB0aGlzLmdldENyb25BY3Rpb25zKCksXHJcbiAgICAgIH0sXHJcbiAgICAgIHdpZHRoOiAnODUlJ1xyXG4gICAgfSk7XHJcbiAgfSAgXHJcblxyXG4gIHB1YmxpYyBnZXRDcm9uQWN0aW9ucygpIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZShkYXRhKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdRdWV1ZWQgY3JvbicpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGFiZWw6ICdRdWV1ZScsXHJcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcclxuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuSWRsZSB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRmFpbGVkO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5ydW4oZGF0YSlcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnQ3JvbiByYW4nKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGFiZWw6ICdSdW4nLFxyXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLklkbGUgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZW5hYmxlKGRhdGEpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0VuYWJsZWQgY3JvbicpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGFiZWw6ICdFbmFibGUnLFxyXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkRpc2FibGVkO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlKGRhdGEpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0Rpc2FibGVkIGNyb24nKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsOiAnRGlzYWJsZScsXHJcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcclxuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuSWRsZSB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRmFpbGVkO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm0nLFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBraWxsIHRoZSBjcm9uPycsXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMua2lsbChkYXRhKTtcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdLaWxsZWQgY3JvbicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIH0pLCAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcclxuICAgICAgICAgICAgKTsgICAgICAgICAgXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbDogJ0tpbGwnLFxyXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLlJ1bm5pbmc7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9tcHQuY29uZmlybSh7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybScsXHJcbiAgICAgICAgICAgIHRlbXBsYXRlOiAnQXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIHJlc2V0IHRoZSBjcm9uPycsXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5hYmxlKGRhdGEpO1xyXG4gICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1Jlc2V0IGNyb24nKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9KSwgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXHJcbiAgICAgICAgICAgICk7IFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGFiZWw6ICdSZXNldCcsXHJcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcclxuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuS2lsbGluZyB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuUnVubmluZyB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRmFpbGVkIHx8IGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5RdWV1ZWQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF07ICAgIFxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGZzLWxpc3QgW2NvbmZpZ109XCJjb25maWdcIj5cclxuICA8ZnMtbGlzdC1jb2x1bW4+XHJcbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+TmFtZTwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgPGEgKGNsaWNrKT1cIm9wZW4ocm93KVwiPnt7cm93Lm5hbWV9fTwvYT5cclxuICAgICAgPGRpdiAqbmdJZj1cInJvdy5jcm9uU2V0dGluZ1wiPlxyXG4gICAgICAgIDxzbWFsbD57e3Jvdy5jcm9uU2V0dGluZy5zdW1tYXJ5fX08L3NtYWxsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9mcy1saXN0LWNvbHVtbj5cclxuICA8ZnMtbGlzdC1jb2x1bW4gYWxpZ249XCJjZW50ZXJcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5TdGF0dXM8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuaG9zdCB8fCByb3cucHJvY2Vzc0lkOyBlbHNlIHN0YXR1c1wiPlxyXG4gICAgICAgIDxmcy1wb3BvdmVyIFxyXG4gICAgICAgICAgICBbbWF4V2lkdGhdPVwibnVsbFwiXHJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJzdGF0dXNQb3BvdmVyXCIgXHJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZnMtcG9wb3Zlcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3N0YXR1c1BvcG92ZXI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93Lmhvc3RcIj5Ib3N0OiB7e3Jvdy5ob3N0fX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3cucHJvY2Vzc0lkXCI+UHJvY2VzcyBJRDoge3tyb3cucHJvY2Vzc0lkfX08L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzdGF0dXM+XHJcbiAgICAgICAge3tjcm9uU3RhdGVzW3Jvdy5zdGF0ZV19fVxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic21hbGxcIj5cclxuICAgICAgICAgICAgRHVyYXRpb246IHt7IHJvdy5ydW5uaW5nRHVyYXRpb24gfCBmc0RhdGVEdXJhdGlvbjogeyBob3VyczogdHJ1ZSwgbWludXRlczogdHJ1ZSwgc2Vjb25kczogdHJ1ZSB9IH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9mcy1saXN0LWNvbHVtbj5cclxuICA8ZnMtbGlzdC1jb2x1bW4+XHJcbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+TGFzdCBSYW48L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuZHVyYXRpb249PT1udWxsOyBlbHNlIGxhc3RSYW5cIj5cclxuICAgICAgICBOZXZlclxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNsYXN0UmFuPlxyXG4gICAgICAgIDxmcy1kYXRlLWFnbyBbZGF0ZV09XCJyb3cuY3JlYXRlRGF0ZVwiPjwvZnMtZGF0ZS1hZ28+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCIgKm5nSWY9XCJyb3cuZHVyYXRpb25cIj5cclxuICAgICAgICAgIER1cmF0aW9uOiB7eyByb3cuZHVyYXRpb24gfCBmc0RhdGVEdXJhdGlvbjogeyBob3VyczogdHJ1ZSwgbWludXRlczogdHJ1ZSwgc2Vjb25kczogdHJ1ZSB9IH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZnMtbGlzdC1jb2x1bW4+XHJcbjwvZnMtbGlzdD5cclxuIl19
|
|
@@ -47,7 +47,7 @@ import * as i1 from '@firestitch/message';
|
|
|
47
47
|
import * as i2 from '@firestitch/build';
|
|
48
48
|
import { takeUntil, map, tap, switchMap } from 'rxjs/operators';
|
|
49
49
|
import { Subject } from 'rxjs';
|
|
50
|
-
import { differenceInMinutes } from 'date-fns';
|
|
50
|
+
import { differenceInMinutes, differenceInSeconds } from 'date-fns';
|
|
51
51
|
import * as i8 from '@angular/flex-layout/flex';
|
|
52
52
|
import * as i10 from '@angular/flex-layout/extended';
|
|
53
53
|
import { ItemType } from '@firestitch/filter';
|
|
@@ -356,6 +356,7 @@ class CronsComponent {
|
|
|
356
356
|
this._prompt = _prompt;
|
|
357
357
|
this.config = null;
|
|
358
358
|
this.cronStates = indexNameValue(CronStates);
|
|
359
|
+
this.CronState = CronState;
|
|
359
360
|
this._destroy$ = new Subject();
|
|
360
361
|
}
|
|
361
362
|
ngOnInit() {
|
|
@@ -381,7 +382,12 @@ class CronsComponent {
|
|
|
381
382
|
fetch: query => {
|
|
382
383
|
query.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
383
384
|
return this.loadCrons(query)
|
|
384
|
-
.pipe(map((
|
|
385
|
+
.pipe(map((crons) => ({
|
|
386
|
+
data: crons
|
|
387
|
+
.map((cron) => {
|
|
388
|
+
return Object.assign(Object.assign({}, cron), { runningDuration: differenceInSeconds(parse(cron.createDate), new Date()) });
|
|
389
|
+
})
|
|
390
|
+
})));
|
|
385
391
|
},
|
|
386
392
|
};
|
|
387
393
|
if (this.bulk) {
|
|
@@ -518,7 +524,7 @@ class CronsComponent {
|
|
|
518
524
|
}
|
|
519
525
|
}
|
|
520
526
|
CronsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CronsComponent, deps: [{ token: i1.FsMessage }, { token: i1$1.MatDialog }, { token: i3$2.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
|
|
521
|
-
CronsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronsComponent, selector: "fs-system-crons", inputs: { enable: "enable", disable: "disable", kill: "kill", queue: "queue", run: "run", loadCrons: "loadCrons", loadCron: "loadCron", loadCronLogs: "loadCronLogs", bulk: "bulk" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a (click)=\"open(row)\">{{row.name}}</a>\r\n <div *ngIf=\"row.cronSetting\">\r\n <small>{{row.cronSetting.summary}}</small>\r\n </div>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column align=\"center\">\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.host || row.processId; else status\">\r\n <fs-popover \r\n [maxWidth]=\"
|
|
527
|
+
CronsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronsComponent, selector: "fs-system-crons", inputs: { enable: "enable", disable: "disable", kill: "kill", queue: "queue", run: "run", loadCrons: "loadCrons", loadCron: "loadCron", loadCronLogs: "loadCronLogs", bulk: "bulk" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a (click)=\"open(row)\">{{row.name}}</a>\r\n <div *ngIf=\"row.cronSetting\">\r\n <small>{{row.cronSetting.summary}}</small>\r\n </div>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column align=\"center\">\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.host || row.processId; else status\">\r\n <fs-popover \r\n [maxWidth]=\"null\"\r\n [template]=\"statusPopover\" \r\n size=\"small\">\r\n <ng-container *ngTemplateOutlet=\"status\"></ng-container>\r\n </fs-popover>\r\n <ng-template #statusPopover>\r\n <div *ngIf=\"row.host\">Host: {{row.host}}</div>\r\n <div *ngIf=\"row.processId\">Process ID: {{row.processId}}</div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #status>\r\n {{cronStates[row.state]}}\r\n <ng-container *ngIf=\"row.state === CronState.Running\">\r\n <div class=\"small\">\r\n Duration: {{ row.runningDuration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Last Ran</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.duration===null; else lastRan\">\r\n Never\r\n </ng-container>\r\n <ng-template #lastRan>\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n <div class=\"small\" *ngIf=\"row.duration\">\r\n Duration: {{ row.duration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\r\n </div>\r\n </ng-template>\r\n </ng-template>\r\n </fs-list-column>\r\n</fs-list>\r\n", styles: [""], components: [{ type: i2$3.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i5$1.FsPopoverComponent, selector: "fs-popover", inputs: ["template", "data", "leaveDelay", "showDelay", "maxWidth", "wrapperClass", "autoShow", "autoClose", "loadingDiameter", "loading", "indication", "position", "theme", "size", "trigger"] }, { type: i3.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2$3.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2$3.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2$3.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "fsDateDuration": i3.FsDateDurationPipe } });
|
|
522
528
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CronsComponent, decorators: [{
|
|
523
529
|
type: Component,
|
|
524
530
|
args: [{
|