@firestitch/system 13.0.13 → 14.0.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.
- package/app/modules/query-logs/components/explain/explain.component.d.ts +8 -8
- package/app/modules/query-logs/components/explain/index.d.ts +1 -1
- package/app/modules/query-logs/components/index.d.ts +3 -3
- package/app/modules/query-logs/components/query-log/index.d.ts +1 -1
- package/app/modules/query-logs/components/query-log/query-log.component.d.ts +27 -27
- package/app/modules/query-logs/components/query-logs/index.d.ts +1 -1
- package/app/modules/query-logs/components/query-logs/query-logs.component.d.ts +20 -20
- package/app/modules/query-logs/query-logs.module.d.ts +23 -23
- package/app/modules/system/components/api-log/api-log.component.d.ts +13 -13
- package/app/modules/system/components/api-log/index.d.ts +1 -1
- package/app/modules/system/components/api-logs/api-logs.component.d.ts +21 -21
- package/app/modules/system/components/api-logs/index.d.ts +1 -1
- package/app/modules/system/components/cron/cron.component.d.ts +25 -25
- package/app/modules/system/components/cron/index.d.ts +1 -1
- package/app/modules/system/components/cron-log/cron-log.component.d.ts +12 -12
- package/app/modules/system/components/cron-log/index.d.ts +1 -1
- package/app/modules/system/components/cron-next-run/cron-next-run.component.d.ts +18 -18
- package/app/modules/system/components/cron-next-run/index.d.ts +1 -1
- package/app/modules/system/components/crons/crons.component.d.ts +43 -43
- package/app/modules/system/components/crons/index.d.ts +1 -1
- package/app/modules/system/components/dashboard/dashboard.component.d.ts +28 -28
- package/app/modules/system/components/dashboard/index.d.ts +1 -1
- package/app/modules/system/components/info/index.d.ts +1 -1
- package/app/modules/system/components/info/info.component.d.ts +11 -11
- package/app/modules/system/components/process/index.d.ts +1 -1
- package/app/modules/system/components/process/process.component.d.ts +45 -45
- package/app/modules/system/components/processes/index.d.ts +1 -1
- package/app/modules/system/components/processes/processes.component.d.ts +36 -36
- package/app/modules/system/components/server-log/index.d.ts +1 -1
- package/app/modules/system/components/server-log/server-log.component.d.ts +10 -10
- package/app/modules/system/components/server-logs/index.d.ts +1 -1
- package/app/modules/system/components/server-logs/server-logs.component.d.ts +21 -21
- package/app/modules/system/components/settings/index.d.ts +1 -1
- package/app/modules/system/components/settings/settings.component.d.ts +30 -30
- package/app/modules/system/components/upgrade-logs/index.d.ts +1 -1
- package/app/modules/system/components/upgrade-logs/upgrade-logs.component.d.ts +17 -17
- package/app/modules/system/consts/api-log-states.const.d.ts +5 -5
- package/app/modules/system/consts/cron-log-states.const.d.ts +6 -6
- package/app/modules/system/consts/cron-process-states.const.d.ts +4 -4
- package/app/modules/system/consts/cron-states.const.d.ts +5 -5
- package/app/modules/system/consts/index.d.ts +7 -7
- package/app/modules/system/consts/process-process-states.const.d.ts +4 -4
- package/app/modules/system/consts/process-states.const.d.ts +5 -5
- package/app/modules/system/consts/setting-interface-types.const.d.ts +5 -5
- package/app/modules/system/enums/api-log-state.enum.d.ts +5 -5
- package/app/modules/system/enums/cron-log-state.enum.d.ts +14 -14
- package/app/modules/system/enums/cron-state.enum.d.ts +9 -9
- package/app/modules/system/enums/index.d.ts +5 -5
- package/app/modules/system/enums/process-state.enum.d.ts +8 -8
- package/app/modules/system/enums/setting-interface-type.enum.d.ts +14 -14
- package/app/modules/system/fs-system.module.d.ts +47 -47
- package/app/modules/system/helpers/index-name-value.d.ts +1 -1
- package/app/modules/system/injectors/system-config.injector.d.ts +2 -2
- package/app/modules/system/interfaces/dashboard-action.d.ts +5 -5
- package/app/modules/system/interfaces/index.d.ts +4 -4
- package/app/modules/system/interfaces/process-action.d.ts +6 -6
- package/app/modules/system/interfaces/process.d.ts +26 -26
- package/app/modules/system/interfaces/system-config.d.ts +2 -2
- package/app/modules/system/pipes/key-name-value.pipe.d.ts +8 -8
- package/esm2020/app/modules/query-logs/components/explain/explain.component.mjs +23 -23
- package/esm2020/app/modules/query-logs/components/explain/index.mjs +1 -1
- package/esm2020/app/modules/query-logs/components/index.mjs +4 -4
- package/esm2020/app/modules/query-logs/components/query-log/index.mjs +1 -1
- package/esm2020/app/modules/query-logs/components/query-log/query-log.component.mjs +58 -58
- package/esm2020/app/modules/query-logs/components/query-logs/index.mjs +1 -1
- package/esm2020/app/modules/query-logs/components/query-logs/query-logs.component.mjs +84 -84
- package/esm2020/app/modules/query-logs/query-logs.module.mjs +83 -85
- package/esm2020/app/modules/system/components/api-log/api-log.component.mjs +34 -34
- package/esm2020/app/modules/system/components/api-log/index.mjs +2 -2
- package/esm2020/app/modules/system/components/api-logs/api-logs.component.mjs +69 -69
- package/esm2020/app/modules/system/components/api-logs/index.mjs +2 -2
- package/esm2020/app/modules/system/components/cron/cron.component.mjs +105 -105
- package/esm2020/app/modules/system/components/cron/index.mjs +2 -2
- package/esm2020/app/modules/system/components/cron-log/cron-log.component.mjs +37 -37
- package/esm2020/app/modules/system/components/cron-log/index.mjs +2 -2
- package/esm2020/app/modules/system/components/cron-next-run/cron-next-run.component.mjs +98 -98
- package/esm2020/app/modules/system/components/cron-next-run/index.mjs +1 -1
- package/esm2020/app/modules/system/components/crons/crons.component.mjs +235 -235
- package/esm2020/app/modules/system/components/crons/index.mjs +2 -2
- package/esm2020/app/modules/system/components/dashboard/dashboard.component.mjs +84 -84
- package/esm2020/app/modules/system/components/dashboard/index.mjs +2 -2
- package/esm2020/app/modules/system/components/info/index.mjs +2 -2
- package/esm2020/app/modules/system/components/info/info.component.mjs +31 -31
- package/esm2020/app/modules/system/components/process/index.mjs +2 -2
- package/esm2020/app/modules/system/components/process/process.component.mjs +98 -98
- package/esm2020/app/modules/system/components/processes/index.mjs +2 -2
- package/esm2020/app/modules/system/components/processes/processes.component.mjs +177 -177
- package/esm2020/app/modules/system/components/server-log/index.mjs +2 -2
- package/esm2020/app/modules/system/components/server-log/server-log.component.mjs +38 -38
- package/esm2020/app/modules/system/components/server-logs/index.mjs +2 -2
- package/esm2020/app/modules/system/components/server-logs/server-logs.component.mjs +53 -53
- package/esm2020/app/modules/system/components/settings/index.mjs +2 -2
- package/esm2020/app/modules/system/components/settings/settings.component.mjs +138 -138
- package/esm2020/app/modules/system/components/upgrade-logs/index.mjs +2 -2
- package/esm2020/app/modules/system/components/upgrade-logs/upgrade-logs.component.mjs +44 -44
- package/esm2020/app/modules/system/consts/api-log-states.const.mjs +7 -7
- package/esm2020/app/modules/system/consts/cron-log-states.const.mjs +15 -15
- package/esm2020/app/modules/system/consts/cron-process-states.const.mjs +4 -4
- package/esm2020/app/modules/system/consts/cron-states.const.mjs +10 -10
- package/esm2020/app/modules/system/consts/index.mjs +7 -7
- package/esm2020/app/modules/system/consts/process-process-states.const.mjs +5 -5
- package/esm2020/app/modules/system/consts/process-states.const.mjs +10 -10
- package/esm2020/app/modules/system/consts/setting-interface-types.const.mjs +12 -12
- package/esm2020/app/modules/system/enums/api-log-state.enum.mjs +7 -7
- package/esm2020/app/modules/system/enums/cron-log-state.enum.mjs +15 -15
- package/esm2020/app/modules/system/enums/cron-state.enum.mjs +11 -11
- package/esm2020/app/modules/system/enums/index.mjs +6 -6
- package/esm2020/app/modules/system/enums/process-state.enum.mjs +10 -10
- package/esm2020/app/modules/system/enums/setting-interface-type.enum.mjs +16 -16
- package/esm2020/app/modules/system/fs-system.module.mjs +177 -179
- package/esm2020/app/modules/system/helpers/index-name-value.mjs +8 -8
- package/esm2020/app/modules/system/injectors/system-config.injector.mjs +3 -3
- package/esm2020/app/modules/system/interfaces/dashboard-action.mjs +2 -2
- package/esm2020/app/modules/system/interfaces/index.mjs +4 -4
- package/esm2020/app/modules/system/interfaces/process-action.mjs +2 -2
- package/esm2020/app/modules/system/interfaces/process.mjs +1 -1
- package/esm2020/app/modules/system/interfaces/system-config.mjs +2 -2
- package/esm2020/app/modules/system/pipes/key-name-value.pipe.mjs +21 -21
- package/esm2020/firestitch-system.mjs +4 -4
- package/esm2020/public_api.mjs +20 -20
- package/fesm2015/firestitch-system.mjs +1486 -1490
- package/fesm2015/firestitch-system.mjs.map +1 -1
- package/fesm2020/firestitch-system.mjs +1492 -1496
- package/fesm2020/firestitch-system.mjs.map +1 -1
- package/{firestitch-system.d.ts → index.d.ts} +5 -5
- package/package.json +3 -3
- package/public_api.d.ts +21 -21
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import { Component, ViewChild, Input } from '@angular/core';
|
|
2
|
-
import { FsListComponent } from '@firestitch/list';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import { ItemType } from '@firestitch/filter';
|
|
5
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
6
|
-
import { ServerLogComponent } from '../server-log/server-log.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/material/dialog";
|
|
9
|
-
import * as i2 from "@firestitch/
|
|
10
|
-
import * as i3 from "@firestitch/
|
|
11
|
-
export class ServerLogsComponent {
|
|
12
|
-
constructor(_dialog) {
|
|
13
|
-
this._dialog = _dialog;
|
|
14
|
-
this.config = null;
|
|
15
|
-
this.logTypes = [];
|
|
16
|
-
}
|
|
17
|
-
ngOnInit() {
|
|
18
|
-
this._configList();
|
|
19
|
-
}
|
|
20
|
-
_configList() {
|
|
21
|
-
this.config = {
|
|
22
|
-
filters: [
|
|
23
|
-
{
|
|
24
|
-
type: ItemType.Keyword,
|
|
25
|
-
name: 'keyword',
|
|
26
|
-
label: 'Search'
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
fetch: query => {
|
|
30
|
-
return this.loadLogs(query)
|
|
31
|
-
.pipe(map((response) => ({ data: response.data, paging: response.paging })));
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
open(log) {
|
|
36
|
-
this._dialog.open(ServerLogComponent, {
|
|
37
|
-
data: { log: log },
|
|
38
|
-
width: '85%'
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
ServerLogsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
43
|
-
ServerLogsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
45
|
-
type: Component,
|
|
46
|
-
args: [{ selector: 'fs-system-server-logs', template: "<fs-list [config]=\"config\">\
|
|
47
|
-
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { list: [{
|
|
48
|
-
type: ViewChild,
|
|
49
|
-
args: ['list', { static: true }]
|
|
50
|
-
}], loadLogs: [{
|
|
51
|
-
type: Input
|
|
52
|
-
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, ViewChild, Input } from '@angular/core';
|
|
2
|
+
import { FsListComponent } from '@firestitch/list';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { ItemType } from '@firestitch/filter';
|
|
5
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
6
|
+
import { ServerLogComponent } from '../server-log/server-log.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/dialog";
|
|
9
|
+
import * as i2 from "@firestitch/date";
|
|
10
|
+
import * as i3 from "@firestitch/list";
|
|
11
|
+
export class ServerLogsComponent {
|
|
12
|
+
constructor(_dialog) {
|
|
13
|
+
this._dialog = _dialog;
|
|
14
|
+
this.config = null;
|
|
15
|
+
this.logTypes = [];
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
this._configList();
|
|
19
|
+
}
|
|
20
|
+
_configList() {
|
|
21
|
+
this.config = {
|
|
22
|
+
filters: [
|
|
23
|
+
{
|
|
24
|
+
type: ItemType.Keyword,
|
|
25
|
+
name: 'keyword',
|
|
26
|
+
label: 'Search'
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
fetch: query => {
|
|
30
|
+
return this.loadLogs(query)
|
|
31
|
+
.pipe(map((response) => ({ data: response.data, paging: response.paging })));
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
open(log) {
|
|
36
|
+
this._dialog.open(ServerLogComponent, {
|
|
37
|
+
data: { log: log },
|
|
38
|
+
width: '85%'
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
ServerLogsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ServerLogsComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
+
ServerLogsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ServerLogsComponent, selector: "fs-system-server-logs", inputs: { loadLogs: "loadLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: ["list"], descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Message</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a href=\"javascript:;\" (click)=\"open(row)\">{{row.message}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Type</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.type}}\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 </ng-template>\n </fs-list-column>\n </fs-list>\n", styles: [""], dependencies: [{ kind: "component", type: i2.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { kind: "component", type: i3.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: i3.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { kind: "directive", type: i3.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: i3.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }] });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ServerLogsComponent, decorators: [{
|
|
45
|
+
type: Component,
|
|
46
|
+
args: [{ selector: 'fs-system-server-logs', template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Message</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a href=\"javascript:;\" (click)=\"open(row)\">{{row.message}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Type</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.type}}\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 </ng-template>\n </fs-list-column>\n </fs-list>\n" }]
|
|
47
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { list: [{
|
|
48
|
+
type: ViewChild,
|
|
49
|
+
args: ['list', { static: true }]
|
|
50
|
+
}], loadLogs: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}] } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWxvZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3N5c3RlbS9jb21wb25lbnRzL3NlcnZlci1sb2dzL3NlcnZlci1sb2dzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9zZXJ2ZXItbG9ncy9zZXJ2ZXItbG9ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFTeEUsTUFBTSxPQUFPLG1CQUFtQjtJQVM5QixZQUNVLE9BQWtCO1FBQWxCLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFKckIsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFDNUIsYUFBUSxHQUFHLEVBQUUsQ0FBQztJQUlqQixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU8sV0FBVztRQUVqQixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTztvQkFDdEIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsS0FBSyxFQUFFLFFBQVE7aUJBQ2hCO2FBQ0Y7WUFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztxQkFDeEIsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUMzRSxDQUFDO1lBQ04sQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sSUFBSSxDQUFDLEdBQUc7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUNwQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO1lBQ2xCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0hBekNVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDJNQ2ZoQyxvdEJBb0JBOzJGRExhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSx1QkFBdUI7Z0dBTVcsSUFBSTtzQkFBL0MsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVuQixRQUFRO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRnNMaXN0Q29uZmlnLCBGc0xpc3RDb21wb25lbnQgfSBmcm9tICdAZmlyZXN0aXRjaC9saXN0JztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTZXJ2ZXJMb2dDb21wb25lbnQgfSBmcm9tICcuLi9zZXJ2ZXItbG9nL3NlcnZlci1sb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1zeXN0ZW0tc2VydmVyLWxvZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VydmVyLWxvZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXJ2ZXItbG9ncy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlcnZlckxvZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2xpc3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgbGlzdDogRnNMaXN0Q29tcG9uZW50O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkTG9nczogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTx7IGRhdGE6IGFueVtdLCBwYWdpbmc6IGFueSB9PjtcblxuICBwdWJsaWMgY29uZmlnOiBGc0xpc3RDb25maWcgPSBudWxsO1xuICBwdWJsaWMgbG9nVHlwZXMgPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9jb25maWdMaXN0KCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWdMaXN0KCkge1xuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBmaWx0ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5LZXl3b3JkLFxuICAgICAgICAgIG5hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICBsYWJlbDogJ1NlYXJjaCdcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZldGNoOiBxdWVyeSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRMb2dzKHF1ZXJ5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiAoeyBkYXRhOiByZXNwb25zZS5kYXRhLCBwYWdpbmc6IHJlc3BvbnNlLnBhZ2luZyB9KSlcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgb3Blbihsb2cpIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihTZXJ2ZXJMb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgbG9nOiBsb2cgfSxcbiAgICAgIHdpZHRoOiAnODUlJ1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZnMtbGlzdCBbY29uZmlnXT1cImNvbmZpZ1wiPlxuICAgIDxmcy1saXN0LWNvbHVtbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5NZXNzYWdlPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cIm9wZW4ocm93KVwiPnt7cm93Lm1lc3NhZ2V9fTwvYT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mcy1saXN0LWNvbHVtbj5cbiAgICA8ZnMtbGlzdC1jb2x1bW4+XG4gICAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+VHlwZTwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgICAge3tyb3cudHlwZX19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZnMtbGlzdC1jb2x1bW4+XG4gICAgPGZzLWxpc3QtY29sdW1uPlxuICAgICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPkRhdGU8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICAgIDxmcy1kYXRlLWFnbyBbZGF0ZV09XCJyb3cuY3JlYXRlRGF0ZVwiPjwvZnMtZGF0ZS1hZ28+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDwvZnMtbGlzdD5cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './settings.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './settings.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvc2V0dGluZ3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2V0dGluZ3MuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
|
|
2
|
-
import { FsPrompt } from '@firestitch/prompt';
|
|
3
|
-
import { parse } from '@firestitch/date';
|
|
4
|
-
import { FsMessage } from '@firestitch/message';
|
|
5
|
-
import { FsClipboard } from '@firestitch/clipboard';
|
|
6
|
-
import { SettingInterfaceType } from '../../enums';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@firestitch/message";
|
|
9
|
-
import * as i2 from "@firestitch/clipboard";
|
|
10
|
-
import * as i3 from "@firestitch/prompt";
|
|
11
|
-
import * as i4 from "@angular/
|
|
12
|
-
import * as i5 from "@angular/
|
|
13
|
-
import * as i6 from "@angular/material/
|
|
14
|
-
import * as i7 from "@angular/material/
|
|
15
|
-
import * as i8 from "@angular/material/
|
|
16
|
-
import * as i9 from "@angular/material/
|
|
17
|
-
import * as i10 from "@
|
|
18
|
-
import * as i11 from "@
|
|
19
|
-
import * as i12 from "@
|
|
20
|
-
import * as i13 from "@angular/
|
|
21
|
-
import * as i14 from "@
|
|
22
|
-
import * as i15 from "@
|
|
23
|
-
import * as i16 from "@
|
|
24
|
-
import * as i17 from "../../pipes/key-name-value.pipe";
|
|
25
|
-
export class SettingsComponent {
|
|
26
|
-
constructor(_message, _clipboard, _prompt, _cdRef) {
|
|
27
|
-
this._message = _message;
|
|
28
|
-
this._clipboard = _clipboard;
|
|
29
|
-
this._prompt = _prompt;
|
|
30
|
-
this._cdRef = _cdRef;
|
|
31
|
-
this.fileRemove = new EventEmitter();
|
|
32
|
-
this.fileSelect = new EventEmitter();
|
|
33
|
-
this.groupedSettings = [];
|
|
34
|
-
this.groups = [];
|
|
35
|
-
this.SettingInterfaceType = SettingInterfaceType;
|
|
36
|
-
}
|
|
37
|
-
ngOnInit() {
|
|
38
|
-
this.loadSettings({
|
|
39
|
-
visible: true,
|
|
40
|
-
})
|
|
41
|
-
.subscribe((settings) => {
|
|
42
|
-
settings = settings
|
|
43
|
-
.filter((setting) => {
|
|
44
|
-
return setting.interfaceType !== SettingInterfaceType.None;
|
|
45
|
-
})
|
|
46
|
-
.map((setting) => {
|
|
47
|
-
switch (setting.interfaceType) {
|
|
48
|
-
case SettingInterfaceType.Date:
|
|
49
|
-
case SettingInterfaceType.Time:
|
|
50
|
-
return {
|
|
51
|
-
...setting,
|
|
52
|
-
value: parse(setting.value),
|
|
53
|
-
};
|
|
54
|
-
case SettingInterfaceType.SelectMultiple:
|
|
55
|
-
return {
|
|
56
|
-
...setting,
|
|
57
|
-
value: Array.isArray(setting.value) ? setting.value : [],
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
return setting;
|
|
61
|
-
});
|
|
62
|
-
this.groupedSettings = settings.reduce((accum, item) => {
|
|
63
|
-
if (accum[item.group] === undefined) {
|
|
64
|
-
accum[item.group] = [];
|
|
65
|
-
}
|
|
66
|
-
accum[item.group].push(item);
|
|
67
|
-
return accum;
|
|
68
|
-
}, {});
|
|
69
|
-
this.groups = Object.keys(this.groupedSettings);
|
|
70
|
-
this._cdRef.markForCheck();
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
export(event, settings) {
|
|
74
|
-
event.stopPropagation();
|
|
75
|
-
const data = settings.map((setting) => {
|
|
76
|
-
return {
|
|
77
|
-
name: setting.name,
|
|
78
|
-
value: setting.value,
|
|
79
|
-
group: setting.group,
|
|
80
|
-
};
|
|
81
|
-
});
|
|
82
|
-
this._clipboard.copy(JSON.stringify(data));
|
|
83
|
-
this._message.success('Copied to clipboard');
|
|
84
|
-
}
|
|
85
|
-
import(event, group) {
|
|
86
|
-
event.stopPropagation();
|
|
87
|
-
this._prompt.input({
|
|
88
|
-
label: 'JSON Import',
|
|
89
|
-
title: 'Import Settings',
|
|
90
|
-
commitLabel: 'Import',
|
|
91
|
-
required: true,
|
|
92
|
-
}).subscribe((value) => {
|
|
93
|
-
if (value) {
|
|
94
|
-
try {
|
|
95
|
-
const settings = this.groupedSettings[group];
|
|
96
|
-
const data = JSON.parse(value);
|
|
97
|
-
data.forEach((item) => {
|
|
98
|
-
const setting = settings.find((s) => {
|
|
99
|
-
return item.name === s.name;
|
|
100
|
-
});
|
|
101
|
-
if (setting) {
|
|
102
|
-
Object.assign(setting, item);
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
this._cdRef.markForCheck();
|
|
106
|
-
}
|
|
107
|
-
catch (e) {
|
|
108
|
-
this._message.error(e);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
saveGroup(group) {
|
|
114
|
-
const settings = this.groupedSettings[group];
|
|
115
|
-
const values = settings.reduce((result, value) => {
|
|
116
|
-
return (result[value.name] = value.value, result);
|
|
117
|
-
}, {});
|
|
118
|
-
this.save(group, values)
|
|
119
|
-
.subscribe(() => {
|
|
120
|
-
this._message.success('Changes Saved');
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
SettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
125
|
-
SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
127
|
-
type: Component,
|
|
128
|
-
args: [{ selector: 'fs-system-settings', changeDetection: ChangeDetectionStrategy.OnPush, template: "\
|
|
129
|
-
}], ctorParameters: function () { return [{ type: i1.FsMessage }, { type: i2.FsClipboard }, { type: i3.FsPrompt }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { loadSettings: [{
|
|
130
|
-
type: Input
|
|
131
|
-
}], save: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}], fileRemove: [{
|
|
134
|
-
type: Output
|
|
135
|
-
}], fileSelect: [{
|
|
136
|
-
type: Output
|
|
137
|
-
}] } });
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3N5c3RlbS9jb21wb25lbnRzL3NldHRpbmdzL3NldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVbkQsTUFBTSxPQUFPLGlCQUFpQjtJQVk1QixZQUNVLFFBQW1CLEVBQ25CLFVBQXVCLEVBQ3ZCLE9BQWlCLEVBQ2pCLE1BQXlCO1FBSHpCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBYTtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFVO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBWGxCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztRQUV4RSxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixXQUFNLEdBQUcsRUFB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Q0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzhHQXBIVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixtTENqQjlCLDQwSkEySEE7MkZEMUdhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTtpTEFJL0IsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVXLFVBQVU7c0JBQTFCLE1BQU07Z0JBQ1UsVUFBVTtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xyXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RhdGUnO1xyXG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcclxuaW1wb3J0IHsgRnNDbGlwYm9hcmQgfSBmcm9tICdAZmlyZXN0aXRjaC9jbGlwYm9hcmQnO1xyXG5cclxuaW1wb3J0IHsgU2V0dGluZ0ludGVyZmFjZVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZzLXN5c3RlbS1zZXR0aW5ncycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5ncy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgbG9hZFNldHRpbmdzOiAocXVlcnkpID0+IE9ic2VydmFibGU8YW55W10+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzYXZlOiAoZGF0YTogYW55LCBncm91cDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgZmlsZVJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHVibGljIGZpbGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc2V0dGluZzogYW55LCBmaWxlOiBCbG9iIH0+KCk7XHJcblxyXG4gIHB1YmxpYyBncm91cGVkU2V0dGluZ3MgPSBbXTtcclxuICBwdWJsaWMgZ3JvdXBzID0gW107XHJcbiAgcHVibGljIFNldHRpbmdJbnRlcmZhY2VUeXBlID0gU2V0dGluZ0ludGVyZmFjZVR5cGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxyXG4gICAgcHJpdmF0ZSBfY2xpcGJvYXJkOiBGc0NsaXBib2FyZCxcclxuICAgIHByaXZhdGUgX3Byb21wdDogRnNQcm9tcHQsXHJcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkU2V0dGluZ3Moe1xyXG4gICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgfSlcclxuICAgICAgLnN1YnNjcmliZSgoc2V0dGluZ3MpID0+IHtcclxuICAgICAgICBzZXR0aW5ncyA9IHNldHRpbmdzXHJcbiAgICAgICAgICAuZmlsdGVyKChzZXR0aW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBzZXR0aW5nLmludGVyZmFjZVR5cGUgIT09IFNldHRpbmdJbnRlcmZhY2VUeXBlLk5vbmU7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLm1hcCgoc2V0dGluZykgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHNldHRpbmcuaW50ZXJmYWNlVHlwZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgU2V0dGluZ0ludGVyZmFjZVR5cGUuRGF0ZTpcclxuICAgICAgICAgICAgICBjYXNlIFNldHRpbmdJbnRlcmZhY2VUeXBlLlRpbWU6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAuLi5zZXR0aW5nLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyc2Uoc2V0dGluZy52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICBjYXNlIFNldHRpbmdJbnRlcmZhY2VUeXBlLlNlbGVjdE11bHRpcGxlOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgLi4uc2V0dGluZyxcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IEFycmF5LmlzQXJyYXkoc2V0dGluZy52YWx1ZSkgPyBzZXR0aW5nLnZhbHVlIDogW10sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gc2V0dGluZztcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmdyb3VwZWRTZXR0aW5ncyA9IHNldHRpbmdzLnJlZHVjZSgoYWNjdW0sIGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmKGFjY3VtW2l0ZW0uZ3JvdXBdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgYWNjdW1baXRlbS5ncm91cF0gPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGFjY3VtW2l0ZW0uZ3JvdXBdLnB1c2goaXRlbSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGFjY3VtO1xyXG4gICAgICAgIH0sIHt9KTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmdyb3VwcyA9IE9iamVjdC5rZXlzKHRoaXMuZ3JvdXBlZFNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwb3J0KGV2ZW50OiBVSUV2ZW50LCBzZXR0aW5ncyk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBjb25zdCBkYXRhID0gc2V0dGluZ3MubWFwKChzZXR0aW5nKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZTogc2V0dGluZy5uYW1lLFxyXG4gICAgICAgIHZhbHVlOiBzZXR0aW5nLnZhbHVlLFxyXG4gICAgICAgIGdyb3VwOiBzZXR0aW5nLmdyb3VwLFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9jbGlwYm9hcmQuY29weShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0NvcGllZCB0byBjbGlwYm9hcmQnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbXBvcnQoZXZlbnQ6IFVJRXZlbnQsIGdyb3VwKTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuX3Byb21wdC5pbnB1dCh7XHJcbiAgICAgICAgbGFiZWw6ICdKU09OIEltcG9ydCcsXHJcbiAgICAgICAgdGl0bGU6ICdJbXBvcnQgU2V0dGluZ3MnLFxyXG4gICAgICAgIGNvbW1pdExhYmVsOiAnSW1wb3J0JyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSkuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuZ3JvdXBlZFNldHRpbmdzW2dyb3VwXTtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UodmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IHNldHRpbmdzLmZpbmQoKHMpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWUgPT09IHMubmFtZTtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHNldHRpbmcpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2V0dGluZywgaXRlbSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlLmVycm9yKGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUdyb3VwKGdyb3VwKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuZ3JvdXBlZFNldHRpbmdzW2dyb3VwXTtcclxuICAgIGNvbnN0IHZhbHVlcyA9IHNldHRpbmdzLnJlZHVjZSgocmVzdWx0LCB2YWx1ZSkgPT4ge1xyXG4gICAgICByZXR1cm4gKHJlc3VsdFt2YWx1ZS5uYW1lXSA9IHZhbHVlLnZhbHVlLCByZXN1bHQpO1xyXG4gICAgfSwge30pO1xyXG5cclxuICAgIHRoaXMuc2F2ZShncm91cCwgdmFsdWVzKVxyXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnQ2hhbmdlcyBTYXZlZCcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIlxyXG48bWF0LWFjY29yZGlvbj5cclxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBoaWRlVG9nZ2xlICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHNcIj5cclxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj57e2dyb3VwIHx8ICdHZW5lcmFsJ319PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ0V4cG9ydCAnICsgKGdyb3VwIHx8ICdHZW5lcmFsJykgKyAnIFNldHRpbmdzJ1wiXHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImV4cG9ydCgkZXZlbnQsIGdyb3VwZWRTZXR0aW5nc1tncm91cF0pXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInSW1wb3J0ICcgKyAoZ3JvdXAgfHwgJ0dlbmVyYWwnKSArICcgU2V0dGluZ3MnXCJcclxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwiaW1wb3J0KCRldmVudCwgZ3JvdXApXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3VkX3VwbG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcbiAgICA8ZGl2IFxyXG4gICAgICAgIGhpZGVUb2dnbGUgXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IHNldHRpbmcgb2YgZ3JvdXBlZFNldHRpbmdzW2dyb3VwXVwiIFxyXG4gICAgICAgIGNsYXNzPVwic2V0dGluZ1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaGFzLWluc3RydWN0aW9uJzogISEgc2V0dGluZy5pbnN0cnVjdGlvbiB9XCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBcclxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aCBmb3JtLWZpZWxkLW11bHRpbGluZS1zdWJzY3JpcHRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzZXR0aW5nLmludGVyZmFjZVR5cGU9PT1TZXR0aW5nSW50ZXJmYWNlVHlwZS5JbnB1dEJveFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tzZXR0aW5nLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNldHRpbmcudmFsdWVcIlxyXG4gICAgICAgICAgW25hbWVdPVwiJ3NldHRpbmcnICsgc2V0dGluZy5pZFwiPlxyXG4gICAgICAgICAgPG1hdC1oaW50Pnt7c2V0dGluZy5pbnN0cnVjdGlvbn19PC9tYXQtaGludD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBcclxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aCBmb3JtLWZpZWxkLW11bHRpbGluZS1zdWJzY3JpcHRcIiBcclxuICAgICAgICAgICpuZ0lmPVwic2V0dGluZy5pbnRlcmZhY2VUeXBlPT09U2V0dGluZ0ludGVyZmFjZVR5cGUuVGV4dGFyZWFcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7c2V0dGluZy5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZXR0aW5nLnZhbHVlXCJcclxuICAgICAgICAgIFtuYW1lXT1cIidzZXR0aW5nJyArIHNldHRpbmcuaWRcIj5cclxuICAgICAgICA8L3RleHRhcmVhPlxyXG4gICAgICAgIDxtYXQtaGludD57e3NldHRpbmcuaW5zdHJ1Y3Rpb259fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgXHJcbiAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGggZm9ybS1maWVsZC1tdWx0aWxpbmUtc3Vic2NyaXB0XCIgXHJcbiAgICAgICAgICAqbmdJZj1cInNldHRpbmcuaW50ZXJmYWNlVHlwZT09PVNldHRpbmdJbnRlcmZhY2VUeXBlLlNlbGVjdCB8fCBzZXR0aW5nLmludGVyZmFjZVR5cGU9PT1TZXR0aW5nSW50ZXJmYWNlVHlwZS5TZWxlY3RNdWx0aXBsZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tzZXR0aW5nLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNldHRpbmcudmFsdWVcIlxyXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwic2V0dGluZy5pbnRlcmZhY2VUeXBlPT09U2V0dGluZ0ludGVyZmFjZVR5cGUuU2VsZWN0TXVsdGlwbGVcIlxyXG4gICAgICAgICAgICBbbmFtZV09XCInc2V0dGluZycgKyBzZXR0aW5nLmlkXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZXR0aW5nLnZhbHVlcyB8IGtleU5hbWVWYWx1ZVwiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+XHJcbiAgICAgICAgICAgIHt7aXRlbS5uYW1lfX1cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPG1hdC1oaW50Pnt7c2V0dGluZy5pbnN0cnVjdGlvbn19PC9tYXQtaGludD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBcclxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aCBmb3JtLWZpZWxkLW11bHRpbGluZS1zdWJzY3JpcHRcIiBcclxuICAgICAgICAgICpuZ0lmPVwic2V0dGluZy5pbnRlcmZhY2VUeXBlPT09U2V0dGluZ0ludGVyZmFjZVR5cGUuRGF0ZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tzZXR0aW5nLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmc0RhdGVQaWNrZXJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2V0dGluZy52YWx1ZVwiXHJcbiAgICAgICAgICBbbmFtZV09XCInc2V0dGluZycgKyBzZXR0aW5nLmlkXCI+XHJcbiAgICAgICAgICA8bWF0LWhpbnQ+e3tzZXR0aW5nLmluc3RydWN0aW9ufX08L21hdC1oaW50PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIFxyXG4gICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoIGZvcm0tZmllbGQtbXVsdGlsaW5lLXN1YnNjcmlwdFwiIFxyXG4gICAgICAgICAgKm5nSWY9XCJzZXR0aW5nLmludGVyZmFjZVR5cGU9PT1TZXR0aW5nSW50ZXJmYWNlVHlwZS5Db2xvclwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tzZXR0aW5nLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmc0NvbG9yUGlja2VyXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNldHRpbmcudmFsdWVcIlxyXG4gICAgICAgICAgW25hbWVdPVwiJ3NldHRpbmcnICsgc2V0dGluZy5pZFwiPlxyXG4gICAgICAgICAgPG1hdC1oaW50Pnt7c2V0dGluZy5pbnN0cnVjdGlvbn19PC9tYXQtaGludD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBcclxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aCBmb3JtLWZpZWxkLW11bHRpbGluZS1zdWJzY3JpcHRcIiBcclxuICAgICAgICAgICpuZ0lmPVwic2V0dGluZy5pbnRlcmZhY2VUeXBlPT09U2V0dGluZ0ludGVyZmFjZVR5cGUuVGltZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tzZXR0aW5nLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmc1RpbWVQaWNrZXJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2V0dGluZy52YWx1ZVwiXHJcbiAgICAgICAgICBbbmFtZV09XCInc2V0dGluZycgKyBzZXR0aW5nLmlkXCI+XHJcbiAgICAgICAgICA8bWF0LWhpbnQ+e3tzZXR0aW5nLmluc3RydWN0aW9ufX08L21hdC1oaW50PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgPGZzLWZpbGUtcGlja2VyXHJcbiAgICAgICAgICAqbmdJZj1cInNldHRpbmcuaW50ZXJmYWNlVHlwZT09PVNldHRpbmdJbnRlcmZhY2VUeXBlLkZpbGVcIlxyXG4gICAgICAgICAgW2FsbG93UmVtb3ZlXT1cInRydWVcIlxyXG4gICAgICAgICAgW2FsbG93RG93bmxvYWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAoc2VsZWN0KT1cImZpbGVTZWxlY3QuZW1pdCh7IHNldHRpbmc6IHNldHRpbmcsIGZpbGU6ICRldmVudC5maWxlIH0pXCJcclxuICAgICAgICAgIChyZW1vdmUpPVwiZmlsZVJlbW92ZS5lbWl0KHNldHRpbmcpXCJcclxuICAgICAgICAgIFt1cmxdPVwic2V0dGluZy52YWx1ZVwiPlxyXG4gICAgICAgIDxkaXYgZnNGaWxlTGFiZWw+e3tzZXR0aW5nLmxhYmVsfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGZzRmlsZUhpbnQ+e3tzZXR0aW5nLmluc3RydWN0aW9ufX08L2Rpdj5cclxuICAgICAgPC9mcy1maWxlLXBpY2tlcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlR3JvdXAoZ3JvdXApXCI+U2F2ZTwvYnV0dG9uPlxyXG5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblxyXG48L21hdC1hY2NvcmRpb24+XHJcbiJdfQ==
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { FsPrompt } from '@firestitch/prompt';
|
|
3
|
+
import { parse } from '@firestitch/date';
|
|
4
|
+
import { FsMessage } from '@firestitch/message';
|
|
5
|
+
import { FsClipboard } from '@firestitch/clipboard';
|
|
6
|
+
import { SettingInterfaceType } from '../../enums';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@firestitch/message";
|
|
9
|
+
import * as i2 from "@firestitch/clipboard";
|
|
10
|
+
import * as i3 from "@firestitch/prompt";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
12
|
+
import * as i5 from "@angular/forms";
|
|
13
|
+
import * as i6 from "@angular/material/button";
|
|
14
|
+
import * as i7 from "@angular/material/expansion";
|
|
15
|
+
import * as i8 from "@angular/material/tooltip";
|
|
16
|
+
import * as i9 from "@angular/material/icon";
|
|
17
|
+
import * as i10 from "@angular/material/form-field";
|
|
18
|
+
import * as i11 from "@angular/material/input";
|
|
19
|
+
import * as i12 from "@angular/material/select";
|
|
20
|
+
import * as i13 from "@angular/material/core";
|
|
21
|
+
import * as i14 from "@firestitch/file";
|
|
22
|
+
import * as i15 from "@firestitch/datepicker";
|
|
23
|
+
import * as i16 from "@firestitch/colorpicker";
|
|
24
|
+
import * as i17 from "../../pipes/key-name-value.pipe";
|
|
25
|
+
export class SettingsComponent {
|
|
26
|
+
constructor(_message, _clipboard, _prompt, _cdRef) {
|
|
27
|
+
this._message = _message;
|
|
28
|
+
this._clipboard = _clipboard;
|
|
29
|
+
this._prompt = _prompt;
|
|
30
|
+
this._cdRef = _cdRef;
|
|
31
|
+
this.fileRemove = new EventEmitter();
|
|
32
|
+
this.fileSelect = new EventEmitter();
|
|
33
|
+
this.groupedSettings = [];
|
|
34
|
+
this.groups = [];
|
|
35
|
+
this.SettingInterfaceType = SettingInterfaceType;
|
|
36
|
+
}
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
this.loadSettings({
|
|
39
|
+
visible: true,
|
|
40
|
+
})
|
|
41
|
+
.subscribe((settings) => {
|
|
42
|
+
settings = settings
|
|
43
|
+
.filter((setting) => {
|
|
44
|
+
return setting.interfaceType !== SettingInterfaceType.None;
|
|
45
|
+
})
|
|
46
|
+
.map((setting) => {
|
|
47
|
+
switch (setting.interfaceType) {
|
|
48
|
+
case SettingInterfaceType.Date:
|
|
49
|
+
case SettingInterfaceType.Time:
|
|
50
|
+
return {
|
|
51
|
+
...setting,
|
|
52
|
+
value: parse(setting.value),
|
|
53
|
+
};
|
|
54
|
+
case SettingInterfaceType.SelectMultiple:
|
|
55
|
+
return {
|
|
56
|
+
...setting,
|
|
57
|
+
value: Array.isArray(setting.value) ? setting.value : [],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return setting;
|
|
61
|
+
});
|
|
62
|
+
this.groupedSettings = settings.reduce((accum, item) => {
|
|
63
|
+
if (accum[item.group] === undefined) {
|
|
64
|
+
accum[item.group] = [];
|
|
65
|
+
}
|
|
66
|
+
accum[item.group].push(item);
|
|
67
|
+
return accum;
|
|
68
|
+
}, {});
|
|
69
|
+
this.groups = Object.keys(this.groupedSettings);
|
|
70
|
+
this._cdRef.markForCheck();
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
export(event, settings) {
|
|
74
|
+
event.stopPropagation();
|
|
75
|
+
const data = settings.map((setting) => {
|
|
76
|
+
return {
|
|
77
|
+
name: setting.name,
|
|
78
|
+
value: setting.value,
|
|
79
|
+
group: setting.group,
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
this._clipboard.copy(JSON.stringify(data));
|
|
83
|
+
this._message.success('Copied to clipboard');
|
|
84
|
+
}
|
|
85
|
+
import(event, group) {
|
|
86
|
+
event.stopPropagation();
|
|
87
|
+
this._prompt.input({
|
|
88
|
+
label: 'JSON Import',
|
|
89
|
+
title: 'Import Settings',
|
|
90
|
+
commitLabel: 'Import',
|
|
91
|
+
required: true,
|
|
92
|
+
}).subscribe((value) => {
|
|
93
|
+
if (value) {
|
|
94
|
+
try {
|
|
95
|
+
const settings = this.groupedSettings[group];
|
|
96
|
+
const data = JSON.parse(value);
|
|
97
|
+
data.forEach((item) => {
|
|
98
|
+
const setting = settings.find((s) => {
|
|
99
|
+
return item.name === s.name;
|
|
100
|
+
});
|
|
101
|
+
if (setting) {
|
|
102
|
+
Object.assign(setting, item);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
this._cdRef.markForCheck();
|
|
106
|
+
}
|
|
107
|
+
catch (e) {
|
|
108
|
+
this._message.error(e);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
saveGroup(group) {
|
|
114
|
+
const settings = this.groupedSettings[group];
|
|
115
|
+
const values = settings.reduce((result, value) => {
|
|
116
|
+
return (result[value.name] = value.value, result);
|
|
117
|
+
}, {});
|
|
118
|
+
this.save(group, values)
|
|
119
|
+
.subscribe(() => {
|
|
120
|
+
this._message.success('Changes Saved');
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
SettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SettingsComponent, deps: [{ token: i1.FsMessage }, { token: i2.FsClipboard }, { token: i3.FsPrompt }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
125
|
+
SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SettingsComponent, selector: "fs-system-settings", inputs: { loadSettings: "loadSettings", save: "save" }, outputs: { fileRemove: "fileRemove", fileSelect: "fileSelect" }, ngImport: i0, template: "\n<mat-accordion>\n <mat-expansion-panel hideToggle *ngFor=\"let group of groups\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <div class=\"title-row\">\n <div class=\"title\">{{group || 'General'}}</div>\n <div class=\"actions\">\n <button\n type=\"button\"\n [matTooltip]=\"'Export ' + (group || 'General') + ' Settings'\"\n mat-icon-button\n (click)=\"export($event, groupedSettings[group])\">\n <mat-icon>cloud_download</mat-icon>\n </button>\n <button\n type=\"button\"\n [matTooltip]=\"'Import ' + (group || 'General') + ' Settings'\"\n mat-icon-button\n (click)=\"import($event, group)\">\n <mat-icon>cloud_upload</mat-icon>\n </button>\n </div>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <div \n hideToggle \n *ngFor=\"let setting of groupedSettings[group]\" \n class=\"setting\"\n [ngClass]=\"{ 'has-instruction': !! setting.instruction }\">\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\"\n *ngIf=\"setting.interfaceType===SettingInterfaceType.InputBox\">\n <mat-label>{{setting.label}}</mat-label>\n <input\n matInput\n [(ngModel)]=\"setting.value\"\n [name]=\"'setting' + setting.id\">\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\" \n *ngIf=\"setting.interfaceType===SettingInterfaceType.Textarea\">\n <mat-label>{{setting.label}}</mat-label>\n <textarea\n matInput\n [(ngModel)]=\"setting.value\"\n [name]=\"'setting' + setting.id\">\n </textarea>\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\" \n *ngIf=\"setting.interfaceType===SettingInterfaceType.Select || setting.interfaceType===SettingInterfaceType.SelectMultiple\">\n <mat-label>{{setting.label}}</mat-label>\n <mat-select\n [(ngModel)]=\"setting.value\"\n [multiple]=\"setting.interfaceType===SettingInterfaceType.SelectMultiple\"\n [name]=\"'setting' + setting.id\">\n <mat-option *ngFor=\"let item of setting.values | keyNameValue\" [value]=\"item.value\">\n {{item.name}}\n </mat-option>\n </mat-select>\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\" \n *ngIf=\"setting.interfaceType===SettingInterfaceType.Date\">\n <mat-label>{{setting.label}}</mat-label>\n <input\n matInput\n fsDatePicker\n [(ngModel)]=\"setting.value\"\n [name]=\"'setting' + setting.id\">\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\" \n *ngIf=\"setting.interfaceType===SettingInterfaceType.Color\">\n <mat-label>{{setting.label}}</mat-label>\n <input\n matInput\n fsColorPicker\n [(ngModel)]=\"setting.value\"\n [name]=\"'setting' + setting.id\">\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\" \n *ngIf=\"setting.interfaceType===SettingInterfaceType.Time\">\n <mat-label>{{setting.label}}</mat-label>\n <input\n matInput\n fsTimePicker\n [(ngModel)]=\"setting.value\"\n [name]=\"'setting' + setting.id\">\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <fs-file-picker\n *ngIf=\"setting.interfaceType===SettingInterfaceType.File\"\n [allowRemove]=\"true\"\n [allowDownload]=\"true\"\n (select)=\"fileSelect.emit({ setting: setting, file: $event.file })\"\n (remove)=\"fileRemove.emit(setting)\"\n [url]=\"setting.value\">\n <div fsFileLabel>{{setting.label}}</div>\n <div fsFileHint>{{setting.instruction}}</div>\n </fs-file-picker>\n </div>\n\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"saveGroup(group)\">Save</button>\n\n </mat-expansion-panel>\n\n</mat-accordion>\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"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.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"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i13.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i14.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"] }, { kind: "directive", type: i14.FsFileLabelDirective, selector: "[fsFileLabel]" }, { kind: "component", type: i15.FsDatePickerComponent, selector: "[fsDatePicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "startOfDay", "view", "format", "minutes", "weekStartsOn"], outputs: ["change"] }, { kind: "component", type: i15.FsTimePickerComponent, selector: "[fsTimePicker]", inputs: ["view"] }, { kind: "component", type: i16.FsColorPickerComponent, selector: "[fsColorPicker]", inputs: ["showClear"] }, { kind: "pipe", type: i17.KeyNameValuePipe, name: "keyNameValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SettingsComponent, decorators: [{
|
|
127
|
+
type: Component,
|
|
128
|
+
args: [{ selector: 'fs-system-settings', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<mat-accordion>\n <mat-expansion-panel hideToggle *ngFor=\"let group of groups\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <div class=\"title-row\">\n <div class=\"title\">{{group || 'General'}}</div>\n <div class=\"actions\">\n <button\n type=\"button\"\n [matTooltip]=\"'Export ' + (group || 'General') + ' Settings'\"\n mat-icon-button\n (click)=\"export($event, groupedSettings[group])\">\n <mat-icon>cloud_download</mat-icon>\n </button>\n <button\n type=\"button\"\n [matTooltip]=\"'Import ' + (group || 'General') + ' Settings'\"\n mat-icon-button\n (click)=\"import($event, group)\">\n <mat-icon>cloud_upload</mat-icon>\n </button>\n </div>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <div \n hideToggle \n *ngFor=\"let setting of groupedSettings[group]\" \n class=\"setting\"\n [ngClass]=\"{ 'has-instruction': !! setting.instruction }\">\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\"\n *ngIf=\"setting.interfaceType===SettingInterfaceType.InputBox\">\n <mat-label>{{setting.label}}</mat-label>\n <input\n matInput\n [(ngModel)]=\"setting.value\"\n [name]=\"'setting' + setting.id\">\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\" \n *ngIf=\"setting.interfaceType===SettingInterfaceType.Textarea\">\n <mat-label>{{setting.label}}</mat-label>\n <textarea\n matInput\n [(ngModel)]=\"setting.value\"\n [name]=\"'setting' + setting.id\">\n </textarea>\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\" \n *ngIf=\"setting.interfaceType===SettingInterfaceType.Select || setting.interfaceType===SettingInterfaceType.SelectMultiple\">\n <mat-label>{{setting.label}}</mat-label>\n <mat-select\n [(ngModel)]=\"setting.value\"\n [multiple]=\"setting.interfaceType===SettingInterfaceType.SelectMultiple\"\n [name]=\"'setting' + setting.id\">\n <mat-option *ngFor=\"let item of setting.values | keyNameValue\" [value]=\"item.value\">\n {{item.name}}\n </mat-option>\n </mat-select>\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\" \n *ngIf=\"setting.interfaceType===SettingInterfaceType.Date\">\n <mat-label>{{setting.label}}</mat-label>\n <input\n matInput\n fsDatePicker\n [(ngModel)]=\"setting.value\"\n [name]=\"'setting' + setting.id\">\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\" \n *ngIf=\"setting.interfaceType===SettingInterfaceType.Color\">\n <mat-label>{{setting.label}}</mat-label>\n <input\n matInput\n fsColorPicker\n [(ngModel)]=\"setting.value\"\n [name]=\"'setting' + setting.id\">\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field \n class=\"full-width form-field-multiline-subscript\" \n *ngIf=\"setting.interfaceType===SettingInterfaceType.Time\">\n <mat-label>{{setting.label}}</mat-label>\n <input\n matInput\n fsTimePicker\n [(ngModel)]=\"setting.value\"\n [name]=\"'setting' + setting.id\">\n <mat-hint>{{setting.instruction}}</mat-hint>\n </mat-form-field>\n\n <fs-file-picker\n *ngIf=\"setting.interfaceType===SettingInterfaceType.File\"\n [allowRemove]=\"true\"\n [allowDownload]=\"true\"\n (select)=\"fileSelect.emit({ setting: setting, file: $event.file })\"\n (remove)=\"fileRemove.emit(setting)\"\n [url]=\"setting.value\">\n <div fsFileLabel>{{setting.label}}</div>\n <div fsFileHint>{{setting.instruction}}</div>\n </fs-file-picker>\n </div>\n\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"saveGroup(group)\">Save</button>\n\n </mat-expansion-panel>\n\n</mat-accordion>\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"] }]
|
|
129
|
+
}], ctorParameters: function () { return [{ type: i1.FsMessage }, { type: i2.FsClipboard }, { type: i3.FsPrompt }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { loadSettings: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], save: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], fileRemove: [{
|
|
134
|
+
type: Output
|
|
135
|
+
}], fileSelect: [{
|
|
136
|
+
type: Output
|
|
137
|
+
}] } });
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3N5c3RlbS9jb21wb25lbnRzL3NldHRpbmdzL3NldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVbkQsTUFBTSxPQUFPLGlCQUFpQjtJQVk1QixZQUNVLFFBQW1CLEVBQ25CLFVBQXVCLEVBQ3ZCLE9BQWlCLEVBQ2pCLE1BQXlCO1FBSHpCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBYTtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFVO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBWGxCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztRQUV4RSxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixXQUFNLEdBQUcsRUFB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Q0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzhHQXBIVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixtTENqQjlCLHNsSkEySEE7MkZEMUdhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTtpTEFJL0IsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVXLFVBQVU7c0JBQTFCLE1BQU07Z0JBQ1UsVUFBVTtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RhdGUnO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5pbXBvcnQgeyBGc0NsaXBib2FyZCB9IGZyb20gJ0BmaXJlc3RpdGNoL2NsaXBib2FyZCc7XG5cbmltcG9ydCB7IFNldHRpbmdJbnRlcmZhY2VUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLXN5c3RlbS1zZXR0aW5ncycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NldHRpbmdzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgcHVibGljIGxvYWRTZXR0aW5nczogKHF1ZXJ5KSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgQElucHV0KCkgcHVibGljIHNhdmU6IChkYXRhOiBhbnksIGdyb3VwOiBzdHJpbmcpID0+IE9ic2VydmFibGU8YW55PjtcblxuICBAT3V0cHV0KCkgcHVibGljIGZpbGVSZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZmlsZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzZXR0aW5nOiBhbnksIGZpbGU6IEJsb2IgfT4oKTtcblxuICBwdWJsaWMgZ3JvdXBlZFNldHRpbmdzID0gW107XG4gIHB1YmxpYyBncm91cHMgPSBbXTtcbiAgcHVibGljIFNldHRpbmdJbnRlcmZhY2VUeXBlID0gU2V0dGluZ0ludGVyZmFjZVR5cGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICAgIHByaXZhdGUgX2NsaXBib2FyZDogRnNDbGlwYm9hcmQsXG4gICAgcHJpdmF0ZSBfcHJvbXB0OiBGc1Byb21wdCxcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZFNldHRpbmdzKHtcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoKHNldHRpbmdzKSA9PiB7XG4gICAgICAgIHNldHRpbmdzID0gc2V0dGluZ3NcbiAgICAgICAgICAuZmlsdGVyKChzZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc2V0dGluZy5pbnRlcmZhY2VUeXBlICE9PSBTZXR0aW5nSW50ZXJmYWNlVHlwZS5Ob25lO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm1hcCgoc2V0dGluZykgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChzZXR0aW5nLmludGVyZmFjZVR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSBTZXR0aW5nSW50ZXJmYWNlVHlwZS5EYXRlOlxuICAgICAgICAgICAgICBjYXNlIFNldHRpbmdJbnRlcmZhY2VUeXBlLlRpbWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIC4uLnNldHRpbmcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyc2Uoc2V0dGluZy52YWx1ZSksXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBjYXNlIFNldHRpbmdJbnRlcmZhY2VUeXBlLlNlbGVjdE11bHRpcGxlOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAuLi5zZXR0aW5nLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IEFycmF5LmlzQXJyYXkoc2V0dGluZy52YWx1ZSkgPyBzZXR0aW5nLnZhbHVlIDogW10sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIHNldHRpbmc7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ncm91cGVkU2V0dGluZ3MgPSBzZXR0aW5ncy5yZWR1Y2UoKGFjY3VtLCBpdGVtKSA9PiB7XG4gICAgICAgICAgaWYoYWNjdW1baXRlbS5ncm91cF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWNjdW1baXRlbS5ncm91cF0gPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWNjdW1baXRlbS5ncm91cF0ucHVzaChpdGVtKTtcblxuICAgICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgICAgfSwge30pO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5ncm91cHMgPSBPYmplY3Qua2V5cyh0aGlzLmdyb3VwZWRTZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZXhwb3J0KGV2ZW50OiBVSUV2ZW50LCBzZXR0aW5ncyk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGRhdGEgPSBzZXR0aW5ncy5tYXAoKHNldHRpbmcpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHNldHRpbmcubmFtZSxcbiAgICAgICAgdmFsdWU6IHNldHRpbmcudmFsdWUsXG4gICAgICAgIGdyb3VwOiBzZXR0aW5nLmdyb3VwLFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fY2xpcGJvYXJkLmNvcHkoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnQ29waWVkIHRvIGNsaXBib2FyZCcpO1xuICB9XG5cbiAgcHVibGljIGltcG9ydChldmVudDogVUlFdmVudCwgZ3JvdXApOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLl9wcm9tcHQuaW5wdXQoe1xuICAgICAgICBsYWJlbDogJ0pTT04gSW1wb3J0JyxcbiAgICAgICAgdGl0bGU6ICdJbXBvcnQgU2V0dGluZ3MnLFxuICAgICAgICBjb21taXRMYWJlbDogJ0ltcG9ydCcsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgfSkuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuZ3JvdXBlZFNldHRpbmdzW2dyb3VwXTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHZhbHVlKTtcblxuICAgICAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNldHRpbmcgPSBzZXR0aW5ncy5maW5kKChzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZSA9PT0gcy5uYW1lO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoc2V0dGluZykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2V0dGluZywgaXRlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlLmVycm9yKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUdyb3VwKGdyb3VwKTogdm9pZCB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmdyb3VwZWRTZXR0aW5nc1tncm91cF07XG4gICAgY29uc3QgdmFsdWVzID0gc2V0dGluZ3MucmVkdWNlKChyZXN1bHQsIHZhbHVlKSA9PiB7XG4gICAgICByZXR1cm4gKHJlc3VsdFt2YWx1ZS5uYW1lXSA9IHZhbHVlLnZhbHVlLCByZXN1bHQpO1xuICAgIH0sIHt9KTtcblxuICAgIHRoaXMuc2F2ZShncm91cCwgdmFsdWVzKVxuICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdDaGFuZ2VzIFNhdmVkJyk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIlxuPG1hdC1hY2NvcmRpb24+XG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGhpZGVUb2dnbGUgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3Vwc1wiPlxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj57e2dyb3VwIHx8ICdHZW5lcmFsJ319PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidFeHBvcnQgJyArIChncm91cCB8fCAnR2VuZXJhbCcpICsgJyBTZXR0aW5ncydcIlxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImV4cG9ydCgkZXZlbnQsIGdyb3VwZWRTZXR0aW5nc1tncm91cF0pXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG91ZF9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidJbXBvcnQgJyArIChncm91cCB8fCAnR2VuZXJhbCcpICsgJyBTZXR0aW5ncydcIlxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImltcG9ydCgkZXZlbnQsIGdyb3VwKVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvdWRfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG5cbiAgICA8ZGl2IFxuICAgICAgICBoaWRlVG9nZ2xlIFxuICAgICAgICAqbmdGb3I9XCJsZXQgc2V0dGluZyBvZiBncm91cGVkU2V0dGluZ3NbZ3JvdXBdXCIgXG4gICAgICAgIGNsYXNzPVwic2V0dGluZ1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2hhcy1pbnN0cnVjdGlvbic6ICEhIHNldHRpbmcuaW5zdHJ1Y3Rpb24gfVwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIFxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aCBmb3JtLWZpZWxkLW11bHRpbGluZS1zdWJzY3JpcHRcIlxuICAgICAgICAgICpuZ0lmPVwic2V0dGluZy5pbnRlcmZhY2VUeXBlPT09U2V0dGluZ0ludGVyZmFjZVR5cGUuSW5wdXRCb3hcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e3NldHRpbmcubGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2V0dGluZy52YWx1ZVwiXG4gICAgICAgICAgW25hbWVdPVwiJ3NldHRpbmcnICsgc2V0dGluZy5pZFwiPlxuICAgICAgICAgIDxtYXQtaGludD57e3NldHRpbmcuaW5zdHJ1Y3Rpb259fTwvbWF0LWhpbnQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgXG4gICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoIGZvcm0tZmllbGQtbXVsdGlsaW5lLXN1YnNjcmlwdFwiIFxuICAgICAgICAgICpuZ0lmPVwic2V0dGluZy5pbnRlcmZhY2VUeXBlPT09U2V0dGluZ0ludGVyZmFjZVR5cGUuVGV4dGFyZWFcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e3NldHRpbmcubGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2V0dGluZy52YWx1ZVwiXG4gICAgICAgICAgW25hbWVdPVwiJ3NldHRpbmcnICsgc2V0dGluZy5pZFwiPlxuICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICA8bWF0LWhpbnQ+e3tzZXR0aW5nLmluc3RydWN0aW9ufX08L21hdC1oaW50PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIFxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aCBmb3JtLWZpZWxkLW11bHRpbGluZS1zdWJzY3JpcHRcIiBcbiAgICAgICAgICAqbmdJZj1cInNldHRpbmcuaW50ZXJmYWNlVHlwZT09PVNldHRpbmdJbnRlcmZhY2VUeXBlLlNlbGVjdCB8fCBzZXR0aW5nLmludGVyZmFjZVR5cGU9PT1TZXR0aW5nSW50ZXJmYWNlVHlwZS5TZWxlY3RNdWx0aXBsZVwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7c2V0dGluZy5sYWJlbH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNldHRpbmcudmFsdWVcIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cInNldHRpbmcuaW50ZXJmYWNlVHlwZT09PVNldHRpbmdJbnRlcmZhY2VUeXBlLlNlbGVjdE11bHRpcGxlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIidzZXR0aW5nJyArIHNldHRpbmcuaWRcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZXR0aW5nLnZhbHVlcyB8IGtleU5hbWVWYWx1ZVwiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+XG4gICAgICAgICAgICB7e2l0ZW0ubmFtZX19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDxtYXQtaGludD57e3NldHRpbmcuaW5zdHJ1Y3Rpb259fTwvbWF0LWhpbnQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgXG4gICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoIGZvcm0tZmllbGQtbXVsdGlsaW5lLXN1YnNjcmlwdFwiIFxuICAgICAgICAgICpuZ0lmPVwic2V0dGluZy5pbnRlcmZhY2VUeXBlPT09U2V0dGluZ0ludGVyZmFjZVR5cGUuRGF0ZVwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7c2V0dGluZy5sYWJlbH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgZnNEYXRlUGlja2VyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZXR0aW5nLnZhbHVlXCJcbiAgICAgICAgICBbbmFtZV09XCInc2V0dGluZycgKyBzZXR0aW5nLmlkXCI+XG4gICAgICAgICAgPG1hdC1oaW50Pnt7c2V0dGluZy5pbnN0cnVjdGlvbn19PC9tYXQtaGludD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBcbiAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGggZm9ybS1maWVsZC1tdWx0aWxpbmUtc3Vic2NyaXB0XCIgXG4gICAgICAgICAgKm5nSWY9XCJzZXR0aW5nLmludGVyZmFjZVR5cGU9PT1TZXR0aW5nSW50ZXJmYWNlVHlwZS5Db2xvclwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7c2V0dGluZy5sYWJlbH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgZnNDb2xvclBpY2tlclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2V0dGluZy52YWx1ZVwiXG4gICAgICAgICAgW25hbWVdPVwiJ3NldHRpbmcnICsgc2V0dGluZy5pZFwiPlxuICAgICAgICAgIDxtYXQtaGludD57e3NldHRpbmcuaW5zdHJ1Y3Rpb259fTwvbWF0LWhpbnQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgXG4gICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoIGZvcm0tZmllbGQtbXVsdGlsaW5lLXN1YnNjcmlwdFwiIFxuICAgICAgICAgICpuZ0lmPVwic2V0dGluZy5pbnRlcmZhY2VUeXBlPT09U2V0dGluZ0ludGVyZmFjZVR5cGUuVGltZVwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7c2V0dGluZy5sYWJlbH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgZnNUaW1lUGlja2VyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZXR0aW5nLnZhbHVlXCJcbiAgICAgICAgICBbbmFtZV09XCInc2V0dGluZycgKyBzZXR0aW5nLmlkXCI+XG4gICAgICAgICAgPG1hdC1oaW50Pnt7c2V0dGluZy5pbnN0cnVjdGlvbn19PC9tYXQtaGludD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxmcy1maWxlLXBpY2tlclxuICAgICAgICAgICpuZ0lmPVwic2V0dGluZy5pbnRlcmZhY2VUeXBlPT09U2V0dGluZ0ludGVyZmFjZVR5cGUuRmlsZVwiXG4gICAgICAgICAgW2FsbG93UmVtb3ZlXT1cInRydWVcIlxuICAgICAgICAgIFthbGxvd0Rvd25sb2FkXT1cInRydWVcIlxuICAgICAgICAgIChzZWxlY3QpPVwiZmlsZVNlbGVjdC5lbWl0KHsgc2V0dGluZzogc2V0dGluZywgZmlsZTogJGV2ZW50LmZpbGUgfSlcIlxuICAgICAgICAgIChyZW1vdmUpPVwiZmlsZVJlbW92ZS5lbWl0KHNldHRpbmcpXCJcbiAgICAgICAgICBbdXJsXT1cInNldHRpbmcudmFsdWVcIj5cbiAgICAgICAgPGRpdiBmc0ZpbGVMYWJlbD57e3NldHRpbmcubGFiZWx9fTwvZGl2PlxuICAgICAgICA8ZGl2IGZzRmlsZUhpbnQ+e3tzZXR0aW5nLmluc3RydWN0aW9ufX08L2Rpdj5cbiAgICAgIDwvZnMtZmlsZS1waWNrZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZUdyb3VwKGdyb3VwKVwiPlNhdmU8L2J1dHRvbj5cblxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbjwvbWF0LWFjY29yZGlvbj5cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './upgrade-logs.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './upgrade-logs.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvdXBncmFkZS1sb2dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3VwZ3JhZGUtbG9ncy5jb21wb25lbnQnO1xuIl19
|