@ecip/system
Version:
252 lines • 23.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ViewChild } from '@angular/core';
import { ModalHelper } from '@delon/theme';
import { STComponent } from '@delon/abc';
import { SFComponent } from '@delon/form';
import { NzMessageService, NzTableComponent } from "ng-zorro-antd";
import { SystemDictEditComponent } from "./edit/edit.component";
import { DictService } from "@ecip/service";
export class SystemDictComponent {
/**
* @param {?} modal
* @param {?} msgSrv
* @param {?} dictService
*/
constructor(modal, msgSrv, dictService) {
this.modal = modal;
this.msgSrv = msgSrv;
this.dictService = dictService;
this.isVisible = false;
this.isOkLoading = false;
this.searchSchema = {
properties: {
vkey: {
type: 'string',
title: '编码'
}
}
};
this.data = [];
this.dataList = {};
}
/**
* @return {?}
*/
ngOnInit() {
// console.log(this.nzTable);
this.dictService.getList(this.sf.value).subscribe((/**
* @param {?} res
* @return {?}
*/
(res) => {
this.data = res;
this.data.forEach((/**
* @param {?} item
* @return {?}
*/
item => {
this.dataList[item.id] = item;
}));
}));
}
/**
* @param {?} parentId
* @return {?}
*/
addChild(parentId) {
this.selectId = parentId;
this.add(false);
}
/**
* @param {?} isRoot
* @return {?}
*/
add(isRoot) {
/** @type {?} */
let parent;
if (!isRoot) {
if (!this.selectId) {
this.msgSrv.warning("请选择父节点");
return;
}
parent = this.dataList[this.selectId];
}
this.modal
.createStatic(SystemDictEditComponent, {
i: {}, isRoot: isRoot, parent: parent
})
.subscribe((/**
* @param {?} res
* @return {?}
*/
(res) => {
this.dataList[res.id] = res;
if (isRoot) {
this.data.push(res);
return;
}
if (!parent.children) {
parent.children = [];
parent.expand = true;
}
parent.children.push(res);
}));
}
/**
* @param {?} item
* @return {?}
*/
edit(item) {
this.modal
.createStatic(SystemDictEditComponent, { record: item })
.subscribe((/**
* @param {?} res
* @return {?}
*/
(res) => {
if (res.length > 1) {
this.dictService.getList().subscribe((/**
* @param {?} result
* @return {?}
*/
(result) => {
this.data = result;
this.data.forEach((/**
* @param {?} it
* @return {?}
*/
it => {
this.dataList[it.id] = it;
}));
}));
}
else {
item = Object.assign(item, res[0]);
this.dataList[res.id] = res[0];
}
}));
}
/**
* @param {?} data
* @param {?} $event
* @return {?}
*/
collapse(data, $event) {
if (!$event || data.children.length > 0) {
return;
}
this.dictService.getChildren(data.id).subscribe((/**
* @param {?} res
* @return {?}
*/
res => {
data.children = res;
data.children.forEach((/**
* @param {?} item
* @return {?}
*/
item => {
this.dataList[item.id] = item;
}));
}));
}
/**
* @return {?}
*/
deleteModal() {
this.isVisible = true;
}
/**
* @param {?} item
* @return {?}
*/
deleteOk(item) {
this.isOkLoading = true;
this.dictService.deleteById(item.id).subscribe((/**
* @param {?} res
* @return {?}
*/
res => {
this.isVisible = false;
this.isOkLoading = false;
this.msgSrv.success('删除成功');
//根节点
if (!item.pid) {
this.data = this.data.filter((/**
* @param {?} _item
* @return {?}
*/
_item => _item.id !== item.id));
this.dataList[item.id] = null;
return;
}
//子节点
this.dataList[item.pid].children =
this.dataList[item.pid].children.filter((/**
* @param {?} _item
* @return {?}
*/
_item => _item.id !== item.id));
}));
}
/**
* @return {?}
*/
deleteCancel() {
this.isVisible = false;
}
}
SystemDictComponent.decorators = [
{ type: Component, args: [{
selector: 'app-system-dict',
template: "<page-header [action]=\"phPhAction\">\r\n <ng-template #phPhAction>\r\n <nz-dropdown>\r\n <button acl [acl-ability]=\"'dict:add'\" nz-button nz-dropdown nzType=\"primary\">\r\n \u65B0\u5EFA\r\n <i class=\"anticon anticon-down\"></i>\r\n </button>\r\n <ul nz-menu>\r\n <li (click)=\"add(true)\" nz-menu-item>\r\n <a>\u6839\u8282\u70B9</a>\r\n </li>\r\n <li (click)=\"add(false)\" nz-menu-item>\r\n <a>\u5B50\u8282\u70B9</a>\r\n </li>\r\n </ul>\r\n </nz-dropdown>\r\n </ng-template>\r\n</page-header>\r\n<nz-card>\r\n <sf #sf mode=\"search\" [schema]=\"searchSchema\" (formSubmit)=\"ngOnInit()\" (formReset)=\"sf.reset($event)\"></sf>\r\n <!--<simple-table [data]=\"url\" [extraParams]=\"params\" [total]=\"total\" [columns]=\"columns\" [preDataChange]=\"dataChange\" [resReName]=\"{list: 'results' }\" (radioChange)=\"radioChange($event)\"> <!–<ng-template #expand let-item let-index=\"index\" let-column=\"column\"> {{ item.description }} </ng-template>–> <ng-template st-row=\"custom\" let-item let-index=\"index\"> <nz-tooltip [nzTitle]=\"'\u5E74\u9F84\uFF1A' + item.phone\"> <span nz-tooltip>tooltip: {{item.phone}}-{{index}}</span> </nz-tooltip> </ng-template> </simple-table>-->\r\n <nz-radio-group style=\"display: inline\" [(ngModel)]=\"selectId\">\r\n <nz-table style=\"margin-top: 16px\" #nzTable [nzData]=\"data\" [nzShowPagination]=\"false\" [nzFrontPagination]=\"false\" [nzBordered]=\"true\" [nzLoading]=\"dictService.http.loading\" [nzScroll]=\"{x:'2000px'}\">\r\n <thead>\r\n <tr>\r\n <th nzWidth=\"65px\" nzLeft=\"0px\"></th>\r\n <th nzWidth=\"200px\" nzLeft=\"65px\">\u540D\u79F0</th>\r\n <th>\u7F16\u7801</th>\r\n <th>\u5206\u7C7B</th>\r\n <th>\u5907\u6CE8</th>\r\n <th>\u6392\u5E8F</th>\r\n <!--<th>\u7248\u672C</th>-->\r\n <th>\u542F\u7528\u72B6\u6001</th>\r\n <th>\u521B\u5EFA\u65F6\u95F4</th>\r\n <th>\u4FEE\u6539\u65F6\u95F4</th>\r\n <th>\u521B\u5EFA\u8005</th>\r\n <th>\u64CD\u4F5C\u8005</th>\r\n <th nzWidth=\"150px\" nzRight=\"0px\" style=\"text-align: center;\">\u64CD\u4F5C</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-template #recursiveList let-data>\r\n <ng-template ngFor let-item [ngForOf]=\"data\">\r\n <tr>\r\n <td nzLeft=\"0px\">\r\n <label nz-radio [nzValue]=\"item.id\" *ngIf=\"!item.pid\"></label>\r\n </td>\r\n <td nzLeft=\"65px\" [nzIndentSize]=\"20\" [nzShowExpand]=\"item.children\" [(nzExpand)]=\"item.expand\" (nzExpandChange)=\"collapse(item,$event)\">{{item.vname}}</td>\r\n <td>{{item.vkey}}</td>\r\n <td>{{item.dictType}}</td>\r\n <td>{{item.remark}}</td>\r\n <td>{{item.sortNum}}</td>\r\n <!--<td>{{item.rsvn}}</td>-->\r\n <td>{{item.validText}}</td>\r\n <td>{{item.createTime}}</td>\r\n <td>{{item.updateTime}}</td>\r\n <td>{{item.creator}}</td>\r\n <td>{{item.operator}}</td>\r\n <td nzRight=\"0px\" style=\"width: 150px; text-align: center\">\r\n <a *ngIf=\"!item.pid\" (click)=\"addChild(item.id)\" acl [acl-ability]=\"'dict:add'\">\u6DFB\u52A0\u5B50\u8282\u70B9</a>\r\n <nz-divider *ngIf=\"!item.pid\" nzType=\"vertical\"></nz-divider>\r\n <nz-dropdown [acl]=\"{ ability: ['dict:edit', 'dict:remove'], mode: 'oneOf' }\">\r\n <a nz-dropdown>\r\n <i class=\"anticon anticon-down\"></i>\r\n </a>\r\n <ul nz-menu>\r\n <li acl [acl-ability]=\"'dict:edit'\" (click)=\"edit(item)\" nz-menu-item>\r\n <a>\u7F16\u8F91</a>\r\n </li>\r\n <li acl [acl-ability]=\"'dict:remove'\" nz-popconfirm *ngIf=\"!item.pid\" nzTitle=\"\u662F\u5426\u786E\u8BA4\u5220\u9664\u8BE5\u8BCD\u6839\u53CA\u5176\u4E0B\u6240\u6709\u8BCD?\" (nzOnConfirm)=\"deleteOk(item)\" (nzOnCancel)=\"deleteCancel()\" nz-menu-item>\r\n <a>\u5220\u9664</a>\r\n </li>\r\n <li acl [acl-ability]=\"'dict:remove'\" nz-popconfirm *ngIf=\"item.pid\" nzTitle=\"\u662F\u5426\u786E\u8BA4\u5220\u9664\u8BE5\u8BCD?\" (nzOnConfirm)=\"deleteOk(item)\" (nzOnCancel)=\"deleteCancel()\" nz-menu-item>\r\n <a>\u5220\u9664</a>\r\n </li>\r\n </ul>\r\n </nz-dropdown>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"item.expand && item.children?.length > 0\">\r\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: item.children }\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: data }\"></ng-container>\r\n </tbody>\r\n </nz-table>\r\n </nz-radio-group>\r\n</nz-card>",
styles: [":host ::ng-deep .ant-table-wrapper{margin-top:16px}"]
}] }
];
/** @nocollapse */
SystemDictComponent.ctorParameters = () => [
{ type: ModalHelper },
{ type: NzMessageService },
{ type: DictService }
];
SystemDictComponent.propDecorators = {
st: [{ type: ViewChild, args: ['st',] }],
sf: [{ type: ViewChild, args: ['sf',] }],
nzTable: [{ type: ViewChild, args: ['nzTable',] }]
};
if (false) {
/** @type {?} */
SystemDictComponent.prototype.isVisible;
/** @type {?} */
SystemDictComponent.prototype.isOkLoading;
/** @type {?} */
SystemDictComponent.prototype.st;
/** @type {?} */
SystemDictComponent.prototype.sf;
/** @type {?} */
SystemDictComponent.prototype.searchSchema;
/** @type {?} */
SystemDictComponent.prototype.nzTable;
/** @type {?} */
SystemDictComponent.prototype.selectId;
/** @type {?} */
SystemDictComponent.prototype.data;
/** @type {?} */
SystemDictComponent.prototype.dataList;
/**
* @type {?}
* @private
*/
SystemDictComponent.prototype.modal;
/**
* @type {?}
* @private
*/
SystemDictComponent.prototype.msgSrv;
/** @type {?} */
SystemDictComponent.prototype.dictService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGljdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZWNpcC9zeXN0ZW0vIiwic291cmNlcyI6WyJzcmMvZGljdC9kaWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQVksV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxXQUFXLEVBQVcsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFRMUMsTUFBTSxPQUFPLG1CQUFtQjs7Ozs7O0lBc0I5QixZQUNVLEtBQWtCLEVBQ2xCLE1BQXdCLEVBQ3pCLFdBQXdCO1FBRnZCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF2QmpDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFLcEIsaUJBQVksR0FBYTtZQUN2QixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFO29CQUNKLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxJQUFJO2lCQUNaO2FBQ0Y7U0FDRixDQUFDO1FBSUYsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLGFBQVEsR0FBRyxFQUFFLENBQUM7SUFPZCxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENB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SUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDOUIsT0FBTzthQUNSO1lBQ0QsS0FBSztZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVE7Z0JBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNOzs7O2dCQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxFQUFDLENBQUM7UUFDM0UsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7OztZQXBJRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsbWxLQUFvQzs7YUFHckM7Ozs7WUFicUIsV0FBVztZQUd6QixnQkFBZ0I7WUFHaEIsV0FBVzs7O2lCQWFoQixTQUFTLFNBQUMsSUFBSTtpQkFFZCxTQUFTLFNBQUMsSUFBSTtzQkFVZCxTQUFTLFNBQUMsU0FBUzs7OztJQWZwQix3Q0FBa0I7O0lBQ2xCLDBDQUFvQjs7SUFFcEIsaUNBQWlDOztJQUVqQyxpQ0FBaUM7O0lBQ2pDLDJDQU9FOztJQUVGLHNDQUFnRDs7SUFDaEQsdUNBQVM7O0lBQ1QsbUNBQVU7O0lBQ1YsdUNBQWM7Ozs7O0lBR1osb0NBQTBCOzs7OztJQUMxQixxQ0FBZ0M7O0lBQ2hDLDBDQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgX0h0dHBDbGllbnQsIE1vZGFsSGVscGVyIH0gZnJvbSAnQGRlbG9uL3RoZW1lJztcclxuaW1wb3J0IHsgU1RDb2x1bW4sIFNUQ29tcG9uZW50IH0gZnJvbSAnQGRlbG9uL2FiYyc7XHJcbmltcG9ydCB7U0ZDb21wb25lbnQsIFNGU2NoZW1hfSBmcm9tICdAZGVsb24vZm9ybSc7XHJcbmltcG9ydCB7TnpNZXNzYWdlU2VydmljZSwgTnpUYWJsZUNvbXBvbmVudH0gZnJvbSBcIm5nLXpvcnJvLWFudGRcIjtcclxuaW1wb3J0IHtDYWNoZVNlcnZpY2V9IGZyb20gXCJAZGVsb24vY2FjaGVcIjtcclxuaW1wb3J0IHtTeXN0ZW1EaWN0RWRpdENvbXBvbmVudH0gZnJvbSBcIi4vZWRpdC9lZGl0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0RpY3RTZXJ2aWNlfSBmcm9tIFwiQGVjaXAvc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3lzdGVtLWRpY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWN0LmNvbXBvbmVudC5sZXNzJ11cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTeXN0ZW1EaWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgaXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgaXNPa0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc3QnKSBzdDogU1RDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NmJykgc2Y6IFNGQ29tcG9uZW50O1xyXG4gIHNlYXJjaFNjaGVtYTogU0ZTY2hlbWEgPSB7XHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgIHZrZXk6IHtcclxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgICB0aXRsZTogJ+e8lueggSdcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ256VGFibGUnKSBuelRhYmxlOiBOelRhYmxlQ29tcG9uZW50O1xyXG4gIHNlbGVjdElkO1xyXG4gIGRhdGEgPSBbXTtcclxuICBkYXRhTGlzdCA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsSGVscGVyLFxyXG4gICAgcHJpdmF0ZSBtc2dTcnY6IE56TWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGljdFNlcnZpY2U6IERpY3RTZXJ2aWNlLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm56VGFibGUpO1xyXG4gICAgdGhpcy5kaWN0U2VydmljZS5nZXRMaXN0KHRoaXMuc2YudmFsdWUpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5kYXRhID0gcmVzO1xyXG4gICAgICB0aGlzLmRhdGEuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFMaXN0W2l0ZW0uaWRdID0gaXRlbTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFkZENoaWxkKHBhcmVudElkKSB7XHJcbiAgICB0aGlzLnNlbGVjdElkID0gcGFyZW50SWQ7XHJcbiAgICB0aGlzLmFkZChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBhZGQoaXNSb290IDogYm9vbGVhbikge1xyXG4gICAgbGV0IHBhcmVudDtcclxuICAgIGlmICghaXNSb290KSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RJZCkge1xyXG4gICAgICAgIHRoaXMubXNnU3J2Lndhcm5pbmcoXCLor7fpgInmi6nniLboioLngrlcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmVudCA9IHRoaXMuZGF0YUxpc3RbdGhpcy5zZWxlY3RJZF07XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGFsXHJcbiAgICAgIC5jcmVhdGVTdGF0aWMoU3lzdGVtRGljdEVkaXRDb21wb25lbnQsIHtcclxuICAgICAgICBpOiB7fSAsIGlzUm9vdDogaXNSb290LCBwYXJlbnQ6IHBhcmVudH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YUxpc3RbcmVzLmlkXSA9IHJlcztcclxuICAgICAgICBpZiAoaXNSb290KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGEucHVzaChyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXBhcmVudC5jaGlsZHJlbikge1xyXG4gICAgICAgICAgcGFyZW50LmNoaWxkcmVuID0gW107XHJcbiAgICAgICAgICBwYXJlbnQuZXhwYW5kID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gocmVzKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBlZGl0KGl0ZW0pIHtcclxuICAgIHRoaXMubW9kYWxcclxuICAgICAgLmNyZWF0ZVN0YXRpYyhTeXN0ZW1EaWN0RWRpdENvbXBvbmVudCwgeyByZWNvcmQ6IGl0ZW0gfSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYocmVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMuZGljdFNlcnZpY2UuZ2V0TGlzdCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzdWx0O1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaChpdCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRhTGlzdFtpdC5pZF0gPSBpdDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpdGVtID0gT2JqZWN0LmFzc2lnbihpdGVtLCByZXNbMF0pO1xyXG4gICAgICAgICAgdGhpcy5kYXRhTGlzdFtyZXMuaWRdID0gcmVzWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb2xsYXBzZShkYXRhOiBhbnksICRldmVudDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKCEkZXZlbnQgfHwgZGF0YS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpY3RTZXJ2aWNlLmdldENoaWxkcmVuKGRhdGEuaWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBkYXRhLmNoaWxkcmVuID0gcmVzO1xyXG4gICAgICBkYXRhLmNoaWxkcmVuLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhTGlzdFtpdGVtLmlkXSA9IGl0ZW07XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVNb2RhbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZU9rKGl0ZW0pIHtcclxuICAgIHRoaXMuaXNPa0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5kaWN0U2VydmljZS5kZWxldGVCeUlkKGl0ZW0uaWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzT2tMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubXNnU3J2LnN1Y2Nlc3MoJ+WIoOmZpOaIkOWKnycpO1xyXG4gICAgICAvL+agueiKgueCuVxyXG4gICAgICBpZiAoIWl0ZW0ucGlkKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcihfaXRlbSA9PiBfaXRlbS5pZCAhPT0gaXRlbS5pZCk7XHJcbiAgICAgICAgdGhpcy5kYXRhTGlzdFtpdGVtLmlkXSA9IG51bGw7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIC8v5a2Q6IqC54K5XHJcbiAgICAgIHRoaXMuZGF0YUxpc3RbaXRlbS5waWRdLmNoaWxkcmVuID1cclxuICAgICAgICB0aGlzLmRhdGFMaXN0W2l0ZW0ucGlkXS5jaGlsZHJlbi5maWx0ZXIoX2l0ZW0gPT4gX2l0ZW0uaWQgIT09IGl0ZW0uaWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVDYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbn1cclxuIl19