atr-components 0.2.417 → 0.2.419
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 +24 -24
- package/core/auth/auth.guard.d.ts +3 -2
- package/core/base/atr-common.d.ts +0 -1
- package/esm2020/atr-components.module.mjs +5 -5
- package/esm2020/atr-public-api.mjs +1 -1
- package/esm2020/core/auth/auth.guard.mjs +4 -4
- package/esm2020/core/base/atr-common.mjs +1 -1
- package/esm2020/core/directive/error-img.directive.mjs +3 -3
- package/esm2020/core/directive/hq-spin.directive.mjs +3 -3
- package/esm2020/core/directive/role.directive.mjs +3 -3
- package/esm2020/core/interceptor/base.interceptor.mjs +3 -3
- package/esm2020/core/ngz-module/cus-zorro-antd.module.mjs +4 -4
- package/esm2020/core/pipe/china-num.pipe.mjs +3 -3
- package/esm2020/core/pipe/count.pipe.mjs +3 -3
- package/esm2020/core/pipe/day.pipe.mjs +3 -3
- package/esm2020/core/pipe/defaultVal.pipe.mjs +3 -3
- package/esm2020/core/pipe/dicts.pipe.mjs +3 -3
- package/esm2020/core/pipe/image-pipe.pipe.mjs +3 -3
- package/esm2020/core/pipe/is-empty.pipe.mjs +3 -3
- package/esm2020/core/pipe/is-not-empty.pipe.mjs +3 -3
- package/esm2020/core/pipe/oss.pipe.mjs +3 -3
- package/esm2020/core/pipe/ossStatic.pipe.mjs +3 -3
- package/esm2020/core/pipe/pipe-module.module.mjs +5 -5
- package/esm2020/core/pipe/remove-html.pipe.mjs +3 -3
- package/esm2020/core/pipe/safe-compute.pipe.mjs +3 -3
- package/esm2020/core/pipe/safe-html.pipe.mjs +3 -3
- package/esm2020/core/pipe/safe-url.pipe.mjs +3 -3
- package/esm2020/core/services/dict/dict.service.mjs +3 -3
- package/esm2020/core/services/http.service.mjs +3 -3
- package/esm2020/core/services/menu.service.mjs +3 -3
- package/esm2020/core/services/upload-oss.service.mjs +3 -3
- package/esm2020/lib/hello/hello.component.mjs +5 -5
- package/esm2020/lib/hello/hello.module.mjs +5 -5
- package/esm2020/lib/shared/atr-shared.module.mjs +4 -4
- package/esm2020/lib/shared/echarts/echarts.component.mjs +3 -3
- package/esm2020/lib/shared/form/form.component.mjs +11 -17
- package/esm2020/lib/shared/img-canvas/img-canvas.component.mjs +5 -5
- package/esm2020/lib/shared/local-upload/local-upload.component.mjs +3 -3
- package/esm2020/lib/shared/quill-editor/quill-editor.component.mjs +3 -3
- package/esm2020/lib/shared/select-icons/select-icons.component.mjs +6 -6
- package/esm2020/lib/shared/select-tree/select-tree.component.mjs +3 -3
- package/esm2020/lib/shared/service/busi.service.mjs +3 -3
- package/esm2020/lib/shared/share.service.mjs +3 -3
- package/esm2020/lib/shared/table/table-form-item/table-form-item.component.mjs +6 -6
- package/esm2020/lib/shared/table/table-td/table-td.component.mjs +18 -18
- package/esm2020/lib/shared/table/table.component.mjs +5 -5
- package/esm2020/lib/shared/upload/upload.component.mjs +5 -6
- package/esm2020/lib/shared/video/video.component.mjs +5 -5
- package/esm2020/lib/shared/view-form/view-form.component.mjs +24 -21
- package/esm2022/atr-components.mjs +5 -0
- package/esm2022/atr-components.module.mjs +36 -0
- package/esm2022/atr-public-api.mjs +55 -0
- package/esm2022/core/animations/animations.mjs +10 -0
- package/esm2022/core/animations/fly-in.mjs +19 -0
- package/esm2022/core/animations/scroll-screen.mjs +23 -0
- package/esm2022/core/auth/auth.guard.mjs +37 -0
- package/esm2022/core/base/atr-common.mjs +48 -0
- package/esm2022/core/directive/error-img.directive.mjs +31 -0
- package/esm2022/core/directive/hq-spin.directive.mjs +48 -0
- package/esm2022/core/directive/role.directive.mjs +69 -0
- package/esm2022/core/interceptor/base.interceptor.mjs +165 -0
- package/esm2022/core/ngz-module/cus-zorro-antd.module.mjs +292 -0
- package/esm2022/core/pipe/china-num.pipe.mjs +36 -0
- package/esm2022/core/pipe/count.pipe.mjs +34 -0
- package/esm2022/core/pipe/day.pipe.mjs +24 -0
- package/esm2022/core/pipe/defaultVal.pipe.mjs +23 -0
- package/esm2022/core/pipe/dicts.pipe.mjs +28 -0
- package/esm2022/core/pipe/image-pipe.pipe.mjs +17 -0
- package/esm2022/core/pipe/is-empty.pipe.mjs +20 -0
- package/esm2022/core/pipe/is-not-empty.pipe.mjs +17 -0
- package/esm2022/core/pipe/oss.pipe.mjs +17 -0
- package/esm2022/core/pipe/ossStatic.pipe.mjs +17 -0
- package/esm2022/core/pipe/pipe-module.module.mjs +38 -0
- package/esm2022/core/pipe/remove-html.pipe.mjs +21 -0
- package/esm2022/core/pipe/safe-compute.pipe.mjs +23 -0
- package/esm2022/core/pipe/safe-html.pipe.mjs +20 -0
- package/esm2022/core/pipe/safe-url.pipe.mjs +20 -0
- package/esm2022/core/routereuse/atr-reuse-strategy.mjs +79 -0
- package/esm2022/core/services/dict/dict.service.mjs +152 -0
- package/esm2022/core/services/http.service.mjs +306 -0
- package/esm2022/core/services/menu.service.mjs +130 -0
- package/esm2022/core/services/upload-oss.service.mjs +74 -0
- package/esm2022/core/utils/ToolsUtil.mjs +622 -0
- package/esm2022/core/utils/localstorage.util.mjs +94 -0
- package/esm2022/core/utils/sessionstorage.util.mjs +73 -0
- package/esm2022/lib/hello/hello.component.mjs +15 -0
- package/esm2022/lib/hello/hello.module.mjs +20 -0
- package/esm2022/lib/shared/atr-shared.module.mjs +239 -0
- package/esm2022/lib/shared/echarts/echarts.component.mjs +77 -0
- package/esm2022/lib/shared/form/form.component.mjs +592 -0
- package/esm2022/lib/shared/img-canvas/img-canvas.component.mjs +132 -0
- package/esm2022/lib/shared/local-upload/local-upload.component.mjs +68 -0
- package/esm2022/lib/shared/quill-editor/quill-editor.component.mjs +254 -0
- package/esm2022/lib/shared/select-icons/select-icons.component.mjs +90 -0
- package/esm2022/lib/shared/select-tree/select-tree.component.mjs +55 -0
- package/esm2022/lib/shared/service/busi.service.mjs +69 -0
- package/esm2022/lib/shared/share.service.mjs +107 -0
- package/esm2022/lib/shared/table/table-form-item/table-form-item.component.mjs +96 -0
- package/esm2022/lib/shared/table/table-td/table-td.component.mjs +165 -0
- package/esm2022/lib/shared/table/table.component.mjs +749 -0
- package/esm2022/lib/shared/upload/upload.component.mjs +274 -0
- package/esm2022/lib/shared/validators/atr-validtors.mjs +9 -0
- package/esm2022/lib/shared/video/video.component.mjs +16 -0
- package/esm2022/lib/shared/view-form/view-form.component.mjs +186 -0
- package/fesm2015/atr-components.mjs +182 -187
- package/fesm2015/atr-components.mjs.map +1 -1
- package/fesm2020/atr-components.mjs +182 -187
- package/fesm2020/atr-components.mjs.map +1 -1
- package/fesm2022/atr-components.mjs +5564 -0
- package/fesm2022/atr-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/shared/form/form.component.d.ts +1 -2
- package/lib/shared/table/table-td/table-td.component.d.ts +1 -1
- package/lib/shared/table/table.component.d.ts +1 -1
- package/lib/shared/upload/upload.component.d.ts +3 -2
- package/lib/shared/view-form/view-form.component.d.ts +7 -2
- package/package.json +3 -4
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { Component, Input, Inject, LOCALE_ID } from '@angular/core';
|
|
2
|
+
import { ToolsUtil } from "../../../core/utils/ToolsUtil";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../core/services/http.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "ng-zorro-antd/descriptions";
|
|
8
|
+
import * as i5 from "ng-zorro-antd/rate";
|
|
9
|
+
import * as i6 from "ng-zorro-antd/select";
|
|
10
|
+
import * as i7 from "ng-zorro-antd/tree-select";
|
|
11
|
+
import * as i8 from "ng-zorro-antd/image";
|
|
12
|
+
import * as i9 from "ngx-quill";
|
|
13
|
+
import * as i10 from "../video/video.component";
|
|
14
|
+
import * as i11 from "../../../core/pipe/image-pipe.pipe";
|
|
15
|
+
export class ViewFormComponent {
|
|
16
|
+
set items(items) {
|
|
17
|
+
this.formOpts = {
|
|
18
|
+
type: 'view',
|
|
19
|
+
items: items
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
constructor(injector, locale, httpService) {
|
|
23
|
+
this.injector = injector;
|
|
24
|
+
this.locale = locale;
|
|
25
|
+
this.httpService = httpService;
|
|
26
|
+
this.dicts = {};
|
|
27
|
+
this.title = '';
|
|
28
|
+
this.column = { xs: 8, sm: 16, md: 24 };
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
setTimeout(() => {
|
|
32
|
+
console.log("TEST RIGHT");
|
|
33
|
+
console.log('atrForm.value', this.atrForm.value);
|
|
34
|
+
console.log('atrForm.value formOpts', this.formOpts);
|
|
35
|
+
}, 1150);
|
|
36
|
+
}
|
|
37
|
+
isShow(isHidden, operator) {
|
|
38
|
+
if (isHidden) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
let isShow = false;
|
|
42
|
+
if (!operator || operator == null || operator == "") {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
else if (operator.indexOf('&&') > 0) {
|
|
46
|
+
// a|eq|b &&c|eq|d
|
|
47
|
+
const ops = operator.split('&&');
|
|
48
|
+
if (ops.length > 1) {
|
|
49
|
+
// tslint:disable-next-line:prefer-for-of
|
|
50
|
+
for (let i = 0; i < ops.length; i++) {
|
|
51
|
+
isShow = true;
|
|
52
|
+
if (!this.checkIsShowBase(ops[i].split('|'))) {
|
|
53
|
+
isShow = false;
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else if (operator.indexOf('||') > 0) {
|
|
60
|
+
// a|eq|b||c|eq|d
|
|
61
|
+
const ops = operator.split('&&');
|
|
62
|
+
if (ops.length > 1) {
|
|
63
|
+
for (let i = 0; i < ops.length; i++) {
|
|
64
|
+
isShow = false;
|
|
65
|
+
if (this.checkIsShowBase(ops[i].split('|'))) {
|
|
66
|
+
isShow = true;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
let op = operator.split("|");
|
|
74
|
+
isShow = this.checkIsShowBase(op);
|
|
75
|
+
}
|
|
76
|
+
return isShow;
|
|
77
|
+
}
|
|
78
|
+
checkIsShowBase(op) {
|
|
79
|
+
let isShow = false;
|
|
80
|
+
if (op.length > 1) {
|
|
81
|
+
let value = this.atrForm.get(op[0]).value;
|
|
82
|
+
isShow = this.compare(value, op[1], op[2]);
|
|
83
|
+
}
|
|
84
|
+
else
|
|
85
|
+
isShow = false;
|
|
86
|
+
return isShow;
|
|
87
|
+
}
|
|
88
|
+
compare(value, operator, target) {
|
|
89
|
+
let isRight = false;
|
|
90
|
+
switch (operator) {
|
|
91
|
+
case 'eq':
|
|
92
|
+
if (value == target) {
|
|
93
|
+
isRight = true;
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
case 'gh':
|
|
97
|
+
if (value >= target) {
|
|
98
|
+
isRight = true;
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
case 'notEmpty':
|
|
102
|
+
isRight = false;
|
|
103
|
+
if (value) {
|
|
104
|
+
isRight = true;
|
|
105
|
+
}
|
|
106
|
+
break;
|
|
107
|
+
case 'empty':
|
|
108
|
+
isRight = false;
|
|
109
|
+
if (!value) {
|
|
110
|
+
isRight = true;
|
|
111
|
+
}
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
isRight = false;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
return isRight;
|
|
118
|
+
}
|
|
119
|
+
// getCascaderLabel(value: any, item: any) {
|
|
120
|
+
// if(item.showLabel) return item.showLabel;
|
|
121
|
+
// let result = this.getCascaderDefultV(item.dictList, value, 0, []);
|
|
122
|
+
// // if (item.dictList[0].userObject?.showName) {
|
|
123
|
+
// // return result[result.length - 1] || value;
|
|
124
|
+
// // }
|
|
125
|
+
// item.showLabel = result.join("/") ;
|
|
126
|
+
// return item.showLabel
|
|
127
|
+
// }
|
|
128
|
+
getSelectCLabel(value, arr, key = 'key', valueKey = 'value') {
|
|
129
|
+
if (ToolsUtil.isEmpty(value)) {
|
|
130
|
+
return '';
|
|
131
|
+
}
|
|
132
|
+
let result = arr.filter((item) => {
|
|
133
|
+
if (ToolsUtil.isArray(value)) {
|
|
134
|
+
return value.some((v) => item[key] == v);
|
|
135
|
+
}
|
|
136
|
+
return value == item[key];
|
|
137
|
+
});
|
|
138
|
+
return result && result.length > 0 ? result.map((v) => v[valueKey]).join(",") : result[valueKey];
|
|
139
|
+
}
|
|
140
|
+
getSelectLabel(value, arr) {
|
|
141
|
+
// console.log(value, arr)
|
|
142
|
+
let result = arr.filter((item) => value == item.key || value == item.id);
|
|
143
|
+
return result && result.length > 0 ? (result[0].title || result[0].typeName) : value;
|
|
144
|
+
}
|
|
145
|
+
getTagLabel(value, key = 'label') {
|
|
146
|
+
return value ? value.map((v) => v[key]).join() : '';
|
|
147
|
+
}
|
|
148
|
+
// getCascaderDefultV(dictList: any, value: any, index: any, result: any) {
|
|
149
|
+
// dictList.forEach((v: any) => {
|
|
150
|
+
// if (value[index].value == v.value) {
|
|
151
|
+
// result.push(v.value)
|
|
152
|
+
// if (v.children) {
|
|
153
|
+
// this.getCascaderDefultV(v.children, value, index + 1, result)
|
|
154
|
+
// }
|
|
155
|
+
// return;
|
|
156
|
+
// }
|
|
157
|
+
// })
|
|
158
|
+
// return result;
|
|
159
|
+
// }
|
|
160
|
+
getImgs(imgs) {
|
|
161
|
+
if (!imgs) {
|
|
162
|
+
return '';
|
|
163
|
+
}
|
|
164
|
+
return imgs.split(',');
|
|
165
|
+
}
|
|
166
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ViewFormComponent, deps: [{ token: i0.Injector }, { token: LOCALE_ID }, { token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ViewFormComponent, selector: "atr-view-form", inputs: { formOpts: "formOpts", atrForm: "atrForm", dicts: "dicts", title: "title", items: "items" }, ngImport: i0, template: "<nz-descriptions nzBordered [nzColon]=\"true\" [nzColumn]=\"24\" [nzTitle]=\"title\">\r\n <ng-container *ngFor=\"let item of formOpts.items\">\r\n <ng-container *ngIf=\"!item.isHidden\">\r\n <div class=\"form-title\" *ngIf=\"item.type == 'title'\">\r\n {{item.label}}\r\n </div>\r\n <nz-descriptions-item [nzTitle]=\"item.label\" [ngSwitch]=\"item.type\"\r\n *ngIf=\"isShow(item.isHidden,item.operator)\"\r\n [nzSpan]=\"item.span || 6\">\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <ng-container *ngFor=\"let o of item.dictList\">\r\n <label *ngIf=\"o.value == atrForm.value[item.key]\">{{o.label}}</label>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'treeSelect'\">\r\n <nz-tree-select\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n [(ngModel)]=\"atrForm.value[item.key]\"\r\n [nzDisabled]=\"true\"\r\n >\r\n </nz-tree-select>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n {{getSelectLabel(atrForm.value[item.key],dicts[item.dictCode])}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'selectCus'\">\r\n {{getSelectLabel(atrForm.value[item.key],item.dictList)}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'selectc'\">\r\n {{getSelectCLabel(atrForm.value[item.key],item.dictList,'value','label')}}\r\n<!-- <nz-select-->\r\n<!-- [nzDisabled]=\"true\"-->\r\n<!-- [(ngModel)]=\"atrForm.value[item.key]\"-->\r\n<!-- >-->\r\n<!-- <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.label\"-->\r\n<!-- [nzValue]=\"o.value\"></nz-option>-->\r\n<!-- </nz-select>-->\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'sceneUser'\">\r\n <nz-select\r\n [nzDisabled]=\"true\"\r\n [(ngModel)]=\"atrForm.value[item.key]\"\r\n >\r\n <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.title\"\r\n [nzValue]=\"o.key\"></nz-option>\r\n </nz-select>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n {{atrForm.value[item.key]}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{atrForm.value[item.key] | date:(item.dateFormat || 'yyyy-MM-dd')}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'dateTime'\">\r\n {{atrForm.value[item.key] | date:(item.dateFormat || 'yyyy-MM-dd 00:00:00')}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cascader'\">\r\n <ng-container *ngFor=\"let data of atrForm.value[item.key] ;let i = index\">\r\n {{i>0?\"/\":\"\"}}{{data.lable}}\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'tags'\">\r\n {{getTagLabel(atrForm.value[item.key], 'name')}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <ng-container *ngFor=\"let img of getImgs(atrForm.value[item.key])\">\r\n <div>\r\n <img *ngIf=\"!img.endsWith('.mp4')\" nz-image style=\"max-width: 200px;max-height: 200px\" [nzSrc]=\"img | ossImg\">\r\n <app-video *ngIf=\"img.endsWith('.mp4')\" style=\"max-width: 200px;max-height: 200px\" [url]=\"img | ossImg\"></app-video>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'rate'\">\r\n <nz-rate [nzDisabled]=\"true\"\r\n [(ngModel)]=\"atrForm.value[item.key]\"></nz-rate>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'editor'\">\r\n <div>\r\n <!-- <app-quill-editor [(ngModel)]=\"atrForm.value[item.key]\" style=\"width: 60%\" [readOnly]=\"true\"\r\n [styles]=\"{height:item.height > 0 ? item.height + 'px' : '250px'}\"></app-quill-editor> -->\r\n <quill-view [content]=\"atrForm.value[item.key]\" style=\"width: 60%\" theme=\"snow\"></quill-view>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n </nz-descriptions-item>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n</nz-descriptions>\r\n", styles: [":host img{max-width:200px;max-height:200px}:host .form-title{height:50px;line-height:50px;font-weight:500;font-size:20px;border-bottom:1px solid #e8e8e8;border-radius:4px 4px 0 0;margin-bottom:14px;margin-top:11px}:host ::ng-deep .ant-descriptions-header{display:flex;align-items:center;margin-bottom:0;line-height:50px;height:50px;padding-left:10px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NzDescriptionsComponent, selector: "nz-descriptions", inputs: ["nzBordered", "nzLayout", "nzColumn", "nzSize", "nzTitle", "nzExtra", "nzColon"], exportAs: ["nzDescriptions"] }, { kind: "component", type: i4.NzDescriptionsItemComponent, selector: "nz-descriptions-item", inputs: ["nzSpan", "nzTitle"], exportAs: ["nzDescriptionsItem"] }, { kind: "component", type: i5.NzRateComponent, selector: "nz-rate", inputs: ["nzAllowClear", "nzAllowHalf", "nzDisabled", "nzAutoFocus", "nzCharacter", "nzCount", "nzTooltips"], outputs: ["nzOnBlur", "nzOnFocus", "nzOnHoverChange", "nzOnKeyDown"], exportAs: ["nzRate"] }, { kind: "component", type: i6.NzOptionComponent, selector: "nz-option", inputs: ["nzTitle", "nzLabel", "nzValue", "nzKey", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { kind: "component", type: i6.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { kind: "component", type: i7.NzTreeSelectComponent, selector: "nz-tree-select", inputs: ["nzId", "nzAllowClear", "nzShowExpand", "nzShowLine", "nzDropdownMatchSelectWidth", "nzCheckable", "nzHideUnMatched", "nzShowIcon", "nzShowSearch", "nzDisabled", "nzAsyncData", "nzMultiple", "nzDefaultExpandAll", "nzCheckStrictly", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzExpandedIcon", "nzNotFoundContent", "nzNodes", "nzOpen", "nzSize", "nzPlaceHolder", "nzDropdownStyle", "nzDropdownClassName", "nzBackdrop", "nzStatus", "nzPlacement", "nzExpandedKeys", "nzDisplayWith", "nzMaxTagCount", "nzMaxTagPlaceholder", "nzTreeTemplate"], outputs: ["nzOpenChange", "nzCleared", "nzRemoved", "nzExpandChange", "nzTreeClick", "nzTreeCheckBoxChange"], exportAs: ["nzTreeSelect"] }, { kind: "directive", type: i8.NzImageDirective, selector: "img[nz-image]", inputs: ["nzSrc", "nzSrcset", "nzDisablePreview", "nzFallback", "nzPlaceholder", "nzScaleStep"], exportAs: ["nzImage"] }, { kind: "component", type: i9.QuillViewComponent, selector: "quill-view", inputs: ["format", "theme", "modules", "debug", "formats", "sanitize", "beforeRender", "strict", "content", "customModules", "customOptions"], outputs: ["onEditorCreated"] }, { kind: "component", type: i10.VideoComponent, selector: "app-video", inputs: ["url"] }, { kind: "pipe", type: i11.OssImgPipe, name: "ossImg" }, { kind: "pipe", type: i2.DatePipe, name: "date" }] }); }
|
|
168
|
+
}
|
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ViewFormComponent, decorators: [{
|
|
170
|
+
type: Component,
|
|
171
|
+
args: [{ selector: 'atr-view-form', template: "<nz-descriptions nzBordered [nzColon]=\"true\" [nzColumn]=\"24\" [nzTitle]=\"title\">\r\n <ng-container *ngFor=\"let item of formOpts.items\">\r\n <ng-container *ngIf=\"!item.isHidden\">\r\n <div class=\"form-title\" *ngIf=\"item.type == 'title'\">\r\n {{item.label}}\r\n </div>\r\n <nz-descriptions-item [nzTitle]=\"item.label\" [ngSwitch]=\"item.type\"\r\n *ngIf=\"isShow(item.isHidden,item.operator)\"\r\n [nzSpan]=\"item.span || 6\">\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <ng-container *ngFor=\"let o of item.dictList\">\r\n <label *ngIf=\"o.value == atrForm.value[item.key]\">{{o.label}}</label>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'treeSelect'\">\r\n <nz-tree-select\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n [(ngModel)]=\"atrForm.value[item.key]\"\r\n [nzDisabled]=\"true\"\r\n >\r\n </nz-tree-select>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n {{getSelectLabel(atrForm.value[item.key],dicts[item.dictCode])}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'selectCus'\">\r\n {{getSelectLabel(atrForm.value[item.key],item.dictList)}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'selectc'\">\r\n {{getSelectCLabel(atrForm.value[item.key],item.dictList,'value','label')}}\r\n<!-- <nz-select-->\r\n<!-- [nzDisabled]=\"true\"-->\r\n<!-- [(ngModel)]=\"atrForm.value[item.key]\"-->\r\n<!-- >-->\r\n<!-- <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.label\"-->\r\n<!-- [nzValue]=\"o.value\"></nz-option>-->\r\n<!-- </nz-select>-->\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'sceneUser'\">\r\n <nz-select\r\n [nzDisabled]=\"true\"\r\n [(ngModel)]=\"atrForm.value[item.key]\"\r\n >\r\n <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.title\"\r\n [nzValue]=\"o.key\"></nz-option>\r\n </nz-select>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n {{atrForm.value[item.key]}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{atrForm.value[item.key] | date:(item.dateFormat || 'yyyy-MM-dd')}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'dateTime'\">\r\n {{atrForm.value[item.key] | date:(item.dateFormat || 'yyyy-MM-dd 00:00:00')}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cascader'\">\r\n <ng-container *ngFor=\"let data of atrForm.value[item.key] ;let i = index\">\r\n {{i>0?\"/\":\"\"}}{{data.lable}}\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'tags'\">\r\n {{getTagLabel(atrForm.value[item.key], 'name')}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <ng-container *ngFor=\"let img of getImgs(atrForm.value[item.key])\">\r\n <div>\r\n <img *ngIf=\"!img.endsWith('.mp4')\" nz-image style=\"max-width: 200px;max-height: 200px\" [nzSrc]=\"img | ossImg\">\r\n <app-video *ngIf=\"img.endsWith('.mp4')\" style=\"max-width: 200px;max-height: 200px\" [url]=\"img | ossImg\"></app-video>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'rate'\">\r\n <nz-rate [nzDisabled]=\"true\"\r\n [(ngModel)]=\"atrForm.value[item.key]\"></nz-rate>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'editor'\">\r\n <div>\r\n <!-- <app-quill-editor [(ngModel)]=\"atrForm.value[item.key]\" style=\"width: 60%\" [readOnly]=\"true\"\r\n [styles]=\"{height:item.height > 0 ? item.height + 'px' : '250px'}\"></app-quill-editor> -->\r\n <quill-view [content]=\"atrForm.value[item.key]\" style=\"width: 60%\" theme=\"snow\"></quill-view>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n </nz-descriptions-item>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n</nz-descriptions>\r\n", styles: [":host img{max-width:200px;max-height:200px}:host .form-title{height:50px;line-height:50px;font-weight:500;font-size:20px;border-bottom:1px solid #e8e8e8;border-radius:4px 4px 0 0;margin-bottom:14px;margin-top:11px}:host ::ng-deep .ant-descriptions-header{display:flex;align-items:center;margin-bottom:0;line-height:50px;height:50px;padding-left:10px}\n"] }]
|
|
172
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
173
|
+
type: Inject,
|
|
174
|
+
args: [LOCALE_ID]
|
|
175
|
+
}] }, { type: i1.HttpService }], propDecorators: { formOpts: [{
|
|
176
|
+
type: Input
|
|
177
|
+
}], atrForm: [{
|
|
178
|
+
type: Input
|
|
179
|
+
}], dicts: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], title: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], items: [{
|
|
184
|
+
type: Input
|
|
185
|
+
}] } });
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdmlldy1mb3JtL3ZpZXctZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3ZpZXctZm9ybS92aWV3LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBVSxLQUFLLEVBQVksTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUlwRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPeEQsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixJQUFhLEtBQUssQ0FBQyxLQUFVO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQztJQUNKLENBQUM7SUFJRCxZQUFzQixRQUFrQixFQUE2QixNQUFjLEVBQVUsV0FBd0I7UUFBL0YsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUE2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFaNUcsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQVEsRUFBRSxDQUFDO1FBU3pCLFdBQU0sR0FBUSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFDLENBQUE7SUFHckMsQ0FBQztJQUVELFFBQVE7UUFDTixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUN6QixPQUFPLENBQUMsR0FBRyxDQUFD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QUM3QiwwQkFBMEI7SUFDMUIsd0VBQXdFO0lBQ3hFLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsUUFBUTtJQUVSLE9BQU87SUFDUCxtQkFBbUI7SUFDbkIsSUFBSTtJQUVKLE9BQU8sQ0FBQyxJQUFTO1FBQ2YsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDeEIsQ0FBQzs4R0FoS1UsaUJBQWlCLDBDQWVzQixTQUFTO2tHQWZoRCxpQkFBaUIsMkpDWDlCLDZ0S0ErRkE7OzJGRHBGYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsZUFBZTs7MEJBbUJrQixNQUFNOzJCQUFDLFNBQVM7bUVBZGxELFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRU8sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIElucHV0LCBJbmplY3RvciwgSW5qZWN0LCBMT0NBTEVfSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7QXRyRm9ybU9wdH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvYmFzZS9hdHItY29tbW9uXCI7XHJcbmltcG9ydCB7SHR0cFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbHMvVG9vbHNVdGlsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F0ci12aWV3LWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ZpZXctZm9ybS5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWV3Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZm9ybU9wdHM6IEF0ckZvcm1PcHQgfCBhbnk7XHJcbiAgQElucHV0KCkgYXRyRm9ybTogVW50eXBlZEZvcm1Hcm91cCB8IGFueTtcclxuICBASW5wdXQoKSBkaWN0czogYW55ID0ge307XHJcbiAgQElucHV0KCkgdGl0bGU6IGFueSA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBzZXQgaXRlbXMoaXRlbXM6IGFueSkge1xyXG4gICAgdGhpcy5mb3JtT3B0cyA9IHtcclxuICAgICAgdHlwZTogJ3ZpZXcnLFxyXG4gICAgICBpdGVtczogaXRlbXNcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb2x1bW46IGFueSA9IHt4czogOCwgc206IDE2LCBtZDogMjR9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZTogc3RyaW5nLCBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJURVNUIFJJR0hUXCIpXHJcbiAgICAgIGNvbnNvbGUubG9nKCdhdHJGb3JtLnZhbHVlJywgdGhpcy5hdHJGb3JtLnZhbHVlKVxyXG4gICAgICBjb25zb2xlLmxvZygnYXRyRm9ybS52YWx1ZSBmb3JtT3B0cycsIHRoaXMuZm9ybU9wdHMpXHJcbiAgICB9LCAxMTUwKVxyXG4gIH1cclxuXHJcbiAgaXNTaG93KGlzSGlkZGVuOiBhbnksIG9wZXJhdG9yOiBhbnkpIHtcclxuICAgIGlmIChpc0hpZGRlbikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgaXNTaG93ID0gZmFsc2U7XHJcbiAgICBpZiAoIW9wZXJhdG9yIHx8IG9wZXJhdG9yID09IG51bGwgfHwgb3BlcmF0b3IgPT0gXCJcIikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAob3BlcmF0b3IuaW5kZXhPZignJiYnKSA+IDApIHtcclxuICAgICAgLy8gYXxlcXxiICYmY3xlcXxkXHJcbiAgICAgIGNvbnN0IG9wcyA9IG9wZXJhdG9yLnNwbGl0KCcmJicpO1xyXG4gICAgICBpZiAob3BzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpc1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJ3x8JykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8Ynx8Y3xlcXxkXHJcbiAgICAgIGNvbnN0IG9wcyA9IG9wZXJhdG9yLnNwbGl0KCcmJicpO1xyXG4gICAgICBpZiAob3BzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5jaGVja0lzU2hvd0Jhc2Uob3BzW2ldLnNwbGl0KCd8JykpKSB7XHJcbiAgICAgICAgICAgIGlzU2hvdyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG9wID0gb3BlcmF0b3Iuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICBpc1Nob3cgPSB0aGlzLmNoZWNrSXNTaG93QmFzZShvcCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJc1Nob3dCYXNlKG9wOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1Nob3cgPSBmYWxzZTtcclxuICAgIGlmIChvcC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMuYXRyRm9ybS5nZXQob3BbMF0pLnZhbHVlO1xyXG4gICAgICBpc1Nob3cgPSB0aGlzLmNvbXBhcmUodmFsdWUsIG9wWzFdLCBvcFsyXSlcclxuICAgIH0gZWxzZVxyXG4gICAgICBpc1Nob3cgPSBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZSh2YWx1ZTogYW55LCBvcGVyYXRvcjogYW55LCB0YXJnZXQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzUmlnaHQgPSBmYWxzZTtcclxuICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcclxuICAgICAgY2FzZSAnZXEnIDpcclxuICAgICAgICBpZiAodmFsdWUgPT0gdGFyZ2V0KSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2doJyA6XHJcbiAgICAgICAgaWYgKHZhbHVlID49IHRhcmdldCkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdub3RFbXB0eSc6XHJcbiAgICAgICAgaXNSaWdodCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdlbXB0eSc6XHJcbiAgICAgICAgaXNSaWdodCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdCA6XHJcbiAgICAgICAgaXNSaWdodCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzUmlnaHQ7XHJcbiAgfVxyXG5cclxuICAvLyBnZXRDYXNjYWRlckxhYmVsKHZhbHVlOiBhbnksIGl0ZW06IGFueSkge1xyXG4gIC8vICAgaWYoaXRlbS5zaG93TGFiZWwpIHJldHVybiBpdGVtLnNob3dMYWJlbDtcclxuICAvLyAgIGxldCByZXN1bHQgPSB0aGlzLmdldENhc2NhZGVyRGVmdWx0VihpdGVtLmRpY3RMaXN0LCB2YWx1ZSwgMCwgW10pO1xyXG4gIC8vICAgLy8gaWYgKGl0ZW0uZGljdExpc3RbMF0udXNlck9iamVjdD8uc2hvd05hbWUpIHtcclxuICAvLyAgIC8vICAgcmV0dXJuIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gfHwgdmFsdWU7XHJcbiAgLy8gICAvLyB9XHJcbiAgLy8gICBpdGVtLnNob3dMYWJlbCA9IHJlc3VsdC5qb2luKFwiL1wiKSA7XHJcbiAgLy8gICByZXR1cm4gaXRlbS5zaG93TGFiZWxcclxuICAvLyB9XHJcblxyXG4gIGdldFNlbGVjdENMYWJlbCh2YWx1ZTogYW55LCBhcnI6IGFueSwga2V5ID0gJ2tleScsIHZhbHVlS2V5ID0gJ3ZhbHVlJykge1xyXG4gICAgaWYgKFRvb2xzVXRpbC5pc0VtcHR5KHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gJydcclxuICAgIH1cclxuICAgIGxldCByZXN1bHQgPSBhcnIuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKFRvb2xzVXRpbC5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS5zb21lKCh2OiBhbnkpID0+IGl0ZW1ba2V5XSA9PSB2KVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZSA9PSBpdGVtW2tleV1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gcmVzdWx0ICYmIHJlc3VsdC5sZW5ndGggPiAwID8gcmVzdWx0Lm1hcCgodjogYW55KSA9PiB2W3ZhbHVlS2V5XSkuam9pbihcIixcIikgOiByZXN1bHRbdmFsdWVLZXldO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0TGFiZWwodmFsdWU6IGFueSwgYXJyOiBhbnkpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKHZhbHVlLCBhcnIpXHJcbiAgICBsZXQgcmVzdWx0ID0gYXJyLmZpbHRlcigoaXRlbTogYW55KSA9PiB2YWx1ZSA9PSBpdGVtLmtleSB8fCB2YWx1ZSA9PSBpdGVtLmlkKVxyXG4gICAgcmV0dXJuIHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoID4gMCA/IChyZXN1bHRbMF0udGl0bGUgfHwgcmVzdWx0WzBdLnR5cGVOYW1lKSA6IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFnTGFiZWwodmFsdWU6IGFueSwga2V5ID0gJ2xhYmVsJykge1xyXG4gICAgcmV0dXJuIHZhbHVlID8gdmFsdWUubWFwKCh2OiBhbnkpID0+IHZba2V5XSkuam9pbigpIDogJydcclxuICB9XHJcblxyXG4gIC8vIGdldENhc2NhZGVyRGVmdWx0VihkaWN0TGlzdDogYW55LCB2YWx1ZTogYW55LCBpbmRleDogYW55LCByZXN1bHQ6IGFueSkge1xyXG4gIC8vICAgZGljdExpc3QuZm9yRWFjaCgodjogYW55KSA9PiB7XHJcbiAgLy8gICAgIGlmICh2YWx1ZVtpbmRleF0udmFsdWUgPT0gdi52YWx1ZSkge1xyXG4gIC8vICAgICAgIHJlc3VsdC5wdXNoKHYudmFsdWUpXHJcbiAgLy8gICAgICAgaWYgKHYuY2hpbGRyZW4pIHtcclxuICAvLyAgICAgICAgIHRoaXMuZ2V0Q2FzY2FkZXJEZWZ1bHRWKHYuY2hpbGRyZW4sIHZhbHVlLCBpbmRleCArIDEsIHJlc3VsdClcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICB9XHJcblxyXG4gIC8vICAgfSlcclxuICAvLyAgIHJldHVybiByZXN1bHQ7XHJcbiAgLy8gfVxyXG5cclxuICBnZXRJbWdzKGltZ3M6IGFueSkge1xyXG4gICAgaWYgKCFpbWdzKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiBpbWdzLnNwbGl0KCcsJylcclxuICB9XHJcbn1cclxuIiwiPG56LWRlc2NyaXB0aW9ucyAgbnpCb3JkZXJlZCBbbnpDb2xvbl09XCJ0cnVlXCIgW256Q29sdW1uXT1cIjI0XCIgW256VGl0bGVdPVwidGl0bGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZm9ybU9wdHMuaXRlbXNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uaXNIaWRkZW5cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRpdGxlXCIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3RpdGxlJ1wiPlxyXG4gICAgICAgICAgICB7e2l0ZW0ubGFiZWx9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuei1kZXNjcmlwdGlvbnMtaXRlbSBbbnpUaXRsZV09XCJpdGVtLmxhYmVsXCIgW25nU3dpdGNoXT1cIml0ZW0udHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzU2hvdyhpdGVtLmlzSGlkZGVuLGl0ZW0ub3BlcmF0b3IpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuelNwYW5dPVwiaXRlbS5zcGFuIHx8IDZcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYWRpbydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvIG9mIGl0ZW0uZGljdExpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsICAqbmdJZj1cIm8udmFsdWUgPT0gYXRyRm9ybS52YWx1ZVtpdGVtLmtleV1cIj57e28ubGFiZWx9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0cmVlU2VsZWN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuei10cmVlLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW256Tm9kZXNdPVwiaXRlbS50cmVlTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuelNob3dTZWFyY2g9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG56SGlkZVVuTWF0Y2hlZD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhdHJGb3JtLnZhbHVlW2l0ZW0ua2V5XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uei10cmVlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWxlY3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tnZXRTZWxlY3RMYWJlbChhdHJGb3JtLnZhbHVlW2l0ZW0ua2V5XSxkaWN0c1tpdGVtLmRpY3RDb2RlXSl9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0Q3VzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Z2V0U2VsZWN0TGFiZWwoYXRyRm9ybS52YWx1ZVtpdGVtLmtleV0saXRlbS5kaWN0TGlzdCl9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0YydcIj5cclxuICAgICAgICAgICAgICAgICAge3tnZXRTZWxlY3RDTGFiZWwoYXRyRm9ybS52YWx1ZVtpdGVtLmtleV0saXRlbS5kaWN0TGlzdCwndmFsdWUnLCdsYWJlbCcpfX1cclxuPCEtLSAgICAgICAgICAgICAgICAgICAgPG56LXNlbGVjdC0tPlxyXG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuekRpc2FibGVkXT1cInRydWVcIi0tPlxyXG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYXRyRm9ybS52YWx1ZVtpdGVtLmtleV1cIi0tPlxyXG48IS0tICAgICAgICAgICAgICAgICAgICA+LS0+XHJcbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICA8bnotb3B0aW9uICpuZ0Zvcj1cImxldCBvIG9mIGl0ZW0uZGljdExpc3RcIiBbbnpMYWJlbF09XCJvLmxhYmVsXCItLT5cclxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256VmFsdWVdPVwiby52YWx1ZVwiPjwvbnotb3B0aW9uPi0tPlxyXG48IS0tICAgICAgICAgICAgICAgICAgICA8L256LXNlbGVjdD4tLT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NjZW5lVXNlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bnotc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYXRyRm9ybS52YWx1ZVtpdGVtLmtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG56LW9wdGlvbiAqbmdGb3I9XCJsZXQgbyBvZiBpdGVtLmRpY3RMaXN0XCIgW256TGFiZWxdPVwiby50aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256VmFsdWVdPVwiby5rZXlcIj48L256LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L256LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICAgICAgICB7e2F0ckZvcm0udmFsdWVbaXRlbS5rZXldfX1cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3thdHJGb3JtLnZhbHVlW2l0ZW0ua2V5XSB8IGRhdGU6KGl0ZW0uZGF0ZUZvcm1hdCB8fCAneXl5eS1NTS1kZCcpfX1cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVUaW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7YXRyRm9ybS52YWx1ZVtpdGVtLmtleV0gfCBkYXRlOihpdGVtLmRhdGVGb3JtYXQgfHwgJ3l5eXktTU0tZGQgMDA6MDA6MDAnKX19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjYXNjYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGF0ckZvcm0udmFsdWVbaXRlbS5rZXldIDtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aT4wP1wiL1wiOlwiXCJ9fXt7ZGF0YS5sYWJsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0YWdzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Z2V0VGFnTGFiZWwoYXRyRm9ybS52YWx1ZVtpdGVtLmtleV0sICduYW1lJyl9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1nIG9mIGdldEltZ3MoYXRyRm9ybS52YWx1ZVtpdGVtLmtleV0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICAqbmdJZj1cIiFpbWcuZW5kc1dpdGgoJy5tcDQnKVwiIG56LWltYWdlICBzdHlsZT1cIm1heC13aWR0aDogMjAwcHg7bWF4LWhlaWdodDogMjAwcHhcIiBbbnpTcmNdPVwiaW1nIHwgb3NzSW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXZpZGVvICpuZ0lmPVwiaW1nLmVuZHNXaXRoKCcubXA0JylcIiBzdHlsZT1cIm1heC13aWR0aDogMjAwcHg7bWF4LWhlaWdodDogMjAwcHhcIiAgW3VybF09XCJpbWcgfCBvc3NJbWdcIj48L2FwcC12aWRlbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuei1yYXRlIFtuekRpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYXRyRm9ybS52YWx1ZVtpdGVtLmtleV1cIj48L256LXJhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidlZGl0b3InXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YXBwLXF1aWxsLWVkaXRvciBbKG5nTW9kZWwpXT1cImF0ckZvcm0udmFsdWVbaXRlbS5rZXldXCIgc3R5bGU9XCJ3aWR0aDogNjAlXCIgW3JlYWRPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVzXT1cIntoZWlnaHQ6aXRlbS5oZWlnaHQgPiAwID8gaXRlbS5oZWlnaHQgKyAncHgnIDogJzI1MHB4J31cIj48L2FwcC1xdWlsbC1lZGl0b3I+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cXVpbGwtdmlldyBbY29udGVudF09XCJhdHJGb3JtLnZhbHVlW2l0ZW0ua2V5XVwiICBzdHlsZT1cIndpZHRoOiA2MCVcIiAgdGhlbWU9XCJzbm93XCI+PC9xdWlsbC12aWV3PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPC9uei1kZXNjcmlwdGlvbnMtaXRlbT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbjwvbnotZGVzY3JpcHRpb25zPlxyXG4iXX0=
|