@firestitch/system 12.2.6 → 12.2.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.
Files changed (103) hide show
  1. package/app/components/api-log/api-log.component.d.ts +13 -13
  2. package/app/components/api-log/index.d.ts +1 -1
  3. package/app/components/api-logs/api-logs.component.d.ts +21 -21
  4. package/app/components/api-logs/index.d.ts +1 -1
  5. package/app/components/cron/cron.component.d.ts +24 -24
  6. package/app/components/cron/index.d.ts +1 -1
  7. package/app/components/cron-log/cron-log.component.d.ts +12 -12
  8. package/app/components/cron-log/index.d.ts +1 -1
  9. package/app/components/crons/crons.component.d.ts +42 -42
  10. package/app/components/crons/index.d.ts +1 -1
  11. package/app/components/dashboard/dashboard.component.d.ts +28 -28
  12. package/app/components/dashboard/index.d.ts +1 -1
  13. package/app/components/file-manager/file-manager.component.d.ts +17 -17
  14. package/app/components/file-manager/index.d.ts +1 -1
  15. package/app/components/info/index.d.ts +1 -1
  16. package/app/components/info/info.component.d.ts +11 -11
  17. package/app/components/process/index.d.ts +1 -1
  18. package/app/components/process/process.component.d.ts +19 -19
  19. package/app/components/processes/index.d.ts +1 -1
  20. package/app/components/processes/processes.component.d.ts +34 -34
  21. package/app/components/server-log/index.d.ts +1 -1
  22. package/app/components/server-log/server-log.component.d.ts +10 -10
  23. package/app/components/server-logs/index.d.ts +1 -1
  24. package/app/components/server-logs/server-logs.component.d.ts +21 -21
  25. package/app/components/settings/index.d.ts +1 -1
  26. package/app/components/settings/settings.component.d.ts +30 -30
  27. package/app/components/upgrade-logs/index.d.ts +1 -1
  28. package/app/components/upgrade-logs/upgrade-logs.component.d.ts +17 -17
  29. package/app/consts/api-log-states.const.d.ts +5 -5
  30. package/app/consts/cron-log-states.const.d.ts +6 -6
  31. package/app/consts/cron-states.const.d.ts +5 -5
  32. package/app/consts/index.d.ts +3 -3
  33. package/app/consts/process-states.const.d.ts +5 -5
  34. package/app/enums/api-log-state.enum.d.ts +5 -5
  35. package/app/enums/cron-log-state.enum.d.ts +14 -14
  36. package/app/enums/cron-state.enum.d.ts +9 -9
  37. package/app/enums/index.d.ts +5 -5
  38. package/app/enums/process-state.enum.d.ts +8 -8
  39. package/app/enums/setting-interface-type.enum.d.ts +14 -14
  40. package/app/fs-system.module.d.ts +47 -47
  41. package/app/helpers/index-name-value.d.ts +1 -1
  42. package/app/injectors/system-config.injector.d.ts +2 -2
  43. package/app/interfaces/dashboard-action.d.ts +5 -5
  44. package/app/interfaces/index.d.ts +3 -3
  45. package/app/interfaces/process-action.d.ts +6 -6
  46. package/app/interfaces/system-config.d.ts +2 -2
  47. package/app/pipes/key-name-value.pipe.d.ts +8 -8
  48. package/bundles/firestitch-system.umd.js +1586 -1586
  49. package/bundles/firestitch-system.umd.js.map +1 -1
  50. package/esm2015/app/components/api-log/api-log.component.js +38 -38
  51. package/esm2015/app/components/api-log/index.js +2 -2
  52. package/esm2015/app/components/api-logs/api-logs.component.js +74 -72
  53. package/esm2015/app/components/api-logs/index.js +2 -2
  54. package/esm2015/app/components/cron/cron.component.js +103 -103
  55. package/esm2015/app/components/cron/index.js +2 -2
  56. package/esm2015/app/components/cron-log/cron-log.component.js +41 -41
  57. package/esm2015/app/components/cron-log/index.js +2 -2
  58. package/esm2015/app/components/crons/crons.component.js +229 -229
  59. package/esm2015/app/components/crons/index.js +2 -2
  60. package/esm2015/app/components/dashboard/dashboard.component.js +91 -91
  61. package/esm2015/app/components/dashboard/index.js +2 -2
  62. package/esm2015/app/components/file-manager/file-manager.component.js +54 -54
  63. package/esm2015/app/components/file-manager/index.js +2 -2
  64. package/esm2015/app/components/info/index.js +2 -2
  65. package/esm2015/app/components/info/info.component.js +36 -36
  66. package/esm2015/app/components/process/index.js +2 -2
  67. package/esm2015/app/components/process/process.component.js +67 -67
  68. package/esm2015/app/components/processes/index.js +2 -2
  69. package/esm2015/app/components/processes/processes.component.js +170 -170
  70. package/esm2015/app/components/server-log/index.js +2 -2
  71. package/esm2015/app/components/server-log/server-log.component.js +42 -42
  72. package/esm2015/app/components/server-logs/index.js +2 -2
  73. package/esm2015/app/components/server-logs/server-logs.component.js +57 -57
  74. package/esm2015/app/components/settings/index.js +2 -2
  75. package/esm2015/app/components/settings/settings.component.js +137 -137
  76. package/esm2015/app/components/upgrade-logs/index.js +2 -2
  77. package/esm2015/app/components/upgrade-logs/upgrade-logs.component.js +48 -48
  78. package/esm2015/app/consts/api-log-states.const.js +7 -7
  79. package/esm2015/app/consts/cron-log-states.const.js +16 -16
  80. package/esm2015/app/consts/cron-states.const.js +11 -11
  81. package/esm2015/app/consts/index.js +4 -4
  82. package/esm2015/app/consts/process-states.const.js +10 -10
  83. package/esm2015/app/enums/api-log-state.enum.js +7 -7
  84. package/esm2015/app/enums/cron-log-state.enum.js +15 -15
  85. package/esm2015/app/enums/cron-state.enum.js +11 -11
  86. package/esm2015/app/enums/index.js +6 -6
  87. package/esm2015/app/enums/process-state.enum.js +10 -10
  88. package/esm2015/app/enums/setting-interface-type.enum.js +16 -16
  89. package/esm2015/app/fs-system.module.js +181 -181
  90. package/esm2015/app/helpers/index-name-value.js +8 -8
  91. package/esm2015/app/injectors/system-config.injector.js +3 -3
  92. package/esm2015/app/interfaces/dashboard-action.js +2 -2
  93. package/esm2015/app/interfaces/index.js +4 -4
  94. package/esm2015/app/interfaces/process-action.js +2 -2
  95. package/esm2015/app/interfaces/system-config.js +2 -2
  96. package/esm2015/app/pipes/key-name-value.pipe.js +21 -21
  97. package/esm2015/firestitch-system.js +4 -4
  98. package/esm2015/public_api.js +19 -19
  99. package/fesm2015/firestitch-system.js +1218 -1218
  100. package/fesm2015/firestitch-system.js.map +1 -1
  101. package/firestitch-system.d.ts +5 -5
  102. package/package.json +1 -1
  103. package/public_api.d.ts +20 -20
@@ -1,67 +1,67 @@
1
- import { Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
2
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
- import { ProcessStates } from './../../consts/process-states.const';
4
- import { indexNameValue } from '../../helpers/index-name-value';
5
- import { ProcessState } from './../../enums/process-state.enum';
6
- import { FsMessage } from '@firestitch/message';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@firestitch/message";
9
- import * as i2 from "@firestitch/dialog";
10
- import * as i3 from "@firestitch/label";
11
- import * as i4 from "@angular/material/button";
12
- import * as i5 from "@firestitch/skeleton";
13
- import * as i6 from "@angular/material/dialog";
14
- import * as i7 from "@angular/flex-layout/flex";
15
- import * as i8 from "@angular/common";
16
- import * as i9 from "@firestitch/date";
17
- export class ProcessComponent {
18
- constructor(data, _message, _cdRef) {
19
- this.data = data;
20
- this._message = _message;
21
- this._cdRef = _cdRef;
22
- this.ProcessStates = indexNameValue(ProcessStates);
23
- this.ProcessState = ProcessState;
24
- }
25
- ngOnInit() {
26
- if (this.data.loadProcess) {
27
- this.load();
28
- }
29
- else {
30
- this.process = this.data.process;
31
- }
32
- }
33
- load() {
34
- this.data.loadProcess(this.data.process)
35
- .subscribe((process) => {
36
- this.process = process;
37
- this._cdRef.markForCheck();
38
- });
39
- }
40
- run() {
41
- this._message.success('Running process');
42
- this.data.run(this.data.process)
43
- .subscribe(() => {
44
- this.load();
45
- });
46
- setTimeout(() => {
47
- this.load();
48
- }, 1000);
49
- }
50
- download() {
51
- this.data.download(this.data.process);
52
- }
53
- }
54
- ProcessComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProcessComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.FsMessage }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
55
- ProcessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ProcessComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"process\">\r\n <div mat-dialog-title>Process</div>\r\n <mat-dialog-content>\r\n <div fxLayout=\"column\">\r\n <fs-label-field>\r\n <fs-label>\r\n Name\r\n </fs-label>\r\n {{process.prettyName}}\r\n </fs-label-field>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n {{ProcessStates[process.state]}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"process.notify\">\r\n <fs-label>\r\n Notification Email\r\n </fs-label>\r\n {{process.notify}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"process.pid\">\r\n <fs-label>\r\n PID\r\n </fs-label>\r\n {{process.pid}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\">\r\n <fs-label-field *ngIf=\"process.createDate\">\r\n <fs-label>\r\n Create Date\r\n </fs-label>\r\n {{ process.createDate | fsDateFormat: 'date-time' }}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"process.startDate\">\r\n <fs-label>\r\n Start Date\r\n </fs-label>\r\n {{ process.startDate | fsDateFormat: 'date-time' }}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"process.endDate\">\r\n <fs-label>\r\n Complete Date\r\n </fs-label>\r\n {{ process.endDate | fsDateFormat: 'date-time' }}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"process.duration\">\r\n <fs-label>\r\n Duration\r\n </fs-label>\r\n {{ process.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\r\n </fs-label-field>\r\n </div>\r\n\r\n <fs-label-field *ngIf=\"process.message\">\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n {{process.message}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"process.log\" class=\"log\">\r\n <fs-label>\r\n Log\r\n </fs-label>{{process.log}}\r\n </fs-label-field>\r\n\r\n </div>\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 Close\r\n </button>\r\n <button\r\n *ngIf=\"process.state === ProcessState.Running && data.loadProcess\"\r\n mat-button\r\n (click)=\"load()\">\r\n Refresh\r\n </button>\r\n <button \r\n *ngIf=\"process.state !== ProcessState.Running && data.run\" \r\n mat-button \r\n (click)=\"run()\">\r\n Run\r\n </button>\r\n <button\r\n *ngIf=\"process.filename\"\r\n mat-button\r\n (click)=\"download()\">\r\n Download\r\n </button> \r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n", styles: [":host ::ng-deep .log .field-content{white-space:pre-wrap;font-family:monospace;font-size:14px}\n"], components: [{ type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3.FsLabelComponent, selector: "fs-label" }, { 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: i6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i6.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i7.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i6.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsDateFormat": i9.FsDateFormatPipe, "fsDateDuration": i9.FsDateDurationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProcessComponent, decorators: [{
57
- type: Component,
58
- args: [{
59
- templateUrl: './process.component.html',
60
- styleUrls: ['./process.component.scss'],
61
- changeDetection: ChangeDetectionStrategy.OnPush,
62
- }]
63
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
64
- type: Inject,
65
- args: [MAT_DIALOG_DATA]
66
- }] }, { type: i1.FsMessage }, { type: i0.ChangeDetectorRef }]; } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcHJvY2Vzcy9wcm9jZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9jZXNzL3Byb2Nlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFRaEQsTUFBTSxPQUFPLGdCQUFnQjtJQU0zQixZQUNrQyxJQUFJLEVBQzVCLFFBQW1CLEVBQ25CLE1BQXlCO1FBRkQsU0FBSSxHQUFKLElBQUksQ0FBQTtRQUM1QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBTjVCLGtCQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLGlCQUFZLEdBQUcsWUFBWSxDQUFDO0lBTWhDLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjthQUFNO1lBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUNuQztJQUNILENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDdkMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxHQUFHO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUMvQixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFTCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OzhHQTFDVSxnQkFBZ0Isa0JBT2pCLGVBQWU7a0dBUGQsZ0JBQWdCLG9EQ2Q3QixvK0ZBMEdBOzRGRDVGYSxnQkFBZ0I7a0JBTDVCLFNBQVM7bUJBQUM7b0JBQ1QsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3ZDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7MEJBUUksTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBQcm9jZXNzU3RhdGVzIH0gZnJvbSAnLi8uLi8uLi9jb25zdHMvcHJvY2Vzcy1zdGF0ZXMuY29uc3QnO1xyXG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW5kZXgtbmFtZS12YWx1ZSc7XHJcbmltcG9ydCB7IFByb2Nlc3NTdGF0ZSB9IGZyb20gJy4vLi4vLi4vZW51bXMvcHJvY2Vzcy1zdGF0ZS5lbnVtJztcclxuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Byb2Nlc3MuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2Nlc3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwdWJsaWMgcHJvY2VzcztcclxuICBwdWJsaWMgUHJvY2Vzc1N0YXRlcyA9IGluZGV4TmFtZVZhbHVlKFByb2Nlc3NTdGF0ZXMpO1xyXG4gIHB1YmxpYyBQcm9jZXNzU3RhdGUgPSBQcm9jZXNzU3RhdGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhLFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxyXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICkge31cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5sb2FkUHJvY2Vzcykge1xyXG4gICAgICB0aGlzLmxvYWQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICB0aGlzLnByb2Nlc3MgPSB0aGlzLmRhdGEucHJvY2VzcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2FkKCkge1xyXG4gICAgdGhpcy5kYXRhLmxvYWRQcm9jZXNzKHRoaXMuZGF0YS5wcm9jZXNzKVxyXG4gICAgLnN1YnNjcmliZSgocHJvY2VzcykgPT4ge1xyXG4gICAgICB0aGlzLnByb2Nlc3MgPSBwcm9jZXNzO1xyXG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJ1bigpIHtcclxuICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnUnVubmluZyBwcm9jZXNzJyk7XHJcbiAgICB0aGlzLmRhdGEucnVuKHRoaXMuZGF0YS5wcm9jZXNzKVxyXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfSk7XHJcblxyXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkKCk7XHJcbiAgfSwgMTAwMCk7ICAgIFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRvd25sb2FkKCkge1xyXG4gICAgdGhpcy5kYXRhLmRvd25sb2FkKHRoaXMuZGF0YS5wcm9jZXNzKTtcclxuICB9XHJcbn1cclxuIiwiPGZzLWRpYWxvZyAqZnNTa2VsZXRvbj1cInByb2Nlc3NcIj5cclxuICA8ZGl2IG1hdC1kaWFsb2ctdGl0bGU+UHJvY2VzczwvZGl2PlxyXG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgIDxmcy1sYWJlbC1maWVsZD5cclxuICAgICAgICA8ZnMtbGFiZWw+XHJcbiAgICAgICAgICBOYW1lXHJcbiAgICAgICAgPC9mcy1sYWJlbD5cclxuICAgICAgICB7e3Byb2Nlc3MucHJldHR5TmFtZX19XHJcbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XHJcblxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIyMHB4XCI+XHJcbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkPlxyXG4gICAgICAgICAgPGZzLWxhYmVsPlxyXG4gICAgICAgICAgICBTdGF0dXNcclxuICAgICAgICAgIDwvZnMtbGFiZWw+XHJcbiAgICAgICAgICB7e1Byb2Nlc3NTdGF0ZXNbcHJvY2Vzcy5zdGF0ZV19fVxyXG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XHJcblxyXG4gICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cInByb2Nlc3Mubm90aWZ5XCI+XHJcbiAgICAgICAgICA8ZnMtbGFiZWw+XHJcbiAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBFbWFpbFxyXG4gICAgICAgICAgPC9mcy1sYWJlbD5cclxuICAgICAgICAgIHt7cHJvY2Vzcy5ub3RpZnl9fVxyXG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XHJcblxyXG4gICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cInByb2Nlc3MucGlkXCI+XHJcbiAgICAgICAgICA8ZnMtbGFiZWw+XHJcbiAgICAgICAgICAgIFBJRFxyXG4gICAgICAgICAgPC9mcy1sYWJlbD5cclxuICAgICAgICAgIHt7cHJvY2Vzcy5waWR9fVxyXG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMjBweFwiPlxyXG4gICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cInByb2Nlc3MuY3JlYXRlRGF0ZVwiPlxyXG4gICAgICAgICAgPGZzLWxhYmVsPlxyXG4gICAgICAgICAgICBDcmVhdGUgRGF0ZVxyXG4gICAgICAgICAgPC9mcy1sYWJlbD5cclxuICAgICAgICAgIHt7IHByb2Nlc3MuY3JlYXRlRGF0ZSB8IGZzRGF0ZUZvcm1hdDogJ2RhdGUtdGltZScgfX1cclxuICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxyXG5cclxuICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJwcm9jZXNzLnN0YXJ0RGF0ZVwiPlxyXG4gICAgICAgICAgPGZzLWxhYmVsPlxyXG4gICAgICAgICAgICBTdGFydCBEYXRlXHJcbiAgICAgICAgICA8L2ZzLWxhYmVsPlxyXG4gICAgICAgICAge3sgcHJvY2Vzcy5zdGFydERhdGUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnIH19XHJcbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cclxuXHJcbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5lbmREYXRlXCI+XHJcbiAgICAgICAgICA8ZnMtbGFiZWw+XHJcbiAgICAgICAgICAgIENvbXBsZXRlIERhdGVcclxuICAgICAgICAgIDwvZnMtbGFiZWw+XHJcbiAgICAgICAgICB7eyBwcm9jZXNzLmVuZERhdGUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnIH19XHJcbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cclxuXHJcbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5kdXJhdGlvblwiPlxyXG4gICAgICAgICAgPGZzLWxhYmVsPlxyXG4gICAgICAgICAgICBEdXJhdGlvblxyXG4gICAgICAgICAgPC9mcy1sYWJlbD5cclxuICAgICAgICAgIHt7IHByb2Nlc3MuZHVyYXRpb24gfCBmc0RhdGVEdXJhdGlvbjoge2hvdXJzOiB0cnVlLCBtaW51dGVzOiB0cnVlLCBzZWNvbmRzOiB0cnVlfSB9fVxyXG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5tZXNzYWdlXCI+XHJcbiAgICAgICAgPGZzLWxhYmVsPlxyXG4gICAgICAgICAgTWVzc2FnZVxyXG4gICAgICAgIDwvZnMtbGFiZWw+XHJcbiAgICAgICAge3twcm9jZXNzLm1lc3NhZ2V9fVxyXG4gICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxyXG5cclxuICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5sb2dcIiBjbGFzcz1cImxvZ1wiPlxyXG4gICAgICAgIDxmcy1sYWJlbD5cclxuICAgICAgICAgIExvZ1xyXG4gICAgICAgIDwvZnMtbGFiZWw+e3twcm9jZXNzLmxvZ319XHJcbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDxidXR0b24gXHJcbiAgICAgICAgbWF0LWJ1dHRvbiBcclxuICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCIgXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgIENsb3NlXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cInByb2Nlc3Muc3RhdGUgPT09IFByb2Nlc3NTdGF0ZS5SdW5uaW5nICYmIGRhdGEubG9hZFByb2Nlc3NcIlxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAoY2xpY2spPVwibG9hZCgpXCI+XHJcbiAgICAgIFJlZnJlc2hcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBcclxuICAgICAgICAqbmdJZj1cInByb2Nlc3Muc3RhdGUgIT09IFByb2Nlc3NTdGF0ZS5SdW5uaW5nICYmIGRhdGEucnVuXCIgXHJcbiAgICAgICAgbWF0LWJ1dHRvbiBcclxuICAgICAgICAoY2xpY2spPVwicnVuKClcIj5cclxuICAgICAgUnVuXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cInByb2Nlc3MuZmlsZW5hbWVcIlxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxyXG4gICAgICBEb3dubG9hZFxyXG4gICAgPC9idXR0b24+ICAgIFxyXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG48L2ZzLWRpYWxvZz5cclxuIl19
1
+ import { Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
2
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
+ import { ProcessStates } from './../../consts/process-states.const';
4
+ import { indexNameValue } from '../../helpers/index-name-value';
5
+ import { ProcessState } from './../../enums/process-state.enum';
6
+ import { FsMessage } from '@firestitch/message';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@firestitch/message";
9
+ import * as i2 from "@firestitch/dialog";
10
+ import * as i3 from "@firestitch/label";
11
+ import * as i4 from "@angular/material/button";
12
+ import * as i5 from "@firestitch/skeleton";
13
+ import * as i6 from "@angular/material/dialog";
14
+ import * as i7 from "@angular/flex-layout/flex";
15
+ import * as i8 from "@angular/common";
16
+ import * as i9 from "@firestitch/date";
17
+ export class ProcessComponent {
18
+ constructor(data, _message, _cdRef) {
19
+ this.data = data;
20
+ this._message = _message;
21
+ this._cdRef = _cdRef;
22
+ this.ProcessStates = indexNameValue(ProcessStates);
23
+ this.ProcessState = ProcessState;
24
+ }
25
+ ngOnInit() {
26
+ if (this.data.loadProcess) {
27
+ this.load();
28
+ }
29
+ else {
30
+ this.process = this.data.process;
31
+ }
32
+ }
33
+ load() {
34
+ this.data.loadProcess(this.data.process)
35
+ .subscribe((process) => {
36
+ this.process = process;
37
+ this._cdRef.markForCheck();
38
+ });
39
+ }
40
+ run() {
41
+ this._message.success('Running process');
42
+ this.data.run(this.data.process)
43
+ .subscribe(() => {
44
+ this.load();
45
+ });
46
+ setTimeout(() => {
47
+ this.load();
48
+ }, 1000);
49
+ }
50
+ download() {
51
+ this.data.download(this.data.process);
52
+ }
53
+ }
54
+ ProcessComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProcessComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.FsMessage }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
55
+ ProcessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ProcessComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"process\">\n <div mat-dialog-title>Process</div>\n <mat-dialog-content>\n <div fxLayout=\"column\">\n <fs-label-field>\n <fs-label>\n Name\n </fs-label>\n {{process.prettyName}}\n </fs-label-field>\n\n <div fxLayout=\"row\" fxLayoutGap=\"20px\">\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n {{ProcessStates[process.state]}}\n </fs-label-field>\n\n <fs-label-field *ngIf=\"process.notify\">\n <fs-label>\n Notification Email\n </fs-label>\n {{process.notify}}\n </fs-label-field>\n\n <fs-label-field *ngIf=\"process.pid\">\n <fs-label>\n PID\n </fs-label>\n {{process.pid}}\n </fs-label-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutGap=\"20px\">\n <fs-label-field *ngIf=\"process.createDate\">\n <fs-label>\n Create Date\n </fs-label>\n {{ process.createDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n\n <fs-label-field *ngIf=\"process.startDate\">\n <fs-label>\n Start Date\n </fs-label>\n {{ process.startDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n\n <fs-label-field *ngIf=\"process.endDate\">\n <fs-label>\n Complete Date\n </fs-label>\n {{ process.endDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n\n <fs-label-field *ngIf=\"process.duration\">\n <fs-label>\n Duration\n </fs-label>\n {{ process.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\n </fs-label-field>\n </div>\n\n <fs-label-field *ngIf=\"process.message\">\n <fs-label>\n Message\n </fs-label>\n {{process.message}}\n </fs-label-field>\n\n <fs-label-field *ngIf=\"process.log\" class=\"log\">\n <fs-label>\n Log\n </fs-label>{{process.log}}\n </fs-label-field>\n\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button \n mat-button \n [mat-dialog-close]=\"true\" \n color=\"primary\">\n Close\n </button>\n <button\n *ngIf=\"process.state === ProcessState.Running && data.loadProcess\"\n mat-button\n (click)=\"load()\">\n Refresh\n </button>\n <button \n *ngIf=\"process.state !== ProcessState.Running && data.run\" \n mat-button \n (click)=\"run()\">\n Run\n </button>\n <button\n *ngIf=\"process.filename\"\n mat-button\n (click)=\"download()\">\n Download\n </button> \n </mat-dialog-actions>\n</fs-dialog>\n", styles: [":host ::ng-deep .log .field-content{white-space:pre-wrap;font-family:monospace;font-size:14px}\n"], components: [{ type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3.FsLabelComponent, selector: "fs-label" }, { 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: i6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i6.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i7.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i6.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsDateFormat": i9.FsDateFormatPipe, "fsDateDuration": i9.FsDateDurationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProcessComponent, decorators: [{
57
+ type: Component,
58
+ args: [{
59
+ templateUrl: './process.component.html',
60
+ styleUrls: ['./process.component.scss'],
61
+ changeDetection: ChangeDetectionStrategy.OnPush,
62
+ }]
63
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
64
+ type: Inject,
65
+ args: [MAT_DIALOG_DATA]
66
+ }] }, { type: i1.FsMessage }, { type: i0.ChangeDetectorRef }]; } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcHJvY2Vzcy9wcm9jZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9jZXNzL3Byb2Nlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFRaEQsTUFBTSxPQUFPLGdCQUFnQjtJQU0zQixZQUNrQyxJQUFJLEVBQzVCLFFBQW1CLEVBQ25CLE1BQXlCO1FBRkQsU0FBSSxHQUFKLElBQUksQ0FBQTtRQUM1QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBTjVCLGtCQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLGlCQUFZLEdBQUcsWUFBWSxDQUFDO0lBTWhDLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjthQUFNO1lBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUNuQztJQUNILENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDdkMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxHQUFHO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUMvQixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFTCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OzhHQTFDVSxnQkFBZ0Isa0JBT2pCLGVBQWU7a0dBUGQsZ0JBQWdCLG9EQ2Q3QixneEZBMEdBOzRGRDVGYSxnQkFBZ0I7a0JBTDVCLFNBQVM7bUJBQUM7b0JBQ1QsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3ZDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7MEJBUUksTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBQcm9jZXNzU3RhdGVzIH0gZnJvbSAnLi8uLi8uLi9jb25zdHMvcHJvY2Vzcy1zdGF0ZXMuY29uc3QnO1xuaW1wb3J0IHsgaW5kZXhOYW1lVmFsdWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2luZGV4LW5hbWUtdmFsdWUnO1xuaW1wb3J0IHsgUHJvY2Vzc1N0YXRlIH0gZnJvbSAnLi8uLi8uLi9lbnVtcy9wcm9jZXNzLXN0YXRlLmVudW0nO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHByb2Nlc3M7XG4gIHB1YmxpYyBQcm9jZXNzU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoUHJvY2Vzc1N0YXRlcyk7XG4gIHB1YmxpYyBQcm9jZXNzU3RhdGUgPSBQcm9jZXNzU3RhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhLFxuICAgIHByaXZhdGUgX21lc3NhZ2U6IEZzTWVzc2FnZSxcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZGF0YS5sb2FkUHJvY2Vzcykge1xuICAgICAgdGhpcy5sb2FkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICB0aGlzLnByb2Nlc3MgPSB0aGlzLmRhdGEucHJvY2VzcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbG9hZCgpIHtcbiAgICB0aGlzLmRhdGEubG9hZFByb2Nlc3ModGhpcy5kYXRhLnByb2Nlc3MpXG4gICAgLnN1YnNjcmliZSgocHJvY2VzcykgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzID0gcHJvY2VzcztcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJ1bigpIHtcbiAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1J1bm5pbmcgcHJvY2VzcycpO1xuICAgIHRoaXMuZGF0YS5ydW4odGhpcy5kYXRhLnByb2Nlc3MpXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmxvYWQoKTtcbiAgICB9KTtcblxuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB0aGlzLmxvYWQoKTtcbiAgfSwgMTAwMCk7ICAgIFxuICB9XG5cbiAgcHVibGljIGRvd25sb2FkKCkge1xuICAgIHRoaXMuZGF0YS5kb3dubG9hZCh0aGlzLmRhdGEucHJvY2Vzcyk7XG4gIH1cbn1cbiIsIjxmcy1kaWFsb2cgKmZzU2tlbGV0b249XCJwcm9jZXNzXCI+XG4gIDxkaXYgbWF0LWRpYWxvZy10aXRsZT5Qcm9jZXNzPC9kaXY+XG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiPlxuICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgTmFtZVxuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICB7e3Byb2Nlc3MucHJldHR5TmFtZX19XG4gICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIyMHB4XCI+XG4gICAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBTdGF0dXNcbiAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgIHt7UHJvY2Vzc1N0YXRlc1twcm9jZXNzLnN0YXRlXX19XG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG5cbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5ub3RpZnlcIj5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBOb3RpZmljYXRpb24gRW1haWxcbiAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgIHt7cHJvY2Vzcy5ub3RpZnl9fVxuICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuXG4gICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cInByb2Nlc3MucGlkXCI+XG4gICAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgICAgUElEXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7e3Byb2Nlc3MucGlkfX1cbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIyMHB4XCI+XG4gICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cInByb2Nlc3MuY3JlYXRlRGF0ZVwiPlxuICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgIENyZWF0ZSBEYXRlXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBwcm9jZXNzLmNyZWF0ZURhdGUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnIH19XG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG5cbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5zdGFydERhdGVcIj5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBTdGFydCBEYXRlXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBwcm9jZXNzLnN0YXJ0RGF0ZSB8IGZzRGF0ZUZvcm1hdDogJ2RhdGUtdGltZScgfX1cbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJwcm9jZXNzLmVuZERhdGVcIj5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBDb21wbGV0ZSBEYXRlXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBwcm9jZXNzLmVuZERhdGUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnIH19XG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG5cbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5kdXJhdGlvblwiPlxuICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgIER1cmF0aW9uXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBwcm9jZXNzLmR1cmF0aW9uIHwgZnNEYXRlRHVyYXRpb246IHtob3VyczogdHJ1ZSwgbWludXRlczogdHJ1ZSwgc2Vjb25kczogdHJ1ZX0gfX1cbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJwcm9jZXNzLm1lc3NhZ2VcIj5cbiAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgIE1lc3NhZ2VcbiAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAge3twcm9jZXNzLm1lc3NhZ2V9fVxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5sb2dcIiBjbGFzcz1cImxvZ1wiPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgTG9nXG4gICAgICAgIDwvZnMtbGFiZWw+e3twcm9jZXNzLmxvZ319XG4gICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuXG4gICAgPC9kaXY+XG4gIDwvbWF0LWRpYWxvZy1jb250ZW50PlxuICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxidXR0b24gXG4gICAgICAgIG1hdC1idXR0b24gXG4gICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cInRydWVcIiBcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICBDbG9zZVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJwcm9jZXNzLnN0YXRlID09PSBQcm9jZXNzU3RhdGUuUnVubmluZyAmJiBkYXRhLmxvYWRQcm9jZXNzXCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwibG9hZCgpXCI+XG4gICAgICBSZWZyZXNoXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBcbiAgICAgICAgKm5nSWY9XCJwcm9jZXNzLnN0YXRlICE9PSBQcm9jZXNzU3RhdGUuUnVubmluZyAmJiBkYXRhLnJ1blwiIFxuICAgICAgICBtYXQtYnV0dG9uIFxuICAgICAgICAoY2xpY2spPVwicnVuKClcIj5cbiAgICAgIFJ1blxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJwcm9jZXNzLmZpbGVuYW1lXCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxuICAgICAgRG93bmxvYWRcbiAgICA8L2J1dHRvbj4gICAgXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mcy1kaWFsb2c+XG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from './processes.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcHJvY2Vzc2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb2Nlc3Nlcy5jb21wb25lbnQnO1xyXG4iXX0=
1
+ export * from './processes.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcHJvY2Vzc2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb2Nlc3Nlcy5jb21wb25lbnQnO1xuIl19
@@ -1,170 +1,170 @@
1
- import { Component, Input, ViewChild, ChangeDetectionStrategy } from '@angular/core';
2
- import { MatDialog } from '@angular/material/dialog';
3
- import { FsMessage } from '@firestitch/message';
4
- import { FsListComponent } from '@firestitch/list';
5
- import { ItemType } from '@firestitch/filter';
6
- import { map, takeUntil } from 'rxjs/operators';
7
- import { Subject } from 'rxjs';
8
- import { ProcessComponent } from './../process/process.component';
9
- import { ProcessState } from '../../enums';
10
- import { ProcessStates } from '../../consts';
11
- import { indexNameValue } from '../../helpers/index-name-value';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/material/dialog";
14
- import * as i2 from "@firestitch/message";
15
- import * as i3 from "@firestitch/list";
16
- import * as i4 from "@firestitch/date";
17
- import * as i5 from "@angular/common";
18
- export class ProcessesComponent {
19
- constructor(_dialog, _message) {
20
- this._dialog = _dialog;
21
- this._message = _message;
22
- this.actions = [];
23
- this.config = null;
24
- this.ProcessStates = indexNameValue(ProcessStates);
25
- this.ProcessState = ProcessState;
26
- this._destroy$ = new Subject();
27
- }
28
- ngOnInit() {
29
- this._configList();
30
- }
31
- _configList() {
32
- this.config = {
33
- actions: [],
34
- rowActions: [],
35
- filters: [
36
- {
37
- type: ItemType.Keyword,
38
- name: 'keyword',
39
- label: 'Search'
40
- },
41
- {
42
- type: ItemType.Select,
43
- name: 'state',
44
- label: 'Status',
45
- values: ProcessStates
46
- },
47
- ],
48
- fetch: (query) => {
49
- return this.loadProcesses(query)
50
- .pipe(map((response) => ({ data: response.data, paging: response.paging })));
51
- }
52
- };
53
- if (this.run) {
54
- this.config.rowActions.push({
55
- label: 'Run',
56
- show: (process) => {
57
- return process.state !== ProcessState.Running;
58
- },
59
- click: (data) => {
60
- this._message.info('Running process...');
61
- this.run(data)
62
- .subscribe(() => {
63
- this.list.reload();
64
- this._message.success('Succesfully ran process');
65
- });
66
- setTimeout(() => {
67
- this.list.reload();
68
- }, 500);
69
- }
70
- });
71
- }
72
- if (this.kill) {
73
- this.config.rowActions.push({
74
- label: 'Kill',
75
- show: (data) => {
76
- return !!data.pid;
77
- },
78
- click: (data) => {
79
- this._message.info('Killing process...');
80
- this.kill(data)
81
- .subscribe(() => {
82
- this.list.reload();
83
- this._message.success('Succesfully killed process');
84
- });
85
- setTimeout(() => {
86
- this.list.reload();
87
- }, 500);
88
- }
89
- });
90
- }
91
- if (this.delete) {
92
- this.config.rowActions.push({
93
- label: 'Delete',
94
- click: (data) => {
95
- this.delete(data)
96
- .subscribe(() => {
97
- this.list.reload();
98
- this._message.success('Deleted process');
99
- });
100
- }
101
- });
102
- }
103
- this.actions.forEach(action => {
104
- this.config.actions.push({
105
- primary: false,
106
- label: action.label,
107
- menu: action.menu,
108
- click: () => {
109
- if (action.click) {
110
- action.click();
111
- }
112
- if (action.component) {
113
- const dialogRef = this._dialog.open(action.component, {
114
- width: '800px'
115
- });
116
- dialogRef.afterClosed()
117
- .pipe(takeUntil(this._destroy$))
118
- .subscribe(() => {
119
- this.list.reload();
120
- });
121
- }
122
- },
123
- });
124
- });
125
- }
126
- open(process) {
127
- this._dialog.open(ProcessComponent, {
128
- data: {
129
- process,
130
- download: this.download,
131
- run: this.run,
132
- loadProcess: this.loadProcess,
133
- },
134
- width: '85%'
135
- });
136
- }
137
- ngOnDestroy() {
138
- this._destroy$.next();
139
- this._destroy$.complete();
140
- }
141
- }
142
- ProcessesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProcessesComponent, deps: [{ token: i1.MatDialog }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
143
- ProcessesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ProcessesComponent, selector: "fs-system-processes", inputs: { loadProcesses: "loadProcesses", loadProcess: "loadProcess", run: "run", kill: "kill", delete: "delete", download: "download", actions: "actions" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: 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.prettyName}}</a>\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{ProcessStates[row.state]}}\r\n <small>\r\n <div *ngIf=\"row.state===ProcessState.Running && row.percent\">Complete: {{ row.percent }}%</div>\r\n <div *ngIf=\"row.state===ProcessState.Completed && row.filename\">Download: <a href=\"javascript:;\" (click)=\"download(row)\">{{ row.filename }}</a></div>\r\n <div *ngIf=\"row.pid\">PID: {{ row.pid }}</div>\r\n <div *ngIf=\"row.state===ProcessState.Running && row.notify\">Notify: {{ row.notify }}</div>\r\n </small>\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Duration</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{ row.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Message</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{row.message}}\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Completed</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <fs-date-ago [date]=\"row.endDate\"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n</fs-list>\r\n", styles: [""], components: [{ type: i3.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i3.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i3.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i3.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsDateDuration": i4.FsDateDurationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProcessesComponent, decorators: [{
145
- type: Component,
146
- args: [{
147
- selector: 'fs-system-processes',
148
- templateUrl: './processes.component.html',
149
- styleUrls: ['./processes.component.scss'],
150
- changeDetection: ChangeDetectionStrategy.OnPush,
151
- }]
152
- }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.FsMessage }]; }, propDecorators: { list: [{
153
- type: ViewChild,
154
- args: [FsListComponent]
155
- }], loadProcesses: [{
156
- type: Input
157
- }], loadProcess: [{
158
- type: Input
159
- }], run: [{
160
- type: Input
161
- }], kill: [{
162
- type: Input
163
- }], delete: [{
164
- type: Input
165
- }], download: [{
166
- type: Input
167
- }], actions: [{
168
- type: Input
169
- }] } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9jZXNzZXMvcHJvY2Vzc2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9jZXNzZXMvcHJvY2Vzc2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBYSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7O0FBU2hFLE1BQU0sT0FBTyxrQkFBa0I7SUFrQjdCLFlBQ1UsT0FBa0IsRUFDbEIsUUFBbUI7UUFEbkIsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBVmIsWUFBTyxHQUFvQixFQUFFLENBQUM7UUFFdkMsV0FBTSxHQUFpQixJ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QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xyXG5pbXBvcnQgeyBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xyXG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XHJcblxyXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgUHJvY2Vzc0NvbXBvbmVudCB9IGZyb20gJy4vLi4vcHJvY2Vzcy9wcm9jZXNzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFByb2Nlc3NTdGF0ZSB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgUHJvY2Vzc0FjdGlvbiB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9wcm9jZXNzLWFjdGlvbic7IFxyXG5pbXBvcnQgeyBQcm9jZXNzU3RhdGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcclxuaW1wb3J0IHsgaW5kZXhOYW1lVmFsdWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2luZGV4LW5hbWUtdmFsdWUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZnMtc3lzdGVtLXByb2Nlc3NlcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3Nlcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzc2VzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9jZXNzZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoRnNMaXN0Q29tcG9uZW50KSBsaXN0OiBGc0xpc3RDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkUHJvY2Vzc2VzOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPHsgZGF0YTogYW55W10sIHBhZ2luZzogYW55IH0+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkUHJvY2VzczogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBydW46IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMga2lsbDogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZWxldGU6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgZG93bmxvYWQ6IChkYXRhOiBhbnkpID0+IGFueTtcclxuICBASW5wdXQoKSBwdWJsaWMgYWN0aW9uczogUHJvY2Vzc0FjdGlvbltdID0gW107XHJcblxyXG4gIHB1YmxpYyBjb25maWc6IEZzTGlzdENvbmZpZyA9IG51bGw7XHJcbiAgcHVibGljIFByb2Nlc3NTdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShQcm9jZXNzU3RhdGVzKTtcclxuICBwdWJsaWMgUHJvY2Vzc1N0YXRlID0gUHJvY2Vzc1N0YXRlO1xyXG5cclxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2VcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl9jb25maWdMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb25maWdMaXN0KCkge1xyXG4gICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgIGFjdGlvbnM6IFtdLFxyXG4gICAgICByb3dBY3Rpb25zOiBbXSxcclxuICAgICAgZmlsdGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLktleXdvcmQsXHJcbiAgICAgICAgICBuYW1lOiAna2V5d29yZCcsXHJcbiAgICAgICAgICBsYWJlbDogJ1NlYXJjaCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLlNlbGVjdCxcclxuICAgICAgICAgIG5hbWU6ICdzdGF0ZScsXHJcbiAgICAgICAgICBsYWJlbDogJ1N0YXR1cycsXHJcbiAgICAgICAgICB2YWx1ZXM6IFByb2Nlc3NTdGF0ZXNcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmZXRjaDogKHF1ZXJ5KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZFByb2Nlc3NlcyhxdWVyeSlcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+ICh7IGRhdGE6IHJlc3BvbnNlLmRhdGEsIHBhZ2luZzogcmVzcG9uc2UucGFnaW5nIH0pKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5ydW4pIHtcclxuICAgICAgdGhpcy5jb25maWcucm93QWN0aW9ucy5wdXNoKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnUnVuJyxcclxuICAgICAgICAgIHNob3c6IChwcm9jZXNzKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm9jZXNzLnN0YXRlICE9PSBQcm9jZXNzU3RhdGUuUnVubmluZztcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjbGljazogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5pbmZvKCdSdW5uaW5nIHByb2Nlc3MuLi4nKTtcclxuICAgICAgICAgICAgdGhpcy5ydW4oZGF0YSlcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU3VjY2VzZnVsbHkgcmFuIHByb2Nlc3MnKTtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMua2lsbCkge1xyXG4gICAgICB0aGlzLmNvbmZpZy5yb3dBY3Rpb25zLnB1c2goe1xyXG4gICAgICAgIGxhYmVsOiAnS2lsbCcsXHJcbiAgICAgICAgc2hvdzogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHJldHVybiAhIWRhdGEucGlkO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xpY2s6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLmluZm8oJ0tpbGxpbmcgcHJvY2Vzcy4uLicpO1xyXG4gICAgICAgICAgdGhpcy5raWxsKGRhdGEpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1N1Y2Nlc2Z1bGx5IGtpbGxlZCBwcm9jZXNzJyk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRlbGV0ZSkge1xyXG4gICAgICB0aGlzLmNvbmZpZy5yb3dBY3Rpb25zLnB1c2goe1xyXG4gICAgICAgIGxhYmVsOiAnRGVsZXRlJyxcclxuICAgICAgICBjbGljazogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlKGRhdGEpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0RlbGV0ZWQgcHJvY2VzcycpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xyXG4gICAgICB0aGlzLmNvbmZpZy5hY3Rpb25zLnB1c2goXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJpbWFyeTogZmFsc2UsXHJcbiAgICAgICAgICBsYWJlbDogYWN0aW9uLmxhYmVsLFxyXG4gICAgICAgICAgbWVudTogYWN0aW9uLm1lbnUsXHJcbiAgICAgICAgICBjbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uLmNsaWNrKSB7XHJcbiAgICAgICAgICAgICAgYWN0aW9uLmNsaWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChhY3Rpb24uY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2cub3BlbihhY3Rpb24uY29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAnODAwcHgnXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuKHByb2Nlc3MpIHtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKFByb2Nlc3NDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHByb2Nlc3MsXHJcbiAgICAgICAgZG93bmxvYWQ6IHRoaXMuZG93bmxvYWQsXHJcbiAgICAgICAgcnVuOiB0aGlzLnJ1bixcclxuICAgICAgICBsb2FkUHJvY2VzczogdGhpcy5sb2FkUHJvY2VzcyxcclxuICAgICAgfSxcclxuICAgICAgd2lkdGg6ICc4NSUnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxmcy1saXN0IFtjb25maWddPVwiY29uZmlnXCI+XHJcbiAgPGZzLWxpc3QtY29sdW1uPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPk5hbWU8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgIDxhIChjbGljayk9XCJvcGVuKHJvdylcIj57e3Jvdy5wcmV0dHlOYW1lfX08L2E+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZnMtbGlzdC1jb2x1bW4+XHJcblxyXG4gIDxmcy1saXN0LWNvbHVtbj5cclxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5TdGF0dXM8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgIHt7UHJvY2Vzc1N0YXRlc1tyb3cuc3RhdGVdfX1cclxuICAgICAgPHNtYWxsPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJyb3cuc3RhdGU9PT1Qcm9jZXNzU3RhdGUuUnVubmluZyAmJiByb3cucGVyY2VudFwiPkNvbXBsZXRlOiB7eyByb3cucGVyY2VudCB9fSU8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicm93LnN0YXRlPT09UHJvY2Vzc1N0YXRlLkNvbXBsZXRlZCAmJiByb3cuZmlsZW5hbWVcIj5Eb3dubG9hZDogPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJkb3dubG9hZChyb3cpXCI+e3sgcm93LmZpbGVuYW1lIH19PC9hPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJyb3cucGlkXCI+UElEOiB7eyByb3cucGlkIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInJvdy5zdGF0ZT09PVByb2Nlc3NTdGF0ZS5SdW5uaW5nICYmIHJvdy5ub3RpZnlcIj5Ob3RpZnk6IHt7IHJvdy5ub3RpZnkgfX08L2Rpdj5cclxuICAgICAgPC9zbWFsbD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9mcy1saXN0LWNvbHVtbj5cclxuXHJcbiAgPGZzLWxpc3QtY29sdW1uPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPkR1cmF0aW9uPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICB7eyByb3cuZHVyYXRpb24gfCBmc0RhdGVEdXJhdGlvbjoge2hvdXJzOiB0cnVlLCBtaW51dGVzOiB0cnVlLCBzZWNvbmRzOiB0cnVlfSB9fVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2ZzLWxpc3QtY29sdW1uPlxyXG5cclxuXHJcbiAgPGZzLWxpc3QtY29sdW1uPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPk1lc3NhZ2U8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgIHt7cm93Lm1lc3NhZ2V9fVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2ZzLWxpc3QtY29sdW1uPlxyXG5cclxuICA8ZnMtbGlzdC1jb2x1bW4+XHJcbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+Q29tcGxldGVkPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICA8ZnMtZGF0ZS1hZ28gW2RhdGVdPVwicm93LmVuZERhdGVcIj48L2ZzLWRhdGUtYWdvPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2ZzLWxpc3QtY29sdW1uPlxyXG48L2ZzLWxpc3Q+XHJcbiJdfQ==
1
+ import { Component, Input, ViewChild, ChangeDetectionStrategy } from '@angular/core';
2
+ import { MatDialog } from '@angular/material/dialog';
3
+ import { FsMessage } from '@firestitch/message';
4
+ import { FsListComponent } from '@firestitch/list';
5
+ import { ItemType } from '@firestitch/filter';
6
+ import { map, takeUntil } from 'rxjs/operators';
7
+ import { Subject } from 'rxjs';
8
+ import { ProcessComponent } from './../process/process.component';
9
+ import { ProcessState } from '../../enums';
10
+ import { ProcessStates } from '../../consts';
11
+ import { indexNameValue } from '../../helpers/index-name-value';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/material/dialog";
14
+ import * as i2 from "@firestitch/message";
15
+ import * as i3 from "@firestitch/list";
16
+ import * as i4 from "@firestitch/date";
17
+ import * as i5 from "@angular/common";
18
+ export class ProcessesComponent {
19
+ constructor(_dialog, _message) {
20
+ this._dialog = _dialog;
21
+ this._message = _message;
22
+ this.actions = [];
23
+ this.config = null;
24
+ this.ProcessStates = indexNameValue(ProcessStates);
25
+ this.ProcessState = ProcessState;
26
+ this._destroy$ = new Subject();
27
+ }
28
+ ngOnInit() {
29
+ this._configList();
30
+ }
31
+ _configList() {
32
+ this.config = {
33
+ actions: [],
34
+ rowActions: [],
35
+ filters: [
36
+ {
37
+ type: ItemType.Keyword,
38
+ name: 'keyword',
39
+ label: 'Search'
40
+ },
41
+ {
42
+ type: ItemType.Select,
43
+ name: 'state',
44
+ label: 'Status',
45
+ values: ProcessStates
46
+ },
47
+ ],
48
+ fetch: (query) => {
49
+ return this.loadProcesses(query)
50
+ .pipe(map((response) => ({ data: response.data, paging: response.paging })));
51
+ }
52
+ };
53
+ if (this.run) {
54
+ this.config.rowActions.push({
55
+ label: 'Run',
56
+ show: (process) => {
57
+ return process.state !== ProcessState.Running;
58
+ },
59
+ click: (data) => {
60
+ this._message.info('Running process...');
61
+ this.run(data)
62
+ .subscribe(() => {
63
+ this.list.reload();
64
+ this._message.success('Succesfully ran process');
65
+ });
66
+ setTimeout(() => {
67
+ this.list.reload();
68
+ }, 500);
69
+ }
70
+ });
71
+ }
72
+ if (this.kill) {
73
+ this.config.rowActions.push({
74
+ label: 'Kill',
75
+ show: (data) => {
76
+ return !!data.pid;
77
+ },
78
+ click: (data) => {
79
+ this._message.info('Killing process...');
80
+ this.kill(data)
81
+ .subscribe(() => {
82
+ this.list.reload();
83
+ this._message.success('Succesfully killed process');
84
+ });
85
+ setTimeout(() => {
86
+ this.list.reload();
87
+ }, 500);
88
+ }
89
+ });
90
+ }
91
+ if (this.delete) {
92
+ this.config.rowActions.push({
93
+ label: 'Delete',
94
+ click: (data) => {
95
+ this.delete(data)
96
+ .subscribe(() => {
97
+ this.list.reload();
98
+ this._message.success('Deleted process');
99
+ });
100
+ }
101
+ });
102
+ }
103
+ this.actions.forEach(action => {
104
+ this.config.actions.push({
105
+ primary: false,
106
+ label: action.label,
107
+ menu: action.menu,
108
+ click: () => {
109
+ if (action.click) {
110
+ action.click();
111
+ }
112
+ if (action.component) {
113
+ const dialogRef = this._dialog.open(action.component, {
114
+ width: '800px'
115
+ });
116
+ dialogRef.afterClosed()
117
+ .pipe(takeUntil(this._destroy$))
118
+ .subscribe(() => {
119
+ this.list.reload();
120
+ });
121
+ }
122
+ },
123
+ });
124
+ });
125
+ }
126
+ open(process) {
127
+ this._dialog.open(ProcessComponent, {
128
+ data: {
129
+ process,
130
+ download: this.download,
131
+ run: this.run,
132
+ loadProcess: this.loadProcess,
133
+ },
134
+ width: '85%'
135
+ });
136
+ }
137
+ ngOnDestroy() {
138
+ this._destroy$.next();
139
+ this._destroy$.complete();
140
+ }
141
+ }
142
+ ProcessesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProcessesComponent, deps: [{ token: i1.MatDialog }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
143
+ ProcessesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ProcessesComponent, selector: "fs-system-processes", inputs: { loadProcesses: "loadProcesses", loadProcess: "loadProcess", run: "run", kill: "kill", delete: "delete", download: "download", actions: "actions" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"open(row)\">{{row.prettyName}}</a>\n </ng-template>\n </fs-list-column>\n\n <fs-list-column>\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{ProcessStates[row.state]}}\n <small>\n <div *ngIf=\"row.state===ProcessState.Running && row.percent\">Complete: {{ row.percent }}%</div>\n <div *ngIf=\"row.state===ProcessState.Completed && row.filename\">Download: <a href=\"javascript:;\" (click)=\"download(row)\">{{ row.filename }}</a></div>\n <div *ngIf=\"row.pid\">PID: {{ row.pid }}</div>\n <div *ngIf=\"row.state===ProcessState.Running && row.notify\">Notify: {{ row.notify }}</div>\n </small>\n </ng-template>\n </fs-list-column>\n\n <fs-list-column>\n <ng-template fs-list-header>Duration</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{ row.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\n </ng-template>\n </fs-list-column>\n\n\n <fs-list-column>\n <ng-template fs-list-header>Message</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.message}}\n </ng-template>\n </fs-list-column>\n\n <fs-list-column>\n <ng-template fs-list-header>Completed</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.endDate\"></fs-date-ago>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [""], components: [{ type: i3.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i3.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i3.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i3.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsDateDuration": i4.FsDateDurationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProcessesComponent, decorators: [{
145
+ type: Component,
146
+ args: [{
147
+ selector: 'fs-system-processes',
148
+ templateUrl: './processes.component.html',
149
+ styleUrls: ['./processes.component.scss'],
150
+ changeDetection: ChangeDetectionStrategy.OnPush,
151
+ }]
152
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.FsMessage }]; }, propDecorators: { list: [{
153
+ type: ViewChild,
154
+ args: [FsListComponent]
155
+ }], loadProcesses: [{
156
+ type: Input
157
+ }], loadProcess: [{
158
+ type: Input
159
+ }], run: [{
160
+ type: Input
161
+ }], kill: [{
162
+ type: Input
163
+ }], delete: [{
164
+ type: Input
165
+ }], download: [{
166
+ type: Input
167
+ }], actions: [{
168
+ type: Input
169
+ }] } });
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9jZXNzZXMvcHJvY2Vzc2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9jZXNzZXMvcHJvY2Vzc2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBYSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7O0FBU2hFLE1BQU0sT0FBTyxrQkFBa0I7SUFrQjdCLFlBQ1UsT0FBa0IsRUFDbEIsUUFBbUI7UUFEbkIsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBVmIsWUFBTyxHQUFvQixFQUFFLENBQUM7UUFFdkMsV0FBTSxHQUFpQixJ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QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcbmltcG9ydCB7IEZzTGlzdENvbXBvbmVudCwgRnNMaXN0Q29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGlzdCc7XG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5cbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQcm9jZXNzQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9wcm9jZXNzL3Byb2Nlc3MuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2Nlc3NTdGF0ZSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IFByb2Nlc3NBY3Rpb24gfSBmcm9tICcuLy4uLy4uL2ludGVyZmFjZXMvcHJvY2Vzcy1hY3Rpb24nOyBcbmltcG9ydCB7IFByb2Nlc3NTdGF0ZXMgfSBmcm9tICcuLi8uLi9jb25zdHMnO1xuaW1wb3J0IHsgaW5kZXhOYW1lVmFsdWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2luZGV4LW5hbWUtdmFsdWUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLXN5c3RlbS1wcm9jZXNzZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzc2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzc2VzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZChGc0xpc3RDb21wb25lbnQpIGxpc3Q6IEZzTGlzdENvbXBvbmVudDtcblxuICBASW5wdXQoKSBwdWJsaWMgbG9hZFByb2Nlc3NlczogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTx7IGRhdGE6IGFueVtdLCBwYWdpbmc6IGFueSB9PjtcbiAgQElucHV0KCkgcHVibGljIGxvYWRQcm9jZXNzOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBydW46IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcbiAgQElucHV0KCkgcHVibGljIGtpbGw6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcbiAgQElucHV0KCkgcHVibGljIGRlbGV0ZTogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgZG93bmxvYWQ6IChkYXRhOiBhbnkpID0+IGFueTtcbiAgQElucHV0KCkgcHVibGljIGFjdGlvbnM6IFByb2Nlc3NBY3Rpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBjb25maWc6IEZzTGlzdENvbmZpZyA9IG51bGw7XG4gIHB1YmxpYyBQcm9jZXNzU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoUHJvY2Vzc1N0YXRlcyk7XG4gIHB1YmxpYyBQcm9jZXNzU3RhdGUgPSBQcm9jZXNzU3RhdGU7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgX21lc3NhZ2U6IEZzTWVzc2FnZVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9jb25maWdMaXN0KCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWdMaXN0KCkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgYWN0aW9uczogW10sXG4gICAgICByb3dBY3Rpb25zOiBbXSxcbiAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLktleXdvcmQsXG4gICAgICAgICAgbmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgIGxhYmVsOiAnU2VhcmNoJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuU2VsZWN0LFxuICAgICAgICAgIG5hbWU6ICdzdGF0ZScsXG4gICAgICAgICAgbGFiZWw6ICdTdGF0dXMnLFxuICAgICAgICAgIHZhbHVlczogUHJvY2Vzc1N0YXRlc1xuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZFByb2Nlc3NlcyhxdWVyeSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gKHsgZGF0YTogcmVzcG9uc2UuZGF0YSwgcGFnaW5nOiByZXNwb25zZS5wYWdpbmcgfSkpXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMucnVuKSB7XG4gICAgICB0aGlzLmNvbmZpZy5yb3dBY3Rpb25zLnB1c2goXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ1J1bicsXG4gICAgICAgICAgc2hvdzogKHByb2Nlc3MpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcm9jZXNzLnN0YXRlICE9PSBQcm9jZXNzU3RhdGUuUnVubmluZztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsaWNrOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5pbmZvKCdSdW5uaW5nIHByb2Nlc3MuLi4nKTtcbiAgICAgICAgICAgIHRoaXMucnVuKGRhdGEpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1N1Y2Nlc2Z1bGx5IHJhbiBwcm9jZXNzJyk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMua2lsbCkge1xuICAgICAgdGhpcy5jb25maWcucm93QWN0aW9ucy5wdXNoKHtcbiAgICAgICAgbGFiZWw6ICdLaWxsJyxcbiAgICAgICAgc2hvdzogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gISFkYXRhLnBpZDtcbiAgICAgICAgfSxcbiAgICAgICAgY2xpY2s6IChkYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5pbmZvKCdLaWxsaW5nIHByb2Nlc3MuLi4nKTtcbiAgICAgICAgICB0aGlzLmtpbGwoZGF0YSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU3VjY2VzZnVsbHkga2lsbGVkIHByb2Nlc3MnKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRlbGV0ZSkge1xuICAgICAgdGhpcy5jb25maWcucm93QWN0aW9ucy5wdXNoKHtcbiAgICAgICAgbGFiZWw6ICdEZWxldGUnLFxuICAgICAgICBjbGljazogKGRhdGEpID0+IHtcbiAgICAgICAgICB0aGlzLmRlbGV0ZShkYXRhKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdEZWxldGVkIHByb2Nlc3MnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICAgIHRoaXMuY29uZmlnLmFjdGlvbnMucHVzaChcbiAgICAgICAge1xuICAgICAgICAgIHByaW1hcnk6IGZhbHNlLFxuICAgICAgICAgIGxhYmVsOiBhY3Rpb24ubGFiZWwsXG4gICAgICAgICAgbWVudTogYWN0aW9uLm1lbnUsXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24uY2xpY2spIHtcbiAgICAgICAgICAgICAgYWN0aW9uLmNsaWNrKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhY3Rpb24uY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nLm9wZW4oYWN0aW9uLmNvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgd2lkdGg6ICc4MDBweCdcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3Blbihwcm9jZXNzKSB7XG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oUHJvY2Vzc0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICBwcm9jZXNzLFxuICAgICAgICBkb3dubG9hZDogdGhpcy5kb3dubG9hZCxcbiAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgbG9hZFByb2Nlc3M6IHRoaXMubG9hZFByb2Nlc3MsXG4gICAgICB9LFxuICAgICAgd2lkdGg6ICc4NSUnXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxmcy1saXN0IFtjb25maWddPVwiY29uZmlnXCI+XG4gIDxmcy1saXN0LWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+TmFtZTwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICA8YSAoY2xpY2spPVwib3Blbihyb3cpXCI+e3tyb3cucHJldHR5TmFtZX19PC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG5cbiAgPGZzLWxpc3QtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5TdGF0dXM8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAge3tQcm9jZXNzU3RhdGVzW3Jvdy5zdGF0ZV19fVxuICAgICAgPHNtYWxsPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicm93LnN0YXRlPT09UHJvY2Vzc1N0YXRlLlJ1bm5pbmcgJiYgcm93LnBlcmNlbnRcIj5Db21wbGV0ZToge3sgcm93LnBlcmNlbnQgfX0lPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyb3cuc3RhdGU9PT1Qcm9jZXNzU3RhdGUuQ29tcGxldGVkICYmIHJvdy5maWxlbmFtZVwiPkRvd25sb2FkOiA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cImRvd25sb2FkKHJvdylcIj57eyByb3cuZmlsZW5hbWUgfX08L2E+PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyb3cucGlkXCI+UElEOiB7eyByb3cucGlkIH19PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyb3cuc3RhdGU9PT1Qcm9jZXNzU3RhdGUuUnVubmluZyAmJiByb3cubm90aWZ5XCI+Tm90aWZ5OiB7eyByb3cubm90aWZ5IH19PC9kaXY+XG4gICAgICA8L3NtYWxsPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG5cbiAgPGZzLWxpc3QtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5EdXJhdGlvbjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICB7eyByb3cuZHVyYXRpb24gfCBmc0RhdGVEdXJhdGlvbjoge2hvdXJzOiB0cnVlLCBtaW51dGVzOiB0cnVlLCBzZWNvbmRzOiB0cnVlfSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG5cblxuICA8ZnMtbGlzdC1jb2x1bW4+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPk1lc3NhZ2U8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAge3tyb3cubWVzc2FnZX19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cblxuICA8ZnMtbGlzdC1jb2x1bW4+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPkNvbXBsZXRlZDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICA8ZnMtZGF0ZS1hZ28gW2RhdGVdPVwicm93LmVuZERhdGVcIj48L2ZzLWRhdGUtYWdvPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG48L2ZzLWxpc3Q+XG4iXX0=