{"__symbolic":"module","version":4,"metadata":{"CeArrayComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"ce-array","template":"<div class=\"ce-array mb-1\">\n  <ul>\n    <li\n      *ngFor=\"let valueItem of valueArray; let i = index; trackBy: TrackByFn\"\n      class=\"{{prop.type === PropertyTypes.Object ? 'pt-2' : 'pt-1'}} pb-1 pl-2 pr-2\"\n      >\n      <div class=\"flex-fill d-flex\">\n        <ce-item\n          class=\"flex-fill\"\n          [mb0]=\"true\"\n          [context]=\"context\"\n          [propAndValue]=\"{ prop: prop, value: valueItem }\"\n          [showLabel]=\"false\"\n          (onChangeValue)=\"handleChangeValueItem(i, $event)\"></ce-item>\n      </div>\n      <div class=\"remove-btn\" (click)=\"handleRemoveValueItem(i)\">{{i}}</div>\n    </li>\n  </ul>\n  <div class=\"btn-add-padding\">\n    <button class=\"btn w-100 btn-add\"\n      (click)=\"handleAddValueItem()\"\n      >\n      <span class=\"fs-12 align-middle\">{{'add' | translate}}</span>\n      <i class=\"material-icons align-middle fs-16\">add</i>\n    </button>\n  </div>\n</div>"}]}],"members":{"propAndValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"context":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@gspwidget/widget-core","name":"WidgetPropertyService","line":27,"character":28}]}],"ngOnInit":[{"__symbolic":"method"}],"onChangeValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":35,"character":3}}]}],"handleChangeValueItem":[{"__symbolic":"method"}],"handleAddValueItem":[{"__symbolic":"method"}],"handleRemoveValueItem":[{"__symbolic":"method"}]}},"CeItemComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"ce-item","template":"\n<!-- 非 Object -->\n<div class=\"row no-gutters\" [class.mb-0]=\"mb0\">\n  <ng-container *ngIf=\"prop.type!=PropertyTypes.Object\">\n    <ng-container [ngSwitch]=\"prop.type\">\n      <label\n        nz-tooltip\n        [nzTitle]=\"(prop.displayName || prop.name) | translate\"\n        nzPlacement=\"left\"\n        *ngIf=\"showLabel\"\n        class=\"col-sm-3 col-form-label text-truncate\">{{(prop.displayName || prop.name) | translate}}</label>\n      <div\n        [ngClass]=\"{\n          'col-9': showLabel,\n          'col-12': !showLabel,\n          'col-form-right': showLabel\n        }\"\n        class=\"\">\n\n        <!-- Bool -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.Bool\">\n          <div class=\"custom-control custom-checkbox\">\n            <nz-switch\n              nzSize=\"small\"\n              [ngModel]=\"value\"\n              (ngModelChange)=\"handleChangeValue($event)\"\n              ></nz-switch>\n            <!-- <input type=\"checkbox\"\n              class=\"custom-control-input\"\n              [formControl]=\"formControl\" [id]=\"id\">\n            <label class=\"custom-control-label\" [for]=\"id\"></label> -->\n          </div>\n        </ng-container>\n\n        <!-- Color -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.Color\">\n          <!-- <div\n            [cpPresetColors]=\"['#FF9300', '#388FFF', '#5AC1C3', '#FEC520']\"\n            cpPosition=\"bottom\"\n            [cpPositionOffset]=\"'-50%'\"\n            [cpPositionRelativeToArrow]=\"true\"\n            [(colorPicker)]=\"value\"\n            (colorPickerChange)=\"handleChangeValue($event)\"\n            class=\"d-inline-block color-picker-custom\"\n            >\n            <div class=\"color-indicator align-middle\"\n              [style.background]=\"value\"></div>\n            <div class=\"d-inline-block color-value align-middle ml-2\">{{value}}</div>\n          </div> -->\n          <epp-color-picker\n            [list]=\"colors\"\n            [(color)]=\"value\"\n            (colorChange)=\"handleChangeValue($event)\">\n          </epp-color-picker>\n        </ng-container>\n\n        \n        <!-- Enum -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.Enum\">\n          <select\n            class=\"form-control form-control-sm\"\n            [formControl]=\"formControl\">\n            <option\n              *ngFor=\"let item of prop.enumOption.items\"\n              [value]=\"item.replace ? item : item.value\">\n              {{(item.replace ? item : (item.displayName || item.value)) | translate}}\n            </option>\n          </select>\n        </ng-container>\n\n        <!-- Enum Help -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.SelectHelp\">\n          <div\n            *ngIf=\"!selectHelpData\"\n            class=\"form-control form-control-sm\"\n            style=\"padding-top: 2px;\"\n            >{{'loading' | translate}}</div>\n          <select\n            *ngIf=\"selectHelpData\"\n            class=\"form-control form-control-sm\"\n            name=\"aa\"\n            [formControl]=\"formControl\">\n            <option *ngFor=\"let item of selectHelpData\"\n              [value]=\"item.replace ? item : item[prop.selectHelpOption.valueField]\">\n              {{\n                (\n                  item.replace ?\n                  item :\n                  (item[prop.selectHelpOption.displayField] || item[prop.selectHelpOption.valueField])\n                )  | translate\n              }}\n            </option>\n          </select>\n        </ng-container>\n\n        <!-- Number -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.Number\">\n          <input type=\"number\"\n            class=\"form-control form-control-sm\"\n            [formControl]=\"formControl\" >\n        </ng-container>\n        \n        <!-- Data Field -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.DataField\">\n          <!-- 有 agg，下拉选择不可手输 -->\n          <nz-select\n            class=\"w-100\"\n            *ngIf=\"context?.extra?.agg?.datasetId\"\n            [ngModel]=\"value?.name\"\n            (ngModelChange)=\"handleSelectCol($event)\"\n            >\n            <!-- [(ngModel)]=\"fs.date.rangeDefault.beforeUnit\" -->\n            <nz-option\n              *ngFor=\"let col of context.extra.agg?.cols\"\n              [nzLabel]=\"col.label || col.name\"\n              [nzValue]=\"col.name\"\n              ></nz-option>\n            <nz-option\n              *ngFor=\"let col of context.extra.agg?.computedCols\"\n              [nzLabel]=\"col.label || col.name\"\n              [nzValue]=\"col.name\"\n              ></nz-option>\n          </nz-select>\n          <!-- 无 agg，允许手输。auto complete 也没有必要了 -->\n          <ng-container\n            *ngIf=\"!context?.extra?.agg?.datasetId\">\n            <input\n              class=\"form-control form-control-sm\"\n              [ngModel]=\"getColShowLabel(value?.name, value?.label)\"\n              [ngModelOptions]=\"{updateOn: 'blur'}\"\n              (ngModelChange)=\"handleChangeDataFieldValue($event)\"\n              [nzAutocomplete]=\"dataFieldAuto\" >\n            <!-- TODO: 若确定无用，删除 -->\n            <nz-autocomplete #dataFieldAuto >\n              <nz-auto-option\n                *ngFor=\"let col of context.extra.agg?.cols\"\n                (click)=\"handleSelectCol(col)\"\n                [nzValue]=\"getColShowLabel(col.name, col.i18nLabel)\"\n                >{{getColShowLabel(col.name, col.i18nLabel)}}</nz-auto-option>\n              <nz-auto-option\n                *ngFor=\"let col of context.extra.agg?.computedCols\"\n                (click)=\"handleSelectCol(col)\"\n                [nzValue]=\"getColShowLabel(col.name, col.i18nLabel)\"\n                >{{getColShowLabel(col.name, col.i18nLabel)}}</nz-auto-option>\n            </nz-autocomplete>\n          </ng-container>\n        </ng-container>\n\n        <!-- Help -->\n        <!-- TODO: 统一成 help2 的 <help-input> -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.Help\">\n          <div class=\"help-input d-flex justify-content-between align-items-center\">\n            <input type=\"text\"\n              (click)=\"handleClickOpenHelp()\"\n              class=\"help-input form-control form-control-sm flex-fill\"\n              readonly\n              placeholder=\"({{'emptyAdj' | translate}})\"\n              [ngModel]=\"value?.name || value\"\n              >\n            <i class=\"material-icons\">adjust</i>\n          </div>\n        </ng-container>\n\n        <!-- Help2 -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.Help2\">\n          <!-- [xcParts]=\"prop.help2Option.\" -->\n          <xc-help-input\n            [xcPreset]=\"prop.help2Option.preset\"\n            [xcLabel]=\"value?.label\"\n            (xcValueChange)=\"handleHelp2ValueChange($event)\"\n            ></xc-help-input>\n        </ng-container>\n\n        <!-- Filter -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.Filter\">\n          <div class=\"help-input d-flex justify-content-between align-items-center\">\n            <input type=\"text\"\n              [value]=\"value ? value?.type + ' filter' : undefined\"\n              (click)=\"handleClickOpenFilter()\"\n              class=\"help-input form-control form-control-sm flex-fill\"\n              readonly\n              placeholder=\"({{'emptyAdj' | translate}})\"\n              [formControl]=\"formControl\" >\n            <i class=\"material-icons\">adjust</i>\n          </div>\n        </ng-container>\n\n        <!-- TODO: Data Param -->\n        <!-- 没有的情况 -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.DataParam\">\n          <div\n            *ngIf=\"!context.extra.dataParams\"\n            class=\"form-control form-control-sm\"\n            style=\"padding-top: 2px;\"\n            >{{'loading' | translate}}</div>\n          <select\n            *ngIf=\"context.extra.dataParams\"\n            class=\"form-control form-control-sm\"\n            name=\"aa\"\n            [formControl]=\"formControl\">\n            <option\n              *ngFor=\"let dp of context.extra.dataParams\"\n              [value]=\"dp.id\" >{{dp.name}}</option>\n          </select>\n        </ng-container>\n\n        <!-- Html -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.Html\">\n          <!-- 编辑器 -->\n          <div\n            class=\"help-input2 d-flex align-items-center justify-content-center fs-12\"\n            (click)=\"handleOpenEditor('html')\">\n            HTML 编辑器\n            <i class=\"mti fs-14 ml-1\">launch</i>\n          </div>\n          <!-- <textarea\n            rows=\"4\"\n            class=\"form-control flex-fill\"\n            [ngModel]=\"value\"\n            (ngModelChange)=\"handleChangeValue($event)\"></textarea> -->\n        </ng-container>\n\n        <!-- Scss -->\n        <ng-container *ngSwitchCase=\"PropertyTypes.Scss\">\n          <textarea\n            rows=\"4\"\n            class=\"form-control flex-fill\"\n            [(ngModel)]=\"value\"\n            (blur)=\"handleBlurScss()\"\n            ></textarea>\n            <!-- (ngModelChange)=\"handleChangeValue($event)\" -->\n        </ng-container>\n\n        <!-- 默认为 text -->\n        <ng-container *ngSwitchDefault>\n          <input\n            *ngIf=\"prop.textOption && !prop.textOption.i18n\"\n            type=\"text\"\n            placeholder=\"({{'emptyAdj' | translate}})\"\n            class=\"form-control form-control-sm flex-fill\"\n            [ngModel]=\"value\"\n            (ngModelChange)=\"handleChangeValue($event)\">\n          <lib-i18n-input\n            *ngIf=\"!prop.textOption || prop.textOption.i18n\"\n            placeholder=\"({{'emptyAdj' | translate}})\"\n            [value]=\"value\"\n            (valueChange)=\"handleChangeValue($event)\"></lib-i18n-input>\n        </ng-container>\n      \n      </div>\n    </ng-container>\n  </ng-container>\n\n\n  <!-- Object -->\n  <ng-container *ngIf=\"prop.type==PropertyTypes.Object\">\n    <!-- Object 专有 label -->\n    <div \n      *ngIf=\"showLabel\"\n      class=\"object-label-row d-flex align-items-center w-100 mb-2\">\n      <label class=\"mr-1 ml-3 flex-shrink-0\">{{(prop.displayName || prop.name) | translate}}</label>\n      <div class=\"line flex-fill\"></div>\n    </div>\n    <div class=\"w-100\" [class.mb-2]=\"!mb0\">\n      <config-editor2\n        [extra]=\"context.extra\"\n        [showCategory]=\"false\"\n        [propsAndValues]=\"objPropsAndValues\"\n        (onChange)=\"handleChangeObjectValue($event)\"></config-editor2>\n    </div>\n  </ng-container>\n</div>\n"}]}],"members":{"context":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"showLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"mb0":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"propAndValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"onChangeValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":88,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":136,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":137,"character":16},{"__symbolic":"reference","name":"HelpService"},{"__symbolic":"reference","module":"@gspwidget/widget-core","name":"WidgetPropertyService","line":139,"character":27},{"__symbolic":"reference","module":"ng-zorro-antd/modal","name":"NzModalService","line":140,"character":19},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":141,"character":23},{"__symbolic":"reference","module":"@gspwidget/util","name":"DatasetRepo","line":142,"character":25},{"__symbolic":"reference","name":"XcHelpService"}]}],"ngOnInit":[{"__symbolic":"method"}],"handleChangeObjectValue":[{"__symbolic":"method"}],"handleChangeDataFieldValue":[{"__symbolic":"method"}],"handleSelectCol":[{"__symbolic":"method"}],"getColShowLabel":[{"__symbolic":"method"}],"findColInAggByName":[{"__symbolic":"method"}],"handleClickOpenHelp":[{"__symbolic":"method"}],"handleHelp2ValueChange":[{"__symbolic":"method"}],"handleClickOpenFilter":[{"__symbolic":"method"}],"handleBlurScss":[{"__symbolic":"method"}],"handleOpenEditor":[{"__symbolic":"method"}]}},"CEGroupValuePayload":{"__symbolic":"interface"},"CEGroup":{"__symbolic":"interface"},"ConfigEditor2Component":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"config-editor2","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":23,"character":19},"member":"OnPush"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":24,"character":17},"member":"None"},"template":"<div class=\"config-editor\">\n\n  <accordion *ngIf=\"showCategory\" [isAnimated]=\"true\">\n    <accordion-group\n      *ngFor=\"let category of propCategories\"\n      [isOpen]=\"true\" >\n      <div accordion-heading\n        class=\"heading d-flex justify-content-between\" >\n        <div class=\"d-flex align-items-center\">\n          <i class=\"material-icons status-icon mr-2\">chevron_right</i>\n          {{category.name | translate}}\n        </div>\n        <div class=\"d-flex align-items-center\">\n          <nz-dropdown nzTrigger=\"click\" class=\"d-flex\">\n            <i\n              nz-dropdown\n              class=\"material-icons\"\n              >more_vert</i>\n            <ul nz-menu nzSelectable>\n              <li\n                (click)=\"handleCopyCEGroupPVs($event, category)\"\n                nz-menu-item\n                >复制此组值</li>\n              <li\n                nz-menu-item\n                (click)=\"handlePasteCEGroupPVs($event, category)\"\n                >粘贴值到此组</li>\n            </ul>\n          </nz-dropdown>\n        </div>\n      </div>\n      <ng-container *ngTemplateOutlet=\"ceList; context: {$implicit: category.children}\"></ng-container>\n    </accordion-group>\n  </accordion>\n\n  <ng-container *ngIf=\"!showCategory\">\n    <ng-container *ngTemplateOutlet=\"ceList; context: {$implicit: props}\"></ng-container>\n  </ng-container>\n\n</div>\n<ng-template #ceList let-props>\n  <ul>\n    <!-- -len:{{props.length}}- -->\n    <li *ngFor=\"let prop of props\">\n      <!-- -name: {{prop.name}} : {{!prop.ifShow || prop.ifShow(propValues)}}- -->\n      <ng-container *ngIf=\"!prop.ifShow || propValues && prop.ifShow(propValues)\">\n        <!-- 非数组 -->\n        <ce-item\n          *ngIf=\"!prop.isArray && propValues\"\n          [context]=\"{\n            extra: extra\n          }\"\n          [propAndValue]=\"{ prop: prop, value: propValues[prop.name] }\"\n          (onChangeValue)=\"handleValueChange(prop, $event)\"\n          ></ce-item>\n\n        <!-- 数组 -->\n        <div *ngIf=\"prop.isArray\" class=\"row no-gutters\">\n          <label\n            nz-tooltip\n            [nzTitle]=\"(prop.displayName || prop.name) | translate\"\n            nzPlacement=\"left\"\n            class=\"col-sm-3 col-form-label\">{{(prop.displayName || prop.name) | translate}}</label>\n          <div class=\"col-sm-9 col-form-right\">\n            <!-- <span *ngIf=\"prop.isArray && propValues[prop.name]\"\n              class=\"length\">({{propValues[prop.name].length}}项)</span> -->\n            <ce-array\n              [context]=\"{\n                extra: extra\n              }\"\n              [propAndValue]=\"{ prop: prop, value: propValues[prop.name] }\"\n              (onChangeValue)=\"handleValueChange(prop, $event)\"\n              ></ce-array>\n          </div>\n        </div>\n\n      </ng-container>\n    </li>\n  </ul>\n</ng-template>","styles":[".config-editor accordion accordion-group .heading{font-size:13px;font-weight:700;padding:4px 5px;background:rgba(241,241,246,.43);border-top:1px solid #e0e4e8}.config-editor accordion accordion-group .heading:first-child{border-top:none}.config-editor accordion accordion-group .card{background:0 0}.config-editor accordion accordion-group .material-icons{font-size:18px;transition:transform .3s}.config-editor accordion accordion-group.panel-open .status-icon{transform:rotate(90deg)}.config-editor accordion accordion-group .panel-collapse{padding:10px 10px 5px 5px}.config-editor>ul>li:last-child ce-item>.row{margin-bottom:0!important}.config-editor .row{margin-bottom:5px}.config-editor .row .col-form-label{font-size:12px;padding:4px 0}.config-editor .row .col-form-right{padding:0 0 0 10px}.config-editor .row .col-form-right.col-form-right-plain{padding:4px 10px}.config-editor .row .custom-checkbox{padding-top:2px}.config-editor .row .color-picker-custom{cursor:default}.config-editor .row .color-picker-custom .color-indicator{width:22px;height:22px;display:inline-block;border-radius:4px;border:1px solid rgba(0,0,0,.14)}.config-editor .row .color-picker-custom .color-value{font-size:12px;font-weight:700}.config-editor ce-array{width:100%}.config-editor ce-array .ce-array>ul>li{display:flex;align-items:stretch;position:relative;background:#f9f9fb;margin-bottom:5px;border-radius:5px}.config-editor ce-array .ce-array>ul>li:hover .remove-btn::after{content:'close';font-family:'Material Icons';position:absolute;left:0;top:0;width:100%;background:#e10000;font-size:14px}.config-editor ce-array .ce-array>ul>li .index{position:absolute;font-size:24px;top:0;left:10px;text-align:right;font-weight:700;color:#dbdee5}.config-editor ce-array .ce-array>ul>li .remove-btn{cursor:pointer;border-radius:3px;transition:.2s;background:#bcbcce;position:absolute;top:0;right:-10px;color:#fff;width:15px;height:15px;text-align:center;line-height:15px;font-size:.3em;zoom:.9;overflow:hidden}.config-editor ce-array .btn-add-padding .btn-add{box-shadow:none;padding:4px;background:#f9f9fb;color:#7e7e7e;border-radius:5px}.config-editor ce-array .btn-add-padding .btn-add:hover{background:#f3f3f5;color:inherit}.config-editor ce-item .form-control-sm{height:24px;padding:0 5px}.config-editor .object-label-row label{font-size:13px;opacity:.6}.config-editor .object-label-row .line{border-top:1px solid rgba(0,0,0,.1);width:100%}.help-input{cursor:pointer}.help-input:hover i{color:#687380}.help-input input{background:rgba(234,237,240,.33);cursor:pointer}.help-input input:focus{box-shadow:none}.help-input i{font-size:14px;color:#b2bbc6;margin:0 5px;transition:.3s}.help-input2{background:#f9f9fb;color:#919191;border-radius:5px;padding:3px 10px;cursor:pointer}"]}]}],"members":{"onChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":29,"character":3}}]}],"copyGroupValues":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":30,"character":3}}]}],"pasteGroupValues":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":3}}]}],"propsAndValues":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"showCategory":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"extra":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":68,"character":15}]}],"handleValueChange":[{"__symbolic":"method"}],"_changeValue":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"handleCopyCEGroupPVs":[{"__symbolic":"method"}],"handlePasteCEGroupPVs":[{"__symbolic":"method"}]}},"ConfigEditor2Module":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":18,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ConfigEditor2Component"},{"__symbolic":"reference","name":"CeArrayComponent"},{"__symbolic":"reference","name":"CeItemComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":25,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/auto-complete","name":"NzAutocompleteModule","line":26,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/dropdown","name":"NzDropDownModule","line":27,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":29,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":30,"character":4},{"__symbolic":"reference","module":"ngx-bootstrap/accordion","name":"AccordionModule","line":32,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":33,"character":4},{"__symbolic":"reference","name":"I18nInputModule"},{"__symbolic":"reference","name":"EppColorPickerModule"},{"__symbolic":"reference","module":"ng-zorro-antd/tooltip","name":"NzToolTipModule","line":37,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/switch","name":"NzSwitchModule","line":38,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/select","name":"NzSelectModule","line":39,"character":4},{"__symbolic":"reference","name":"XcHelp2Module"}],"exports":[{"__symbolic":"reference","name":"ConfigEditor2Component"},{"__symbolic":"reference","name":"CeArrayComponent"},{"__symbolic":"reference","name":"CeItemComponent"}]}]}],"members":{}},"Lang":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}]}},"I18N_INPUT_CONFIG":{"__symbolic":"class","members":{}},"I18nInputComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":24,"character":1},"arguments":[{"selector":"lib-i18n-input","template":"\n<div class=\"i18n-input position-relative\">\n  <!-- [formControl]=\"mainInputControl\" -->\n  <input type=\"text\"\n    *ngIf=\"innerValue\"\n    #mainInput=\"ngModel\"\n    [placeholder]=\"placeholder\"\n    class=\"form-control form-control-sm\"\n    [(ngModel)]=\"innerValue[curLang]\"\n    [ngModelOptions]=\"{updateOn: valueChangeOnBlur ? 'blur' : 'change'}\"\n    (ngModelChange)=\"handleInputChange()\"\n    [required]=\"required\"\n    [maxlength]=\"maxLength\"\n    >\n  <!-- 多语字段按钮 -->\n  <nz-dropdown\n    nzTrigger=\"click\"\n    nzPlacement=\"bottomRight\"\n    [nzClickHide]=\"false\"\n    [(nzVisible)]=\"showingDropdown\">\n    <span nz-dropdown [class.active]=\"showingDropdown\" class=\"open-icon material-icons\">language</span>\n    <ul nz-menu style=\"width: 300px\">\n      <li\n        class=\"d-flex align-items-center pl-2 pr-2 pt-1\"\n        *ngFor=\"let lang of orderedLangs\"\n        >\n        <label style=\"width: 80px\" class=\"col-form-label mr-2 fs-12\">{{('lang:'+lang.code) | translate}}</label>\n        <input\n          class=\"flex-fill\"\n          [(ngModel)]=\"tempValue[lang.code]\"\n          class=\"form-control form-control-sm\"\n          type=\"text\"\n          [required]=\"required\"\n          [maxlength]=\"maxLength\"\n          >\n      </li>\n      <li class=\"d-flex justify-content-end pl-2 pr-2 pt-2 pb-1\">\n        <button class=\"btn btn-primary mr-1\" (click)=\"handleConfirm()\">{{'confirm' | translate}}</button>\n        <button class=\"btn btn-secondary\" (click)=\"handleCancel()\">{{'cancel' | translate}}</button>\n      </li>\n    </ul>\n  </nz-dropdown>\n</div>","styles":[".i18n-input .open-icon{position:absolute;top:0;font-size:16px;right:0;color:#dcdcdc;cursor:pointer;height:100%;display:flex;align-items:center;padding:5px;transition:.3s}"]}]}],"members":{"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"maxLength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"valueChangeOnBlur":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"mainInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":38,"character":3},"arguments":["mainInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":60,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":58,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":59,"character":15},{"__symbolic":"reference","name":"I18N_INPUT_CONFIG"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"setLangs":[{"__symbolic":"method"}],"setMainLang":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"handleInputChange":[{"__symbolic":"method"}],"handleConfirm":[{"__symbolic":"method"}],"handleCancel":[{"__symbolic":"method"}]}},"I18nInputModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"I18nInputComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/dropdown","name":"NzDropDownModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":12,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":13,"character":4}],"exports":[{"__symbolic":"reference","name":"I18nInputComponent"}]}]}],"members":{}},"DashboardCommonModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"declarations":[],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":17,"character":4},{"__symbolic":"reference","module":"@gspwidget/widget-core","name":"WidgetCoreModule","line":18,"character":4},{"__symbolic":"reference","name":"SearchInputModule"},{"__symbolic":"reference","name":"HelpModule"}],"exports":[{"__symbolic":"reference","name":"SearchInputComponent"},{"__symbolic":"reference","name":"WidgetProjectPreviewPageModule"},{"__symbolic":"reference","name":"ConfigEditor2Module"},{"__symbolic":"reference","name":"HelpModule"},{"__symbolic":"reference","name":"EppPasswordModule"}]}]}],"members":{}},"DraggablePortletListModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"DraggablePortletListComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/menu","name":"NzMenuModule","line":12,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":13,"character":4}],"exports":[{"__symbolic":"reference","name":"DraggablePortletListComponent"}]}]}],"members":{}},"DraggablePortletListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":27,"character":1},"arguments":[{"selector":"pl-draggable-portlet-list","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":31,"character":19},"member":"OnPush"},"template":"\n<ul\n  class=\"portlets-tree dashboard-menu flex-shrink-0 h-100 pb-4 overflow-auto\"\n  nz-menu\n  nzMode=\"inline\"\n  style=\"user-select:none;\">\n  <ng-container *ngTemplateOutlet=\"menuTpl; context: { $implicit: tree }\"></ng-container>\n  <ng-template #menuTpl let-menus>\n    <ng-container *ngFor=\"let menu of menus\">\n      <!-- folder -->\n      <li\n        *ngIf=\"!menu.isPortlet\"\n        [nzDisabled]=\"menu.isEmpty\"\n        nz-submenu\n        [nzPaddingLeft]=\"menu.layer * 15\"\n        (nzOpenChange)=\"handleSubmenuOpenChange($event, menu)\"\n        >\n        <span title>\n          <i class=\"icon-open material-icons align-middle\">folder_open</i>\n          <i class=\"icon-not-open material-icons align-middle\">folder</i>\n          {{ menu.title | translate }}</span>\n        <ul>\n          <ng-container *ngTemplateOutlet=\"menuTpl; context: { $implicit: menu.children }\"></ng-container>\n        </ul>\n      </li>\n      <!-- portlet -->\n      <li\n        *ngIf=\"menu.isPortlet\"\n        nz-menu-item\n        [nzPaddingLeft]=\"(menu.layer+1) * 15\"\n        draggable=\"true\"\n        (dragstart)=\"handleWidgetDragStart(menu.portlet, $event)\"\n        >\n        <span title>\n          <!-- <img *ngIf=\"menu.portlet.widget.logoImgUrl\"\n            style=\"width: 20px; height: 20px; filter:grayscale(1)\"\n            [src]=\"menu.portlet.widget.logoImgUrl\"\n            class=\"widget-logo\"> -->\n        <!-- class=\"d-flex align-items-center\" -->\n          <!-- <span class=\"material-icons mr-2 theme-color\" style=\"font-size: 10px\">fiber_manual_record</span> -->\n          {{ menu.portlet.name }}\n        </span>\n      </li>\n    </ng-container>\n  </ng-template>\n</ul>\n","styles":["::ng-deep ul.portlets-tree .ant-menu-submenu>.ant-menu{background:0 0}::ng-deep ul.portlets-tree .ant-menu-item,::ng-deep ul.portlets-tree .ant-menu-submenu-title{font-size:14px}::ng-deep ul.portlets-tree .ant-menu-item:not(:last-child){margin-bottom:0}::ng-deep ul.portlets-tree li.ant-menu-item{margin:0;transition:.3s;cursor:-webkit-grab;cursor:grab}::ng-deep ul.portlets-tree li.ant-menu-item:hover{background:linear-gradient(225deg,#3a98ff14 0,#0971ff08 100%)}::ng-deep ul.portlets-tree .icon-not-open,::ng-deep ul.portlets-tree .icon-open{color:#eab05a;font-size:20px;margin-right:5px}::ng-deep ul.portlets-tree .icon-open{display:none}::ng-deep ul.portlets-tree .ant-menu-submenu-open>div>span>.icon-not-open{display:none}::ng-deep ul.portlets-tree .ant-menu-submenu-open>div>span>.icon-open{display:inline-block}"]}]}],"members":{"dragPortlet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":40,"character":22},{"__symbolic":"reference","module":"@gspwidget/util","name":"PortletRepo","line":41,"character":25},{"__symbolic":"reference","module":"@gspwidget/util","name":"IgixRepo","line":42,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":43,"character":15}]}],"ngOnInit":[{"__symbolic":"method"}],"initBAMenu":[{"__symbolic":"method"}],"handleWidgetDragStart":[{"__symbolic":"method"}],"handleSubmenuOpenChange":[{"__symbolic":"method"}]}},"EppColorPickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"epp-color-picker","template":"<div class=\"epp-color-picker\">\n  <nz-dropdown nzTrigger=\"click\">\n    <div\n      nz-dropdown\n      >\n      <ng-container *ngIf=\"colorBlock; else textTempalte\">\n        <ng-container *ngTemplateOutlet=\"colorBlock\"></ng-container>\n      </ng-container>\n      <ng-template #textTempalte>\n        <div\n          class=\"color-block\"\n          [ngStyle]=\"{'background': color?.indexOf(',')>-1? 'linear-gradient(to right,'+ color +')': color}\"\n          >\n        </div>\n      </ng-template>\n    </div>\n    <div>\n      <div nz-menu class=\"colorList\">\n        <!-- <i *ngFor=\"let item of list\" *ngIf=\"!item.contains(',')\" [ngStyle]=\"{'background': item}\" class=\"color\" (click)=\"colorSelect(item)\"></i> -->\n        <i *ngFor=\"let item of list\"\n          [ngStyle]=\"{'background': item.indexOf(',')>-1? 'linear-gradient(to right,'+ item +')': item}\"\n          class=\"color\"\n          (click)=\"colorSelect(item)\"\n          ></i>\n      </div>\n    </div>\n  </nz-dropdown>\n</div>","styles":["::ng-deep .epp-color-picker .color-block{width:60px;height:26px;border-radius:2px;cursor:pointer}.colorList{display:flex;flex-wrap:wrap;width:220px;padding:6px;background:#fff}.colorList .color{width:20px;height:20px;margin:3px;transition:.1s}.colorList .color:hover{cursor:pointer;transform:scale(1.1);transition:.1s}"]}]}],"members":{"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"colorChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":11,"character":3}}]}],"colorBlock":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":12,"character":3},"arguments":["colorBlock"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"colorSelect":[{"__symbolic":"method"}]}},"EppColorPickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"EppColorPickerComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/dropdown","name":"NzDropDownModule","line":10,"character":4}],"exports":[{"__symbolic":"reference","name":"EppColorPickerComponent"}]}]}],"members":{}},"ErrorNotificationService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ng-zorro-antd/notification","name":"NzNotificationService","line":12,"character":18}]}],"init":[{"__symbolic":"method"}],"notify":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FeFilterModalComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"lib-fe-filter-modal","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":9,"character":19},"member":"OnPush"},"template":"\n<div class=\"d-flex flex-column flex\" style=\"height: 60vh\">\n  <div class=\"preview\" style=\"min-height: 60px;\">\n    <filter\n      [filterSchema]=\"fs\"\n    ></filter>\n  </div>\n  <!-- form -->\n  <div class=\"flex-fill overflow-auto\">\n    <div class=\"form-group row\" >\n      <label class=\"col-sm-3 col-form-label required\">name</label>\n      <div class=col-sm-4>\n        <lib-i18n-input\n          [maxLength]=\"50\"\n          [(value)]=\"fs.i18nName\"\n          ></lib-i18n-input>\n      </div>\n      <label class=\"col-sm-2 col-form-label required\">showName</label>\n      <div class=col-sm-3>\n        <div class=\"custom-control custom-checkbox\">\n          <input\n            id=\"showName\"\n            type=\"checkbox\"\n            [(ngModel)]=\"fs.showName\"\n            class=\"custom-control-input\">\n          <label class=\"custom-control-label\" for=\"showName\"></label>\n        </div>\n      </div>\n    </div>\n    <!-- 类型 -->\n    <div class=\"form-group row\" >\n      <label class=\"col-sm-3 col-form-label required\">筛选类型</label>\n      <div class=col-sm-9>\n        <nz-radio-group\n          [(ngModel)]=\"fs.type\"\n          [nzButtonStyle]=\"'solid'\"\n          nzSize=\"small\"\n          (ngModelChange)=\"handleChangeType()\"\n          >\n          <!-- (ngModelChange)=\"tryNRefreshIntactData()\" -->\n          <label nz-radio-button nzValue=\"date\">{{'date' | translate}}</label>\n          <label nz-radio-button nzValue=\"enum\">{{'enum' | translate}}</label>\n          <label nz-radio-button nzValue=\"number\">{{'number' | translate}}</label>\n          <label nz-radio-button nzValue=\"text\">{{'text' | translate}}</label>\n          <!-- <label nzDisabled nz-radio-button nzValue=\"help\">{{'help' | translate}}</label> -->\n        </nz-radio-group>\n      </div>\n    </div>\n    <hr class=\"mt-1 mb-2\">\n    <!-- 筛选类型说明 -->\n    <!-- <div>{{typeNameMap[fs.type]}}型筛选</div> -->\n\n    <!-- date -->\n    <ng-container *ngIf=\"fs.type === 'date'\">\n      <!-- date.type -->\n      <div class=\"form-group row\" >\n        <label class=\"col-sm-3 col-form-label required\">日期类型</label>\n        <div class=col-sm-9>\n          <nz-radio-group [(ngModel)]=\"fs?.date.type\" [nzButtonStyle]=\"'solid'\" nzSize=\"small\">\n            <label nz-radio-button nzValue=\"single\">{{'single' | translate}}</label>\n            <label nz-radio-button nzValue=\"range\">{{'range' | translate}}</label>\n            <label nz-radio-button nzValue=\"lastTimeEnum\">{{'lastTimeEnum' | translate}}</label>\n          </nz-radio-group>\n        </div>\n      </div>\n      <div\n        *ngIf=\"fs.date.type === 'single'\"\n        class=\"form-group row\">\n        <label class=\"col-sm-3 col-form-label required\">singleUnit</label>\n        <div class=col-sm-9>\n          <nz-radio-group [(ngModel)]=\"fs?.date.singleUnit\" [nzButtonStyle]=\"'solid'\" nzSize=\"small\">\n            <label nz-radio-button nzValue=\"year\">{{'year' | translate}}</label>\n            <label nz-radio-button nzValue=\"month\">{{'month' | translate}}</label>\n            <label nz-radio-button nzValue=\"day\">{{'day' | translate}}</label>\n          </nz-radio-group>\n        </div>\n      </div>      \n      <!-- single unit deafult -->\n      <div\n        *ngIf=\"fs.date.type === 'single'\"\n        class=\"form-group row\">\n        <label class=\"col-sm-3 col-form-label required\">singleDefault</label>\n        <div class=col-sm-9>\n          <nz-radio-group [(ngModel)]=\"fs?.date.singleDefaultType\">\n            <label nz-radio nzValue=\"current\">\n              {{'current' | translate}}{{fs.date.singleUnit | translate}}\n            </label>\n            <label nz-radio nzValue=\"specified\">\n              specified\n              <nz-date-picker [(ngModel)]=\"fs.date.singleDefaultSpecified\"></nz-date-picker>\n            </label>\n          </nz-radio-group>\n        </div>\n      </div>\n      <!-- range -->\n      <ng-container *ngIf=\"fs.date.type === 'range'\">\n        <div class=\"form-group row\">\n          <label class=\"col-sm-3 col-form-label required\">default-start</label>\n          <div class=col-sm-9>\n            <nz-input-group nzCompact>\n              <nz-input-number [nzMin]=\"0\" [(ngModel)]=\"fs.date.rangeDefault.beforeNum\"></nz-input-number>\n              <nz-select [(ngModel)]=\"fs.date.rangeDefault.beforeUnit\">\n                <nz-option [nzLabel]=\"'year'\" [nzValue]=\"'year'\"></nz-option>\n                <nz-option [nzLabel]=\"'month'\" [nzValue]=\"'month'\"></nz-option>\n                <nz-option [nzLabel]=\"'day'\" [nzValue]=\"'day'\"></nz-option>\n              </nz-select>\n              <input type=\"text\" nz-input [ngModel]=\"'before'\" readonly style=\"width: 50px;\"/>\n            </nz-input-group>\n          </div>\n        </div>\n        <div class=\"form-group row\">\n          <label class=\"col-sm-3 col-form-label required\">default-end</label>\n          <div class=col-sm-9>\n            <nz-input-group nzCompact>\n              <nz-input-number [(ngModel)]=\"fs.date.rangeDefault.afterNum\"></nz-input-number>\n              <nz-select [(ngModel)]=\"fs.date.rangeDefault.afterUnit\">\n                <nz-option [nzLabel]=\"'year'\" [nzValue]=\"'year'\"></nz-option>\n                <nz-option [nzLabel]=\"'month'\" [nzValue]=\"'month'\"></nz-option>\n                <nz-option [nzLabel]=\"'day'\" [nzValue]=\"'day'\"></nz-option>\n              </nz-select>\n              <input type=\"text\" nz-input [ngModel]=\"'after'\" readonly style=\"width: 50px;\"/>\n            </nz-input-group>\n          </div>\n        </div>\n      </ng-container>\n      <!-- lastTimeDisplayType -->\n      <div\n        *ngIf=\"fs.date.type === 'lastTimeEnum'\"\n        class=\"form-group row\" >\n        <label class=\"col-sm-3 col-form-label required\">lastTimeDisplayType</label>\n        <div class=col-sm-9>\n          <nz-radio-group [(ngModel)]=\"fs?.date.lastTimeDisplayType\" [nzButtonStyle]=\"'solid'\" nzSize=\"small\">\n            <label nz-radio-button nzValue=\"select\">select</label>\n            <label nz-radio-button nzValue=\"flat\">flat</label>\n          </nz-radio-group>\n        </div>\n      </div>\n      <!-- lastTimeItems -->\n      <div\n        *ngIf=\"fs.date.type === 'lastTimeEnum'\"\n        class=\"form-group row\">\n        <label class=\"col-sm-3 col-form-label required\">lastTimeItems ({{fs.date.lastTimeItems?.length}})</label>\n        <div class=col-sm-9>\n          <ul>\n            <li\n              *ngFor=\"let item of fs.date.lastTimeItems\"\n              class=\"form-group row\">\n              <nz-input-group nzCompact>\n                <input type=\"text\" nz-input [ngModel]=\"'last'\" readonly style=\"width: 50px;\"/>\n                <nz-input-number [(ngModel)]=\"item.num\"></nz-input-number>\n                <nz-select [(ngModel)]=\"item.unit\">\n                  <nz-option [nzLabel]=\"'year'\" [nzValue]=\"'year'\"></nz-option>\n                  <nz-option [nzLabel]=\"'month'\" [nzValue]=\"'month'\"></nz-option>\n                  <nz-option [nzLabel]=\"'day'\" [nzValue]=\"'day'\"></nz-option>\n                </nz-select>\n              </nz-input-group>\n              <div>\n                <button class=\"btn\" (click)=\"ArrUtil.Remove(fs.date.lastTimeItems, item)\">x</button>\n                <button class=\"btn\" (click)=\"ArrUtil.Up(fs.date.lastTimeItems, item)\">^</button>\n                <button class=\"btn\" (click)=\"ArrUtil.Down(fs.date.lastTimeItems, item)\">v</button>\n              </div>\n            </li>\n            <li>\n              <button class=\"btn btn-primary\" (click)=\"handleAddLastTimeItem()\">新增</button>\n            </li>\n          </ul>\n        </div>\n      </div>\n    </ng-container>\n\n    <!-- enum -->\n    <ng-container *ngIf=\"fs.type === 'enum'\">\n      <div class=\"form-group row\" >\n        <label class=\"col-sm-3 col-form-label required\">multiOrSingle</label>\n        <div class=col-sm-9>\n          <nz-radio-group [(ngModel)]=\"fs?.enum.multi\" [nzButtonStyle]=\"'solid'\" nzSize=\"small\">\n            <label nz-radio-button [nzValue]=\"false\">single</label>\n            <label nz-radio-button [nzValue]=\"true\">multi</label>\n          </nz-radio-group>\n        </div>\n      </div>\n      <div\n        *ngIf=\"!fs.enum.multi\"\n        class=\"form-group row\">\n        <label class=\"col-sm-3 col-form-label required\">displayType</label>\n        <div class=col-sm-9>\n          <nz-radio-group [(ngModel)]=\"fs?.enum.displayType\" [nzButtonStyle]=\"'solid'\" nzSize=\"small\">\n            <label nz-radio-button nzValue=\"select\">select</label>\n            <label nz-radio-button nzValue=\"flat\">flat</label>\n          </nz-radio-group>\n        </div>\n      </div>\n      <div class=\"form-group row\" >\n        <label class=\"col-sm-3 col-form-label required\">source</label>\n        <div class=col-sm-9>\n          <nz-radio-group\n            [(ngModel)]=\"fs?.enum.source\"\n            (ngModelChange)=\"handleChangeEnumSource()\"\n            [nzButtonStyle]=\"'solid'\"\n            nzSize=\"small\">\n            <!-- <label nz-radio-button nzValue=\"dataField\">{{ 'dataField' | translate }}</label> -->\n            <label nz-radio-button nzValue=\"manual\">{{ 'manual' | translate }}</label>\n            <label nz-radio-button nzValue=\"dataset\">{{ 'dataset' | translate }}</label>\n          </nz-radio-group>\n        </div>\n      </div>\n      <div\n        *ngIf=\"fs.enum.source === 'manual'\"\n        class=\"form-group row\">\n        <label class=\"col-sm-3 col-form-label required\">itemsManual ({{fs.enum.itemsManual?.length}})</label>\n        <div class=col-sm-9>\n          <editable-table\n            [data]=\"fs?.enum?.itemsManual\"\n            [columns]=\"[\n              { name: 'label' },\n              { name: 'value' }\n            ]\"\n          ></editable-table>\n        </div>\n      </div>\n      <ng-container *ngIf=\"fs.enum.source === 'dataset'\">\n        <div class=\"form-group row\">\n          <label class=\"col-sm-3 col-form-label required\">dataset</label>\n          <div class=\"col-sm-5\">\n            <epp-help\n              title=\"{{'selectDataset'|translate}}\"\n              [getData]=\"datasetRepo.getDatasets()\"\n              class=\"w-100\"\n              [tableFields]=\"['name', 'datasourceName']\"\n              [display]=\"curFsEnumDataset?.name\"\n              (selectedItemChange)=\"handleChangeItemsDataset($event)\"\n              ></epp-help>\n          </div>\n        </div>\n        <div class=\"form-group row\">\n          <label class=\"col-sm-3 col-form-label required\">valueField</label>\n          <div class=\"col-sm-5\">\n            <nz-select\n              [(ngModel)]=\"fs.enum.itemsValueField\"\n              (ngModelChange)=\"handleItemFieldChange()\">\n              <nz-option\n                *ngFor=\"let dim of curFsEnumDataset?.cols?.dimensions\"\n                [nzValue]=\"dim.name\"\n                [nzLabel]=\"dim.label\"\n                ></nz-option>\n            </nz-select>\n          </div>\n        </div>\n        <div class=\"form-group row\">\n          <label class=\"col-sm-3 col-form-label required\">labelField</label>\n          <div class=\"col-sm-5\">\n            <nz-select\n              [(ngModel)]=\"fs.enum.itemsLabelField\"\n              (ngModelChange)=\"handleItemFieldChange()\">\n              <nz-option\n                *ngFor=\"let dim of curFsEnumDataset?.cols?.dimensions\"\n                [nzValue]=\"dim.name\"\n                [nzLabel]=\"dim.label\"\n                ></nz-option>\n            </nz-select>\n          </div>\n        </div>\n      </ng-container>\n      <!-- enum default -->\n      <div class=\"form-group row\" >\n        <label class=\"col-sm-3 col-form-label required\">default</label>\n        <div class=col-sm-9>\n          <!-- class=\"col-sm-5\" -->\n          <nz-select\n            [nzMode]=\"fs.enum.multi ? 'multiple' : 'default'\"\n            nzAllowClear\n            [(ngModel)]=\"fs.enum.multi ? fs.enum.multiDefault : fs.enum.singleDefault\">\n            <nz-option\n              *ngFor=\"let item of curEnumItems\"\n              [nzValue]=\"item.value\"\n              [nzLabel]=\"item.label || item.value\"></nz-option>\n          </nz-select>\n        </div>\n      </div>\n    </ng-container>\n\n    <!-- number -->\n    <ng-container *ngIf=\"fs.type === 'number'\">\n      <div class=\"form-group row\" >\n        <label class=\"col-sm-3 col-form-label required\">default</label>\n        <div class=col-sm-9>\n          <input\n            type=\"text\"\n            class=\"form-control form-control-sm\"\n            [(ngModel)]=\"fs.number.default\"\n            />\n        </div>\n      </div>\n    </ng-container>\n\n    <!-- text -->\n    <ng-container *ngIf=\"fs.type === 'text'\">\n      <label class=\"col-sm-3 col-form-label required\">default</label>\n      <div class=col-sm-9>\n        <input\n          type=\"text\"\n          class=\"form-control form-control-sm\"\n          [(ngModel)]=\"fs.text.default\"\n          />\n      </div>\n    </ng-container>\n  </div>\n</div>\n\n<ng-template #tagPlaceHolder let-selectedList> 已选 {{selectedList.length}} 项</ng-template>\n","styles":[".preview{min-height:60px;margin:20px auto;max-width:200px;min-width:150px}input,nz-select{min-width:150px}"]}]}],"members":{"fs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3},"arguments":["filterSchema"]}]}],"filterComp":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":15,"character":3},"arguments":[{"__symbolic":"reference","module":"@gspwidget/widget-core","name":"FilterComponent","line":15,"character":13}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@gspwidget/util","name":"DatasetRepo","line":40,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":41,"character":15}]}],"ngOnInit":[{"__symbolic":"method"}],"handleChangeType":[{"__symbolic":"method"}],"handleAddLastTimeItem":[{"__symbolic":"method"}],"handleAddEnumItem":[{"__symbolic":"method"}],"handleChangeEnumSource":[{"__symbolic":"method"}],"handleChangeItemsDataset":[{"__symbolic":"method"}],"handleItemFieldChange":[{"__symbolic":"method"}],"checkNUpdateEnum":[{"__symbolic":"method"}],"updateDatasetResult":[{"__symbolic":"method"}],"updateDatasetEnumItems":[{"__symbolic":"method"}],"setCurEnumItems":[{"__symbolic":"method"}]}},"FeFilterModalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"FeFilterModalComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":25,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/radio","name":"NzRadioModule","line":26,"character":4},{"__symbolic":"reference","module":"@gspwidget/widget-core","name":"FilterModule","line":27,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":28,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/date-picker","name":"NzDatePickerModule","line":29,"character":4},{"__symbolic":"reference","name":"I18nInputModule"},{"__symbolic":"reference","module":"ng-zorro-antd/input","name":"NzInputModule","line":31,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/select","name":"NzSelectModule","line":32,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/input-number","name":"NzInputNumberModule","line":33,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/button","name":"NzButtonModule","line":34,"character":4},{"__symbolic":"reference","name":"EditableTableModule"},{"__symbolic":"reference","name":"HelpModule"}],"exports":[{"__symbolic":"reference","name":"FeFilterModalComponent"}]}]}],"members":{}},"HelpStructure":{"table":0,"treeTable":1,"transfer":2,"treeTransfer":3},"HelpGetData":{"__symbolic":"interface"},"HelpShellComponent":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"wdesgin-help-shell","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":16,"character":19},"member":"OnPush"},"template":"<div class=\"help-shell\">\n  <ng-container *ngIf=\"structure===HelpStructure.table\">\n    <div class=\"d-flex flex-column h-100\">\n      <app-search-input\n        class=\"mt-2 d-block\"\n        (onSearch)=\"handleSearch($event)\"\n        ></app-search-input>\n      <nz-table\n        class=\"mt-2 flex-fill overflow-auto\"\n        nzSize=\"small\"\n        #nzTable\n        [nzData]=\"filteredData || data || []\"\n        [nzPageSize]=\"10\" >\n        <thead>\n          <tr>\n            <th *ngFor=\"let col of tableFields\">{{col | translate}}</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr *ngFor=\"let dataItem of nzTable.data\"\n            [class.active]=\"selectedDataItem === dataItem\"\n            (click)=\"handleClickItem(dataItem)\"\n            (dblclick)=\"handleDbClickItem(dataItem)\"\n            >\n            <td *ngFor=\"let col of tableFields\">{{dataItem[col]}}</td>\n          </tr>\n        </tbody>\n      </nz-table>\n    </div>\n  </ng-container>\n\n  <ng-container *ngIf=\"structure===HelpStructure.treeTable\">\n    <div class=\"d-flex align-items-stretch h-100\">\n      <div class=\"h-100 overflow-auto\"\n        style=\"border-right: 1px solid #e9edf1;\">\n        <nz-tree\n          #nzTreeComponent\n          [nzExpandedKeys]=\"expandedKeys\"\n          [nzData]=\"data\"\n          (nzClick)=\"handleClickTreeNode($event)\"\n          >\n        </nz-tree>\n      </div>\n      <div class=\"h-100 overflow-auto flex-fill\">\n        <nz-table\n          class=\"mt-2\"\n          nzSize=\"small\"\n          #nzTable\n          [nzLoading]=\"loadingTable\"\n          [nzData]=\"tableData || []\"\n          [nzPageSize]=\"10\" >\n          <thead>\n            <tr>\n              <th *ngFor=\"let col of tableFields\">{{(col.pop ? col[col.length-1] : col) | translate}}</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr *ngFor=\"let dataItem of nzTable.data\"\n              [class.active]=\"selectedDataItem === dataItem\"\n              (click)=\"handleClickItem(dataItem)\"\n              (dblclick)=\"handleDbClickItem(dataItem)\"\n              >\n              <!-- <td *ngFor=\"let col of tableFields\">{{dataItem[col]}}</td> -->\n              <td *ngFor=\"let col of tableFields\">{{dataItem | dataPath:col}}</td>\n            </tr>\n          </tbody>\n        </nz-table>\n      </div>\n    </div>\n  </ng-container>\n\n  <ng-container *ngIf=\"structure===HelpStructure.treeTransfer\">\n    <div class=\"d-flex align-items-stretch h-100\">\n      <div class=\"h-100 overflow-auto\"\n        style=\"border-right: 1px solid #e9edf1;\">\n        <nz-tree\n          #nzTreeComponent\n          [nzExpandedKeys]=\"expandedKeys\"\n          [nzData]=\"data\"\n          (nzClick)=\"handleClickTreeNode($event)\"\n          >\n        </nz-tree>\n      </div>\n      <div class=\"h-100 overflow-scroll flex-fill\">\n        <nz-table\n          class=\"mt-2 flex-fill mr-2\"\n          nzSize=\"small\"\n          #nzTable\n          [nzLoading]=\"loadingTable\"\n          [nzData]=\"tableData || []\"\n          [nzPageSize]=\"10\" >\n          <thead>\n            <tr>\n              <th\n                nzShowCheckbox\n                (nzCheckedChange)=\"handleClickCheckAllRightTable($event)\"\n                [nzChecked]=\"getIfAllChecked()\"\n                [nzDisabled]=\"tableData.length===0\"\n                ></th>\n              <th *ngFor=\"let col of tableFields\">{{(col.pop ? col[col.length-1] : col) | translate}}</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr *ngFor=\"let dataItem of nzTable.data\"\n              [class.active]=\"selectedDataItem === dataItem\"\n              (click)=\"handleClickCheckItem(dataItem)\"\n              >\n              <td\n                nzShowCheckbox\n                [nzChecked]=\"getIfChecked(dataItem)\"\n                (nzCheckedChange)=\"handleClickCheckItem(dataItem)\"\n                ></td>\n              <td *ngFor=\"let col of tableFields\">{{dataItem | dataPath:col}}</td>\n            </tr>\n          </tbody>\n        </nz-table>\n      </div>\n\n      <div style=\"width: 200px;background: #f9fafb;\" >\n        <nz-table\n          class=\"mt-2 checkedTable\"\n          #checkedTable\n          [nzData]=\"checkedItems\"\n          nzSize=\"small\"\n          [nzPageSize]=\"10\"\n        >\n          <thead>\n            <tr>\n              <th>已选 {{checkedItems.length}} 项</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr *ngFor=\"let checkedItem of checkedItems\"\n            >\n            <!-- [class.active]=\"selectedDataItem === checkedItem\" -->\n              <td class=\"d-flex align-items-center\">\n                <span class=\"flex-fill\">{{checkedItem.name}}</span>\n                <i class=\"material-icons remove-btn\"\n                  (click)=\"removeCheckedItem(checkedItem)\"\n                >close</i>\n              </td>\n            </tr>\n          </tbody>\n        </nz-table>\n\n      </div>\n    </div>\n  </ng-container>\n</div>","styles":[".help-shell{height:60vh}.help-shell tr:hover .remove-btn{opacity:1}.help-shell tr .remove-btn{transition:opacity .3s;opacity:0;font-size:18px;cursor:pointer;color:gray}.help-shell tr .remove-btn:hover{color:#e91e63}::ng-deep .checkedTable .ant-table-placeholder{display:none}"]}]}],"members":{"getData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"getTableOnSelectTree":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"tableFields":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"structure":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"selectDataItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":25,"character":3}}]}],"expandedKeys":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":33,"character":27}]}],"ngOnInit":[{"__symbolic":"method"}],"handleSearch":[{"__symbolic":"method"}],"handleClickItem":[{"__symbolic":"method"}],"handleDbClickItem":[{"__symbolic":"method"}],"handleClickTreeNode":[{"__symbolic":"method"}],"setTableData":[{"__symbolic":"method"}],"handleClickCheckAllRightTable":[{"__symbolic":"method"}],"handleClickCheckItem":[{"__symbolic":"method"}],"removeCheckedItem":[{"__symbolic":"method"}],"getIfChecked":[{"__symbolic":"method"}],"getIfAllChecked":[{"__symbolic":"method"}]}},"DataPathPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":135,"character":1},"arguments":[{"name":"dataPath"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"HelpComponent":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"epp-help","template":"\n<div class=\"help-input d-flex justify-content-between align-items-center position-relative\">\n  <input type=\"text\"\n    readonly\n    [placeholder]=\"placeholder\"\n    class=\"form-control form-control-sm flex-fill\"\n    (click)=\"handleClickOpenHelp()\"\n    [ngModel]=\"display\"\n    >\n    <!-- [ngModel]=\"selectedItem ? selectedItem[displayField] : display\" -->\n  <i class=\"material-icons\">adjust</i>\n</div>","styles":[".help-input{width:100%;cursor:pointer}.help-input:hover i{color:#687380}.help-input input{padding-right:26px;background:#fff;cursor:pointer}.help-input input:focus{box-shadow:none}.help-input input::-webkit-input-placeholder{opacity:.6}.help-input input::-moz-placeholder{opacity:.6}.help-input input:-ms-input-placeholder{opacity:.6}.help-input input::-ms-input-placeholder{opacity:.6}.help-input input::placeholder{opacity:.6}.help-input i{font-size:14px;color:#b2bbc6;margin:0 5px;transition:.3s;position:absolute;right:18px;top:50%;transform:translateY(-50%)}"]}]}],"members":{"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"structure":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"getData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"tableFields":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"displayField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"getTableOnSelectTree":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"display":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"expandedKeys":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"selectedItemChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":23,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"HelpService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":27,"character":16},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":28,"character":23}]}],"ngOnInit":[{"__symbolic":"method"}],"handleClickOpenHelp":[{"__symbolic":"method"}]}},"HelpModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"HelpShellComponent"},{"__symbolic":"reference","name":"HelpComponent"},{"__symbolic":"reference","name":"DataPathPipe"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":20,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/table","name":"NzTableModule","line":21,"character":4},{"__symbolic":"reference","name":"SearchInputModule"},{"__symbolic":"reference","module":"ng-zorro-antd/tree","name":"NzTreeModule","line":23,"character":4},{"__symbolic":"reference","name":"ToTreeModule"},{"__symbolic":"reference","module":"ng-zorro-antd/modal","name":"NzModalModule","line":25,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":26,"character":4}],"exports":[{"__symbolic":"reference","name":"HelpShellComponent"},{"__symbolic":"reference","name":"HelpComponent"}]}]}],"members":{}},"HelpOption":{"__symbolic":"interface"},"HelpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ng-zorro-antd/modal","name":"NzModalService","line":32,"character":19},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":33,"character":23}]}],"show":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"XcHelpShellComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"xc-help-shell","template":"<div class=\"d-flex help-shell cursor-default\" style=\"max-height: 60vh;\">\n  <div\n    *ngFor=\"let part of innerParts; let partI = index\"\n    class=\"part overflow-auto\"\n    [style.width]=\"part.xcWidth\"\n    >\n    <div *ngIf=\"part._loading\" class=\"h-100\">\n    <!-- <div *ngIf=\"true\" class=\"h-100\"> -->\n      <xc-loading></xc-loading>\n    </div>\n    <ng-container *ngIf=\"part._data\">\n\n      <!-- list -->\n      <nz-table\n        #nzTable\n        *ngIf=\"!part.xcStructure || part.xcStructure === 'list'\"\n        class=\"mt-2 flex-fill overflow-auto\"\n        nzSize=\"small\"\n        [nzData]=\"part._data\"\n        [nzPageSize]=\"10\"\n        [nzHideOnSinglePage]=\"true\"\n        >\n        <thead>\n          <tr>\n            <th *ngFor=\"let col of part.xcCols; let colI = index\">\n              <ng-container *ngIf=\"col.trim\">{{col}}</ng-container>\n              <ng-container *ngIf=\"col.xcLabel || col.xcName\">{{col.xcLabel || col.xcName}}</ng-container>\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr *ngFor=\"let item of nzTable.data\"\n            [class.active]=\"part._selectedItem === item\"\n            (click)=\"handleClickItem(item, part, partI)\"\n            (dblclick)=\"handleDbClickItem(item, part, partI)\"\n            >\n            <td *ngFor=\"let col of part.xcCols\">\n              <ng-container *ngIf=\"col.trim\">{{item[col]}}</ng-container>\n              <ng-container *ngIf=\"col.xcName\">\n                <ng-container *ngIf=\"col.xcDateFormat\">{{item[col.xcName] | date:col.xcDateFormat}}</ng-container>\n                <ng-container *ngIf=\"!col.xcDateFormat\">{{item[col.xcName]}}</ng-container>\n              </ng-container>\n            </td>\n          </tr>\n        </tbody>\n      </nz-table>\n\n      <!-- tree -->\n      <ng-container *ngIf=\"part.xcStructure === 'tree'\">\n        <div class=\"tree-title font-weight-bold\">{{part.xcTreeTitle}}</div>\n        <nz-tree\n          #nzTreeComponent\n          [nzData]=\"part._data\"\n          (nzClick)=\"handleClickTreeNode($event, part, partI)\"\n          (nzDbClick)=\"handleDbClickTreeNode($event, part, partI)\"\n          >\n        </nz-tree>\n      </ng-container>\n\n      <!-- multi tree -->\n      <ng-container *ngIf=\"part.xcStructure === 'multiTree'\">\n        <div class=\"tree-title font-weight-bold\">{{part.xcTreeTitle}}</div>\n        <nz-tree\n          #nzTreeComponent\n          nzCheckable\n          [nzData]=\"part._data\"\n          (nzCheckBoxChange)=\"handleMultiTreeCheckChange($event, part, partI)\"\n          >\n        </nz-tree>\n      </ng-container>\n    </ng-container>\n  </div>\n\n  <!-- 排序处，暂时仅当多选树且 default 类型才 -->\n  <div\n    class=\"selected-list overflow-auto\"\n    style=\"width: 160px;\"\n    *ngIf=\"getLastPart()\n      && getLastPart().xcStructure === 'multiTree'\n      && getLastPart()._selectedItem\n      && getMultiTreeResult(getLastPart()) === 'default'\"\n    >\n    <div class=\"p-2 fs-12\">已选择 {{getLastPart()._selectedItem.length}} 项</div>\n    <ul\n      class=\"\"\n      cdkDropList\n      (cdkDropListDropped)=\"drop($event, getLastPart()._selectedItem)\"\n      >\n      <!-- cdkDropListOrientation=\"horizontal\" -->\n      <!-- align-items-top -->\n      <li\n        *ngFor=\"let part of getLastPart()._selectedItem\"\n        cdkDrag\n        class=\"d-flex align-items-center\"\n        >\n        <!-- {{part|json}} -->\n        <i class=\" mti fs-16 mr-2\" style=\"opacity: .3;\">drag_handle</i>\n        {{part.name}}\n      </li>\n    </ul>\n    </div>\n    <!-- [nzExpandedKeys]=\"expandedKeys\" -->\n</div>","styles":[".help-shell{border-top:1px solid #f0f0f0;border-bottom:1px solid #f0f0f0;min-height:250px}.help-shell .part{border-right:1px solid #f0f0f0;flex-grow:1}.help-shell .part .tree-title{padding:8px}::ng-deep .xc-help2 .ant-modal-body{padding:0}::ng-deep .xc-help2 nz-table.mt-2{margin-top:0!important}::ng-deep .xc-help2 nz-table .ant-table-body{margin:0!important}::ng-deep .xc-help2 nz-table td{padding:5px 8px!important;border:none!important}::ng-deep .xc-help2 nz-table th{border:none!important}.selected-list ul li{padding:5px 10px;cursor:move}.selected-list ul li:hover{background:#f3f3f3}.cdk-drop-list-dragging :not(.cdk-drag-placeholder){transition:transform 250ms cubic-bezier(0,0,.2,1)}"]}]}],"members":{"parts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"onSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":22,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":23,"character":15}]}],"ngOnInit":[{"__symbolic":"method"}],"getResult":[{"__symbolic":"method"}],"isValid":[{"__symbolic":"method"}],"handleClickItem":[{"__symbolic":"method"}],"handleDbClickItem":[{"__symbolic":"method"}],"handleClickTreeNode":[{"__symbolic":"method"}],"handleDbClickTreeNode":[{"__symbolic":"method"}],"handleMultiTreeCheckChange":[{"__symbolic":"method"}],"getMultiTreeResult":[{"__symbolic":"method"}],"getLastPart":[{"__symbolic":"method"}],"drop":[{"__symbolic":"method"}]}},"XcHelpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ng-zorro-antd/modal","name":"NzModalService","line":10,"character":18},{"__symbolic":"reference","name":"XcHelpPresetService"}]}],"create":[{"__symbolic":"method"}],"createPreset":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"setCurWidgetNameGetter":[{"__symbolic":"method"}]}},"XcHelp2Module":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"XcHelpShellComponent"},{"__symbolic":"reference","name":"HelpInputComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/modal","name":"NzModalModule","line":18,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/table","name":"NzTableModule","line":19,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/tree","name":"NzTreeModule","line":20,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/cdk/drag-drop","name":"DragDropModule","line":23,"character":4},{"__symbolic":"reference","name":"XcLoadingModule"}],"providers":[{"__symbolic":"reference","name":"XcHelpPresetService"},{"__symbolic":"reference","name":"XcHelpService"},{"__symbolic":"reference","name":"HelpInputComponent"}],"exports":[{"__symbolic":"reference","name":"HelpInputComponent"}]}]}],"members":{}},"XcHelpPresetService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@gspwidget/util","name":"DatasetRepo","line":167,"character":24},{"__symbolic":"reference","module":"@gspwidget/util","name":"IgixRepo","line":168,"character":21},{"__symbolic":"reference","module":"@gspwidget/util","name":"PortletRepo","line":169,"character":24}]}]}},"PasswordComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"epp-password","template":"<!-- [name]=\"param.name\" -->\n<input\n  *ngIf=\"!toBeReset\"\n  #ngModel=\"ngModel\"\n  type=\"password\"\n  class=\"form-control form-control-sm\"\n  [placeholder]=\"placeholder | translate\"\n  [ngModel]=\"value\"\n  [required]=\"required\"\n  (ngModelChange)=\"valueChange.emit($event)\"\n  />\n<button\n  *ngIf=\"toBeReset\"\n  class=\"btn btn-primary\"\n  (click)=\"reset()\"\n  >{{'reset' | translate}}</button>","styles":[""]}]}],"members":{"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":14,"character":3}}]}],"toBeReset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"toBeResetChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":17,"character":3}}]}],"ngModel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":19,"character":3},"arguments":["ngModel"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"validate":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}]}},"EppPasswordModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"PasswordComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":9,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4}],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":14,"character":13},"useExisting":{"__symbolic":"reference","name":"PasswordComponent"}}],"exports":[{"__symbolic":"reference","name":"PasswordComponent"}]}]}],"members":{}},"SearchInputComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-search-input","template":"\n\n<div class=search>\n  <input\n    [formControl]=\"searchInput\"\n    type=\"text\"\n    [placeholder]=\"'search' | translate\"\n    class=\"form-control form-control-sm\">\n  <button class=btn>\n      <i class=\"material-icons\"\n        (click)=\"handleClickSearchBtn()\" >search</i>\n  </button>\n</div>","styles":[".search{position:relative}.search input{padding:3px 30px 3px 5px}.search button{position:absolute;right:0;top:0;border:none;box-shadow:none;padding:3px 5px}.search button i{color:#bac3d1}.search button:hover i{color:#388fff}"]}]}],"members":{"onSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":11,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"handleClickSearchBtn":[{"__symbolic":"method"}]}},"SearchInputModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"SearchInputComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":12,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":13,"character":4}],"exports":[{"__symbolic":"reference","name":"SearchInputComponent"}]}]}],"members":{}},"SimpleFormModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"SimpleFormComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":12,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":13,"character":4},{"__symbolic":"reference","name":"EppPasswordModule"},{"__symbolic":"reference","name":"I18nInputModule"}],"exports":[{"__symbolic":"reference","name":"SimpleFormComponent"}]}]}],"members":{}},"LoadingComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-loading","template":"<div\n                class=\"loading d-flex justify-content-center\"\n                [style.padding-top]=\"topPercent + '%'\"\n              >\n              <img\n                class=\"spin-ball\"\n                src=\"assets/img/loading.svg\"\n                >\n            </div>","styles":["\n    .loading {\n      position: absolute;\n      z-index: 1;\n      width: 100%;\n      top: 0;\n      left: 0;\n      height: 100%;\n      background: rgba(255,255,255,0.7);\n    }\n    img {\n      width: 50px;\n      height: 50px;\n    }\n  "]}]}],"members":{"topPercent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}]}},"EppStatus":{"Normal":0,"Loading":1,"Empty":2},"StatusDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":7,"character":1},"arguments":[{"selector":"[eppStatus]"}]}],"members":{"eppStatus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":35,"character":16},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":36,"character":38}]}]}},"StatusModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"StatusDirective"},{"__symbolic":"reference","name":"LoadingComponent"}],"entryComponents":[{"__symbolic":"reference","name":"LoadingComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4}],"exports":[{"__symbolic":"reference","name":"StatusDirective"}]}]}],"members":{}},"ToTreeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ToTreePipe"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":4}],"exports":[{"__symbolic":"reference","name":"ToTreePipe"}]}]}],"members":{}},"ToTreePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"toTree"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"PropertyChangeEvent":{"__symbolic":"interface"},"PropsAndValues":{"__symbolic":"interface"},"CEContext":{"__symbolic":"interface"},"I18nDataField":{"__symbolic":"interface"},"CEDF":{"__symbolic":"interface"},"findKeyByValue":{"__symbolic":"function","parameters":["obj","value"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"findKeyByValuePredicate"},"arguments":[{"__symbolic":"reference","name":"obj"},{"__symbolic":"error","message":"Lambda not supported","line":2,"character":38,"module":"./lib/util"}]}},"findKeyByValuePredicate":{"__symbolic":"function"},"removeInArray":{"__symbolic":"function"},"WidgetProjectPreviewPageComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":47,"character":1},"arguments":[{"selector":"widget-project-preview-page","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":51,"character":19},"member":"OnPush"},"template":"<div class=\" widget-project-public d-flex align-items-stretch\">\n  <!-- left -->\n  <div class=\"left flex-fill h-100 p-2\">\n    <!-- <div class=\"container\"> -->\n    <div class=\"title d-flex align-items-center\">\n      <i class=\"material-icons\">dashboard</i>\n      <span class=\"main\">Widget Project</span>\n      <!-- <span class=\"title-badge\">{{title}}</span> -->\n    </div>\n    <div class=\"content mb-5\">\n      <p>运行 widget add 增加元部件，运行 widget build 打包元部件。</p>\n      <p>在下方预览当前元部件项目的所有元部件。</p>\n      <div *ngIf=\"checkedWidgets.length === 0\">勾选下方元部件以生成打包命令。</div>\n      <p *ngIf=\"checkedWidgets.length > 0\">打包命令：</p>\n      <div *ngIf=\"checkedWidgets.length > 0\" class=\"build-cmd\">\n        <div>\n          <span (click)=\"copyBuildCmd()\" class=\"copy-btn\">{{copySuccessStatus ? '复制成功' : '复制'}}</span>\n        </div>\n        {{getBuildCommand()}}\n      </div>\n    </div>\n    <!-- </div> -->\n    <!-- 全选 -->\n    <div class=\"custom-control custom-checkbox\">\n      <input\n        type=\"checkbox\"\n        class=\"custom-control-input\"\n        [ngModel]=\"widgetInfosAll.length === checkedWidgets.length\"\n        (ngModelChange)=\"handleCheckAllChange($event)\"\n        id=\"selectAll\">\n      <label class=\"custom-control-label\" for=\"selectAll\">全选</label>\n    </div>\n\n    <!-- 元部件列表 -->\n    <ul class=\"d-flex flex-wrap\">\n      <li\n        *ngFor=\"let widgetInfoAll of widgetInfosAll\"\n        class=\"widget-container-debug {{widgetInfoAll.name}} d-flex flex-column overflow-hidden\">\n        <div class=\"header\">\n          <div class=\"custom-control custom-checkbox\">\n            <input\n              type=\"checkbox\"\n              (ngModelChange)=\"handleWidgetCheckChange(widgetInfoAll, $event)\"\n              [ngModel]=\"widgetInfoAll.checked\"\n              class=\"custom-control-input\" [id]=\"widgetInfoAll.name\">\n            <label class=\"custom-control-label\" [for]=\"widgetInfoAll.name\">{{widgetInfoAll.name}}</label>\n          </div>\n        </div>\n        <div\n          class=\"wrapper flex-fill\"\n          (click)=\"handleClickWidget(widgetInfoAll, wc)\"\n          [class.active]=\"widgetInfoAll==curEditingWidgetInfoAll\">\n          <lib-widget #wc\n            [mode]=\"1\"\n            [assetsBaseUrl]=\"'assets/' + widgetInfoAll.name + '/'\"\n            [basicWidgetInfo]=\"widgetInfoAll\"\n            [propValues]=\"widgetPropValuesMap[widgetInfoAll.name]\"\n            (widgetLoaded)=\"handleWidgetLoaded(widgetInfoAll, $event)\"\n            [getData]=\"innerGetData\">\n          </lib-widget>\n        </div>\n      </li>\n    </ul>\n  </div>\n\n  <!-- right -->\n  <div class=\"right flex-shrink-0\">\n    <div *ngIf=\"curEditingWidgetInfoAll\" class=\"ce2-wrapper\">\n        <!-- {{widgetPropertiesMap[curEditingWidget.name] | json}} -->\n      <config-editor2\n        [propsAndValues]=\"{\n          props: curEditingWidgetInfoAll.properties,\n          propValues: curEditingWidgetInfoAll.allPropValues\n        }\"\n        (onChange)=\"handleChangePropertyValue($event)\"\n        [extra]=\"{\n          dataFields: dataFields\n        }\"\n        ></config-editor2>\n    </div>\n    <div class=\"placeholder\" *ngIf=\"!curEditingWidgetInfoAll\">选择左侧元部件</div>\n  </div>\n\n</div>\n  ","styles":[".widget-project-public{height:100vh}.widget-project-public .title{font-size:30px;font-weight:700;color:#c8cdd4;margin-bottom:20px}.widget-project-public .title .material-icons{font-size:40px;vertical-align:middle}.widget-project-public .title .main{margin:0 15px}.widget-project-public .title .title-badge{font-size:12px;font-weight:400;background:#c8cdd4;color:#fff;padding:3px 6px;border-radius:3px;opacity:.6}.widget-project-public .content{color:#061c2d;font-size:12px}.widget-project-public .content p{margin-bottom:5px}.widget-project-public .left,.widget-project-public .right{height:100%;overflow-y:scroll}.widget-project-public .right{width:350px;border-left:6px solid #f9f9fb;background:#f9f9fb}.widget-project-public .right .ce2-wrapper{height:100%;background:#fff}.widget-project-public .copy-btn{font-size:12px;padding:3px 10px;background:#e7e7e7;border-radius:3px;cursor:pointer;transition:.3s}.widget-project-public .build-cmd{max-width:93%;font-family:consolas;background:#f8f8f8;color:#072d3f;font-size:14px;padding:10px 15px;border-radius:3px}.widget-container-debug{width:30%;height:300px;margin:10px 15px 10px 0}.widget-container-debug .header{padding:3px 0}.widget-container-debug .header .custom-control-input,.widget-container-debug .header .custom-control-label{cursor:pointer}.widget-container-debug .header .custom-control-label{font-size:14px;font-family:consolas}.widget-container-debug .wrapper{box-shadow:0 5px 15px 0 #e5edf0;transition:box-shadow .3s;border-radius:3px;vertical-align:top}.widget-container-debug .wrapper:hover{box-shadow:0 0 0 2px rgba(0,0,0,.06)}.widget-container-debug .wrapper.active{box-shadow:0 0 0 2px #388fff}"]}]}],"members":{"widgetComponents":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"getData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":73,"character":16}]}],"ngOnInit":[{"__symbolic":"method"}],"handleClickWidget":[{"__symbolic":"method"}],"handleChangePropertyValue":[{"__symbolic":"method"}],"handleWidgetLoaded":[{"__symbolic":"method"}],"handleWidgetCheckChange":[{"__symbolic":"method"}],"handleCheckAllChange":[{"__symbolic":"method"}],"copyBuildCmd":[{"__symbolic":"method"}],"_refreshCheckStatus":[{"__symbolic":"method"}],"getBuildCommand":[{"__symbolic":"method"}]}},"WidgetProjectPreviewPageModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"WidgetProjectPreviewPageComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":11,"character":4},{"__symbolic":"reference","module":"@gspwidget/widget-core","name":"WidgetCoreModule","line":12,"character":4},{"__symbolic":"reference","name":"ConfigEditor2Module"}],"exports":[{"__symbolic":"reference","name":"WidgetProjectPreviewPageComponent"}]}]}],"members":{}},"eppExpLanguageDef":{"__symbolic":"error","message":"Expression form not supported","line":3,"character":7,"module":"./lib/exp-editor/epp-exp/epp-exp.language"},"Suggestion":{"__symbolic":"interface"},"SuggestionGroup":{"__symbolic":"interface"},"ExpEditorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"exp-editor","template":"\n<ngx-monaco-editor\n  style=\"height: 80px\"\n  name=\"sql\"\n  [options]=\"editorOptions\"\n  [(ngModel)]=\"code\"\n  (ngModelChange)=\"handleCodeChange($event)\"\n></ngx-monaco-editor>","styles":[""]}]}],"members":{"suggestionGroups":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"code":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"codeChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":27,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"handleCodeChange":[{"__symbolic":"method"}]}},"ExpEditorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ExpEditorComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":13,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-monaco-editor","name":"MonacoEditorModule","line":14,"character":4},"member":"forRoot"},"arguments":[{"onMonacoLoad":{"__symbolic":"reference","name":"handleMonacoLoad"}}]}],"exports":[{"__symbolic":"reference","name":"ExpEditorComponent"}]}]}],"members":{}},"monacoLoadPromise":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Promise"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":4,"character":45,"module":"./lib/exp-editor/monaco-controller"}]},"LANG_EPP_EXP":"eppExp","handleMonacoLoad":{"__symbolic":"function"},"sysVars":[{"name":"username","doc":"当前用户名，字符串"},{"name":"username2","doc":"方法大幅度反对法大幅度反对法的的方式反对反对犯得上方法的"},{"name":"pp","doc":"大苏打实打实大大实打实大苏打"},{"name":"time","doc":"当范德萨范德萨分"}],"registerSysVarsCompletion":{"__symbolic":"function"},"EditableTableColumn":{"__symbolic":"interface"},"EditableTableComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"editable-table","template":"<nz-table\n  #editRowTable\n  nzBordered\n  [nzShowPagination]=\"false\"\n  [nzFrontPagination]=\"false\"\n  [nzData]=\"data?.concat(JSON.parse(JSON.stringify({})))\">\n  <thead>\n    <tr>\n      <th nzWidth=\"30\">{{'orderNumber'|translate}}</th>\n      <th *ngFor=\"let col of columns\">{{col.title || col.name}}</th>\n      <th>{{'operations'|translate}}</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr *ngFor=\"let rowData of editRowTable.data; let i=index; trackBy: trackByFn\"\n      class=\"editable-row\">\n      <td><span class=\"hide-in-last-row pl-1\">{{i+1}}</span></td>\n      <td *ngFor=\"let col of columns\">\n        <ng-container *ngIf=\"!col.template\">\n          <ng-container *ngIf=\"!col.type || col.type==='text'\">\n            <input \n              class=\"form-control form-control-sm\"\n              type=\"text\"\n              nz-input\n              [(ngModel)]=\"rowData[col.name]\"\n              (ngModelChange)=\"handleChangeNewRowValue(col.name, i, $event)\"\n              [name]=\"col.name + i\"\n              [placeholder]=\"col.placeholder || col.name\"\n            />\n          </ng-container>\n          <ng-container *ngIf=\"col.type==='exp'\">\n            <div (click)=\"handleClickExp(col, i)\">\n              <input\n                class=\"form-control form-control-sm help\"\n                type=\"text\"\n                nz-input\n                [ngModel]=\"rowData[col.name]\"\n                [name]=\"col.name + i\"\n                [placeholder]=\"col.placeholder || col.name\"\n                [disabled]=\"true\"\n                />\n            </div>\n          </ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"col.template\">\n          <ng-container *ngTemplateOutlet=\"col.template\"></ng-container>\n        </ng-container>\n      </td>\n      <td>\n        <div class=\"hide-in-last-row\">\n          <!-- <a\n            (click)=\"deleteRow(i)\"\n          >{{'delete'|translate}}</a> -->\n          <i class=\"mti icon-btn theme-color-hover\"\n            (click)=\"deleteRow(i)\"\n            >delete</i>\n          <i class=\"mti icon-btn theme-color-hover\"\n            (click)=\"upRow(i)\"\n            >arrow_upward</i>\n          <i class=\"mti icon-btn theme-color-hover\"\n            (click)=\"downRow(i)\"\n            >arrow_downward</i>\n        </div>\n      </td>\n    </tr>\n  </tbody>\n</nz-table>\n\n\n\n<ng-template #expModalTmpl>\n  <div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{'paramValue'|translate}}</h4>\n    <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"modalRef.hide()\">\n      <span aria-hidden=\"true\">&times;</span>\n    </button>\n  </div>\n  <div class=\"modal-body\">\n    <form #editForm=\"ngForm\">\n      <div class=\"form-group\">\n        <label class=\"mb-1\">{{'paramExpression'|translate}}</label>\n        <!-- [suggestionGroups]=\"colSuggestionGroups\" -->\n        <exp-editor\n          [(code)]=\"curRowClone[curExpCol.name]\">\n        </exp-editor>\n        <small class=\"form-text text-muted\">示例：col1 * (col2 + 2) .</small>\n        <small class=\"form-text text-muted\">可用操作符：+(加), -(减), *(乘), /(除), %(取余), >(大于), <(小于), ==(等于), !=(不等于), >=(大于等于), <=(小于等于), &&(且), ||(), !(非)</small>\n        <small class=\"form-text text-muted\">当前可用维度：\n          <span *ngFor=\"let col of rawDims\">\n            {{col.name}}, \n          </span>\n        </small>\n        <small class=\"form-text text-muted\">可用系统变量：无\n          <!-- <span *ngFor=\"let dim of sysVars\">\n            sys.{{dim.name}}, \n          </span> -->\n        </small>\n        <small class=\"form-text text-muted\">详细说明见<a target=\"_blank\" href=\"https://open.inspuronline.com/iGIX/#/document/mddoc/docs-gsp-cloud-ds%2Fdev-guide-beta%2Fadvanced-development%2Foperating-framework%2Fdashboard%2Fdashboard-manual.md\">文档</a>。</small>\n      </div>\n    </form>\n  </div>\n  <div class=\"modal-footer\">\n    <button type=\"button\"\n      class=\"btn btn-primary\"\n      [disabled]=\"editForm.invalid\"\n      [class.loading]=\"false\"\n      (click)=\"handleConfirmExp()\">\n      <i class=\"btn-icon-loading material-icons\">public</i>\n      {{'confirm'|translate}}</button>\n    <button type=\"button\"\n      class=\"btn btn-secondary\"\n      (click)=\"modalRef.hide()\">{{'cancel'|translate}}</button>\n  </div>\n</ng-template>\n\n","styles":["@charset \"UTF-8\";.ant-table-thead>tr>th{padding:5px!important}.ant-table-tbody>tr:last-child>td .form-control::-webkit-input-placeholder{opacity:.5!important}.ant-table-tbody>tr:last-child>td .form-control::-moz-placeholder{opacity:.5!important}.ant-table-tbody>tr:last-child>td .form-control:-ms-input-placeholder{opacity:.5!important}.ant-table-tbody>tr:last-child>td .form-control::-ms-input-placeholder{opacity:.5!important}.ant-table-tbody>tr:last-child>td .form-control::placeholder{opacity:.5!important}.ant-table-tbody>tr:last-child>td .hide-in-last-row{display:none}.ant-table-tbody>tr>td{padding:3px}.ant-table-tbody>tr>td .form-control{transition:border-color .3s}.ant-table-tbody>tr>td .form-control::-webkit-input-placeholder{opacity:0}.ant-table-tbody>tr>td .form-control::-moz-placeholder{opacity:0}.ant-table-tbody>tr>td .form-control:-ms-input-placeholder{opacity:0}.ant-table-tbody>tr>td .form-control::-ms-input-placeholder{opacity:0}.ant-table-tbody>tr>td .form-control::placeholder{opacity:0}.ant-table-tbody>tr>td .form-control:not(:focus){border-color:transparent}.ant-table-tbody>tr>td .form-control-sm{height:calc(1.5em + .5rem + 0px)}.ant-table-tbody>tr>td .help[disabled]{background:#fff;cursor:pointer}.ant-table-tbody>tr>td .icon-btn{font-size:16px;color:#a6a6a6}"]}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"columns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"rawDims":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"expModalTmpl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":26,"character":3},"arguments":["expModalTmpl"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":38,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"trackByFn":[{"__symbolic":"method"}],"deleteRow":[{"__symbolic":"method"}],"upRow":[{"__symbolic":"method"}],"downRow":[{"__symbolic":"method"}],"handleChangeNewRowValue":[{"__symbolic":"method"}],"handleClickExp":[{"__symbolic":"method"}],"handleConfirmExp":[{"__symbolic":"method"}]}},"EditableTableModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"EditableTableComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd/table","name":"NzTableModule","line":14,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":16,"character":4},{"__symbolic":"reference","name":"ExpEditorModule"}],"exports":[{"__symbolic":"reference","name":"EditableTableComponent"}]}]}],"members":{}},"Tab":{"__symbolic":"interface"},"ShellTabComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"WidgetBase","line":23,"character":39},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"Widget","line":16,"character":1},"arguments":[{"name":"shell-tab","enableCommonTitleBar":true}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"lib-shell-tab","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":21,"character":19},"member":"OnPush"},"template":"\n<div *ngIf=\"!tabConfigs || !tabConfigs[0]\">管理员未选择部件</div>\n\n<ng-container *ngIf=\"tabConfigs\">\n  <div class=\"d-flex justify-content-between px-2\">\n    <ul class=\"portlet-tabs m-1 d-flex\">\n      <ng-container *ngFor=\"let tab of tabConfigs\">\n        <li\n          *ngIf=\"tab.title || tab.feOnly?.portlets?.length > 0\"\n          class=\"cursor-pointer\"\n          [class.active]=\"tab === activeTab\"\n          [class.theme-bg]=\"tab === activeTab\"\n          [class.theme-shadow]=\"tab === activeTab\"\n          (click)=\"activeTab = tab\"\n          >{{tab.title || getFirstPortletOfTab(tab)}}</li>\n      </ng-container>\n    </ul>\n    <div class=\"d-flex align-items-center\">\n      <i\n        *ngIf=\"activeTab?.rightJump?.jumpType && activeTab?.rightJump?.jumpType !== JumpTypes.None\"\n        (click)=\"handleClickRightTopJump()\"\n        class=\"mti text-black-50 cursor-pointer\"\n        >chevron_right</i>\n    </div>\n  </div>\n  <div\n    *ngFor=\"let p of activeTab?.feOnly?.portlets || []\"\n    class=\"portlets\"\n    >\n    <lib-portlet\n      *ngIf=\"p\"\n      [portlet]=\"p\"\n      ></lib-portlet>\n  </div>\n</ng-container>","styles":["ul.portlet-tabs li{font-size:14px;padding:4px 12px;border-radius:100px}"]}]}],"members":{"tabConfigs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"Property","line":25,"character":3},"arguments":[{"isArray":true,"type":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"PropertyTypes","line":27,"character":10},"member":"Object"},"objectOption":{"objPropertyOptions":[{"displayName":"portlet","name":"portletIds","type":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"PropertyTypes","line":32,"character":14},"member":"Help2"},"isArray":true,"help2Option":{"preset":"eppPortlet","valueField":"id","labelField":"name"}},{"name":"title","displayName":"标签名"},{"name":"rightJump"}]}}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@gspwidget/util","name":"PortletRepo","line":53,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":54,"character":15},{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"WidgetDevkitService","line":55,"character":32}]}],"ngOnInit":[{"__symbolic":"method"}],"onPropChange":[{"__symbolic":"method"}],"refreshPortletsByIds":[{"__symbolic":"method"}],"handleClickRightTopJump":[{"__symbolic":"method"}],"getFirstPortletOfTab":[{"__symbolic":"method"}]}},"ShellTabModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ShellTabComponent"}],"entryComponents":[],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@gspwidget/portlet","name":"PortletModule","line":14,"character":4}],"exports":[{"__symbolic":"reference","name":"ShellTabComponent"}],"providers":[]}]}],"members":{}},"ShellLayoutComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"WidgetBase","line":12,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"Widget","line":5,"character":1},"arguments":[{"name":"shell-layout","enableCommonTitleBar":true}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"lib-shell-layout","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":10,"character":19},"member":"OnPush"},"template":"<div class=\"d-flex flex-wrap h-100\">\n  <div\n    *ngFor=\"let pl of portlets\"\n    [style.width]=\"pl.feOnly.width\"\n    >\n    <lib-portlet\n      *ngIf=\"pl\"\n      [portlet]=\"pl\"\n      ></lib-portlet>\n  </div>\n</div>","styles":[""]}]}],"members":{"portletOpts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"Property","line":14,"character":3},"arguments":[{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"PropertyTypes","line":15,"character":10},"member":"Object"},"isArray":true,"objectOption":{"objPropertyOptions":[{"name":"portletId","type":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@gspwidget/widget-devkit","name":"PropertyTypes","line":20,"character":14},"member":"Help2"},"help2Option":{"preset":"eppPortlet","valueField":"id","labelField":"name"}},{"name":"width","textOption":{"default":"50%"}}]}}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@gspwidget/util","name":"PortletRepo","line":41,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":42,"character":15}]}],"onPropertyChange":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"refreshPortletsByIds":[{"__symbolic":"method"}]}},"PortletWithFeOnly":{"__symbolic":"interface"},"ShellLayoutModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ShellLayoutComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"@gspwidget/portlet","name":"PortletModule","line":11,"character":4}],"exports":[{"__symbolic":"reference","name":"ShellLayoutComponent"}],"providers":[]}]}],"members":{}},"HelpInputComponent":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"xc-help-input","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":8,"character":19},"member":"OnPush"},"template":"<div class=\"help-input d-flex justify-content-between align-items-center\">\n  <input type=\"text\"\n    (click)=\"handleClick()\"\n    class=\"help-input form-control form-control-sm flex-fill\"\n    readonly\n    placeholder=\"{{'emptyAdj' | translate}}\"\n    [ngModel]=\"xcLabel\"\n    >\n  <i class=\"material-icons\">adjust</i>\n</div>\n","styles":[".help-input{cursor:pointer}.help-input:hover i{color:#687380}.help-input input{background:rgba(234,237,240,.33);cursor:pointer}.help-input input:focus{box-shadow:none}.help-input i{font-size:14px;color:#b2bbc6;margin:0 5px;transition:.3s}"]}]}],"members":{"xcPreset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"xcParts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"xcTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"xcLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"xcValueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"XcHelpService"}]}],"ngOnInit":[{"__symbolic":"method"}],"handleClick":[{"__symbolic":"method"}]}},"XcLoadingComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"xc-loading","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":6,"character":19},"member":"OnPush"},"template":"<div class=\"d-flex align-items-center justify-content-center h-100\">\n  <div class=\"load position-relative\">\n    <hr/><hr/><hr/><hr/>\n  </div>\n</div>","styles":[".load{width:20px;height:20px}.load hr{border:0;margin:0;width:40%;height:40%;position:absolute;border-radius:50%;-webkit-animation:2s infinite spin;animation:2s infinite spin}.load :first-child{background:#2a87ff;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.load :nth-child(2){background:#f44336;-webkit-animation-delay:-1s;animation-delay:-1s}.load :nth-child(3){background:#fda543;-webkit-animation-delay:-.5s;animation-delay:-.5s}.load :last-child{background:#5e5e5e}@-webkit-keyframes spin{0%,100%{transform:translate(0)}25%{transform:translate(160%)}50%{transform:translate(160%,160%)}75%{transform:translate(0,160%)}}@keyframes spin{0%,100%{transform:translate(0)}25%{transform:translate(160%)}50%{transform:translate(160%,160%)}75%{transform:translate(0,160%)}}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"XcLoadingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"XcLoadingComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4}],"exports":[{"__symbolic":"reference","name":"XcLoadingComponent"}]}]}],"members":{}},"SimpleFormSchema":{"__symbolic":"interface"},"SimpleFormComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"simple-form","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":17,"character":19},"member":"OnPush"},"template":"\n<form #form=\"ngForm\">\n  <ng-container *ngFor=\"let schema of this.schemas\">\n    <div\n      *ngIf=\"schema.showIf ? schema.showIf() : true\"\n      class=\"form-group row\">\n      <label\n        class=\"col-sm-3 col-form-label\"\n        [class.required]=\"schema.required\"\n      >{{schema.label || schema.name | translate}}</label>\n      <div class=col-sm-9>\n        <ng-container [ngSwitch]=\"schema.type\">\n          <ng-container *ngSwitchCase=\"'i18nInput'\">\n            <lib-i18n-input\n              [maxLength]=\"50\"\n              [placeholder]=\"'('+('emptyAdj' | translate)+')'\"\n              (valueChange)=\"valueObject[schema.name]=($event)\"\n              [value]=\"valueObject[schema.name]\"\n              ></lib-i18n-input>\n          </ng-container>\n          <ng-container *ngSwitchCase=\"'input'\">\n            <input\n              [name]=\"schema.name\"\n              class=\"form-control form-control-sm\"\n              [(ngModel)]=\"valueObject[schema.name]\"\n              [placeholder]=\"schema.placeholder\"\n              [required]=\"schema.required\"\n              />\n          </ng-container>\n          <ng-container *ngSwitchCase=\"'textarea'\">\n            <textarea\n              [name]=\"schema.name\"\n              [placeholder]=\"schema.placeholder | translate\"\n              [(ngModel)]=\"valueObject[schema.name]\"\n              cols=\"30\"\n              rows=\"10\"></textarea>\n          </ng-container>\n          <ng-container *ngSwitchCase=\"'password'\">\n            <epp-password\n              [placeholder]=\"schema.placeholder\"\n              [(value)]=\"valueObject[schema.name]\"\n              [required]=\"schema.required\"\n              [toBeReset]=\"passwordToBeReset\"\n              ></epp-password>\n          </ng-container>\n          <ng-container *ngSwitchCase=\"'checkbox'\">\n            <div class=\"custom-control custom-checkbox\">\n              <input\n                [id]=\"schema.name\"\n                [name]=\"schema.name\"\n                [(ngModel)]=\"valueObject[schema.name]\"\n                type=\"checkbox\"\n                class=\"custom-control-input\"\n                [required]=\"schema.required\"\n                >\n              <label\n                [for]=\"schema.name\"\n                class=\"custom-control-label\"></label>\n            </div>\n          </ng-container>\n          <ng-container *ngSwitchCase=\"'select'\">\n            <select\n              [name]=\"schema.name\"\n              class=\"form-control form-control-sm\"\n              [(ngModel)]=\"valueObject[schema.name]\"\n              [required]=\"schema.required\"\n              >\n              <option\n                *ngFor=\"let option of schema.options\"\n                [value]=\"option\">{{option | translate}}</option>\n            </select>\n          </ng-container>\n        </ng-container>\n      </div>\n    </div>\n  </ng-container>\n</form>","styles":[""]}]}],"members":{"schemas":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"valueObject":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"passwordToBeReset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"init":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":26,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":28,"character":3},"arguments":["form"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"isValid":[{"__symbolic":"method"}]}}},"origins":{"CeArrayComponent":"./lib/config-editor2/ce-array/ce-array.component","CeItemComponent":"./lib/config-editor2/ce-item/ce-item.component","CEGroupValuePayload":"./lib/config-editor2/config-editor2.component","CEGroup":"./lib/config-editor2/config-editor2.component","ConfigEditor2Component":"./lib/config-editor2/config-editor2.component","ConfigEditor2Module":"./lib/config-editor2/config-editor2.module","Lang":"./lib/config-editor2/i18n-input/i18n-input.component","I18N_INPUT_CONFIG":"./lib/config-editor2/i18n-input/i18n-input.component","I18nInputComponent":"./lib/config-editor2/i18n-input/i18n-input.component","I18nInputModule":"./lib/config-editor2/i18n-input/i18n-input.module","DashboardCommonModule":"./lib/dashboard-common.module","DraggablePortletListModule":"./lib/draggable-portlet-list/draggable-portlet-list.module","DraggablePortletListComponent":"./lib/draggable-portlet-list/draggable-portlet-list.component","EppColorPickerComponent":"./lib/epp-color-picker/epp-color-picker.component","EppColorPickerModule":"./lib/epp-color-picker/epp-color-picker.module","ErrorNotificationService":"./lib/error-notification/error-notification.service","FeFilterModalComponent":"./lib/fe-filter-modal/fe-filter-modal.component","FeFilterModalModule":"./lib/fe-filter-modal/fe-filter-modal.module","HelpStructure":"./lib/help/help-shell/help-shell.component","HelpGetData":"./lib/help/help-shell/help-shell.component","HelpShellComponent":"./lib/help/help-shell/help-shell.component","DataPathPipe":"./lib/help/help-shell/help-shell.component","HelpComponent":"./lib/help/help.component","HelpModule":"./lib/help/help.module","HelpOption":"./lib/help/help.service","HelpService":"./lib/help/help.service","XcHelpShellComponent":"./lib/help2/help-shell/help-shell.component","XcHelpService":"./lib/help2/help.service","XcHelp2Module":"./lib/help2/help2.module","XcHelpPresetService":"./lib/help2/help-preset.service","PasswordComponent":"./lib/password/password.component","EppPasswordModule":"./lib/password/password.module","SearchInputComponent":"./lib/search-input/search-input.component","SearchInputModule":"./lib/search-input/search-input.module","SimpleFormModule":"./lib/simple-form/simple-form.module","LoadingComponent":"./lib/status/loading.component","EppStatus":"./lib/status/status.directive","StatusDirective":"./lib/status/status.directive","StatusModule":"./lib/status/status.module","ToTreeModule":"./lib/to-tree/to-tree.module","ToTreePipe":"./lib/to-tree/to-tree.pipe","PropertyChangeEvent":"./lib/types","PropsAndValues":"./lib/types","CEContext":"./lib/types","I18nDataField":"./lib/types","CEDF":"./lib/types","findKeyByValue":"./lib/util","findKeyByValuePredicate":"./lib/util","removeInArray":"./lib/util","WidgetProjectPreviewPageComponent":"./lib/widget-project-preview-page/widget-project-preview-page.component","WidgetProjectPreviewPageModule":"./lib/widget-project-preview-page/widget-project-preview-page.module","eppExpLanguageDef":"./lib/exp-editor/epp-exp/epp-exp.language","Suggestion":"./lib/exp-editor/exp-editor.component","SuggestionGroup":"./lib/exp-editor/exp-editor.component","ExpEditorComponent":"./lib/exp-editor/exp-editor.component","ExpEditorModule":"./lib/exp-editor/exp-editor.module","monacoLoadPromise":"./lib/exp-editor/monaco-controller","LANG_EPP_EXP":"./lib/exp-editor/monaco-controller","handleMonacoLoad":"./lib/exp-editor/monaco-controller","sysVars":"./lib/exp-editor/monaco-controller","registerSysVarsCompletion":"./lib/exp-editor/monaco-controller","EditableTableColumn":"./lib/editable-table/editable-table.component","EditableTableComponent":"./lib/editable-table/editable-table.component","EditableTableModule":"./lib/editable-table/editable-table.module","Tab":"./lib/inner-widgets/shell-tab/shell-tab.component","ShellTabComponent":"./lib/inner-widgets/shell-tab/shell-tab.component","ShellTabModule":"./lib/inner-widgets/shell-tab/shell-tab.module","ShellLayoutComponent":"./lib/inner-widgets/shell-layout/shell-layout.component","PortletWithFeOnly":"./lib/inner-widgets/shell-layout/shell-layout.component","ShellLayoutModule":"./lib/inner-widgets/shell-layout/shell-layout.module","HelpInputComponent":"./lib/help2/help-input/help-input.component","XcLoadingComponent":"./lib/loading/loading.component","XcLoadingModule":"./lib/loading/loading.module","SimpleFormSchema":"./lib/simple-form/simple-form.component","SimpleFormComponent":"./lib/simple-form/simple-form.component"},"importAs":"@gspwidget/common"}