@firestitch/system 12.3.1 → 12.4.0

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.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/expansion'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/dialog'), require('@angular/material/tooltip'), require('@angular/material/icon'), require('@angular/flex-layout'), require('@angular/material/button'), require('@firestitch/date'), require('@firestitch/datepicker'), require('@firestitch/skeleton'), require('@firestitch/list'), require('@firestitch/file-manager'), require('@firestitch/dialog'), require('@firestitch/label'), require('@firestitch/file'), require('@firestitch/menu'), require('@firestitch/popover'), require('@firestitch/colorpicker'), require('rxjs/operators'), require('rxjs'), require('date-fns'), require('@firestitch/message'), require('@firestitch/build'), require('@angular/flex-layout/flex'), require('@angular/flex-layout/extended'), require('@firestitch/filter'), require('@angular/material/tabs'), require('@firestitch/selection'), require('@firestitch/prompt'), require('@firestitch/clipboard'), require('@angular/material/core')) :
3
- typeof define === 'function' && define.amd ? define('@firestitch/system', ['exports', '@angular/core', '@angular/common', '@angular/forms', '@angular/material/form-field', '@angular/material/expansion', '@angular/material/input', '@angular/material/select', '@angular/material/dialog', '@angular/material/tooltip', '@angular/material/icon', '@angular/flex-layout', '@angular/material/button', '@firestitch/date', '@firestitch/datepicker', '@firestitch/skeleton', '@firestitch/list', '@firestitch/file-manager', '@firestitch/dialog', '@firestitch/label', '@firestitch/file', '@firestitch/menu', '@firestitch/popover', '@firestitch/colorpicker', 'rxjs/operators', 'rxjs', 'date-fns', '@firestitch/message', '@firestitch/build', '@angular/flex-layout/flex', '@angular/flex-layout/extended', '@firestitch/filter', '@angular/material/tabs', '@firestitch/selection', '@firestitch/prompt', '@firestitch/clipboard', '@angular/material/core'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.firestitch = global.firestitch || {}, global.firestitch.system = {}), global.ng.core, global.ng.common, global.ng.forms, global.ng.material.formField, global.ng.material.expansion, global.ng.material.input, global.ng.material.select, global.ng.material.dialog, global.ng.material.tooltip, global.ng.material.icon, global.ng.flexLayout, global.ng.material.button, global.i4$2, global.i10$1, global.i5, global.i2$3, global.i1$2, global.i2$2, global.i2$1, global.i12, global.i4$1, global.i5$1, global.i11$1, global.rxjs.operators, global.rxjs, global.dateFns, global.i1, global.i2, global.ng.flexLayout.flex, global.ng.flexLayout.extended, global.filter, global.ng.material.tabs, global.selection, global.i3$1, global.i2$4, global.ng.material.core));
5
- })(this, (function (exports, i0, i9, i17, i7, i4$3, i16, i8, i1$1, i11, i6, flexLayout, i4, i4$2, i10$1, i5, i2$3, i1$2, i2$2, i2$1, i12, i4$1, i5$1, i11$1, operators, rxjs, dateFns, i1, i2, i6$1, i10, filter, i3, selection, i3$1, i2$4, i9$1) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/button'), require('@angular/material/dialog'), require('@angular/material/expansion'), require('@angular/material/form-field'), require('@angular/material/icon'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/material/tooltip'), require('@firestitch/colorpicker'), require('@firestitch/date'), require('@firestitch/datepicker'), require('@firestitch/dialog'), require('@firestitch/file'), require('@firestitch/file-manager'), require('@firestitch/label'), require('@firestitch/list'), require('@firestitch/menu'), require('@firestitch/popover'), require('@firestitch/skeleton'), require('@firestitch/filter'), require('rxjs/operators'), require('rxjs'), require('@firestitch/selection'), require('date-fns'), require('@firestitch/message'), require('@firestitch/prompt'), require('@firestitch/build'), require('@firestitch/clipboard'), require('@angular/material/core')) :
3
+ typeof define === 'function' && define.amd ? define('@firestitch/system', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/button', '@angular/material/dialog', '@angular/material/expansion', '@angular/material/form-field', '@angular/material/icon', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/material/tooltip', '@firestitch/colorpicker', '@firestitch/date', '@firestitch/datepicker', '@firestitch/dialog', '@firestitch/file', '@firestitch/file-manager', '@firestitch/label', '@firestitch/list', '@firestitch/menu', '@firestitch/popover', '@firestitch/skeleton', '@firestitch/filter', 'rxjs/operators', 'rxjs', '@firestitch/selection', 'date-fns', '@firestitch/message', '@firestitch/prompt', '@firestitch/build', '@firestitch/clipboard', '@angular/material/core'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.firestitch = global.firestitch || {}, global.firestitch.system = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.button, global.ng.material.dialog, global.ng.material.expansion, global.ng.material.formField, global.ng.material.icon, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.material.tooltip, global.i11, global.i4$1, global.i10, global.i2, global.i12, global.fileManager, global.i3, global.i2$1, global.i4$2, global.i5$1, global.i5, global.filter, global.rxjs.operators, global.rxjs, global.selection, global.dateFns, global.i1$1, global.i3$2, global.i2$2, global.i2$3, global.ng.material.core));
5
+ })(this, (function (exports, i7, i0, i16, i4, i1, i4$3, i7$1, i6, i15, i8, i3$1, i9, i11, i4$1, i10, i2, i12, fileManager, i3, i2$1, i4$2, i5$1, i5, filter, operators, rxjs, selection, dateFns, i1$1, i3$2, i2$2, i2$3, i9$1) { 'use strict';
6
6
 
7
7
  function _interopNamespace(e) {
8
8
  if (e && e.__esModule) return e;
@@ -22,124 +22,216 @@
22
22
  return Object.freeze(n);
23
23
  }
24
24
 
25
- var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
26
- var i9__namespace = /*#__PURE__*/_interopNamespace(i9);
27
- var i17__namespace = /*#__PURE__*/_interopNamespace(i17);
28
25
  var i7__namespace = /*#__PURE__*/_interopNamespace(i7);
29
- var i4__namespace$3 = /*#__PURE__*/_interopNamespace(i4$3);
26
+ var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
30
27
  var i16__namespace = /*#__PURE__*/_interopNamespace(i16);
28
+ var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
29
+ var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
30
+ var i4__namespace$3 = /*#__PURE__*/_interopNamespace(i4$3);
31
+ var i7__namespace$1 = /*#__PURE__*/_interopNamespace(i7$1);
32
+ var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
33
+ var i15__namespace = /*#__PURE__*/_interopNamespace(i15);
31
34
  var i8__namespace = /*#__PURE__*/_interopNamespace(i8);
32
- var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1$1);
35
+ var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
36
+ var i9__namespace = /*#__PURE__*/_interopNamespace(i9);
33
37
  var i11__namespace = /*#__PURE__*/_interopNamespace(i11);
34
- var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
35
- var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
36
- var i4__namespace$2 = /*#__PURE__*/_interopNamespace(i4$2);
37
- var i10__namespace$1 = /*#__PURE__*/_interopNamespace(i10$1);
38
- var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
39
- var i2__namespace$3 = /*#__PURE__*/_interopNamespace(i2$3);
40
- var i1__namespace$2 = /*#__PURE__*/_interopNamespace(i1$2);
41
- var i2__namespace$2 = /*#__PURE__*/_interopNamespace(i2$2);
42
- var i2__namespace$1 = /*#__PURE__*/_interopNamespace(i2$1);
43
- var i12__namespace = /*#__PURE__*/_interopNamespace(i12);
44
38
  var i4__namespace$1 = /*#__PURE__*/_interopNamespace(i4$1);
45
- var i5__namespace$1 = /*#__PURE__*/_interopNamespace(i5$1);
46
- var i11__namespace$1 = /*#__PURE__*/_interopNamespace(i11$1);
47
- var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
48
- var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
49
- var i6__namespace$1 = /*#__PURE__*/_interopNamespace(i6$1);
50
39
  var i10__namespace = /*#__PURE__*/_interopNamespace(i10);
40
+ var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
41
+ var i12__namespace = /*#__PURE__*/_interopNamespace(i12);
51
42
  var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
52
- var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
53
- var i2__namespace$4 = /*#__PURE__*/_interopNamespace(i2$4);
43
+ var i2__namespace$1 = /*#__PURE__*/_interopNamespace(i2$1);
44
+ var i4__namespace$2 = /*#__PURE__*/_interopNamespace(i4$2);
45
+ var i5__namespace$1 = /*#__PURE__*/_interopNamespace(i5$1);
46
+ var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
47
+ var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1$1);
48
+ var i3__namespace$2 = /*#__PURE__*/_interopNamespace(i3$2);
49
+ var i2__namespace$2 = /*#__PURE__*/_interopNamespace(i2$2);
50
+ var i2__namespace$3 = /*#__PURE__*/_interopNamespace(i2$3);
54
51
  var i9__namespace$1 = /*#__PURE__*/_interopNamespace(i9$1);
55
52
 
56
- var FS_SYSTEM_CONFIG = new i0.InjectionToken('fs-system-config');
53
+ exports.CronState = void 0;
54
+ (function (CronState) {
55
+ CronState["Running"] = "running";
56
+ CronState["Idle"] = "idle";
57
+ CronState["Failed"] = "failed";
58
+ CronState["Queued"] = "queued";
59
+ CronState["Disabled"] = "disabled";
60
+ CronState["Enabled"] = "enabled";
61
+ CronState["Killing"] = "killing";
62
+ })(exports.CronState || (exports.CronState = {}));
57
63
 
58
- var DashboardComponent = /** @class */ (function () {
59
- function DashboardComponent(_message, _cdRef, _buildService) {
60
- this._message = _message;
61
- this._cdRef = _cdRef;
62
- this._buildService = _buildService;
63
- this.buttonActions = [];
64
- this.menuActions = [];
65
- this._destroy$ = new rxjs.Subject();
66
- this.actions = [];
64
+ var SettingInterfaceType;
65
+ (function (SettingInterfaceType) {
66
+ SettingInterfaceType["RadioButton"] = "R";
67
+ SettingInterfaceType["InputBox"] = "I";
68
+ SettingInterfaceType["Textarea"] = "T";
69
+ SettingInterfaceType["Select"] = "D";
70
+ SettingInterfaceType["SelectMultiple"] = "W";
71
+ SettingInterfaceType["Date"] = "A";
72
+ SettingInterfaceType["File"] = "F";
73
+ SettingInterfaceType["Static"] = "S";
74
+ SettingInterfaceType["Password"] = "P";
75
+ SettingInterfaceType["Time"] = "M";
76
+ SettingInterfaceType["None"] = "N";
77
+ SettingInterfaceType["Color"] = "C";
78
+ })(SettingInterfaceType || (SettingInterfaceType = {}));
79
+
80
+ exports.ApiLogState = void 0;
81
+ (function (ApiLogState) {
82
+ ApiLogState["Success"] = "success";
83
+ ApiLogState["Failed"] = "failed";
84
+ ApiLogState["Deleted"] = "deleted";
85
+ })(exports.ApiLogState || (exports.ApiLogState = {}));
86
+
87
+ exports.ProcessState = void 0;
88
+ (function (ProcessState) {
89
+ ProcessState["Queued"] = "Q";
90
+ ProcessState["Running"] = "R";
91
+ ProcessState["Completed"] = "C";
92
+ ProcessState["Killed"] = "K";
93
+ ProcessState["Deleted"] = "D";
94
+ ProcessState["Failed"] = "F";
95
+ })(exports.ProcessState || (exports.ProcessState = {}));
96
+
97
+ var CronLogState;
98
+ (function (CronLogState) {
99
+ CronLogState["Message"] = "message";
100
+ CronLogState["Disabled"] = "disabled";
101
+ CronLogState["Enabled"] = "enabled";
102
+ CronLogState["Started"] = "started";
103
+ CronLogState["Running"] = "running";
104
+ CronLogState["Completed"] = "completed";
105
+ CronLogState["Failed"] = "failed";
106
+ CronLogState["Killed"] = "killed";
107
+ CronLogState["Queued"] = "queued";
108
+ CronLogState["Reset"] = "reset";
109
+ CronLogState["Stagnant"] = "stagnant";
110
+ CronLogState["LongRunning"] = "long_running";
111
+ })(CronLogState || (CronLogState = {}));
112
+
113
+ var CronStates = [
114
+ { name: 'Running', value: exports.CronState.Running },
115
+ { name: 'Idle', value: exports.CronState.Idle },
116
+ { name: 'Failed', value: exports.CronState.Failed },
117
+ { name: 'Queued', value: exports.CronState.Queued },
118
+ { name: 'Disabled', value: exports.CronState.Disabled },
119
+ { name: 'Killing', value: exports.CronState.Killing },
120
+ { name: 'Enabled', value: exports.CronState.Enabled },
121
+ ];
122
+
123
+ var ApiLogStates = [
124
+ { name: 'Success', value: exports.ApiLogState.Success },
125
+ { name: 'Failed', value: exports.ApiLogState.Failed },
126
+ { name: 'Deleted', value: exports.ApiLogState.Deleted }
127
+ ];
128
+
129
+ var ProcessStates = [
130
+ { name: 'Queued', value: exports.ProcessState.Queued },
131
+ { name: 'Running', value: exports.ProcessState.Running },
132
+ { name: 'Completed', value: exports.ProcessState.Completed },
133
+ { name: 'Killed', value: exports.ProcessState.Killed },
134
+ { name: 'Failed', value: exports.ProcessState.Failed },
135
+ { name: 'Deleted', value: exports.ProcessState.Deleted }
136
+ ];
137
+
138
+ function indexNameValue(arry) {
139
+ var obj = {};
140
+ arry.forEach(function (item) {
141
+ obj[item.value] = item.name;
142
+ });
143
+ return obj;
144
+ }
145
+
146
+ var ApiLogComponent = /** @class */ (function () {
147
+ function ApiLogComponent(_dialogRef, data) {
148
+ this._dialogRef = _dialogRef;
149
+ this.data = data;
67
150
  }
68
- DashboardComponent.prototype.ngOnInit = function () {
69
- var _this = this;
70
- this._load();
71
- this.buttonActions = this.actions.filter(function (item) { return !item.menu; });
72
- this.menuActions = this.actions.filter(function (item) { return item.menu; });
73
- this.build = this._buildService.build;
74
- this._buildService.build$
75
- .pipe(operators.takeUntil(this._destroy$))
76
- .subscribe(function (build) {
77
- _this.build = build;
78
- _this._cdRef.markForCheck();
79
- });
80
- };
81
- DashboardComponent.prototype._load = function () {
82
- var _this = this;
83
- this.load()
84
- .subscribe(function (dashboard) {
85
- _this.dashboard = dashboard;
86
- _this.dashboard.cronRanAttention = !dashboard.cronRan ||
87
- dateFns.differenceInMinutes(new Date(), new Date(dashboard.cronRan)) > 15;
88
- _this._cdRef.markForCheck();
89
- });
90
- };
91
- DashboardComponent.prototype.ngOnDestroy = function () {
92
- this._destroy$.next();
93
- this._destroy$.complete();
151
+ ApiLogComponent.prototype.ngOnInit = function () {
152
+ this.apiLogStates = indexNameValue(ApiLogStates);
153
+ if (this.data.apiLog) {
154
+ this.apiLog = this.data.apiLog;
155
+ }
94
156
  };
95
- DashboardComponent.prototype.actionClick = function (action) {
96
- action.click();
157
+ return ApiLogComponent;
158
+ }());
159
+ ApiLogComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ApiLogComponent, deps: [{ token: i1__namespace.MatDialogRef }, { token: i1.MAT_DIALOG_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
160
+ ApiLogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ApiLogComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog *fsSkeleton=\"apiLog\">\n\n <div mat-dialog-title>API Log</div>\n\n <mat-dialog-content>\n <div class=\"fs-row.gap-large.wrap\">\n <div>\n <fs-label-field>\n <fs-label>\n Type\n </fs-label>\n {{apiLog.type}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n {{apiLogStates[apiLog.state]}}\n </fs-label-field>\n\n\n <fs-label-field *ngIf=\"apiLog.code\">\n <fs-label>\n Code\n </fs-label>\n {{apiLog.code}}\n </fs-label-field>\n\n </div>\n <div>\n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{apiLog.createDate|fsDateFormat: 'full-date-time'}}\n </fs-label-field>\n\n\n <fs-label-field *ngIf=\"apiLog.direction\">\n <fs-label>\n Direction\n </fs-label>\n {{apiLog.direction}}\n </fs-label-field>\n\n\n <fs-label-field *ngIf=\"apiLog.length\">\n <fs-label>\n Duration\n </fs-label>\n {{ apiLog.length | fsDateDuration }}\n </fs-label-field>\n </div>\n </div>\n\n <div>\n <fs-label-field *ngIf=\"apiLog.message\">\n <fs-label>\n Message\n </fs-label>\n {{apiLog.message}}\n </fs-label-field>\n </div>\n\n\n <div class=\"fs-row.gap-large.wrap\">\n <div>\n <fs-label-field *ngIf=\"apiLog.method\">\n <fs-label>\n Method\n </fs-label>\n {{apiLog.method}}\n </fs-label-field>\n </div>\n <div>\n <fs-label-field *ngIf=\"apiLog.url\">\n <fs-label>\n URL\n </fs-label>\n {{apiLog.url}}\n </fs-label-field>\n </div>\n </div>\n\n <div>\n <fs-label-field *ngIf=\"apiLog.request\">\n <fs-label>\n Request\n </fs-label>\n <pre>{{apiLog.request|json}}</pre>\n </fs-label-field>\n\n <fs-label-field *ngIf=\"apiLog.response\">\n <fs-label>\n Response\n </fs-label>\n <pre>{{apiLog.response|json}}</pre>\n </fs-label-field>\n </div>\n </mat-dialog-content>\n\n <mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Done</button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [""], components: [{ type: i2__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3__namespace.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3__namespace.FsLabelComponent, selector: "fs-label" }, { type: i4__namespace.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__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsDateFormat": i4__namespace$1.FsDateFormatPipe, "fsDateDuration": i4__namespace$1.FsDateDurationPipe, "json": i7__namespace.JsonPipe } });
161
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ApiLogComponent, decorators: [{
162
+ type: i0.Component,
163
+ args: [{
164
+ templateUrl: './api-log.component.html',
165
+ styleUrls: ['./api-log.component.scss']
166
+ }]
167
+ }], ctorParameters: function () {
168
+ return [{ type: i1__namespace.MatDialogRef }, { type: undefined, decorators: [{
169
+ type: i0.Inject,
170
+ args: [i1.MAT_DIALOG_DATA]
171
+ }] }];
172
+ } });
173
+
174
+ var ApiLogsComponent = /** @class */ (function () {
175
+ function ApiLogsComponent(_dialog) {
176
+ this._dialog = _dialog;
177
+ this.config = null;
178
+ this.apiLogStates = indexNameValue(ApiLogStates);
179
+ }
180
+ ApiLogsComponent.prototype.ngOnInit = function () {
181
+ this._configList();
97
182
  };
98
- DashboardComponent.prototype.initClick = function () {
183
+ ApiLogsComponent.prototype._configList = function () {
99
184
  var _this = this;
100
- this.init()
101
- .subscribe(function () {
102
- _this._message.success('Successfully initialized the system');
103
- });
185
+ this.config = {
186
+ filters: [
187
+ {
188
+ type: filter.ItemType.Keyword,
189
+ name: 'keyword',
190
+ label: 'Search'
191
+ },
192
+ {
193
+ type: filter.ItemType.Select,
194
+ name: 'state',
195
+ label: 'Status',
196
+ values: ApiLogStates
197
+ },
198
+ {
199
+ name: 'createDate',
200
+ type: filter.ItemType.DateRange,
201
+ label: ['From Date', 'To Date'],
202
+ }
203
+ ],
204
+ fetch: function (query) {
205
+ Object.assign(query, {});
206
+ return _this.loadApiLogs(query)
207
+ .pipe(operators.map(function (response) { return ({ data: response.data, paging: response.paging }); }));
208
+ }
209
+ };
104
210
  };
105
- DashboardComponent.prototype.upgradeClick = function () {
106
- var _this = this;
107
- this.upgrade()
108
- .subscribe(function () {
109
- _this._load();
110
- _this._message.success('Successfully upgraded the system');
211
+ ApiLogsComponent.prototype.open = function (apiLog) {
212
+ this._dialog.open(ApiLogComponent, {
213
+ data: { apiLog: apiLog },
214
+ width: '85%'
111
215
  });
112
216
  };
113
- return DashboardComponent;
217
+ return ApiLogsComponent;
114
218
  }());
115
- DashboardComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DashboardComponent, deps: [{ token: i1__namespace.FsMessage }, { token: i0__namespace.ChangeDetectorRef }, { token: i2__namespace.FsBuildService }], target: i0__namespace.ɵɵFactoryTarget.Component });
116
- DashboardComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DashboardComponent, selector: "fs-system-dashboard", inputs: { init: "init", upgrade: "upgrade", load: "load", actions: "actions" }, ngImport: i0__namespace, template: "<div *fsSkeleton=\"dashboard\">\r\n\r\n <div class=\"h2-container\">\r\n\r\n <div class=\"actions\">\r\n <h2>Actions</h2>\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxLayout.xs=\"column\">\r\n <button mat-raised-button (click)=\"upgradeClick()\">Run Upgrades</button>\r\n <button mat-raised-button (click)=\"initClick()\">Init System</button>\r\n\r\n <button\r\n *ngFor=\"let action of buttonActions\"\r\n mat-raised-button\r\n (click)=\"actionClick(action)\">\r\n {{action.label}}\r\n </button>\r\n\r\n <ng-container *ngIf=\"menuActions.length\">\r\n\r\n <fs-menu buttonClass=\"mat-raised-button menu-button\">\r\n <ng-template\r\n *ngFor=\"let action of menuActions\"\r\n fs-menu-item\r\n (click)=\"actionClick(action)\">\r\n {{action.label}}\r\n </ng-template>\r\n </fs-menu>\r\n\r\n\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n fxLayout=\"row wrap\"\r\n fxLayout.xs=\"column\"\r\n fxLayoutGap.xs=\"0px\"\r\n fxLayoutAlign=\"start start\"\r\n fxLayoutGap=\"50px\">\r\n\r\n <div>\r\n <h2>Server</h2>\r\n\r\n <fs-label-field>\r\n <fs-label>Date/Time</fs-label>\r\n {{dashboard.serverTime | fsDateFormat: 'date-time'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Timezone</fs-label>\r\n {{dashboard.serverTimezone}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Hostname</fs-label>\r\n {{dashboard.serverHostname}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Directory</fs-label>\r\n {{dashboard.appDirectory}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div>\r\n <h2>System</h2>\r\n <fs-label-field>\r\n <fs-label>Mode</fs-label>\r\n {{dashboard.appMode}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Notification Recipients</fs-label>\r\n {{dashboard.notifyRecipients.join(', ')}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div>\r\n <h2>Database</h2>\r\n\r\n <fs-label-field>\r\n <fs-label>Name</fs-label>\r\n {{dashboard.databaseName}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Date/Time</fs-label>\r\n {{dashboard.databaseTime | fsDateFormat: 'date-time'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Timezone</fs-label>\r\n {{dashboard.databaseTimezone}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div *ngIf=\"build || dashboard.upgrades.length\">\r\n <h2>Build</h2>\r\n\r\n <ng-container *ngIf=\"build\">\r\n <fs-label-field>\r\n <fs-label>Version</fs-label>\r\n {{build.version}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Date</fs-label>\r\n {{ build.date | fsDateFormat: 'date-time' }}\r\n </fs-label-field>\r\n </ng-container>\r\n\r\n <fs-label-field *ngIf=\"dashboard.upgrades.length\">\r\n <fs-label>Pending Upgrades</fs-label>\r\n <span class=\"attention\" [ngClass]=\"{ 'needs-attention': !!dashboard.upgrades.length }\">\r\n {{dashboard.upgrades.length}}\r\n <mat-icon\r\n [matTooltip]=\"dashboard.upgrades.join('\\n')\"\r\n matTooltipClass=\"tooltip-pending-upgrades\"\r\n >\r\n warning\r\n </mat-icon>\r\n </span>\r\n </fs-label-field>\r\n </div>\r\n\r\n <div>\r\n <h2>Cron</h2>\r\n\r\n <fs-label-field>\r\n <fs-label>Last Ran</fs-label>\r\n <span class=\"attention\" [ngClass]=\"{ 'needs-attention': dashboard.cronRanAttention }\">\r\n <span *ngIf=\"!dashboard.cronRan\">Never</span>\r\n <span *ngIf=\"dashboard.cronRan\">{{dashboard.cronRan | fsDateFormat: 'date-time'}}</span>\r\n <mat-icon>warning</mat-icon>\r\n </span>\r\n </fs-label-field>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".actions{margin-bottom:1.25em}table td{padding:3px}.attention{display:flex;align-items:center}.attention mat-icon{display:none;margin-left:2px}.attention.needs-attention{color:#c00}.attention.needs-attention mat-icon{display:inline}::ng-deep .tooltip-pending-upgrades{white-space:pre-line}@media (max-width: 600px){:host ::ng-deep .menu-button{width:100%;border-radius:4px}}@media (min-width: 600px){:host ::ng-deep .menu-button{box-shadow:none}}\n"], components: [{ type: i4__namespace.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4__namespace$1.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass"], outputs: ["opened", "closed"] }, { type: i2__namespace$1.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2__namespace$1.FsLabelComponent, selector: "fs-label" }, { type: i6__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i5__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i6__namespace$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i6__namespace$1.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: i9__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4__namespace$1.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]", inputs: ["fsClass", "class", "id", "label", "hidden", "groupHidden", "dismissAfterClick", "link", "target", "queryParams"], outputs: ["click"] }, { type: i6__namespace$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i9__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10__namespace.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i11__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "fsDateFormat": i4__namespace$2.FsDateFormatPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
117
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DashboardComponent, decorators: [{
219
+ ApiLogsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ApiLogsComponent, deps: [{ token: i1__namespace.MatDialog }], target: i0__namespace.ɵɵFactoryTarget.Component });
220
+ ApiLogsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ApiLogsComponent, selector: "fs-system-api-logs", inputs: { loadApiLogs: "loadApiLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: i2$1.FsListComponent, descendants: true, static: true }], ngImport: i0__namespace, 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 href=\"javascript:;\" (click)=\"open(row)\">\n {{row.type || 'Unknown'}}\n <mat-icon class=\"direction\" *ngIf=\"row.direction=='outgoing'\">arrow_upward</mat-icon>\n <mat-icon class=\"direction\" *ngIf=\"row.direction=='incoming'\">arrow_downward</mat-icon>\n </a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{apiLogStates[row.state]}}\n <span *ngIf=\"row.code\" class=\"code\" [ngClass]=\"{'success': row.code==200,'error': row.code!=200 }\">[{{row.code}}]</span>\n </ng-template>\n </fs-list-column>\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 <fs-list-column>\n <ng-template fs-list-header>Date</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div><small *ngIf=\"row.length\">Duration: {{ row.length | fsDateDuration }}</small></div>\n </ng-template>\n </fs-list-column>\n </fs-list>\n", styles: [".code.success{color:green}.code.error{color:red}.direction{font-size:14px;height:14px;line-height:14px;width:14px}\n"], components: [{ type: i2__namespace$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i6__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4__namespace$1.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2__namespace$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$1.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2__namespace$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i7__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "fsDateDuration": i4__namespace$1.FsDateDurationPipe } });
221
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ApiLogsComponent, decorators: [{
118
222
  type: i0.Component,
119
223
  args: [{
120
- selector: 'fs-system-dashboard',
121
- templateUrl: 'dashboard.component.html',
122
- styleUrls: ['dashboard.component.scss'],
123
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
224
+ selector: 'fs-system-api-logs',
225
+ templateUrl: './api-logs.component.html',
226
+ styleUrls: ['./api-logs.component.scss']
124
227
  }]
125
- }], ctorParameters: function () { return [{ type: i1__namespace.FsMessage }, { type: i0__namespace.ChangeDetectorRef }, { type: i2__namespace.FsBuildService }]; }, propDecorators: { init: [{
126
- type: i0.Input
127
- }], upgrade: [{
128
- type: i0.Input
129
- }], load: [{
130
- type: i0.Input
131
- }], actions: [{
228
+ }], ctorParameters: function () { return [{ type: i1__namespace.MatDialog }]; }, propDecorators: { list: [{
229
+ type: i0.ViewChild,
230
+ args: [i2$1.FsListComponent, { static: true }]
231
+ }], loadApiLogs: [{
132
232
  type: i0.Input
133
233
  }] } });
134
234
 
135
- function indexNameValue(arry) {
136
- var obj = {};
137
- arry.forEach(function (item) {
138
- obj[item.value] = item.name;
139
- });
140
- return obj;
141
- }
142
-
143
235
  /*! *****************************************************************************
144
236
  Copyright (c) Microsoft Corporation.
145
237
 
@@ -425,98 +517,38 @@
425
517
  var __setModuleDefault = Object.create ? (function (o, v) {
426
518
  Object.defineProperty(o, "default", { enumerable: true, value: v });
427
519
  }) : function (o, v) {
428
- o["default"] = v;
429
- };
430
- function __importStar(mod) {
431
- if (mod && mod.__esModule)
432
- return mod;
433
- var result = {};
434
- if (mod != null)
435
- for (var k in mod)
436
- if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
437
- __createBinding(result, mod, k);
438
- __setModuleDefault(result, mod);
439
- return result;
440
- }
441
- function __importDefault(mod) {
442
- return (mod && mod.__esModule) ? mod : { default: mod };
443
- }
444
- function __classPrivateFieldGet(receiver, state, kind, f) {
445
- if (kind === "a" && !f)
446
- throw new TypeError("Private accessor was defined without a getter");
447
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
448
- throw new TypeError("Cannot read private member from an object whose class did not declare it");
449
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
450
- }
451
- function __classPrivateFieldSet(receiver, state, value, kind, f) {
452
- if (kind === "m")
453
- throw new TypeError("Private method is not writable");
454
- if (kind === "a" && !f)
455
- throw new TypeError("Private accessor was defined without a setter");
456
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
457
- throw new TypeError("Cannot write private member to an object whose class did not declare it");
458
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
459
- }
460
-
461
- exports.CronState = void 0;
462
- (function (CronState) {
463
- CronState["Running"] = "running";
464
- CronState["Idle"] = "idle";
465
- CronState["Failed"] = "failed";
466
- CronState["Queued"] = "queued";
467
- CronState["Disabled"] = "disabled";
468
- CronState["Enabled"] = "enabled";
469
- CronState["Killing"] = "killing";
470
- })(exports.CronState || (exports.CronState = {}));
471
-
472
- var SettingInterfaceType;
473
- (function (SettingInterfaceType) {
474
- SettingInterfaceType["RadioButton"] = "R";
475
- SettingInterfaceType["InputBox"] = "I";
476
- SettingInterfaceType["Textarea"] = "T";
477
- SettingInterfaceType["Select"] = "D";
478
- SettingInterfaceType["SelectMultiple"] = "W";
479
- SettingInterfaceType["Date"] = "A";
480
- SettingInterfaceType["File"] = "F";
481
- SettingInterfaceType["Static"] = "S";
482
- SettingInterfaceType["Password"] = "P";
483
- SettingInterfaceType["Time"] = "M";
484
- SettingInterfaceType["None"] = "N";
485
- SettingInterfaceType["Color"] = "C";
486
- })(SettingInterfaceType || (SettingInterfaceType = {}));
487
-
488
- exports.ApiLogState = void 0;
489
- (function (ApiLogState) {
490
- ApiLogState["Success"] = "success";
491
- ApiLogState["Failed"] = "failed";
492
- ApiLogState["Deleted"] = "deleted";
493
- })(exports.ApiLogState || (exports.ApiLogState = {}));
494
-
495
- exports.ProcessState = void 0;
496
- (function (ProcessState) {
497
- ProcessState["Queued"] = "Q";
498
- ProcessState["Running"] = "R";
499
- ProcessState["Completed"] = "C";
500
- ProcessState["Killed"] = "K";
501
- ProcessState["Deleted"] = "D";
502
- ProcessState["Failed"] = "F";
503
- })(exports.ProcessState || (exports.ProcessState = {}));
504
-
505
- var CronLogState;
506
- (function (CronLogState) {
507
- CronLogState["Message"] = "message";
508
- CronLogState["Disabled"] = "disabled";
509
- CronLogState["Enabled"] = "enabled";
510
- CronLogState["Started"] = "started";
511
- CronLogState["Running"] = "running";
512
- CronLogState["Completed"] = "completed";
513
- CronLogState["Failed"] = "failed";
514
- CronLogState["Killed"] = "killed";
515
- CronLogState["Queued"] = "queued";
516
- CronLogState["Reset"] = "reset";
517
- CronLogState["Stagnant"] = "stagnant";
518
- CronLogState["LongRunning"] = "long_running";
519
- })(CronLogState || (CronLogState = {}));
520
+ o["default"] = v;
521
+ };
522
+ function __importStar(mod) {
523
+ if (mod && mod.__esModule)
524
+ return mod;
525
+ var result = {};
526
+ if (mod != null)
527
+ for (var k in mod)
528
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
529
+ __createBinding(result, mod, k);
530
+ __setModuleDefault(result, mod);
531
+ return result;
532
+ }
533
+ function __importDefault(mod) {
534
+ return (mod && mod.__esModule) ? mod : { default: mod };
535
+ }
536
+ function __classPrivateFieldGet(receiver, state, kind, f) {
537
+ if (kind === "a" && !f)
538
+ throw new TypeError("Private accessor was defined without a getter");
539
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
540
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
541
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
542
+ }
543
+ function __classPrivateFieldSet(receiver, state, value, kind, f) {
544
+ if (kind === "m")
545
+ throw new TypeError("Private method is not writable");
546
+ if (kind === "a" && !f)
547
+ throw new TypeError("Private accessor was defined without a setter");
548
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
549
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
550
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
551
+ }
520
552
 
521
553
  var CronLogStates = [
522
554
  { name: 'Message', value: CronLogState.Message, color: '#29B7FF' },
@@ -533,31 +565,6 @@
533
565
  { name: 'Long Running', value: CronLogState.LongRunning, color: '#FA7567' },
534
566
  ];
535
567
 
536
- var CronStates = [
537
- { name: 'Running', value: exports.CronState.Running },
538
- { name: 'Idle', value: exports.CronState.Idle },
539
- { name: 'Failed', value: exports.CronState.Failed },
540
- { name: 'Queued', value: exports.CronState.Queued },
541
- { name: 'Disabled', value: exports.CronState.Disabled },
542
- { name: 'Killing', value: exports.CronState.Killing },
543
- { name: 'Enabled', value: exports.CronState.Enabled },
544
- ];
545
-
546
- var ApiLogStates = [
547
- { name: 'Success', value: exports.ApiLogState.Success },
548
- { name: 'Failed', value: exports.ApiLogState.Failed },
549
- { name: 'Deleted', value: exports.ApiLogState.Deleted }
550
- ];
551
-
552
- var ProcessStates = [
553
- { name: 'Queued', value: exports.ProcessState.Queued },
554
- { name: 'Running', value: exports.ProcessState.Running },
555
- { name: 'Completed', value: exports.ProcessState.Completed },
556
- { name: 'Killed', value: exports.ProcessState.Killed },
557
- { name: 'Failed', value: exports.ProcessState.Failed },
558
- { name: 'Deleted', value: exports.ProcessState.Deleted }
559
- ];
560
-
561
568
  var CronLogComponent = /** @class */ (function () {
562
569
  function CronLogComponent(_data) {
563
570
  this._data = _data;
@@ -574,8 +581,8 @@
574
581
  };
575
582
  return CronLogComponent;
576
583
  }());
577
- CronLogComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CronLogComponent, deps: [{ token: i1$1.MAT_DIALOG_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
578
- CronLogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronLogComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog *fsSkeleton=\"cronLog\">\r\n <div mat-dialog-title>Cron Log</div>\r\n <mat-dialog-content>\r\n <div class=\"row\">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n <div [ngStyle]=\"{ color: CronLogStateColors[cronLog.state]}\">\r\n {{CronLogStates[cronLog.state] || cronLog.state}}\r\n </div>\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Date\r\n </fs-label>\r\n <fs-date-ago [date]=\"cronLog.createDate\"></fs-date-ago>\r\n </fs-label-field>\r\n </div>\r\n \r\n <fs-label-field *ngIf=\"cronLog.message\">\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n <div class=\"message\">\r\n {{cronLog.message}}\r\n </div>\r\n </fs-label-field>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Done</button>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n", styles: [".message{white-space:pre-line}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}\n"], components: [{ type: i2__namespace$2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i2__namespace$1.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2__namespace$1.FsLabelComponent, selector: "fs-label" }, { type: i4__namespace$2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { type: i4__namespace.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__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1__namespace$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i10__namespace.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }] });
584
+ CronLogComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CronLogComponent, deps: [{ token: i1.MAT_DIALOG_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
585
+ CronLogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronLogComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog *fsSkeleton=\"cronLog\">\r\n <div mat-dialog-title>Cron Log</div>\r\n <mat-dialog-content>\r\n <div class=\"row\">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n <div [ngStyle]=\"{ color: CronLogStateColors[cronLog.state]}\">\r\n {{CronLogStates[cronLog.state] || cronLog.state}}\r\n </div>\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Date\r\n </fs-label>\r\n <fs-date-ago [date]=\"cronLog.createDate\"></fs-date-ago>\r\n </fs-label-field>\r\n </div>\r\n \r\n <fs-label-field *ngIf=\"cronLog.message\">\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n <div class=\"message\">\r\n {{cronLog.message}}\r\n </div>\r\n </fs-label-field>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Done</button>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n", styles: [".message{white-space:pre-line}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}\n"], components: [{ type: i2__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3__namespace.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3__namespace.FsLabelComponent, selector: "fs-label" }, { type: i4__namespace$1.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { type: i4__namespace.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__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i7__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }] });
579
586
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CronLogComponent, decorators: [{
580
587
  type: i0.Component,
581
588
  args: [{
@@ -585,7 +592,7 @@
585
592
  }], ctorParameters: function () {
586
593
  return [{ type: undefined, decorators: [{
587
594
  type: i0.Inject,
588
- args: [i1$1.MAT_DIALOG_DATA]
595
+ args: [i1.MAT_DIALOG_DATA]
589
596
  }] }];
590
597
  } });
591
598
 
@@ -662,8 +669,8 @@
662
669
  };
663
670
  return CronComponent;
664
671
  }());
665
- CronComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CronComponent, deps: [{ token: i1$1.MAT_DIALOG_DATA }, { token: i1__namespace$1.MatDialog }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
666
- CronComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronComponent, selector: "ng-component", ngImport: i0__namespace, 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__namespace$2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3__namespace.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3__namespace.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby"], exportAs: ["matTab"] }, { type: i2__namespace$1.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2__namespace$1.FsLabelComponent, selector: "fs-label" }, { type: i4__namespace$2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { type: i2__namespace$3.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4__namespace.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__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1__namespace$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace.MatTabContent, selector: "[matTabContent]" }, { type: i2__namespace$3.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$3.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i9__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i10__namespace.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { type: i1__namespace$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i9__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fsDateDuration": i4__namespace$2.FsDateDurationPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
672
+ CronComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CronComponent, deps: [{ token: i1.MAT_DIALOG_DATA }, { token: i1__namespace.MatDialog }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
673
+ CronComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronComponent, selector: "ng-component", ngImport: i0__namespace, 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__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3__namespace$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3__namespace$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby"], exportAs: ["matTab"] }, { type: i3__namespace.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3__namespace.FsLabelComponent, selector: "fs-label" }, { type: i4__namespace$1.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { type: i2__namespace$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4__namespace.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__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace$1.MatTabContent, selector: "[matTabContent]" }, { type: i2__namespace$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i7__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i7__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fsDateDuration": i4__namespace$1.FsDateDurationPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
667
674
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CronComponent, decorators: [{
668
675
  type: i0.Component,
669
676
  args: [{
@@ -674,8 +681,8 @@
674
681
  }], ctorParameters: function () {
675
682
  return [{ type: undefined, decorators: [{
676
683
  type: i0.Inject,
677
- args: [i1$1.MAT_DIALOG_DATA]
678
- }] }, { type: i1__namespace$1.MatDialog }, { type: i0__namespace.ChangeDetectorRef }];
684
+ args: [i1.MAT_DIALOG_DATA]
685
+ }] }, { type: i1__namespace.MatDialog }, { type: i0__namespace.ChangeDetectorRef }];
679
686
  } });
680
687
 
681
688
  var CronsComponent = /** @class */ (function () {
@@ -715,7 +722,7 @@
715
722
  .pipe(operators.map(function (crons) { return ({
716
723
  data: crons
717
724
  .map(function (cron) {
718
- return Object.assign(Object.assign({}, cron), { runningDuration: dateFns.differenceInSeconds(i4$2.parse(cron.createDate), new Date()) });
725
+ return Object.assign(Object.assign({}, cron), { runningDuration: dateFns.differenceInSeconds(i4$1.parse(cron.createDate), new Date()) });
719
726
  })
720
727
  }); }));
721
728
  },
@@ -855,8 +862,8 @@
855
862
  };
856
863
  return CronsComponent;
857
864
  }());
858
- CronsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CronsComponent, deps: [{ token: i1__namespace.FsMessage }, { token: i1__namespace$1.MatDialog }, { token: i3__namespace$1.FsPrompt }], target: i0__namespace.ɵɵFactoryTarget.Component });
859
- CronsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronsComponent, selector: "fs-system-crons", inputs: { enable: "enable", disable: "disable", kill: "kill", queue: "queue", run: "run", loadCrons: "loadCrons", loadCron: "loadCron", loadCronLogs: "loadCronLogs", bulk: "bulk" }, viewQueries: [{ propertyName: "list", first: true, predicate: i2$3.FsListComponent, descendants: true, static: true }], ngImport: i0__namespace, template: "<fs-list [config]=\"config\">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a (click)=\"open(row)\">{{row.name}}</a>\r\n <div *ngIf=\"row.cronSetting\">\r\n <small>{{row.cronSetting.summary}}</small>\r\n </div>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column align=\"center\">\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.host || row.processId; else status\">\r\n <fs-popover \r\n [maxWidth]=\"null\"\r\n [template]=\"statusPopover\" \r\n size=\"small\">\r\n <ng-container *ngTemplateOutlet=\"status\"></ng-container>\r\n </fs-popover>\r\n <ng-template #statusPopover>\r\n <div *ngIf=\"row.host\">Host: {{row.host}}</div>\r\n <div *ngIf=\"row.processId\">Process ID: {{row.processId}}</div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #status>\r\n {{cronStates[row.state]}}\r\n </ng-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__namespace$3.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i5__namespace$1.FsPopoverComponent, selector: "fs-popover", inputs: ["template", "data", "leaveDelay", "showDelay", "maxWidth", "wrapperClass", "autoShow", "autoClose", "loadingDiameter", "loading", "indication", "position", "theme", "size", "trigger"] }, { type: i4__namespace$2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2__namespace$3.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$3.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2__namespace$3.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "fsDateDuration": i4__namespace$2.FsDateDurationPipe } });
865
+ CronsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CronsComponent, deps: [{ token: i1__namespace$1.FsMessage }, { token: i1__namespace.MatDialog }, { token: i3__namespace$2.FsPrompt }], target: i0__namespace.ɵɵFactoryTarget.Component });
866
+ CronsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronsComponent, selector: "fs-system-crons", inputs: { enable: "enable", disable: "disable", kill: "kill", queue: "queue", run: "run", loadCrons: "loadCrons", loadCron: "loadCron", loadCronLogs: "loadCronLogs", bulk: "bulk" }, viewQueries: [{ propertyName: "list", first: true, predicate: i2$1.FsListComponent, descendants: true, static: true }], ngImport: i0__namespace, template: "<fs-list [config]=\"config\">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a (click)=\"open(row)\">{{row.name}}</a>\r\n <div *ngIf=\"row.cronSetting\">\r\n <small>{{row.cronSetting.summary}}</small>\r\n </div>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column align=\"center\">\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.host || row.processId; else status\">\r\n <fs-popover \r\n [maxWidth]=\"null\"\r\n [template]=\"statusPopover\" \r\n size=\"small\">\r\n <ng-container *ngTemplateOutlet=\"status\"></ng-container>\r\n </fs-popover>\r\n <ng-template #statusPopover>\r\n <div *ngIf=\"row.host\">Host: {{row.host}}</div>\r\n <div *ngIf=\"row.processId\">Process ID: {{row.processId}}</div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #status>\r\n {{cronStates[row.state]}}\r\n </ng-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__namespace$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i5__namespace$1.FsPopoverComponent, selector: "fs-popover" }, { type: i4__namespace$1.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2__namespace$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$1.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2__namespace$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i7__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "fsDateDuration": i4__namespace$1.FsDateDurationPipe } });
860
867
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CronsComponent, decorators: [{
861
868
  type: i0.Component,
862
869
  args: [{
@@ -864,9 +871,9 @@
864
871
  templateUrl: './crons.component.html',
865
872
  styleUrls: ['./crons.component.scss'],
866
873
  }]
867
- }], ctorParameters: function () { return [{ type: i1__namespace.FsMessage }, { type: i1__namespace$1.MatDialog }, { type: i3__namespace$1.FsPrompt }]; }, propDecorators: { list: [{
874
+ }], ctorParameters: function () { return [{ type: i1__namespace$1.FsMessage }, { type: i1__namespace.MatDialog }, { type: i3__namespace$2.FsPrompt }]; }, propDecorators: { list: [{
868
875
  type: i0.ViewChild,
869
- args: [i2$3.FsListComponent, { static: true }]
876
+ args: [i2$1.FsListComponent, { static: true }]
870
877
  }], enable: [{
871
878
  type: i0.Input
872
879
  }], disable: [{
@@ -887,196 +894,118 @@
887
894
  type: i0.Input
888
895
  }] } });
889
896
 
890
- var KeyNameValuePipe = /** @class */ (function () {
891
- function KeyNameValuePipe() {
892
- }
893
- KeyNameValuePipe.prototype.transform = function (values) {
894
- return Object.keys(values).map(function (key) {
895
- return { value: key, name: values[key] };
896
- });
897
- };
898
- return KeyNameValuePipe;
899
- }());
900
- KeyNameValuePipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: KeyNameValuePipe, deps: [], target: i0__namespace.ɵɵFactoryTarget.Pipe });
901
- KeyNameValuePipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: KeyNameValuePipe, name: "keyNameValue" });
902
- KeyNameValuePipe.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: KeyNameValuePipe });
903
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: KeyNameValuePipe, decorators: [{
904
- type: i0.Pipe,
905
- args: [{
906
- name: 'keyNameValue'
907
- }]
908
- }, {
909
- type: i0.Injectable
910
- }] });
911
-
912
- var SettingsComponent = /** @class */ (function () {
913
- function SettingsComponent(_message, _clipboard, _prompt, _cdRef) {
897
+ var DashboardComponent = /** @class */ (function () {
898
+ function DashboardComponent(_message, _cdRef, _buildService) {
914
899
  this._message = _message;
915
- this._clipboard = _clipboard;
916
- this._prompt = _prompt;
917
900
  this._cdRef = _cdRef;
918
- this.fileRemove = new i0.EventEmitter();
919
- this.fileSelect = new i0.EventEmitter();
920
- this.groupedSettings = [];
921
- this.groups = [];
922
- this.SettingInterfaceType = SettingInterfaceType;
901
+ this._buildService = _buildService;
902
+ this.buttonActions = [];
903
+ this.menuActions = [];
904
+ this._destroy$ = new rxjs.Subject();
905
+ this.actions = [];
923
906
  }
924
- SettingsComponent.prototype.ngOnInit = function () {
907
+ DashboardComponent.prototype.ngOnInit = function () {
925
908
  var _this = this;
926
- this.loadSettings({
927
- visible: true,
928
- })
929
- .subscribe(function (settings) {
930
- settings = settings
931
- .filter(function (setting) {
932
- return setting.interfaceType !== SettingInterfaceType.None;
933
- })
934
- .map(function (setting) {
935
- switch (setting.interfaceType) {
936
- case SettingInterfaceType.Date:
937
- case SettingInterfaceType.Time:
938
- return Object.assign(Object.assign({}, setting), { value: i4$2.parse(setting.value) });
939
- case SettingInterfaceType.SelectMultiple:
940
- return Object.assign(Object.assign({}, setting), { value: Array.isArray(setting.value) ? setting.value : [] });
941
- }
942
- return setting;
943
- });
944
- _this.groupedSettings = settings.reduce(function (accum, item) {
945
- if (accum[item.group] === undefined) {
946
- accum[item.group] = [];
947
- }
948
- accum[item.group].push(item);
949
- return accum;
950
- }, {});
951
- _this.groups = Object.keys(_this.groupedSettings);
909
+ this._load();
910
+ this.buttonActions = this.actions.filter(function (item) { return !item.menu; });
911
+ this.menuActions = this.actions.filter(function (item) { return item.menu; });
912
+ this.build = this._buildService.build;
913
+ this._buildService.build$
914
+ .pipe(operators.takeUntil(this._destroy$))
915
+ .subscribe(function (build) {
916
+ _this.build = build;
952
917
  _this._cdRef.markForCheck();
953
918
  });
954
919
  };
955
- SettingsComponent.prototype.export = function (event, settings) {
956
- event.stopPropagation();
957
- var data = settings.map(function (setting) {
958
- return {
959
- name: setting.name,
960
- value: setting.value,
961
- group: setting.group,
962
- };
920
+ DashboardComponent.prototype._load = function () {
921
+ var _this = this;
922
+ this.load()
923
+ .subscribe(function (dashboard) {
924
+ _this.dashboard = dashboard;
925
+ _this.dashboard.cronRanAttention = !dashboard.cronRan ||
926
+ dateFns.differenceInMinutes(new Date(), new Date(dashboard.cronRan)) > 15;
927
+ _this._cdRef.markForCheck();
963
928
  });
964
- this._clipboard.copy(JSON.stringify(data));
965
- this._message.success('Copied to clipboard');
966
929
  };
967
- SettingsComponent.prototype.import = function (event, group) {
930
+ DashboardComponent.prototype.ngOnDestroy = function () {
931
+ this._destroy$.next();
932
+ this._destroy$.complete();
933
+ };
934
+ DashboardComponent.prototype.actionClick = function (action) {
935
+ action.click();
936
+ };
937
+ DashboardComponent.prototype.initClick = function () {
968
938
  var _this = this;
969
- event.stopPropagation();
970
- this._prompt.input({
971
- label: 'JSON Import',
972
- title: 'Import Settings',
973
- commitLabel: 'Import',
974
- required: true,
975
- }).subscribe(function (value) {
976
- if (value) {
977
- try {
978
- var settings_1 = _this.groupedSettings[group];
979
- var data = JSON.parse(value);
980
- data.forEach(function (item) {
981
- var setting = settings_1.find(function (s) {
982
- return item.name === s.name;
983
- });
984
- if (setting) {
985
- Object.assign(setting, item);
986
- }
987
- });
988
- _this._cdRef.markForCheck();
989
- }
990
- catch (e) {
991
- _this._message.error(e);
992
- }
993
- }
939
+ this.init()
940
+ .subscribe(function () {
941
+ _this._message.success('Successfully initialized the system');
994
942
  });
995
943
  };
996
- SettingsComponent.prototype.saveGroup = function (group) {
944
+ DashboardComponent.prototype.upgradeClick = function () {
997
945
  var _this = this;
998
- var settings = this.groupedSettings[group];
999
- var values = settings.reduce(function (result, value) {
1000
- return (result[value.name] = value.value, result);
1001
- }, {});
1002
- this.save(group, values)
946
+ this.upgrade()
1003
947
  .subscribe(function () {
1004
- _this._message.success('Changes Saved');
948
+ _this._load();
949
+ _this._message.success('Successfully upgraded the system');
1005
950
  });
1006
951
  };
1007
- return SettingsComponent;
952
+ return DashboardComponent;
1008
953
  }());
1009
- SettingsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SettingsComponent, deps: [{ token: i1__namespace.FsMessage }, { token: i2__namespace$4.FsClipboard }, { token: i3__namespace$1.FsPrompt }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1010
- SettingsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SettingsComponent, selector: "fs-system-settings", inputs: { loadSettings: "loadSettings", save: "save" }, outputs: { fileRemove: "fileRemove", fileSelect: "fileSelect" }, ngImport: i0__namespace, template: "\r\n<mat-accordion>\r\n <mat-expansion-panel hideToggle *ngFor=\"let group of groups\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <div class=\"title-row\">\r\n <div class=\"title\">{{group || 'General'}}</div>\r\n <div class=\"actions\">\r\n <button\r\n type=\"button\"\r\n [matTooltip]=\"'Export ' + (group || 'General') + ' Settings'\"\r\n mat-icon-button\r\n (click)=\"export($event, groupedSettings[group])\">\r\n <mat-icon>cloud_download</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n [matTooltip]=\"'Import ' + (group || 'General') + ' Settings'\"\r\n mat-icon-button\r\n (click)=\"import($event, group)\">\r\n <mat-icon>cloud_upload</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div \r\n hideToggle \r\n *ngFor=\"let setting of groupedSettings[group]\" \r\n class=\"setting\"\r\n [ngClass]=\"{ 'has-instruction': !! setting.instruction }\">\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\"\r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.InputBox\">\r\n <input\r\n matInput\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [name]=\"'setting' + setting.id\">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\" \r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.Textarea\">\r\n <textarea\r\n matInput\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [name]=\"'setting' + setting.id\">\r\n </textarea>\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\" \r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.Select || setting.interfaceType===SettingInterfaceType.SelectMultiple\">\r\n <mat-select\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [multiple]=\"setting.interfaceType===SettingInterfaceType.SelectMultiple\"\r\n [name]=\"'setting' + setting.id\">\r\n <mat-option *ngFor=\"let item of setting.values | keyNameValue\" [value]=\"item.value\">\r\n {{item.name}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\" \r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.Date\">\r\n <input\r\n matInput\r\n fsDatePicker\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [name]=\"'setting' + setting.id\">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\" \r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.Color\">\r\n <input\r\n matInput\r\n fsColorPicker\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [name]=\"'setting' + setting.id\">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\" \r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.Time\">\r\n <input\r\n matInput\r\n fsTimePicker\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [name]=\"'setting' + setting.id\">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <fs-file-picker\r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.File\"\r\n [allowRemove]=\"true\"\r\n [allowDownload]=\"true\"\r\n (select)=\"fileSelect.emit({ setting: setting, file: $event.file })\"\r\n (remove)=\"fileRemove.emit(setting)\"\r\n [url]=\"setting.value\">\r\n <div fsFileLabel>{{setting.label}}</div>\r\n <div fsFileHint>{{setting.instruction}}</div>\r\n </fs-file-picker>\r\n </div>\r\n\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"saveGroup(group)\">Save</button>\r\n\r\n </mat-expansion-panel>\r\n\r\n</mat-accordion>\r\n", styles: [".mat-expansion-panel-header{font-size:19px}.full-width{width:100%}.title-row{flex-direction:row;box-sizing:border-box;display:flex;place-content:center flex-start;align-items:center;width:100%}.title-row .title{display:flex;flex:1}:host ::ng-deep .mat-expansion-panel-header-title{margin:0}:host ::ng-deep .mat-expansion-panel .actions{display:none}:host ::ng-deep .mat-expansion-panel.mat-expanded .actions{display:block}:host ::ng-deep .setting.has-instruction fs-file-picker fs-label-message{display:block;padding-bottom:1em}\n"], components: [{ type: i4__namespace$3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i4__namespace$3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i4__namespace.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7__namespace.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i8__namespace.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i9__namespace$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i10__namespace$1.FsDatePickerComponent, selector: "[fsDatePicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "startOfDay", "view", "format", "minutes"], outputs: ["change"] }, { type: i11__namespace$1.FsColorPickerComponent, selector: "[fsColorPicker]", inputs: ["showClear"] }, { type: i10__namespace$1.FsTimePickerComponent, selector: "[fsTimePicker]", inputs: ["view"] }, { type: i12__namespace.FsFilePickerComponent, selector: "fs-file-picker", inputs: ["minWidth", "minHeight", "imageWidth", "imageHeight", "imageQuality", "label", "showFilename", "allowDownload", "allowReupload", "allowRemove", "url", "file", "accept", "disabled", "previewWidth", "previewHeight"], outputs: ["select", "remove", "download"] }], directives: [{ type: i4__namespace$3.MatAccordion, selector: "mat-accordion", inputs: ["multi", "displayMode", "togglePosition", "hideToggle"], exportAs: ["matAccordion"] }, { type: i9__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4__namespace$3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i11__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i9__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10__namespace.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i16__namespace.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i17__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i17__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i17__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7__namespace.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i12__namespace.FsFileLabelDirective, selector: "[fsFileLabel]" }], pipes: { "keyNameValue": KeyNameValuePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1011
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SettingsComponent, decorators: [{
954
+ DashboardComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DashboardComponent, deps: [{ token: i1__namespace$1.FsMessage }, { token: i0__namespace.ChangeDetectorRef }, { token: i2__namespace$2.FsBuildService }], target: i0__namespace.ɵɵFactoryTarget.Component });
955
+ DashboardComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DashboardComponent, selector: "fs-system-dashboard", inputs: { init: "init", upgrade: "upgrade", load: "load", actions: "actions" }, ngImport: i0__namespace, template: "<div *fsSkeleton=\"dashboard\">\r\n\r\n <div class=\"h2-container\">\r\n\r\n <div class=\"actions\">\r\n <h2>Actions</h2>\r\n <div class=\"fs-row.gap-tiny.wrap\">\r\n <button mat-raised-button (click)=\"upgradeClick()\">Run Upgrades</button>\r\n <button mat-raised-button (click)=\"initClick()\">Init System</button>\r\n\r\n <button\r\n *ngFor=\"let action of buttonActions\"\r\n mat-raised-button\r\n (click)=\"actionClick(action)\">\r\n {{action.label}}\r\n </button>\r\n\r\n <ng-container *ngIf=\"menuActions.length\">\r\n <fs-menu buttonClass=\"mat-raised-button menu-button\">\r\n <ng-template\r\n *ngFor=\"let action of menuActions\"\r\n fs-menu-item\r\n (click)=\"actionClick(action)\">\r\n {{action.label}}\r\n </ng-template>\r\n </fs-menu>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fs-row.gap-large.wrap\">\r\n <div>\r\n <h2>Server</h2>\r\n\r\n <fs-label-field>\r\n <fs-label>Date/Time</fs-label>\r\n {{dashboard.serverTime | fsDateFormat: 'date-time'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Timezone</fs-label>\r\n {{dashboard.serverTimezone}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Hostname</fs-label>\r\n {{dashboard.serverHostname}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Directory</fs-label>\r\n {{dashboard.appDirectory}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div>\r\n <h2>System</h2>\r\n <fs-label-field>\r\n <fs-label>Mode</fs-label>\r\n {{dashboard.appMode}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Notification Recipients</fs-label>\r\n {{dashboard.notifyRecipients.join(', ')}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div>\r\n <h2>Database</h2>\r\n\r\n <fs-label-field>\r\n <fs-label>Name</fs-label>\r\n {{dashboard.databaseName}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Date/Time</fs-label>\r\n {{dashboard.databaseTime | fsDateFormat: 'date-time'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Timezone</fs-label>\r\n {{dashboard.databaseTimezone}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div *ngIf=\"build || dashboard.upgrades.length\">\r\n <h2>Build</h2>\r\n\r\n <ng-container *ngIf=\"build\">\r\n <fs-label-field>\r\n <fs-label>Version</fs-label>\r\n {{build.version}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Date</fs-label>\r\n {{ build.date | fsDateFormat: 'date-time' }}\r\n </fs-label-field>\r\n </ng-container>\r\n\r\n <fs-label-field *ngIf=\"dashboard.upgrades.length\">\r\n <fs-label>Pending Upgrades</fs-label>\r\n <span class=\"attention\" [ngClass]=\"{ 'needs-attention': !!dashboard.upgrades.length }\">\r\n {{dashboard.upgrades.length}}\r\n <mat-icon\r\n [matTooltip]=\"dashboard.upgrades.join('\\n')\"\r\n matTooltipClass=\"tooltip-pending-upgrades\"\r\n >\r\n warning\r\n </mat-icon>\r\n </span>\r\n </fs-label-field>\r\n </div>\r\n\r\n <div>\r\n <h2>Cron</h2>\r\n\r\n <fs-label-field>\r\n <fs-label>Last Ran</fs-label>\r\n <span class=\"attention\" [ngClass]=\"{ 'needs-attention': dashboard.cronRanAttention }\">\r\n <span *ngIf=\"!dashboard.cronRan\">Never</span>\r\n <span *ngIf=\"dashboard.cronRan\">{{dashboard.cronRan | fsDateFormat: 'date-time'}}</span>\r\n <mat-icon>warning</mat-icon>\r\n </span>\r\n </fs-label-field>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".actions{margin-bottom:1.25em}table td{padding:3px}.attention{display:flex;align-items:center}.attention mat-icon{display:none;margin-left:2px}.attention.needs-attention{color:#c00}.attention.needs-attention mat-icon{display:inline}::ng-deep .tooltip-pending-upgrades{white-space:pre-line}@media (max-width: 600px){:host ::ng-deep .menu-button{width:100%;border-radius:4px}}@media (min-width: 600px){:host ::ng-deep .menu-button{box-shadow:none}}\n"], components: [{ type: i4__namespace.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4__namespace$2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { type: i3__namespace.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3__namespace.FsLabelComponent, selector: "fs-label" }, { type: i6__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i5__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i7__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4__namespace$2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { type: i7__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "fsDateFormat": i4__namespace$1.FsDateFormatPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
956
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DashboardComponent, decorators: [{
1012
957
  type: i0.Component,
1013
958
  args: [{
1014
- selector: 'fs-system-settings',
1015
- templateUrl: './settings.component.html',
1016
- styleUrls: ['./settings.component.scss'],
959
+ selector: 'fs-system-dashboard',
960
+ templateUrl: 'dashboard.component.html',
961
+ styleUrls: ['dashboard.component.scss'],
1017
962
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
1018
963
  }]
1019
- }], ctorParameters: function () { return [{ type: i1__namespace.FsMessage }, { type: i2__namespace$4.FsClipboard }, { type: i3__namespace$1.FsPrompt }, { type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { loadSettings: [{
964
+ }], ctorParameters: function () { return [{ type: i1__namespace$1.FsMessage }, { type: i0__namespace.ChangeDetectorRef }, { type: i2__namespace$2.FsBuildService }]; }, propDecorators: { init: [{
1020
965
  type: i0.Input
1021
- }], save: [{
966
+ }], upgrade: [{
967
+ type: i0.Input
968
+ }], load: [{
969
+ type: i0.Input
970
+ }], actions: [{
1022
971
  type: i0.Input
1023
- }], fileRemove: [{
1024
- type: i0.Output
1025
- }], fileSelect: [{
1026
- type: i0.Output
1027
972
  }] } });
1028
973
 
1029
- var FileManagerComponent = /** @class */ (function () {
1030
- function FileManagerComponent() {
974
+ var InfoComponent = /** @class */ (function () {
975
+ function InfoComponent() {
1031
976
  }
1032
- FileManagerComponent.prototype.ngOnInit = function () {
1033
- this._configFileManager();
977
+ InfoComponent.prototype.ngAfterViewInit = function () {
978
+ this._load();
1034
979
  };
1035
- FileManagerComponent.prototype._configFileManager = function () {
980
+ InfoComponent.prototype._load = function () {
1036
981
  var _this = this;
1037
- this.config = {
1038
- fetch: function (path) {
1039
- return _this.fetch(path);
1040
- },
1041
- deleteFile: function (path) {
1042
- return _this.deleteFile(path);
1043
- },
1044
- deleteDirectory: function (path) {
1045
- return _this.deleteDirectory(path);
1046
- },
1047
- createDirectory: function (path) {
1048
- return _this.createDirectory(path);
1049
- },
1050
- download: function (path) {
1051
- return _this.download(path);
1052
- },
1053
- upload: function (path, file) {
1054
- return _this.upload(path, file);
1055
- }
1056
- };
982
+ this.load()
983
+ .subscribe(function (info) {
984
+ info += '<style>body { background: transparent; }</style>';
985
+ var doc = _this.iframe.nativeElement.contentDocument || _this.iframe.nativeElement.contentWindow;
986
+ doc.open();
987
+ doc.write(info);
988
+ doc.close();
989
+ var scrollHeight = (_this.iframe.nativeElement.contentWindow.document.documentElement.scrollHeight + 100);
990
+ _this.iframe.nativeElement.style.height = scrollHeight + "px";
991
+ });
1057
992
  };
1058
- return FileManagerComponent;
993
+ return InfoComponent;
1059
994
  }());
1060
- FileManagerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FileManagerComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
1061
- FileManagerComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FileManagerComponent, selector: "fs-system-file-manager", inputs: { fetch: "fetch", deleteFile: "deleteFile", deleteDirectory: "deleteDirectory", createDirectory: "createDirectory", download: "download", upload: "upload" }, ngImport: i0__namespace, template: "<fs-file-manager [config]=\"config\"></fs-file-manager>", styles: [""], components: [{ type: i1__namespace$2.FsFileManagerComponent, selector: "fs-file-manager", inputs: ["config"] }] });
1062
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FileManagerComponent, decorators: [{
995
+ InfoComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: InfoComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
996
+ InfoComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: InfoComponent, selector: "fs-system-info", inputs: { load: "load" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true }], ngImport: i0__namespace, template: "<iframe #iframe></iframe>\r\n", styles: ["iframe{width:100%;border:0}\n"], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
997
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: InfoComponent, decorators: [{
1063
998
  type: i0.Component,
1064
999
  args: [{
1065
- selector: 'fs-system-file-manager',
1066
- templateUrl: './file-manager.component.html',
1067
- styleUrls: ['./file-manager.component.scss']
1000
+ selector: 'fs-system-info',
1001
+ templateUrl: 'info.component.html',
1002
+ styleUrls: ['info.component.scss'],
1003
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
1068
1004
  }]
1069
- }], ctorParameters: function () { return []; }, propDecorators: { fetch: [{
1070
- type: i0.Input
1071
- }], deleteFile: [{
1072
- type: i0.Input
1073
- }], deleteDirectory: [{
1074
- type: i0.Input
1075
- }], createDirectory: [{
1076
- type: i0.Input
1077
- }], download: [{
1078
- type: i0.Input
1079
- }], upload: [{
1005
+ }], propDecorators: { iframe: [{
1006
+ type: i0.ViewChild,
1007
+ args: ['iframe']
1008
+ }], load: [{
1080
1009
  type: i0.Input
1081
1010
  }] } });
1082
1011
 
@@ -1120,8 +1049,8 @@
1120
1049
  };
1121
1050
  return ProcessComponent;
1122
1051
  }());
1123
- ProcessComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ProcessComponent, deps: [{ token: i1$1.MAT_DIALOG_DATA }, { token: i1__namespace.FsMessage }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1124
- ProcessComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ProcessComponent, selector: "ng-component", ngImport: i0__namespace, 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__namespace$2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i2__namespace$1.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2__namespace$1.FsLabelComponent, selector: "fs-label" }, { type: i4__namespace.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__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1__namespace$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6__namespace$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i6__namespace$1.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: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsDateFormat": i4__namespace$2.FsDateFormatPipe, "fsDateDuration": i4__namespace$2.FsDateDurationPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1052
+ ProcessComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ProcessComponent, deps: [{ token: i1.MAT_DIALOG_DATA }, { token: i1__namespace$1.FsMessage }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1053
+ ProcessComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ProcessComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog *fsSkeleton=\"process\">\r\n <div mat-dialog-title>Process</div>\r\n <mat-dialog-content>\r\n <div class=\"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 class=\"fs-row.gap-large.wrap\">\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 class=\"fs-row.gap-large.wrap\">\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__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3__namespace.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3__namespace.FsLabelComponent, selector: "fs-label" }, { type: i4__namespace.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__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsDateFormat": i4__namespace$1.FsDateFormatPipe, "fsDateDuration": i4__namespace$1.FsDateDurationPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1125
1054
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ProcessComponent, decorators: [{
1126
1055
  type: i0.Component,
1127
1056
  args: [{
@@ -1132,8 +1061,8 @@
1132
1061
  }], ctorParameters: function () {
1133
1062
  return [{ type: undefined, decorators: [{
1134
1063
  type: i0.Inject,
1135
- args: [i1$1.MAT_DIALOG_DATA]
1136
- }] }, { type: i1__namespace.FsMessage }, { type: i0__namespace.ChangeDetectorRef }];
1064
+ args: [i1.MAT_DIALOG_DATA]
1065
+ }] }, { type: i1__namespace$1.FsMessage }, { type: i0__namespace.ChangeDetectorRef }];
1137
1066
  } });
1138
1067
 
1139
1068
  var ProcessesComponent = /** @class */ (function () {
@@ -1262,8 +1191,8 @@
1262
1191
  };
1263
1192
  return ProcessesComponent;
1264
1193
  }());
1265
- ProcessesComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ProcessesComponent, deps: [{ token: i1__namespace$1.MatDialog }, { token: i1__namespace.FsMessage }], target: i0__namespace.ɵɵFactoryTarget.Component });
1266
- ProcessesComponent.ɵcmp = i0__namespace.ɵɵ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: i2$3.FsListComponent, descendants: true }], ngImport: i0__namespace, 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: i2__namespace$3.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4__namespace$2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2__namespace$3.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$3.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2__namespace$3.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsDateDuration": i4__namespace$2.FsDateDurationPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1194
+ ProcessesComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ProcessesComponent, deps: [{ token: i1__namespace.MatDialog }, { token: i1__namespace$1.FsMessage }], target: i0__namespace.ɵɵFactoryTarget.Component });
1195
+ ProcessesComponent.ɵcmp = i0__namespace.ɵɵ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: i2$1.FsListComponent, descendants: true }], ngImport: i0__namespace, 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: i2__namespace$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4__namespace$1.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2__namespace$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$1.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2__namespace$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i7__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsDateDuration": i4__namespace$1.FsDateDurationPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1267
1196
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ProcessesComponent, decorators: [{
1268
1197
  type: i0.Component,
1269
1198
  args: [{
@@ -1272,9 +1201,9 @@
1272
1201
  styleUrls: ['./processes.component.scss'],
1273
1202
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
1274
1203
  }]
1275
- }], ctorParameters: function () { return [{ type: i1__namespace$1.MatDialog }, { type: i1__namespace.FsMessage }]; }, propDecorators: { list: [{
1204
+ }], ctorParameters: function () { return [{ type: i1__namespace.MatDialog }, { type: i1__namespace$1.FsMessage }]; }, propDecorators: { list: [{
1276
1205
  type: i0.ViewChild,
1277
- args: [i2$3.FsListComponent]
1206
+ args: [i2$1.FsListComponent]
1278
1207
  }], loadProcesses: [{
1279
1208
  type: i0.Input
1280
1209
  }], loadProcess: [{
@@ -1310,8 +1239,8 @@
1310
1239
  };
1311
1240
  return ServerLogComponent;
1312
1241
  }());
1313
- ServerLogComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ServerLogComponent, deps: [{ token: i1$1.MAT_DIALOG_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
1314
- ServerLogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ServerLogComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog *fsSkeleton=\"log\">\r\n <div mat-dialog-title>Log</div>\r\n <mat-dialog-content>\r\n <div fxLayout=\"column\">\r\n <fs-label-field>\r\n <fs-label>\r\n Error Type\r\n </fs-label>\r\n {{log.type}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n {{log.message}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n URL\r\n </fs-label>\r\n {{log.url}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Date\r\n </fs-label>\r\n {{log.createDate|fsDateFormat: 'full-date-time'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n File\r\n </fs-label>\r\n {{log.file}} @ {{log.line}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Backtrace\r\n </fs-label>\r\n <pre>{{log.backtrace|json}}</pre>\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n $_SERVER\r\n </fs-label>\r\n <pre>{{log.server|json}}</pre>\r\n </fs-label-field>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Done</button>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n", styles: [""], components: [{ type: i2__namespace$2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i2__namespace$1.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2__namespace$1.FsLabelComponent, selector: "fs-label" }, { type: i4__namespace.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__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1__namespace$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6__namespace$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1__namespace$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsDateFormat": i4__namespace$2.FsDateFormatPipe, "json": i9__namespace.JsonPipe } });
1242
+ ServerLogComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ServerLogComponent, deps: [{ token: i1.MAT_DIALOG_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
1243
+ ServerLogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ServerLogComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog *fsSkeleton=\"log\">\r\n <div mat-dialog-title>Log</div>\r\n <mat-dialog-content>\r\n <div class=\"fs-column\">\r\n <fs-label-field>\r\n <fs-label>\r\n Error Type\r\n </fs-label>\r\n {{log.type}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n {{log.message}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n URL\r\n </fs-label>\r\n {{log.url}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Date\r\n </fs-label>\r\n {{log.createDate|fsDateFormat: 'full-date-time'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n File\r\n </fs-label>\r\n {{log.file}} @ {{log.line}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Backtrace\r\n </fs-label>\r\n <pre>{{log.backtrace|json}}</pre>\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n $_SERVER\r\n </fs-label>\r\n <pre>{{log.server|json}}</pre>\r\n </fs-label-field>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Done</button>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n", styles: [""], components: [{ type: i2__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3__namespace.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3__namespace.FsLabelComponent, selector: "fs-label" }, { type: i4__namespace.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__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsDateFormat": i4__namespace$1.FsDateFormatPipe, "json": i7__namespace.JsonPipe } });
1315
1244
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ServerLogComponent, decorators: [{
1316
1245
  type: i0.Component,
1317
1246
  args: [{
@@ -1321,7 +1250,7 @@
1321
1250
  }], ctorParameters: function () {
1322
1251
  return [{ type: undefined, decorators: [{
1323
1252
  type: i0.Inject,
1324
- args: [i1$1.MAT_DIALOG_DATA]
1253
+ args: [i1.MAT_DIALOG_DATA]
1325
1254
  }] }];
1326
1255
  } });
1327
1256
 
@@ -1358,8 +1287,8 @@
1358
1287
  };
1359
1288
  return ServerLogsComponent;
1360
1289
  }());
1361
- ServerLogsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ServerLogsComponent, deps: [{ token: i1__namespace$1.MatDialog }], target: i0__namespace.ɵɵFactoryTarget.Component });
1362
- ServerLogsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ServerLogsComponent, selector: "fs-system-server-logs", inputs: { loadLogs: "loadLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: ["list"], descendants: true, static: true }], ngImport: i0__namespace, template: "<fs-list [config]=\"config\">\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 <a href=\"javascript:;\" (click)=\"open(row)\">{{row.message}}</a>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Type</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{row.type}}\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Date</ng-template>\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", styles: [""], components: [{ type: i2__namespace$3.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4__namespace$2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2__namespace$3.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$3.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2__namespace$3.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }] });
1290
+ ServerLogsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ServerLogsComponent, deps: [{ token: i1__namespace.MatDialog }], target: i0__namespace.ɵɵFactoryTarget.Component });
1291
+ ServerLogsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ServerLogsComponent, selector: "fs-system-server-logs", inputs: { loadLogs: "loadLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: ["list"], descendants: true, static: true }], ngImport: i0__namespace, template: "<fs-list [config]=\"config\">\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 <a href=\"javascript:;\" (click)=\"open(row)\">{{row.message}}</a>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Type</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{row.type}}\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Date</ng-template>\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", styles: [""], components: [{ type: i2__namespace$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4__namespace$1.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2__namespace$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$1.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2__namespace$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }] });
1363
1292
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ServerLogsComponent, decorators: [{
1364
1293
  type: i0.Component,
1365
1294
  args: [{
@@ -1367,13 +1296,152 @@
1367
1296
  templateUrl: './server-logs.component.html',
1368
1297
  styleUrls: ['./server-logs.component.scss']
1369
1298
  }]
1370
- }], ctorParameters: function () { return [{ type: i1__namespace$1.MatDialog }]; }, propDecorators: { list: [{
1299
+ }], ctorParameters: function () { return [{ type: i1__namespace.MatDialog }]; }, propDecorators: { list: [{
1371
1300
  type: i0.ViewChild,
1372
1301
  args: ['list', { static: true }]
1373
1302
  }], loadLogs: [{
1374
1303
  type: i0.Input
1375
1304
  }] } });
1376
1305
 
1306
+ var KeyNameValuePipe = /** @class */ (function () {
1307
+ function KeyNameValuePipe() {
1308
+ }
1309
+ KeyNameValuePipe.prototype.transform = function (values) {
1310
+ return Object.keys(values).map(function (key) {
1311
+ return { value: key, name: values[key] };
1312
+ });
1313
+ };
1314
+ return KeyNameValuePipe;
1315
+ }());
1316
+ KeyNameValuePipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: KeyNameValuePipe, deps: [], target: i0__namespace.ɵɵFactoryTarget.Pipe });
1317
+ KeyNameValuePipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: KeyNameValuePipe, name: "keyNameValue" });
1318
+ KeyNameValuePipe.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: KeyNameValuePipe });
1319
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: KeyNameValuePipe, decorators: [{
1320
+ type: i0.Pipe,
1321
+ args: [{
1322
+ name: 'keyNameValue'
1323
+ }]
1324
+ }, {
1325
+ type: i0.Injectable
1326
+ }] });
1327
+
1328
+ var SettingsComponent = /** @class */ (function () {
1329
+ function SettingsComponent(_message, _clipboard, _prompt, _cdRef) {
1330
+ this._message = _message;
1331
+ this._clipboard = _clipboard;
1332
+ this._prompt = _prompt;
1333
+ this._cdRef = _cdRef;
1334
+ this.fileRemove = new i0.EventEmitter();
1335
+ this.fileSelect = new i0.EventEmitter();
1336
+ this.groupedSettings = [];
1337
+ this.groups = [];
1338
+ this.SettingInterfaceType = SettingInterfaceType;
1339
+ }
1340
+ SettingsComponent.prototype.ngOnInit = function () {
1341
+ var _this = this;
1342
+ this.loadSettings({
1343
+ visible: true,
1344
+ })
1345
+ .subscribe(function (settings) {
1346
+ settings = settings
1347
+ .filter(function (setting) {
1348
+ return setting.interfaceType !== SettingInterfaceType.None;
1349
+ })
1350
+ .map(function (setting) {
1351
+ switch (setting.interfaceType) {
1352
+ case SettingInterfaceType.Date:
1353
+ case SettingInterfaceType.Time:
1354
+ return Object.assign(Object.assign({}, setting), { value: i4$1.parse(setting.value) });
1355
+ case SettingInterfaceType.SelectMultiple:
1356
+ return Object.assign(Object.assign({}, setting), { value: Array.isArray(setting.value) ? setting.value : [] });
1357
+ }
1358
+ return setting;
1359
+ });
1360
+ _this.groupedSettings = settings.reduce(function (accum, item) {
1361
+ if (accum[item.group] === undefined) {
1362
+ accum[item.group] = [];
1363
+ }
1364
+ accum[item.group].push(item);
1365
+ return accum;
1366
+ }, {});
1367
+ _this.groups = Object.keys(_this.groupedSettings);
1368
+ _this._cdRef.markForCheck();
1369
+ });
1370
+ };
1371
+ SettingsComponent.prototype.export = function (event, settings) {
1372
+ event.stopPropagation();
1373
+ var data = settings.map(function (setting) {
1374
+ return {
1375
+ name: setting.name,
1376
+ value: setting.value,
1377
+ group: setting.group,
1378
+ };
1379
+ });
1380
+ this._clipboard.copy(JSON.stringify(data));
1381
+ this._message.success('Copied to clipboard');
1382
+ };
1383
+ SettingsComponent.prototype.import = function (event, group) {
1384
+ var _this = this;
1385
+ event.stopPropagation();
1386
+ this._prompt.input({
1387
+ label: 'JSON Import',
1388
+ title: 'Import Settings',
1389
+ commitLabel: 'Import',
1390
+ required: true,
1391
+ }).subscribe(function (value) {
1392
+ if (value) {
1393
+ try {
1394
+ var settings_1 = _this.groupedSettings[group];
1395
+ var data = JSON.parse(value);
1396
+ data.forEach(function (item) {
1397
+ var setting = settings_1.find(function (s) {
1398
+ return item.name === s.name;
1399
+ });
1400
+ if (setting) {
1401
+ Object.assign(setting, item);
1402
+ }
1403
+ });
1404
+ _this._cdRef.markForCheck();
1405
+ }
1406
+ catch (e) {
1407
+ _this._message.error(e);
1408
+ }
1409
+ }
1410
+ });
1411
+ };
1412
+ SettingsComponent.prototype.saveGroup = function (group) {
1413
+ var _this = this;
1414
+ var settings = this.groupedSettings[group];
1415
+ var values = settings.reduce(function (result, value) {
1416
+ return (result[value.name] = value.value, result);
1417
+ }, {});
1418
+ this.save(group, values)
1419
+ .subscribe(function () {
1420
+ _this._message.success('Changes Saved');
1421
+ });
1422
+ };
1423
+ return SettingsComponent;
1424
+ }());
1425
+ SettingsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SettingsComponent, deps: [{ token: i1__namespace$1.FsMessage }, { token: i2__namespace$3.FsClipboard }, { token: i3__namespace$2.FsPrompt }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1426
+ SettingsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SettingsComponent, selector: "fs-system-settings", inputs: { loadSettings: "loadSettings", save: "save" }, outputs: { fileRemove: "fileRemove", fileSelect: "fileSelect" }, ngImport: i0__namespace, template: "\r\n<mat-accordion>\r\n <mat-expansion-panel hideToggle *ngFor=\"let group of groups\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <div class=\"title-row\">\r\n <div class=\"title\">{{group || 'General'}}</div>\r\n <div class=\"actions\">\r\n <button\r\n type=\"button\"\r\n [matTooltip]=\"'Export ' + (group || 'General') + ' Settings'\"\r\n mat-icon-button\r\n (click)=\"export($event, groupedSettings[group])\">\r\n <mat-icon>cloud_download</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n [matTooltip]=\"'Import ' + (group || 'General') + ' Settings'\"\r\n mat-icon-button\r\n (click)=\"import($event, group)\">\r\n <mat-icon>cloud_upload</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div \r\n hideToggle \r\n *ngFor=\"let setting of groupedSettings[group]\" \r\n class=\"setting\"\r\n [ngClass]=\"{ 'has-instruction': !! setting.instruction }\">\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\"\r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.InputBox\">\r\n <input\r\n matInput\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [name]=\"'setting' + setting.id\">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\" \r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.Textarea\">\r\n <textarea\r\n matInput\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [name]=\"'setting' + setting.id\">\r\n </textarea>\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\" \r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.Select || setting.interfaceType===SettingInterfaceType.SelectMultiple\">\r\n <mat-select\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [multiple]=\"setting.interfaceType===SettingInterfaceType.SelectMultiple\"\r\n [name]=\"'setting' + setting.id\">\r\n <mat-option *ngFor=\"let item of setting.values | keyNameValue\" [value]=\"item.value\">\r\n {{item.name}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\" \r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.Date\">\r\n <input\r\n matInput\r\n fsDatePicker\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [name]=\"'setting' + setting.id\">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\" \r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.Color\">\r\n <input\r\n matInput\r\n fsColorPicker\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [name]=\"'setting' + setting.id\">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class=\"full-width form-field-multiline-subscript\" \r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.Time\">\r\n <input\r\n matInput\r\n fsTimePicker\r\n [placeholder]=\"setting.label\"\r\n [(ngModel)]=\"setting.value\"\r\n [name]=\"'setting' + setting.id\">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <fs-file-picker\r\n *ngIf=\"setting.interfaceType===SettingInterfaceType.File\"\r\n [allowRemove]=\"true\"\r\n [allowDownload]=\"true\"\r\n (select)=\"fileSelect.emit({ setting: setting, file: $event.file })\"\r\n (remove)=\"fileRemove.emit(setting)\"\r\n [url]=\"setting.value\">\r\n <div fsFileLabel>{{setting.label}}</div>\r\n <div fsFileHint>{{setting.instruction}}</div>\r\n </fs-file-picker>\r\n </div>\r\n\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"saveGroup(group)\">Save</button>\r\n\r\n </mat-expansion-panel>\r\n\r\n</mat-accordion>\r\n", styles: [".mat-expansion-panel-header{font-size:19px}.full-width{width:100%}.title-row{flex-direction:row;box-sizing:border-box;display:flex;place-content:center flex-start;align-items:center;width:100%}.title-row .title{display:flex;flex:1}:host ::ng-deep .mat-expansion-panel-header-title{margin:0}:host ::ng-deep .mat-expansion-panel .actions{display:none}:host ::ng-deep .mat-expansion-panel.mat-expanded .actions{display:block}:host ::ng-deep .setting.has-instruction fs-file-picker fs-label-message{display:block;padding-bottom:1em}\n"], components: [{ type: i4__namespace$3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i4__namespace$3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i4__namespace.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7__namespace$1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i8__namespace.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i9__namespace$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i10__namespace.FsDatePickerComponent, selector: "[fsDatePicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "startOfDay", "view", "format", "minutes", "weekStartsOn"], outputs: ["change"] }, { type: i11__namespace.FsColorPickerComponent, selector: "[fsColorPicker]", inputs: ["showClear"] }, { type: i10__namespace.FsTimePickerComponent, selector: "[fsTimePicker]", inputs: ["view"] }, { type: i12__namespace.FsFilePickerComponent, selector: "fs-file-picker", inputs: ["minWidth", "minHeight", "imageWidth", "imageHeight", "imageQuality", "label", "showFilename", "allowDownload", "allowReupload", "multiple", "allowRemove", "url", "file", "accept", "disabled", "previewWidth", "previewHeight"], outputs: ["select", "remove", "download"] }], directives: [{ type: i4__namespace$3.MatAccordion, selector: "mat-accordion", inputs: ["multi", "displayMode", "togglePosition", "hideToggle"], exportAs: ["matAccordion"] }, { type: i7__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4__namespace$3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i9__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i7__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i15__namespace.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i16__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i16__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i16__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7__namespace$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i12__namespace.FsFileLabelDirective, selector: "[fsFileLabel]" }], pipes: { "keyNameValue": KeyNameValuePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1427
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SettingsComponent, decorators: [{
1428
+ type: i0.Component,
1429
+ args: [{
1430
+ selector: 'fs-system-settings',
1431
+ templateUrl: './settings.component.html',
1432
+ styleUrls: ['./settings.component.scss'],
1433
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
1434
+ }]
1435
+ }], ctorParameters: function () { return [{ type: i1__namespace$1.FsMessage }, { type: i2__namespace$3.FsClipboard }, { type: i3__namespace$2.FsPrompt }, { type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { loadSettings: [{
1436
+ type: i0.Input
1437
+ }], save: [{
1438
+ type: i0.Input
1439
+ }], fileRemove: [{
1440
+ type: i0.Output
1441
+ }], fileSelect: [{
1442
+ type: i0.Output
1443
+ }] } });
1444
+
1377
1445
  var UpgradeLogsComponent = /** @class */ (function () {
1378
1446
  function UpgradeLogsComponent() {
1379
1447
  this.config = null;
@@ -1402,7 +1470,7 @@
1402
1470
  return UpgradeLogsComponent;
1403
1471
  }());
1404
1472
  UpgradeLogsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: UpgradeLogsComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
1405
- UpgradeLogsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: UpgradeLogsComponent, selector: "fs-system-upgrade-logs", inputs: { loadUpgradeLogs: "loadUpgradeLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: i2$3.FsListComponent, descendants: true, static: true }], ngImport: i0__namespace, 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 {{row.name}}\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Function</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{row.function}}()\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Date</ng-template>\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", styles: [""], components: [{ type: i2__namespace$3.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4__namespace$2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2__namespace$3.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$3.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2__namespace$3.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }] });
1473
+ UpgradeLogsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: UpgradeLogsComponent, selector: "fs-system-upgrade-logs", inputs: { loadUpgradeLogs: "loadUpgradeLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: i2$1.FsListComponent, descendants: true, static: true }], ngImport: i0__namespace, 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 {{row.name}}\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Function</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{row.function}}()\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Date</ng-template>\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", styles: [""], components: [{ type: i2__namespace$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i4__namespace$1.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2__namespace$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$1.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2__namespace$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }] });
1406
1474
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: UpgradeLogsComponent, decorators: [{
1407
1475
  type: i0.Component,
1408
1476
  args: [{
@@ -1412,137 +1480,12 @@
1412
1480
  }]
1413
1481
  }], propDecorators: { list: [{
1414
1482
  type: i0.ViewChild,
1415
- args: [i2$3.FsListComponent, { static: true }]
1483
+ args: [i2$1.FsListComponent, { static: true }]
1416
1484
  }], loadUpgradeLogs: [{
1417
1485
  type: i0.Input
1418
1486
  }] } });
1419
1487
 
1420
- var ApiLogComponent = /** @class */ (function () {
1421
- function ApiLogComponent(_dialogRef, data) {
1422
- this._dialogRef = _dialogRef;
1423
- this.data = data;
1424
- }
1425
- ApiLogComponent.prototype.ngOnInit = function () {
1426
- this.apiLogStates = indexNameValue(ApiLogStates);
1427
- if (this.data.apiLog) {
1428
- this.apiLog = this.data.apiLog;
1429
- }
1430
- };
1431
- return ApiLogComponent;
1432
- }());
1433
- ApiLogComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ApiLogComponent, deps: [{ token: i1__namespace$1.MatDialogRef }, { token: i1$1.MAT_DIALOG_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
1434
- ApiLogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ApiLogComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog *fsSkeleton=\"apiLog\">\n\n <div mat-dialog-title>API Log</div>\n\n <mat-dialog-content>\n <div\n fxLayout=\"row wrap\"\n fxLayout.xs=\"column\"\n fxLayoutGap.xs=\"0px\"\n fxLayoutAlign=\"start start\"\n fxLayoutGap=\"100px\">\n\n <div>\n <fs-label-field>\n <fs-label>\n Type\n </fs-label>\n {{apiLog.type}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n {{apiLogStates[apiLog.state]}}\n </fs-label-field>\n\n\n <fs-label-field *ngIf=\"apiLog.code\">\n <fs-label>\n Code\n </fs-label>\n {{apiLog.code}}\n </fs-label-field>\n\n </div>\n <div>\n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{apiLog.createDate|fsDateFormat: 'full-date-time'}}\n </fs-label-field>\n\n\n <fs-label-field *ngIf=\"apiLog.direction\">\n <fs-label>\n Direction\n </fs-label>\n {{apiLog.direction}}\n </fs-label-field>\n\n\n <fs-label-field *ngIf=\"apiLog.length\">\n <fs-label>\n Duration\n </fs-label>\n {{ apiLog.length | fsDateDuration }}\n </fs-label-field>\n </div>\n </div>\n\n <div>\n <fs-label-field *ngIf=\"apiLog.message\">\n <fs-label>\n Message\n </fs-label>\n {{apiLog.message}}\n </fs-label-field>\n </div>\n\n\n <div\n fxLayout=\"row wrap\"\n fxLayout.xs=\"column\"\n fxLayoutGap.xs=\"0px\"\n fxLayoutAlign=\"start start\"\n fxLayoutGap=\"100px\">\n\n <div>\n <fs-label-field *ngIf=\"apiLog.method\">\n <fs-label>\n Method\n </fs-label>\n {{apiLog.method}}\n </fs-label-field>\n </div>\n <div>\n <fs-label-field *ngIf=\"apiLog.url\">\n <fs-label>\n URL\n </fs-label>\n {{apiLog.url}}\n </fs-label-field>\n </div>\n </div>\n\n <div>\n <fs-label-field *ngIf=\"apiLog.request\">\n <fs-label>\n Request\n </fs-label>\n <pre>{{apiLog.request|json}}</pre>\n </fs-label-field>\n\n <fs-label-field *ngIf=\"apiLog.response\">\n <fs-label>\n Response\n </fs-label>\n <pre>{{apiLog.response|json}}</pre>\n </fs-label-field>\n </div>\n </mat-dialog-content>\n\n <mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Done</button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [""], components: [{ type: i2__namespace$2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i2__namespace$1.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2__namespace$1.FsLabelComponent, selector: "fs-label" }, { type: i4__namespace.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__namespace.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i1__namespace$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6__namespace$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i6__namespace$1.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: i6__namespace$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsDateFormat": i4__namespace$2.FsDateFormatPipe, "fsDateDuration": i4__namespace$2.FsDateDurationPipe, "json": i9__namespace.JsonPipe } });
1435
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ApiLogComponent, decorators: [{
1436
- type: i0.Component,
1437
- args: [{
1438
- templateUrl: './api-log.component.html',
1439
- styleUrls: ['./api-log.component.scss']
1440
- }]
1441
- }], ctorParameters: function () {
1442
- return [{ type: i1__namespace$1.MatDialogRef }, { type: undefined, decorators: [{
1443
- type: i0.Inject,
1444
- args: [i1$1.MAT_DIALOG_DATA]
1445
- }] }];
1446
- } });
1447
-
1448
- var ApiLogsComponent = /** @class */ (function () {
1449
- function ApiLogsComponent(_dialog) {
1450
- this._dialog = _dialog;
1451
- this.config = null;
1452
- this.apiLogStates = indexNameValue(ApiLogStates);
1453
- }
1454
- ApiLogsComponent.prototype.ngOnInit = function () {
1455
- this._configList();
1456
- };
1457
- ApiLogsComponent.prototype._configList = function () {
1458
- var _this = this;
1459
- this.config = {
1460
- filters: [
1461
- {
1462
- type: filter.ItemType.Keyword,
1463
- name: 'keyword',
1464
- label: 'Search'
1465
- },
1466
- {
1467
- type: filter.ItemType.Select,
1468
- name: 'state',
1469
- label: 'Status',
1470
- values: ApiLogStates
1471
- },
1472
- {
1473
- name: 'createDate',
1474
- type: filter.ItemType.DateRange,
1475
- label: ['From Date', 'To Date'],
1476
- }
1477
- ],
1478
- fetch: function (query) {
1479
- Object.assign(query, {});
1480
- return _this.loadApiLogs(query)
1481
- .pipe(operators.map(function (response) { return ({ data: response.data, paging: response.paging }); }));
1482
- }
1483
- };
1484
- };
1485
- ApiLogsComponent.prototype.open = function (apiLog) {
1486
- this._dialog.open(ApiLogComponent, {
1487
- data: { apiLog: apiLog },
1488
- width: '85%'
1489
- });
1490
- };
1491
- return ApiLogsComponent;
1492
- }());
1493
- ApiLogsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ApiLogsComponent, deps: [{ token: i1__namespace$1.MatDialog }], target: i0__namespace.ɵɵFactoryTarget.Component });
1494
- ApiLogsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ApiLogsComponent, selector: "fs-system-api-logs", inputs: { loadApiLogs: "loadApiLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: i2$3.FsListComponent, descendants: true, static: true }], ngImport: i0__namespace, 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 href=\"javascript:;\" (click)=\"open(row)\">\n {{row.type || 'Unknown'}}\n <mat-icon class=\"direction\" *ngIf=\"row.direction=='outgoing'\">arrow_upward</mat-icon>\n <mat-icon class=\"direction\" *ngIf=\"row.direction=='incoming'\">arrow_downward</mat-icon>\n </a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{apiLogStates[row.state]}}\n <span *ngIf=\"row.code\" class=\"code\" [ngClass]=\"{'success': row.code==200,'error': row.code!=200 }\">[{{row.code}}]</span>\n </ng-template>\n </fs-list-column>\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 <fs-list-column>\n <ng-template fs-list-header>Date</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div><small *ngIf=\"row.length\">Duration: {{ row.length | fsDateDuration }}</small></div>\n </ng-template>\n </fs-list-column>\n </fs-list>\n", styles: [".code.success{color:green}.code.error{color:red}.direction{font-size:14px;height:14px;line-height:14px;width:14px}\n"], components: [{ type: i2__namespace$3.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i6__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4__namespace$2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i2__namespace$3.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$3.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i2__namespace$3.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10__namespace.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], pipes: { "fsDateDuration": i4__namespace$2.FsDateDurationPipe } });
1495
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ApiLogsComponent, decorators: [{
1496
- type: i0.Component,
1497
- args: [{
1498
- selector: 'fs-system-api-logs',
1499
- templateUrl: './api-logs.component.html',
1500
- styleUrls: ['./api-logs.component.scss']
1501
- }]
1502
- }], ctorParameters: function () { return [{ type: i1__namespace$1.MatDialog }]; }, propDecorators: { list: [{
1503
- type: i0.ViewChild,
1504
- args: [i2$3.FsListComponent, { static: true }]
1505
- }], loadApiLogs: [{
1506
- type: i0.Input
1507
- }] } });
1508
-
1509
- var InfoComponent = /** @class */ (function () {
1510
- function InfoComponent() {
1511
- }
1512
- InfoComponent.prototype.ngAfterViewInit = function () {
1513
- this._load();
1514
- };
1515
- InfoComponent.prototype._load = function () {
1516
- var _this = this;
1517
- this.load()
1518
- .subscribe(function (info) {
1519
- info += '<style>body { background: transparent; }</style>';
1520
- var doc = _this.iframe.nativeElement.contentDocument || _this.iframe.nativeElement.contentWindow;
1521
- doc.open();
1522
- doc.write(info);
1523
- doc.close();
1524
- var scrollHeight = (_this.iframe.nativeElement.contentWindow.document.documentElement.scrollHeight + 100);
1525
- _this.iframe.nativeElement.style.height = scrollHeight + "px";
1526
- });
1527
- };
1528
- return InfoComponent;
1529
- }());
1530
- InfoComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: InfoComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
1531
- InfoComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: InfoComponent, selector: "fs-system-info", inputs: { load: "load" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true }], ngImport: i0__namespace, template: "<iframe #iframe></iframe>\r\n", styles: ["iframe{width:100%;border:0}\n"], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1532
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: InfoComponent, decorators: [{
1533
- type: i0.Component,
1534
- args: [{
1535
- selector: 'fs-system-info',
1536
- templateUrl: 'info.component.html',
1537
- styleUrls: ['info.component.scss'],
1538
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
1539
- }]
1540
- }], propDecorators: { iframe: [{
1541
- type: i0.ViewChild,
1542
- args: ['iframe']
1543
- }], load: [{
1544
- type: i0.Input
1545
- }] } });
1488
+ var FS_SYSTEM_CONFIG = new i0.InjectionToken('fs-system-config');
1546
1489
 
1547
1490
  var FsSystemModule = /** @class */ (function () {
1548
1491
  function FsSystemModule() {
@@ -1552,7 +1495,7 @@
1552
1495
  ngModule: FsSystemModule,
1553
1496
  providers: [
1554
1497
  { provide: FS_SYSTEM_CONFIG, useValue: config || {} },
1555
- ]
1498
+ ],
1556
1499
  };
1557
1500
  };
1558
1501
  return FsSystemModule;
@@ -1562,7 +1505,6 @@
1562
1505
  CronsComponent,
1563
1506
  SettingsComponent,
1564
1507
  KeyNameValuePipe,
1565
- FileManagerComponent,
1566
1508
  ProcessesComponent,
1567
1509
  ServerLogComponent,
1568
1510
  ServerLogsComponent,
@@ -1572,95 +1514,90 @@
1572
1514
  InfoComponent,
1573
1515
  ProcessComponent,
1574
1516
  CronComponent,
1575
- CronLogComponent], imports: [i9.CommonModule,
1576
- flexLayout.FlexLayoutModule,
1577
- i17.FormsModule,
1517
+ CronLogComponent], imports: [i7.CommonModule,
1518
+ i16.FormsModule,
1578
1519
  i4.MatButtonModule,
1579
1520
  i4$3.MatExpansionModule,
1580
- i11.MatTooltipModule,
1521
+ i9.MatTooltipModule,
1581
1522
  i6.MatIconModule,
1582
- i7.MatFormFieldModule,
1583
- i16.MatInputModule,
1523
+ i7$1.MatFormFieldModule,
1524
+ i15.MatInputModule,
1584
1525
  i8.MatSelectModule,
1585
- i1$1.MatDialogModule,
1586
- i3.MatTabsModule,
1587
- i4$2.FsDateModule,
1526
+ i1.MatDialogModule,
1527
+ i3$1.MatTabsModule,
1528
+ i4$1.FsDateModule,
1588
1529
  i5.FsSkeletonModule,
1589
- i2$3.FsListModule,
1530
+ i2$1.FsListModule,
1590
1531
  i12.FsFileModule,
1591
- i1$2.FsFileManagerModule,
1592
- i2$1.FsLabelModule,
1593
- i2$2.FsDialogModule,
1594
- i10$1.FsDatePickerModule,
1595
- i4$1.FsMenuModule,
1532
+ fileManager.FsFileManagerModule,
1533
+ i3.FsLabelModule,
1534
+ i2.FsDialogModule,
1535
+ i10.FsDatePickerModule,
1536
+ i4$2.FsMenuModule,
1596
1537
  i5$1.FsPopoverModule,
1597
- i11$1.FsColorPickerModule], exports: [DashboardComponent,
1538
+ i11.FsColorPickerModule], exports: [DashboardComponent,
1598
1539
  CronsComponent,
1599
1540
  SettingsComponent,
1600
- FileManagerComponent,
1601
1541
  ProcessesComponent,
1602
1542
  ServerLogsComponent,
1603
1543
  UpgradeLogsComponent,
1604
1544
  ApiLogsComponent,
1605
1545
  InfoComponent] });
1606
1546
  FsSystemModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsSystemModule, imports: [[
1607
- i9.CommonModule,
1608
- flexLayout.FlexLayoutModule,
1609
- i17.FormsModule,
1547
+ i7.CommonModule,
1548
+ i16.FormsModule,
1610
1549
  i4.MatButtonModule,
1611
1550
  i4$3.MatExpansionModule,
1612
- i11.MatTooltipModule,
1551
+ i9.MatTooltipModule,
1613
1552
  i6.MatIconModule,
1614
- i7.MatFormFieldModule,
1615
- i16.MatInputModule,
1553
+ i7$1.MatFormFieldModule,
1554
+ i15.MatInputModule,
1616
1555
  i8.MatSelectModule,
1617
- i1$1.MatDialogModule,
1618
- i3.MatTabsModule,
1619
- i4$2.FsDateModule,
1556
+ i1.MatDialogModule,
1557
+ i3$1.MatTabsModule,
1558
+ i4$1.FsDateModule,
1620
1559
  i5.FsSkeletonModule,
1621
- i2$3.FsListModule,
1560
+ i2$1.FsListModule,
1622
1561
  i12.FsFileModule,
1623
- i1$2.FsFileManagerModule,
1624
- i2$1.FsLabelModule,
1625
- i2$2.FsDialogModule,
1626
- i10$1.FsDatePickerModule,
1627
- i4$1.FsMenuModule,
1562
+ fileManager.FsFileManagerModule,
1563
+ i3.FsLabelModule,
1564
+ i2.FsDialogModule,
1565
+ i10.FsDatePickerModule,
1566
+ i4$2.FsMenuModule,
1628
1567
  i5$1.FsPopoverModule,
1629
- i11$1.FsColorPickerModule,
1568
+ i11.FsColorPickerModule,
1630
1569
  ]] });
1631
1570
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsSystemModule, decorators: [{
1632
1571
  type: i0.NgModule,
1633
1572
  args: [{
1634
1573
  imports: [
1635
- i9.CommonModule,
1636
- flexLayout.FlexLayoutModule,
1637
- i17.FormsModule,
1574
+ i7.CommonModule,
1575
+ i16.FormsModule,
1638
1576
  i4.MatButtonModule,
1639
1577
  i4$3.MatExpansionModule,
1640
- i11.MatTooltipModule,
1578
+ i9.MatTooltipModule,
1641
1579
  i6.MatIconModule,
1642
- i7.MatFormFieldModule,
1643
- i16.MatInputModule,
1580
+ i7$1.MatFormFieldModule,
1581
+ i15.MatInputModule,
1644
1582
  i8.MatSelectModule,
1645
- i1$1.MatDialogModule,
1646
- i3.MatTabsModule,
1647
- i4$2.FsDateModule,
1583
+ i1.MatDialogModule,
1584
+ i3$1.MatTabsModule,
1585
+ i4$1.FsDateModule,
1648
1586
  i5.FsSkeletonModule,
1649
- i2$3.FsListModule,
1587
+ i2$1.FsListModule,
1650
1588
  i12.FsFileModule,
1651
- i1$2.FsFileManagerModule,
1652
- i2$1.FsLabelModule,
1653
- i2$2.FsDialogModule,
1654
- i10$1.FsDatePickerModule,
1655
- i4$1.FsMenuModule,
1589
+ fileManager.FsFileManagerModule,
1590
+ i3.FsLabelModule,
1591
+ i2.FsDialogModule,
1592
+ i10.FsDatePickerModule,
1593
+ i4$2.FsMenuModule,
1656
1594
  i5$1.FsPopoverModule,
1657
- i11$1.FsColorPickerModule,
1595
+ i11.FsColorPickerModule,
1658
1596
  ],
1659
1597
  exports: [
1660
1598
  DashboardComponent,
1661
1599
  CronsComponent,
1662
1600
  SettingsComponent,
1663
- FileManagerComponent,
1664
1601
  ProcessesComponent,
1665
1602
  ServerLogsComponent,
1666
1603
  UpgradeLogsComponent,
@@ -1672,7 +1609,6 @@
1672
1609
  CronsComponent,
1673
1610
  SettingsComponent,
1674
1611
  KeyNameValuePipe,
1675
- FileManagerComponent,
1676
1612
  ProcessesComponent,
1677
1613
  ServerLogComponent,
1678
1614
  ServerLogsComponent,
@@ -1700,7 +1636,6 @@
1700
1636
  exports.CronsComponent = CronsComponent;
1701
1637
  exports.DashboardComponent = DashboardComponent;
1702
1638
  exports.FS_SYSTEM_CONFIG = FS_SYSTEM_CONFIG;
1703
- exports.FileManagerComponent = FileManagerComponent;
1704
1639
  exports.FsSystemModule = FsSystemModule;
1705
1640
  exports.InfoComponent = InfoComponent;
1706
1641
  exports.KeyNameValuePipe = KeyNameValuePipe;