@huntsman-cancer-institute/dictionary-editor 17.9.0 → 17.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -162,7 +162,7 @@ export class DictionaryEditorComponent {
162
162
  </div>
163
163
  </div>
164
164
  </ng-template>
165
- `, isInline: true, styles: [".active .ms-3{color:#fff!important}:host::ng-deep .format-bottom-padding{padding-bottom:10px}:host::ng-deep .active{height:30px}:host::ng-deep .search-item{height:30px;overflow:hidden;white-space:nowrap}:host::ng-deep #filterReadOnly{float:left;display:flex;flex-direction:row-reverse}:host::ng-deep #filterAndSortContainer{background-color:var(--greywarm-light)!important;height:80px}:host::ng-deep .results-count{height:0!important}:host::ng-deep #filterReadOnly-li{font-size:15px;height:30px}:host::ng-deep #SLCC{backgound-color:var(--greywarm-medlight)!important}:host::ng-deep .hci-dic-show-value{padding-right:75px;color:var(--grey-darkest)}\n"], dependencies: [{ kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i4.SidebarComponent, selector: "hci-sidebar", inputs: ["hidden", "output", "sidebarClasses", "showCollapse", "draggable", "sidebarSplitterWidth", "collapsedSize", "minWidth", "maxWidth", "sidebarSize", "sidebarFontSize", "sidebarExpanded"], outputs: ["sidebarSizeChange"] }] }); }
165
+ `, isInline: true, styles: [".active .ms-3{color:#fff!important}:host::ng-deep .format-bottom-padding{padding-bottom:10px}:host::ng-deep .active{height:30px}:host::ng-deep .search-item{height:30px;overflow:hidden;white-space:nowrap}:host::ng-deep #filterReadOnly{float:left;display:flex;flex-direction:row-reverse}:host::ng-deep #filterAndSortContainer{background-color:var(--bluewarm-lighter)!important;height:80px}:host::ng-deep .results-count{height:0!important}:host::ng-deep #filterReadOnly-li{font-size:15px;height:30px}:host::ng-deep #SLCC{backgound-color:var(--greywarm-medlight)!important}:host::ng-deep .hci-dic-show-value{padding-right:75px;color:var(--grey-darkest)}\n"], dependencies: [{ kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i4.SidebarComponent, selector: "hci-sidebar", inputs: ["hidden", "output", "sidebarClasses", "showCollapse", "draggable", "sidebarSplitterWidth", "collapsedSize", "minWidth", "maxWidth", "sidebarSize", "sidebarFontSize", "sidebarExpanded"], outputs: ["sidebarSizeChange"] }] }); }
166
166
  }
167
167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DictionaryEditorComponent, decorators: [{
168
168
  type: Component,
@@ -178,7 +178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
178
178
  </div>
179
179
  </div>
180
180
  </ng-template>
181
- `, styles: [".active .ms-3{color:#fff!important}:host::ng-deep .format-bottom-padding{padding-bottom:10px}:host::ng-deep .active{height:30px}:host::ng-deep .search-item{height:30px;overflow:hidden;white-space:nowrap}:host::ng-deep #filterReadOnly{float:left;display:flex;flex-direction:row-reverse}:host::ng-deep #filterAndSortContainer{background-color:var(--greywarm-light)!important;height:80px}:host::ng-deep .results-count{height:0!important}:host::ng-deep #filterReadOnly-li{font-size:15px;height:30px}:host::ng-deep #SLCC{backgound-color:var(--greywarm-medlight)!important}:host::ng-deep .hci-dic-show-value{padding-right:75px;color:var(--grey-darkest)}\n"] }]
181
+ `, styles: [".active .ms-3{color:#fff!important}:host::ng-deep .format-bottom-padding{padding-bottom:10px}:host::ng-deep .active{height:30px}:host::ng-deep .search-item{height:30px;overflow:hidden;white-space:nowrap}:host::ng-deep #filterReadOnly{float:left;display:flex;flex-direction:row-reverse}:host::ng-deep #filterAndSortContainer{background-color:var(--bluewarm-lighter)!important;height:80px}:host::ng-deep .results-count{height:0!important}:host::ng-deep #filterReadOnly-li{font-size:15px;height:30px}:host::ng-deep #SLCC{backgound-color:var(--greywarm-medlight)!important}:host::ng-deep .hci-dic-show-value{padding-right:75px;color:var(--grey-darkest)}\n"] }]
182
182
  }], ctorParameters: () => [{ type: i1.DictionaryService }, { type: i0.Renderer2 }], propDecorators: { classList: [{
183
183
  type: HostBinding,
184
184
  args: ["class"]
@@ -189,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
189
189
  type: ViewChild,
190
190
  args: ["dictionaryTemplate", { read: TemplateRef, static: true }]
191
191
  }] } });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGljdGlvbmFyeS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvZGljdGlvbmFyeS1lZGl0b3Ivc3JjL2RpY3Rpb25hcnktZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBVSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNoRixPQUFPLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixFQUNuQiw2QkFBNkIsRUFDN0IsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFFckM7Ozs7O0dBS0c7QUF3RUgsTUFBTSxPQUFPLHlCQUF5QjtJQVlwQyxZQUFvQixpQkFBb0MsRUFBVSxRQUFtQjtRQUFqRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVYvRCxjQUFTLEdBQVcsWUFBWSxDQUFDO1FBTXZELCtCQUEwQixHQUFZLElBQUksQ0FBQztRQUUzQyx1QkFBa0IsR0FBWSxJQUFJLENBQUM7UUFTbkMsbUJBQWMsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFOL0UsQ0FBQztJQVFEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7UUFFekMscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQ2hELE9BQU8sQ0FBQyxFQUFFO1lBRVIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFFcEUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FDN0IsQ0FBQyxXQUFnQixFQUFFLFdBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3JHLENBQUM7WUFFRixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQzVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsaUNBQWlDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7dURBRW1EO0lBQzNDLGlDQUFpQztRQUV2QyxJQUFJLGFBQWEsR0FDZixJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDcEMsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFFckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQ3BCO1lBQ0UsV0FBVyxFQUFFLEdBQUc7WUFDaEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsUUFBUSxFQUNOO2dCQUNFO29CQUNFLElBQUksRUFBRSw2QkFBNkI7b0JBQ25DLEVBQUUsRUFBRSxNQUFNO29CQUNWLFNBQVMsRUFBRSxLQUFLO29CQUNoQixxQkFBcUIsRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDdEMsbUJBQW1CLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQ3BDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7aUJBQ3ZDO2dCQUNEO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixFQUFFLEVBQUUsd0JBQXdCO29CQUM1QixRQUFRLEVBQ047d0JBQ0U7NEJBQ0UsSUFBSSxFQUFFLGNBQWM7NEJBQ3BCLEVBQUUsRUFBRSxnQkFBZ0I7NEJBQ3BCLEtBQUssRUFBRSxVQUFVOzRCQUNqQixTQUFTLEVBQUUsZ0JBQWdCOzRCQUMzQixPQUFPLEVBQUUsY0FBYzs0QkFDdkIsTUFBTSxFQUFFLFdBQVc7NEJBQ25CLE9BQU8sRUFBRSxZQUFZOzRCQUNyQixVQUFVLEVBQUUsSUFBSTs0QkFDaEIsTUFBTSxFQUFFLEtBQUs7NEJBQ2IsYUFBYSxFQUFFLElBQUk7NEJBQ25CLFNBQVMsRUFBRSxhQUFhOzRCQUN4QixjQUFjLEVBQUUsb0JBQW9COzRCQUNwQyxPQUFPLEVBQUUsR0FBRyxFQUFFO2dDQUNaLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQ0FDZCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBd0IsQ0FBQztnQ0FDakYsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQzs0QkFDMUMsQ0FBQzt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsY0FBYzs0QkFDcEIsRUFBRSxFQUFFLE1BQU07NEJBQ1YsS0FBSyxFQUFFLEVBQUU7NEJBQ1QsU0FBUyxFQUFFLGdCQUFnQjs0QkFDM0IsT0FBTyxFQUFFLGNBQWM7NEJBQ3ZCLE1BQU0sRUFBRSxzQ0FBc0M7NEJBQzlDLE9BQU8sRUFBRSxZQUFZOzRCQUNyQixVQUFVLEVBQUUsSUFBSTs0QkFDaEIsTUFBTSxFQUFFLElBQUk7NEJBQ1osT0FBTyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO2dDQUM3QixJQUFJLElBQUksR0FBa0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dDQUNuQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7Z0NBQ25ELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dDQUU1RSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29DQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxnQ0FBZ0MsQ0FBQztnQ0FDeEQsQ0FBQztxQ0FBTSxDQUFDO29DQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLDBCQUEwQixDQUFDO2dDQUNsRCxDQUFDO2dDQUVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUNqQyxDQUFDO3lCQUNGO3FCQUNGO2lCQUNKO2dCQUNEO29CQUNFLElBQUksRUFBRSxtQkFBbUI7b0JBQ3pCLEVBQUUsRUFBRSx3QkFBd0I7b0JBQzVCLEtBQUssRUFBRSxjQUFjO29CQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtvQkFDckMsS0FBSyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUM1QyxJQUFJLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtvQkFDaEMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztpQkFDdkM7YUFDRjtTQUNKLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLDBCQUEwQixHQUFHLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1FBQ25FLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFckYsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbkYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7WUFDeEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztZQUM1RCxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztZQUN4QyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRDs7NkRBRXlEO0lBQ3pELGFBQWEsQ0FBQyxVQUFVO1FBQ3RCLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7aUVBRTZEO0lBQzdELGlCQUFpQixDQUFDLFVBQVU7UUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDbEMsQ0FBQzs4R0F0S1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsMkpBSXpCLGdCQUFnQixvSkFFYSxXQUFXLDJDQXpFL0M7Ozs7Ozs7Ozs7OztPQVlDOzsyRkF1RE0seUJBQXlCO2tCQXZFckMsU0FBUzsrQkFFSSx1QkFBdUIsWUFFL0I7Ozs7Ozs7Ozs7OztPQVlDOzhHQXlEaUIsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQUV5QixPQUFPO3NCQUFuRCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFFeUIsa0JBQWtCO3NCQUFyRixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkluaXQsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9kaWN0aW9uYXJ5LXNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICBMaU5hdkNvbXBvbmVudCxcclxuICBTZWFyY2hMaXN0Q29tcG9uZW50LFxyXG4gIFNlYXJjaExpc3RDb250cm9sbGVyQ29tcG9uZW50LFxyXG4gIFNpZGViYXJDb21wb25lbnQsXHJcbiAgVWxOYXZDb21wb25lbnRcclxufSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvbmF2aWdhdGlvblwiO1xyXG5pbXBvcnQge0hjaVNvcnREdG99IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9oY2ktbmctZ3JpZC1kdG9cIjtcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vKipcclxuICogVGhlIHJvb3QgY29tcG9uZW50IGZvciB0aGUgZGljdGlvbmFyeSBlZGl0b3IuICBUaGlzIGRlZmluZXMgYSBzaWRlYmFyIHdoaWNoIHdpbGwgY29udGFpbiB0aGUgbGlzdCBvZiBkaWN0aW9uYXJpZXMuXHJcbiAqIFRoZSBzdWIgcm91dGUgaGVyZSB3aWxsIGRpc3BsYXkgYSBkZXRhaWwgY29tcG9uZW50IHdoZW4gYSBkaWN0aW9uYXJ5IGlzIHNlbGVjdGVkLlxyXG4gKlxyXG4gKiBAc2luY2UgMS4wLjBcclxuICovXHJcbkBDb21wb25lbnQoXHJcbiAge1xyXG4gICAgc2VsZWN0b3I6IFwiaGNpLWRpY3Rpb25hcnktZWRpdG9yXCIsXHJcbiAgICB0ZW1wbGF0ZTpcclxuICAgICAgYFxyXG4gICAgICAgIDxoY2ktc2lkZWJhciAjc2lkZWJhcj48L2hjaS1zaWRlYmFyPlxyXG5cclxuICAgICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGljdGlvbmFyeVRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaXRlbVwiIFtyb3V0ZXJMaW5rXT1cIlsnZGV0YWlsJywgcm93LmNsYXNzTmFtZV1cIiBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ2FjdGl2ZSddXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgW25nU3R5bGVdPVwieydjb2xvcic6cm93LnJlYWRPbmx5ID09PSBmYWxzZSA/ICcjMDA1NDgwJyA6ICcjOGE5NDk5J31cIj5cclxuICAgICAgICAgICAgICB7e3Jvdy5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgYFxyXG4gICAgLFxyXG4gICAgc3R5bGVzOlxyXG4gICAgICBbXHJcbiAgICAgICAgYFxyXG4gICAgICAgICAgLmFjdGl2ZSAubXMtMyB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmZvcm1hdC1ib3R0b20tcGFkZGluZyB7XHJcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDpob3N0OjpuZy1kZWVwIC5hY3RpdmUge1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLnNlYXJjaC1pdGVtIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDpob3N0OjpuZy1kZWVwICNmaWx0ZXJSZWFkT25seSB7XHJcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgOmhvc3Q6Om5nLWRlZXAgI2ZpbHRlckFuZFNvcnRDb250YWluZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ncmV5d2FybS1saWdodCkgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgaGVpZ2h0OiA4MHB4O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDpob3N0OjpuZy1kZWVwIC5yZXN1bHRzLWNvdW50IHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgOmhvc3Q6Om5nLWRlZXAgI2ZpbHRlclJlYWRPbmx5LWxpIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgOmhvc3Q6Om5nLWRlZXAgI1NMQ0Mge1xyXG4gICAgICAgICAgICBiYWNrZ291bmQtY29sb3I6IHZhcigtLWdyZXl3YXJtLW1lZGxpZ2h0KSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDpob3N0OjpuZy1kZWVwIC5oY2ktZGljLXNob3ctdmFsdWUge1xyXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA3NXB4O1xyXG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tZ3JleS1kYXJrZXN0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBgXHJcbiAgICAgIF1cclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBjbGFzc0xpc3Q6IHN0cmluZyA9IFwib3V0bGV0LXJvd1wiO1xyXG5cclxuICBAVmlld0NoaWxkKFNpZGViYXJDb21wb25lbnQsIHtzdGF0aWM6IHRydWV9KSBzaWRlYmFyOiBTaWRlYmFyQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFwiZGljdGlvbmFyeVRlbXBsYXRlXCIsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSkgZGljdGlvbmFyeVRlbXBsYXRlOiBhbnk7XHJcblxyXG4gIGZpbHRlclJlYWRPbmx5RGljdGlvbmFyaWVzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgc29ydERpY3Rpb25hcmllc1VwOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG4gIH1cclxuXHJcbiAgZGljdGlvbmFyaWVzUmVmZXJlbmNlOiBPYmplY3QgW107XHJcblxyXG4gIGRpY3Rpb25hcmllc1JlZmVyZW5jZUNvcHk6IE9iamVjdCBbXTtcclxuXHJcbiAgbG9hZGluZ1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKipcclxuICAgKiBVcG9uIGNyZWF0aW9uLCBzZXQgdXAgdGhlIHNpZGViYXIgYW5kIGxpc3RlbiBmb3IgdGhlIGxpc3Qgb2YgZGljdGlvbmFyaWVzIGZyb20gdGhlIHNlcnZpY2UuXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZSA9IFtdO1xyXG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5zZXREaWN0aW9uYXJ5U2lkZUJhckNvbmZpZ3VyYXRpb24oKTtcclxuXHJcbiAgICAvLyBNYWtlcyBDYWxsIFRvIEdldCBUaGUgRGljdGlvbmFyaWVzXHJcbiAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldERpY3Rpb25hcmllcygpLnN1YnNjcmliZShcclxuICAgICAgdGhlRGF0YSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlID0gdGhlRGF0YS5maWx0ZXIodGhpcy5jaGVja0ludGVybmFsT25seSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlLnNvcnQoXHJcbiAgICAgICAgICAoZGljdGlvbmFyeUE6IGFueSwgZGljdGlvbmFyeUI6IGFueSkgPT4gKGRpY3Rpb25hcnlBLmRpc3BsYXlOYW1lIDwgZGljdGlvbmFyeUIuZGlzcGxheU5hbWUgPyAtMSA6IDEpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWN0aW9uYXJpZXNSZWZlcmVuY2VDb3B5ID0gdGhpcy5kaWN0aW9uYXJpZXNSZWZlcmVuY2U7XHJcbiAgICAgICAgdGhpcy5kaWN0aW9uYXJpZXNSZWZlcmVuY2UgPSB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZS5maWx0ZXIodGhpcy5jaGVja1JlYWRPbmx5KTtcclxuICAgICAgICB0aGlzLnNldERpY3Rpb25hcnlTaWRlQmFyQ29uZmlndXJhdGlvbigpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqIEhlbHBlciBNZXRob2QgVG8gQ29uZmlndXJlIERpY3Rpb25hcnkgU2lkZSBCYXJcclxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICBwcml2YXRlIHNldERpY3Rpb25hcnlTaWRlQmFyQ29uZmlndXJhdGlvbigpIHtcclxuXHJcbiAgICBsZXQgcmVzdWx0TWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlLmxlbmd0aCA9PSAwXHJcbiAgICAgICAgPyBcIlwiXHJcbiAgICAgICAgOiB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZS5sZW5ndGggKyBcIiBSZXN1bHRzXCI7XHJcblxyXG4gICAgdGhpcy5zaWRlYmFyLnNldENvbmZpZyhcclxuICAgICAge1xyXG4gICAgICAgIHNpZGViYXJTaXplOiAyNDAsXHJcbiAgICAgICAgc2hvd0NvbGxhcHNlOiBmYWxzZSxcclxuICAgICAgICBjaGlsZHJlbjpcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IFNlYXJjaExpc3RDb250cm9sbGVyQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgIGlkOiBcIlNMQ0NcIixcclxuICAgICAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGZpbHRlckJ5QWxsb3dlZEZpZWxkczogW1wiZGlzcGxheU5hbWVcIl0sXHJcbiAgICAgICAgICAgICAgc29ydEJ5QWxsb3dlZEZpZWxkczogW1wiZGlzcGxheU5hbWVcIl0sXHJcbiAgICAgICAgICAgICAgbG9hZGluZ1N1YmplY3RzOiBbdGhpcy5sb2FkaW5nU3ViamVjdF1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IFVsTmF2Q29tcG9uZW50LFxyXG4gICAgICAgICAgICAgIHVsQ2xhc3M6IFwiaGNpLWRpYy11bC1jbGFzc1wiLFxyXG4gICAgICAgICAgICAgIGlkOiBcImZpbHRlckFuZFNvcnRDb250YWluZXJcIixcclxuICAgICAgICAgICAgICBjaGlsZHJlbjpcclxuICAgICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IExpTmF2Q29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImZpbHRlclJlYWRPbmx5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiU2hvdyBBbGxcIixcclxuICAgICAgICAgICAgICAgICAgICBzcGFuQ2xhc3M6IFwiaGNpLWRpYy1zcGFuLTFcIixcclxuICAgICAgICAgICAgICAgICAgICBsaUNsYXNzOiBcImhjaS1kaWMtbGktbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGlDbGFzczogXCJoY2ktZGljLWlcIixcclxuICAgICAgICAgICAgICAgICAgICB1bENsYXNzOiBcImhjaS1kaWMtdWxcIixcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGlSaWdodDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd1ZhbHVlRmxhZzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBzaG93VmFsdWU6IHJlc3VsdE1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd1ZhbHVlQ2xhc3M6IFwiaGNpLWRpYy1zaG93LXZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbGlDbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBTTEMgPSB0aGlzLnNpZGViYXIuZ2V0Q2hpbGQoXCJkaWN0aW9uYXJpZXMtY29tcG9uZW50XCIpIGFzIFNlYXJjaExpc3RDb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICBTTEMuc2V0RGF0YSh0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogTGlOYXZDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwic29ydFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHNwYW5DbGFzczogXCJoY2ktZGljLXNwYW4tMlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGxpQ2xhc3M6IFwiaGNpLWRpYy1saS1yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgaUNsYXNzOiBcImZhLXNvbGlkIGZhLWFycm93LWRvd24tYS16IGhjaS1kaWMtaVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHVsQ2xhc3M6IFwiaGNpLWRpYy11bFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgaVJpZ2h0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGxpQ2xpY2s6IChjbGljazogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IFNMQ0MgPSA8U2VhcmNoTGlzdENvbnRyb2xsZXJDb21wb25lbnQ+dGhpcy5zaWRlYmFyLmdldENoaWxkKFwiU0xDQ1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIFNMQ0Muc2V0U29ydChjbGljaywgXCJkaXNwbGF5TmFtZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydERpY3Rpb25hcmllc1VwID0gIXRoaXMuc29ydERpY3Rpb25hcmllc1VwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNvcnQgPSB0aGlzLnNpZGViYXIuZ2V0Q2hpbGQoXCJmaWx0ZXJBbmRTb3J0Q29udGFpbmVyXCIpLmdldENoaWxkKFwic29ydFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3J0RGljdGlvbmFyaWVzVXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydC5jb25maWcuaUNsYXNzID0gXCJmYXMgZmEtc29saWQgZmEtYXJyb3ctZG93bi1hLXpcIjtcclxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQuY29uZmlnLmlDbGFzcyA9IFwiZmEtc29saWQgZmEtYXJyb3ctdXAtYS16XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgc29ydC51cGRhdGVDb25maWcoc29ydC5jb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogU2VhcmNoTGlzdENvbXBvbmVudCxcclxuICAgICAgICAgICAgICBpZDogXCJkaWN0aW9uYXJpZXMtY29tcG9uZW50XCIsXHJcbiAgICAgICAgICAgICAgdGl0bGU6IFwiRGljdGlvbmFyaWVzXCIsXHJcbiAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlOiB0aGlzLmRpY3Rpb25hcnlUZW1wbGF0ZSxcclxuICAgICAgICAgICAgICBzb3J0czogW25ldyBIY2lTb3J0RHRvKFwiZGlzcGxheU5hbWVcIiwgdHJ1ZSldLFxyXG4gICAgICAgICAgICAgIGRhdGE6IHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlLFxyXG4gICAgICAgICAgICAgIGxvYWRpbmdTdWJqZWN0czogW3RoaXMubG9hZGluZ1N1YmplY3RdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZpbHRlcigpIHtcclxuICAgIHRoaXMuZmlsdGVyUmVhZE9ubHlEaWN0aW9uYXJpZXMgPSAhdGhpcy5maWx0ZXJSZWFkT25seURpY3Rpb25hcmllcztcclxuICAgIGxldCBGUk8gPSB0aGlzLnNpZGViYXIuZ2V0Q2hpbGQoXCJmaWx0ZXJBbmRTb3J0Q29udGFpbmVyXCIpLmdldENoaWxkKFwiZmlsdGVyUmVhZE9ubHlcIik7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlsdGVyUmVhZE9ubHlEaWN0aW9uYXJpZXMpIHtcclxuICAgICAgdGhpcy5kaWN0aW9uYXJpZXNSZWZlcmVuY2UgPSB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZS5maWx0ZXIodGhpcy5jaGVja1JlYWRPbmx5KTtcclxuICAgICAgRlJPLmNvbmZpZy5zcGFuQ2xhc3MgPSBcImhjaS1kaWMtc3Bhbi0xXCI7XHJcbiAgICAgIEZSTy5jb25maWcuc2hvd1ZhbHVlID0gKEZSTy5jb25maWcuc2hvd1ZhbHVlRmxhZykgPyB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZS5sZW5ndGggKyBcIiBSZXN1bHQocylcIiA6IFwiXCI7XHJcbiAgICAgIEZSTy51cGRhdGVDb25maWcoRlJPLmNvbmZpZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZSA9IHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlQ29weTtcclxuICAgICAgRlJPLmNvbmZpZy5zcGFuQ2xhc3MgPSBcImhjaS1kaWMtc3Bhbi0zXCI7XHJcbiAgICAgIEZSTy5jb25maWcuc2hvd1ZhbHVlID0gKEZSTy5jb25maWcuc2hvd1ZhbHVlRmxhZykgPyB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZS5sZW5ndGggKyBcIiBSZXN1bHQocylcIiA6IFwiXCI7XHJcbiAgICAgIEZSTy51cGRhdGVDb25maWcoRlJPLmNvbmZpZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqIEhlbHBlciBNZXRob2QgVG8gRGV0ZXJtaW5lIElmIERpY3Rpb25hcnkgSXMgUmVhZCBPbmx5XHJcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgY2hlY2tSZWFkT25seShkaWN0aW9uYXJ5KSB7XHJcbiAgICByZXR1cm4gIWRpY3Rpb25hcnkucmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgKiBIZWxwZXIgTWV0aG9kIFRvIERldGVybWluZSBJZiBEaWN0aW9uYXJ5IElzIEludGVybmFsIE9ubHlcclxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgY2hlY2tJbnRlcm5hbE9ubHkoZGljdGlvbmFyeSkge1xyXG4gICAgcmV0dXJuICFkaWN0aW9uYXJ5LmludGVybmFsT25seTtcclxuICB9XHJcbn1cclxuIl19
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGljdGlvbmFyeS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvZGljdGlvbmFyeS1lZGl0b3Ivc3JjL2RpY3Rpb25hcnktZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBVSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNoRixPQUFPLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixFQUNuQiw2QkFBNkIsRUFDN0IsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFFckM7Ozs7O0dBS0c7QUF3RUgsTUFBTSxPQUFPLHlCQUF5QjtJQVlwQyxZQUFvQixpQkFBb0MsRUFBVSxRQUFtQjtRQUFqRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVYvRCxjQUFTLEdBQVcsWUFBWSxDQUFDO1FBTXZELCtCQUEwQixHQUFZLElBQUksQ0FBQztRQUUzQyx1QkFBa0IsR0FBWSxJQUFJLENBQUM7UUFTbkMsbUJBQWMsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFOL0UsQ0FBQztJQVFEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7UUFFekMscUNB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QUFpQixDQUFDLFVBQVU7UUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDbEMsQ0FBQzs4R0F0S1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsMkpBSXpCLGdCQUFnQixvSkFFYSxXQUFXLDJDQXpFL0M7Ozs7Ozs7Ozs7OztPQVlDOzsyRkF1RE0seUJBQXlCO2tCQXZFckMsU0FBUzsrQkFFSSx1QkFBdUIsWUFFL0I7Ozs7Ozs7Ozs7OztPQVlDOzhHQXlEaUIsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQUV5QixPQUFPO3NCQUFuRCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFFeUIsa0JBQWtCO3NCQUFyRixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkluaXQsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9kaWN0aW9uYXJ5LXNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICBMaU5hdkNvbXBvbmVudCxcclxuICBTZWFyY2hMaXN0Q29tcG9uZW50LFxyXG4gIFNlYXJjaExpc3RDb250cm9sbGVyQ29tcG9uZW50LFxyXG4gIFNpZGViYXJDb21wb25lbnQsXHJcbiAgVWxOYXZDb21wb25lbnRcclxufSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvbmF2aWdhdGlvblwiO1xyXG5pbXBvcnQge0hjaVNvcnREdG99IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9oY2ktbmctZ3JpZC1kdG9cIjtcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vKipcclxuICogVGhlIHJvb3QgY29tcG9uZW50IGZvciB0aGUgZGljdGlvbmFyeSBlZGl0b3IuICBUaGlzIGRlZmluZXMgYSBzaWRlYmFyIHdoaWNoIHdpbGwgY29udGFpbiB0aGUgbGlzdCBvZiBkaWN0aW9uYXJpZXMuXHJcbiAqIFRoZSBzdWIgcm91dGUgaGVyZSB3aWxsIGRpc3BsYXkgYSBkZXRhaWwgY29tcG9uZW50IHdoZW4gYSBkaWN0aW9uYXJ5IGlzIHNlbGVjdGVkLlxyXG4gKlxyXG4gKiBAc2luY2UgMS4wLjBcclxuICovXHJcbkBDb21wb25lbnQoXHJcbiAge1xyXG4gICAgc2VsZWN0b3I6IFwiaGNpLWRpY3Rpb25hcnktZWRpdG9yXCIsXHJcbiAgICB0ZW1wbGF0ZTpcclxuICAgICAgYFxyXG4gICAgICAgIDxoY2ktc2lkZWJhciAjc2lkZWJhcj48L2hjaS1zaWRlYmFyPlxyXG5cclxuICAgICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGljdGlvbmFyeVRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaXRlbVwiIFtyb3V0ZXJMaW5rXT1cIlsnZGV0YWlsJywgcm93LmNsYXNzTmFtZV1cIiBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ2FjdGl2ZSddXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgW25nU3R5bGVdPVwieydjb2xvcic6cm93LnJlYWRPbmx5ID09PSBmYWxzZSA/ICcjMDA1NDgwJyA6ICcjOGE5NDk5J31cIj5cclxuICAgICAgICAgICAgICB7e3Jvdy5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgYFxyXG4gICAgLFxyXG4gICAgc3R5bGVzOlxyXG4gICAgICBbXHJcbiAgICAgICAgYFxyXG4gICAgICAgICAgLmFjdGl2ZSAubXMtMyB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmZvcm1hdC1ib3R0b20tcGFkZGluZyB7XHJcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDpob3N0OjpuZy1kZWVwIC5hY3RpdmUge1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLnNlYXJjaC1pdGVtIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDpob3N0OjpuZy1kZWVwICNmaWx0ZXJSZWFkT25seSB7XHJcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgOmhvc3Q6Om5nLWRlZXAgI2ZpbHRlckFuZFNvcnRDb250YWluZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVld2FybS1saWdodGVyKSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDgwcHg7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLnJlc3VsdHMtY291bnQge1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICA6aG9zdDo6bmctZGVlcCAjZmlsdGVyUmVhZE9ubHktbGkge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICAgICAgICAgIGhlaWdodDogMzBweDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICA6aG9zdDo6bmctZGVlcCAjU0xDQyB7XHJcbiAgICAgICAgICAgIGJhY2tnb3VuZC1jb2xvcjogdmFyKC0tZ3JleXdhcm0tbWVkbGlnaHQpICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmhjaS1kaWMtc2hvdy12YWx1ZSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDc1cHg7XHJcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ncmV5LWRhcmtlc3QpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGBcclxuICAgICAgXVxyXG4gIH1cclxuKVxyXG5leHBvcnQgY2xhc3MgRGljdGlvbmFyeUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzXCIpIGNsYXNzTGlzdDogc3RyaW5nID0gXCJvdXRsZXQtcm93XCI7XHJcblxyXG4gIEBWaWV3Q2hpbGQoU2lkZWJhckNvbXBvbmVudCwge3N0YXRpYzogdHJ1ZX0pIHNpZGViYXI6IFNpZGViYXJDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJkaWN0aW9uYXJ5VGVtcGxhdGVcIiwge3JlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWV9KSBkaWN0aW9uYXJ5VGVtcGxhdGU6IGFueTtcclxuXHJcbiAgZmlsdGVyUmVhZE9ubHlEaWN0aW9uYXJpZXM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBzb3J0RGljdGlvbmFyaWVzVXA6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBEaWN0aW9uYXJ5U2VydmljZSwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XHJcbiAgfVxyXG5cclxuICBkaWN0aW9uYXJpZXNSZWZlcmVuY2U6IE9iamVjdCBbXTtcclxuXHJcbiAgZGljdGlvbmFyaWVzUmVmZXJlbmNlQ29weTogT2JqZWN0IFtdO1xyXG5cclxuICBsb2FkaW5nU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwb24gY3JlYXRpb24sIHNldCB1cCB0aGUgc2lkZWJhciBhbmQgbGlzdGVuIGZvciB0aGUgbGlzdCBvZiBkaWN0aW9uYXJpZXMgZnJvbSB0aGUgc2VydmljZS5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlID0gW107XHJcbiAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLnNldERpY3Rpb25hcnlTaWRlQmFyQ29uZmlndXJhdGlvbigpO1xyXG5cclxuICAgIC8vIE1ha2VzIENhbGwgVG8gR2V0IFRoZSBEaWN0aW9uYXJpZXNcclxuICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0RGljdGlvbmFyaWVzKCkuc3Vic2NyaWJlKFxyXG4gICAgICB0aGVEYXRhID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5kaWN0aW9uYXJpZXNSZWZlcmVuY2UgPSB0aGVEYXRhLmZpbHRlcih0aGlzLmNoZWNrSW50ZXJuYWxPbmx5KTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWN0aW9uYXJpZXNSZWZlcmVuY2Uuc29ydChcclxuICAgICAgICAgIChkaWN0aW9uYXJ5QTogYW55LCBkaWN0aW9uYXJ5QjogYW55KSA9PiAoZGljdGlvbmFyeUEuZGlzcGxheU5hbWUgPCBkaWN0aW9uYXJ5Qi5kaXNwbGF5TmFtZSA/IC0xIDogMSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZUNvcHkgPSB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZTtcclxuICAgICAgICB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZSA9IHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlLmZpbHRlcih0aGlzLmNoZWNrUmVhZE9ubHkpO1xyXG4gICAgICAgIHRoaXMuc2V0RGljdGlvbmFyeVNpZGVCYXJDb25maWd1cmF0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICogSGVscGVyIE1ldGhvZCBUbyBDb25maWd1cmUgRGljdGlvbmFyeSBTaWRlIEJhclxyXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gIHByaXZhdGUgc2V0RGljdGlvbmFyeVNpZGVCYXJDb25maWd1cmF0aW9uKCkge1xyXG5cclxuICAgIGxldCByZXN1bHRNZXNzYWdlID1cclxuICAgICAgdGhpcy5kaWN0aW9uYXJpZXNSZWZlcmVuY2UubGVuZ3RoID09IDBcclxuICAgICAgICA/IFwiXCJcclxuICAgICAgICA6IHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlLmxlbmd0aCArIFwiIFJlc3VsdHNcIjtcclxuXHJcbiAgICB0aGlzLnNpZGViYXIuc2V0Q29uZmlnKFxyXG4gICAgICB7XHJcbiAgICAgICAgc2lkZWJhclNpemU6IDI0MCxcclxuICAgICAgICBzaG93Q29sbGFwc2U6IGZhbHNlLFxyXG4gICAgICAgIGNoaWxkcmVuOlxyXG4gICAgICAgICAgW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogU2VhcmNoTGlzdENvbnRyb2xsZXJDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgaWQ6IFwiU0xDQ1wiLFxyXG4gICAgICAgICAgICAgIHNob3dUaXRsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgZmlsdGVyQnlBbGxvd2VkRmllbGRzOiBbXCJkaXNwbGF5TmFtZVwiXSxcclxuICAgICAgICAgICAgICBzb3J0QnlBbGxvd2VkRmllbGRzOiBbXCJkaXNwbGF5TmFtZVwiXSxcclxuICAgICAgICAgICAgICBsb2FkaW5nU3ViamVjdHM6IFt0aGlzLmxvYWRpbmdTdWJqZWN0XVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogVWxOYXZDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgdWxDbGFzczogXCJoY2ktZGljLXVsLWNsYXNzXCIsXHJcbiAgICAgICAgICAgICAgaWQ6IFwiZmlsdGVyQW5kU29ydENvbnRhaW5lclwiLFxyXG4gICAgICAgICAgICAgIGNoaWxkcmVuOlxyXG4gICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogTGlOYXZDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiZmlsdGVyUmVhZE9ubHlcIixcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJTaG93IEFsbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHNwYW5DbGFzczogXCJoY2ktZGljLXNwYW4tMVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGxpQ2xhc3M6IFwiaGNpLWRpYy1saS1sXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgaUNsYXNzOiBcImhjaS1kaWMtaVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHVsQ2xhc3M6IFwiaGNpLWRpYy11bFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgaVJpZ2h0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBzaG93VmFsdWVGbGFnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dWYWx1ZTogcmVzdWx0TWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICBzaG93VmFsdWVDbGFzczogXCJoY2ktZGljLXNob3ctdmFsdWVcIixcclxuICAgICAgICAgICAgICAgICAgICBsaUNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IFNMQyA9IHRoaXMuc2lkZWJhci5nZXRDaGlsZChcImRpY3Rpb25hcmllcy1jb21wb25lbnRcIikgYXMgU2VhcmNoTGlzdENvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgICAgICAgIFNMQy5zZXREYXRhKHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBMaU5hdkNvbXBvbmVudCxcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCJzb3J0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgc3BhbkNsYXNzOiBcImhjaS1kaWMtc3Bhbi0yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbGlDbGFzczogXCJoY2ktZGljLWxpLXJcIixcclxuICAgICAgICAgICAgICAgICAgICBpQ2xhc3M6IFwiZmEtc29saWQgZmEtYXJyb3ctZG93bi1hLXogaGNpLWRpYy1pXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdWxDbGFzczogXCJoY2ktZGljLXVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBpUmlnaHQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbGlDbGljazogKGNsaWNrOiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgU0xDQyA9IDxTZWFyY2hMaXN0Q29udHJvbGxlckNvbXBvbmVudD50aGlzLnNpZGViYXIuZ2V0Q2hpbGQoXCJTTENDXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgU0xDQy5zZXRTb3J0KGNsaWNrLCBcImRpc3BsYXlOYW1lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0RGljdGlvbmFyaWVzVXAgPSAhdGhpcy5zb3J0RGljdGlvbmFyaWVzVXA7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgc29ydCA9IHRoaXMuc2lkZWJhci5nZXRDaGlsZChcImZpbHRlckFuZFNvcnRDb250YWluZXJcIikuZ2V0Q2hpbGQoXCJzb3J0XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNvcnREaWN0aW9uYXJpZXNVcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0LmNvbmZpZy5pQ2xhc3MgPSBcImZhcyBmYS1zb2xpZCBmYS1hcnJvdy1kb3duLWEtelwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydC5jb25maWcuaUNsYXNzID0gXCJmYS1zb2xpZCBmYS1hcnJvdy11cC1hLXpcIjtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0LnVwZGF0ZUNvbmZpZyhzb3J0LmNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBTZWFyY2hMaXN0Q29tcG9uZW50LFxyXG4gICAgICAgICAgICAgIGlkOiBcImRpY3Rpb25hcmllcy1jb21wb25lbnRcIixcclxuICAgICAgICAgICAgICB0aXRsZTogXCJEaWN0aW9uYXJpZXNcIixcclxuICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU6IHRoaXMuZGljdGlvbmFyeVRlbXBsYXRlLFxyXG4gICAgICAgICAgICAgIHNvcnRzOiBbbmV3IEhjaVNvcnREdG8oXCJkaXNwbGF5TmFtZVwiLCB0cnVlKV0sXHJcbiAgICAgICAgICAgICAgZGF0YTogdGhpcy5kaWN0aW9uYXJpZXNSZWZlcmVuY2UsXHJcbiAgICAgICAgICAgICAgbG9hZGluZ1N1YmplY3RzOiBbdGhpcy5sb2FkaW5nU3ViamVjdF1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyKCkge1xyXG4gICAgdGhpcy5maWx0ZXJSZWFkT25seURpY3Rpb25hcmllcyA9ICF0aGlzLmZpbHRlclJlYWRPbmx5RGljdGlvbmFyaWVzO1xyXG4gICAgbGV0IEZSTyA9IHRoaXMuc2lkZWJhci5nZXRDaGlsZChcImZpbHRlckFuZFNvcnRDb250YWluZXJcIikuZ2V0Q2hpbGQoXCJmaWx0ZXJSZWFkT25seVwiKTtcclxuXHJcbiAgICBpZiAodGhpcy5maWx0ZXJSZWFkT25seURpY3Rpb25hcmllcykge1xyXG4gICAgICB0aGlzLmRpY3Rpb25hcmllc1JlZmVyZW5jZSA9IHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlLmZpbHRlcih0aGlzLmNoZWNrUmVhZE9ubHkpO1xyXG4gICAgICBGUk8uY29uZmlnLnNwYW5DbGFzcyA9IFwiaGNpLWRpYy1zcGFuLTFcIjtcclxuICAgICAgRlJPLmNvbmZpZy5zaG93VmFsdWUgPSAoRlJPLmNvbmZpZy5zaG93VmFsdWVGbGFnKSA/IHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlLmxlbmd0aCArIFwiIFJlc3VsdChzKVwiIDogXCJcIjtcclxuICAgICAgRlJPLnVwZGF0ZUNvbmZpZyhGUk8uY29uZmlnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlID0gdGhpcy5kaWN0aW9uYXJpZXNSZWZlcmVuY2VDb3B5O1xyXG4gICAgICBGUk8uY29uZmlnLnNwYW5DbGFzcyA9IFwiaGNpLWRpYy1zcGFuLTNcIjtcclxuICAgICAgRlJPLmNvbmZpZy5zaG93VmFsdWUgPSAoRlJPLmNvbmZpZy5zaG93VmFsdWVGbGFnKSA/IHRoaXMuZGljdGlvbmFyaWVzUmVmZXJlbmNlLmxlbmd0aCArIFwiIFJlc3VsdChzKVwiIDogXCJcIjtcclxuICAgICAgRlJPLnVwZGF0ZUNvbmZpZyhGUk8uY29uZmlnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICogSGVscGVyIE1ldGhvZCBUbyBEZXRlcm1pbmUgSWYgRGljdGlvbmFyeSBJcyBSZWFkIE9ubHlcclxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICBjaGVja1JlYWRPbmx5KGRpY3Rpb25hcnkpIHtcclxuICAgIHJldHVybiAhZGljdGlvbmFyeS5yZWFkT25seTtcclxuICB9XHJcblxyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqIEhlbHBlciBNZXRob2QgVG8gRGV0ZXJtaW5lIElmIERpY3Rpb25hcnkgSXMgSW50ZXJuYWwgT25seVxyXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICBjaGVja0ludGVybmFsT25seShkaWN0aW9uYXJ5KSB7XHJcbiAgICByZXR1cm4gIWRpY3Rpb25hcnkuaW50ZXJuYWxPbmx5O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -33,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
33
33
  ]
34
34
  }]
35
35
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1yZW5kZXJlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWN0aW9uYXJ5LWVkaXRvci9zcmMvZ3JpZC1yZW5kZXJlcnMvYWctZ3JpZC1yZW5kZXJlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBZ0I3QyxNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQixpQkFSN0IsY0FBYztZQUNaLFlBQVksYUFOWixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQixhQU9uQixjQUFjO1lBQ2QsWUFBWTsrR0FHTCxvQkFBb0IsWUFiM0IsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7OzJGQVdaLG9CQUFvQjtrQkFmaEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjtxQkFDcEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNkLGNBQWM7d0JBQ1osWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxZQUFZO3FCQUNiO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IHsgU2VsZWN0UmVuZGVyZXIgfSBmcm9tIFwiLi9zZWxlY3QucmVuZGVyZXJcIjtcbmltcG9ydCB7RGF0ZVJlbmRlcmVyfSBmcm9tIFwiLi9kYXRlLnJlbmRlcmVyXCI7XG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuXHRcdCAgU2VsZWN0UmVuZGVyZXIsXG4gICAgICBEYXRlUmVuZGVyZXJcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgIFNlbGVjdFJlbmRlcmVyLFxuICAgICAgRGF0ZVJlbmRlcmVyXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBZ0dyaWRSZW5kZXJlck1vZHVsZSB7IH1cbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1yZW5kZXJlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWN0aW9uYXJ5LWVkaXRvci9zcmMvZ3JpZC1yZW5kZXJlcnMvYWctZ3JpZC1yZW5kZXJlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBZ0I3QyxNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQixpQkFSN0IsY0FBYztZQUNaLFlBQVksYUFOWixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQixhQU9uQixjQUFjO1lBQ2QsWUFBWTsrR0FHTCxvQkFBb0IsWUFiM0IsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7OzJGQVdaLG9CQUFvQjtrQkFmaEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjtxQkFDcEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNkLGNBQWM7d0JBQ1osWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxZQUFZO3FCQUNiO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQgeyBTZWxlY3RSZW5kZXJlciB9IGZyb20gXCIuL3NlbGVjdC5yZW5kZXJlclwiO1xyXG5pbXBvcnQge0RhdGVSZW5kZXJlcn0gZnJvbSBcIi4vZGF0ZS5yZW5kZXJlclwiO1xyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgXSxcclxuICAgIGRlY2xhcmF0aW9uczogW1xyXG5cdFx0ICBTZWxlY3RSZW5kZXJlcixcclxuICAgICAgRGF0ZVJlbmRlcmVyXHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogW1xyXG4gICAgICBTZWxlY3RSZW5kZXJlcixcclxuICAgICAgRGF0ZVJlbmRlcmVyXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZ0dyaWRSZW5kZXJlck1vZHVsZSB7IH1cclxuIl19
@@ -180,7 +180,7 @@ class DictionaryEditorComponent {
180
180
  </div>
181
181
  </div>
182
182
  </ng-template>
183
- `, isInline: true, styles: [".active .ms-3{color:#fff!important}:host::ng-deep .format-bottom-padding{padding-bottom:10px}:host::ng-deep .active{height:30px}:host::ng-deep .search-item{height:30px;overflow:hidden;white-space:nowrap}:host::ng-deep #filterReadOnly{float:left;display:flex;flex-direction:row-reverse}:host::ng-deep #filterAndSortContainer{background-color:var(--greywarm-light)!important;height:80px}:host::ng-deep .results-count{height:0!important}:host::ng-deep #filterReadOnly-li{font-size:15px;height:30px}:host::ng-deep #SLCC{backgound-color:var(--greywarm-medlight)!important}:host::ng-deep .hci-dic-show-value{padding-right:75px;color:var(--grey-darkest)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i4.SidebarComponent, selector: "hci-sidebar", inputs: ["hidden", "output", "sidebarClasses", "showCollapse", "draggable", "sidebarSplitterWidth", "collapsedSize", "minWidth", "maxWidth", "sidebarSize", "sidebarFontSize", "sidebarExpanded"], outputs: ["sidebarSizeChange"] }] }); }
183
+ `, isInline: true, styles: [".active .ms-3{color:#fff!important}:host::ng-deep .format-bottom-padding{padding-bottom:10px}:host::ng-deep .active{height:30px}:host::ng-deep .search-item{height:30px;overflow:hidden;white-space:nowrap}:host::ng-deep #filterReadOnly{float:left;display:flex;flex-direction:row-reverse}:host::ng-deep #filterAndSortContainer{background-color:var(--bluewarm-lighter)!important;height:80px}:host::ng-deep .results-count{height:0!important}:host::ng-deep #filterReadOnly-li{font-size:15px;height:30px}:host::ng-deep #SLCC{backgound-color:var(--greywarm-medlight)!important}:host::ng-deep .hci-dic-show-value{padding-right:75px;color:var(--grey-darkest)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i4.SidebarComponent, selector: "hci-sidebar", inputs: ["hidden", "output", "sidebarClasses", "showCollapse", "draggable", "sidebarSplitterWidth", "collapsedSize", "minWidth", "maxWidth", "sidebarSize", "sidebarFontSize", "sidebarExpanded"], outputs: ["sidebarSizeChange"] }] }); }
184
184
  }
185
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DictionaryEditorComponent, decorators: [{
186
186
  type: Component,
@@ -196,7 +196,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
196
196
  </div>
197
197
  </div>
198
198
  </ng-template>
199
- `, styles: [".active .ms-3{color:#fff!important}:host::ng-deep .format-bottom-padding{padding-bottom:10px}:host::ng-deep .active{height:30px}:host::ng-deep .search-item{height:30px;overflow:hidden;white-space:nowrap}:host::ng-deep #filterReadOnly{float:left;display:flex;flex-direction:row-reverse}:host::ng-deep #filterAndSortContainer{background-color:var(--greywarm-light)!important;height:80px}:host::ng-deep .results-count{height:0!important}:host::ng-deep #filterReadOnly-li{font-size:15px;height:30px}:host::ng-deep #SLCC{backgound-color:var(--greywarm-medlight)!important}:host::ng-deep .hci-dic-show-value{padding-right:75px;color:var(--grey-darkest)}\n"] }]
199
+ `, styles: [".active .ms-3{color:#fff!important}:host::ng-deep .format-bottom-padding{padding-bottom:10px}:host::ng-deep .active{height:30px}:host::ng-deep .search-item{height:30px;overflow:hidden;white-space:nowrap}:host::ng-deep #filterReadOnly{float:left;display:flex;flex-direction:row-reverse}:host::ng-deep #filterAndSortContainer{background-color:var(--bluewarm-lighter)!important;height:80px}:host::ng-deep .results-count{height:0!important}:host::ng-deep #filterReadOnly-li{font-size:15px;height:30px}:host::ng-deep #SLCC{backgound-color:var(--greywarm-medlight)!important}:host::ng-deep .hci-dic-show-value{padding-right:75px;color:var(--grey-darkest)}\n"] }]
200
200
  }], ctorParameters: () => [{ type: i1.DictionaryService }, { type: i0.Renderer2 }], propDecorators: { classList: [{
201
201
  type: HostBinding,
202
202
  args: ["class"]
@@ -1 +1 @@
1
- {"version":3,"file":"huntsman-cancer-institute-dictionary-editor.mjs","sources":["../../../projects/dictionary-editor/src/dictionary-editor.component.ts","../../../projects/dictionary-editor/src/components/home.component.ts","../../../projects/dictionary-editor/src/grid-renderers/cell-renderer-validation.ts","../../../projects/dictionary-editor/src/grid-renderers/select.renderer.ts","../../../projects/dictionary-editor/src/grid-editors/select.editor.ts","../../../projects/dictionary-editor/src/directives/ri-ripple-effect-dict.directive.ts","../../../projects/dictionary-editor/src/components/new-row.component.ts","../../../projects/dictionary-editor/src/grid-renderers/date.renderer.ts","../../../projects/dictionary-editor/src/grid-editors/datepicker.component.ts","../../../projects/dictionary-editor/src/grid-editors/ag-grid-date-cell-editor.component.ts","../../../projects/dictionary-editor/src/components/detail.component.ts","../../../projects/dictionary-editor/src/dictionary-editor.routes.ts","../../../projects/dictionary-editor/src/grid-renderers/ag-grid-renderer.module.ts","../../../projects/dictionary-editor/src/grid-editors/ag-grid-editor.module.ts","../../../projects/dictionary-editor/src/dictionary-editor.module.ts","../../../projects/dictionary-editor/src/huntsman-cancer-institute-dictionary-editor.ts"],"sourcesContent":["import {Component, HostBinding, OnInit, Renderer2, TemplateRef, ViewChild} from '@angular/core';\r\nimport {DictionaryService} from \"@huntsman-cancer-institute/dictionary-service\";\r\nimport {\r\n LiNavComponent,\r\n SearchListComponent,\r\n SearchListControllerComponent,\r\n SidebarComponent,\r\n UlNavComponent\r\n} from \"@huntsman-cancer-institute/navigation\";\r\nimport {HciSortDto} from \"@huntsman-cancer-institute/hci-ng-grid-dto\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\n\r\n/**\r\n * The root component for the dictionary editor. This defines a sidebar which will contain the list of dictionaries.\r\n * The sub route here will display a detail component when a dictionary is selected.\r\n *\r\n * @since 1.0.0\r\n */\r\n@Component(\r\n {\r\n selector: \"hci-dictionary-editor\",\r\n template:\r\n `\r\n <hci-sidebar #sidebar></hci-sidebar>\r\n\r\n <router-outlet></router-outlet>\r\n\r\n <ng-template #dictionaryTemplate let-row=\"row\">\r\n <div class=\"search-item\" [routerLink]=\"['detail', row.className]\" [routerLinkActive]=\"['active']\">\r\n <div class=\"ms-3\" [ngStyle]=\"{'color':row.readOnly === false ? '#005480' : '#8a9499'}\">\r\n {{row.displayName}}\r\n </div>\r\n </div>\r\n </ng-template>\r\n `\r\n ,\r\n styles:\r\n [\r\n `\r\n .active .ms-3 {\r\n color: #ffffff !important;\r\n }\r\n\r\n :host::ng-deep .format-bottom-padding {\r\n padding-bottom: 10px;\r\n }\r\n\r\n :host::ng-deep .active {\r\n height: 30px;\r\n }\r\n\r\n :host::ng-deep .search-item {\r\n height: 30px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n :host::ng-deep #filterReadOnly {\r\n float: left;\r\n display: flex;\r\n flex-direction: row-reverse;\r\n }\r\n\r\n :host::ng-deep #filterAndSortContainer {\r\n background-color: var(--greywarm-light) !important;\r\n height: 80px;\r\n }\r\n\r\n :host::ng-deep .results-count {\r\n height: 0 !important;\r\n }\r\n\r\n :host::ng-deep #filterReadOnly-li {\r\n font-size: 15px;\r\n height: 30px;\r\n }\r\n\r\n :host::ng-deep #SLCC {\r\n backgound-color: var(--greywarm-medlight) !important;\r\n }\r\n\r\n :host::ng-deep .hci-dic-show-value {\r\n padding-right: 75px;\r\n color: var(--grey-darkest);\r\n }\r\n `\r\n ]\r\n }\r\n)\r\nexport class DictionaryEditorComponent implements OnInit {\r\n\r\n @HostBinding(\"class\") classList: string = \"outlet-row\";\r\n\r\n @ViewChild(SidebarComponent, {static: true}) sidebar: SidebarComponent;\r\n\r\n @ViewChild(\"dictionaryTemplate\", {read: TemplateRef, static: true}) dictionaryTemplate: any;\r\n\r\n filterReadOnlyDictionaries: boolean = true;\r\n\r\n sortDictionariesUp: boolean = true;\r\n\r\n constructor(private dictionaryService: DictionaryService, private renderer: Renderer2) {\r\n }\r\n\r\n dictionariesReference: Object [];\r\n\r\n dictionariesReferenceCopy: Object [];\r\n\r\n loadingSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /**\r\n * Upon creation, set up the sidebar and listen for the list of dictionaries from the service.\r\n */\r\n ngOnInit() {\r\n this.dictionariesReference = [];\r\n this.loadingSubject.next(true);\r\n this.setDictionarySideBarConfiguration();\r\n\r\n // Makes Call To Get The Dictionaries\r\n this.dictionaryService.getDictionaries().subscribe(\r\n theData => {\r\n\r\n this.dictionariesReference = theData.filter(this.checkInternalOnly);\r\n\r\n this.dictionariesReference.sort(\r\n (dictionaryA: any, dictionaryB: any) => (dictionaryA.displayName < dictionaryB.displayName ? -1 : 1)\r\n );\r\n\r\n this.dictionariesReferenceCopy = this.dictionariesReference;\r\n this.dictionariesReference = this.dictionariesReference.filter(this.checkReadOnly);\r\n this.setDictionarySideBarConfiguration();\r\n this.loadingSubject.next(false);\r\n }\r\n );\r\n }\r\n\r\n /*************************************************\r\n * Helper Method To Configure Dictionary Side Bar\r\n *************************************************/\r\n private setDictionarySideBarConfiguration() {\r\n\r\n let resultMessage =\r\n this.dictionariesReference.length == 0\r\n ? \"\"\r\n : this.dictionariesReference.length + \" Results\";\r\n\r\n this.sidebar.setConfig(\r\n {\r\n sidebarSize: 240,\r\n showCollapse: false,\r\n children:\r\n [\r\n {\r\n type: SearchListControllerComponent,\r\n id: \"SLCC\",\r\n showTitle: false,\r\n filterByAllowedFields: [\"displayName\"],\r\n sortByAllowedFields: [\"displayName\"],\r\n loadingSubjects: [this.loadingSubject]\r\n },\r\n {\r\n type: UlNavComponent,\r\n ulClass: \"hci-dic-ul-class\",\r\n id: \"filterAndSortContainer\",\r\n children:\r\n [\r\n {\r\n type: LiNavComponent,\r\n id: \"filterReadOnly\",\r\n title: \"Show All\",\r\n spanClass: \"hci-dic-span-1\",\r\n liClass: \"hci-dic-li-l\",\r\n iClass: \"hci-dic-i\",\r\n ulClass: \"hci-dic-ul\",\r\n expandable: true,\r\n iRight: false,\r\n showValueFlag: true,\r\n showValue: resultMessage,\r\n showValueClass: \"hci-dic-show-value\",\r\n liClick: () => {\r\n this.filter();\r\n let SLC = this.sidebar.getChild(\"dictionaries-component\") as SearchListComponent;\r\n SLC.setData(this.dictionariesReference);\r\n }\r\n },\r\n {\r\n type: LiNavComponent,\r\n id: \"sort\",\r\n title: \"\",\r\n spanClass: \"hci-dic-span-2\",\r\n liClass: \"hci-dic-li-r\",\r\n iClass: \"fa-solid fa-arrow-down-a-z hci-dic-i\",\r\n ulClass: \"hci-dic-ul\",\r\n expandable: true,\r\n iRight: true,\r\n liClick: (click: MouseEvent) => {\r\n let SLCC = <SearchListControllerComponent>this.sidebar.getChild(\"SLCC\");\r\n SLCC.setSort(click, \"displayName\");\r\n this.sortDictionariesUp = !this.sortDictionariesUp;\r\n let sort = this.sidebar.getChild(\"filterAndSortContainer\").getChild(\"sort\");\r\n\r\n if (this.sortDictionariesUp) {\r\n sort.config.iClass = \"fas fa-solid fa-arrow-down-a-z\";\r\n } else {\r\n sort.config.iClass = \"fa-solid fa-arrow-up-a-z\";\r\n }\r\n\r\n sort.updateConfig(sort.config);\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: SearchListComponent,\r\n id: \"dictionaries-component\",\r\n title: \"Dictionaries\",\r\n itemTemplate: this.dictionaryTemplate,\r\n sorts: [new HciSortDto(\"displayName\", true)],\r\n data: this.dictionariesReference,\r\n loadingSubjects: [this.loadingSubject]\r\n }\r\n ]\r\n }\r\n );\r\n }\r\n\r\n filter() {\r\n this.filterReadOnlyDictionaries = !this.filterReadOnlyDictionaries;\r\n let FRO = this.sidebar.getChild(\"filterAndSortContainer\").getChild(\"filterReadOnly\");\r\n\r\n if (this.filterReadOnlyDictionaries) {\r\n this.dictionariesReference = this.dictionariesReference.filter(this.checkReadOnly);\r\n FRO.config.spanClass = \"hci-dic-span-1\";\r\n FRO.config.showValue = (FRO.config.showValueFlag) ? this.dictionariesReference.length + \" Result(s)\" : \"\";\r\n FRO.updateConfig(FRO.config);\r\n } else {\r\n this.dictionariesReference = this.dictionariesReferenceCopy;\r\n FRO.config.spanClass = \"hci-dic-span-3\";\r\n FRO.config.showValue = (FRO.config.showValueFlag) ? this.dictionariesReference.length + \" Result(s)\" : \"\";\r\n FRO.updateConfig(FRO.config);\r\n }\r\n }\r\n\r\n /*******************************************************\r\n * Helper Method To Determine If Dictionary Is Read Only\r\n *******************************************************/\r\n checkReadOnly(dictionary) {\r\n return !dictionary.readOnly;\r\n }\r\n\r\n /***********************************************************\r\n * Helper Method To Determine If Dictionary Is Internal Only\r\n ***********************************************************/\r\n checkInternalOnly(dictionary) {\r\n return !dictionary.internalOnly;\r\n }\r\n}\r\n","import {Component, HostBinding} from \"@angular/core\";\r\n\r\n/**\r\n * Splash screen for the editor when no dictionary is selected.\r\n *\r\n * TODO: Use this page to put more of a guide on how to use the editor?\r\n *\r\n * @since 1.0.0\r\n */\r\n@Component({\r\n selector: \"core-dictionary-editor-home\",\r\n template: `\r\n <div class=\"d-flex m-3 flex-column flex-grow\">\r\n <h4>Dictionary Editor</h4>\r\n\r\n <div class=\"d-flex\">\r\n Select a dictionary from the sidebar to view its properties and data.\r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class DictionaryEditorHomeComponent {\r\n\r\n @HostBinding(\"class\") classList: string = \"outlet-column y-auto\";\r\n\r\n}\r\n","import {ICellRendererAngularComp} from \"ag-grid-angular\";\r\nimport {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators} from \"@angular/forms\";\r\n\r\n/**\r\n * This class' purpose is to place FormControls on cells in the grid, and to link them by rows, and rows to the grid as a whole.\r\n * It allows you to add validators for a cells' value and link an error type to an error message to display in a tooltip, or\r\n * you can provide a function to test some information about the row and provide an error message.\r\n *\r\n * The class works off of a number of properties added to the columnDefs in the ag-grid.\r\n *\r\n * We are looking for the following properties:\r\n * 1. errorMessageHeader : a string to display at the top of the list of any errors found for the cell\r\n * 2. validators : an array of angular validators to describe the cell value\r\n * 3. errorNameErrorMessageMap : an array of objects with \"errorName\"s and \"errorMessage\"s that are used to create a displayed list for the user\r\n * 4. setErrors: a function with the signature:\r\n * (value: any, data: any, node: any, colDef: any, rowIndex: any, gridApi: any) => string\r\n * which is called to generate a custom error message, if needed. An empty or null string\r\n * is treated as not being an error.\r\n *\r\n * Example column definition:\r\n * {\r\n * headerName: \"Name\",\r\n * editable: false,\r\n * width: 600,\r\n * cellRendererFramework: TextAlignLeftMiddleRenderer,\r\n * setErrors: (value: any,\r\n * data: any,\r\n * node: any,\r\n * colDef: any,\r\n * rowIndex: any,\r\n * gridApi: any) => {\r\n * return (value && value === 'TEST') ? 'Invalid name' : '';\r\n * },\r\n * validators: [ Validators.minLength(10) ],\r\n * errorMessageHeader: 'TestingTestingTesting',\r\n * errorNameErrorMessageMap: [\r\n * { errorName: 'minlength', errorMessage: 'Name is too short' }\r\n * ],\r\n * field: \"name\"\r\n * }\r\n *\r\n * To use with a new renderer, extend this class, do not override agInit, or call super.agInit(params) first.\r\n * (You can use agInit2 instead, called right after agInit).\r\n *\r\n * To display a tooltip with the error messages, include an element with a matTooltip pointing to this.errorMessage, like:\r\n * <div [matTooltip]=\"this.errorMessage\" [matTooltipShowDelay]=\"300\" [matTooltipHideDelay]=\"300\" ...\r\n * For cell highlighting, you can add a CSS class something like :\r\n * .error {\r\n * \tbackground: linear-gradient(rgba(255,0,0,0.25), rgba(255,0,0,0.25), rgba(255,0,0,0.25));\r\n * \tborder: solid red 2px;\r\n * }\r\n * and a conditional class on an element in the template, like :\r\n * class=\"{{this.errorMessage && this.errorMessage !== '' ? 'error' : ''}}\"\r\n */\r\nexport abstract class CellRendererValidation implements ICellRendererAngularComp {\r\n\r\n protected params: any;\r\n\r\n public errorMessage: string = \"\";\r\n\r\n formBuilder: UntypedFormBuilder;\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n this.formBuilder = new UntypedFormBuilder();\r\n\r\n if (this.params\r\n && this.params.node\r\n && this.params.node.gridApi\r\n && this.params.node.gridApi.formGroup === undefined) {\r\n\r\n let foundDelayValidationProperty: boolean = false;\r\n\r\n for (let columnDef of params.node.gridApi.columnController.columnDefs) {\r\n if (columnDef.delayValidation && columnDef.delayValidation === true) {\r\n foundDelayValidationProperty = true;\r\n }\r\n }\r\n\r\n if (!foundDelayValidationProperty) {\r\n this.determineIfAllRowsNeedValidationInAdvance();\r\n this.createAllFormControls();\r\n }\r\n }\r\n\r\n this.getErrorMessage();\r\n\r\n this.agInit2(params);\r\n }\r\n\r\n abstract agInit2(params): void;\r\n\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n // This function iterates over every cell in the grid and prepares all their needed formGroups and formControls.\r\n //\r\n // This was done this way (in the cell renderer) for three reasons :\r\n // 1. We need to wait until the column and row data have been provided to the grid\r\n // 2. We don't want the programmer to have to implement it themselves every time they create a grid\r\n // 3. The grid does not create all the cell renderers in advance, just those that fit on the screen\r\n // (plus a few nearby) meaning we can't just use the cell renderer's constructor, since we don't\r\n // know if the information we start with is valid on every screen, and because we have some calls\r\n // that send back the entire grid's worth of data.\r\n //\r\n // There may be a better way to do this, in which case this should probably be replaced!\r\n createAllFormControls(): void {\r\n if (this.params\r\n && this.params.column\r\n && this.params.column.colDef\r\n && this.params.data\r\n && this.params.node\r\n && this.params.node.gridApi\r\n && this.params.node.gridApi.getModel()) {\r\n\r\n if (this.params.node.gridApi.gridOptionsWrapper\r\n && this.params.node.gridApi.gridOptionsWrapper.gridOptions\r\n && !this.params.node.gridApi.gridOptionsWrapper.gridOptions._eventsChangedByCellRendererValidation) {\r\n\r\n this.changeGridOptionsEvents();\r\n\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions._eventsChangedByCellRendererValidation = true;\r\n }\r\n\r\n let allNodes = [];\r\n\r\n if (this.params.node.gridApi.mode_needToValidateOnlyRenderedCells) {\r\n allNodes = this.params.node.gridApi.getRenderedNodes();\r\n } else {\r\n allNodes = this.params.node.gridApi.getModel().rowsToDisplay;\r\n }\r\n\r\n if (!this.params.node.gridApi.formGroup\r\n || (this.params.node.gridApi.formGroup\r\n && this.params.node.gridApi.formGroup.controls\r\n && this.params.node.gridApi.formGroup.controls.length != allNodes.length)) {\r\n\r\n this.params.node.gridApi.formGroup = new UntypedFormGroup({});\r\n }\r\n\r\n if (this.params.node.gridApi.columnController\r\n && this.params.node.gridApi.columnController.columnDefs) {\r\n\r\n for (let columnDef of this.params.node.gridApi.columnController.columnDefs) {\r\n if (columnDef.outerForm && columnDef.formName) {\r\n if (!columnDef.outerForm.get(columnDef.formName)) {\r\n columnDef.outerForm.addControl(columnDef.formName, this.params.node.gridApi.formGroup);\r\n } else {\r\n columnDef.outerForm.setControl(columnDef.formName, this.params.node.gridApi.formGroup);\r\n }\r\n }\r\n }\r\n }\r\n\r\n let columns: any[];\r\n\r\n if (this.params && this.params.columnApi && this.params.columnApi.columnController) {\r\n columns = this.params.columnApi.columnController.gridColumns.filter((column) => {\r\n return column.colDef\r\n && column.colDef.field\r\n && (column.colDef.validators || column.colDef.setErrors);\r\n });\r\n }\r\n\r\n for (let node of allNodes) {\r\n for (let column of columns) {\r\n if (column.colDef\r\n && column.colDef.field\r\n && (column.colDef.validators || column.colDef.setErrors)) {\r\n node[column.colDef.field + \"_errorMessage\"] = '';\r\n\r\n let formControl: UntypedFormControl = new UntypedFormControl(column.colDef.field + '_formControl', []);\r\n\r\n if (!node.formGroup) {\r\n node.formGroup = new UntypedFormGroup({});\r\n }\r\n\r\n node.formGroup.addControl(column.colDef.field + '_formControl', formControl);\r\n\r\n if (!Array.isArray(column.colDef.validators)) {\r\n column.colDef.validators = [column.colDef.validators];\r\n }\r\n\r\n formControl.setValidators(column.colDef.validators);\r\n\r\n this.updateErrorMessage(formControl, node, column.colDef);\r\n }\r\n }\r\n\r\n if (!this.params.node.gridApi.formGroup.contains('RowGroup_' + node.rowIndex)) {\r\n if (!node.formGroup) {\r\n node.formGroup = new UntypedFormGroup({});\r\n }\r\n this.params.node.gridApi.formGroup.addControl('RowGroup_' + node.rowIndex, node.formGroup);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private changeGridOptionsEvents(): void {\r\n if (!this.params\r\n || !this.params.node\r\n || !this.params.node.gridApi\r\n || !this.params.node.gridApi.gridOptionsWrapper\r\n || !this.params.node.gridApi.gridOptionsWrapper.gridOptions) {\r\n return;\r\n }\r\n\r\n if (this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged) {\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged2 = this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged;\r\n }\r\n\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged = ((event: any) => {\r\n this.createAllFormControls();\r\n this.fetchErrorMessagesForCurrentlyRenderedCells();\r\n\r\n if (this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged2) {\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged2(event);\r\n }\r\n });\r\n\r\n\r\n if (this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged) {\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged2 = this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged;\r\n }\r\n\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged = ((event: any) => {\r\n this.determineIfAllRowsNeedValidationInAdvance();\r\n this.createAllFormControls();\r\n this.fetchErrorMessagesForCurrentlyRenderedCells();\r\n\r\n if (this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged2) {\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged2(event);\r\n }\r\n });\r\n }\r\n\r\n private getErrorMessage(): void {\r\n if (this.params\r\n && this.params.node\r\n && this.params.node.formGroup\r\n && this.params.column\r\n && this.params.column.colDef\r\n && this.params.column.colDef.field) {\r\n\r\n let formControl = this.params.node.formGroup.get(this.params.column.colDef.field + '_formControl');\r\n\r\n this.updateErrorMessage(formControl, this.params.node, this.params.column.colDef);\r\n\r\n this.errorMessage = this.params.node[this.params.column.colDef.field + \"_errorMessage\"];\r\n }\r\n }\r\n\r\n private refreshFormControlValue(formControl: UntypedFormControl, data: any, fieldName: string): void {\r\n if (formControl && data && fieldName && data[fieldName] !== undefined) {\r\n formControl.setValue(data[fieldName]);\r\n formControl.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private updateErrorMessage(formControl: UntypedFormControl, node: any, columnDefinition: any): string {\r\n if (!formControl || !node || !columnDefinition) {\r\n return '';\r\n }\r\n\r\n let customErrorMessage: string = '';\r\n\r\n if (columnDefinition.setErrors) {\r\n customErrorMessage = columnDefinition.setErrors(\r\n node.data[columnDefinition.field],\r\n node.data,\r\n node,\r\n columnDefinition,\r\n node.rowIndex,\r\n node.gridApi\r\n );\r\n }\r\n\r\n let errorMessageName: string = columnDefinition.field + \"_errorMessage\";\r\n\r\n this.refreshFormControlValue(formControl, node.data, columnDefinition.field);\r\n\r\n node[errorMessageName] = '';\r\n\r\n if (formControl.invalid || (customErrorMessage && customErrorMessage !== '')) {\r\n if (columnDefinition.errorMessageHeader) {\r\n node[errorMessageName] += '' + columnDefinition.errorMessageHeader + '\\n';\r\n } else {\r\n node[errorMessageName] +=\r\n 'Invalid value \"' + node.data[columnDefinition.field] + '\" for field (' + columnDefinition.field + ')\\n';\r\n }\r\n }\r\n\r\n if (columnDefinition.errorNameErrorMessageMap) {\r\n if (!Array.isArray(columnDefinition.errorNameErrorMessageMap)) {\r\n columnDefinition.errorNameErrorMessageMap = [columnDefinition.errorNameErrorMessageMap];\r\n }\r\n\r\n for (let errorNameErrorMessagePair of columnDefinition.errorNameErrorMessageMap) {\r\n if (!!errorNameErrorMessagePair.errorName && !!errorNameErrorMessagePair.errorMessage) {\r\n if (formControl.hasError(errorNameErrorMessagePair.errorName)) {\r\n node[errorMessageName] += errorNameErrorMessagePair.errorMessage +'\\n';\r\n }\r\n }\r\n }\r\n }\r\n\r\n node[errorMessageName] += customErrorMessage;\r\n\r\n return node[errorMessageName];\r\n }\r\n\r\n protected determineIfAllRowsNeedValidationInAdvance(): void {\r\n if (this.params\r\n && this.params.node\r\n && this.params.node.gridApi\r\n && this.params.columnApi\r\n && this.params.columnApi.columnController\r\n && this.params.columnApi.columnController.gridColumns) {\r\n\r\n let columns = this.params.columnApi.columnController.gridColumns.filter((column) => {\r\n return column.colDef\r\n && column.colDef.field\r\n && (column.colDef.validators || column.colDef.setErrors)\r\n && column.colDef.editable === true\r\n && !(column.colDef.validateOnlyRenderedCells\r\n && column.colDef.validateOnlyRenderedCells === true);\r\n });\r\n\r\n this.params.node.gridApi.mode_needToValidateOnlyRenderedCells = Array.isArray(columns) && columns.length === 0;\r\n }\r\n }\r\n\r\n protected fetchErrorMessagesForCurrentlyRenderedCells(): void {\r\n if (this.params\r\n && this.params.node\r\n && this.params.node.gridApi) {\r\n\r\n let getCellRendererParams: any = { rowNodes: this.params.node.gridApi.getRenderedNodes() };\r\n\r\n for (let cellRenderer of this.params.node.gridApi.getCellRendererInstances(getCellRendererParams)) {\r\n if (cellRenderer._agAwareComponent && cellRenderer._agAwareComponent.getErrorMessage) {\r\n cellRenderer._agAwareComponent.getErrorMessage();\r\n }\r\n }\r\n }\r\n }\r\n\r\n public updateValidation(): void {\r\n console.log(\"Successfully reached!\");\r\n // add this form control\r\n\r\n let columns = this.params.columnApi.columnController.gridColumns.filter((column) => {\r\n return column.colDef\r\n && column.colDef.field\r\n && (column.colDef.validators || column.colDef.setErrors)\r\n && column.colDef.field === this.params.field;\r\n });\r\n\r\n if (this.params.colDef\r\n && this.params.colDef.field\r\n && (this.params.colDef.validators || this.params.colDef.setErrors)) {\r\n\r\n this.params.node[this.params.colDef.field + \"_errorMessage\"] = '';\r\n\r\n let formControl: UntypedFormControl = new UntypedFormControl(this.params.colDef.field + '_formControl', []);\r\n\r\n if (!this.params.node.formGroup) {\r\n this.params.node.formGroup = new UntypedFormGroup({});\r\n\r\n if (!this.params.node.gridApi.formGroup) {\r\n this.params.node.gridApi.formGroup = new UntypedFormGroup({});\r\n } else {\r\n // check for any removed nodes & remove their validators if needed.\r\n for (let controlName of Object.keys(this.params.node.gridApi.formGroup.controls)) {\r\n if (('' + controlName).toLowerCase().substr(0, 9) === 'rowgroup_') {\r\n let found: boolean = false;\r\n for (let node of this.params.node.gridApi.getModel().rowsToDisplay) {\r\n if (('' + node.rowIndex) === ('' + controlName).substr(9)) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n this.params.node.gridApi.formGroup.removeControl(controlName);\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n this.params.node.gridApi.formGroup.addControl('RowGroup_' + this.params.node.rowIndex, this.params.node.formGroup);\r\n }\r\n\r\n if (!this.params.node.formGroup.controls[this.params.colDef.field + '_formControl']) {\r\n this.params.node.formGroup.addControl(this.params.colDef.field + '_formControl', formControl);\r\n\r\n if (Array.isArray(this.params.colDef.validators)) {\r\n this.params.node.formGroup.controls[this.params.colDef.field + '_formControl'].setValidators(this.params.colDef.validators);\r\n }\r\n\r\n if (this.params.node.gridApi.columnController\r\n && this.params.node.gridApi.columnController.columnDefs) {\r\n\r\n for (let columnDef of this.params.node.gridApi.columnController.columnDefs) {\r\n if (columnDef.outerForm && columnDef.formName) {\r\n if (!columnDef.outerForm.get(columnDef.formName)) {\r\n columnDef.outerForm.addControl(columnDef.formName, this.params.node.gridApi.formGroup);\r\n } else {\r\n columnDef.outerForm.setControl(columnDef.formName, this.params.node.gridApi.formGroup);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.updateErrorMessage(formControl, this.params.node, this.params.colDef);\r\n }\r\n\r\n // add column control groups if needed\r\n // add row control groups if needed\r\n // setup grid control group if needed\r\n // Might need to trigger cell validation to run with the new validation.\r\n }\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport { ICellRendererAngularComp } from \"ag-grid-angular\";\r\nimport {CellRendererValidation} from \"./cell-renderer-validation\";\r\n\r\n@Component({\r\n\ttemplate: `\r\n <!--<div [matTooltip]=\"this.errorMessage\"\r\n [matTooltipShowDelay]=\"300\"\r\n [matTooltipHideDelay]=\"300\"\r\n class=\"full-width full-height {{this.errorMessage && this.errorMessage !== '' ? 'error' : ''}}\">-->\r\n\t\t<div class=\"full-width full-height {{this.errorMessage && this.errorMessage !== '' ? 'error' : ''}}\">\r\n\t\t\t<div class=\"t full-width full-height fix-table\">\r\n\t\t\t\t<div class=\"tr\">\r\n\t\t\t\t\t<div class=\"td cell-text-container ellipsis\">\r\n\t\t\t\t\t\t{{display}}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t`,\r\n\tstyles: [`\r\n\t\t.t { display: table; }\r\n\t\t.tr { display: table-row; }\r\n\t\t.td { display: table-cell; }\r\n\t\t\r\n\t\t.cell-text-container { \r\n\t\t\tvertical-align: middle;\r\n\t\t\tpadding-left: 0.3rem;\r\n\t\t}\r\n\t\t\r\n\t\t.full-width { width: 100%; } \r\n\t\t.full-height { height: 100%; }\r\n\r\n\t\t.fix-table { table-layout:fixed; }\r\n\r\n\t\t.ellipsis {\r\n\t\t\toverflow: hidden;\r\n\t\t\ttext-overflow: ellipsis;\r\n\t\t}\r\n\r\n\t\t.error {\r\n\t\t\tbackground: linear-gradient(rgba(255,0,0,0.25), rgba(255,0,0,0.25), rgba(255,0,0,0.25));\r\n\t\t\tborder: solid red 2px;\r\n\t\t}\r\n\t`]\r\n}) export class SelectRenderer extends CellRendererValidation implements ICellRendererAngularComp {\r\n\tvalue: string;\r\n\tdisplay: string;\r\n\toptions: any;\r\n\toptionsValueField: string;\r\n\toptionsDisplayField: string;\r\n\tdefaultDisplayField: string;\r\n\tdefaultDisplayValue: string;\r\n\tdefaultOption: any;\r\n\r\n\tagInit2(params: any): void {\r\n\t\tthis.options = [];\r\n\t\tthis.value = \"\";\r\n\t\tthis.optionsValueField = \"\";\r\n\t\tthis.optionsDisplayField = \"\";\r\n this.defaultDisplayField = \"\";\r\n this.defaultDisplayValue = \"\";\r\n\r\n\t\tif (this.params) {\r\n\t\t\tif(this.params.value) {\r\n this.value = this.params.value;\r\n\t\t\t}else {\r\n\t\t\t\tthis.value = \"\";\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif (this.params && this.params.column && this.params.column.colDef) {\r\n\t\t\tif (this.params.column.colDef.rendererOptions) {\r\n\t\t\t\tthis.options \t\t = this.params.column.colDef.rendererOptions;\r\n\t\t\t} else {\r\n this.options = this.params.column.colDef.selectOptions;\r\n\t\t\t}\r\n\t\t\tthis.optionsValueField = this.params.column.colDef.selectOptionsValueField;\r\n this.optionsDisplayField = this.params.column.colDef.selectOptionsDisplayField;\r\n this.defaultDisplayField = this.params.column.colDef.defaultDisplayField;\r\n this.defaultDisplayValue = this.params.column.colDef.defaultDisplayValue;\r\n }\r\n\t\tif (this.defaultDisplayField) {\r\n\t\t\tfor (let option of this.options) {\r\n\t\t\t\tif (option[this.defaultDisplayField] === this.defaultDisplayValue) {\r\n\t\t\t\t\tthis.defaultOption = option;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.value && this.value != \"\"\r\n\t\t\t\t&& this.options && this.options.length > 0\r\n\t\t\t\t&& this.optionsValueField && this.optionsValueField != \"\"\r\n\t\t\t\t&& this.optionsDisplayField && this.optionsDisplayField != \"\") {\r\n\r\n\t\t\tlet foundOption: boolean = false;\r\n\r\n\t\t\tfor (let option of this.options) {\r\n\t\t\t\tif (option[this.optionsValueField] && option[this.optionsValueField] === this.value) {\r\n\t\t\t\t\tif (option[this.optionsDisplayField]) {\r\n\t\t\t\t\t\tthis.display = option[this.optionsDisplayField];\r\n foundOption = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.display = this.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// if we didn't find the item in the dictionary, check if the items are strings in different cases\r\n if (!foundOption) {\r\n for (let option of this.options) {\r\n if (option[this.optionsValueField] && (\"\" + option[this.optionsValueField]).toLowerCase() === (\"\" + this.value).toLowerCase()) {\r\n if (option[this.optionsDisplayField]) {\r\n this.display = option[this.optionsDisplayField];\r\n foundOption = true;\r\n } else {\r\n this.display = this.value;\r\n }\r\n break;\r\n }\r\n }\r\n\t\t\t}\r\n\r\n\t\t\t// if we still didn't find the item, at least display the id.\r\n\t\t\tif (!foundOption) {\r\n this.display = this.value;\r\n\t\t\t}\r\n } else if (this.defaultOption && this.value != \"\") {\r\n this.display = this.defaultOption[this.optionsDisplayField];\r\n } else {\r\n\t\t\tthis.display = this.value;\r\n\t\t}\r\n\t}\r\n\r\n refresh(): boolean {\r\n\t\treturn false;\r\n\t}\r\n}\r\n","import {Component, OnDestroy} from \"@angular/core\";\r\nimport {ICellEditorAngularComp} from \"ag-grid-angular\";\r\n//import {MatDialog, MatDialogConfig, MatDialogRef} from \"@angular/material/dialog\";\r\n//import {SpinnerDialogComponent} from \"../popup/spinner-dialog.component\";\r\n\r\n@Component(\r\n {\r\n template:\r\n `\r\n <div class=\"full-width full-height flex-column-container\">\r\n <div class=\"full-height flex-stretch flex-row\">\r\n <select class=\"full-width full-height\" [(value)]=\"value\" (change)=\"onChange($event)\">\r\n <option hidden>\r\n Select An Option\r\n </option>\r\n <option\r\n *ngFor=\"let option of options\"\r\n value=\"{{option.hasOwnProperty(optionsValueField) ? option[optionsValueField] : (option.value) ? option.value : option }}\">\r\n {{option.hasOwnProperty(optionsDisplayField) ? option[optionsDisplayField] : (option.display) ? option.display : option }}\r\n </option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"showFillButton\" class=\"full-height flex-row button-container\">\r\n <button riRippleEffectDict class=\"full-height\" (click)=\"onFillButtonClicked()\">Fill</button>\r\n </div>\r\n </div>\r\n `\r\n ,\r\n styles: [\r\n `\r\n .full-width {\r\n width: 100%;\r\n }\r\n\r\n .full-height {\r\n height: 100%;\r\n }\r\n\r\n .flex-column-container {\r\n display: flex;\r\n flex-direction: row;\r\n }\r\n\r\n .flex-row {\r\n display: flex;\r\n }\r\n\r\n .flex-stretch {\r\n display: flex;\r\n flex: 1;\r\n }\r\n `\r\n ]\r\n }\r\n)\r\nexport class SelectEditor implements ICellEditorAngularComp, OnDestroy {\r\n public params: any;\r\n public value: any;\r\n private _options: any[];\r\n public get options(): any[] {\r\n if (this.using_selectOptionsPerRowFilterFunction) {\r\n return this._filteredOptions;\r\n } else {\r\n return this._options;\r\n }\r\n }\r\n public set options(value: any[]) {\r\n this._options = value;\r\n }\r\n\r\n public optionsValueField: string;\r\n public optionsDisplayField: string;\r\n\r\n // variables used for the optional per-row-filtering\r\n public context: any;\r\n protected using_selectOptionsPerRowFilterFunction: boolean = false;\r\n protected selectOptionsPerRowFilterFunction: (context: any, rowData: any, option: any) => boolean;\r\n private _filteredOptions: any[];\r\n\r\n\r\n\r\n public gridValueField: string;\r\n\r\n public showFillButton: boolean;\t\t// This represents whether the editor should show the \"Fill\" button,\r\n // which is used to copy the value of this cell to other cells in this column in the grid\r\n public fillGroupAttribute: string;\t\t// This attribute is used to specify which \"Group\" a particular\r\n // row belongs to, which is used when the fill button is active.\r\n // When clicked, the fill button will copy the data in that cell\r\n // to the corresponding cells in rows of the same group.\r\n public fillAll: boolean; // If fillAll is set, all data will automatically be grouped together\r\n\r\n private _spinnerDialogIsOpen: boolean = false;\r\n// private spinnerDialogRefs: MatDialogRef<SpinnerDialogComponent>[] = [];\r\n\r\n constructor(/*protected dialog: MatDialog*/) { }\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n this.options = [];\r\n this.optionsValueField = \"\";\r\n this.optionsDisplayField = \"\";\r\n\r\n if (this.params && this.params.column && this.params.column.colDef) {\r\n this.gridValueField = this.params.column.colDef.field;\r\n\r\n this.options = this.params.column.colDef.selectOptions;\r\n this.optionsValueField = this.params.column.colDef.selectOptionsValueField;\r\n this.optionsDisplayField = this.params.column.colDef.selectOptionsDisplayField;\r\n\r\n if (this.params.column.colDef.selectOptionsPerRowFilterFunction) {\r\n let backup = this.selectOptionsPerRowFilterFunction;\r\n try {\r\n this.selectOptionsPerRowFilterFunction = this.params.column.colDef.selectOptionsPerRowFilterFunction;\r\n this.using_selectOptionsPerRowFilterFunction = !!this.selectOptionsPerRowFilterFunction;\r\n } catch (e) {\r\n console.error(\"selectOptionsPerRowFilterFunction option has wrong signature for column : \" + this.params.column.colDef.headerName + \"\\n\"\r\n + \" Requires signature (context:any, rowData: any, option: any) => boolean\"\r\n );\r\n this.selectOptionsPerRowFilterFunction = backup;\r\n this.using_selectOptionsPerRowFilterFunction = !!backup;\r\n }\r\n }\r\n\r\n this.context = this.params.column.colDef.context;\r\n\r\n this.fillGroupAttribute = this.params.column.colDef.fillGroupAttribute;\r\n this.fillAll = this.params.column.colDef.fillAll && (\"\" + this.params.column.colDef.fillAll).toLowerCase() !== \"false\";\r\n\r\n this.showFillButton = this.params.column.colDef.showFillButton && (\"\" + this.params.column.colDef.showFillButton).toLowerCase() !== \"false\";\r\n\r\n if (this._options\r\n && this.params.node\r\n && this.params.node.data\r\n && this.using_selectOptionsPerRowFilterFunction) {\r\n\r\n this._filteredOptions = this._options.filter((option: any) => {\r\n return this.selectOptionsPerRowFilterFunction(this.context, this.params.node.data, option);\r\n });\r\n }\r\n }\r\n\r\n if (this.params) {\r\n this.value = this.params.value ? \"\" + this.params.value : \"\";\r\n }\r\n\r\n if (this.showFillButton && !this.fillAll && (!this.fillGroupAttribute || this.fillGroupAttribute === \"\")) {\r\n throw new Error(\"Invalid state, cannot use fill button without specifying the fillGroupAttribute or fillAll.\");\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.params && this.params.node && this.params.node[(this.gridValueField + \"_originalValue\")]) {\r\n this.value = this.params.node[(this.gridValueField + \"_originalValue\")];\r\n }\r\n }\r\n\r\n onChange(event: any): void {\r\n if (event && event.currentTarget) {\r\n\r\n if (this.params && this.params.node && !this.params.node[(this.gridValueField + \"_originalValue\")]) {\r\n this.params.node[(this.gridValueField + \"_originalValue\")] = this.value;\r\n }\r\n\r\n // This looks unnecessary, since this.value is linked to the value of the select component, but\r\n // because this also ends editing, it also queues the destruction of this component and the call to getValue.\r\n // The problem was that this.value isn't updated with the new value before this event fires,\r\n // so we need to update it manually here.\r\n this.value = event.currentTarget.value;\r\n this.params.node.setDataValue(this.gridValueField, this.value);\r\n }\r\n if (this.params) {\r\n\r\n // If the fill button, which is part of the editor, is activated, don't stop editing\r\n // immediately after making a selection.\r\n if (!this.showFillButton) {\r\n this.params.stopEditing();\r\n }\r\n }\r\n }\r\n\r\n getValue(): any {\r\n return this.value ? this.value : \"\";\r\n }\r\n\r\n isPopup(): boolean {\r\n return false;\r\n }\r\n\r\n onFillButtonClicked(): void {\r\n if (!this.fillAll && (!this.fillGroupAttribute || this.fillGroupAttribute === \"\")) {\r\n throw new Error('No column attribute \"fillGroupAttribute\" or \"fillAll\" specified. This is required to use the Fill functionality.');\r\n }\r\n\r\n if (this.params && this.params.column && this.params.column.gridApi && this.params.node && (this.fillAll || (this.fillGroupAttribute && this.fillGroupAttribute !== \"\"))) {\r\n let thisRowNode = this.params.node;\r\n\r\n //this.startSpinnerDialog();\r\n this.params.column.gridApi.forEachNodeAfterFilter((rowNode) => {\r\n if (rowNode && rowNode.data && thisRowNode && thisRowNode.data && (this.fillAll || rowNode.data[this.fillGroupAttribute] === thisRowNode.data[this.fillGroupAttribute])) {\r\n let spoofedEvent: any = {\r\n api: this.params.column.gridApi,\r\n colDef: this.params.column.colDef,\r\n column: this.params.column,\r\n columnApi: this.params.column.columnApi,\r\n context: undefined,\r\n data: rowNode.data,\r\n event: null,\r\n newValue: this.value,\r\n node: rowNode,\r\n oldValue: rowNode.data[this.gridValueField],\r\n rowIndex: rowNode.rowIndex,\r\n rowPinned: undefined,\r\n type: \"cellValueChanged\",\r\n value: this.value\r\n };\r\n\r\n rowNode.data[this.gridValueField] = this.value;\r\n rowNode.setDataValue(this.gridValueField, this.value);\r\n this.params.column.gridApi.dispatchEvent(spoofedEvent);\r\n }\r\n });\r\n\r\n this.params.column.gridApi.refreshCells();\r\n setTimeout(() => {\r\n //this.stopSpinnerDialogs();\r\n });\r\n }\r\n }\r\n\r\n\t/*\r\n startSpinnerDialog(): MatDialogRef<SpinnerDialogComponent> {\r\n if (this._spinnerDialogIsOpen) {\r\n return null;\r\n }\r\n\r\n this._spinnerDialogIsOpen = true;\r\n\r\n let configuration: MatDialogConfig = new MatDialogConfig();\r\n configuration.data = {\r\n message: \"Please wait...\",\r\n strokeWidth: 3,\r\n diameter: 30\r\n };\r\n configuration.width = \"13em\";\r\n configuration.disableClose = true;\r\n\r\n let dialogRef: MatDialogRef<SpinnerDialogComponent> = this.dialog.open(SpinnerDialogComponent, configuration);\r\n dialogRef.afterClosed().subscribe(() => { this._spinnerDialogIsOpen = false; });\r\n this.spinnerDialogRefs.push(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n stopSpinnerDialogs(): void {\r\n for (let dialogRef of this.spinnerDialogRefs) {\r\n setTimeout(() => {\r\n dialogRef.close();\r\n });\r\n }\r\n this.spinnerDialogRefs = [];\r\n }\r\n\t*/\r\n}\r\n","import {Directive, ElementRef, Renderer2, HostListener, Input} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[riRippleEffectDict]'\r\n})\r\nexport class RIRippleEffectDictDirective {\r\n\r\n @Input()\r\n hostClass: string = 'ri-ripple-host';\r\n @Input()\r\n rippleClass: string = 'ri-ripple-effect-container';\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n const hostElement = this.el.nativeElement;\r\n this.renderer.addClass(hostElement, this.hostClass);\r\n }\r\n\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n const hostElement = this.el.nativeElement;\r\n\r\n const ripple = this.renderer.createElement('span');\r\n this.renderer.addClass(ripple, this.rippleClass);\r\n\r\n this.renderer.appendChild(hostElement, ripple);\r\n\r\n const styles = getComputedStyle(ripple);\r\n const animationDuration = styles.getPropertyValue(\"animation-duration\");\r\n const animationDurationInMs = Number(animationDuration.substr(0,animationDuration.length-1))*1000;\r\n const rect = hostElement.getBoundingClientRect();\r\n const left = event.pageX - rect.left;\r\n const top = event.pageY - rect.top;\r\n\r\n this.renderer.setStyle(ripple, 'left', `${left}px`);\r\n this.renderer.setStyle(ripple, 'top', `${top}px`);\r\n\r\n setTimeout(() => {\r\n this.renderer.removeChild(hostElement, ripple);\r\n }, animationDurationInMs);\r\n }\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {NgbActiveModal} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {GridApi, GridOptions, GridReadyEvent} from \"ag-grid-community\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"new-row\",\r\n template:\r\n `\r\n <div class=\"d-flex flex-column\" style=\"height:11em; width:58vw;\">\r\n <div class=\"d-flex flex-row\">\r\n <div class=\"flex-grow-1\"></div>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\"\r\n style=\"margin-right: 10px; width: 20px;\"\r\n (click)=\"activeModalSearch.dismiss('Cancel')\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"flex-grow-1\" style=\"padding-right: 8px; padding-left: 8px;\">\r\n <ag-grid-angular class=\"ag-theme-balham full-height full-width\"\r\n [rowData]=\"newRow\"\r\n [singleClickEdit]=\"true\"\r\n [gridOptions]=\"gridOptions\"\r\n (gridReady)=\"this.onSamplesGridReady($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n\r\n <div class=\"d-flex flex-row\" style=\"padding: 0.5em;\">\r\n <div class=\"flex-grow-1\"></div>\r\n <button riRippleEffectDict class=\"btn btn-red ms-3\"\r\n style=\"color: var(--white-lightest);\"\r\n (click)=\"activeModalSearch.dismiss('Cancel')\">\r\n Cancel\r\n </button>\r\n <button riRippleEffectDict class=\"btn btn-primary ms-3\"\r\n style=\"color: var(--white-lightest);\"\r\n (click)=\"save()\">\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n `\r\n ,\r\n styles: [\r\n `\r\n .full-height {\r\n height: 100%;\r\n }\r\n\r\n .full-width {\r\n width: 100%;\r\n }\r\n\r\n .ag-theme-balham{\r\n font-family: \"hci-font\";\r\n }\r\n\r\n :host ::ng-deep .ag-ltr .ag-cell {\r\n border-right-color: var(--grey-darkest);\r\n }\r\n `\r\n ]\r\n }\r\n)\r\nexport class NewRowComponent {\r\n public newRowSubject: Subject<any[]> = new Subject<any[]>();\r\n private _colDefs: any[];\r\n public get colDefs() {\r\n return this._colDefs;\r\n }\r\n\r\n public set colDefs(value: any[]) {\r\n this._colDefs = value;\r\n this.newRow[0][\"editOrNew\"] = \"new\"; //needed for editable function\r\n for (let colDef of this.colDefs) {\r\n this.newRow[0][colDef.field] = \"\";\r\n }\r\n }\r\n\r\n public newRow: any[] = [{}];\r\n dictionary: any;\r\n gridOptions: GridOptions;\r\n gridApi: GridApi;\r\n\r\n constructor(public activeModalSearch: NgbActiveModal) {\r\n this.gridOptions = <GridOptions>{\r\n context: {\r\n componentParent: this\r\n }\r\n };\r\n }\r\n\r\n public save() {\r\n // get contents of row\r\n //making sure the grid has stopped editing when user clicks save\r\n // waiting a tick to make sure that async event has finished\r\n this.gridApi.stopEditing();\r\n\r\n setTimeout(\r\n () => {\r\n let newData: any[] = [];\r\n\r\n this.gridApi.forEachNode(\r\n (node: any) => {\r\n newData.push(node.data);\r\n }\r\n );\r\n\r\n // validate the contents of row\r\n let isValid: boolean = true;\r\n\r\n for (let colDef of this.colDefs) {\r\n if (colDef.dictionaryDisplay == true && !newData[0][colDef.field]) {\r\n let displayDictField = null;\r\n\r\n if (this.gridOptions.context && this.gridOptions.context.componentParent\r\n && this.gridOptions.context.componentParent.dictionary) {\r\n let dictFields: any[] = this.gridOptions.context.componentParent.dictionary.fields;\r\n displayDictField = dictFields.find(field => (field.dictionaryDisplay === true));\r\n }\r\n\r\n //don't require displayField if it is readonly when making a new entry\r\n if (displayDictField && displayDictField.protectionType === \"Read Only\") {\r\n isValid = true;\r\n } else {\r\n isValid = false;\r\n }\r\n }\r\n }\r\n\r\n if (isValid) {\r\n // send contents of row to other ag-grid\r\n this.newRowSubject.next(newData);\r\n this.activeModalSearch.dismiss(\"Cancel\");\r\n } else {\r\n // signal they need to fill out the row\r\n alert(\"The display value is required, please enter a value and then save again.\");\r\n }\r\n }\r\n );\r\n }\r\n\r\n public onSamplesGridReady(event: GridReadyEvent): void {\r\n event.api.setColumnDefs(this.colDefs);\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n }\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {CellRendererValidation} from \"./cell-renderer-validation\";\r\nimport {ICellRendererAngularComp} from \"ag-grid-angular\";\r\nimport * as moment from \"moment\";\r\nimport {DatePipe} from \"@angular/common\";\r\n\r\n\r\n@Component({\r\n template: `\r\n <div class=\"t full-width full-height fix-table\">\r\n <div class=\"tr\">\r\n <div class=\"td cell-text-container ellipsis\">\r\n {{display}}\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .t { display: table; }\r\n .tr { display: table-row; }\r\n .td { display: table-cell; }\r\n\r\n .cell-text-container {\r\n vertical-align: middle;\r\n padding-left: 0.3rem;\r\n }\r\n\r\n .full-width { width: 100%; }\r\n .full-height { height: 100%; }\r\n\r\n .fix-table { table-layout:fixed; }\r\n\r\n .ellipsis {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n `]\r\n})\r\nexport class DateRenderer extends CellRendererValidation implements ICellRendererAngularComp {\r\n\r\n value: Date;\r\n display: string;\r\n\r\n constructor(protected datePipe: DatePipe) {\r\n super();\r\n }\r\n\r\n agInit2(params: any): void {\r\n this.value = undefined;\r\n\r\n if (this.params) {\r\n if(this.params.value) {\r\n this.value = this.params.value;\r\n } else {\r\n this.value = undefined;\r\n }\r\n }\r\n\r\n this.display = this.getDateString(this.value);\r\n }\r\n\r\n getDateString(date: any): string {\r\n\r\n if (date instanceof Date) {\r\n if (!isNaN(date.getTime())) {\r\n return this.datePipe.transform(date, \"yyyy-MM-dd\");\r\n } else {\r\n return \"\";\r\n }\r\n }else if(moment.isMoment(date) ) {\r\n if(date.isValid()) {\r\n return date.format(\"YYYY-MM-DD\");\r\n }else {\r\n return \"\";\r\n }\r\n }else if(typeof date == \"number\") {\r\n if(date > 0) {\r\n let temp: Date = new Date(date);\r\n return this.datePipe.transform(temp, \"yyyy-MM-dd\");\r\n }else {\r\n return \"\";\r\n }\r\n }else if(typeof date == \"string\") {\r\n return date;\r\n }else {\r\n return \"\";\r\n }\r\n }\r\n\r\n refresh(): boolean {\r\n return false;\r\n }\r\n}\r\n","import {Component, EventEmitter, forwardRef, Input, Output} from \"@angular/core\";\r\nimport {MAT_DATE_LOCALE, MAT_DATE_FORMATS} from \"@angular/material/core\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"hci-dict-datepicker\",\r\n template: `\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <input matInput [matDatepicker]=\"picker\" class=\"form-control\" [placeholder]=\"placeholder\" [(ngModel)]=\"value\" (ngModelChange)=\"onChange($event)\"\r\n (blur)=\"onBlur($event)\" data-date-format=\"YYYY-MM-DD\"\r\n [ngStyle]=\"{'background-color':invalid ? 'red' : '#fff'}\" aria-label=\"hci-ng-input-date-picker\">\r\n <span class=\"input-group-text\" id=\"clearIcon\" (click)=\"clear()\"><i class=\"fas fa-times\"></i></span>\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"picker.open()\" style=\"height:32px; width:32px;\"><i class=\"fas fa-calendar-alt\"></i></button>\r\n <mat-datepicker panelClass=\"ag-custom-component-popup\" #picker ></mat-datepicker>\r\n </div>\r\n `,\r\n styles: [`\r\n #clearIcon {\r\n cursor: pointer;\r\n }\r\n #clearIcon:Hover {\r\n background-color: rgb(73, 80, 87);\r\n color: rgb(233, 236, 239)\r\n }\r\n `],\r\n providers: [\r\n {provide: MAT_DATE_LOCALE, useValue: \"en-GB\"},\r\n {\r\n provide: MAT_DATE_FORMATS,\r\n useValue: {\r\n parse: {\r\n dateInput: [\"YYYY-MM-DD\"],\r\n },\r\n display: {\r\n dateInput: \"YYYY-MM-DD\",\r\n monthYearLabel: \"MMM YYYY\",\r\n dateA11yLabel: \"YYYY-MM-DD\",\r\n monthYearA11yLabel: \"MMMM YYYY\",\r\n },\r\n },\r\n },\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DatepickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DatepickerComponent implements ControlValueAccessor {\r\n //{provide: MAT_DATE_LOCALE, useValue: \"en-GB\"},\r\n // @Input() value: Date;\r\n value: Date;\r\n @Input() placeholder: string;\r\n @Input() invalid: boolean = false;\r\n\r\n // @Output() valueChange = new EventEmitter();\r\n\r\n onChange: any;\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n // onChange(newValue) {\r\n // this.value = newValue;\r\n // this.valueChange.emit(newValue);\r\n // }\r\n\r\n clear() {\r\n this.value = undefined;\r\n // this.valueChange.emit();\r\n }\r\n\r\n // Clear input field if entered data is invalid (Mat library sets value to null if invalid but doesn't clear input)\r\n onBlur(newValue) {\r\n\r\n if (!this.value) {\r\n this.value = undefined;\r\n // this.valueChange.emit();\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.onChange = () => {\r\n fn(this.value);\r\n };\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {}\r\n\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {ICellEditorAngularComp} from \"ag-grid-angular\";\r\n\r\n@Component({\r\n selector: \"ag-grid-date-cell-editor\",\r\n template: `\r\n <hci-dict-datepicker [(ngModel)]=\"value\" placeholder=\"Select Date\"></hci-dict-datepicker>\r\n\r\n `\r\n})\r\nexport class AgGridDateCellEditorComponent implements ICellEditorAngularComp {\r\n public value: any;\r\n params: any;\r\n\r\n agInit(params: any): void {\r\n console.log(\"agInit Date Picker\");\r\n console.log(params);\r\n this.params = params;\r\n this.value = this.params.value;\r\n }\r\n\r\n getValue() {\r\n return this.value;\r\n }\r\n\r\n isPopup(): boolean {\r\n return true;\r\n };\r\n}\r\n","import {Component, Inject, isDevMode, ViewChild, HostBinding, TemplateRef} from \"@angular/core\";\r\nimport {ActivatedRoute} from \"@angular/router\";\r\n\r\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\r\nimport {finalize, map, takeUntil} from 'rxjs/operators';\r\nimport {NgbModal, NgbModalRef} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {DICTIONARY_ENDPOINT, DictionaryService} from '@huntsman-cancer-institute/dictionary-service';\r\n\r\nimport {\r\n ColumnApi,\r\n GridOptions,\r\n GridReadyEvent,\r\n GridApi\r\n} from \"ag-grid-community\";\r\nimport {SelectRenderer} from \"../grid-renderers/select.renderer\";\r\nimport {SelectEditor} from \"../grid-editors/select.editor\";\r\nimport {NewRowComponent} from \"./new-row.component\";\r\nimport {isNullOrUndefined} from \"util\";\r\nimport {DateRenderer} from \"../grid-renderers/date.renderer\";\r\nimport {AgGridDateCellEditorComponent} from \"../grid-editors/ag-grid-date-cell-editor.component\";\r\n\r\n/**\r\n * When a dictionary is selected this component is shown. There is a top grid which for its data shows all the columns\r\n * for the dictionary. Currently, keep this for reference only and have non-editable.\r\n * The bottom grid will show those columns as actual columns and its data are all the dictionary values. Rows can be\r\n * added. For deleting, need to make sure the id is not used anywhere. For editing, need to make sure the code or anything\r\n * else isn't being referenced.\r\n *\r\n * @since 1.0.0\r\n */\r\n@Component(\r\n {\r\n selector: \"hci-dictionary-editor-detail\",\r\n template:\r\n `\r\n <div class=\"d-flex flex-column hci-dictionary-detail-body\">\r\n <hci-busy [busySubjects]=\"loadingSubjects\"></hci-busy>\r\n\r\n <!-- Dictionary Title And Metadata -->\r\n <div class=\"dictionary-info-section\">\r\n <span class=\"dictionary-title\">\r\n {{displayName}}\r\n </span>\r\n <button riRippleEffectDict class=\"btn btn-primary metadata-button\"\r\n (click)=\"openModal(metaDataModal)\">\r\n View Meta Data\r\n </button>\r\n </div>\r\n\r\n <!-- Dictionary Edit Buttons -->\r\n <div>\r\n <button [class]=\"disableDelete? 'deactivated-color': 'active-color'\"\r\n [disabled]=\"disableDelete\"\r\n (click)=\"openAreYouSureModal(areYouSureModal)\">\r\n <i class=\"fas fa-minus\"></i>\r\n </button>\r\n <button style=\"color: var(--bluewarm-darkest); float: right; font-size: 15px;\"\r\n [disabled]=\"disableAddRow\"\r\n (click)=\"onClickAddRow()\">\r\n <i class=\"fas fa-plus\"></i>\r\n </button>\r\n </div>\r\n\r\n <!-- Dictionary Display Grid -->\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <ag-grid-angular id=\"dictionary-grid-display\"\r\n #dataGrid\r\n class=\"ag-theme-balham full-height full-width hci-dictionary-display-grid\"\r\n [rowData]=\"dictionaryEntries\"\r\n [rowSelection]=\"'multiple'\"\r\n [singleClickEdit]=\"'true'\"\r\n [pagination]=\"'true'\"\r\n [paginationAutoPageSize]=\"'true'\"\r\n [gridOptions]=\"gridOptions\"\r\n (cellValueChanged)=\"updateDictionary($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n\r\n <!-- Dictionary Metadata Popup -->\r\n <ng-template #metaDataModal let-close=\"close\">\r\n <div style=\"width:1000px\">\r\n <div class=\"modal-header\">\r\n Meta Data for {{className}}\r\n </div>\r\n <div class=\"d-flex flex-column modal-body\"\r\n style=\"border: 1px solid #ced4da; width: 100%;\">\r\n <ag-grid-angular #metaGrid\r\n class=\"ag-theme-balham full-width\"\r\n style=\"height: 250px;\"\r\n (gridReady)=\"this.onMetaGridReady($event)\"\r\n [gridOptions]=\"this.metaGridOptions\"\r\n [rowSelection]=\"'single'\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"dictionary?.fields\">\r\n </ag-grid-angular>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button riRippleEffectDict class=\"btn btn-primary\" (click)=\"close('Close')\">Close</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Dictionary Delete Comfirmation Popup -->\r\n <ng-template #areYouSureModal let-close=\"close\">\r\n <div class=\"modal-header\">\r\n Confirmation\r\n </div>\r\n <div class=\"modal-body d-flex\">\r\n Are you sure?\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button riRippleEffectDict class=\"btn btn-primary\" (click)=\"close('Cancel')\">Cancel</button>\r\n <button riRippleEffectDict class=\"btn btn-primary btn-red\" (click)=\"close('Delete')\">Delete</button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .full-height {\r\n height: 100%;\r\n }\r\n\r\n .full-width {\r\n width: 100%;\r\n }\r\n\r\n .ag-theme-balham {\r\n font-family: \"hci-font\";\r\n font-weight: 500;\r\n }\r\n\r\n .active-color {\r\n float: right;\r\n font-size: 15px;\r\n color: var(--bluewarm-darkest);\r\n }\r\n\r\n .deactivated-color {\r\n float: right;\r\n font-size: 15px;\r\n color: var(--greywarm-darkest);\r\n }\r\n\r\n .dictionary-info-section {\r\n padding-top: 10px;\r\n }\r\n\r\n .dictionary-title {\r\n float: left;\r\n font-size: 16px;\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n padding-top: 5px;\r\n }\r\n\r\n .metadata-button {\r\n color: var(--white-lightest);\r\n float: left;\r\n font-size: 15px;\r\n }\r\n\r\n :host::ng-deep .ag-header-cell {\r\n background-color: var(--bluewarmvividfade-lightest);\r\n border: lightgray solid thin;\r\n }\r\n\r\n :host::ng-deep .ag-cell {\r\n border-right: lightgray solid thin;\r\n border-left: lightgray solid thin;\r\n }\r\n\r\n :host::ng-deep .ag-row {\r\n border-bottom: 0;\r\n border-top: 0;\r\n }\r\n\r\n :host::ng-deep .ag-row-even {\r\n background-color: var(--white-medium);\r\n }\r\n\r\n .hci-dictionary-detail-body {\r\n height: 100%;\r\n width: 100%;\r\n background: linear-gradient(0deg, var(--white-lightest) 30%, var(--bluewarmvividfade-lighter) 100%) !important;\r\n }\r\n\r\n .hci-dictionary-display-grid {\r\n padding-right: 5px;\r\n padding-left: 5px;\r\n box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;\r\n }\r\n\r\n /********************************************************************\r\n * Dictionary Row Hover CSS\r\n ********************************************************************/\r\n :host::ng-deep .ag-row-hover {\r\n color: var(--grey-darkest) !important;\r\n background-color: var(--bluewarmvividfade-lighter) !important;\r\n }\r\n\r\n /********************************************************************\r\n * Dictionary Cell Selected CSS\r\n ********************************************************************/\r\n :host::ng-deep .ag-row-selected .ag-cell {\r\n color: var(--white-lightest) !important;\r\n }\r\n\r\n :host::ng-deep .ag-row-selected .ag-cell-not-inline-editing {\r\n color: var(--white-lightest) !important;\r\n }\r\n\r\n :host::ng-deep .ag-row-selected .ag-cell-inline-editing {\r\n color: var(--black-darkest) !important;\r\n }\r\n\r\n /********************************************************************\r\n * Dictionary Row Selected CSS\r\n ********************************************************************/\r\n :host::ng-deep .ag-row-selected {\r\n color: var(--white-darkest) !important;\r\n background-color: var(--bluewarmvivid-lighter) !important;\r\n }\r\n `\r\n ]\r\n }\r\n)\r\nexport class DictionaryEditorDetailComponent {\r\n\r\n @HostBinding(\"class\") classList: string = \"outlet-column y-auto\";\r\n\r\n private secondaryDictionaryEntries: any;\r\n className: string;\r\n displayName: any;\r\n dictionary: any;\r\n dictionaryEntries: any[] = [];\r\n dataColumns: any[];\r\n\r\n idColumn: string;\r\n selectedRows: any[] = [];\r\n loadingSubjects: BehaviorSubject<boolean>[] = [];\r\n halfLoaded: boolean = false;\r\n processingCall: boolean = false;\r\n callQueued: boolean = false;\r\n\r\n boundNewRowPostCall: (data: any) => Observable<any>;\r\n gridOptions: GridOptions;\r\n newRowSubscription: any;\r\n private destroy = new Subject<void>();\r\n\r\n metaGridOptions = {\r\n rowStyle: {\r\n \"font-family\": \"hci-font\"\r\n },\r\n enableCellTextSelection: true,\r\n ensureDomOrder: true\r\n };\r\n frameworkComponents: any;\r\n public gridApiMeta: GridApi;\r\n\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private modalService: NgbModal,\r\n private dictionaryService: DictionaryService,\r\n @Inject(DICTIONARY_ENDPOINT) private DictionaryEndpoint: string\r\n ) {\r\n\r\n this.gridOptions = <GridOptions>{\r\n context: {\r\n componentParent: this\r\n },\r\n onGridReady: DictionaryEditorDetailComponent.onSamplesGridReady,\r\n onGridSizeChanged: DictionaryEditorDetailComponent.onGridSizeChanged,\r\n suppressHorizontalScroll: false,\r\n selectionMode: \"multiple\",\r\n stopEditingWhenGridLosesFocus: true,\r\n enableSorting: true,\r\n enableFilter: true\r\n };\r\n }\r\n\r\n /**\r\n * Based on the route class name, make the call to fetch the dictionary data. Since this component is route based,\r\n * when the dictionary class in the route changes, this component is reloaded.\r\n */\r\n ngOnInit() {\r\n this.boundNewRowPostCall = this.newRowPost.bind(this);\r\n\r\n this.loadingSubjects.push(new BehaviorSubject<boolean>(false));\r\n\r\n this.route.params.subscribe(\r\n params => {\r\n\r\n let className: string = params[\"className\"];\r\n\r\n this.getDictionary(className);\r\n }\r\n );\r\n\r\n this.loadingSubjects[0].subscribe((value: boolean) => {\r\n if (value === true) {\r\n // A new call was made to be processed, process the call\r\n this.getDictionaryBegin(this.className);\r\n } else {\r\n // A call completed while another call was not queued, processing complete\r\n this.processingCall = false;\r\n }\r\n });\r\n }\r\n\r\n openModal(modal: TemplateRef<any>): void {\r\n\r\n this.modalService.open(modal, {windowClass: \"modal-xl\"}).result.then(\r\n (result) => {\r\n },\r\n (reason) => {\r\n }\r\n );\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n this.gridOptions.api.sizeColumnsToFit();\r\n }\r\n\r\n public columnDefMeta() : any[] {\r\n\r\n return [\r\n {field: \"name\", headerName: \"Name\", width: 175, sortable: true, resizable: true, editable: false},\r\n {field: \"description\", headerName: \"Description\", width: 250, sortable: true, resizable: true, editable: false},\r\n {field: \"id\", headerName: \"Id\", width: 60, sortable: true, resizable: true, editable: false},\r\n {field: \"type\", headerName: \"Type\", sortable: true, resizable: true, editable: false},\r\n {field: \"protectionType\", headerName: \"ProtectionType\", sortable: true, resizable: true, editable: false},\r\n {field: \"filterDictionaryClass\", headerName: \"FilterDictionaryClass\", width: 180, sortable: true, resizable: true, editable: false},\r\n {field: \"notNull\", headerName: \"NotNull\", sortable: true, resizable: true, editable: false},\r\n {field: \"integer\", headerName: \"Integer\", width: 75, sortable: true, resizable: true, editable: false},\r\n {field: \"min\", headerName: \"Min\", width: 60, sortable: true, resizable: true, editable: false},\r\n {field: \"max\", headerName: \"Max\", width: 60, sortable: true, resizable: true, editable: false},\r\n {field: \"fraction\", headerName: \"Fraction\", sortable: true, resizable: true, editable: false},\r\n {field: \"dictionaryTooltip\", headerName: \"DictionaryTooltip\", width: 200, sortable: true, resizable: true, editable: false},\r\n {field: \"dictionaryDisplay\", headerName: \"DictionaryDisplay\", width: 175, sortable: true, resizable: true, editable: false},\r\n {field: \"filterable\", headerName: \"Filterable\", sortable: true, resizable: true, editable: false},\r\n {field: \"displayName\", headerName: \"DisplayName\", width: 175, sortable: true, resizable: true, editable: false},\r\n {field: \"displayOrder\", headerName: \"DisplayOrder\", width: 60, sortable: true, resizable: true, editable: false},\r\n {field: \"cellStyle\", headerName: \"CellStyle\", sortable: true, resizable: true, editable: false},\r\n ]; // the widths for the last 2 could be wrong.\r\n\r\n }\r\n\r\n onMetaGridReady(params : any) {\r\n\r\n this.gridApiMeta = params.api;\r\n this.gridApiMeta.setColumnDefs(this.columnDefMeta());\r\n this.gridApiMeta.setRowData(this.dictionary?.fields);\r\n\r\n }\r\n\r\n openAreYouSureModal(modal: TemplateRef<any>): void {\r\n\r\n this.modalService.open(modal).result.then(\r\n (result) => {\r\n if (result === \"Delete\") {\r\n this.deleteDictionaryEntries();\r\n }\r\n },\r\n (reason) => {\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Determine if we are loading something, and then wait until it is done to .\r\n *\r\n * @param {string} className\r\n */\r\n getDictionary(className: string) {\r\n this.className = className;\r\n if (this.processingCall === false) {\r\n // Call is not being processed, process this call\r\n this.processingCall = true;\r\n this.loadingSubjects[0].next(true);\r\n } else {\r\n // A call is already being processed, queue a recall when it is complete\r\n this.callQueued = true;\r\n }\r\n }\r\n\r\n /**\r\n * Fetch the dictionary metadata and dictionary entries based upon the dictionary class name.\r\n *\r\n * @param {string} className\r\n */\r\n private getDictionaryBegin(className: string) {\r\n this.halfLoaded = false;\r\n // When Selecting A New Dictionary, Navigate To First Page\r\n if (this.gridOptions && this.gridOptions.api) {\r\n this.gridOptions.api.paginationGoToFirstPage();\r\n }\r\n this.dataColumns = undefined;\r\n\r\n this.destroy.next();\r\n this.destroy.complete();\r\n this.dictionaryService.getDictionary(className).pipe(\r\n takeUntil(this.destroy)\r\n ).subscribe((dictionary: Object) => {\r\n this.setUpDictionaryGrid(dictionary);\r\n }\r\n );\r\n\r\n this.getDictionaryEntries();\r\n }\r\n\r\n getDictionaryEntries(): void {\r\n\r\n this.dictionaryService.getDictionaryEntries(this.className).pipe(takeUntil(this.destroy)).subscribe(\r\n (dictionaryEntries: Object[]) => {\r\n this.dictionaryEntries = dictionaryEntries;\r\n this.gridOptions.api.setRowData(dictionaryEntries);\r\n this.gridOptions.api.sizeColumnsToFit();\r\n if (this.halfLoaded) {\r\n if (this.callQueued === true) {\r\n // A call completed while another call was queued so make that call now\r\n this.callQueued = false;\r\n this.getDictionaryBegin(this.className);\r\n } else {\r\n this.loadingSubjects[0].next(false);\r\n }\r\n } else {\r\n this.halfLoaded = true;\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Set the dictionary metadata. This is used to build the columns for the dictionary entries. The names, validation,\r\n * and filter classes build the column definition.\r\n *\r\n * @param dictionary\r\n */\r\n private setUpDictionaryGrid(dictionary: any): void {\r\n\r\n if (isDevMode()) {\r\n console.debug(\"DictionaryEditorDetailComponent.setDictionary\");\r\n console.debug(dictionary);\r\n }\r\n\r\n this.dictionary = dictionary;\r\n this.secondaryDictionaryEntries = [];\r\n let dictionaryClassNames = [];\r\n\r\n for (let field of dictionary.fields) {\r\n if (field.filterDictionaryClass) {\r\n dictionaryClassNames.push(field.filterDictionaryClass);\r\n }\r\n }\r\n\r\n this.getSecondaryDictionaries(dictionaryClassNames);\r\n }\r\n\r\n private getSecondaryDictionaries(dictionaryNames: string[]) {\r\n if (dictionaryNames.length == 0) {\r\n this.finishColumnSetup();\r\n } else {\r\n let dictionaryName = dictionaryNames.pop();\r\n this.dictionaryService.getDictionaryDropdownEntries(dictionaryName).pipe(\r\n takeUntil(this.destroy)\r\n ).subscribe(\r\n (response: any) => {\r\n this.secondaryDictionaryEntries.push({dictionaryName: dictionaryName, entries: response});\r\n this.getSecondaryDictionaries(dictionaryNames);\r\n }\r\n );\r\n }\r\n }\r\n\r\n private finishColumnSetup() {\r\n this.displayName = this.dictionary.displayName;\r\n\r\n // This establishes the readOnly functionality\r\n let cols: any[] = [];\r\n\r\n // Process Columns And Create Column Definition\r\n for (let field of this.dictionary.fields) {\r\n if (field.id && (isNullOrUndefined(field.code) || field.code == false)) {\r\n continue;\r\n }\r\n\r\n let col: any;\r\n\r\n if (field.filterDictionaryClass) {\r\n // this is a dropdown of another dictionary\r\n let options = this.secondaryDictionaryEntries.find(\r\n (a: any) => {\r\n return a.dictionaryName === field.filterDictionaryClass;\r\n }\r\n );\r\n\r\n col = {\r\n field: field.name,\r\n headerName: field.displayName,\r\n editable: this.isEditable.bind(this),\r\n cellRendererFramework: SelectRenderer,\r\n cellEditorFramework: SelectEditor,\r\n selectOptionsDisplayField: \"display\",\r\n selectOptionsValueField: \"id\",\r\n sortable: true,\r\n resizable: true,\r\n filter: true,\r\n filterValueGetter: this.comboFilterValueGetter,\r\n selectOptions: [],\r\n comparator: (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n return 0;\r\n }\r\n };\r\n\r\n if (options && options.entries) {\r\n col.selectOptions = options.entries.sort(\r\n (optionA, optionB) => {\r\n if (optionA && !optionB) {\r\n return 1;\r\n }\r\n\r\n if (optionB && !optionA) {\r\n return -1;\r\n }\r\n\r\n if (!optionA && !optionB) {\r\n return 0;\r\n }\r\n\r\n if (optionA.display.toLowerCase() > optionB.display.toLowerCase()) {\r\n return 1;\r\n } else if ((optionB.display.toLowerCase() > optionA.display.toLowerCase())) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n );\r\n\r\n col.comparator = (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n if (!options.entries) {\r\n return 0;\r\n }\r\n\r\n if (valueA && !valueB) {\r\n return 1;\r\n }\r\n\r\n if (valueB && !valueA) {\r\n return -1;\r\n }\r\n\r\n if (!valueA && !valueB) {\r\n return 0;\r\n }\r\n\r\n let optionA = options.entries.find((entry) => (\"\" + entry.id === \"\" + valueA));\r\n let optionB = options.entries.find((entry) => (\"\" + entry.id === \"\" + valueB));\r\n\r\n if (optionA && !optionB) {\r\n return 1;\r\n }\r\n\r\n if (optionB && !optionA) {\r\n return -1;\r\n }\r\n\r\n if (!optionA && !optionB) {\r\n return 0;\r\n }\r\n\r\n if (optionA.display.toLowerCase() > optionB.display.toLowerCase()) {\r\n return 1;\r\n } else if ((optionB.display.toLowerCase() > optionA.display.toLowerCase())) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n }\r\n\r\n col.cellStyle = params => {\r\n let column: any = {};\r\n\r\n for (let field of params.context.componentParent.dictionary.fields) {\r\n if (params.colDef.field == field.name) {\r\n column = field;\r\n }\r\n }\r\n\r\n if (params.data.editOrNew && params.data.editOrNew == \"new\") {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\") {\r\n return {color: \"#8a9499\"};\r\n }\r\n } else {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\" || column.createOnly ||\r\n column.protectionType == \"Create Only\" || column.code) {\r\n return {color: \"#8a9499\"};\r\n }\r\n }\r\n };\r\n\r\n col.displayOrder = field.displayOrder;\r\n col.dictionaryDisplay = field.dictionaryDisplay;\r\n col.dictionaryTooltip = field.dictionaryTooltip;\r\n\r\n // Set default filter as compare by text/number\r\n // col.filterRenderer = CompareFilterRenderer;\r\n } else if (field.type && field.type == \"Date\") {\r\n //date value\r\n col = {\r\n field: field.name,\r\n headerName: field.displayName,\r\n cellRendererFramework: DateRenderer,\r\n cellEditorFramework: AgGridDateCellEditorComponent,\r\n editable: this.isEditable.bind(this),\r\n sortable: true,\r\n resizable: true,\r\n filter: true,\r\n dictionaryDisplay: field.dictionaryDisplay\r\n };\r\n\r\n col.comparator = (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n let num = this.dateComparator(valueA, valueB);\r\n return isInverted ? -1 * num : num; //don't have to do anything with inverted?\r\n };\r\n\r\n col.cellStyle = params => {\r\n var column: any = {};\r\n for (let field of params.context.componentParent.dictionary.fields) {\r\n if (params.colDef.field == field.name) {\r\n column = field;\r\n }\r\n }\r\n\r\n if (params.data.editOrNew && params.data.editOrNew == \"new\") {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\") {\r\n return {color: \"#8a9499\"};\r\n }\r\n } else {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\" || column.createOnly ||\r\n column.protectionType == \"Create Only\" || column.code) {\r\n return {color: \"#8a9499\"};\r\n }\r\n }\r\n };\r\n\r\n col.displayOrder = field.displayOrder;\r\n } else {\r\n // this is a string value\r\n col = {\r\n field: field.name,\r\n headerName: field.displayName,\r\n editable: this.isEditable.bind(this),\r\n sortable: true,\r\n resizable: true,\r\n filter: true,\r\n dictionaryDisplay: field.dictionaryDisplay\r\n };\r\n\r\n col.comparator = (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n if (valueA && !valueB) {\r\n return 1;\r\n }\r\n\r\n if (valueB && !valueA) {\r\n return -1;\r\n }\r\n\r\n if (!valueA && !valueB) {\r\n return 0;\r\n }\r\n\r\n if (valueA.toLowerCase() > valueB.toLowerCase()) {\r\n return 1;\r\n } else if ((valueB.toLowerCase() > valueA.toLowerCase())) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n col.cellStyle = params => {\r\n var column: any = {};\r\n for (let field of params.context.componentParent.dictionary.fields) {\r\n if (params.colDef.field == field.name) {\r\n column = field;\r\n }\r\n }\r\n if (params.data.editOrNew && params.data.editOrNew == \"new\") {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\") {\r\n return {color: \"#8a9499\"};\r\n }\r\n } else {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\" || column.createOnly ||\r\n column.protectionType == \"Create Only\" || column.code) {\r\n return {color: \"#8a9499\"};\r\n }\r\n }\r\n };\r\n\r\n col.displayOrder = field.displayOrder;\r\n // Set default filter as compare by text/number\r\n // col.filterRenderer = CompareFilterRenderer;\r\n }\r\n\r\n cols.push(col);\r\n }\r\n\r\n // Now we need to sort the columns\r\n if (!this.dictionary.fields[0].hasOwnProperty(\"displayOrder\")) {\r\n // default case, no displayOrder\r\n cols = cols.sort(\r\n (a, b) => {\r\n if (!a.headerName && b.headerName) {\r\n return 1;\r\n } else if (!b.headerName && a.headerName) {\r\n return -1;\r\n } else if (a.dictionaryDisplay === true && b.dictionaryDisplay === false) {\r\n return -1;\r\n } else if (b.dictionaryDisplay === true && a.dictionaryDisplay === false) {\r\n return 1;\r\n } else if (a.dictionaryTooltip === true && b.dictionaryTooltip === false) {\r\n return -1;\r\n } else if (b.dictionaryTooltip === true && a.dictionaryTooltip === false) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n );\r\n\r\n } else {\r\n // DisplayOrder case\r\n // I think this works? Check later\r\n cols = cols.sort(\r\n (a, b) => {\r\n if (!a.headerName && b.headerName) {\r\n return 1;\r\n } else if (!b.headerName && a.headerName) {\r\n return -1;\r\n } else {\r\n return a.displayOrder - b.displayOrder;\r\n }\r\n }\r\n );\r\n }\r\n\r\n // After Columns Have Been Sorted\r\n // Dictionary Grid Will Sort The Grid Ascending Order By First Column\r\n if(cols && cols.length != 0) {\r\n cols[0].sort = \"asc\";\r\n }\r\n\r\n this.dataColumns = cols;\r\n if (Array.isArray(this.dataColumns) && this.gridOptions && this.gridOptions.api) {\r\n this.gridOptions.api.setColumnDefs(this.dataColumns);\r\n this.gridOptions.api.sizeColumnsToFit();\r\n }\r\n if (this.halfLoaded) {\r\n if (this.callQueued === true) {\r\n // A call completed while another call was queued so make that call now\r\n this.callQueued = false;\r\n this.getDictionaryBegin(this.className);\r\n } else {\r\n this.loadingSubjects[0].next(false);\r\n }\r\n } else {\r\n this.halfLoaded = true;\r\n }\r\n }\r\n\r\n isEditable(params): boolean {\r\n\r\n let isEditable: boolean;\r\n\r\n let column: any = {};\r\n for (let field of this.dictionary.fields) {\r\n if (params.colDef.field == field.name) {\r\n column = field;\r\n }\r\n }\r\n\r\n if (params.data.editOrNew && params.data.editOrNew == \"new\") {\r\n // console.log(\"new editable?\");\r\n isEditable = !(this.dictionary.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\");\r\n } else {\r\n // console.log(\"edit editable?\");\r\n isEditable = !(this.dictionary.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\" || column.createOnly ||\r\n column.protectionType == \"Create Only\" || column.code);\r\n }\r\n\r\n return isEditable;\r\n }\r\n\r\n deleteDictionaryEntries(): void {\r\n\r\n let deleteRows: any[] = this.gridOptions.api.getSelectedRows();\r\n\r\n for (let deleteId of this.selectedRows) {\r\n for (let entry of this.dictionaryEntries) {\r\n if (entry[this.idColumn] === deleteId) {\r\n deleteRows.push(entry);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.dictionaryService.deleteDictionaryEntries(this.className, deleteRows).subscribe(\r\n (response: any) => {\r\n this.getDictionaryEntries();\r\n }\r\n );\r\n }\r\n\r\n updateDictionary(event: any): void {\r\n\r\n // Important to note this will not update cells to the demo but will when imported to CORE or other applications.\r\n this.dictionaryService.updateDictionaryEntries(this.className, [event.data]).subscribe(\r\n (data: any[]) => {\r\n this.getDictionaryEntries();\r\n }\r\n );\r\n }\r\n\r\n setSelectedEntries(): void {\r\n\r\n this.selectedRows = this.gridOptions.api.getSelectedRows();\r\n }\r\n\r\n newRowPost(data: any): Observable<any> {\r\n\r\n return this.dictionaryService.addDictionaryEntries(this.className, [data])\r\n .pipe(\r\n map(\r\n (data: Object[]) => {\r\n if (data && data.length === 1) {\r\n return <any>data[0];\r\n } else {\r\n return data;\r\n }\r\n }\r\n )\r\n );\r\n }\r\n\r\n public static onSamplesGridReady(event: GridReadyEvent): void {\r\n\r\n event.api.sizeColumnsToFit();\r\n }\r\n\r\n public static onGridSizeChanged(event: any) {\r\n\r\n if (event && event.api) {\r\n event.api.sizeColumnsToFit();\r\n }\r\n }\r\n\r\n public get disableAddRow(): boolean {\r\n\r\n if (!this.dictionary) {\r\n return true;\r\n }\r\n\r\n return this.dictionary.readOnly && this.dictionary.readOnly === true;\r\n }\r\n\r\n public get disableDelete(): boolean {\r\n\r\n if (!this.dictionary) {\r\n return true;\r\n }\r\n\r\n if (this.dictionary.readOnly && this.dictionary.readOnly === true) {\r\n return true;\r\n }\r\n\r\n if (this.gridOptions && this.gridOptions.api && this.gridOptions.api.getSelectedRows()) {\r\n return this.gridOptions.api.getSelectedRows().length === 0;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n private comboFilterValueGetter(params): any {\r\n\r\n let value = params.data[params.colDef.field];\r\n\r\n if (value) {\r\n let option = ((params.colDef as any).selectOptions as any[]).find((entry) => (entry[params.colDef.selectOptionsValueField] === value));\r\n return option ? option[params.colDef.selectOptionsDisplayField] : \"\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n onClickAddRow() {\r\n\r\n const modalRef = this.modalService.open(NewRowComponent,\r\n {\r\n size: \"lg\",\r\n keyboard: false,\r\n backdrop: \"static\",\r\n centered: true,\r\n }\r\n );\r\n\r\n modalRef.componentInstance.colDefs = this.dataColumns;\r\n modalRef.componentInstance.dictionary = this.dictionary;\r\n\r\n // if (!this.newRowSubscription) { // removed because it was preventing save after cancel\r\n // tell other ag-grid to add row to it\r\n this.newRowSubscription = modalRef.componentInstance.newRowSubject.subscribe(\r\n (theNewRow: any[]) => {\r\n this.dictionaryEntries = theNewRow.concat(this.dictionaryEntries);\r\n this.gridOptions.api.setRowData(this.dictionaryEntries);\r\n this.newRowSubscription = null;\r\n\r\n // Important to note this will not add rows to the demo but will when imported to CORE or other applications.\r\n this.newRowPost(theNewRow[0]).subscribe(\r\n () => {\r\n this.getDictionaryEntries();\r\n }\r\n );\r\n }\r\n );\r\n // }\r\n }\r\n\r\n /**\r\n * Comparater To Compare 2 Dates\r\n * @param date1 Date 1\r\n * @param date2 Date 2\r\n */\r\n dateComparator(date1, date2) {\r\n\r\n let date1Number = monthToComparableNumber(date1);\r\n let date2Number = monthToComparableNumber(date2);\r\n\r\n if (date1Number === null && date2Number === null) {\r\n return 0;\r\n }\r\n\r\n if (date1Number === null) {\r\n return -1;\r\n }\r\n\r\n if (date2Number === null) {\r\n return 1;\r\n }\r\n\r\n return date1Number - date2Number;\r\n }\r\n}\r\n\r\n/**\r\n * Extracts Date And Turn To A Numerical Value For Comparing Purposes\r\n * @param date The date to comparable number\r\n */\r\nfunction monthToComparableNumber(date) {\r\n\r\n if (date === undefined || date === null || date.length !== 10) {\r\n return null;\r\n }\r\n\r\n let yearNumber = date.substring(0, 4);\r\n let monthNumber = date.substring(5, 7);\r\n let dayNumber = date.substring(8, 10);\r\n\r\n return yearNumber * 10000 + monthNumber * 100 + dayNumber;\r\n}\r\n","import {ModuleWithProviders} from \"@angular/core\";\r\nimport {RouterModule, Routes} from \"@angular/router\";\r\n\r\nimport {RouteGuardService} from \"@huntsman-cancer-institute/authentication\";\r\n\r\nimport {DictionaryEditorComponent} from \"./dictionary-editor.component\";\r\nimport {DictionaryEditorHomeComponent} from \"./components/home.component\";\r\nimport {DictionaryEditorDetailComponent} from \"./components/detail.component\";\r\n\r\nexport const ROUTES: Routes = [\r\n {path: \"\", component: DictionaryEditorComponent,\r\n children: [\r\n {path: \"\", redirectTo: \"home\", pathMatch: \"full\"},\r\n {path: \"home\", component: DictionaryEditorHomeComponent},\r\n {path: \"detail/:className\", component: DictionaryEditorDetailComponent}\r\n ]\r\n }\r\n];\r\nexport const DICTIONARY_EDITOR_ROUTES: ModuleWithProviders<RouterModule> = RouterModule.forChild(ROUTES);\r\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\n\nimport { SelectRenderer } from \"./select.renderer\";\nimport {DateRenderer} from \"./date.renderer\";\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ],\n declarations: [\n\t\t SelectRenderer,\n DateRenderer\n ],\n exports: [\n SelectRenderer,\n DateRenderer\n ]\n})\nexport class AgGridRendererModule { }\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\n\r\nimport { AgGridModule } from \"ag-grid-angular\";\r\n\r\nimport {MatDatepickerModule} from \"@angular/material/datepicker\";\r\n\r\nimport { SelectEditor } from \"./select.editor\";\r\nimport {AgGridRendererModule} from \"../grid-renderers/ag-grid-renderer.module\";\r\nimport {DatepickerComponent} from \"./datepicker.component\";\r\nimport {AgGridDateCellEditorComponent} from \"./ag-grid-date-cell-editor.component\";\r\nimport {MomentDateModule} from \"@angular/material-moment-adapter\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n AgGridModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatDatepickerModule,\r\n MomentDateModule,\r\n AgGridRendererModule\r\n ],\r\n declarations: [\r\n SelectEditor,\r\n AgGridDateCellEditorComponent,\r\n DatepickerComponent\r\n ],\r\n exports: [\r\n SelectEditor,\r\n AgGridDateCellEditorComponent\r\n ]\r\n})\r\nexport class AgGridEditorModule { }\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {MiscModule} from \"@huntsman-cancer-institute/misc\";\r\nimport {NavigationModule} from \"@huntsman-cancer-institute/navigation\";\r\n\r\nimport {DICTIONARY_EDITOR_ROUTES} from \"./dictionary-editor.routes\";\r\nimport {DictionaryEditorComponent} from \"./dictionary-editor.component\";\r\nimport {DictionaryEditorHomeComponent} from \"./components/home.component\";\r\nimport {DictionaryEditorDetailComponent} from \"./components/detail.component\";\r\nimport {AgGridModule} from \"ag-grid-angular\";\r\nimport {AgGridEditorModule} from \"./grid-editors/ag-grid-editor.module\";\r\nimport {AgGridRendererModule} from \"./grid-renderers/ag-grid-renderer.module\";\r\nimport {SelectEditor} from \"./grid-editors/select.editor\";\r\nimport {SelectRenderer} from \"./grid-renderers/select.renderer\";\r\nimport {NewRowComponent} from \"./components/new-row.component\";\r\nimport {AgGridDateCellEditorComponent} from \"./grid-editors/ag-grid-date-cell-editor.component\";\r\nimport {DateRenderer} from \"./grid-renderers/date.renderer\";\r\nimport {RIRippleEffectDictDirective} from \"./directives/ri-ripple-effect-dict.directive\";\r\n\r\n/**\r\n * The module defining the dictionary editor.\r\n *\r\n * @since 1.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n DICTIONARY_EDITOR_ROUTES,\r\n NgbModule,\r\n NavigationModule,\r\n MiscModule,\r\n AgGridEditorModule,\r\n AgGridRendererModule,\r\n AgGridModule,\r\n ],\r\n declarations: [\r\n DictionaryEditorComponent,\r\n DictionaryEditorHomeComponent,\r\n DictionaryEditorDetailComponent,\r\n NewRowComponent,\r\n RIRippleEffectDictDirective\r\n ],\r\n exports: [\r\n DictionaryEditorComponent,\r\n DictionaryEditorHomeComponent,\r\n DictionaryEditorDetailComponent,\r\n RIRippleEffectDictDirective\r\n ]\r\n})\r\nexport class DictionaryEditorModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3.RIRippleEffectDictDirective","i3","i2.DatepickerComponent","i4","i5","i6.RIRippleEffectDictDirective"],"mappings":"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"}
1
+ {"version":3,"file":"huntsman-cancer-institute-dictionary-editor.mjs","sources":["../../../projects/dictionary-editor/src/dictionary-editor.component.ts","../../../projects/dictionary-editor/src/components/home.component.ts","../../../projects/dictionary-editor/src/grid-renderers/cell-renderer-validation.ts","../../../projects/dictionary-editor/src/grid-renderers/select.renderer.ts","../../../projects/dictionary-editor/src/grid-editors/select.editor.ts","../../../projects/dictionary-editor/src/directives/ri-ripple-effect-dict.directive.ts","../../../projects/dictionary-editor/src/components/new-row.component.ts","../../../projects/dictionary-editor/src/grid-renderers/date.renderer.ts","../../../projects/dictionary-editor/src/grid-editors/datepicker.component.ts","../../../projects/dictionary-editor/src/grid-editors/ag-grid-date-cell-editor.component.ts","../../../projects/dictionary-editor/src/components/detail.component.ts","../../../projects/dictionary-editor/src/dictionary-editor.routes.ts","../../../projects/dictionary-editor/src/grid-renderers/ag-grid-renderer.module.ts","../../../projects/dictionary-editor/src/grid-editors/ag-grid-editor.module.ts","../../../projects/dictionary-editor/src/dictionary-editor.module.ts","../../../projects/dictionary-editor/src/huntsman-cancer-institute-dictionary-editor.ts"],"sourcesContent":["import {Component, HostBinding, OnInit, Renderer2, TemplateRef, ViewChild} from '@angular/core';\r\nimport {DictionaryService} from \"@huntsman-cancer-institute/dictionary-service\";\r\nimport {\r\n LiNavComponent,\r\n SearchListComponent,\r\n SearchListControllerComponent,\r\n SidebarComponent,\r\n UlNavComponent\r\n} from \"@huntsman-cancer-institute/navigation\";\r\nimport {HciSortDto} from \"@huntsman-cancer-institute/hci-ng-grid-dto\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\n\r\n/**\r\n * The root component for the dictionary editor. This defines a sidebar which will contain the list of dictionaries.\r\n * The sub route here will display a detail component when a dictionary is selected.\r\n *\r\n * @since 1.0.0\r\n */\r\n@Component(\r\n {\r\n selector: \"hci-dictionary-editor\",\r\n template:\r\n `\r\n <hci-sidebar #sidebar></hci-sidebar>\r\n\r\n <router-outlet></router-outlet>\r\n\r\n <ng-template #dictionaryTemplate let-row=\"row\">\r\n <div class=\"search-item\" [routerLink]=\"['detail', row.className]\" [routerLinkActive]=\"['active']\">\r\n <div class=\"ms-3\" [ngStyle]=\"{'color':row.readOnly === false ? '#005480' : '#8a9499'}\">\r\n {{row.displayName}}\r\n </div>\r\n </div>\r\n </ng-template>\r\n `\r\n ,\r\n styles:\r\n [\r\n `\r\n .active .ms-3 {\r\n color: #ffffff !important;\r\n }\r\n\r\n :host::ng-deep .format-bottom-padding {\r\n padding-bottom: 10px;\r\n }\r\n\r\n :host::ng-deep .active {\r\n height: 30px;\r\n }\r\n\r\n :host::ng-deep .search-item {\r\n height: 30px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n :host::ng-deep #filterReadOnly {\r\n float: left;\r\n display: flex;\r\n flex-direction: row-reverse;\r\n }\r\n\r\n :host::ng-deep #filterAndSortContainer {\r\n background-color: var(--bluewarm-lighter) !important;\r\n height: 80px;\r\n }\r\n\r\n :host::ng-deep .results-count {\r\n height: 0 !important;\r\n }\r\n\r\n :host::ng-deep #filterReadOnly-li {\r\n font-size: 15px;\r\n height: 30px;\r\n }\r\n\r\n :host::ng-deep #SLCC {\r\n backgound-color: var(--greywarm-medlight) !important;\r\n }\r\n\r\n :host::ng-deep .hci-dic-show-value {\r\n padding-right: 75px;\r\n color: var(--grey-darkest);\r\n }\r\n `\r\n ]\r\n }\r\n)\r\nexport class DictionaryEditorComponent implements OnInit {\r\n\r\n @HostBinding(\"class\") classList: string = \"outlet-row\";\r\n\r\n @ViewChild(SidebarComponent, {static: true}) sidebar: SidebarComponent;\r\n\r\n @ViewChild(\"dictionaryTemplate\", {read: TemplateRef, static: true}) dictionaryTemplate: any;\r\n\r\n filterReadOnlyDictionaries: boolean = true;\r\n\r\n sortDictionariesUp: boolean = true;\r\n\r\n constructor(private dictionaryService: DictionaryService, private renderer: Renderer2) {\r\n }\r\n\r\n dictionariesReference: Object [];\r\n\r\n dictionariesReferenceCopy: Object [];\r\n\r\n loadingSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /**\r\n * Upon creation, set up the sidebar and listen for the list of dictionaries from the service.\r\n */\r\n ngOnInit() {\r\n this.dictionariesReference = [];\r\n this.loadingSubject.next(true);\r\n this.setDictionarySideBarConfiguration();\r\n\r\n // Makes Call To Get The Dictionaries\r\n this.dictionaryService.getDictionaries().subscribe(\r\n theData => {\r\n\r\n this.dictionariesReference = theData.filter(this.checkInternalOnly);\r\n\r\n this.dictionariesReference.sort(\r\n (dictionaryA: any, dictionaryB: any) => (dictionaryA.displayName < dictionaryB.displayName ? -1 : 1)\r\n );\r\n\r\n this.dictionariesReferenceCopy = this.dictionariesReference;\r\n this.dictionariesReference = this.dictionariesReference.filter(this.checkReadOnly);\r\n this.setDictionarySideBarConfiguration();\r\n this.loadingSubject.next(false);\r\n }\r\n );\r\n }\r\n\r\n /*************************************************\r\n * Helper Method To Configure Dictionary Side Bar\r\n *************************************************/\r\n private setDictionarySideBarConfiguration() {\r\n\r\n let resultMessage =\r\n this.dictionariesReference.length == 0\r\n ? \"\"\r\n : this.dictionariesReference.length + \" Results\";\r\n\r\n this.sidebar.setConfig(\r\n {\r\n sidebarSize: 240,\r\n showCollapse: false,\r\n children:\r\n [\r\n {\r\n type: SearchListControllerComponent,\r\n id: \"SLCC\",\r\n showTitle: false,\r\n filterByAllowedFields: [\"displayName\"],\r\n sortByAllowedFields: [\"displayName\"],\r\n loadingSubjects: [this.loadingSubject]\r\n },\r\n {\r\n type: UlNavComponent,\r\n ulClass: \"hci-dic-ul-class\",\r\n id: \"filterAndSortContainer\",\r\n children:\r\n [\r\n {\r\n type: LiNavComponent,\r\n id: \"filterReadOnly\",\r\n title: \"Show All\",\r\n spanClass: \"hci-dic-span-1\",\r\n liClass: \"hci-dic-li-l\",\r\n iClass: \"hci-dic-i\",\r\n ulClass: \"hci-dic-ul\",\r\n expandable: true,\r\n iRight: false,\r\n showValueFlag: true,\r\n showValue: resultMessage,\r\n showValueClass: \"hci-dic-show-value\",\r\n liClick: () => {\r\n this.filter();\r\n let SLC = this.sidebar.getChild(\"dictionaries-component\") as SearchListComponent;\r\n SLC.setData(this.dictionariesReference);\r\n }\r\n },\r\n {\r\n type: LiNavComponent,\r\n id: \"sort\",\r\n title: \"\",\r\n spanClass: \"hci-dic-span-2\",\r\n liClass: \"hci-dic-li-r\",\r\n iClass: \"fa-solid fa-arrow-down-a-z hci-dic-i\",\r\n ulClass: \"hci-dic-ul\",\r\n expandable: true,\r\n iRight: true,\r\n liClick: (click: MouseEvent) => {\r\n let SLCC = <SearchListControllerComponent>this.sidebar.getChild(\"SLCC\");\r\n SLCC.setSort(click, \"displayName\");\r\n this.sortDictionariesUp = !this.sortDictionariesUp;\r\n let sort = this.sidebar.getChild(\"filterAndSortContainer\").getChild(\"sort\");\r\n\r\n if (this.sortDictionariesUp) {\r\n sort.config.iClass = \"fas fa-solid fa-arrow-down-a-z\";\r\n } else {\r\n sort.config.iClass = \"fa-solid fa-arrow-up-a-z\";\r\n }\r\n\r\n sort.updateConfig(sort.config);\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: SearchListComponent,\r\n id: \"dictionaries-component\",\r\n title: \"Dictionaries\",\r\n itemTemplate: this.dictionaryTemplate,\r\n sorts: [new HciSortDto(\"displayName\", true)],\r\n data: this.dictionariesReference,\r\n loadingSubjects: [this.loadingSubject]\r\n }\r\n ]\r\n }\r\n );\r\n }\r\n\r\n filter() {\r\n this.filterReadOnlyDictionaries = !this.filterReadOnlyDictionaries;\r\n let FRO = this.sidebar.getChild(\"filterAndSortContainer\").getChild(\"filterReadOnly\");\r\n\r\n if (this.filterReadOnlyDictionaries) {\r\n this.dictionariesReference = this.dictionariesReference.filter(this.checkReadOnly);\r\n FRO.config.spanClass = \"hci-dic-span-1\";\r\n FRO.config.showValue = (FRO.config.showValueFlag) ? this.dictionariesReference.length + \" Result(s)\" : \"\";\r\n FRO.updateConfig(FRO.config);\r\n } else {\r\n this.dictionariesReference = this.dictionariesReferenceCopy;\r\n FRO.config.spanClass = \"hci-dic-span-3\";\r\n FRO.config.showValue = (FRO.config.showValueFlag) ? this.dictionariesReference.length + \" Result(s)\" : \"\";\r\n FRO.updateConfig(FRO.config);\r\n }\r\n }\r\n\r\n /*******************************************************\r\n * Helper Method To Determine If Dictionary Is Read Only\r\n *******************************************************/\r\n checkReadOnly(dictionary) {\r\n return !dictionary.readOnly;\r\n }\r\n\r\n /***********************************************************\r\n * Helper Method To Determine If Dictionary Is Internal Only\r\n ***********************************************************/\r\n checkInternalOnly(dictionary) {\r\n return !dictionary.internalOnly;\r\n }\r\n}\r\n","import {Component, HostBinding} from \"@angular/core\";\r\n\r\n/**\r\n * Splash screen for the editor when no dictionary is selected.\r\n *\r\n * TODO: Use this page to put more of a guide on how to use the editor?\r\n *\r\n * @since 1.0.0\r\n */\r\n@Component({\r\n selector: \"core-dictionary-editor-home\",\r\n template: `\r\n <div class=\"d-flex m-3 flex-column flex-grow\">\r\n <h4>Dictionary Editor</h4>\r\n\r\n <div class=\"d-flex\">\r\n Select a dictionary from the sidebar to view its properties and data.\r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class DictionaryEditorHomeComponent {\r\n\r\n @HostBinding(\"class\") classList: string = \"outlet-column y-auto\";\r\n\r\n}\r\n","import {ICellRendererAngularComp} from \"ag-grid-angular\";\r\nimport {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators} from \"@angular/forms\";\r\n\r\n/**\r\n * This class' purpose is to place FormControls on cells in the grid, and to link them by rows, and rows to the grid as a whole.\r\n * It allows you to add validators for a cells' value and link an error type to an error message to display in a tooltip, or\r\n * you can provide a function to test some information about the row and provide an error message.\r\n *\r\n * The class works off of a number of properties added to the columnDefs in the ag-grid.\r\n *\r\n * We are looking for the following properties:\r\n * 1. errorMessageHeader : a string to display at the top of the list of any errors found for the cell\r\n * 2. validators : an array of angular validators to describe the cell value\r\n * 3. errorNameErrorMessageMap : an array of objects with \"errorName\"s and \"errorMessage\"s that are used to create a displayed list for the user\r\n * 4. setErrors: a function with the signature:\r\n * (value: any, data: any, node: any, colDef: any, rowIndex: any, gridApi: any) => string\r\n * which is called to generate a custom error message, if needed. An empty or null string\r\n * is treated as not being an error.\r\n *\r\n * Example column definition:\r\n * {\r\n * headerName: \"Name\",\r\n * editable: false,\r\n * width: 600,\r\n * cellRendererFramework: TextAlignLeftMiddleRenderer,\r\n * setErrors: (value: any,\r\n * data: any,\r\n * node: any,\r\n * colDef: any,\r\n * rowIndex: any,\r\n * gridApi: any) => {\r\n * return (value && value === 'TEST') ? 'Invalid name' : '';\r\n * },\r\n * validators: [ Validators.minLength(10) ],\r\n * errorMessageHeader: 'TestingTestingTesting',\r\n * errorNameErrorMessageMap: [\r\n * { errorName: 'minlength', errorMessage: 'Name is too short' }\r\n * ],\r\n * field: \"name\"\r\n * }\r\n *\r\n * To use with a new renderer, extend this class, do not override agInit, or call super.agInit(params) first.\r\n * (You can use agInit2 instead, called right after agInit).\r\n *\r\n * To display a tooltip with the error messages, include an element with a matTooltip pointing to this.errorMessage, like:\r\n * <div [matTooltip]=\"this.errorMessage\" [matTooltipShowDelay]=\"300\" [matTooltipHideDelay]=\"300\" ...\r\n * For cell highlighting, you can add a CSS class something like :\r\n * .error {\r\n * \tbackground: linear-gradient(rgba(255,0,0,0.25), rgba(255,0,0,0.25), rgba(255,0,0,0.25));\r\n * \tborder: solid red 2px;\r\n * }\r\n * and a conditional class on an element in the template, like :\r\n * class=\"{{this.errorMessage && this.errorMessage !== '' ? 'error' : ''}}\"\r\n */\r\nexport abstract class CellRendererValidation implements ICellRendererAngularComp {\r\n\r\n protected params: any;\r\n\r\n public errorMessage: string = \"\";\r\n\r\n formBuilder: UntypedFormBuilder;\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n this.formBuilder = new UntypedFormBuilder();\r\n\r\n if (this.params\r\n && this.params.node\r\n && this.params.node.gridApi\r\n && this.params.node.gridApi.formGroup === undefined) {\r\n\r\n let foundDelayValidationProperty: boolean = false;\r\n\r\n for (let columnDef of params.node.gridApi.columnController.columnDefs) {\r\n if (columnDef.delayValidation && columnDef.delayValidation === true) {\r\n foundDelayValidationProperty = true;\r\n }\r\n }\r\n\r\n if (!foundDelayValidationProperty) {\r\n this.determineIfAllRowsNeedValidationInAdvance();\r\n this.createAllFormControls();\r\n }\r\n }\r\n\r\n this.getErrorMessage();\r\n\r\n this.agInit2(params);\r\n }\r\n\r\n abstract agInit2(params): void;\r\n\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n // This function iterates over every cell in the grid and prepares all their needed formGroups and formControls.\r\n //\r\n // This was done this way (in the cell renderer) for three reasons :\r\n // 1. We need to wait until the column and row data have been provided to the grid\r\n // 2. We don't want the programmer to have to implement it themselves every time they create a grid\r\n // 3. The grid does not create all the cell renderers in advance, just those that fit on the screen\r\n // (plus a few nearby) meaning we can't just use the cell renderer's constructor, since we don't\r\n // know if the information we start with is valid on every screen, and because we have some calls\r\n // that send back the entire grid's worth of data.\r\n //\r\n // There may be a better way to do this, in which case this should probably be replaced!\r\n createAllFormControls(): void {\r\n if (this.params\r\n && this.params.column\r\n && this.params.column.colDef\r\n && this.params.data\r\n && this.params.node\r\n && this.params.node.gridApi\r\n && this.params.node.gridApi.getModel()) {\r\n\r\n if (this.params.node.gridApi.gridOptionsWrapper\r\n && this.params.node.gridApi.gridOptionsWrapper.gridOptions\r\n && !this.params.node.gridApi.gridOptionsWrapper.gridOptions._eventsChangedByCellRendererValidation) {\r\n\r\n this.changeGridOptionsEvents();\r\n\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions._eventsChangedByCellRendererValidation = true;\r\n }\r\n\r\n let allNodes = [];\r\n\r\n if (this.params.node.gridApi.mode_needToValidateOnlyRenderedCells) {\r\n allNodes = this.params.node.gridApi.getRenderedNodes();\r\n } else {\r\n allNodes = this.params.node.gridApi.getModel().rowsToDisplay;\r\n }\r\n\r\n if (!this.params.node.gridApi.formGroup\r\n || (this.params.node.gridApi.formGroup\r\n && this.params.node.gridApi.formGroup.controls\r\n && this.params.node.gridApi.formGroup.controls.length != allNodes.length)) {\r\n\r\n this.params.node.gridApi.formGroup = new UntypedFormGroup({});\r\n }\r\n\r\n if (this.params.node.gridApi.columnController\r\n && this.params.node.gridApi.columnController.columnDefs) {\r\n\r\n for (let columnDef of this.params.node.gridApi.columnController.columnDefs) {\r\n if (columnDef.outerForm && columnDef.formName) {\r\n if (!columnDef.outerForm.get(columnDef.formName)) {\r\n columnDef.outerForm.addControl(columnDef.formName, this.params.node.gridApi.formGroup);\r\n } else {\r\n columnDef.outerForm.setControl(columnDef.formName, this.params.node.gridApi.formGroup);\r\n }\r\n }\r\n }\r\n }\r\n\r\n let columns: any[];\r\n\r\n if (this.params && this.params.columnApi && this.params.columnApi.columnController) {\r\n columns = this.params.columnApi.columnController.gridColumns.filter((column) => {\r\n return column.colDef\r\n && column.colDef.field\r\n && (column.colDef.validators || column.colDef.setErrors);\r\n });\r\n }\r\n\r\n for (let node of allNodes) {\r\n for (let column of columns) {\r\n if (column.colDef\r\n && column.colDef.field\r\n && (column.colDef.validators || column.colDef.setErrors)) {\r\n node[column.colDef.field + \"_errorMessage\"] = '';\r\n\r\n let formControl: UntypedFormControl = new UntypedFormControl(column.colDef.field + '_formControl', []);\r\n\r\n if (!node.formGroup) {\r\n node.formGroup = new UntypedFormGroup({});\r\n }\r\n\r\n node.formGroup.addControl(column.colDef.field + '_formControl', formControl);\r\n\r\n if (!Array.isArray(column.colDef.validators)) {\r\n column.colDef.validators = [column.colDef.validators];\r\n }\r\n\r\n formControl.setValidators(column.colDef.validators);\r\n\r\n this.updateErrorMessage(formControl, node, column.colDef);\r\n }\r\n }\r\n\r\n if (!this.params.node.gridApi.formGroup.contains('RowGroup_' + node.rowIndex)) {\r\n if (!node.formGroup) {\r\n node.formGroup = new UntypedFormGroup({});\r\n }\r\n this.params.node.gridApi.formGroup.addControl('RowGroup_' + node.rowIndex, node.formGroup);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private changeGridOptionsEvents(): void {\r\n if (!this.params\r\n || !this.params.node\r\n || !this.params.node.gridApi\r\n || !this.params.node.gridApi.gridOptionsWrapper\r\n || !this.params.node.gridApi.gridOptionsWrapper.gridOptions) {\r\n return;\r\n }\r\n\r\n if (this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged) {\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged2 = this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged;\r\n }\r\n\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged = ((event: any) => {\r\n this.createAllFormControls();\r\n this.fetchErrorMessagesForCurrentlyRenderedCells();\r\n\r\n if (this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged2) {\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onRowDataChanged2(event);\r\n }\r\n });\r\n\r\n\r\n if (this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged) {\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged2 = this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged;\r\n }\r\n\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged = ((event: any) => {\r\n this.determineIfAllRowsNeedValidationInAdvance();\r\n this.createAllFormControls();\r\n this.fetchErrorMessagesForCurrentlyRenderedCells();\r\n\r\n if (this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged2) {\r\n this.params.node.gridApi.gridOptionsWrapper.gridOptions.onGridColumnsChanged2(event);\r\n }\r\n });\r\n }\r\n\r\n private getErrorMessage(): void {\r\n if (this.params\r\n && this.params.node\r\n && this.params.node.formGroup\r\n && this.params.column\r\n && this.params.column.colDef\r\n && this.params.column.colDef.field) {\r\n\r\n let formControl = this.params.node.formGroup.get(this.params.column.colDef.field + '_formControl');\r\n\r\n this.updateErrorMessage(formControl, this.params.node, this.params.column.colDef);\r\n\r\n this.errorMessage = this.params.node[this.params.column.colDef.field + \"_errorMessage\"];\r\n }\r\n }\r\n\r\n private refreshFormControlValue(formControl: UntypedFormControl, data: any, fieldName: string): void {\r\n if (formControl && data && fieldName && data[fieldName] !== undefined) {\r\n formControl.setValue(data[fieldName]);\r\n formControl.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private updateErrorMessage(formControl: UntypedFormControl, node: any, columnDefinition: any): string {\r\n if (!formControl || !node || !columnDefinition) {\r\n return '';\r\n }\r\n\r\n let customErrorMessage: string = '';\r\n\r\n if (columnDefinition.setErrors) {\r\n customErrorMessage = columnDefinition.setErrors(\r\n node.data[columnDefinition.field],\r\n node.data,\r\n node,\r\n columnDefinition,\r\n node.rowIndex,\r\n node.gridApi\r\n );\r\n }\r\n\r\n let errorMessageName: string = columnDefinition.field + \"_errorMessage\";\r\n\r\n this.refreshFormControlValue(formControl, node.data, columnDefinition.field);\r\n\r\n node[errorMessageName] = '';\r\n\r\n if (formControl.invalid || (customErrorMessage && customErrorMessage !== '')) {\r\n if (columnDefinition.errorMessageHeader) {\r\n node[errorMessageName] += '' + columnDefinition.errorMessageHeader + '\\n';\r\n } else {\r\n node[errorMessageName] +=\r\n 'Invalid value \"' + node.data[columnDefinition.field] + '\" for field (' + columnDefinition.field + ')\\n';\r\n }\r\n }\r\n\r\n if (columnDefinition.errorNameErrorMessageMap) {\r\n if (!Array.isArray(columnDefinition.errorNameErrorMessageMap)) {\r\n columnDefinition.errorNameErrorMessageMap = [columnDefinition.errorNameErrorMessageMap];\r\n }\r\n\r\n for (let errorNameErrorMessagePair of columnDefinition.errorNameErrorMessageMap) {\r\n if (!!errorNameErrorMessagePair.errorName && !!errorNameErrorMessagePair.errorMessage) {\r\n if (formControl.hasError(errorNameErrorMessagePair.errorName)) {\r\n node[errorMessageName] += errorNameErrorMessagePair.errorMessage +'\\n';\r\n }\r\n }\r\n }\r\n }\r\n\r\n node[errorMessageName] += customErrorMessage;\r\n\r\n return node[errorMessageName];\r\n }\r\n\r\n protected determineIfAllRowsNeedValidationInAdvance(): void {\r\n if (this.params\r\n && this.params.node\r\n && this.params.node.gridApi\r\n && this.params.columnApi\r\n && this.params.columnApi.columnController\r\n && this.params.columnApi.columnController.gridColumns) {\r\n\r\n let columns = this.params.columnApi.columnController.gridColumns.filter((column) => {\r\n return column.colDef\r\n && column.colDef.field\r\n && (column.colDef.validators || column.colDef.setErrors)\r\n && column.colDef.editable === true\r\n && !(column.colDef.validateOnlyRenderedCells\r\n && column.colDef.validateOnlyRenderedCells === true);\r\n });\r\n\r\n this.params.node.gridApi.mode_needToValidateOnlyRenderedCells = Array.isArray(columns) && columns.length === 0;\r\n }\r\n }\r\n\r\n protected fetchErrorMessagesForCurrentlyRenderedCells(): void {\r\n if (this.params\r\n && this.params.node\r\n && this.params.node.gridApi) {\r\n\r\n let getCellRendererParams: any = { rowNodes: this.params.node.gridApi.getRenderedNodes() };\r\n\r\n for (let cellRenderer of this.params.node.gridApi.getCellRendererInstances(getCellRendererParams)) {\r\n if (cellRenderer._agAwareComponent && cellRenderer._agAwareComponent.getErrorMessage) {\r\n cellRenderer._agAwareComponent.getErrorMessage();\r\n }\r\n }\r\n }\r\n }\r\n\r\n public updateValidation(): void {\r\n console.log(\"Successfully reached!\");\r\n // add this form control\r\n\r\n let columns = this.params.columnApi.columnController.gridColumns.filter((column) => {\r\n return column.colDef\r\n && column.colDef.field\r\n && (column.colDef.validators || column.colDef.setErrors)\r\n && column.colDef.field === this.params.field;\r\n });\r\n\r\n if (this.params.colDef\r\n && this.params.colDef.field\r\n && (this.params.colDef.validators || this.params.colDef.setErrors)) {\r\n\r\n this.params.node[this.params.colDef.field + \"_errorMessage\"] = '';\r\n\r\n let formControl: UntypedFormControl = new UntypedFormControl(this.params.colDef.field + '_formControl', []);\r\n\r\n if (!this.params.node.formGroup) {\r\n this.params.node.formGroup = new UntypedFormGroup({});\r\n\r\n if (!this.params.node.gridApi.formGroup) {\r\n this.params.node.gridApi.formGroup = new UntypedFormGroup({});\r\n } else {\r\n // check for any removed nodes & remove their validators if needed.\r\n for (let controlName of Object.keys(this.params.node.gridApi.formGroup.controls)) {\r\n if (('' + controlName).toLowerCase().substr(0, 9) === 'rowgroup_') {\r\n let found: boolean = false;\r\n for (let node of this.params.node.gridApi.getModel().rowsToDisplay) {\r\n if (('' + node.rowIndex) === ('' + controlName).substr(9)) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n this.params.node.gridApi.formGroup.removeControl(controlName);\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n this.params.node.gridApi.formGroup.addControl('RowGroup_' + this.params.node.rowIndex, this.params.node.formGroup);\r\n }\r\n\r\n if (!this.params.node.formGroup.controls[this.params.colDef.field + '_formControl']) {\r\n this.params.node.formGroup.addControl(this.params.colDef.field + '_formControl', formControl);\r\n\r\n if (Array.isArray(this.params.colDef.validators)) {\r\n this.params.node.formGroup.controls[this.params.colDef.field + '_formControl'].setValidators(this.params.colDef.validators);\r\n }\r\n\r\n if (this.params.node.gridApi.columnController\r\n && this.params.node.gridApi.columnController.columnDefs) {\r\n\r\n for (let columnDef of this.params.node.gridApi.columnController.columnDefs) {\r\n if (columnDef.outerForm && columnDef.formName) {\r\n if (!columnDef.outerForm.get(columnDef.formName)) {\r\n columnDef.outerForm.addControl(columnDef.formName, this.params.node.gridApi.formGroup);\r\n } else {\r\n columnDef.outerForm.setControl(columnDef.formName, this.params.node.gridApi.formGroup);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.updateErrorMessage(formControl, this.params.node, this.params.colDef);\r\n }\r\n\r\n // add column control groups if needed\r\n // add row control groups if needed\r\n // setup grid control group if needed\r\n // Might need to trigger cell validation to run with the new validation.\r\n }\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport { ICellRendererAngularComp } from \"ag-grid-angular\";\r\nimport {CellRendererValidation} from \"./cell-renderer-validation\";\r\n\r\n@Component({\r\n\ttemplate: `\r\n <!--<div [matTooltip]=\"this.errorMessage\"\r\n [matTooltipShowDelay]=\"300\"\r\n [matTooltipHideDelay]=\"300\"\r\n class=\"full-width full-height {{this.errorMessage && this.errorMessage !== '' ? 'error' : ''}}\">-->\r\n\t\t<div class=\"full-width full-height {{this.errorMessage && this.errorMessage !== '' ? 'error' : ''}}\">\r\n\t\t\t<div class=\"t full-width full-height fix-table\">\r\n\t\t\t\t<div class=\"tr\">\r\n\t\t\t\t\t<div class=\"td cell-text-container ellipsis\">\r\n\t\t\t\t\t\t{{display}}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t`,\r\n\tstyles: [`\r\n\t\t.t { display: table; }\r\n\t\t.tr { display: table-row; }\r\n\t\t.td { display: table-cell; }\r\n\t\t\r\n\t\t.cell-text-container { \r\n\t\t\tvertical-align: middle;\r\n\t\t\tpadding-left: 0.3rem;\r\n\t\t}\r\n\t\t\r\n\t\t.full-width { width: 100%; } \r\n\t\t.full-height { height: 100%; }\r\n\r\n\t\t.fix-table { table-layout:fixed; }\r\n\r\n\t\t.ellipsis {\r\n\t\t\toverflow: hidden;\r\n\t\t\ttext-overflow: ellipsis;\r\n\t\t}\r\n\r\n\t\t.error {\r\n\t\t\tbackground: linear-gradient(rgba(255,0,0,0.25), rgba(255,0,0,0.25), rgba(255,0,0,0.25));\r\n\t\t\tborder: solid red 2px;\r\n\t\t}\r\n\t`]\r\n}) export class SelectRenderer extends CellRendererValidation implements ICellRendererAngularComp {\r\n\tvalue: string;\r\n\tdisplay: string;\r\n\toptions: any;\r\n\toptionsValueField: string;\r\n\toptionsDisplayField: string;\r\n\tdefaultDisplayField: string;\r\n\tdefaultDisplayValue: string;\r\n\tdefaultOption: any;\r\n\r\n\tagInit2(params: any): void {\r\n\t\tthis.options = [];\r\n\t\tthis.value = \"\";\r\n\t\tthis.optionsValueField = \"\";\r\n\t\tthis.optionsDisplayField = \"\";\r\n this.defaultDisplayField = \"\";\r\n this.defaultDisplayValue = \"\";\r\n\r\n\t\tif (this.params) {\r\n\t\t\tif(this.params.value) {\r\n this.value = this.params.value;\r\n\t\t\t}else {\r\n\t\t\t\tthis.value = \"\";\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif (this.params && this.params.column && this.params.column.colDef) {\r\n\t\t\tif (this.params.column.colDef.rendererOptions) {\r\n\t\t\t\tthis.options \t\t = this.params.column.colDef.rendererOptions;\r\n\t\t\t} else {\r\n this.options = this.params.column.colDef.selectOptions;\r\n\t\t\t}\r\n\t\t\tthis.optionsValueField = this.params.column.colDef.selectOptionsValueField;\r\n this.optionsDisplayField = this.params.column.colDef.selectOptionsDisplayField;\r\n this.defaultDisplayField = this.params.column.colDef.defaultDisplayField;\r\n this.defaultDisplayValue = this.params.column.colDef.defaultDisplayValue;\r\n }\r\n\t\tif (this.defaultDisplayField) {\r\n\t\t\tfor (let option of this.options) {\r\n\t\t\t\tif (option[this.defaultDisplayField] === this.defaultDisplayValue) {\r\n\t\t\t\t\tthis.defaultOption = option;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.value && this.value != \"\"\r\n\t\t\t\t&& this.options && this.options.length > 0\r\n\t\t\t\t&& this.optionsValueField && this.optionsValueField != \"\"\r\n\t\t\t\t&& this.optionsDisplayField && this.optionsDisplayField != \"\") {\r\n\r\n\t\t\tlet foundOption: boolean = false;\r\n\r\n\t\t\tfor (let option of this.options) {\r\n\t\t\t\tif (option[this.optionsValueField] && option[this.optionsValueField] === this.value) {\r\n\t\t\t\t\tif (option[this.optionsDisplayField]) {\r\n\t\t\t\t\t\tthis.display = option[this.optionsDisplayField];\r\n foundOption = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.display = this.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// if we didn't find the item in the dictionary, check if the items are strings in different cases\r\n if (!foundOption) {\r\n for (let option of this.options) {\r\n if (option[this.optionsValueField] && (\"\" + option[this.optionsValueField]).toLowerCase() === (\"\" + this.value).toLowerCase()) {\r\n if (option[this.optionsDisplayField]) {\r\n this.display = option[this.optionsDisplayField];\r\n foundOption = true;\r\n } else {\r\n this.display = this.value;\r\n }\r\n break;\r\n }\r\n }\r\n\t\t\t}\r\n\r\n\t\t\t// if we still didn't find the item, at least display the id.\r\n\t\t\tif (!foundOption) {\r\n this.display = this.value;\r\n\t\t\t}\r\n } else if (this.defaultOption && this.value != \"\") {\r\n this.display = this.defaultOption[this.optionsDisplayField];\r\n } else {\r\n\t\t\tthis.display = this.value;\r\n\t\t}\r\n\t}\r\n\r\n refresh(): boolean {\r\n\t\treturn false;\r\n\t}\r\n}\r\n","import {Component, OnDestroy} from \"@angular/core\";\r\nimport {ICellEditorAngularComp} from \"ag-grid-angular\";\r\n//import {MatDialog, MatDialogConfig, MatDialogRef} from \"@angular/material/dialog\";\r\n//import {SpinnerDialogComponent} from \"../popup/spinner-dialog.component\";\r\n\r\n@Component(\r\n {\r\n template:\r\n `\r\n <div class=\"full-width full-height flex-column-container\">\r\n <div class=\"full-height flex-stretch flex-row\">\r\n <select class=\"full-width full-height\" [(value)]=\"value\" (change)=\"onChange($event)\">\r\n <option hidden>\r\n Select An Option\r\n </option>\r\n <option\r\n *ngFor=\"let option of options\"\r\n value=\"{{option.hasOwnProperty(optionsValueField) ? option[optionsValueField] : (option.value) ? option.value : option }}\">\r\n {{option.hasOwnProperty(optionsDisplayField) ? option[optionsDisplayField] : (option.display) ? option.display : option }}\r\n </option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"showFillButton\" class=\"full-height flex-row button-container\">\r\n <button riRippleEffectDict class=\"full-height\" (click)=\"onFillButtonClicked()\">Fill</button>\r\n </div>\r\n </div>\r\n `\r\n ,\r\n styles: [\r\n `\r\n .full-width {\r\n width: 100%;\r\n }\r\n\r\n .full-height {\r\n height: 100%;\r\n }\r\n\r\n .flex-column-container {\r\n display: flex;\r\n flex-direction: row;\r\n }\r\n\r\n .flex-row {\r\n display: flex;\r\n }\r\n\r\n .flex-stretch {\r\n display: flex;\r\n flex: 1;\r\n }\r\n `\r\n ]\r\n }\r\n)\r\nexport class SelectEditor implements ICellEditorAngularComp, OnDestroy {\r\n public params: any;\r\n public value: any;\r\n private _options: any[];\r\n public get options(): any[] {\r\n if (this.using_selectOptionsPerRowFilterFunction) {\r\n return this._filteredOptions;\r\n } else {\r\n return this._options;\r\n }\r\n }\r\n public set options(value: any[]) {\r\n this._options = value;\r\n }\r\n\r\n public optionsValueField: string;\r\n public optionsDisplayField: string;\r\n\r\n // variables used for the optional per-row-filtering\r\n public context: any;\r\n protected using_selectOptionsPerRowFilterFunction: boolean = false;\r\n protected selectOptionsPerRowFilterFunction: (context: any, rowData: any, option: any) => boolean;\r\n private _filteredOptions: any[];\r\n\r\n\r\n\r\n public gridValueField: string;\r\n\r\n public showFillButton: boolean;\t\t// This represents whether the editor should show the \"Fill\" button,\r\n // which is used to copy the value of this cell to other cells in this column in the grid\r\n public fillGroupAttribute: string;\t\t// This attribute is used to specify which \"Group\" a particular\r\n // row belongs to, which is used when the fill button is active.\r\n // When clicked, the fill button will copy the data in that cell\r\n // to the corresponding cells in rows of the same group.\r\n public fillAll: boolean; // If fillAll is set, all data will automatically be grouped together\r\n\r\n private _spinnerDialogIsOpen: boolean = false;\r\n// private spinnerDialogRefs: MatDialogRef<SpinnerDialogComponent>[] = [];\r\n\r\n constructor(/*protected dialog: MatDialog*/) { }\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n this.options = [];\r\n this.optionsValueField = \"\";\r\n this.optionsDisplayField = \"\";\r\n\r\n if (this.params && this.params.column && this.params.column.colDef) {\r\n this.gridValueField = this.params.column.colDef.field;\r\n\r\n this.options = this.params.column.colDef.selectOptions;\r\n this.optionsValueField = this.params.column.colDef.selectOptionsValueField;\r\n this.optionsDisplayField = this.params.column.colDef.selectOptionsDisplayField;\r\n\r\n if (this.params.column.colDef.selectOptionsPerRowFilterFunction) {\r\n let backup = this.selectOptionsPerRowFilterFunction;\r\n try {\r\n this.selectOptionsPerRowFilterFunction = this.params.column.colDef.selectOptionsPerRowFilterFunction;\r\n this.using_selectOptionsPerRowFilterFunction = !!this.selectOptionsPerRowFilterFunction;\r\n } catch (e) {\r\n console.error(\"selectOptionsPerRowFilterFunction option has wrong signature for column : \" + this.params.column.colDef.headerName + \"\\n\"\r\n + \" Requires signature (context:any, rowData: any, option: any) => boolean\"\r\n );\r\n this.selectOptionsPerRowFilterFunction = backup;\r\n this.using_selectOptionsPerRowFilterFunction = !!backup;\r\n }\r\n }\r\n\r\n this.context = this.params.column.colDef.context;\r\n\r\n this.fillGroupAttribute = this.params.column.colDef.fillGroupAttribute;\r\n this.fillAll = this.params.column.colDef.fillAll && (\"\" + this.params.column.colDef.fillAll).toLowerCase() !== \"false\";\r\n\r\n this.showFillButton = this.params.column.colDef.showFillButton && (\"\" + this.params.column.colDef.showFillButton).toLowerCase() !== \"false\";\r\n\r\n if (this._options\r\n && this.params.node\r\n && this.params.node.data\r\n && this.using_selectOptionsPerRowFilterFunction) {\r\n\r\n this._filteredOptions = this._options.filter((option: any) => {\r\n return this.selectOptionsPerRowFilterFunction(this.context, this.params.node.data, option);\r\n });\r\n }\r\n }\r\n\r\n if (this.params) {\r\n this.value = this.params.value ? \"\" + this.params.value : \"\";\r\n }\r\n\r\n if (this.showFillButton && !this.fillAll && (!this.fillGroupAttribute || this.fillGroupAttribute === \"\")) {\r\n throw new Error(\"Invalid state, cannot use fill button without specifying the fillGroupAttribute or fillAll.\");\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.params && this.params.node && this.params.node[(this.gridValueField + \"_originalValue\")]) {\r\n this.value = this.params.node[(this.gridValueField + \"_originalValue\")];\r\n }\r\n }\r\n\r\n onChange(event: any): void {\r\n if (event && event.currentTarget) {\r\n\r\n if (this.params && this.params.node && !this.params.node[(this.gridValueField + \"_originalValue\")]) {\r\n this.params.node[(this.gridValueField + \"_originalValue\")] = this.value;\r\n }\r\n\r\n // This looks unnecessary, since this.value is linked to the value of the select component, but\r\n // because this also ends editing, it also queues the destruction of this component and the call to getValue.\r\n // The problem was that this.value isn't updated with the new value before this event fires,\r\n // so we need to update it manually here.\r\n this.value = event.currentTarget.value;\r\n this.params.node.setDataValue(this.gridValueField, this.value);\r\n }\r\n if (this.params) {\r\n\r\n // If the fill button, which is part of the editor, is activated, don't stop editing\r\n // immediately after making a selection.\r\n if (!this.showFillButton) {\r\n this.params.stopEditing();\r\n }\r\n }\r\n }\r\n\r\n getValue(): any {\r\n return this.value ? this.value : \"\";\r\n }\r\n\r\n isPopup(): boolean {\r\n return false;\r\n }\r\n\r\n onFillButtonClicked(): void {\r\n if (!this.fillAll && (!this.fillGroupAttribute || this.fillGroupAttribute === \"\")) {\r\n throw new Error('No column attribute \"fillGroupAttribute\" or \"fillAll\" specified. This is required to use the Fill functionality.');\r\n }\r\n\r\n if (this.params && this.params.column && this.params.column.gridApi && this.params.node && (this.fillAll || (this.fillGroupAttribute && this.fillGroupAttribute !== \"\"))) {\r\n let thisRowNode = this.params.node;\r\n\r\n //this.startSpinnerDialog();\r\n this.params.column.gridApi.forEachNodeAfterFilter((rowNode) => {\r\n if (rowNode && rowNode.data && thisRowNode && thisRowNode.data && (this.fillAll || rowNode.data[this.fillGroupAttribute] === thisRowNode.data[this.fillGroupAttribute])) {\r\n let spoofedEvent: any = {\r\n api: this.params.column.gridApi,\r\n colDef: this.params.column.colDef,\r\n column: this.params.column,\r\n columnApi: this.params.column.columnApi,\r\n context: undefined,\r\n data: rowNode.data,\r\n event: null,\r\n newValue: this.value,\r\n node: rowNode,\r\n oldValue: rowNode.data[this.gridValueField],\r\n rowIndex: rowNode.rowIndex,\r\n rowPinned: undefined,\r\n type: \"cellValueChanged\",\r\n value: this.value\r\n };\r\n\r\n rowNode.data[this.gridValueField] = this.value;\r\n rowNode.setDataValue(this.gridValueField, this.value);\r\n this.params.column.gridApi.dispatchEvent(spoofedEvent);\r\n }\r\n });\r\n\r\n this.params.column.gridApi.refreshCells();\r\n setTimeout(() => {\r\n //this.stopSpinnerDialogs();\r\n });\r\n }\r\n }\r\n\r\n\t/*\r\n startSpinnerDialog(): MatDialogRef<SpinnerDialogComponent> {\r\n if (this._spinnerDialogIsOpen) {\r\n return null;\r\n }\r\n\r\n this._spinnerDialogIsOpen = true;\r\n\r\n let configuration: MatDialogConfig = new MatDialogConfig();\r\n configuration.data = {\r\n message: \"Please wait...\",\r\n strokeWidth: 3,\r\n diameter: 30\r\n };\r\n configuration.width = \"13em\";\r\n configuration.disableClose = true;\r\n\r\n let dialogRef: MatDialogRef<SpinnerDialogComponent> = this.dialog.open(SpinnerDialogComponent, configuration);\r\n dialogRef.afterClosed().subscribe(() => { this._spinnerDialogIsOpen = false; });\r\n this.spinnerDialogRefs.push(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n stopSpinnerDialogs(): void {\r\n for (let dialogRef of this.spinnerDialogRefs) {\r\n setTimeout(() => {\r\n dialogRef.close();\r\n });\r\n }\r\n this.spinnerDialogRefs = [];\r\n }\r\n\t*/\r\n}\r\n","import {Directive, ElementRef, Renderer2, HostListener, Input} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[riRippleEffectDict]'\r\n})\r\nexport class RIRippleEffectDictDirective {\r\n\r\n @Input()\r\n hostClass: string = 'ri-ripple-host';\r\n @Input()\r\n rippleClass: string = 'ri-ripple-effect-container';\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n const hostElement = this.el.nativeElement;\r\n this.renderer.addClass(hostElement, this.hostClass);\r\n }\r\n\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n const hostElement = this.el.nativeElement;\r\n\r\n const ripple = this.renderer.createElement('span');\r\n this.renderer.addClass(ripple, this.rippleClass);\r\n\r\n this.renderer.appendChild(hostElement, ripple);\r\n\r\n const styles = getComputedStyle(ripple);\r\n const animationDuration = styles.getPropertyValue(\"animation-duration\");\r\n const animationDurationInMs = Number(animationDuration.substr(0,animationDuration.length-1))*1000;\r\n const rect = hostElement.getBoundingClientRect();\r\n const left = event.pageX - rect.left;\r\n const top = event.pageY - rect.top;\r\n\r\n this.renderer.setStyle(ripple, 'left', `${left}px`);\r\n this.renderer.setStyle(ripple, 'top', `${top}px`);\r\n\r\n setTimeout(() => {\r\n this.renderer.removeChild(hostElement, ripple);\r\n }, animationDurationInMs);\r\n }\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {NgbActiveModal} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {GridApi, GridOptions, GridReadyEvent} from \"ag-grid-community\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"new-row\",\r\n template:\r\n `\r\n <div class=\"d-flex flex-column\" style=\"height:11em; width:58vw;\">\r\n <div class=\"d-flex flex-row\">\r\n <div class=\"flex-grow-1\"></div>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\"\r\n style=\"margin-right: 10px; width: 20px;\"\r\n (click)=\"activeModalSearch.dismiss('Cancel')\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"flex-grow-1\" style=\"padding-right: 8px; padding-left: 8px;\">\r\n <ag-grid-angular class=\"ag-theme-balham full-height full-width\"\r\n [rowData]=\"newRow\"\r\n [singleClickEdit]=\"true\"\r\n [gridOptions]=\"gridOptions\"\r\n (gridReady)=\"this.onSamplesGridReady($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n\r\n <div class=\"d-flex flex-row\" style=\"padding: 0.5em;\">\r\n <div class=\"flex-grow-1\"></div>\r\n <button riRippleEffectDict class=\"btn btn-red ms-3\"\r\n style=\"color: var(--white-lightest);\"\r\n (click)=\"activeModalSearch.dismiss('Cancel')\">\r\n Cancel\r\n </button>\r\n <button riRippleEffectDict class=\"btn btn-primary ms-3\"\r\n style=\"color: var(--white-lightest);\"\r\n (click)=\"save()\">\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n `\r\n ,\r\n styles: [\r\n `\r\n .full-height {\r\n height: 100%;\r\n }\r\n\r\n .full-width {\r\n width: 100%;\r\n }\r\n\r\n .ag-theme-balham{\r\n font-family: \"hci-font\";\r\n }\r\n\r\n :host ::ng-deep .ag-ltr .ag-cell {\r\n border-right-color: var(--grey-darkest);\r\n }\r\n `\r\n ]\r\n }\r\n)\r\nexport class NewRowComponent {\r\n public newRowSubject: Subject<any[]> = new Subject<any[]>();\r\n private _colDefs: any[];\r\n public get colDefs() {\r\n return this._colDefs;\r\n }\r\n\r\n public set colDefs(value: any[]) {\r\n this._colDefs = value;\r\n this.newRow[0][\"editOrNew\"] = \"new\"; //needed for editable function\r\n for (let colDef of this.colDefs) {\r\n this.newRow[0][colDef.field] = \"\";\r\n }\r\n }\r\n\r\n public newRow: any[] = [{}];\r\n dictionary: any;\r\n gridOptions: GridOptions;\r\n gridApi: GridApi;\r\n\r\n constructor(public activeModalSearch: NgbActiveModal) {\r\n this.gridOptions = <GridOptions>{\r\n context: {\r\n componentParent: this\r\n }\r\n };\r\n }\r\n\r\n public save() {\r\n // get contents of row\r\n //making sure the grid has stopped editing when user clicks save\r\n // waiting a tick to make sure that async event has finished\r\n this.gridApi.stopEditing();\r\n\r\n setTimeout(\r\n () => {\r\n let newData: any[] = [];\r\n\r\n this.gridApi.forEachNode(\r\n (node: any) => {\r\n newData.push(node.data);\r\n }\r\n );\r\n\r\n // validate the contents of row\r\n let isValid: boolean = true;\r\n\r\n for (let colDef of this.colDefs) {\r\n if (colDef.dictionaryDisplay == true && !newData[0][colDef.field]) {\r\n let displayDictField = null;\r\n\r\n if (this.gridOptions.context && this.gridOptions.context.componentParent\r\n && this.gridOptions.context.componentParent.dictionary) {\r\n let dictFields: any[] = this.gridOptions.context.componentParent.dictionary.fields;\r\n displayDictField = dictFields.find(field => (field.dictionaryDisplay === true));\r\n }\r\n\r\n //don't require displayField if it is readonly when making a new entry\r\n if (displayDictField && displayDictField.protectionType === \"Read Only\") {\r\n isValid = true;\r\n } else {\r\n isValid = false;\r\n }\r\n }\r\n }\r\n\r\n if (isValid) {\r\n // send contents of row to other ag-grid\r\n this.newRowSubject.next(newData);\r\n this.activeModalSearch.dismiss(\"Cancel\");\r\n } else {\r\n // signal they need to fill out the row\r\n alert(\"The display value is required, please enter a value and then save again.\");\r\n }\r\n }\r\n );\r\n }\r\n\r\n public onSamplesGridReady(event: GridReadyEvent): void {\r\n event.api.setColumnDefs(this.colDefs);\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n }\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {CellRendererValidation} from \"./cell-renderer-validation\";\r\nimport {ICellRendererAngularComp} from \"ag-grid-angular\";\r\nimport * as moment from \"moment\";\r\nimport {DatePipe} from \"@angular/common\";\r\n\r\n\r\n@Component({\r\n template: `\r\n <div class=\"t full-width full-height fix-table\">\r\n <div class=\"tr\">\r\n <div class=\"td cell-text-container ellipsis\">\r\n {{display}}\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .t { display: table; }\r\n .tr { display: table-row; }\r\n .td { display: table-cell; }\r\n\r\n .cell-text-container {\r\n vertical-align: middle;\r\n padding-left: 0.3rem;\r\n }\r\n\r\n .full-width { width: 100%; }\r\n .full-height { height: 100%; }\r\n\r\n .fix-table { table-layout:fixed; }\r\n\r\n .ellipsis {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n `]\r\n})\r\nexport class DateRenderer extends CellRendererValidation implements ICellRendererAngularComp {\r\n\r\n value: Date;\r\n display: string;\r\n\r\n constructor(protected datePipe: DatePipe) {\r\n super();\r\n }\r\n\r\n agInit2(params: any): void {\r\n this.value = undefined;\r\n\r\n if (this.params) {\r\n if(this.params.value) {\r\n this.value = this.params.value;\r\n } else {\r\n this.value = undefined;\r\n }\r\n }\r\n\r\n this.display = this.getDateString(this.value);\r\n }\r\n\r\n getDateString(date: any): string {\r\n\r\n if (date instanceof Date) {\r\n if (!isNaN(date.getTime())) {\r\n return this.datePipe.transform(date, \"yyyy-MM-dd\");\r\n } else {\r\n return \"\";\r\n }\r\n }else if(moment.isMoment(date) ) {\r\n if(date.isValid()) {\r\n return date.format(\"YYYY-MM-DD\");\r\n }else {\r\n return \"\";\r\n }\r\n }else if(typeof date == \"number\") {\r\n if(date > 0) {\r\n let temp: Date = new Date(date);\r\n return this.datePipe.transform(temp, \"yyyy-MM-dd\");\r\n }else {\r\n return \"\";\r\n }\r\n }else if(typeof date == \"string\") {\r\n return date;\r\n }else {\r\n return \"\";\r\n }\r\n }\r\n\r\n refresh(): boolean {\r\n return false;\r\n }\r\n}\r\n","import {Component, EventEmitter, forwardRef, Input, Output} from \"@angular/core\";\r\nimport {MAT_DATE_LOCALE, MAT_DATE_FORMATS} from \"@angular/material/core\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"hci-dict-datepicker\",\r\n template: `\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <input matInput [matDatepicker]=\"picker\" class=\"form-control\" [placeholder]=\"placeholder\" [(ngModel)]=\"value\" (ngModelChange)=\"onChange($event)\"\r\n (blur)=\"onBlur($event)\" data-date-format=\"YYYY-MM-DD\"\r\n [ngStyle]=\"{'background-color':invalid ? 'red' : '#fff'}\" aria-label=\"hci-ng-input-date-picker\">\r\n <span class=\"input-group-text\" id=\"clearIcon\" (click)=\"clear()\"><i class=\"fas fa-times\"></i></span>\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"picker.open()\" style=\"height:32px; width:32px;\"><i class=\"fas fa-calendar-alt\"></i></button>\r\n <mat-datepicker panelClass=\"ag-custom-component-popup\" #picker ></mat-datepicker>\r\n </div>\r\n `,\r\n styles: [`\r\n #clearIcon {\r\n cursor: pointer;\r\n }\r\n #clearIcon:Hover {\r\n background-color: rgb(73, 80, 87);\r\n color: rgb(233, 236, 239)\r\n }\r\n `],\r\n providers: [\r\n {provide: MAT_DATE_LOCALE, useValue: \"en-GB\"},\r\n {\r\n provide: MAT_DATE_FORMATS,\r\n useValue: {\r\n parse: {\r\n dateInput: [\"YYYY-MM-DD\"],\r\n },\r\n display: {\r\n dateInput: \"YYYY-MM-DD\",\r\n monthYearLabel: \"MMM YYYY\",\r\n dateA11yLabel: \"YYYY-MM-DD\",\r\n monthYearA11yLabel: \"MMMM YYYY\",\r\n },\r\n },\r\n },\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DatepickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DatepickerComponent implements ControlValueAccessor {\r\n //{provide: MAT_DATE_LOCALE, useValue: \"en-GB\"},\r\n // @Input() value: Date;\r\n value: Date;\r\n @Input() placeholder: string;\r\n @Input() invalid: boolean = false;\r\n\r\n // @Output() valueChange = new EventEmitter();\r\n\r\n onChange: any;\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n // onChange(newValue) {\r\n // this.value = newValue;\r\n // this.valueChange.emit(newValue);\r\n // }\r\n\r\n clear() {\r\n this.value = undefined;\r\n // this.valueChange.emit();\r\n }\r\n\r\n // Clear input field if entered data is invalid (Mat library sets value to null if invalid but doesn't clear input)\r\n onBlur(newValue) {\r\n\r\n if (!this.value) {\r\n this.value = undefined;\r\n // this.valueChange.emit();\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.onChange = () => {\r\n fn(this.value);\r\n };\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {}\r\n\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {ICellEditorAngularComp} from \"ag-grid-angular\";\r\n\r\n@Component({\r\n selector: \"ag-grid-date-cell-editor\",\r\n template: `\r\n <hci-dict-datepicker [(ngModel)]=\"value\" placeholder=\"Select Date\"></hci-dict-datepicker>\r\n\r\n `\r\n})\r\nexport class AgGridDateCellEditorComponent implements ICellEditorAngularComp {\r\n public value: any;\r\n params: any;\r\n\r\n agInit(params: any): void {\r\n console.log(\"agInit Date Picker\");\r\n console.log(params);\r\n this.params = params;\r\n this.value = this.params.value;\r\n }\r\n\r\n getValue() {\r\n return this.value;\r\n }\r\n\r\n isPopup(): boolean {\r\n return true;\r\n };\r\n}\r\n","import {Component, Inject, isDevMode, ViewChild, HostBinding, TemplateRef} from \"@angular/core\";\r\nimport {ActivatedRoute} from \"@angular/router\";\r\n\r\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\r\nimport {finalize, map, takeUntil} from 'rxjs/operators';\r\nimport {NgbModal, NgbModalRef} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {DICTIONARY_ENDPOINT, DictionaryService} from '@huntsman-cancer-institute/dictionary-service';\r\n\r\nimport {\r\n ColumnApi,\r\n GridOptions,\r\n GridReadyEvent,\r\n GridApi\r\n} from \"ag-grid-community\";\r\nimport {SelectRenderer} from \"../grid-renderers/select.renderer\";\r\nimport {SelectEditor} from \"../grid-editors/select.editor\";\r\nimport {NewRowComponent} from \"./new-row.component\";\r\nimport {isNullOrUndefined} from \"util\";\r\nimport {DateRenderer} from \"../grid-renderers/date.renderer\";\r\nimport {AgGridDateCellEditorComponent} from \"../grid-editors/ag-grid-date-cell-editor.component\";\r\n\r\n/**\r\n * When a dictionary is selected this component is shown. There is a top grid which for its data shows all the columns\r\n * for the dictionary. Currently, keep this for reference only and have non-editable.\r\n * The bottom grid will show those columns as actual columns and its data are all the dictionary values. Rows can be\r\n * added. For deleting, need to make sure the id is not used anywhere. For editing, need to make sure the code or anything\r\n * else isn't being referenced.\r\n *\r\n * @since 1.0.0\r\n */\r\n@Component(\r\n {\r\n selector: \"hci-dictionary-editor-detail\",\r\n template:\r\n `\r\n <div class=\"d-flex flex-column hci-dictionary-detail-body\">\r\n <hci-busy [busySubjects]=\"loadingSubjects\"></hci-busy>\r\n\r\n <!-- Dictionary Title And Metadata -->\r\n <div class=\"dictionary-info-section\">\r\n <span class=\"dictionary-title\">\r\n {{displayName}}\r\n </span>\r\n <button riRippleEffectDict class=\"btn btn-primary metadata-button\"\r\n (click)=\"openModal(metaDataModal)\">\r\n View Meta Data\r\n </button>\r\n </div>\r\n\r\n <!-- Dictionary Edit Buttons -->\r\n <div>\r\n <button [class]=\"disableDelete? 'deactivated-color': 'active-color'\"\r\n [disabled]=\"disableDelete\"\r\n (click)=\"openAreYouSureModal(areYouSureModal)\">\r\n <i class=\"fas fa-minus\"></i>\r\n </button>\r\n <button style=\"color: var(--bluewarm-darkest); float: right; font-size: 15px;\"\r\n [disabled]=\"disableAddRow\"\r\n (click)=\"onClickAddRow()\">\r\n <i class=\"fas fa-plus\"></i>\r\n </button>\r\n </div>\r\n\r\n <!-- Dictionary Display Grid -->\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <ag-grid-angular id=\"dictionary-grid-display\"\r\n #dataGrid\r\n class=\"ag-theme-balham full-height full-width hci-dictionary-display-grid\"\r\n [rowData]=\"dictionaryEntries\"\r\n [rowSelection]=\"'multiple'\"\r\n [singleClickEdit]=\"'true'\"\r\n [pagination]=\"'true'\"\r\n [paginationAutoPageSize]=\"'true'\"\r\n [gridOptions]=\"gridOptions\"\r\n (cellValueChanged)=\"updateDictionary($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n\r\n <!-- Dictionary Metadata Popup -->\r\n <ng-template #metaDataModal let-close=\"close\">\r\n <div style=\"width:1000px\">\r\n <div class=\"modal-header\">\r\n Meta Data for {{className}}\r\n </div>\r\n <div class=\"d-flex flex-column modal-body\"\r\n style=\"border: 1px solid #ced4da; width: 100%;\">\r\n <ag-grid-angular #metaGrid\r\n class=\"ag-theme-balham full-width\"\r\n style=\"height: 250px;\"\r\n (gridReady)=\"this.onMetaGridReady($event)\"\r\n [gridOptions]=\"this.metaGridOptions\"\r\n [rowSelection]=\"'single'\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"dictionary?.fields\">\r\n </ag-grid-angular>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button riRippleEffectDict class=\"btn btn-primary\" (click)=\"close('Close')\">Close</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Dictionary Delete Comfirmation Popup -->\r\n <ng-template #areYouSureModal let-close=\"close\">\r\n <div class=\"modal-header\">\r\n Confirmation\r\n </div>\r\n <div class=\"modal-body d-flex\">\r\n Are you sure?\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button riRippleEffectDict class=\"btn btn-primary\" (click)=\"close('Cancel')\">Cancel</button>\r\n <button riRippleEffectDict class=\"btn btn-primary btn-red\" (click)=\"close('Delete')\">Delete</button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .full-height {\r\n height: 100%;\r\n }\r\n\r\n .full-width {\r\n width: 100%;\r\n }\r\n\r\n .ag-theme-balham {\r\n font-family: \"hci-font\";\r\n font-weight: 500;\r\n }\r\n\r\n .active-color {\r\n float: right;\r\n font-size: 15px;\r\n color: var(--bluewarm-darkest);\r\n }\r\n\r\n .deactivated-color {\r\n float: right;\r\n font-size: 15px;\r\n color: var(--greywarm-darkest);\r\n }\r\n\r\n .dictionary-info-section {\r\n padding-top: 10px;\r\n }\r\n\r\n .dictionary-title {\r\n float: left;\r\n font-size: 16px;\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n padding-top: 5px;\r\n }\r\n\r\n .metadata-button {\r\n color: var(--white-lightest);\r\n float: left;\r\n font-size: 15px;\r\n }\r\n\r\n :host::ng-deep .ag-header-cell {\r\n background-color: var(--bluewarmvividfade-lightest);\r\n border: lightgray solid thin;\r\n }\r\n\r\n :host::ng-deep .ag-cell {\r\n border-right: lightgray solid thin;\r\n border-left: lightgray solid thin;\r\n }\r\n\r\n :host::ng-deep .ag-row {\r\n border-bottom: 0;\r\n border-top: 0;\r\n }\r\n\r\n :host::ng-deep .ag-row-even {\r\n background-color: var(--white-medium);\r\n }\r\n\r\n .hci-dictionary-detail-body {\r\n height: 100%;\r\n width: 100%;\r\n background: linear-gradient(0deg, var(--white-lightest) 30%, var(--bluewarmvividfade-lighter) 100%) !important;\r\n }\r\n\r\n .hci-dictionary-display-grid {\r\n padding-right: 5px;\r\n padding-left: 5px;\r\n box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;\r\n }\r\n\r\n /********************************************************************\r\n * Dictionary Row Hover CSS\r\n ********************************************************************/\r\n :host::ng-deep .ag-row-hover {\r\n color: var(--grey-darkest) !important;\r\n background-color: var(--bluewarmvividfade-lighter) !important;\r\n }\r\n\r\n /********************************************************************\r\n * Dictionary Cell Selected CSS\r\n ********************************************************************/\r\n :host::ng-deep .ag-row-selected .ag-cell {\r\n color: var(--white-lightest) !important;\r\n }\r\n\r\n :host::ng-deep .ag-row-selected .ag-cell-not-inline-editing {\r\n color: var(--white-lightest) !important;\r\n }\r\n\r\n :host::ng-deep .ag-row-selected .ag-cell-inline-editing {\r\n color: var(--black-darkest) !important;\r\n }\r\n\r\n /********************************************************************\r\n * Dictionary Row Selected CSS\r\n ********************************************************************/\r\n :host::ng-deep .ag-row-selected {\r\n color: var(--white-darkest) !important;\r\n background-color: var(--bluewarmvivid-lighter) !important;\r\n }\r\n `\r\n ]\r\n }\r\n)\r\nexport class DictionaryEditorDetailComponent {\r\n\r\n @HostBinding(\"class\") classList: string = \"outlet-column y-auto\";\r\n\r\n private secondaryDictionaryEntries: any;\r\n className: string;\r\n displayName: any;\r\n dictionary: any;\r\n dictionaryEntries: any[] = [];\r\n dataColumns: any[];\r\n\r\n idColumn: string;\r\n selectedRows: any[] = [];\r\n loadingSubjects: BehaviorSubject<boolean>[] = [];\r\n halfLoaded: boolean = false;\r\n processingCall: boolean = false;\r\n callQueued: boolean = false;\r\n\r\n boundNewRowPostCall: (data: any) => Observable<any>;\r\n gridOptions: GridOptions;\r\n newRowSubscription: any;\r\n private destroy = new Subject<void>();\r\n\r\n metaGridOptions = {\r\n rowStyle: {\r\n \"font-family\": \"hci-font\"\r\n },\r\n enableCellTextSelection: true,\r\n ensureDomOrder: true\r\n };\r\n frameworkComponents: any;\r\n public gridApiMeta: GridApi;\r\n\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private modalService: NgbModal,\r\n private dictionaryService: DictionaryService,\r\n @Inject(DICTIONARY_ENDPOINT) private DictionaryEndpoint: string\r\n ) {\r\n\r\n this.gridOptions = <GridOptions>{\r\n context: {\r\n componentParent: this\r\n },\r\n onGridReady: DictionaryEditorDetailComponent.onSamplesGridReady,\r\n onGridSizeChanged: DictionaryEditorDetailComponent.onGridSizeChanged,\r\n suppressHorizontalScroll: false,\r\n selectionMode: \"multiple\",\r\n stopEditingWhenGridLosesFocus: true,\r\n enableSorting: true,\r\n enableFilter: true\r\n };\r\n }\r\n\r\n /**\r\n * Based on the route class name, make the call to fetch the dictionary data. Since this component is route based,\r\n * when the dictionary class in the route changes, this component is reloaded.\r\n */\r\n ngOnInit() {\r\n this.boundNewRowPostCall = this.newRowPost.bind(this);\r\n\r\n this.loadingSubjects.push(new BehaviorSubject<boolean>(false));\r\n\r\n this.route.params.subscribe(\r\n params => {\r\n\r\n let className: string = params[\"className\"];\r\n\r\n this.getDictionary(className);\r\n }\r\n );\r\n\r\n this.loadingSubjects[0].subscribe((value: boolean) => {\r\n if (value === true) {\r\n // A new call was made to be processed, process the call\r\n this.getDictionaryBegin(this.className);\r\n } else {\r\n // A call completed while another call was not queued, processing complete\r\n this.processingCall = false;\r\n }\r\n });\r\n }\r\n\r\n openModal(modal: TemplateRef<any>): void {\r\n\r\n this.modalService.open(modal, {windowClass: \"modal-xl\"}).result.then(\r\n (result) => {\r\n },\r\n (reason) => {\r\n }\r\n );\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n this.gridOptions.api.sizeColumnsToFit();\r\n }\r\n\r\n public columnDefMeta() : any[] {\r\n\r\n return [\r\n {field: \"name\", headerName: \"Name\", width: 175, sortable: true, resizable: true, editable: false},\r\n {field: \"description\", headerName: \"Description\", width: 250, sortable: true, resizable: true, editable: false},\r\n {field: \"id\", headerName: \"Id\", width: 60, sortable: true, resizable: true, editable: false},\r\n {field: \"type\", headerName: \"Type\", sortable: true, resizable: true, editable: false},\r\n {field: \"protectionType\", headerName: \"ProtectionType\", sortable: true, resizable: true, editable: false},\r\n {field: \"filterDictionaryClass\", headerName: \"FilterDictionaryClass\", width: 180, sortable: true, resizable: true, editable: false},\r\n {field: \"notNull\", headerName: \"NotNull\", sortable: true, resizable: true, editable: false},\r\n {field: \"integer\", headerName: \"Integer\", width: 75, sortable: true, resizable: true, editable: false},\r\n {field: \"min\", headerName: \"Min\", width: 60, sortable: true, resizable: true, editable: false},\r\n {field: \"max\", headerName: \"Max\", width: 60, sortable: true, resizable: true, editable: false},\r\n {field: \"fraction\", headerName: \"Fraction\", sortable: true, resizable: true, editable: false},\r\n {field: \"dictionaryTooltip\", headerName: \"DictionaryTooltip\", width: 200, sortable: true, resizable: true, editable: false},\r\n {field: \"dictionaryDisplay\", headerName: \"DictionaryDisplay\", width: 175, sortable: true, resizable: true, editable: false},\r\n {field: \"filterable\", headerName: \"Filterable\", sortable: true, resizable: true, editable: false},\r\n {field: \"displayName\", headerName: \"DisplayName\", width: 175, sortable: true, resizable: true, editable: false},\r\n {field: \"displayOrder\", headerName: \"DisplayOrder\", width: 60, sortable: true, resizable: true, editable: false},\r\n {field: \"cellStyle\", headerName: \"CellStyle\", sortable: true, resizable: true, editable: false},\r\n ]; // the widths for the last 2 could be wrong.\r\n\r\n }\r\n\r\n onMetaGridReady(params : any) {\r\n\r\n this.gridApiMeta = params.api;\r\n this.gridApiMeta.setColumnDefs(this.columnDefMeta());\r\n this.gridApiMeta.setRowData(this.dictionary?.fields);\r\n\r\n }\r\n\r\n openAreYouSureModal(modal: TemplateRef<any>): void {\r\n\r\n this.modalService.open(modal).result.then(\r\n (result) => {\r\n if (result === \"Delete\") {\r\n this.deleteDictionaryEntries();\r\n }\r\n },\r\n (reason) => {\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Determine if we are loading something, and then wait until it is done to .\r\n *\r\n * @param {string} className\r\n */\r\n getDictionary(className: string) {\r\n this.className = className;\r\n if (this.processingCall === false) {\r\n // Call is not being processed, process this call\r\n this.processingCall = true;\r\n this.loadingSubjects[0].next(true);\r\n } else {\r\n // A call is already being processed, queue a recall when it is complete\r\n this.callQueued = true;\r\n }\r\n }\r\n\r\n /**\r\n * Fetch the dictionary metadata and dictionary entries based upon the dictionary class name.\r\n *\r\n * @param {string} className\r\n */\r\n private getDictionaryBegin(className: string) {\r\n this.halfLoaded = false;\r\n // When Selecting A New Dictionary, Navigate To First Page\r\n if (this.gridOptions && this.gridOptions.api) {\r\n this.gridOptions.api.paginationGoToFirstPage();\r\n }\r\n this.dataColumns = undefined;\r\n\r\n this.destroy.next();\r\n this.destroy.complete();\r\n this.dictionaryService.getDictionary(className).pipe(\r\n takeUntil(this.destroy)\r\n ).subscribe((dictionary: Object) => {\r\n this.setUpDictionaryGrid(dictionary);\r\n }\r\n );\r\n\r\n this.getDictionaryEntries();\r\n }\r\n\r\n getDictionaryEntries(): void {\r\n\r\n this.dictionaryService.getDictionaryEntries(this.className).pipe(takeUntil(this.destroy)).subscribe(\r\n (dictionaryEntries: Object[]) => {\r\n this.dictionaryEntries = dictionaryEntries;\r\n this.gridOptions.api.setRowData(dictionaryEntries);\r\n this.gridOptions.api.sizeColumnsToFit();\r\n if (this.halfLoaded) {\r\n if (this.callQueued === true) {\r\n // A call completed while another call was queued so make that call now\r\n this.callQueued = false;\r\n this.getDictionaryBegin(this.className);\r\n } else {\r\n this.loadingSubjects[0].next(false);\r\n }\r\n } else {\r\n this.halfLoaded = true;\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Set the dictionary metadata. This is used to build the columns for the dictionary entries. The names, validation,\r\n * and filter classes build the column definition.\r\n *\r\n * @param dictionary\r\n */\r\n private setUpDictionaryGrid(dictionary: any): void {\r\n\r\n if (isDevMode()) {\r\n console.debug(\"DictionaryEditorDetailComponent.setDictionary\");\r\n console.debug(dictionary);\r\n }\r\n\r\n this.dictionary = dictionary;\r\n this.secondaryDictionaryEntries = [];\r\n let dictionaryClassNames = [];\r\n\r\n for (let field of dictionary.fields) {\r\n if (field.filterDictionaryClass) {\r\n dictionaryClassNames.push(field.filterDictionaryClass);\r\n }\r\n }\r\n\r\n this.getSecondaryDictionaries(dictionaryClassNames);\r\n }\r\n\r\n private getSecondaryDictionaries(dictionaryNames: string[]) {\r\n if (dictionaryNames.length == 0) {\r\n this.finishColumnSetup();\r\n } else {\r\n let dictionaryName = dictionaryNames.pop();\r\n this.dictionaryService.getDictionaryDropdownEntries(dictionaryName).pipe(\r\n takeUntil(this.destroy)\r\n ).subscribe(\r\n (response: any) => {\r\n this.secondaryDictionaryEntries.push({dictionaryName: dictionaryName, entries: response});\r\n this.getSecondaryDictionaries(dictionaryNames);\r\n }\r\n );\r\n }\r\n }\r\n\r\n private finishColumnSetup() {\r\n this.displayName = this.dictionary.displayName;\r\n\r\n // This establishes the readOnly functionality\r\n let cols: any[] = [];\r\n\r\n // Process Columns And Create Column Definition\r\n for (let field of this.dictionary.fields) {\r\n if (field.id && (isNullOrUndefined(field.code) || field.code == false)) {\r\n continue;\r\n }\r\n\r\n let col: any;\r\n\r\n if (field.filterDictionaryClass) {\r\n // this is a dropdown of another dictionary\r\n let options = this.secondaryDictionaryEntries.find(\r\n (a: any) => {\r\n return a.dictionaryName === field.filterDictionaryClass;\r\n }\r\n );\r\n\r\n col = {\r\n field: field.name,\r\n headerName: field.displayName,\r\n editable: this.isEditable.bind(this),\r\n cellRendererFramework: SelectRenderer,\r\n cellEditorFramework: SelectEditor,\r\n selectOptionsDisplayField: \"display\",\r\n selectOptionsValueField: \"id\",\r\n sortable: true,\r\n resizable: true,\r\n filter: true,\r\n filterValueGetter: this.comboFilterValueGetter,\r\n selectOptions: [],\r\n comparator: (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n return 0;\r\n }\r\n };\r\n\r\n if (options && options.entries) {\r\n col.selectOptions = options.entries.sort(\r\n (optionA, optionB) => {\r\n if (optionA && !optionB) {\r\n return 1;\r\n }\r\n\r\n if (optionB && !optionA) {\r\n return -1;\r\n }\r\n\r\n if (!optionA && !optionB) {\r\n return 0;\r\n }\r\n\r\n if (optionA.display.toLowerCase() > optionB.display.toLowerCase()) {\r\n return 1;\r\n } else if ((optionB.display.toLowerCase() > optionA.display.toLowerCase())) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n );\r\n\r\n col.comparator = (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n if (!options.entries) {\r\n return 0;\r\n }\r\n\r\n if (valueA && !valueB) {\r\n return 1;\r\n }\r\n\r\n if (valueB && !valueA) {\r\n return -1;\r\n }\r\n\r\n if (!valueA && !valueB) {\r\n return 0;\r\n }\r\n\r\n let optionA = options.entries.find((entry) => (\"\" + entry.id === \"\" + valueA));\r\n let optionB = options.entries.find((entry) => (\"\" + entry.id === \"\" + valueB));\r\n\r\n if (optionA && !optionB) {\r\n return 1;\r\n }\r\n\r\n if (optionB && !optionA) {\r\n return -1;\r\n }\r\n\r\n if (!optionA && !optionB) {\r\n return 0;\r\n }\r\n\r\n if (optionA.display.toLowerCase() > optionB.display.toLowerCase()) {\r\n return 1;\r\n } else if ((optionB.display.toLowerCase() > optionA.display.toLowerCase())) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n }\r\n\r\n col.cellStyle = params => {\r\n let column: any = {};\r\n\r\n for (let field of params.context.componentParent.dictionary.fields) {\r\n if (params.colDef.field == field.name) {\r\n column = field;\r\n }\r\n }\r\n\r\n if (params.data.editOrNew && params.data.editOrNew == \"new\") {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\") {\r\n return {color: \"#8a9499\"};\r\n }\r\n } else {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\" || column.createOnly ||\r\n column.protectionType == \"Create Only\" || column.code) {\r\n return {color: \"#8a9499\"};\r\n }\r\n }\r\n };\r\n\r\n col.displayOrder = field.displayOrder;\r\n col.dictionaryDisplay = field.dictionaryDisplay;\r\n col.dictionaryTooltip = field.dictionaryTooltip;\r\n\r\n // Set default filter as compare by text/number\r\n // col.filterRenderer = CompareFilterRenderer;\r\n } else if (field.type && field.type == \"Date\") {\r\n //date value\r\n col = {\r\n field: field.name,\r\n headerName: field.displayName,\r\n cellRendererFramework: DateRenderer,\r\n cellEditorFramework: AgGridDateCellEditorComponent,\r\n editable: this.isEditable.bind(this),\r\n sortable: true,\r\n resizable: true,\r\n filter: true,\r\n dictionaryDisplay: field.dictionaryDisplay\r\n };\r\n\r\n col.comparator = (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n let num = this.dateComparator(valueA, valueB);\r\n return isInverted ? -1 * num : num; //don't have to do anything with inverted?\r\n };\r\n\r\n col.cellStyle = params => {\r\n var column: any = {};\r\n for (let field of params.context.componentParent.dictionary.fields) {\r\n if (params.colDef.field == field.name) {\r\n column = field;\r\n }\r\n }\r\n\r\n if (params.data.editOrNew && params.data.editOrNew == \"new\") {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\") {\r\n return {color: \"#8a9499\"};\r\n }\r\n } else {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\" || column.createOnly ||\r\n column.protectionType == \"Create Only\" || column.code) {\r\n return {color: \"#8a9499\"};\r\n }\r\n }\r\n };\r\n\r\n col.displayOrder = field.displayOrder;\r\n } else {\r\n // this is a string value\r\n col = {\r\n field: field.name,\r\n headerName: field.displayName,\r\n editable: this.isEditable.bind(this),\r\n sortable: true,\r\n resizable: true,\r\n filter: true,\r\n dictionaryDisplay: field.dictionaryDisplay\r\n };\r\n\r\n col.comparator = (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n if (valueA && !valueB) {\r\n return 1;\r\n }\r\n\r\n if (valueB && !valueA) {\r\n return -1;\r\n }\r\n\r\n if (!valueA && !valueB) {\r\n return 0;\r\n }\r\n\r\n if (valueA.toLowerCase() > valueB.toLowerCase()) {\r\n return 1;\r\n } else if ((valueB.toLowerCase() > valueA.toLowerCase())) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n col.cellStyle = params => {\r\n var column: any = {};\r\n for (let field of params.context.componentParent.dictionary.fields) {\r\n if (params.colDef.field == field.name) {\r\n column = field;\r\n }\r\n }\r\n if (params.data.editOrNew && params.data.editOrNew == \"new\") {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\") {\r\n return {color: \"#8a9499\"};\r\n }\r\n } else {\r\n if (params.context.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\" || column.createOnly ||\r\n column.protectionType == \"Create Only\" || column.code) {\r\n return {color: \"#8a9499\"};\r\n }\r\n }\r\n };\r\n\r\n col.displayOrder = field.displayOrder;\r\n // Set default filter as compare by text/number\r\n // col.filterRenderer = CompareFilterRenderer;\r\n }\r\n\r\n cols.push(col);\r\n }\r\n\r\n // Now we need to sort the columns\r\n if (!this.dictionary.fields[0].hasOwnProperty(\"displayOrder\")) {\r\n // default case, no displayOrder\r\n cols = cols.sort(\r\n (a, b) => {\r\n if (!a.headerName && b.headerName) {\r\n return 1;\r\n } else if (!b.headerName && a.headerName) {\r\n return -1;\r\n } else if (a.dictionaryDisplay === true && b.dictionaryDisplay === false) {\r\n return -1;\r\n } else if (b.dictionaryDisplay === true && a.dictionaryDisplay === false) {\r\n return 1;\r\n } else if (a.dictionaryTooltip === true && b.dictionaryTooltip === false) {\r\n return -1;\r\n } else if (b.dictionaryTooltip === true && a.dictionaryTooltip === false) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n );\r\n\r\n } else {\r\n // DisplayOrder case\r\n // I think this works? Check later\r\n cols = cols.sort(\r\n (a, b) => {\r\n if (!a.headerName && b.headerName) {\r\n return 1;\r\n } else if (!b.headerName && a.headerName) {\r\n return -1;\r\n } else {\r\n return a.displayOrder - b.displayOrder;\r\n }\r\n }\r\n );\r\n }\r\n\r\n // After Columns Have Been Sorted\r\n // Dictionary Grid Will Sort The Grid Ascending Order By First Column\r\n if(cols && cols.length != 0) {\r\n cols[0].sort = \"asc\";\r\n }\r\n\r\n this.dataColumns = cols;\r\n if (Array.isArray(this.dataColumns) && this.gridOptions && this.gridOptions.api) {\r\n this.gridOptions.api.setColumnDefs(this.dataColumns);\r\n this.gridOptions.api.sizeColumnsToFit();\r\n }\r\n if (this.halfLoaded) {\r\n if (this.callQueued === true) {\r\n // A call completed while another call was queued so make that call now\r\n this.callQueued = false;\r\n this.getDictionaryBegin(this.className);\r\n } else {\r\n this.loadingSubjects[0].next(false);\r\n }\r\n } else {\r\n this.halfLoaded = true;\r\n }\r\n }\r\n\r\n isEditable(params): boolean {\r\n\r\n let isEditable: boolean;\r\n\r\n let column: any = {};\r\n for (let field of this.dictionary.fields) {\r\n if (params.colDef.field == field.name) {\r\n column = field;\r\n }\r\n }\r\n\r\n if (params.data.editOrNew && params.data.editOrNew == \"new\") {\r\n // console.log(\"new editable?\");\r\n isEditable = !(this.dictionary.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\");\r\n } else {\r\n // console.log(\"edit editable?\");\r\n isEditable = !(this.dictionary.readOnly || column.readOnly ||\r\n column.protectionType == \"Read Only\" || column.createOnly ||\r\n column.protectionType == \"Create Only\" || column.code);\r\n }\r\n\r\n return isEditable;\r\n }\r\n\r\n deleteDictionaryEntries(): void {\r\n\r\n let deleteRows: any[] = this.gridOptions.api.getSelectedRows();\r\n\r\n for (let deleteId of this.selectedRows) {\r\n for (let entry of this.dictionaryEntries) {\r\n if (entry[this.idColumn] === deleteId) {\r\n deleteRows.push(entry);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.dictionaryService.deleteDictionaryEntries(this.className, deleteRows).subscribe(\r\n (response: any) => {\r\n this.getDictionaryEntries();\r\n }\r\n );\r\n }\r\n\r\n updateDictionary(event: any): void {\r\n\r\n // Important to note this will not update cells to the demo but will when imported to CORE or other applications.\r\n this.dictionaryService.updateDictionaryEntries(this.className, [event.data]).subscribe(\r\n (data: any[]) => {\r\n this.getDictionaryEntries();\r\n }\r\n );\r\n }\r\n\r\n setSelectedEntries(): void {\r\n\r\n this.selectedRows = this.gridOptions.api.getSelectedRows();\r\n }\r\n\r\n newRowPost(data: any): Observable<any> {\r\n\r\n return this.dictionaryService.addDictionaryEntries(this.className, [data])\r\n .pipe(\r\n map(\r\n (data: Object[]) => {\r\n if (data && data.length === 1) {\r\n return <any>data[0];\r\n } else {\r\n return data;\r\n }\r\n }\r\n )\r\n );\r\n }\r\n\r\n public static onSamplesGridReady(event: GridReadyEvent): void {\r\n\r\n event.api.sizeColumnsToFit();\r\n }\r\n\r\n public static onGridSizeChanged(event: any) {\r\n\r\n if (event && event.api) {\r\n event.api.sizeColumnsToFit();\r\n }\r\n }\r\n\r\n public get disableAddRow(): boolean {\r\n\r\n if (!this.dictionary) {\r\n return true;\r\n }\r\n\r\n return this.dictionary.readOnly && this.dictionary.readOnly === true;\r\n }\r\n\r\n public get disableDelete(): boolean {\r\n\r\n if (!this.dictionary) {\r\n return true;\r\n }\r\n\r\n if (this.dictionary.readOnly && this.dictionary.readOnly === true) {\r\n return true;\r\n }\r\n\r\n if (this.gridOptions && this.gridOptions.api && this.gridOptions.api.getSelectedRows()) {\r\n return this.gridOptions.api.getSelectedRows().length === 0;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n private comboFilterValueGetter(params): any {\r\n\r\n let value = params.data[params.colDef.field];\r\n\r\n if (value) {\r\n let option = ((params.colDef as any).selectOptions as any[]).find((entry) => (entry[params.colDef.selectOptionsValueField] === value));\r\n return option ? option[params.colDef.selectOptionsDisplayField] : \"\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n onClickAddRow() {\r\n\r\n const modalRef = this.modalService.open(NewRowComponent,\r\n {\r\n size: \"lg\",\r\n keyboard: false,\r\n backdrop: \"static\",\r\n centered: true,\r\n }\r\n );\r\n\r\n modalRef.componentInstance.colDefs = this.dataColumns;\r\n modalRef.componentInstance.dictionary = this.dictionary;\r\n\r\n // if (!this.newRowSubscription) { // removed because it was preventing save after cancel\r\n // tell other ag-grid to add row to it\r\n this.newRowSubscription = modalRef.componentInstance.newRowSubject.subscribe(\r\n (theNewRow: any[]) => {\r\n this.dictionaryEntries = theNewRow.concat(this.dictionaryEntries);\r\n this.gridOptions.api.setRowData(this.dictionaryEntries);\r\n this.newRowSubscription = null;\r\n\r\n // Important to note this will not add rows to the demo but will when imported to CORE or other applications.\r\n this.newRowPost(theNewRow[0]).subscribe(\r\n () => {\r\n this.getDictionaryEntries();\r\n }\r\n );\r\n }\r\n );\r\n // }\r\n }\r\n\r\n /**\r\n * Comparater To Compare 2 Dates\r\n * @param date1 Date 1\r\n * @param date2 Date 2\r\n */\r\n dateComparator(date1, date2) {\r\n\r\n let date1Number = monthToComparableNumber(date1);\r\n let date2Number = monthToComparableNumber(date2);\r\n\r\n if (date1Number === null && date2Number === null) {\r\n return 0;\r\n }\r\n\r\n if (date1Number === null) {\r\n return -1;\r\n }\r\n\r\n if (date2Number === null) {\r\n return 1;\r\n }\r\n\r\n return date1Number - date2Number;\r\n }\r\n}\r\n\r\n/**\r\n * Extracts Date And Turn To A Numerical Value For Comparing Purposes\r\n * @param date The date to comparable number\r\n */\r\nfunction monthToComparableNumber(date) {\r\n\r\n if (date === undefined || date === null || date.length !== 10) {\r\n return null;\r\n }\r\n\r\n let yearNumber = date.substring(0, 4);\r\n let monthNumber = date.substring(5, 7);\r\n let dayNumber = date.substring(8, 10);\r\n\r\n return yearNumber * 10000 + monthNumber * 100 + dayNumber;\r\n}\r\n","import {ModuleWithProviders} from \"@angular/core\";\r\nimport {RouterModule, Routes} from \"@angular/router\";\r\n\r\nimport {RouteGuardService} from \"@huntsman-cancer-institute/authentication\";\r\n\r\nimport {DictionaryEditorComponent} from \"./dictionary-editor.component\";\r\nimport {DictionaryEditorHomeComponent} from \"./components/home.component\";\r\nimport {DictionaryEditorDetailComponent} from \"./components/detail.component\";\r\n\r\nexport const ROUTES: Routes = [\r\n {path: \"\", component: DictionaryEditorComponent,\r\n children: [\r\n {path: \"\", redirectTo: \"home\", pathMatch: \"full\"},\r\n {path: \"home\", component: DictionaryEditorHomeComponent},\r\n {path: \"detail/:className\", component: DictionaryEditorDetailComponent}\r\n ]\r\n }\r\n];\r\nexport const DICTIONARY_EDITOR_ROUTES: ModuleWithProviders<RouterModule> = RouterModule.forChild(ROUTES);\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\nimport { SelectRenderer } from \"./select.renderer\";\r\nimport {DateRenderer} from \"./date.renderer\";\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ],\r\n declarations: [\r\n\t\t SelectRenderer,\r\n DateRenderer\r\n ],\r\n exports: [\r\n SelectRenderer,\r\n DateRenderer\r\n ]\r\n})\r\nexport class AgGridRendererModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\n\r\nimport { AgGridModule } from \"ag-grid-angular\";\r\n\r\nimport {MatDatepickerModule} from \"@angular/material/datepicker\";\r\n\r\nimport { SelectEditor } from \"./select.editor\";\r\nimport {AgGridRendererModule} from \"../grid-renderers/ag-grid-renderer.module\";\r\nimport {DatepickerComponent} from \"./datepicker.component\";\r\nimport {AgGridDateCellEditorComponent} from \"./ag-grid-date-cell-editor.component\";\r\nimport {MomentDateModule} from \"@angular/material-moment-adapter\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n AgGridModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatDatepickerModule,\r\n MomentDateModule,\r\n AgGridRendererModule\r\n ],\r\n declarations: [\r\n SelectEditor,\r\n AgGridDateCellEditorComponent,\r\n DatepickerComponent\r\n ],\r\n exports: [\r\n SelectEditor,\r\n AgGridDateCellEditorComponent\r\n ]\r\n})\r\nexport class AgGridEditorModule { }\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {MiscModule} from \"@huntsman-cancer-institute/misc\";\r\nimport {NavigationModule} from \"@huntsman-cancer-institute/navigation\";\r\n\r\nimport {DICTIONARY_EDITOR_ROUTES} from \"./dictionary-editor.routes\";\r\nimport {DictionaryEditorComponent} from \"./dictionary-editor.component\";\r\nimport {DictionaryEditorHomeComponent} from \"./components/home.component\";\r\nimport {DictionaryEditorDetailComponent} from \"./components/detail.component\";\r\nimport {AgGridModule} from \"ag-grid-angular\";\r\nimport {AgGridEditorModule} from \"./grid-editors/ag-grid-editor.module\";\r\nimport {AgGridRendererModule} from \"./grid-renderers/ag-grid-renderer.module\";\r\nimport {SelectEditor} from \"./grid-editors/select.editor\";\r\nimport {SelectRenderer} from \"./grid-renderers/select.renderer\";\r\nimport {NewRowComponent} from \"./components/new-row.component\";\r\nimport {AgGridDateCellEditorComponent} from \"./grid-editors/ag-grid-date-cell-editor.component\";\r\nimport {DateRenderer} from \"./grid-renderers/date.renderer\";\r\nimport {RIRippleEffectDictDirective} from \"./directives/ri-ripple-effect-dict.directive\";\r\n\r\n/**\r\n * The module defining the dictionary editor.\r\n *\r\n * @since 1.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n DICTIONARY_EDITOR_ROUTES,\r\n NgbModule,\r\n NavigationModule,\r\n MiscModule,\r\n AgGridEditorModule,\r\n AgGridRendererModule,\r\n AgGridModule,\r\n ],\r\n declarations: [\r\n DictionaryEditorComponent,\r\n DictionaryEditorHomeComponent,\r\n DictionaryEditorDetailComponent,\r\n NewRowComponent,\r\n RIRippleEffectDictDirective\r\n ],\r\n exports: [\r\n DictionaryEditorComponent,\r\n DictionaryEditorHomeComponent,\r\n DictionaryEditorDetailComponent,\r\n RIRippleEffectDictDirective\r\n ]\r\n})\r\nexport class DictionaryEditorModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3.RIRippleEffectDictDirective","i3","i2.DatepickerComponent","i4","i5","i6.RIRippleEffectDictDirective"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huntsman-cancer-institute/dictionary-editor",
3
- "version": "17.9.0",
3
+ "version": "17.9.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git@gitlab.com:huntsman-cancer-institute/risr/ng/hci-ng-lib.git"