tin-spa 2.0.0 → 2.1.1
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/README.md +2 -2
- package/esm2020/lib/classes/Classes.mjs +214 -0
- package/esm2020/lib/classes/TinCore.mjs +213 -0
- package/esm2020/lib/components/activity/activity.component.mjs +24 -0
- package/esm2020/lib/components/attach/attach.component.mjs +105 -0
- package/esm2020/lib/components/change-password/change-password.component.mjs +92 -0
- package/esm2020/lib/components/check/check.component.mjs +56 -0
- package/esm2020/lib/components/chips/chips.component.mjs +58 -0
- package/esm2020/lib/components/create-account/create-account.component.mjs +72 -0
- package/esm2020/lib/components/date/date.component.mjs +82 -0
- package/esm2020/lib/components/datetime/datetime.component.mjs +39 -0
- package/esm2020/lib/components/filter/filter.component.mjs +46 -0
- package/esm2020/lib/components/form/form.component.mjs +107 -0
- package/esm2020/lib/components/label/label.component.mjs +25 -0
- package/esm2020/lib/components/loader/loader.component.mjs +24 -0
- package/esm2020/lib/components/login/login.component.mjs +113 -0
- package/esm2020/lib/components/logs/logs.component.mjs +37 -0
- package/esm2020/lib/components/message/messageDialog.component.mjs +32 -0
- package/esm2020/lib/components/money/currency-input-mask.directive.mjs +185 -0
- package/esm2020/lib/components/money/currency-input-mask.module.mjs +28 -0
- package/esm2020/lib/components/money/money.component.mjs +108 -0
- package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +49 -0
- package/esm2020/lib/components/number/number.component.mjs +102 -0
- package/esm2020/lib/components/option/option.component.mjs +59 -0
- package/esm2020/lib/components/profile/profile.component.mjs +93 -0
- package/esm2020/lib/components/recover-account/recover-account.component.mjs +46 -0
- package/esm2020/lib/components/roles/addRoleDialog.component.mjs +61 -0
- package/esm2020/lib/components/roles/roles.component.mjs +91 -0
- package/esm2020/lib/components/select/select.component.mjs +71 -0
- package/esm2020/lib/components/settings/settings.component.mjs +63 -0
- package/esm2020/lib/components/signup/signup.component.mjs +50 -0
- package/esm2020/lib/components/steps/steps.component.mjs +90 -0
- package/esm2020/lib/components/table/detailsDialog.component.mjs +137 -0
- package/esm2020/lib/components/table/table.component.mjs +350 -0
- package/esm2020/lib/components/text/text.component.mjs +166 -0
- package/esm2020/lib/components/tiles/tiles.component.mjs +41 -0
- package/esm2020/lib/components/tin-spa.component.mjs +19 -0
- package/esm2020/lib/components/users/users.component.mjs +119 -0
- package/esm2020/lib/modules/admin/admin-routing.module.mjs +29 -0
- package/esm2020/lib/modules/admin/admin.module.mjs +26 -0
- package/esm2020/lib/modules/index/index-routing.module.mjs +27 -0
- package/esm2020/lib/modules/index/index.module.mjs +26 -0
- package/esm2020/lib/modules/spa-admin.module.mjs +73 -0
- package/esm2020/lib/modules/spa-index.module.mjs +52 -0
- package/esm2020/lib/modules/spa-mat.module.mjs +67 -0
- package/esm2020/lib/modules/spa-user.module.mjs +49 -0
- package/esm2020/lib/modules/user/user-routing.module.mjs +23 -0
- package/esm2020/lib/modules/user/user.module.mjs +26 -0
- package/esm2020/lib/pipes/camelToWords.pipe.mjs +23 -0
- package/esm2020/lib/services/auth.service.mjs +142 -0
- package/esm2020/lib/services/data.service.mjs +125 -0
- package/esm2020/lib/services/export.service.mjs +16 -0
- package/esm2020/lib/services/http.service.mjs +79 -0
- package/esm2020/lib/services/loader-interceptor.service.mjs +77 -0
- package/esm2020/lib/services/loader.service.mjs +17 -0
- package/esm2020/lib/services/log.service.mjs +77 -0
- package/esm2020/lib/services/message.service.mjs +52 -0
- package/esm2020/lib/services/storage.service.mjs +34 -0
- package/esm2020/lib/services/tin-spa.service.mjs +14 -0
- package/esm2020/lib/tin-spa.module.mjs +114 -0
- package/esm2020/public-api.mjs +62 -0
- package/esm2020/tin-spa.mjs +5 -0
- package/fesm2015/tin-spa.mjs +4026 -0
- package/fesm2015/tin-spa.mjs.map +1 -0
- package/fesm2020/tin-spa.mjs +4008 -0
- package/fesm2020/tin-spa.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/classes/Classes.d.ts +69 -62
- package/lib/classes/TinCore.d.ts +6 -0
- package/lib/components/activity/activity.component.d.ts +3 -0
- package/lib/components/attach/attach.component.d.ts +4 -1
- package/lib/components/change-password/change-password.component.d.ts +3 -0
- package/lib/components/check/check.component.d.ts +3 -0
- package/lib/components/chips/chips.component.d.ts +3 -0
- package/lib/components/create-account/create-account.component.d.ts +3 -0
- package/lib/components/date/date.component.d.ts +19 -7
- package/lib/components/datetime/datetime.component.d.ts +3 -0
- package/lib/components/filter/filter.component.d.ts +4 -0
- package/lib/components/form/form.component.d.ts +23 -0
- package/lib/components/label/label.component.d.ts +3 -0
- package/lib/components/loader/loader.component.d.ts +3 -0
- package/lib/components/login/login.component.d.ts +6 -0
- package/lib/components/logs/logs.component.d.ts +3 -0
- package/lib/components/message/messageDialog.component.d.ts +3 -0
- package/lib/components/money/currency-input-mask.directive.d.ts +41 -0
- package/lib/components/money/currency-input-mask.module.d.ts +9 -0
- package/lib/components/money/money.component.d.ts +19 -3
- package/lib/components/nav-menu/nav-menu.component.d.ts +3 -0
- package/lib/components/number/number.component.d.ts +31 -0
- package/lib/components/option/option.component.d.ts +3 -0
- package/lib/components/profile/profile.component.d.ts +6 -2
- package/lib/components/recover-account/recover-account.component.d.ts +3 -0
- package/lib/components/roles/addRoleDialog.component.d.ts +3 -0
- package/lib/components/roles/roles.component.d.ts +3 -0
- package/lib/components/select/select.component.d.ts +5 -1
- package/lib/components/settings/settings.component.d.ts +3 -0
- package/lib/components/signup/signup.component.d.ts +3 -0
- package/lib/components/steps/steps.component.d.ts +3 -0
- package/lib/components/table/detailsDialog.component.d.ts +26 -0
- package/lib/components/table/table.component.d.ts +57 -17
- package/lib/components/text/text.component.d.ts +14 -10
- package/lib/components/tiles/tiles.component.d.ts +3 -0
- package/lib/components/tin-spa.component.d.ts +4 -4
- package/lib/components/users/users.component.d.ts +4 -0
- package/lib/modules/admin/admin-routing.module.d.ts +7 -0
- package/lib/modules/admin/admin.module.d.ts +9 -0
- package/lib/modules/index/index-routing.module.d.ts +7 -0
- package/lib/modules/index/index.module.d.ts +9 -0
- package/lib/modules/spa-admin.module.d.ts +13 -0
- package/lib/modules/spa-index.module.d.ts +10 -0
- package/lib/modules/spa-mat.module.d.ts +31 -0
- package/lib/modules/spa-user.module.d.ts +9 -0
- package/lib/modules/user/user-routing.module.d.ts +7 -0
- package/lib/modules/user/user.module.d.ts +9 -0
- package/lib/pipes/camelToWords.pipe.d.ts +7 -0
- package/lib/services/auth.service.d.ts +3 -0
- package/lib/services/data.service.d.ts +5 -1
- package/lib/services/export.service.d.ts +3 -4
- package/lib/services/http.service.d.ts +3 -0
- package/lib/services/loader-interceptor.service.d.ts +3 -0
- package/lib/services/loader.service.d.ts +3 -0
- package/lib/services/log.service.d.ts +3 -0
- package/lib/services/message.service.d.ts +3 -0
- package/lib/services/storage.service.d.ts +3 -0
- package/lib/services/tin-spa.service.d.ts +3 -0
- package/lib/tin-spa.module.d.ts +30 -0
- package/package.json +24 -23
- package/public-api.d.ts +7 -2
- package/bundles/tin-spa.umd.js +0 -3672
- package/bundles/tin-spa.umd.js.map +0 -1
- package/bundles/tin-spa.umd.min.js +0 -16
- package/bundles/tin-spa.umd.min.js.map +0 -1
- package/esm2015/lib/classes/Classes.js +0 -254
- package/esm2015/lib/classes/TinCore.js +0 -139
- package/esm2015/lib/components/activity/activity.component.js +0 -26
- package/esm2015/lib/components/attach/attach.component.js +0 -107
- package/esm2015/lib/components/change-password/change-password.component.js +0 -102
- package/esm2015/lib/components/check/check.component.js +0 -63
- package/esm2015/lib/components/chips/chips.component.js +0 -66
- package/esm2015/lib/components/create-account/create-account.component.js +0 -78
- package/esm2015/lib/components/date/date.component.js +0 -45
- package/esm2015/lib/components/datetime/datetime.component.js +0 -44
- package/esm2015/lib/components/filter/filter.component.js +0 -40
- package/esm2015/lib/components/label/label.component.js +0 -29
- package/esm2015/lib/components/loader/loader.component.js +0 -29
- package/esm2015/lib/components/login/login.component.js +0 -114
- package/esm2015/lib/components/logs/logs.component.js +0 -39
- package/esm2015/lib/components/message/messageDialog.component.js +0 -31
- package/esm2015/lib/components/money/money.component.js +0 -52
- package/esm2015/lib/components/nav-menu/nav-menu.component.js +0 -51
- package/esm2015/lib/components/option/option.component.js +0 -63
- package/esm2015/lib/components/profile/profile.component.js +0 -98
- package/esm2015/lib/components/recover-account/recover-account.component.js +0 -53
- package/esm2015/lib/components/roles/addRoleDialog.component.js +0 -61
- package/esm2015/lib/components/roles/roles.component.js +0 -94
- package/esm2015/lib/components/select/select.component.js +0 -77
- package/esm2015/lib/components/settings/settings.component.js +0 -63
- package/esm2015/lib/components/signup/signup.component.js +0 -57
- package/esm2015/lib/components/steps/steps.component.js +0 -93
- package/esm2015/lib/components/table/table.component.js +0 -107
- package/esm2015/lib/components/text/text.component.js +0 -165
- package/esm2015/lib/components/tiles/tiles.component.js +0 -41
- package/esm2015/lib/components/timeout/timeout.component.js +0 -90
- package/esm2015/lib/components/tin-spa.component.js +0 -19
- package/esm2015/lib/components/users/users.component.js +0 -120
- package/esm2015/lib/dnd.directive.js +0 -51
- package/esm2015/lib/modules/spa-admin.module.js +0 -50
- package/esm2015/lib/modules/spa-index.module.js +0 -35
- package/esm2015/lib/modules/spa-mat.module.js +0 -53
- package/esm2015/lib/modules/spa-user.module.js +0 -33
- package/esm2015/lib/services/auth.service.js +0 -155
- package/esm2015/lib/services/data.service.js +0 -115
- package/esm2015/lib/services/export.service.js +0 -29
- package/esm2015/lib/services/http.service.js +0 -84
- package/esm2015/lib/services/loader-interceptor.service.js +0 -83
- package/esm2015/lib/services/loader.service.js +0 -17
- package/esm2015/lib/services/log.service.js +0 -76
- package/esm2015/lib/services/message.service.js +0 -58
- package/esm2015/lib/services/storage.service.js +0 -42
- package/esm2015/lib/services/tin-spa.service.js +0 -14
- package/esm2015/lib/tin-spa.module.js +0 -91
- package/esm2015/public-api.js +0 -56
- package/esm2015/tin-spa.js +0 -8
- package/esm5/lib/classes/Classes.js +0 -313
- package/esm5/lib/classes/TinCore.js +0 -166
- package/esm5/lib/components/activity/activity.component.js +0 -27
- package/esm5/lib/components/attach/attach.component.js +0 -119
- package/esm5/lib/components/change-password/change-password.component.js +0 -104
- package/esm5/lib/components/check/check.component.js +0 -64
- package/esm5/lib/components/chips/chips.component.js +0 -68
- package/esm5/lib/components/create-account/create-account.component.js +0 -80
- package/esm5/lib/components/date/date.component.js +0 -46
- package/esm5/lib/components/datetime/datetime.component.js +0 -45
- package/esm5/lib/components/filter/filter.component.js +0 -41
- package/esm5/lib/components/label/label.component.js +0 -30
- package/esm5/lib/components/loader/loader.component.js +0 -31
- package/esm5/lib/components/login/login.component.js +0 -117
- package/esm5/lib/components/logs/logs.component.js +0 -41
- package/esm5/lib/components/message/messageDialog.component.js +0 -32
- package/esm5/lib/components/money/money.component.js +0 -53
- package/esm5/lib/components/nav-menu/nav-menu.component.js +0 -53
- package/esm5/lib/components/option/option.component.js +0 -64
- package/esm5/lib/components/profile/profile.component.js +0 -102
- package/esm5/lib/components/recover-account/recover-account.component.js +0 -55
- package/esm5/lib/components/roles/addRoleDialog.component.js +0 -63
- package/esm5/lib/components/roles/roles.component.js +0 -100
- package/esm5/lib/components/select/select.component.js +0 -79
- package/esm5/lib/components/settings/settings.component.js +0 -66
- package/esm5/lib/components/signup/signup.component.js +0 -59
- package/esm5/lib/components/steps/steps.component.js +0 -105
- package/esm5/lib/components/table/table.component.js +0 -109
- package/esm5/lib/components/text/text.component.js +0 -168
- package/esm5/lib/components/tiles/tiles.component.js +0 -42
- package/esm5/lib/components/timeout/timeout.component.js +0 -92
- package/esm5/lib/components/tin-spa.component.js +0 -17
- package/esm5/lib/components/users/users.component.js +0 -126
- package/esm5/lib/dnd.directive.js +0 -52
- package/esm5/lib/modules/spa-admin.module.js +0 -53
- package/esm5/lib/modules/spa-index.module.js +0 -38
- package/esm5/lib/modules/spa-mat.module.js +0 -56
- package/esm5/lib/modules/spa-user.module.js +0 -36
- package/esm5/lib/services/auth.service.js +0 -157
- package/esm5/lib/services/data.service.js +0 -116
- package/esm5/lib/services/export.service.js +0 -30
- package/esm5/lib/services/http.service.js +0 -85
- package/esm5/lib/services/loader-interceptor.service.js +0 -85
- package/esm5/lib/services/loader.service.js +0 -18
- package/esm5/lib/services/log.service.js +0 -112
- package/esm5/lib/services/message.service.js +0 -59
- package/esm5/lib/services/storage.service.js +0 -74
- package/esm5/lib/services/tin-spa.service.js +0 -16
- package/esm5/lib/tin-spa.module.js +0 -94
- package/esm5/public-api.js +0 -56
- package/esm5/tin-spa.js +0 -8
- package/fesm2015/tin-spa.js +0 -3184
- package/fesm2015/tin-spa.js.map +0 -1
- package/fesm5/tin-spa.js +0 -3422
- package/fesm5/tin-spa.js.map +0 -1
- package/lib/components/timeout/timeout.component.d.ts +0 -21
- package/lib/dnd.directive.d.ts +0 -8
- package/tin-spa.d.ts +0 -7
- package/tin-spa.metadata.json +0 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/material/form-field";
|
|
5
|
+
import * as i3 from "@angular/material/select";
|
|
6
|
+
import * as i4 from "@angular/material/core";
|
|
7
|
+
export class SelectComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.width = "100%";
|
|
10
|
+
this.readonly = false;
|
|
11
|
+
this.readonlyMode = "";
|
|
12
|
+
this.hint = "";
|
|
13
|
+
this.placeholder = "";
|
|
14
|
+
this.multiple = false;
|
|
15
|
+
this.display = "";
|
|
16
|
+
this.optionValue = "";
|
|
17
|
+
this.optionDisplay = "";
|
|
18
|
+
this.optionDisplayExtra = "";
|
|
19
|
+
this.valueChange = new EventEmitter();
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
// this.displayValue = this.options.filter((m) => m.optionValue == this.value)
|
|
23
|
+
// this.displayValue = this.value
|
|
24
|
+
if (this.placeholder == "") {
|
|
25
|
+
this.placeholder = "Select " + this.display;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
ngOnChanges() {
|
|
29
|
+
if (this.readonlyMode != "" && this.options.length > 0) {
|
|
30
|
+
this.displayValue = this.options.filter((m) => m[`${this.optionValue}`] == this.value)[0][`${this.optionDisplay}`];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
changed() {
|
|
34
|
+
// let v;
|
|
35
|
+
// v = Core.isNumber(this.value) ? Number(this.value) : this.value;
|
|
36
|
+
this.valueChange.emit(this.value);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SelectComponent, selector: "spa-select", inputs: { width: "width", readonly: "readonly", readonlyMode: "readonlyMode", hint: "hint", placeholder: "placeholder", multiple: "multiple", display: "display", value: "value", options: "options", optionValue: "optionValue", optionDisplay: "optionDisplay", optionDisplayExtra: "optionDisplayExtra" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "\r\n<mat-form-field *ngIf=\"readonlyMode==''\" floatLabel=\"always\" [ngStyle]=\"{'width':width}\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [(value)]=\"value\" (selectionChange)=\"changed()\" [multiple]=\"multiple\" [disabled]=\"readonly\" [placeholder]=\"placeholder\" >\r\n <mat-option *ngFor=\"let row of options\" [value]=\"row[optionValue]\">\r\n {{row[optionDisplay]}} <label *ngIf=\"optionDisplayExtra!='' && row[optionDisplayExtra] && row[optionDisplayExtra] != ''\">({{row[optionDisplayExtra]}})</label>\r\n </mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"hint!=''\">{{hint}}</mat-hint>\r\n</mat-form-field>\r\n\r\n<!-- ReadOnlyModes original, text, label -->\r\n<!-- <spa-text *ngIf=\"readonlyMode=='text' && readonly\" [display]=\"display\" [(value)]=\"displayValue\" [readonly]=\"true\" ></spa-text> -->\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }] });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{ selector: 'spa-select', template: "\r\n<mat-form-field *ngIf=\"readonlyMode==''\" floatLabel=\"always\" [ngStyle]=\"{'width':width}\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [(value)]=\"value\" (selectionChange)=\"changed()\" [multiple]=\"multiple\" [disabled]=\"readonly\" [placeholder]=\"placeholder\" >\r\n <mat-option *ngFor=\"let row of options\" [value]=\"row[optionValue]\">\r\n {{row[optionDisplay]}} <label *ngIf=\"optionDisplayExtra!='' && row[optionDisplayExtra] && row[optionDisplayExtra] != ''\">({{row[optionDisplayExtra]}})</label>\r\n </mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"hint!=''\">{{hint}}</mat-hint>\r\n</mat-form-field>\r\n\r\n<!-- ReadOnlyModes original, text, label -->\r\n<!-- <spa-text *ngIf=\"readonlyMode=='text' && readonly\" [display]=\"display\" [(value)]=\"displayValue\" [readonly]=\"true\" ></spa-text> -->\r\n" }]
|
|
44
|
+
}], ctorParameters: function () { return []; }, propDecorators: { width: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], readonly: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], readonlyMode: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], hint: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], placeholder: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], multiple: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], display: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], value: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], options: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], optionValue: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], optionDisplay: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], optionDisplayExtra: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], valueChange: [{
|
|
69
|
+
type: Output
|
|
70
|
+
}] } });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRL0UsTUFBTSxPQUFPLGVBQWU7SUFFMUI7UUFvQlMsVUFBSyxHQUFHLE1BQU0sQ0FBQTtRQUNkLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUdiLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUV2QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFsQzNCLENBQUM7SUFFakIsUUFBUTtRQUNOLDhFQUE4RTtRQUM5RSxpQ0FBaUM7UUFDakMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFFVCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQTtTQUNuSDtJQUVILENBQUM7SUFzQkQsT0FBTztRQUNMLFNBQVM7UUFDVCxtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OzRHQTVDVSxlQUFlO2dHQUFmLGVBQWUsOFpDUjVCLDIxQkFhQTsyRkRMYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVk7MEVBMEJiLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RpbkNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5vcHRpb25zLmZpbHRlcigobSkgPT4gbS5vcHRpb25WYWx1ZSA9PSB0aGlzLnZhbHVlKVxyXG4gICAgLy8gdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLnZhbHVlXHJcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBcIlNlbGVjdCBcIiArIHRoaXMuZGlzcGxheTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG5cclxuICAgIGlmICh0aGlzLnJlYWRvbmx5TW9kZSAhPSBcIlwiICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKChtKSA9PiBtW2Ake3RoaXMub3B0aW9uVmFsdWV9YF0gPT0gdGhpcy52YWx1ZSlbMF1bYCR7dGhpcy5vcHRpb25EaXNwbGF5fWBdXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZGlzcGxheVZhbHVlO1xyXG5cclxuICBASW5wdXQoKSB3aWR0aCA9IFwiMTAwJVwiXHJcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSByZWFkb25seU1vZGUgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGhpbnQgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gXCJcIjtcclxuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBkaXNwbGF5ID0gXCJcIjtcclxuICBASW5wdXQoKSB2YWx1ZSA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogYW55O1xyXG4gIEBJbnB1dCgpIG9wdGlvblZhbHVlID0gXCJcIjtcclxuICBASW5wdXQoKSBvcHRpb25EaXNwbGF5ID0gXCJcIjtcclxuICBASW5wdXQoKSBvcHRpb25EaXNwbGF5RXh0cmEgPSBcIlwiO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuXHJcbiAgY2hhbmdlZCgpe1xyXG4gICAgLy8gbGV0IHY7XHJcbiAgICAvLyB2ID0gQ29yZS5pc051bWJlcih0aGlzLnZhbHVlKSA/IE51bWJlcih0aGlzLnZhbHVlKSA6IHRoaXMudmFsdWU7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIiwiXHJcbjxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInJlYWRvbmx5TW9kZT09JydcIiAgZmxvYXRMYWJlbD1cImFsd2F5c1wiICBbbmdTdHlsZV09XCJ7J3dpZHRoJzp3aWR0aH1cIj5cclxuICA8bWF0LWxhYmVsPnt7ZGlzcGxheX19PC9tYXQtbGFiZWw+XHJcbiAgPG1hdC1zZWxlY3QgWyh2YWx1ZSldPVwidmFsdWVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImNoYW5nZWQoKVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiID5cclxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByb3cgb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJyb3dbb3B0aW9uVmFsdWVdXCI+XHJcbiAgICAgIHt7cm93W29wdGlvbkRpc3BsYXldfX0gPGxhYmVsICpuZ0lmPVwib3B0aW9uRGlzcGxheUV4dHJhIT0nJyAmJiByb3dbb3B0aW9uRGlzcGxheUV4dHJhXSAmJiByb3dbb3B0aW9uRGlzcGxheUV4dHJhXSAhPSAnJ1wiPih7e3Jvd1tvcHRpb25EaXNwbGF5RXh0cmFdfX0pPC9sYWJlbD5cclxuICAgIDwvbWF0LW9wdGlvbj5cclxuICA8L21hdC1zZWxlY3Q+XHJcbiAgPG1hdC1oaW50ICpuZ0lmPVwiaGludCE9JydcIj57e2hpbnR9fTwvbWF0LWhpbnQ+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG48IS0tIFJlYWRPbmx5TW9kZXMgb3JpZ2luYWwsIHRleHQsIGxhYmVsIC0tPlxyXG48IS0tIDxzcGEtdGV4dCAqbmdJZj1cInJlYWRvbmx5TW9kZT09J3RleHQnICYmIHJlYWRvbmx5XCIgW2Rpc3BsYXldPVwiZGlzcGxheVwiIFsodmFsdWUpXT1cImRpc3BsYXlWYWx1ZVwiIFtyZWFkb25seV09XCJ0cnVlXCIgPjwvc3BhLXRleHQ+IC0tPlxyXG4iXX0=
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services/data.service";
|
|
4
|
+
import * as i2 from "../../services/message.service";
|
|
5
|
+
import * as i3 from "@angular/forms";
|
|
6
|
+
import * as i4 from "@angular/common";
|
|
7
|
+
import * as i5 from "@angular/material/button";
|
|
8
|
+
import * as i6 from "@angular/material/icon";
|
|
9
|
+
import * as i7 from "@angular/material/form-field";
|
|
10
|
+
import * as i8 from "@angular/material/input";
|
|
11
|
+
// import { ApiResponse } from 'tin-core';
|
|
12
|
+
export class SettingsComponent {
|
|
13
|
+
constructor(dataService, messageService) {
|
|
14
|
+
this.dataService = dataService;
|
|
15
|
+
this.messageService = messageService;
|
|
16
|
+
this._filterText = "";
|
|
17
|
+
this.isProcessing = false;
|
|
18
|
+
}
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
this.loadSettings();
|
|
21
|
+
}
|
|
22
|
+
applyFilter(filterValue) {
|
|
23
|
+
this.settings.filter = filterValue.trim().toLowerCase();
|
|
24
|
+
}
|
|
25
|
+
loadSettings() {
|
|
26
|
+
this.dataService.GetSetting("all", "").subscribe((apiResponse) => {
|
|
27
|
+
this.settings = apiResponse;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
updateSetting(setting) {
|
|
31
|
+
this.isProcessing = true;
|
|
32
|
+
this.dataService.UpdateSetting(setting, "edit").subscribe((apiResponse) => {
|
|
33
|
+
this.isProcessing = false;
|
|
34
|
+
if (apiResponse.success) {
|
|
35
|
+
this.messageService.toast(`Setting ${setting.sName} Updated`);
|
|
36
|
+
this.loadSettings();
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.messageService.toast("Error: " + apiResponse.message);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
;
|
|
44
|
+
addSetting() {
|
|
45
|
+
// const dialogRef = this.dialog.open(addRoleDialog, {
|
|
46
|
+
// width: "1100px",
|
|
47
|
+
// data: "",
|
|
48
|
+
// });
|
|
49
|
+
// dialogRef.afterClosed().subscribe((result) => {
|
|
50
|
+
// if (result == "success") {
|
|
51
|
+
// this.loadRoles();
|
|
52
|
+
// }
|
|
53
|
+
// });
|
|
54
|
+
this.messageService.toast("Feature not Available");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
SettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SettingsComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
58
|
+
SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SettingsComponent, selector: "spa-settings", ngImport: i0, template: "<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:150px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.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: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.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: "pipe", type: i4.DatePipe, name: "date" }] });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SettingsComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{ selector: 'spa-settings', template: "<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:150px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"] }]
|
|
62
|
+
}], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }]; } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQUlsRCwwQ0FBMEM7QUFPMUMsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUFvQixXQUEyQixFQUFVLGNBQThCO1FBQW5FLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQU12RixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQVJzRSxDQUFDO0lBRTVGLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQU1ELFdBQVcsQ0FBQyxXQUFtQjtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7UUFDOUIsQ0FBQyxDQUNGLENBQUM7SUFFSixDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQU87UUFFbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUNyRixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUUxQixJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUVyQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzVEO1FBRUgsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBQUEsQ0FBQztJQUVGLFVBQVU7UUFFUixzREFBc0Q7UUFDdEQscUJBQXFCO1FBQ3JCLGNBQWM7UUFDZCxNQUFNO1FBRU4sa0RBQWtEO1FBQ2xELCtCQUErQjtRQUMvQix3QkFBd0I7UUFDeEIsTUFBTTtRQUNOLE1BQU07UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBRXJELENBQUM7OzhHQXhEVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixvRENYOUIseWxDQWdDQTsyRkRyQmEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RpbkNvcmUnO1xyXG4vLyBpbXBvcnQgeyBBcGlSZXNwb25zZSB9IGZyb20gJ3Rpbi1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLXNldHRpbmdzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NldHRpbmdzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZFNldHRpbmdzKCk7XHJcbiAgfVxyXG5cclxuICBfZmlsdGVyVGV4dCA9IFwiXCI7XHJcbiAgc2V0dGluZ3M7XHJcbiAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gIGFwcGx5RmlsdGVyKGZpbHRlclZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0dGluZ3MuZmlsdGVyID0gZmlsdGVyVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBsb2FkU2V0dGluZ3MoKXtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuR2V0U2V0dGluZyhcImFsbFwiLCBcIlwiKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IGFwaVJlc3BvbnNlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNldHRpbmcoc2V0dGluZykge1xyXG5cclxuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuVXBkYXRlU2V0dGluZyhzZXR0aW5nLCBcImVkaXRcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChgU2V0dGluZyAke3NldHRpbmcuc05hbWV9IFVwZGF0ZWRgKTtcclxuICAgICAgICB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfTtcclxuXHJcbiAgYWRkU2V0dGluZygpIHtcclxuXHJcbiAgICAvLyBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKGFkZFJvbGVEaWFsb2csIHtcclxuICAgIC8vICAgd2lkdGg6IFwiMTEwMHB4XCIsXHJcbiAgICAvLyAgIGRhdGE6IFwiXCIsXHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICAvLyBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICBpZiAocmVzdWx0ID09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAvLyAgICAgdGhpcy5sb2FkUm9sZXMoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRmVhdHVyZSBub3QgQXZhaWxhYmxlXCIpO1xyXG5cclxuICB9XHJcblxyXG59XHJcbiIsIjxoND5TZXR0aW5nczwvaDQ+XHJcbjxocj5cclxuXHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDEwcHg7cGFkZGluZy1sZWZ0OjEwcHhcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgPCEtLSA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJhZGRTZXR0aW5nKClcIj5OZXcgU2V0dGluZzwvYnV0dG9uPiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImxvYWRTZXR0aW5ncygpXCI+UmVmcmVzaDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93IG10LTEgbWItMVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6MTBweFwiICpuZ0Zvcj1cImxldCBzZXR0aW5nIG9mIHNldHRpbmdzXCI+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDUwMHB4OyBmb250LXNpemU6IDE0cHg7XCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3tzZXR0aW5nLnNOYW1lfX08L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIFsobmdNb2RlbCldPVwic2V0dGluZy5zVmFsdWVcIiA+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxidXR0b24gIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidXBkYXRlU2V0dGluZyhzZXR0aW5nKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjE1MHB4O1wiPjxtYXQtaWNvbj5kb25lX2FsbDwvbWF0LWljb24+PC9idXR0b24+XHJcblxyXG4gICAgPG1hdC1sYWJlbCBzdHlsZT1cImZvbnQtc2l6ZTogc21hbGw7XCI+TGFzdCBVcGRhdGVkIGJ5IHt7c2V0dGluZy51cGRhdGVkQnl9fSBvbiB7e3NldHRpbmcudXBkYXRlZERhdGUgfCBkYXRlOiAnZGQgTU1NIHl5IEhIOm1tJ319PC9tYXQtbGFiZWw+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { User, Profile, Account } from '../../classes/Classes';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../services/http.service";
|
|
5
|
+
import * as i2 from "../../services/message.service";
|
|
6
|
+
import * as i3 from "../../services/data.service";
|
|
7
|
+
import * as i4 from "../../services/auth.service";
|
|
8
|
+
import * as i5 from "@angular/material/button";
|
|
9
|
+
import * as i6 from "../text/text.component";
|
|
10
|
+
export class SignupComponent {
|
|
11
|
+
constructor(httpService, messageService, dataService, authService) {
|
|
12
|
+
this.httpService = httpService;
|
|
13
|
+
this.messageService = messageService;
|
|
14
|
+
this.dataService = dataService;
|
|
15
|
+
this.authService = authService;
|
|
16
|
+
this.isProcessing = false;
|
|
17
|
+
this.user = new User();
|
|
18
|
+
this.profile = new Profile();
|
|
19
|
+
this.account = new Account();
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
this.account.user = this.user;
|
|
23
|
+
this.account.profile = this.profile;
|
|
24
|
+
}
|
|
25
|
+
create() {
|
|
26
|
+
this.profile.userName = this.user.userName;
|
|
27
|
+
this.isProcessing = true;
|
|
28
|
+
this.dataService.RegisterAccount(this.account).subscribe((apiResponse) => {
|
|
29
|
+
this.isProcessing = false;
|
|
30
|
+
if (apiResponse.message == "success") {
|
|
31
|
+
this.messageService.toast("Account Created");
|
|
32
|
+
this.user = new User();
|
|
33
|
+
this.profile = new Profile();
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.messageService.toast("Error: " + apiResponse.message);
|
|
37
|
+
}
|
|
38
|
+
}, (error) => {
|
|
39
|
+
this.isProcessing = false;
|
|
40
|
+
this.messageService.toast(this.httpService.Error(error));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
SignupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SignupComponent, deps: [{ token: i1.HttpService }, { token: i2.MessageService }, { token: i3.DataServiceLib }, { token: i4.AuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
+
SignupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SignupComponent, selector: "spa-signup", ngImport: i0, template: "\r\n<h4 style=\"padding-top: 30px;\">Signup</h4>\r\n\r\n<hr/>\r\nComplete the form below.\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <spa-text display=\"FirstName\" [(value)]=\"account.profile.firstName\" ></spa-text>\r\n\r\n <spa-text display=\"LastName\" [(value)]=\"account.profile.lastName\" ></spa-text>\r\n\r\n <spa-text display=\"Username\" [(value)]=\"account.profile.userName\"></spa-text>\r\n\r\n \r\n\r\n <spa-text display=\"Password\" [(value)]=\"account.profile.password\" format=\"password\" ></spa-text>\r\n\r\n <spa-text display=\"Confirm Password\" [(value)]=\"confirmPassword\" format=\"password\" ></spa-text>\r\n\r\n <div class=\"span-col-center\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Create</button>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n", styles: [""], dependencies: [{ kind: "component", type: i5.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: "component", type: i6.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "options", "optionValue", "required", "min", "max", "regex"], outputs: ["valueChange", "leave", "enterPress"] }] });
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SignupComponent, decorators: [{
|
|
47
|
+
type: Component,
|
|
48
|
+
args: [{ selector: 'spa-signup', template: "\r\n<h4 style=\"padding-top: 30px;\">Signup</h4>\r\n\r\n<hr/>\r\nComplete the form below.\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <spa-text display=\"FirstName\" [(value)]=\"account.profile.firstName\" ></spa-text>\r\n\r\n <spa-text display=\"LastName\" [(value)]=\"account.profile.lastName\" ></spa-text>\r\n\r\n <spa-text display=\"Username\" [(value)]=\"account.profile.userName\"></spa-text>\r\n\r\n \r\n\r\n <spa-text display=\"Password\" [(value)]=\"account.profile.password\" format=\"password\" ></spa-text>\r\n\r\n <spa-text display=\"Confirm Password\" [(value)]=\"confirmPassword\" format=\"password\" ></spa-text>\r\n\r\n <div class=\"span-col-center\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Create</button>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n" }]
|
|
49
|
+
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.MessageService }, { type: i3.DataServiceLib }, { type: i4.AuthService }]; } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbnVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3NpZ251cC9zaWdudXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc2lnbnVwL3NpZ251cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBS2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQVMvRCxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUFvQixXQUF3QixFQUFVLGNBQThCLEVBQVUsV0FBMkIsRUFBVSxXQUF3QjtRQUF2SSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBUTNKLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLFNBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXhCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBWndJLENBQUM7SUFFakssUUFBUTtRQUVOLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBV0gsTUFBTTtRQUVKLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRTNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQ3RELENBQUMsV0FBd0IsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBRTFCLElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBRTdDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO2FBRTlCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDNUQ7UUFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDOzs0R0E1Q1ksZUFBZTtnR0FBZixlQUFlLGtEQ2Q1QixtM0JBNEJBOzJGRGRhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbi8vIGltcG9ydCB7IEh0dHBTZXJ2aWNlLCBBcGlSZXNwb25zZSB9IGZyb20gJ3Rpbi1jb3JlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlciwgUHJvZmlsZSwgQWNjb3VudCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RpbkNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtc2lnbnVwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbnVwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWdudXAuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWdudXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy5hY2NvdW50LnVzZXIgPSB0aGlzLnVzZXI7XHJcbiAgICB0aGlzLmFjY291bnQucHJvZmlsZSA9IHRoaXMucHJvZmlsZTtcclxuICB9XHJcblxyXG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHVzZXIgPSBuZXcgVXNlcigpO1xyXG4gIHByb2ZpbGUgPSBuZXcgUHJvZmlsZSgpO1xyXG5cclxuICBhY2NvdW50ID0gbmV3IEFjY291bnQoKTtcclxuXHJcbiAgY29uZmlybVBhc3N3b3JkOiBzdHJpbmc7XHJcblxyXG5cclxuY3JlYXRlKCl7XHJcblxyXG4gIHRoaXMucHJvZmlsZS51c2VyTmFtZSA9IHRoaXMudXNlci51c2VyTmFtZTtcclxuXHJcbiAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5kYXRhU2VydmljZS5SZWdpc3RlckFjY291bnQodGhpcy5hY2NvdW50KS5zdWJzY3JpYmUoXHJcbiAgICAgIChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoYXBpUmVzcG9uc2UubWVzc2FnZSA9PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkFjY291bnQgQ3JlYXRlZFwiKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnVzZXIgPSBuZXcgVXNlcigpO1xyXG4gICAgICAgICAgdGhpcy5wcm9maWxlID0gbmV3IFByb2ZpbGUoKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFcnJvcjogXCIgKyBhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdCh0aGlzLmh0dHBTZXJ2aWNlLkVycm9yKGVycm9yKSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbn1cclxuXHJcblxyXG5cclxufVxyXG4iLCJcclxuPGg0IHN0eWxlPVwicGFkZGluZy10b3A6IDMwcHg7XCI+U2lnbnVwPC9oND5cclxuXHJcbjxoci8+XHJcbkNvbXBsZXRlIHRoZSBmb3JtIGJlbG93LlxyXG5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lciB0aW4tZ3JpZFwiICBzdHlsZT1cImZvbnQtc2l6ZToxNHB4O1wiPlxyXG5cclxuICAgIDxzcGEtdGV4dCBkaXNwbGF5PVwiRmlyc3ROYW1lXCIgWyh2YWx1ZSldPVwiYWNjb3VudC5wcm9maWxlLmZpcnN0TmFtZVwiID48L3NwYS10ZXh0PlxyXG5cclxuICAgIDxzcGEtdGV4dCBkaXNwbGF5PVwiTGFzdE5hbWVcIiBbKHZhbHVlKV09XCJhY2NvdW50LnByb2ZpbGUubGFzdE5hbWVcIiA+PC9zcGEtdGV4dD5cclxuXHJcbiAgICA8c3BhLXRleHQgZGlzcGxheT1cIlVzZXJuYW1lXCIgWyh2YWx1ZSldPVwiYWNjb3VudC5wcm9maWxlLnVzZXJOYW1lXCI+PC9zcGEtdGV4dD5cclxuXHJcbiAgICAmbmJzcDtcclxuXHJcbiAgICA8c3BhLXRleHQgZGlzcGxheT1cIlBhc3N3b3JkXCIgWyh2YWx1ZSldPVwiYWNjb3VudC5wcm9maWxlLnBhc3N3b3JkXCIgZm9ybWF0PVwicGFzc3dvcmRcIiA+PC9zcGEtdGV4dD5cclxuXHJcbiAgICA8c3BhLXRleHQgZGlzcGxheT1cIkNvbmZpcm0gUGFzc3dvcmRcIiBbKHZhbHVlKV09XCJjb25maXJtUGFzc3dvcmRcIiBmb3JtYXQ9XCJwYXNzd29yZFwiID48L3NwYS10ZXh0PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzcGFuLWNvbC1jZW50ZXJcIj5cclxuICAgICAgPGJ1dHRvbiAgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNyZWF0ZSgpXCIgIGNka0ZvY3VzSW5pdGlhbD5DcmVhdGU8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/material/stepper";
|
|
6
|
+
export class StepsComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.value = "";
|
|
9
|
+
}
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
}
|
|
12
|
+
ngAfterViewInit() {
|
|
13
|
+
}
|
|
14
|
+
ngOnChanges() {
|
|
15
|
+
this.pushSteps();
|
|
16
|
+
}
|
|
17
|
+
setStepper() {
|
|
18
|
+
if (this.value == "")
|
|
19
|
+
return;
|
|
20
|
+
this.stepper.selectedIndex = 0;
|
|
21
|
+
switch (this.value) {
|
|
22
|
+
case "Draft":
|
|
23
|
+
this.stepper.selectedIndex = 0;
|
|
24
|
+
break;
|
|
25
|
+
case "Head Approval":
|
|
26
|
+
this.pushStepper(1);
|
|
27
|
+
break;
|
|
28
|
+
case "CE Approval":
|
|
29
|
+
this.pushStepper(2);
|
|
30
|
+
break;
|
|
31
|
+
case "Booking":
|
|
32
|
+
this.pushStepper(3);
|
|
33
|
+
break;
|
|
34
|
+
case "BTA Approval":
|
|
35
|
+
this.pushStepper(4);
|
|
36
|
+
break;
|
|
37
|
+
case "Travel":
|
|
38
|
+
this.pushStepper(5);
|
|
39
|
+
break;
|
|
40
|
+
case "BTR Approval":
|
|
41
|
+
this.pushStepper(6);
|
|
42
|
+
break;
|
|
43
|
+
case "Travel Closure":
|
|
44
|
+
this.pushStepper(7);
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
pushStepper(count) {
|
|
49
|
+
for (let index = 0; index < count + 1; index++) {
|
|
50
|
+
// const element = array[index];
|
|
51
|
+
this.stepper.selectedIndex = index;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
pushSteps() {
|
|
55
|
+
if (this.steps.length == 0)
|
|
56
|
+
return;
|
|
57
|
+
if (this.value == "")
|
|
58
|
+
return;
|
|
59
|
+
this.stepper.selectedIndex = 0;
|
|
60
|
+
let i = 0;
|
|
61
|
+
for (let step of this.steps) {
|
|
62
|
+
if (step.name != this.value) {
|
|
63
|
+
this.stepper.selectedIndex = i;
|
|
64
|
+
i++;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.stepper.selectedIndex = i;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
StepsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StepsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
74
|
+
StepsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: StepsComponent, selector: "spa-steps", inputs: { value: "value", steps: "steps" }, providers: [{
|
|
75
|
+
provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }
|
|
76
|
+
}], viewQueries: [{ propertyName: "stepper", first: true, predicate: ["stepper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\r\n\r\n\r\n<!-- <mat-horizontal-stepper class=\"test\" labelPosition=\"bottom\" #stepper>\r\n <mat-step [editable]=\"false\" label=\"Draft\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Head Approval\" > </mat-step>\r\n <mat-step [editable]=\"false\" label=\"CE Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Booking\" state=\"booking\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTA Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Travel\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTR Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Closure\"> </mat-step>\r\n <ng-template matStepperIcon=\"booking\"> <mat-icon>forum</mat-icon> </ng-template>\r\n</mat-horizontal-stepper> -->\r\n\r\n<mat-horizontal-stepper class=\"transparent\" labelPosition=\"bottom\" #stepper>\r\n\r\n <mat-step *ngFor=\"let row of steps\"\r\n [editable]=\"false\" [label]=\"row.name\">\r\n </mat-step>\r\n\r\n <!-- <ng-template *ngFor=\"let row of steps\"\r\n [matStepperIcon]=\"row.name\"> <mat-icon>{{row.icon}}</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template matStepperIcon=\"booking\">\r\n <mat-icon>call_end</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template ngFor let-xb [ngForOf]=\"steps\" matStepperIcon=\"Booking\"> <mat-icon>forum</mat-icon>\r\n\r\n </ng-template> -->\r\n\r\n</mat-horizontal-stepper>\r\n", styles: [".transparent{background-color:#0000}:host ::ng-deep .mat-step-header{padding:5px!important}:host ::ng-deep .mat-stepper-horizontal-line{min-width:5px!important}:host ::ng-deep .mat-horizontal-content-container{padding:0!important}:host ::ng-deep .mat-horizontal-stepper-header{pointer-events:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "component", type: i2.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }] });
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StepsComponent, decorators: [{
|
|
78
|
+
type: Component,
|
|
79
|
+
args: [{ selector: 'spa-steps', providers: [{
|
|
80
|
+
provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }
|
|
81
|
+
}], template: "\r\n\r\n\r\n<!-- <mat-horizontal-stepper class=\"test\" labelPosition=\"bottom\" #stepper>\r\n <mat-step [editable]=\"false\" label=\"Draft\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Head Approval\" > </mat-step>\r\n <mat-step [editable]=\"false\" label=\"CE Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Booking\" state=\"booking\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTA Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Travel\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTR Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Closure\"> </mat-step>\r\n <ng-template matStepperIcon=\"booking\"> <mat-icon>forum</mat-icon> </ng-template>\r\n</mat-horizontal-stepper> -->\r\n\r\n<mat-horizontal-stepper class=\"transparent\" labelPosition=\"bottom\" #stepper>\r\n\r\n <mat-step *ngFor=\"let row of steps\"\r\n [editable]=\"false\" [label]=\"row.name\">\r\n </mat-step>\r\n\r\n <!-- <ng-template *ngFor=\"let row of steps\"\r\n [matStepperIcon]=\"row.name\"> <mat-icon>{{row.icon}}</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template matStepperIcon=\"booking\">\r\n <mat-icon>call_end</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template ngFor let-xb [ngForOf]=\"steps\" matStepperIcon=\"Booking\"> <mat-icon>forum</mat-icon>\r\n\r\n </ng-template> -->\r\n\r\n</mat-horizontal-stepper>\r\n", styles: [".transparent{background-color:#0000}:host ::ng-deep .mat-step-header{padding:5px!important}:host ::ng-deep .mat-stepper-horizontal-line{min-width:5px!important}:host ::ng-deep .mat-horizontal-content-container{padding:0!important}:host ::ng-deep .mat-horizontal-stepper-header{pointer-events:none!important}\n"] }]
|
|
82
|
+
}], ctorParameters: function () { return []; }, propDecorators: { stepper: [{
|
|
83
|
+
type: ViewChild,
|
|
84
|
+
args: ['stepper']
|
|
85
|
+
}], value: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], steps: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}] } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc3RlcHMvc3RlcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc3RlcHMvc3RlcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQVc5RCxNQUFNLE9BQU8sY0FBYztJQUV6QjtRQWVTLFVBQUssR0FBRyxFQUFFLENBQUM7SUFmSixDQUFDO0lBRWpCLFFBQVE7SUFFUixDQUFDO0lBRUQsZUFBZTtJQUVmLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFNRCxVQUFVO1FBRVIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFBRSxPQUFPO1FBRzdCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUUvQixRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFJbEIsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUVSLEtBQUssZUFBZTtnQkFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDbkIsTUFBTTtZQUVSLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDbkIsTUFBTTtZQUVSLEtBQUssU0FBUztnQkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNuQixNQUFNO1lBRVIsS0FBSyxjQUFjO2dCQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNuQixNQUFNO1lBRVIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ25CLE1BQU07WUFFUixLQUFLLGNBQWM7Z0JBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ25CLE1BQU07WUFFUixLQUFLLGdCQUFnQjtnQkFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDbkIsTUFBTTtTQUVUO0lBRUgsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBRXZCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzlDLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDcEM7SUFFSCxDQUFDO0lBRUQsU0FBUztRQUVQLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLE9BQU87UUFDbEMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFBRSxPQUFPO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUcvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFVixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFFM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBRTNCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztnQkFDL0IsQ0FBQyxFQUFFLENBQUM7YUFFTDtpQkFBTTtnQkFFTCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLE1BQU07YUFFUDtTQUNGO0lBRUgsQ0FBQzs7MkdBcEdVLGNBQWM7K0ZBQWQsY0FBYyxnRkFKZCxDQUFDO1lBQ1YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRTtTQUNsRixDQUFDLG1KQ1hKLDg1Q0FrQ0E7MkZEckJhLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsV0FBVyxhQUdWLENBQUM7NEJBQ1YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRTt5QkFDbEYsQ0FBQzswRUFrQm9CLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDWCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U3RlcHBlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXInO1xyXG5pbXBvcnQgeyBTVEVQUEVSX0dMT0JBTF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xyXG5pbXBvcnQgeyBTdGVwIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLXN0ZXBzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N0ZXBzLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBTVEVQUEVSX0dMT0JBTF9PUFRJT05TLCB1c2VWYWx1ZTogeyBkaXNwbGF5RGVmYXVsdEluZGljYXRvclR5cGU6IGZhbHNlIH1cclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RlcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLnB1c2hTdGVwcygpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnc3RlcHBlcicpIHN0ZXBwZXI6IE1hdFN0ZXBwZXI7XHJcbiAgQElucHV0KCkgdmFsdWUgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHN0ZXBzOiBTdGVwW107XHJcblxyXG4gIHNldFN0ZXBwZXIoKSB7XHJcblxyXG4gICAgaWYgKHRoaXMudmFsdWUgPT0gXCJcIikgcmV0dXJuO1xyXG5cclxuXHJcbiAgICB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9IDA7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLnZhbHVlKSB7XHJcblxyXG5cclxuXHJcbiAgICAgIGNhc2UgXCJEcmFmdFwiOlxyXG4gICAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gMDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJIZWFkIEFwcHJvdmFsXCI6XHJcbiAgICAgICAgdGhpcy5wdXNoU3RlcHBlcigxKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcIkNFIEFwcHJvdmFsXCI6XHJcbiAgICAgICAgdGhpcy5wdXNoU3RlcHBlcigyKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcIkJvb2tpbmdcIjpcclxuICAgICAgICB0aGlzLnB1c2hTdGVwcGVyKDMpXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwiQlRBIEFwcHJvdmFsXCI6XHJcbiAgICAgICAgdGhpcy5wdXNoU3RlcHBlcig0KVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcIlRyYXZlbFwiOlxyXG4gICAgICAgIHRoaXMucHVzaFN0ZXBwZXIoNSlcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJCVFIgQXBwcm92YWxcIjpcclxuICAgICAgICB0aGlzLnB1c2hTdGVwcGVyKDYpXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwiVHJhdmVsIENsb3N1cmVcIjpcclxuICAgICAgICB0aGlzLnB1c2hTdGVwcGVyKDcpXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHB1c2hTdGVwcGVyKGNvdW50OiBudW1iZXIpIHtcclxuXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQgKyAxOyBpbmRleCsrKSB7XHJcbiAgICAgIC8vIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XHJcbiAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVzaFN0ZXBzKCl7XHJcblxyXG4gICAgaWYodGhpcy5zdGVwcy5sZW5ndGggPT0gMCkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMudmFsdWUgPT0gXCJcIikgcmV0dXJuO1xyXG4gICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cclxuXHJcbiAgICBsZXQgaSA9IDA7XHJcblxyXG4gICAgZm9yIChsZXQgc3RlcCBvZiB0aGlzLnN0ZXBzKSB7XHJcblxyXG4gICAgICBpZiAoc3RlcC5uYW1lICE9IHRoaXMudmFsdWUpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSBpO1xyXG4gICAgICAgIGkrKztcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gaTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCJcclxuXHJcblxyXG48IS0tIDxtYXQtaG9yaXpvbnRhbC1zdGVwcGVyIGNsYXNzPVwidGVzdFwiIGxhYmVsUG9zaXRpb249XCJib3R0b21cIiAgI3N0ZXBwZXI+XHJcbiAgPG1hdC1zdGVwIFtlZGl0YWJsZV09XCJmYWxzZVwiIGxhYmVsPVwiRHJhZnRcIj4gPC9tYXQtc3RlcD5cclxuICA8bWF0LXN0ZXAgW2VkaXRhYmxlXT1cImZhbHNlXCIgbGFiZWw9XCJIZWFkIEFwcHJvdmFsXCIgPiA8L21hdC1zdGVwPlxyXG4gIDxtYXQtc3RlcCBbZWRpdGFibGVdPVwiZmFsc2VcIiBsYWJlbD1cIkNFIEFwcHJvdmFsXCI+IDwvbWF0LXN0ZXA+XHJcbiAgPG1hdC1zdGVwIFtlZGl0YWJsZV09XCJmYWxzZVwiIGxhYmVsPVwiQm9va2luZ1wiIHN0YXRlPVwiYm9va2luZ1wiPiA8L21hdC1zdGVwPlxyXG4gIDxtYXQtc3RlcCBbZWRpdGFibGVdPVwiZmFsc2VcIiBsYWJlbD1cIkJUQSBBcHByb3ZhbFwiPiA8L21hdC1zdGVwPlxyXG4gIDxtYXQtc3RlcCBbZWRpdGFibGVdPVwiZmFsc2VcIiBsYWJlbD1cIlRyYXZlbFwiPiA8L21hdC1zdGVwPlxyXG4gIDxtYXQtc3RlcCBbZWRpdGFibGVdPVwiZmFsc2VcIiBsYWJlbD1cIkJUUiBBcHByb3ZhbFwiPiA8L21hdC1zdGVwPlxyXG4gIDxtYXQtc3RlcCBbZWRpdGFibGVdPVwiZmFsc2VcIiBsYWJlbD1cIkNsb3N1cmVcIj4gPC9tYXQtc3RlcD5cclxuICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJib29raW5nXCI+IDxtYXQtaWNvbj5mb3J1bTwvbWF0LWljb24+IDwvbmctdGVtcGxhdGU+XHJcbjwvbWF0LWhvcml6b250YWwtc3RlcHBlcj4gLS0+XHJcblxyXG48bWF0LWhvcml6b250YWwtc3RlcHBlciBjbGFzcz1cInRyYW5zcGFyZW50XCIgbGFiZWxQb3NpdGlvbj1cImJvdHRvbVwiICAgI3N0ZXBwZXI+XHJcblxyXG4gIDxtYXQtc3RlcCAqbmdGb3I9XCJsZXQgcm93IG9mIHN0ZXBzXCJcclxuICAgIFtlZGl0YWJsZV09XCJmYWxzZVwiICBbbGFiZWxdPVwicm93Lm5hbWVcIj5cclxuICA8L21hdC1zdGVwPlxyXG5cclxuICA8IS0tIDxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQgcm93IG9mIHN0ZXBzXCJcclxuICAgIFttYXRTdGVwcGVySWNvbl09XCJyb3cubmFtZVwiPiA8bWF0LWljb24+e3tyb3cuaWNvbn19PC9tYXQtaWNvbj5cclxuICA8L25nLXRlbXBsYXRlPiAtLT5cclxuXHJcbiAgPCEtLSA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJib29raW5nXCI+XHJcbiAgICA8bWF0LWljb24+Y2FsbF9lbmQ8L21hdC1pY29uPlxyXG4gIDwvbmctdGVtcGxhdGU+IC0tPlxyXG5cclxuICA8IS0tIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQteGIgW25nRm9yT2ZdPVwic3RlcHNcIiBtYXRTdGVwcGVySWNvbj1cIkJvb2tpbmdcIj4gPG1hdC1pY29uPmZvcnVtPC9tYXQtaWNvbj5cclxuXHJcbiAgPC9uZy10ZW1wbGF0ZT4gLS0+XHJcblxyXG48L21hdC1ob3Jpem9udGFsLXN0ZXBwZXI+XHJcbiJdfQ==
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import { Core } from '../../classes/TinCore';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../services/data.service";
|
|
6
|
+
import * as i2 from "../../services/message.service";
|
|
7
|
+
import * as i3 from "@angular/material/dialog";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "@angular/material/button";
|
|
10
|
+
import * as i6 from "@angular/material/icon";
|
|
11
|
+
import * as i7 from "../form/form.component";
|
|
12
|
+
export class detailsDialog {
|
|
13
|
+
constructor(dataService, messageService, dialogRef, data) {
|
|
14
|
+
this.dataService = dataService;
|
|
15
|
+
this.messageService = messageService;
|
|
16
|
+
this.dialogRef = dialogRef;
|
|
17
|
+
this.data = data;
|
|
18
|
+
this.smallScreen = false;
|
|
19
|
+
this.isLoadComplete = false;
|
|
20
|
+
this.isProcessing = false;
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
this.tableConfig = this.data.config;
|
|
24
|
+
this.formConfig = this.tableConfig.formConfig;
|
|
25
|
+
this.formConfig.mode = this.data.mode;
|
|
26
|
+
this.smallScreen = this.data.smallScreen;
|
|
27
|
+
if (this.formConfig.mode == "create") {
|
|
28
|
+
this.details = Core.generateObject(this.formConfig.fields);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.details = this.data.details;
|
|
32
|
+
}
|
|
33
|
+
this.isLoadComplete = true;
|
|
34
|
+
}
|
|
35
|
+
setMode(newMode) {
|
|
36
|
+
this.formConfig.mode = newMode;
|
|
37
|
+
}
|
|
38
|
+
create() {
|
|
39
|
+
console.log(this.details);
|
|
40
|
+
//validation
|
|
41
|
+
let resp = Core.validateObject(this.formConfig.fields, this.details);
|
|
42
|
+
if (resp != '') {
|
|
43
|
+
this.messageService.toast(resp);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
let b = this.tableConfig.buttons.find(x => x.name == "create");
|
|
47
|
+
if (!b || !b.action) {
|
|
48
|
+
this.dialogRef.close({ message: 'emit', data: this.details });
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.isProcessing = true;
|
|
52
|
+
this.dataService.CallApi(b.action, this.details).subscribe((apiResponse) => {
|
|
53
|
+
this.isProcessing = false;
|
|
54
|
+
if (apiResponse.success) {
|
|
55
|
+
if (b.action.successMessage) {
|
|
56
|
+
this.messageService.toast(b.action.successMessage);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this.messageService.toast("Created");
|
|
60
|
+
}
|
|
61
|
+
this.dialogRef.close({ message: 'success', data: this.details });
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.messageService.toast("Error: " + apiResponse);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
edit() {
|
|
69
|
+
console.log("Edit");
|
|
70
|
+
//validation
|
|
71
|
+
let resp = Core.validateObject(this.formConfig.fields, this.details);
|
|
72
|
+
if (resp != '') {
|
|
73
|
+
this.messageService.toast(resp);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
let b = this.tableConfig.buttons.find(x => x.name == "edit");
|
|
77
|
+
if (!b || !b.action) {
|
|
78
|
+
this.dialogRef.close({ message: 'emit', data: this.details });
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
this.isProcessing = true;
|
|
82
|
+
this.dataService.CallApi(b.action, this.details).subscribe((apiResponse) => {
|
|
83
|
+
this.isProcessing = false;
|
|
84
|
+
if (apiResponse.success) {
|
|
85
|
+
if (b.action.successMessage) {
|
|
86
|
+
this.messageService.toast(b.action.successMessage);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.messageService.toast("Updated");
|
|
90
|
+
}
|
|
91
|
+
this.dialogRef.close({ message: 'success', data: this.details });
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.messageService.toast("Error: " + apiResponse);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
delete() {
|
|
99
|
+
this.messageService.confirm(`DELETE ?`).subscribe((result) => {
|
|
100
|
+
if (result == "yes") {
|
|
101
|
+
console.log("Delete");
|
|
102
|
+
let b = this.tableConfig.buttons.find(x => x.name == "delete");
|
|
103
|
+
if (!b) {
|
|
104
|
+
this.dialogRef.close({ message: 'success', data: this.details });
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
this.isProcessing = true;
|
|
108
|
+
this.dataService.CallApi(b.action, this.details).subscribe((apiResponse) => {
|
|
109
|
+
this.isProcessing = false;
|
|
110
|
+
if (apiResponse.success) {
|
|
111
|
+
if (b.action.successMessage) {
|
|
112
|
+
this.messageService.toast(b.action.successMessage);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
this.messageService.toast("Deleted");
|
|
116
|
+
}
|
|
117
|
+
this.dialogRef.close({ message: 'success', data: this.details });
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.messageService.toast("Error: " + apiResponse);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
detailsDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: detailsDialog, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }, { token: i3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
detailsDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: detailsDialog, selector: "app-viewModel", ngImport: i0, template: "\r\n<div class=\"row d-flex align-items-center mt-0\">\r\n\r\n <div class=\"col\">\r\n <h2 mat-dialog-title>{{formConfig.mode | titlecase}}</h2>\r\n </div>\r\n\r\n <div *ngIf=\"smallScreen && formConfig.mode=='view'\" class=\"col d-flex justify-content-end\">\r\n <button mat-mini-fab color=\"primary\" (click)=\"setMode('edit')\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <div *ngIf=\"smallScreen && formConfig.mode=='edit'\" class=\"col d-flex justify-content-end\">\r\n <button mat-icon-button (click)=\"setMode('view')\"><mat-icon>done</mat-icon></button>\r\n </div>\r\n\r\n</div>\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n\r\n<spa-form [data]=\"details\" [config]=\"formConfig\"></spa-form>\r\n\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<div>\r\n<button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='create'\" (click)=\"create()\" cdkFocusInitial>Submit</button>\r\n<button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='edit'\" (click)=\"edit()\" cdkFocusInitial>Submit</button>\r\n<button mat-stroked-button color=\"primary\" mat-dialog-close>Cancel</button>\r\n</div>\r\n<div class=\"col d-flex justify-content-end\">\r\n<button mat-icon-button [disabled]=\"isProcessing\" style=\"color: red;\" (click)=\"delete()\" *ngIf=\"formConfig.mode!='create'\"><mat-icon>delete</mat-icon></button>\r\n</div>\r\n\r\n\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n", styles: [".top{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:center}.mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.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: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i7.FormComponent, selector: "spa-form", inputs: ["data", "config"], outputs: ["buttonClick"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }] });
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: detailsDialog, decorators: [{
|
|
130
|
+
type: Component,
|
|
131
|
+
args: [{ selector: 'app-viewModel', template: "\r\n<div class=\"row d-flex align-items-center mt-0\">\r\n\r\n <div class=\"col\">\r\n <h2 mat-dialog-title>{{formConfig.mode | titlecase}}</h2>\r\n </div>\r\n\r\n <div *ngIf=\"smallScreen && formConfig.mode=='view'\" class=\"col d-flex justify-content-end\">\r\n <button mat-mini-fab color=\"primary\" (click)=\"setMode('edit')\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <div *ngIf=\"smallScreen && formConfig.mode=='edit'\" class=\"col d-flex justify-content-end\">\r\n <button mat-icon-button (click)=\"setMode('view')\"><mat-icon>done</mat-icon></button>\r\n </div>\r\n\r\n</div>\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n\r\n<spa-form [data]=\"details\" [config]=\"formConfig\"></spa-form>\r\n\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<div>\r\n<button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='create'\" (click)=\"create()\" cdkFocusInitial>Submit</button>\r\n<button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='edit'\" (click)=\"edit()\" cdkFocusInitial>Submit</button>\r\n<button mat-stroked-button color=\"primary\" mat-dialog-close>Cancel</button>\r\n</div>\r\n<div class=\"col d-flex justify-content-end\">\r\n<button mat-icon-button [disabled]=\"isProcessing\" style=\"color: red;\" (click)=\"delete()\" *ngIf=\"formConfig.mode!='create'\"><mat-icon>delete</mat-icon></button>\r\n</div>\r\n\r\n\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n", styles: [".top{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:center}.mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"] }]
|
|
132
|
+
}], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }, { type: i3.MatDialogRef }, { type: undefined, decorators: [{
|
|
133
|
+
type: Inject,
|
|
134
|
+
args: [MAT_DIALOG_DATA]
|
|
135
|
+
}] }]; } });
|
|
136
|
+
;
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsc0RpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9kZXRhaWxzRGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2RldGFpbHNEaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFJekUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7QUFNN0MsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBb0IsV0FBMkIsRUFBUyxjQUE4QixFQUFTLFNBQXNDLEVBQWtDLElBQUk7UUFBdkosZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsY0FBUyxHQUFULFNBQVMsQ0FBNkI7UUFBa0MsU0FBSSxHQUFKLElBQUksQ0FBQTtRQXVCM0ssZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsaUJBQVksR0FBWSxLQUFLLENBQUM7SUExQmlKLENBQUM7SUFHaEwsUUFBUTtRQUVOLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUU5QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUNyQyxJQUFJLENB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RWxFO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQztxQkFDcEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MEdBOUlVLGFBQWEsMEdBRXVILGVBQWU7OEZBRm5KLGFBQWEscURDWjFCLG9pREEwQ0E7MkZEOUJhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsZUFBZTs7MEJBTStHLE1BQU07MkJBQUMsZUFBZTs7QUErSS9KLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBGb3JtQ29uZmlnLCBGaWVsZCwgVGFibGVDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvVGluQ29yZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXZpZXdNb2RlbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RldGFpbHNEaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgZGV0YWlsc0RpYWxvZyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8ZGV0YWlsc0RpYWxvZz4sIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YSkgeyB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gdGhpcy5kYXRhLmNvbmZpZ1xyXG4gICAgdGhpcy5mb3JtQ29uZmlnID0gdGhpcy50YWJsZUNvbmZpZy5mb3JtQ29uZmlnO1xyXG5cclxuICAgIHRoaXMuZm9ybUNvbmZpZy5tb2RlID0gdGhpcy5kYXRhLm1vZGVcclxuICAgIHRoaXMuc21hbGxTY3JlZW4gPSB0aGlzLmRhdGEuc21hbGxTY3JlZW5cclxuXHJcbiAgICBpZiAodGhpcy5mb3JtQ29uZmlnLm1vZGUgPT0gXCJjcmVhdGVcIil7XHJcbiAgICAgIHRoaXMuZGV0YWlscyA9IENvcmUuZ2VuZXJhdGVPYmplY3QodGhpcy5mb3JtQ29uZmlnLmZpZWxkcyk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5kZXRhaWxzID0gdGhpcy5kYXRhLmRldGFpbHNcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZENvbXBsZXRlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZ1xyXG4gIGRldGFpbHM6IGFueVxyXG4gIGZvcm1Db25maWcgOiBGb3JtQ29uZmlnO1xyXG4gIHNtYWxsU2NyZWVuID0gZmFsc2U7XHJcblxyXG4gIGlzTG9hZENvbXBsZXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICBzZXRNb2RlKG5ld01vZGU6IHN0cmluZyl7XHJcbiAgICB0aGlzLmZvcm1Db25maWcubW9kZSA9IG5ld01vZGVcclxuICB9XHJcblxyXG4gIGNyZWF0ZSgpIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmRldGFpbHMpXHJcblxyXG4gICAgLy92YWxpZGF0aW9uXHJcbiAgICBsZXQgcmVzcCA9IENvcmUudmFsaWRhdGVPYmplY3QodGhpcy5mb3JtQ29uZmlnLmZpZWxkcywgdGhpcy5kZXRhaWxzKTtcclxuICAgIGlmIChyZXNwICE9ICcnKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QocmVzcClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBiID0gdGhpcy50YWJsZUNvbmZpZy5idXR0b25zLmZpbmQoeCA9PiB4Lm5hbWUgPT0gXCJjcmVhdGVcIilcclxuICAgIGlmICghYiB8fCAhYi5hY3Rpb24pIHtcclxuXHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ2VtaXQnLCBkYXRhOiB0aGlzLmRldGFpbHN9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKGIuYWN0aW9uLCB0aGlzLmRldGFpbHMpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZVxyXG5cclxuICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuXHJcbiAgICAgICAgaWYgKGIuYWN0aW9uLnN1Y2Nlc3NNZXNzYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KGIuYWN0aW9uLnN1Y2Nlc3NNZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkNyZWF0ZWRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IG1lc3NhZ2U6ICdzdWNjZXNzJywgZGF0YTogdGhpcy5kZXRhaWxzIH0pO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBlZGl0KCkge1xyXG4gICAgY29uc29sZS5sb2coXCJFZGl0XCIpXHJcblxyXG4gICAgLy92YWxpZGF0aW9uXHJcbiAgICBsZXQgcmVzcCA9IENvcmUudmFsaWRhdGVPYmplY3QodGhpcy5mb3JtQ29uZmlnLmZpZWxkcywgdGhpcy5kZXRhaWxzKTtcclxuICAgIGlmIChyZXNwICE9ICcnKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QocmVzcClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBiID0gdGhpcy50YWJsZUNvbmZpZy5idXR0b25zLmZpbmQoeCA9PiB4Lm5hbWUgPT0gXCJlZGl0XCIpXHJcbiAgICBpZiAoIWIgfHwgIWIuYWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ2VtaXQnLCBkYXRhOiB0aGlzLmRldGFpbHMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IHRydWVcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaShiLmFjdGlvbiwgdGhpcy5kZXRhaWxzKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2VcclxuICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuXHJcbiAgICAgICAgaWYgKGIuYWN0aW9uLnN1Y2Nlc3NNZXNzYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KGIuYWN0aW9uLnN1Y2Nlc3NNZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlVwZGF0ZWRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IG1lc3NhZ2U6ICdzdWNjZXNzJywgZGF0YTogdGhpcy5kZXRhaWxzIH0pO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZSgpIHtcclxuXHJcblxyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5jb25maXJtKGBERUxFVEUgP2ApLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhcIkRlbGV0ZVwiKVxyXG5cclxuICAgICAgICBsZXQgYiA9IHRoaXMudGFibGVDb25maWcuYnV0dG9ucy5maW5kKHggPT4geC5uYW1lID09IFwiZGVsZXRlXCIpXHJcbiAgICAgICAgaWYgKCFiKSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IG1lc3NhZ2U6ICdzdWNjZXNzJywgZGF0YTogdGhpcy5kZXRhaWxzIH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlXHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKGIuYWN0aW9uLCB0aGlzLmRldGFpbHMpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2VcclxuICAgICAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoYi5hY3Rpb24uc3VjY2Vzc01lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KGIuYWN0aW9uLnN1Y2Nlc3NNZXNzYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRGVsZXRlZFwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBtZXNzYWdlOiAnc3VjY2VzcycsIGRhdGE6IHRoaXMuZGV0YWlscyB9KTtcclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxufTtcclxuXHJcblxyXG5cclxuIiwiXHJcbjxkaXYgY2xhc3M9XCJyb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0wXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxoMiBtYXQtZGlhbG9nLXRpdGxlPnt7Zm9ybUNvbmZpZy5tb2RlIHwgdGl0bGVjYXNlfX08L2gyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwic21hbGxTY3JlZW4gJiYgZm9ybUNvbmZpZy5tb2RlPT0ndmlldydcIiBjbGFzcz1cImNvbCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWluaS1mYWIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNldE1vZGUoJ2VkaXQnKVwiPjxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInNtYWxsU2NyZWVuICYmIGZvcm1Db25maWcubW9kZT09J2VkaXQnXCIgY2xhc3M9XCJjb2wgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICAoY2xpY2spPVwic2V0TW9kZSgndmlldycpXCI+PG1hdC1pY29uPmRvbmU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiPlxyXG5cclxuPGRpdiBjbGFzcz1cInRpbi1pbnB1dFwiIHN0eWxlPVwiZm9udC1zaXplOjE0cHhcIj5cclxuXHJcblxyXG48c3BhLWZvcm0gW2RhdGFdPVwiZGV0YWlsc1wiIFtjb25maWddPVwiZm9ybUNvbmZpZ1wiPjwvc3BhLWZvcm0+XHJcblxyXG48L2Rpdj5cclxuXHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuPGRpdj5cclxuPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nXCIgY29sb3I9XCJwcmltYXJ5XCIgKm5nSWY9XCJmb3JtQ29uZmlnLm1vZGU9PSdjcmVhdGUnXCIgKGNsaWNrKT1cImNyZWF0ZSgpXCIgY2RrRm9jdXNJbml0aWFsPlN1Ym1pdDwvYnV0dG9uPlxyXG48YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIiBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cImZvcm1Db25maWcubW9kZT09J2VkaXQnXCIgKGNsaWNrKT1cImVkaXQoKVwiIGNka0ZvY3VzSW5pdGlhbD5TdWJtaXQ8L2J1dHRvbj5cclxuPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0LWRpYWxvZy1jbG9zZT5DYW5jZWw8L2J1dHRvbj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJjb2wgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiIHN0eWxlPVwiY29sb3I6IHJlZDtcIiAoY2xpY2spPVwiZGVsZXRlKClcIiAqbmdJZj1cImZvcm1Db25maWcubW9kZSE9J2NyZWF0ZSdcIj48bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9kaXY+XHJcblxyXG5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcblxyXG5cclxuXHJcbiJdfQ==
|