@firestitch/system 13.0.2 → 13.0.3
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/modules/system/components/cron/cron.component.d.ts +2 -1
- package/app/modules/system/components/crons/crons.component.d.ts +3 -2
- package/app/modules/system/consts/cron-process-states.const.d.ts +4 -0
- package/app/modules/system/consts/index.d.ts +4 -1
- package/app/modules/system/consts/setting-interface-types.const.d.ts +5 -0
- package/esm2020/app/modules/system/components/cron/cron.component.mjs +9 -8
- package/esm2020/app/modules/system/components/cron-log/cron-log.component.mjs +1 -1
- package/esm2020/app/modules/system/components/crons/crons.component.mjs +69 -64
- package/esm2020/app/modules/system/consts/cron-process-states.const.mjs +5 -0
- package/esm2020/app/modules/system/consts/cron-states.const.mjs +1 -1
- package/esm2020/app/modules/system/consts/index.mjs +5 -2
- package/esm2020/app/modules/system/consts/setting-interface-types.const.mjs +12 -0
- package/fesm2015/firestitch-system.mjs +98 -80
- package/fesm2015/firestitch-system.mjs.map +1 -1
- package/fesm2020/firestitch-system.mjs +108 -86
- package/fesm2020/firestitch-system.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -320,6 +320,32 @@ var CronLogState;
|
|
|
320
320
|
CronLogState["LongRunning"] = "long_running";
|
|
321
321
|
})(CronLogState || (CronLogState = {}));
|
|
322
322
|
|
|
323
|
+
const ApiLogStates = [
|
|
324
|
+
{ name: 'Success', value: ApiLogState.Success },
|
|
325
|
+
{ name: 'Failed', value: ApiLogState.Failed },
|
|
326
|
+
{ name: 'Deleted', value: ApiLogState.Deleted }
|
|
327
|
+
];
|
|
328
|
+
|
|
329
|
+
const CronLogStates = [
|
|
330
|
+
{ name: 'Message', value: CronLogState.Message, color: '#29B7FF' },
|
|
331
|
+
{ name: 'Disabled', value: CronLogState.Disabled, color: '#29B7FF' },
|
|
332
|
+
{ name: 'Reset', value: CronLogState.Reset, color: '#29B7FF' },
|
|
333
|
+
{ name: 'Enabled', value: CronLogState.Enabled, color: '#29B7FF' },
|
|
334
|
+
{ name: 'Queued', value: CronLogState.Queued, color: '#29B7FF' },
|
|
335
|
+
{ name: 'Started', value: CronLogState.Started, color: '#D17333' },
|
|
336
|
+
{ name: 'Running', value: CronLogState.Running, color: '#34BD43' },
|
|
337
|
+
{ name: 'Completed', value: CronLogState.Completed, color: '#34BD43' },
|
|
338
|
+
{ name: 'Failed', value: CronLogState.Failed, color: '#FA7567' },
|
|
339
|
+
{ name: 'Killed', value: CronLogState.Killed, color: '#FA7567' },
|
|
340
|
+
{ name: 'Stagnant', value: CronLogState.Stagnant, color: '#FA7567' },
|
|
341
|
+
{ name: 'Long Running', value: CronLogState.LongRunning, color: '#FA7567' },
|
|
342
|
+
];
|
|
343
|
+
|
|
344
|
+
const CronProcessStates = [
|
|
345
|
+
{ name: 'Running', value: 'running' },
|
|
346
|
+
{ name: 'Stopped', value: 'stopped' },
|
|
347
|
+
];
|
|
348
|
+
|
|
323
349
|
const CronStates = [
|
|
324
350
|
{ name: 'Running', value: CronState.Running },
|
|
325
351
|
{ name: 'Idle', value: CronState.Idle },
|
|
@@ -330,12 +356,6 @@ const CronStates = [
|
|
|
330
356
|
{ name: 'Enabled', value: CronState.Enabled },
|
|
331
357
|
];
|
|
332
358
|
|
|
333
|
-
const ApiLogStates = [
|
|
334
|
-
{ name: 'Success', value: ApiLogState.Success },
|
|
335
|
-
{ name: 'Failed', value: ApiLogState.Failed },
|
|
336
|
-
{ name: 'Deleted', value: ApiLogState.Deleted }
|
|
337
|
-
];
|
|
338
|
-
|
|
339
359
|
const ProcessStates = [
|
|
340
360
|
{ name: 'Queued', value: ProcessState.Queued },
|
|
341
361
|
{ name: 'Running', value: ProcessState.Running },
|
|
@@ -345,6 +365,17 @@ const ProcessStates = [
|
|
|
345
365
|
{ name: 'Deleted', value: ProcessState.Deleted }
|
|
346
366
|
];
|
|
347
367
|
|
|
368
|
+
const SettingInterfaceTypes = [
|
|
369
|
+
{ name: 'RadioButton', value: SettingInterfaceType.RadioButton },
|
|
370
|
+
{ name: 'InputBox', value: SettingInterfaceType.InputBox },
|
|
371
|
+
{ name: 'Textarea', value: SettingInterfaceType.Textarea },
|
|
372
|
+
{ name: 'DropDown', value: SettingInterfaceType.Select },
|
|
373
|
+
{ name: 'File', value: SettingInterfaceType.File },
|
|
374
|
+
{ name: 'Static', value: SettingInterfaceType.Static },
|
|
375
|
+
{ name: 'Password', value: SettingInterfaceType.Password },
|
|
376
|
+
{ name: 'Color', value: SettingInterfaceType.Color }
|
|
377
|
+
];
|
|
378
|
+
|
|
348
379
|
function indexNameValue(arry) {
|
|
349
380
|
const obj = {};
|
|
350
381
|
arry.forEach(item => {
|
|
@@ -430,21 +461,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
430
461
|
type: Input
|
|
431
462
|
}] } });
|
|
432
463
|
|
|
433
|
-
const CronLogStates = [
|
|
434
|
-
{ name: 'Message', value: CronLogState.Message, color: '#29B7FF' },
|
|
435
|
-
{ name: 'Disabled', value: CronLogState.Disabled, color: '#29B7FF' },
|
|
436
|
-
{ name: 'Reset', value: CronLogState.Reset, color: '#29B7FF' },
|
|
437
|
-
{ name: 'Enabled', value: CronLogState.Enabled, color: '#29B7FF' },
|
|
438
|
-
{ name: 'Queued', value: CronLogState.Queued, color: '#29B7FF' },
|
|
439
|
-
{ name: 'Started', value: CronLogState.Started, color: '#D17333' },
|
|
440
|
-
{ name: 'Running', value: CronLogState.Running, color: '#34BD43' },
|
|
441
|
-
{ name: 'Completed', value: CronLogState.Completed, color: '#34BD43' },
|
|
442
|
-
{ name: 'Failed', value: CronLogState.Failed, color: '#FA7567' },
|
|
443
|
-
{ name: 'Killed', value: CronLogState.Killed, color: '#FA7567' },
|
|
444
|
-
{ name: 'Stagnant', value: CronLogState.Stagnant, color: '#FA7567' },
|
|
445
|
-
{ name: 'Long Running', value: CronLogState.LongRunning, color: '#FA7567' },
|
|
446
|
-
];
|
|
447
|
-
|
|
448
464
|
class CronLogComponent {
|
|
449
465
|
constructor(_data) {
|
|
450
466
|
this._data = _data;
|
|
@@ -477,6 +493,7 @@ class CronComponent {
|
|
|
477
493
|
this._cdRef = _cdRef;
|
|
478
494
|
this.tabIndex = 0;
|
|
479
495
|
this.CronStates = indexNameValue(CronStates);
|
|
496
|
+
this.CronProcessStates = indexNameValue(CronProcessStates);
|
|
480
497
|
this.CronLogStates = indexNameValue(CronLogStates);
|
|
481
498
|
this.CronLogStateColors = {};
|
|
482
499
|
}
|
|
@@ -493,7 +510,7 @@ class CronComponent {
|
|
|
493
510
|
data: {
|
|
494
511
|
cronLog,
|
|
495
512
|
},
|
|
496
|
-
width: '85%'
|
|
513
|
+
width: '85%',
|
|
497
514
|
});
|
|
498
515
|
}
|
|
499
516
|
cronActionClick(cronAction) {
|
|
@@ -548,10 +565,10 @@ class CronComponent {
|
|
|
548
565
|
}
|
|
549
566
|
}
|
|
550
567
|
CronComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CronComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
551
|
-
CronComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CronComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"cron\">\r\n <h1 mat-dialog-title>\r\n Cron\r\n <div class=\"small\">{{cron.name}}</div>\r\n </h1>\r\n <mat-dialog-content>\r\n <mat-tab-group (selectedIndexChange)=\"selectedIndexChange($event)\">\r\n <mat-tab label=\"Overview\">\r\n <div class=\"row\">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n {{CronStates[cron.state]}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"cron.cronSetting\">\r\n <fs-label>\r\n Run Frequency\r\n </fs-label>\r\n {{cron.cronSetting.summary}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Last Ran\r\n </fs-label>\r\n <ng-container *ngIf=\"cron.duration===null; else lastRan\">\r\n Never\r\n </ng-container>\r\n <ng-template #lastRan>\r\n <fs-date-ago [date]=\"cron.createDate\"></fs-date-ago>\r\n <div><small *ngIf=\"cron.duration\">Duration: {{ cron.duration | fsDateDuration }}</small></div>\r\n </ng-template>\r\n </fs-label-field>\r\n </div>\r\n\r\n <fs-label-field *ngIf=\"cron.message\">\r\n <fs-label>\r\n Last Message\r\n </fs-label>\r\n <div class=\"message\">{{cron.message}}</div>\r\n </fs-label-field>\r\n </mat-tab>\r\n <mat-tab label=\"Logs\" *ngIf=\"config\">\r\n <ng-template matTabContent>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"state\" title=\"Status\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a \r\n (click)=\"cronLogOpen(row)\"\r\n [ngStyle]=\"{ color: CronLogStateColors[row.state] }\">\r\n {{CronLogStates[row.state] || row.state}}\r\n </a>\r\n </ng-template>\r\n </fs-list-column>\r\n \r\n <fs-list-column title=\"Message\" class=\"col-message\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <div class=\"message\">{{row.message}}</div>\r\n </ng-template>\r\n </fs-list-column>\r\n \r\n <fs-list-column title=\"Duration\" class=\"col-message\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.duration\">\r\n {{row.duration | fsDateDuration: 'hour-minute-second'}}\r\n </ng-container>\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column name=\"create_date\" title=\"Date\" class=\"col-date\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list> \r\n </ng-template>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n </mat-dialog-content>\r\n <mat-dialog-actions> \r\n <button \r\n mat-button \r\n [mat-dialog-close]=\"true\" \r\n color=\"primary\">\r\n Done\r\n </button>\r\n <ng-container *ngIf=\"tabIndex === 0\">\r\n <button \r\n *ngFor=\"let cronAction of cronActions\"\r\n mat-button \r\n (click)=\"cronActionClick(cronAction)\">\r\n {{cronAction.label}}\r\n </button> \r\n </ng-container>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n", styles: [":host ::ng-deep .col-message .message{white-space:break-spaces;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}:host ::ng-deep .col-date{white-space:nowrap}h1 .small{line-height:normal}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}.message{white-space:pre-line}\n"], components: [{ type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }, { type: i3$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i3.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3.FsLabelComponent, selector: "fs-label" }, { type: i4$2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { type: i2$2.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4.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"] }], directives: [{ type: i5.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.MatTabContent, selector: "[matTabContent]" }, { type: i2$2.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2$2.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i8.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fsDateDuration": i4$2.FsDateDurationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
568
|
+
CronComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CronComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"cron\">\r\n <h1 mat-dialog-title>\r\n Cron\r\n <div class=\"small\">{{cron.name}}</div>\r\n </h1>\r\n <mat-dialog-content>\r\n <mat-tab-group (selectedIndexChange)=\"selectedIndexChange($event)\">\r\n <mat-tab label=\"Overview\">\r\n <div class=\"row\">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n {{CronStates[cron.state]}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"cron.cronSetting\">\r\n <fs-label>\r\n Run Frequency\r\n </fs-label>\r\n {{cron.cronSetting.summary}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"cron.processId\">\r\n <fs-label>\r\n Process\r\n </fs-label>\r\n {{cron.processId}}\r\n <ng-container *ngIf=\"cron.processState\">\r\n {{CronProcessStates[cron.processState]}}\r\n </ng-container>\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Last Ran\r\n </fs-label>\r\n <ng-container *ngIf=\"cron.duration===null; else lastRan\">\r\n Never\r\n </ng-container>\r\n <ng-template #lastRan>\r\n <fs-date-ago [date]=\"cron.createDate\"></fs-date-ago>\r\n <div><small *ngIf=\"cron.duration\">Duration: {{ cron.duration | fsDateDuration }}</small></div>\r\n </ng-template>\r\n </fs-label-field>\r\n </div>\r\n\r\n <fs-label-field *ngIf=\"cron.message\">\r\n <fs-label>\r\n Last Message\r\n </fs-label>\r\n <div class=\"message\">{{cron.message}}</div>\r\n </fs-label-field>\r\n </mat-tab>\r\n <mat-tab label=\"Logs\" *ngIf=\"config\">\r\n <ng-template matTabContent>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"state\" title=\"Status\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a \r\n (click)=\"cronLogOpen(row)\"\r\n [ngStyle]=\"{ color: CronLogStateColors[row.state] }\">\r\n {{CronLogStates[row.state] || row.state}}\r\n </a>\r\n </ng-template>\r\n </fs-list-column>\r\n \r\n <fs-list-column title=\"Message\" class=\"col-message\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <div class=\"message\">{{row.message}}</div>\r\n </ng-template>\r\n </fs-list-column>\r\n \r\n <fs-list-column title=\"Duration\" class=\"col-message\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.duration\">\r\n {{row.duration | fsDateDuration: 'hour-minute-second'}}\r\n </ng-container>\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column name=\"create_date\" title=\"Date\" class=\"col-date\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list> \r\n </ng-template>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n </mat-dialog-content>\r\n <mat-dialog-actions> \r\n <button \r\n mat-button \r\n [mat-dialog-close]=\"true\" \r\n color=\"primary\">\r\n Done\r\n </button>\r\n <ng-container *ngIf=\"tabIndex === 0\">\r\n <button \r\n *ngFor=\"let cronAction of cronActions\"\r\n mat-button \r\n (click)=\"cronActionClick(cronAction)\">\r\n {{cronAction.label}}\r\n </button> \r\n </ng-container>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n", styles: [":host ::ng-deep .col-message .message{white-space:break-spaces;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}:host ::ng-deep .col-date{white-space:nowrap}h1 .small{line-height:normal}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}.message{white-space:pre-line}\n"], components: [{ type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }, { type: i3$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i3.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3.FsLabelComponent, selector: "fs-label" }, { type: i4$2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { type: i2$2.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4.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"] }], directives: [{ type: i5.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.MatTabContent, selector: "[matTabContent]" }, { type: i2$2.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2$2.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i8.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fsDateDuration": i4$2.FsDateDurationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
552
569
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CronComponent, decorators: [{
|
|
553
570
|
type: Component,
|
|
554
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<fs-dialog *fsSkeleton=\"cron\">\r\n <h1 mat-dialog-title>\r\n Cron\r\n <div class=\"small\">{{cron.name}}</div>\r\n </h1>\r\n <mat-dialog-content>\r\n <mat-tab-group (selectedIndexChange)=\"selectedIndexChange($event)\">\r\n <mat-tab label=\"Overview\">\r\n <div class=\"row\">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n {{CronStates[cron.state]}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"cron.cronSetting\">\r\n <fs-label>\r\n Run Frequency\r\n </fs-label>\r\n {{cron.cronSetting.summary}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Last Ran\r\n </fs-label>\r\n <ng-container *ngIf=\"cron.duration===null; else lastRan\">\r\n Never\r\n </ng-container>\r\n <ng-template #lastRan>\r\n <fs-date-ago [date]=\"cron.createDate\"></fs-date-ago>\r\n <div><small *ngIf=\"cron.duration\">Duration: {{ cron.duration | fsDateDuration }}</small></div>\r\n </ng-template>\r\n </fs-label-field>\r\n </div>\r\n\r\n <fs-label-field *ngIf=\"cron.message\">\r\n <fs-label>\r\n Last Message\r\n </fs-label>\r\n <div class=\"message\">{{cron.message}}</div>\r\n </fs-label-field>\r\n </mat-tab>\r\n <mat-tab label=\"Logs\" *ngIf=\"config\">\r\n <ng-template matTabContent>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"state\" title=\"Status\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a \r\n (click)=\"cronLogOpen(row)\"\r\n [ngStyle]=\"{ color: CronLogStateColors[row.state] }\">\r\n {{CronLogStates[row.state] || row.state}}\r\n </a>\r\n </ng-template>\r\n </fs-list-column>\r\n \r\n <fs-list-column title=\"Message\" class=\"col-message\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <div class=\"message\">{{row.message}}</div>\r\n </ng-template>\r\n </fs-list-column>\r\n \r\n <fs-list-column title=\"Duration\" class=\"col-message\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.duration\">\r\n {{row.duration | fsDateDuration: 'hour-minute-second'}}\r\n </ng-container>\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column name=\"create_date\" title=\"Date\" class=\"col-date\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list> \r\n </ng-template>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n </mat-dialog-content>\r\n <mat-dialog-actions> \r\n <button \r\n mat-button \r\n [mat-dialog-close]=\"true\" \r\n color=\"primary\">\r\n Done\r\n </button>\r\n <ng-container *ngIf=\"tabIndex === 0\">\r\n <button \r\n *ngFor=\"let cronAction of cronActions\"\r\n mat-button \r\n (click)=\"cronActionClick(cronAction)\">\r\n {{cronAction.label}}\r\n </button> \r\n </ng-container>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n", styles: [":host ::ng-deep .col-message .message{white-space:break-spaces;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}:host ::ng-deep .col-date{white-space:nowrap}h1 .small{line-height:normal}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}.message{white-space:pre-line}\n"] }]
|
|
571
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<fs-dialog *fsSkeleton=\"cron\">\r\n <h1 mat-dialog-title>\r\n Cron\r\n <div class=\"small\">{{cron.name}}</div>\r\n </h1>\r\n <mat-dialog-content>\r\n <mat-tab-group (selectedIndexChange)=\"selectedIndexChange($event)\">\r\n <mat-tab label=\"Overview\">\r\n <div class=\"row\">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n {{CronStates[cron.state]}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"cron.cronSetting\">\r\n <fs-label>\r\n Run Frequency\r\n </fs-label>\r\n {{cron.cronSetting.summary}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"cron.processId\">\r\n <fs-label>\r\n Process\r\n </fs-label>\r\n {{cron.processId}}\r\n <ng-container *ngIf=\"cron.processState\">\r\n {{CronProcessStates[cron.processState]}}\r\n </ng-container>\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Last Ran\r\n </fs-label>\r\n <ng-container *ngIf=\"cron.duration===null; else lastRan\">\r\n Never\r\n </ng-container>\r\n <ng-template #lastRan>\r\n <fs-date-ago [date]=\"cron.createDate\"></fs-date-ago>\r\n <div><small *ngIf=\"cron.duration\">Duration: {{ cron.duration | fsDateDuration }}</small></div>\r\n </ng-template>\r\n </fs-label-field>\r\n </div>\r\n\r\n <fs-label-field *ngIf=\"cron.message\">\r\n <fs-label>\r\n Last Message\r\n </fs-label>\r\n <div class=\"message\">{{cron.message}}</div>\r\n </fs-label-field>\r\n </mat-tab>\r\n <mat-tab label=\"Logs\" *ngIf=\"config\">\r\n <ng-template matTabContent>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"state\" title=\"Status\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a \r\n (click)=\"cronLogOpen(row)\"\r\n [ngStyle]=\"{ color: CronLogStateColors[row.state] }\">\r\n {{CronLogStates[row.state] || row.state}}\r\n </a>\r\n </ng-template>\r\n </fs-list-column>\r\n \r\n <fs-list-column title=\"Message\" class=\"col-message\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <div class=\"message\">{{row.message}}</div>\r\n </ng-template>\r\n </fs-list-column>\r\n \r\n <fs-list-column title=\"Duration\" class=\"col-message\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.duration\">\r\n {{row.duration | fsDateDuration: 'hour-minute-second'}}\r\n </ng-container>\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column name=\"create_date\" title=\"Date\" class=\"col-date\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list> \r\n </ng-template>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n </mat-dialog-content>\r\n <mat-dialog-actions> \r\n <button \r\n mat-button \r\n [mat-dialog-close]=\"true\" \r\n color=\"primary\">\r\n Done\r\n </button>\r\n <ng-container *ngIf=\"tabIndex === 0\">\r\n <button \r\n *ngFor=\"let cronAction of cronActions\"\r\n mat-button \r\n (click)=\"cronActionClick(cronAction)\">\r\n {{cronAction.label}}\r\n </button> \r\n </ng-container>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n", styles: [":host ::ng-deep .col-message .message{white-space:break-spaces;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}:host ::ng-deep .col-date{white-space:nowrap}h1 .small{line-height:normal}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}.message{white-space:pre-line}\n"] }]
|
|
555
572
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
556
573
|
type: Inject,
|
|
557
574
|
args: [MAT_DIALOG_DATA]
|
|
@@ -563,72 +580,14 @@ class CronsComponent {
|
|
|
563
580
|
this._dialog = _dialog;
|
|
564
581
|
this._prompt = _prompt;
|
|
565
582
|
this.config = null;
|
|
566
|
-
this.
|
|
583
|
+
this.CronStates = indexNameValue(CronStates);
|
|
584
|
+
this.CronProcessStates = indexNameValue(CronProcessStates);
|
|
567
585
|
this.CronState = CronState;
|
|
568
586
|
this._destroy$ = new Subject();
|
|
569
587
|
}
|
|
570
588
|
ngOnInit() {
|
|
571
589
|
this._configList();
|
|
572
590
|
}
|
|
573
|
-
_configList() {
|
|
574
|
-
this.config = {
|
|
575
|
-
paging: false,
|
|
576
|
-
filters: [
|
|
577
|
-
{
|
|
578
|
-
type: ItemType.Keyword,
|
|
579
|
-
name: 'keyword',
|
|
580
|
-
label: 'Search',
|
|
581
|
-
},
|
|
582
|
-
],
|
|
583
|
-
rowActions: this.getCronActions()
|
|
584
|
-
.map((rowAction) => {
|
|
585
|
-
return {
|
|
586
|
-
...rowAction,
|
|
587
|
-
click: (cron) => {
|
|
588
|
-
rowAction.action(cron)
|
|
589
|
-
.subscribe();
|
|
590
|
-
},
|
|
591
|
-
};
|
|
592
|
-
}),
|
|
593
|
-
fetch: (query) => {
|
|
594
|
-
query.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
595
|
-
return this.loadCrons(query)
|
|
596
|
-
.pipe(map((crons) => ({
|
|
597
|
-
data: crons
|
|
598
|
-
.map((cron) => {
|
|
599
|
-
return {
|
|
600
|
-
...cron,
|
|
601
|
-
runningDuration: differenceInSeconds(parse(cron.createDate), new Date()),
|
|
602
|
-
};
|
|
603
|
-
}),
|
|
604
|
-
})));
|
|
605
|
-
},
|
|
606
|
-
};
|
|
607
|
-
if (this.bulk) {
|
|
608
|
-
this.config.selection = {
|
|
609
|
-
selectAll: false,
|
|
610
|
-
actions: [
|
|
611
|
-
{
|
|
612
|
-
type: SelectionActionType.Action,
|
|
613
|
-
name: 'disable',
|
|
614
|
-
label: 'Disable',
|
|
615
|
-
},
|
|
616
|
-
{
|
|
617
|
-
type: SelectionActionType.Action,
|
|
618
|
-
name: 'enable',
|
|
619
|
-
label: 'Enable',
|
|
620
|
-
},
|
|
621
|
-
],
|
|
622
|
-
actionSelected: (action) => {
|
|
623
|
-
return this.bulk(action.action.name, action.selected)
|
|
624
|
-
.pipe(tap(() => {
|
|
625
|
-
this.list.reload();
|
|
626
|
-
this._message.success('Applied Changes');
|
|
627
|
-
}));
|
|
628
|
-
},
|
|
629
|
-
};
|
|
630
|
-
}
|
|
631
|
-
}
|
|
632
591
|
open(cron) {
|
|
633
592
|
this._dialog.open(CronComponent, {
|
|
634
593
|
data: {
|
|
@@ -736,12 +695,75 @@ class CronsComponent {
|
|
|
736
695
|
this._destroy$.next();
|
|
737
696
|
this._destroy$.complete();
|
|
738
697
|
}
|
|
698
|
+
_configList() {
|
|
699
|
+
this.config = {
|
|
700
|
+
paging: false,
|
|
701
|
+
filters: [
|
|
702
|
+
{
|
|
703
|
+
type: ItemType.Keyword,
|
|
704
|
+
name: 'keyword',
|
|
705
|
+
label: 'Search',
|
|
706
|
+
},
|
|
707
|
+
],
|
|
708
|
+
rowActions: this.getCronActions()
|
|
709
|
+
.map((rowAction) => {
|
|
710
|
+
return {
|
|
711
|
+
...rowAction,
|
|
712
|
+
click: (cron) => {
|
|
713
|
+
rowAction.action(cron)
|
|
714
|
+
.subscribe();
|
|
715
|
+
},
|
|
716
|
+
};
|
|
717
|
+
}),
|
|
718
|
+
fetch: (query) => {
|
|
719
|
+
query = {
|
|
720
|
+
...query,
|
|
721
|
+
processStates: true,
|
|
722
|
+
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
723
|
+
};
|
|
724
|
+
return this.loadCrons(query)
|
|
725
|
+
.pipe(map((crons) => ({
|
|
726
|
+
data: crons
|
|
727
|
+
.map((cron) => {
|
|
728
|
+
return {
|
|
729
|
+
...cron,
|
|
730
|
+
runningDuration: differenceInSeconds(parse(cron.createDate), new Date()),
|
|
731
|
+
};
|
|
732
|
+
}),
|
|
733
|
+
})));
|
|
734
|
+
},
|
|
735
|
+
};
|
|
736
|
+
if (this.bulk) {
|
|
737
|
+
this.config.selection = {
|
|
738
|
+
selectAll: false,
|
|
739
|
+
actions: [
|
|
740
|
+
{
|
|
741
|
+
type: SelectionActionType.Action,
|
|
742
|
+
name: 'disable',
|
|
743
|
+
label: 'Disable',
|
|
744
|
+
},
|
|
745
|
+
{
|
|
746
|
+
type: SelectionActionType.Action,
|
|
747
|
+
name: 'enable',
|
|
748
|
+
label: 'Enable',
|
|
749
|
+
},
|
|
750
|
+
],
|
|
751
|
+
actionSelected: (action) => {
|
|
752
|
+
return this.bulk(action.action.name, action.selected)
|
|
753
|
+
.pipe(tap(() => {
|
|
754
|
+
this.list.reload();
|
|
755
|
+
this._message.success('Applied Changes');
|
|
756
|
+
}));
|
|
757
|
+
},
|
|
758
|
+
};
|
|
759
|
+
}
|
|
760
|
+
}
|
|
739
761
|
}
|
|
740
762
|
CronsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CronsComponent, deps: [{ token: i1$1.FsMessage }, { token: i1.MatDialog }, { token: i3$3.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
|
|
741
|
-
CronsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", 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 {{
|
|
763
|
+
CronsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", 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 <div *ngIf=\"row.processState\">Process State: {{CronProcessStates[row.processState]}}</div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #status>\r\n {{CronStates[row.state]}}\r\n </ng-template>\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 </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$2.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i7.FsPopoverComponent, selector: "fs-popover" }, { type: i4$2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2$2.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2$2.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2$2.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "fsDateDuration": i4$2.FsDateDurationPipe } });
|
|
742
764
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CronsComponent, decorators: [{
|
|
743
765
|
type: Component,
|
|
744
|
-
args: [{ selector: 'fs-system-crons', 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 {{
|
|
766
|
+
args: [{ selector: 'fs-system-crons', 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 <div *ngIf=\"row.processState\">Process State: {{CronProcessStates[row.processState]}}</div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #status>\r\n {{CronStates[row.state]}}\r\n </ng-template>\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 </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: [""] }]
|
|
745
767
|
}], ctorParameters: function () { return [{ type: i1$1.FsMessage }, { type: i1.MatDialog }, { type: i3$3.FsPrompt }]; }, propDecorators: { list: [{
|
|
746
768
|
type: ViewChild,
|
|
747
769
|
args: [FsListComponent, { static: true }]
|