{"__symbolic":"module","version":4,"exports":[{"from":"./components/platform-multiselect"}],"metadata":{"highchartsModules":{"__symbolic":"function"},"WebPlatformCoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":159,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":161,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":162,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":163,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":164,"character":4},{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"BrowserAnimationsModule","line":165,"character":4},{"__symbolic":"reference","module":"ngx-webstorage","name":"Ng2Webstorage","line":166,"character":4},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":167,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/tabs","name":"TabsModule","line":168,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/dropdown","name":"BsDropdownModule","line":169,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":170,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/collapse","name":"CollapseModule","line":171,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ng2-toastr/ng2-toastr","name":"ToastModule","line":172,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/tooltip","name":"TooltipModule","line":173,"character":4},"member":"forRoot"}},{"__symbolic":"reference","module":"angular-highcharts","name":"ChartModule","line":174,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵs"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵw"},{"__symbolic":"reference","name":"TableauComponent"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","name":"ɵz"},{"__symbolic":"reference","name":"HighchartPlatformComponent"},{"__symbolic":"reference","name":"CanvasChartComponent"},{"__symbolic":"reference","name":"GenericBaseComponent"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵbb"},{"__symbolic":"reference","name":"ɵbc"},{"__symbolic":"reference","name":"PlatformTableComponent"},{"__symbolic":"reference","name":"PlatformTableXComponent"},{"__symbolic":"reference","name":"BaseChartDirective"},{"__symbolic":"reference","name":"ɵbd"},{"__symbolic":"reference","name":"ɵbe"},{"__symbolic":"reference","name":"ɵbf"},{"__symbolic":"reference","name":"ɵbg"},{"__symbolic":"reference","name":"ɵbh"}],"exports":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵs"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵw"},{"__symbolic":"reference","name":"TableauComponent"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","name":"ɵz"},{"__symbolic":"reference","name":"HighchartPlatformComponent"},{"__symbolic":"reference","name":"CanvasChartComponent"},{"__symbolic":"reference","name":"GenericBaseComponent"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵbb"},{"__symbolic":"reference","name":"ɵbc"},{"__symbolic":"reference","name":"PlatformTableComponent"},{"__symbolic":"reference","name":"PlatformTableXComponent"},{"__symbolic":"reference","name":"BaseChartDirective"},{"__symbolic":"reference","name":"ɵbd"},{"__symbolic":"reference","name":"ɵbe"},{"__symbolic":"reference","name":"ɵbg"},{"__symbolic":"reference","name":"ɵbh"}],"providers":[{"provide":{"__symbolic":"reference","module":"angular-highcharts","name":"HIGHCHARTS_MODULES","line":251,"character":15},"useFactory":{"__symbolic":"reference","name":"highchartsModules"}},{"__symbolic":"reference","name":"Adal5Service"},{"provide":{"__symbolic":"reference","name":"Adal5HTTPService"},"useFactory":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Adal5HTTPService"},"member":"factory"},"deps":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":253,"character":78},{"__symbolic":"reference","name":"Adal5Service"}]},{"__symbolic":"reference","name":"ObjectDiffFinderService"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"WebPlatformCoreModule"},"providers":[{"provide":{"__symbolic":"reference","module":"angular-highcharts","name":"HIGHCHARTS_MODULES","line":262,"character":19},"useFactory":{"__symbolic":"reference","name":"highchartsModules"}}]}}}},"Adal5User":{"__symbolic":"class","members":{}},"Adal5Service":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"init":[{"__symbolic":"method"}],"login":[{"__symbolic":"method"}],"loginInProgress":[{"__symbolic":"method"}],"logOut":[{"__symbolic":"method"}],"handleWindowCallback":[{"__symbolic":"method"}],"getCachedToken":[{"__symbolic":"method"}],"acquireToken":[{"__symbolic":"method"}],"getUser":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"clearCacheForResource":[{"__symbolic":"method"}],"info":[{"__symbolic":"method"}],"verbose":[{"__symbolic":"method"}],"GetResourceForEndpoint":[{"__symbolic":"method"}],"refreshDataFromCache":[{"__symbolic":"method"}],"updateDataFromCache":[{"__symbolic":"method"}]}},"Adal5HTTPService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":13,"character":18},{"__symbolic":"reference","name":"Adal5Service"}]}],"get":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"patch":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"head":[{"__symbolic":"method"}],"sendRequest":[{"__symbolic":"method"}],"handleError":[{"__symbolic":"method"}]},"statics":{"factory":{"__symbolic":"function","parameters":["http","service"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Adal5HTTPService"},"arguments":[{"__symbolic":"reference","name":"http"},{"__symbolic":"reference","name":"service"}]}}}},"GenericBaseComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseManagedDataWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"app-generic-base","template":"<p>\n  generic-base works!\n</p>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":33,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"onInitialize":[{"__symbolic":"method"}],"onFilterChange":[{"__symbolic":"method"}],"onManagedDataReply":[{"__symbolic":"method"}],"HandleMessages":[{"__symbolic":"method"}],"PostProcessing":[{"__symbolic":"method"}],"dateFormat":[{"__symbolic":"method"}]}},"PlatformTableComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":25,"character":1},"arguments":[{"selector":"app-platform-table","template":"<ng-template #filteringToolTip>\n\n    <div class=\"modal-header\">\n        <h4 class=\"modal-title pull-left\">Table tips</h4>\n        <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"hideModal(tooltipModalRef)\">\n            <span aria-hidden=\"true\">&times;</span>\n        </button>\n    </div>\n    <div class=\"modal-body\">\n\n        <span class=\"font-weight-bold\">Text Column Filtering:</span> Use the following patterns in the column filtering boxes for the example text 'abc'\n        <ul class=\"list-group\">\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">abc</span> : value starts with 'abc'.\n                <span class=\"font-weight-light\">Same as abc*</span>\n            </li>\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">abc*</span> : value starts with 'abc'</li>\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">*abc</span> : value ends with 'abc'</li>\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">*abc*</span> : value in column contains 'abc'</li>\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">=abc</span> : value in is 'abc'</li>\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">!abc</span> : value in is not 'abc'</li>\n        </ul>\n        <span class=\"font-weight-bold\">Numeric Column Filtering:</span> Use the following patterns in the column filtering boxes for the example value 100.\n        <ul class=\"list-group\">\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">=100</span> : value is 100</li>\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">!100</span> : value is not 100</li>\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">&gt;100</span> : value is greater than 100</li>\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">&gt;=100</span> : value is greater than or equal to 100</li>\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">&lt;100</span> : value is less than 100</li>\n            <li class=\"list-group-item\">\n                <span class=\"font-weight-bold\">&lt;=100</span> : value is less than or equal to 100</li>\n        </ul>\n    </div>\n    <div class=\"modal-footer\">\n        <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"hideModal(tooltipModalRef)\">Close</button>\n    </div>\n\n\n\n\n</ng-template>\n\n<div *ngIf=\"columns && columns.length > 0;  else loading\" class=\"table\">\n    <table class=\"\" [ngClass]=\"IsCustomTableClasses()\">\n        <tr *ngIf=\"!mergedConfig.hideHeaderRow\">\n            <td [attr.colspan]=\"TotalColumnCount()\">\n                <button type=\"button\" (click)=\"ToggleFilterSortRow()\" class=\"btn btn-sm\">\n                    <i class=\"fa fa-filter\"></i>\n                </button>\n                <button *ngIf=\"HasLocalFilters()\" type=\"button\" (click)=\"ClearFilters()\" class=\"btn btn-sm\">\n                    Clear filters\n                </button>\n                <button class=\"btn btn-sm case-sensitive\" [class.btn-success]=\"isCaseSensitive\" (click)=\"isCaseSensitive = !isCaseSensitive\">\n                    <span *ngIf=\"isCaseSensitive\" title=\"Case Sensitive\">case sensitive filtering</span>\n                    <span *ngIf=\"!isCaseSensitive\" title=\"Case Insensitive\">case insensitive filtering</span>\n                </button>\n\n                <button *ngIf=\"IsExportToCsvEnabled()\" type=\"button\" (click)=\"ExportToCsv()\" class=\"btn btn-sm\">\n                    <i class=\"fa fa-download\"></i>\n                    <span> Export to .csv</span>\n                </button>\n                <span class=\"label label-default\" (click)=\"ShowTooltip()\" placement=\"bottom\" style=\"cursor: pointer\">\n                    <i class=\"fa fa-info-circle fa-lg\"></i>\n                </span>\n                <span class=\"pull-right\">\n                    <span class=\"m-1\">Global Filter:</span>\n                    <input type=\"text\" style=\"width: 80px\" [ngModel]=\"filter\" (ngModelChange)=\"onGlobalFilterChange($event)\" placeholder=\"filter\" />\n                </span>\n            </td>\n        </tr>\n        <tr>\n            <th *ngIf=\"NeedsButtonColumn('start')\">{{getButtonColumnLabel()}}</th>\n            <th *ngFor=\"let column of columns; let colIdx = index\" [hidden]=\"hideColumn(colIdx)\">\n                {{column}}\n            </th>\n            <th *ngIf=\"NeedsButtonColumn('end')\">{{getButtonColumnLabel()}}</th>\n        </tr>\n        <tr *ngIf=\"filterRowVisible\">\n            <th *ngIf=\"NeedsButtonColumn('start')\">...</th>\n            <th style=\"min-width: 90px\" *ngFor=\"let column of columns; let colIdx = index \" [hidden]=\"hideColumn(colIdx)\">\n                <div class=\"input-group\">\n                    <input type=\"text\" style=\"min-width: 50px\" [ngModel]=\"filterlkp[column]\" (ngModelChange)=\"onFilterChange(column, $event)\"\n                        placeholder=\"filter\" />\n                    <i class=\"fa-sort-amount-asc fa btn btn-sm btn-secondary\" (click)=\"ToggleAndSort(column, $event)\"></i>\n                </div>\n            </th>\n            <th *ngIf=\"NeedsButtonColumn('end')\">...</th>\n        </tr>\n        <tr *ngIf=\"dropdownRowVisible\">\n            <th *ngIf=\"NeedsButtonColumn('start')\">...</th>\n            <th style=\"min-width: 90px\" *ngFor=\"let column of columns; let colIdx = index\" [hidden]=\"hideColumn(colIdx)\">\n                <div class=\"input-group\">\n                    <select name=\"dropDownColumn\" (change)=\"onDropdownChanged(column, $event.target.value)\">\n                        <option>(all)</option>\n                        <option *ngFor=\"let s of dropdowns[colIdx]\">{{s}}</option>\n                    </select>\n                    <i class=\"fa-sort-amount-asc fa btn btn-sm btn-secondary\" (click)=\"ToggleAndSort(column, $event)\"></i>\n                </div>\n            </th>\n            <th *ngIf=\"NeedsButtonColumn('end')\">...</th>\n        </tr>\n        <tr (mouseover)='ClientHover(rowIdx)' *ngFor=\"let row of PageOfRows(); let rowIdx = index\" [ngClass]=\"{ 'table-success': activeRowIdx == rowIdx }\">\n            <td *ngIf=\"NeedsButtonColumn('start')\" nowrap>\n                <div *ngIf=\"Config && Config.buttonNames && Config.buttonNames.length > 0; else tryButtonInfo\">\n                    <button *ngFor=\"let button of Config.buttonNames\" type=\"button\" class=\"btn btn-sm btn-outline-primary\" (click)=\"ClientButtonClick(button, rowIdx)\">{{button}}</button>\n                </div>\n            </td>\n            <ng-template #tryButtonInfo>\n                <div *ngIf=\"Config && Config.buttonInfoList && Config.buttonInfoList.length > 0\" nowrap>\n                    <button *ngFor=\"let buttonInfo of Config.buttonInfoList\" type=\"button\" class=\"btn btn-xs btn-outline-primary\" [ngClass]=\"getbuttonClassName(rowIdx, buttonInfo.name)\"\n                        (click)=\"ClientButtonInfoClick(buttonInfo, rowIdx)\" [tooltip]=\"getbuttonToolTip(rowIdx, buttonInfo.name)\"\n                        [delay]=\"100\">\n                        {{getbuttonText(rowIdx, buttonInfo.name)}}\n                        <i [ngClass]=\"getbuttonIconClassName(rowIdx, buttonInfo.name)\"></i>\n                    </button>\n                </div>\n            </ng-template>\n            <td class=\"td-inner-color-div\" *ngFor=\"let field of row; let colIdx = index\" [align]=\"getColAlign(colIdx)\" [hidden]=\"hideColumn(colIdx)\">\n                <div class=\"div-inner-td\">\n                    <div *ngIf=\"paretoColumns.indexOf(columns[colIdx]) > -1; else standardColumn;\">\n                        <div class=\"pareto-td-flex-row\">\n                            <div class=\"bg-dark p-10\" class=\"pareto-svg\">\n                                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" class=\"chart \" height=\"14px\"\n                                    role=\"img\" [attr.width]=\"GetCellScaledValue(rowIdx, colIdx) + '%'\">\n                                    <g class=\"bar\">\n                                        <rect class=\"text-info\" width=\"100%\" height=\"100%\" style=\"fill: currentColor;\" />\n                                    </g>\n                                </svg>\n                            </div>\n                            <div class=\"pareto-value\">\n                                &nbsp; {{RoundDecimalValue(rowIdx, colIdx, 3)}}\n                            </div>\n                        </div>\n                    </div>\n                    <ng-template #standardColumn>\n                        <div class=\"div-inner-td\" [ngStyle]=\"{'background-color': GetBgColorStyle(rowIdx, colIdx), 'color': GetFgColorStyle(rowIdx, colIdx) }\" [tooltip]=\"GetToolTip(rowIdx, colIdx)\">\n                            <a *ngIf=\"isValueClickLink(colIdx); else plainTd\" (click)=\"onValueClick(colIdx, rowIdx, $event)\" class=\"hover-pointer\">\n                                <span *ngIf=\"!GetIsHtml(rowIdx, colIdx); else renderHTML\"> {{GetCellText(rowIdx, colIdx)}}</span>\n                            </a>\n                            <ng-template #plainTd>{{GetCellText(rowIdx, colIdx)}}</ng-template>\n                            <ng-template #renderHTML>\n                                <span [innerHTML]=\"GetCellText(rowIdx, colIdx)\"></span>\n                            </ng-template>\n                        </div>\n\n                    </ng-template>\n                </div>\n            </td>\n            <td *ngIf=\"NeedsButtonColumn('end')\" nowrap>\n                <div *ngIf=\"Config && Config.buttonNames && Config.buttonNames.length > 0; else tryButtonInfo\">\n                    <button *ngFor=\"let button of Config.buttonNames\" type=\"button\" class=\"btn btn-sm btn-outline-primary\" (click)=\"ClientButtonClick(button, rowIdx)\">{{button}}</button>\n\n                </div>\n            </td>\n        </tr>\n        <tr class=\"table-info\">\n            <td [attr.colspan]=\"TotalColumnCount()\">\n                <button type=\"button\" (click)=\"ToggleFilterSortRow()\" class=\"btn btn-sm btn-primary\">\n                    <i class=\"fa fa-filter\"></i>\n                </button>\n                <button (click)=\"PageCrement(-999999)\" type=\"button\" class=\"btn btn-sm btn-primary\">\n                    <i class=\"fa fa-angle-double-left\" aria-hidden=\"true\"></i>\n                </button>\n                <button (click)=\"PageCrement(-1)\" type=\"button\" class=\"btn btn-sm btn-primary\">\n                    <i class=\"fa fa-angle-left\" aria-hidden=\"true\"></i>\n                </button> Page\n                <input style=\"width: 25px\" type=\"text\" [ngModel]=\"currentPage\" (ngModelChange)=\"OnPageNumberChange($event)\" /> of {{maxPage}}\n\n                <button (click)=\"PageCrement(1)\" type=\"button\" class=\"btn btn-sm btn-primary\">\n                    <i class=\"fa fa-angle-right\" aria-hidden=\"true\"></i>\n                </button>\n                <button (click)=\"PageCrement(999999)\" type=\"button\" class=\"btn btn-sm btn-primary\">\n                    <i class=\"fa fa-angle-double-right\" aria-hidden=\"true\"></i>\n                </button> Records: {{currentRecordStart+1}} - {{currentRecordEnd+1}} of {{filterRows.length}}\n                <span class=\"pull-right\">\n                    <span class=\"m-1\">Page size:</span>\n                    <input type=\"text\" style=\"width: 50px\" [ngModel]=\"PageSize()\" (ngModelChange)=\"onPageSizeChange($event)\" />\n                </span>\n            </td>\n        </tr>\n    </table>\n</div>\n\n\n<ng-template #loading>\n    <i class=\"fa fa-spinner fa-spin\"></i> Loading data...\n</ng-template>","styles":[".table-condensed>tbody>tr>td,\n.table-condensed>tbody>tr>th,\n.table-condensed>tfoot>tr>td,\n.table-condensed>tfoot>tr>th,\n.table-condensed>thead>tr>td,\n.table-condensed>thead>tr>th{\n    padding:2px;\n    font-size:12px\n}\n\n.div-inner-td{\n    height:100%;\n    width:100%;\n}\n\n.table-responsive{\n    width:auto;\n}\n\n.pareto-td-flex-row{\n    display:-webkit-box;\n    display:-ms-flexbox;\n    display:flex;\n    -webkit-box-align:start;\n        -ms-flex-align:start;\n            align-items:flex-start;\n    -ms-flex-wrap:nowrap;\n        flex-wrap:nowrap;\n    height:100%;\n}\n\n.pareto-svg{\n    max-width:70%;\n    border:solid 1px rgba(0, 0, 0, 0.1);\n    height:16px;\n}\n\n.pareto-value{\n    max-width:30%;\n}\n\ni.fa.fa-sort-amount-asc,\ni.fa.fa-sort-amount-desc,\nbutton.btn.btn-sm.case-sensitive{\n    cursor:pointer;\n}\n\n.custom-table-style{\n    width:auto !important;\n    min-width:600px;\n}\n\n.hover-pointer:hover{\n    cursor:pointer;\n}"]}]}],"members":{"RemoveFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":282,"character":3}}]}],"AddFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":283,"character":3}}]}],"NewSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":284,"character":3}}]}],"ButtonClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":285,"character":3}}]}],"ButtonInfoClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":286,"character":3}}]}],"Hover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":287,"character":3}}]}],"ValueClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":288,"character":3}}]}],"RowChangeableEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":289,"character":3}}]}],"Config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":291,"character":3}}]}],"Dataset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":292,"character":3}}]}],"SortAndfilterLocally":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":293,"character":3}}]}],"TableClasses":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":294,"character":3}}]}],"filteringToolTipTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":297,"character":3},"arguments":["filteringToolTip"]}]}],"HasLocalFilters":[{"__symbolic":"method"}],"MergeConfigs":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DisplayStateService"}]}],"PageSize":[{"__symbolic":"method"}],"NeedsButtonColumn":[{"__symbolic":"method"}],"getButtonPosition":[{"__symbolic":"method"}],"getButtonColumnLabel":[{"__symbolic":"method"}],"IsExportToCsvEnabled":[{"__symbolic":"method"}],"IsCustomTableClasses":[{"__symbolic":"method"}],"HasButtons":[{"__symbolic":"method"}],"TotalColumnCount":[{"__symbolic":"method"}],"ToggleFilterSortRow":[{"__symbolic":"method"}],"RefreshFromDataSet":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"filterUpdate":[{"__symbolic":"method"}],"ToggleAndSort":[{"__symbolic":"method"}],"ExportToCsv":[{"__symbolic":"method"}],"DownloadCsv":[{"__symbolic":"method"}],"SetSort":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getColumnRule":[{"__symbolic":"method"}],"rangeMap":[{"__symbolic":"method"}],"maxTextLength":[{"__symbolic":"method"}],"rowChange":[{"__symbolic":"method"}],"dropdown":[{"__symbolic":"method"}],"paretoMap":[{"__symbolic":"method"}],"minMaxForHeatmap":[{"__symbolic":"method"}],"redMap":[{"__symbolic":"method"}],"greenMap":[{"__symbolic":"method"}],"heatmap":[{"__symbolic":"method"}],"BuildDisplay":[{"__symbolic":"method"}],"fireRowChangeEvent":[{"__symbolic":"method"}],"getbuttonClassName":[{"__symbolic":"method"}],"getbuttonIconClassName":[{"__symbolic":"method"}],"getbuttonText":[{"__symbolic":"method"}],"getbuttonToolTip":[{"__symbolic":"method"}],"scaleParetoValueToPercentage":[{"__symbolic":"method"}],"LocalRemoveFilter":[{"__symbolic":"method"}],"LocalAddFilter":[{"__symbolic":"method"}],"isValueClickLink":[{"__symbolic":"method"}],"onValueClick":[{"__symbolic":"method"}],"ClearFilters":[{"__symbolic":"method"}],"ApplyFilterParams":[{"__symbolic":"method"}],"ApplyGlobalFilter":[{"__symbolic":"method"}],"CalculateMaxPage":[{"__symbolic":"method"}],"ClientButtonInfoClick":[{"__symbolic":"method"}],"ClientHover":[{"__symbolic":"method"}],"ClientButtonClick":[{"__symbolic":"method"}],"GetBgColorStyle":[{"__symbolic":"method"}],"getColAlign":[{"__symbolic":"method"}],"GetCellText":[{"__symbolic":"method"}],"DataSetHasCells":[{"__symbolic":"method"}],"RoundDecimalValue":[{"__symbolic":"method"}],"GetCellScaledValue":[{"__symbolic":"method"}],"GetFgColorStyle":[{"__symbolic":"method"}],"onGlobalFilterChange":[{"__symbolic":"method"}],"onFilterChange":[{"__symbolic":"method"}],"onDropdownChanged":[{"__symbolic":"method"}],"PageCrement":[{"__symbolic":"method"}],"onPageSizeChange":[{"__symbolic":"method"}],"OnPageNumberChange":[{"__symbolic":"method"}],"PageOfRows":[{"__symbolic":"method"}],"ShowTooltip":[{"__symbolic":"method"}],"hideModal":[{"__symbolic":"method"}],"hideColumn":[{"__symbolic":"method"}],"GetIsHtml":[{"__symbolic":"method"}],"GetToolTip":[{"__symbolic":"method"}]}},"CellInfo":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}]}},"ButtonCellInfo":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null,null,null,null,null]}]}},"minMaxReply":{"__symbolic":"class","members":{}},"PlatformTableXComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":35,"character":1},"arguments":[{"selector":"app-platform-table-x","template":"<div *ngIf=\"columns && columns.length > 0;  else loading\" class=\"table\" style=\"margin-bottom: 0px;\">\n    <table style=\"width: 100%;\" class=\"table-sm table-bordered\">\n        <tr [ngClass]=\"Config.outerTrClass\" *ngIf=\"Config.showGlobalFilter\" class=\"table-active\">\n            <td [attr.colspan]=\"TotalColumnCount()\">\n                <div class=\"form-inline justify-content-between\">\n                    <div *ngIf=\"Config.tableTitle != ''\" class=\"h4\">\n                        {{Config.tableTitle}}\n                    </div>\n                    <div class=\"form-group\">\n                        <button *ngIf=\"Config.showFilterToggleButton\" type=\"button\" (click)=\"ToggleFilterSortRow()\" class=\"btn btn-sm btn-primary\">\n                            <i class=\"fa fa-filter\"></i>\n                        </button>\n                        <button *ngIf=\"Config.showExportToCsv\" type=\"button\" (click)=\"ExportToCsv()\" class=\"btn btn-sm btn-primary mx-1\" tooltip=\"Export to .csv\">\n                            <i class=\"fa fa-download\"></i>\n                        </button>\n                    </div>\n                    <div class=\"form-group pull-right\">\n                        <span *ngIf=\"Config.showGlobalFilterLabel\" class=\"m-1\">Global Filter:</span>\n                        <input type=\"text\"\n                            style=\"font-family: FontAwesome;\"\n                            [ngModel]=\"filter\"\n                            (ngModelChange)=\"onGlobalFilterChange($event)\"\n                            placeholder=\"&#xF002;\"\n                            class=\"form-control form-control-sm\"\n                        />\n                    </div>\n                </div>\n            </td>\n        </tr>\n        <ng-container *ngIf=\"Config.columnHeaderConfigs\">\n\t\t    <tr *ngFor=\"let row of Config.columnHeaderConfigs; let rowIdx = index\">\n\t\t        <th *ngFor=\"let trheader of row; let i = index\"\n                    [ngStyle]=\"GetHeaderStyle(trheader)\"\n                    [attr.colspan]=\"trheader.headercolumnColSpan\">\n                    <div *ngIf=\"trheader\">\n                        {{trheader.headercolumnLabel}}\n                    </div>\n                </th>\n\t\t    </tr>\n        </ng-container>\n        <tr>\n            <th *ngIf=\"NeedsButtonColumn()\"></th>\n            <th *ngFor=\"let column of Config.columnConfig\"\n                (click)=\"ToggleAndSort(column.columnProp, $event)\"\n                [ngClass]=\"Config.thClass\" \n                [ngStyle]=\"GetColumnStyle(column)\">\n                <div *ngIf=\"column && !columnHeaderTemplate\">\n                    {{column.columnLabel}}\n                    <span><i [ngClass]=\"column.sortClass\"></i></span>\n                </div>\n                <ng-container *ngTemplateOutlet=\"columnHeaderTemplate; context: {column: column}\"></ng-container>\n\n            </th>\n        </tr>\n        <tr *ngIf=\"filterRowVisible\">\n            <th *ngIf=\"NeedsButtonColumn()\">...</th>\n            <th *ngFor=\"let column of Config.columnConfig \" [ngClass]=\"Config.thClass\" >\n                <div *ngIf=\"column && !columnFilterTemplate && (column.columnHeaderFilterType == 'input' || !column.columnHeaderFilterType)\" class=\"input-group\">\n                    <input type=\"text\"\n                        style=\"font-family: FontAwesome;\"\n                        [ngModel]=\"filterlkp[column]\"\n                        (ngModelChange)=\"onFilterChange(column.columnProp, $event)\"\n                        placeholder=\"&#xF002;\"\n                        class=\"form-control form-control-sm\"\n                    />\n                </div>\n                <div *ngIf=\"column && !columnFilterTemplate && column.columnHeaderFilterType == 'dropdown'\" class=\"input-group\">\n                    <select class=\"form-control form-control-sm\" name=\"dropDownColumn\" (change)=\"onDropdownChanged(column.columnProp, $event.target.value)\">\n                        <option>(all)</option>\n                        <option *ngFor=\"let s of column.dropdownsVals\">{{s}}</option>\n                    </select>\n                </div>\n                <div *ngIf=\"column && !columnFilterTemplate && column.columnHeaderFilterType == 'multiselect'\" class=\"input-group\">\n                    <platform-multiselect-dropdown *ngIf=\"column.multiSelectVals\" [settings]=\"multiSelectSettings\" [(ngModel)]=\"column.selectedValues\"\n                    (onAdded)=\"onMultiselectChanged(column)\" (onRemoved)=\"onMultiselectChanged(column)\"\n                            [options]=\"column.multiSelectVals\"></platform-multiselect-dropdown>\n                </div>\n                <ng-container *ngTemplateOutlet=\"columnFilterTemplate; context: {column: column}\"></ng-container>\n            </th>\n        </tr>\n        <tr *ngIf=\"dropdownRowVisible\">\n            <th *ngIf=\"NeedsButtonColumn()\">...</th>\n\n            <th *ngFor=\"let column of columns; let colIdx = index\" [ngClass]=\"Config.thClass\">\n                <div class=\"input-group\">\n                    <select name=\"dropDownColumn\" (change)=\"onDropdownChanged(column, $event.target.value)\">\n                        <option>(all)</option>\n                        <option *ngFor=\"let s of dropdowns[colIdx]\">{{s}}</option>\n                    </select>\n                    <span class=\"input-group-btn\">\n                        <button class=\"btn btn-sm btn-secondary\" style=\"padding: .1rem;\" type=\"button\" (click)=\"ToggleAndSort(column, $event)\">\n                            <i class=\"fa fa-sort-amount-asc\"></i>\n                        </button>\n                    </span>\n                </div>\n            </th>\n        </tr>\n        <tr  \n            (click)='onRowClick(row,rowIdx)'\n            (mouseover)='ClientHover(rowIdx)'\n            *ngFor=\"let row of currentPageOfRows; let rowIdx = index\"\n            [ngClass]=\"{'selected-item':rowIdx == selectedRow && Config.selectMode == 'row'}\"\n            class=\"{{Config.trClass}} {{row[row.length-1]['row-class'] || ''}}\">\n            <td *ngIf=\"Config && Config.buttonNames && Config.buttonNames.length > 0; else tryButtonInfo\">\n                <button *ngFor=\"let button of Config.buttonNames\" type=\"button\" class=\"btn btn-sm btn-outline-primary\" (click)=\"ClientButtonClick(button, rowIdx)\">{{button}}</button>\n            </td>\n            <ng-template #tryButtonInfo>\n                <td *ngIf=\"Config && Config.buttonInfoList && Config.buttonInfoList.length > 0\">\n                    <button *ngFor=\"let buttonInfo of Config.buttonInfoList\" type=\"button\" class=\"btn btn-xs btn-outline-primary {{buttonInfo.class}}\"\n                        (click)=\"ClientButtonInfoClick(buttonInfo, rowIdx)\">\n                        {{buttonInfo.text}}\n                        <i *ngIf=\"buttonInfo.iconClass\" class=\"{{buttonInfo.iconClass}}\"></i>\n                    </button>\n                </td>\n            </ng-template>\n\n            <ng-container *ngFor=\"let field of row; let colIdx = index; \" >\n            <td *ngIf=\"colIdx < row.length -1\" [ngClass]=\"Config.tdClass\" [ngStyle]=\"{'background-color': GetBgColorStyle(rowIdx, colIdx), 'color': GetFgColorStyle(rowIdx, colIdx) }\">\n                <div *ngIf=\"!cellBodyTemplate\">\n                    <div *ngIf=\"paretoColumns.indexOf(columns[colIdx]) > -1; else standardColumn;\">\n                        <div class=\"pareto-td-flex-row\">\n                            <div class=\"bg-dark p-10\" class=\"pareto-svg\">\n                                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" class=\"chart \" height=\"14px\"\n                                    role=\"img\" [attr.width]=\"GetCellScaledValue(rowIdx, colIdx) + '%'\">\n                                    <g class=\"bar\">\n                                        <rect class=\"text-info\" width=\"100%\" height=\"100%\" style=\"fill: currentColor;\" />\n                                    </g>\n                                </svg>\n                            </div>\n                            <div class=\"pareto-value\">\n                                &nbsp; {{TruncateDecimalValue(rowIdx, colIdx, 3)}}\n                            </div>\n                        </div>\n                    </div>\n                    <ng-template #standardColumn>\n                        <div [ngStyle]=\"{'background-color': GetBgColorStyle(rowIdx, colIdx), 'color': GetFgColorStyle(rowIdx, colIdx) }\">\n                            <a *ngIf=\"isValueClickLink(colIdx); else iconTd\" (click)=\"onValueClick(colIdx, rowIdx)\">{{GetCellText(rowIdx, colIdx)}}</a>\n                            <div #iconTd *ngIf=\"CellIsIcon(colIdx); else plainTd\">\n                                <i [ngClass]=\"GetCellText(rowIdx, colIdx)\" aria-hidden=\"true\"></i>\n                            </div>\n                            <ng-template #plainTd>{{GetCellText(rowIdx, colIdx)}}</ng-template>\n                        </div>\n                    </ng-template>\n                </div>\n                <ng-container *ngTemplateOutlet=\"cellBodyTemplate; context: {rowObj: row[row.length-1], value: GetCellText(rowIdx, colIdx), columnProp: columns[colIdx]}\">\n                </ng-container>\n            </td>\n            </ng-container>\n        </tr>\n        <tr *ngIf=\"Config.showPaginate\"  class=\"table-active\" [ngClass]=\"Config.outerTrClass\" >\n            <td [attr.colspan]=\"TotalColumnCount()\">\n                <div class=\"form-inline justify-content-between\">\n                    <div class=\"form-group\">\n                        <button *ngIf=\"Config.showFirstLastPageSelector\" (click)=\"PageCrement(-999999)\" type=\"button\" class=\"btn btn-sm btn-primary\">\n                            <i class=\"fa fa-angle-double-left\" aria-hidden=\"true\"></i>\n                        </button>&nbsp;\n                        <button (click)=\"PageCrement(-1)\" type=\"button\" class=\"btn btn-sm btn-primary\">\n                            <i class=\"fa fa-angle-left\" aria-hidden=\"true\"></i>\n                        </button>&nbsp;Page&nbsp;\n                        <input *ngIf=\"Config.showPageInput\"\n                            class=\"form-control form-control-sm\"\n                            style=\"width: 50px;\"\n                            type=\"text\"\n                            [ngModel]=\"currentPage\"\n                            (ngModelChange)=\"OnPageNumberChange($event)\"\n                         />\n                        <span *ngIf=\"!Config.showPageInput\">{{currentPage}}</span>\n                         &nbsp;of {{maxPage}}\n                        &nbsp;\n                        <button (click)=\"PageCrement(1)\" type=\"button\" class=\"btn btn-sm btn-primary\">\n                            <i class=\"fa fa-angle-right\" aria-hidden=\"true\"></i>\n                        </button>&nbsp;\n                        <button *ngIf=\"Config.showFirstLastPageSelector\" (click)=\"PageCrement(999999)\" type=\"button\" class=\"btn btn-sm btn-primary\">\n                            <i class=\"fa fa-angle-double-right\" aria-hidden=\"true\"></i>\n                        </button>&nbsp;\n                        <span *ngIf=\"Config.showPageRecordsCount\">\n                            Records: {{currentRecordStart+1}} - {{currentRecordEnd+1}} of {{filterRows.length}}\n                        </span>\n                    </div>\n                    <div *ngIf=\"Config.showPageSizeSelector\" class=\"form-group pull-right\">\n                        <span class=\"m-1\">Page size:</span>\n                        <select class=\"form-control form-control-sm\" [(ngModel)]=\"Config.pageSize\" (ngModelChange)=\"onPageSizeChange($event)\">\n                            <option>5</option>\n                            <option>10</option>\n                            <option>15</option>\n                            <option>20</option>\n                            <option>50</option>\n                            <option>100</option>\n                            <option>500</option>\n                        </select>\n                    </div>\n                </div>\n            </td>\n        </tr>\n    </table>\n</div>\n<input *ngIf=\"Config.selectMode\" class='table-selection' #tableSelection type=\"text\" [(ngModel)]='selectedRow'\n      (keyup.arrowdown)=\"changeSelection(1,0)\"  \n      (keyup.arrowup)=\"changeSelection(-1,0)\"\n      (keyup.arrowright)=\"changeSelection(0,1)\"\n      (keyup.arrowleft)=\"changeSelection(0,-1)\">\n\n<ng-template #loading>\n    <i class=\"fa fa-spinner fa-spin\"></i> Loading data...\n</ng-template>\n","styles":[".table-condensed>tbody>tr>td,\n.table-condensed>tbody>tr>th,\n.table-condensed>tfoot>tr>td,\n.table-condensed>tfoot>tr>th,\n.table-condensed>thead>tr>td,\n.table-condensed>thead>tr>th{\n    padding:2px;\n    font-size:12px\n}\n\n.table-responsive{\n    width:auto;\n}\n\n.pareto-td-flex-row{\n    display:-webkit-box;\n    display:-ms-flexbox;\n    display:flex;\n    -webkit-box-align:start;\n        -ms-flex-align:start;\n            align-items:flex-start;\n    -ms-flex-wrap:nowrap;\n        flex-wrap:nowrap;\n    height:100%;\n}\n\n.pareto-svg{\n    max-width:70%;\n    border:solid 1px rgba(0, 0, 0, 0.1);\n}\n\n.pareto-value{\n    max-width:30%;\n}\n\n.table-selection{\n    opacity:0;\n    filter:alpha(opacity=0);\n    width:0;\n    height:0;\n    overflow:hidden;\n}\n\n.selected-item{\n    border:3px solid gray;\n    outline:none;\n    border-color:#9ecaed;\n    -webkit-box-shadow:0 0 10px #9ecaed;\n            box-shadow:0 0 10px #9ecaed;\n}"]}]}],"members":{"RemoveFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":310,"character":3}}]}],"AddFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":311,"character":3}}]}],"NewSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":312,"character":3}}]}],"ButtonClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":313,"character":3}}]}],"ButtonInfoClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":314,"character":3}}]}],"Hover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":315,"character":3}}]}],"ValueClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":316,"character":3}}]}],"RowClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":317,"character":3}}]}],"RowSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":318,"character":3}}]}],"PageChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":319,"character":3}}]}],"Config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":321,"character":3}}]}],"Dataset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":322,"character":3}}]}],"TableData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":323,"character":3}}]}],"SortAndfilterLocally":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":324,"character":3}}]}],"columnHeaderTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":326,"character":3}}]}],"columnFilterTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":327,"character":3}}]}],"cellBodyTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":328,"character":3}}]}],"tableSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":330,"character":3},"arguments":["tableSelection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"MergeConfig":[{"__symbolic":"method"}],"NeedsButtonColumn":[{"__symbolic":"method"}],"HasButtons":[{"__symbolic":"method"}],"TotalColumnCount":[{"__symbolic":"method"}],"ToggleFilterSortRow":[{"__symbolic":"method"}],"RefreshFromDataSet":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"filterUpdate":[{"__symbolic":"method"}],"ToggleAndSort":[{"__symbolic":"method"}],"ExportToCsv":[{"__symbolic":"method"}],"DownloadCsv":[{"__symbolic":"method"}],"SetSort":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getColumnRule":[{"__symbolic":"method"}],"rangeMap":[{"__symbolic":"method"}],"maxTextLength":[{"__symbolic":"method"}],"rowChange":[{"__symbolic":"method"}],"dropdown":[{"__symbolic":"method"}],"paretoMap":[{"__symbolic":"method"}],"redMap":[{"__symbolic":"method"}],"greenMap":[{"__symbolic":"method"}],"heatmap":[{"__symbolic":"method"}],"BuildDisplay":[{"__symbolic":"method"}],"scaleParetoValueToPercentage":[{"__symbolic":"method"}],"LocalRemoveFilter":[{"__symbolic":"method"}],"LocalAddFilter":[{"__symbolic":"method"}],"CellIsIcon":[{"__symbolic":"method"}],"isValueClickLink":[{"__symbolic":"method"}],"onRowClick":[{"__symbolic":"method"}],"onRowSelect":[{"__symbolic":"method"}],"changeSelection":[{"__symbolic":"method"}],"onValueClick":[{"__symbolic":"method"}],"ApplyFilterParams":[{"__symbolic":"method"}],"ApplyGlobalFilter":[{"__symbolic":"method"}],"CalculateMaxPage":[{"__symbolic":"method"}],"ClientButtonInfoClick":[{"__symbolic":"method"}],"ClientHover":[{"__symbolic":"method"}],"ClientButtonClick":[{"__symbolic":"method"}],"GetBgColorStyle":[{"__symbolic":"method"}],"GetCellText":[{"__symbolic":"method"}],"TruncateDecimalValue":[{"__symbolic":"method"}],"GetCellScaledValue":[{"__symbolic":"method"}],"GetFgColorStyle":[{"__symbolic":"method"}],"onGlobalFilterChange":[{"__symbolic":"method"}],"onFilterChange":[{"__symbolic":"method"}],"onDropdownChanged":[{"__symbolic":"method"}],"onMultiselectChanged":[{"__symbolic":"method"}],"PageCrement":[{"__symbolic":"method"}],"onPageSizeChange":[{"__symbolic":"method"}],"OnPageNumberChange":[{"__symbolic":"method"}],"setPageOfRows":[{"__symbolic":"method"}],"GetColumnStyle":[{"__symbolic":"method"}],"GetHeaderStyle":[{"__symbolic":"method"}],"TransformToDataSet":[{"__symbolic":"method"}]}},"BaseChartDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":16,"character":3},"arguments":[{"selector":"canvas[baseChart]","exportAs":"base-chart"}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":5}}]}],"datasets":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":5}}]}],"labels":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":5}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":5}}]}],"chartType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":5}}]}],"colors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":5}}]}],"legend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":5}}]}],"chartClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":44,"character":5}}]}],"chartHover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":45,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":32}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getChartBuilder":[{"__symbolic":"method"}],"updateChartDataSingle":[{"__symbolic":"method"}],"updateChartData":[{"__symbolic":"method"}],"getDatasets":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}]},"statics":{"defaultColors":[[255,99,132],[54,162,235],[255,206,86],[231,233,237],[75,192,192],[151,187,205],[220,220,220],[247,70,74],[70,191,189],[253,180,92],[148,159,177],[77,83,96]]}},"Color":{"__symbolic":"interface"},"Colors":{"__symbolic":"interface"},"TableauComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-tableau","template":"<!--<div id=\"vizContainer\"></div>-->\n\n<iframe #tableauDiv\n  style=\"width: 100%; height: 800px\" \n  [src]=\"url\">\n\n</iframe>","styles":[""]}]}],"members":{"tableauDiv":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":24,"character":3},"arguments":["tableauDiv"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":29,"character":23},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":34,"character":23}]}],"onInitialize":[{"__symbolic":"method"}],"onContextChanged":[{"__symbolic":"method"}],"ProcessUrl":[{"__symbolic":"method"}]}},"TableauConfig":{"__symbolic":"class","members":{}},"CanvasChartComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-canvas-chart","template":"<div *ngIf=\"data\" class=\"canvas-js\">\n    <div id=\"{{id}}\" style=\"height: 400px; min-width: inherit; max-width: inherit;\">\n\n    </div>\n</div>","styles":["\n"]}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"chartContainer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":23,"character":3},"arguments":["chartContainer"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"createChart":[{"__symbolic":"method"}],"prepareChartConfig":[{"__symbolic":"method"}]}},"HighchartPlatformComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-highchart-platform","template":"<div id=\"{{id}}\" *ngIf=\"data || config\" style=\"width:100%; height:400px;\"></div>","styles":[]}]}],"members":{"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"subtitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"xAxis":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"overrideConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"createChart":[{"__symbolic":"method"}],"prepareChartConfig":[{"__symbolic":"method"}]}},"MainComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"app-web-platform-main-component","template":"<div id=\"router-outlet\" class=\"router-outlet\">\n    <router-outlet></router-outlet>\n</div>","styles":[""]}]}],"members":{"widgetContainer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Adal5Service"},{"__symbolic":"reference","name":"SecretService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","module":"ngx-webstorage","name":"SessionStorageService","line":30,"character":35},{"__symbolic":"reference","name":"WebPlatformApiService"},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":34,"character":20}]}],"HandleAdfs":[{"__symbolic":"method"}],"checkApiVersion":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]}},"MainDisplayComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-main-display","template":"<!-- display an auth message if user does not exist yet -->\n<div id=\"authenticating-message-container\" *ngIf=\"showWaitingUser; else userExists\">\n    <div style=\"text-align: center; padding: 10px;\" id=\"authenticating-message\">\n        <h3>Hold on... We are figuring out who you are</h3>\n        <h4>Authenticating...</h4>\n        <i class=\"fa fa-spinner fa-spin fa-5x\"></i>\n    </div>\n</div>\n\n<!-- user exists - show the left nav & main area-->\n<ng-template #userExists>\n    <div class=\"wrapper\">\n        <!-- load the top-nav -->\n        <header>\n            <app-top-nav></app-top-nav>\n        </header>\n        <main>\n            <div class=\"sidenav bg-faded\" [@sideNavAnimation]=\"sideNavState\">\n                <app-side-nav></app-side-nav>\n            </div>\n            <div id=\"main\" [@mainSectionAnimation]=\"sideNavState\">\n                <app-group-display></app-group-display>\n            </div>\n        </main>\n\n\n    </div>\n</ng-template>","styles":[".sidenav{\n    height:calc(100vh - 80px);\n    position:fixed;\n    z-index:1;\n    overflow-x:hidden;\n    min-width:245px;\n    will-change:transform;\n    padding:.30em .30em 0 .30em;\n}\n\n#main{\n    will-change:margin-left;\n    margin-left:245px;\n    padding:.30em .30em 0 .30em;\n}\n\n@media screen and (max-height: 450px){\n    .sidenav{\n        padding-top:15px;\n    }\n    .sidenav a{\n        font-size:18px;\n    }\n}\n\n.wrapper{\n    padding-top:70px;\n    height:100%;\n}"],"animations":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":67,"character":4},"arguments":["sideNavAnimation",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":68,"character":6},"arguments":["show",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":68,"character":20},"arguments":[{"transform":"translate3d(0, 0px, 0px)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":71,"character":6},"arguments":["hide",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":71,"character":20},"arguments":[{"transform":"translate3d(-100%, 0px, 0px)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":74,"character":6},"arguments":["show <=> hide",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":74,"character":34},"arguments":["500ms cubic-bezier(.25,.8,.25,1)"]}]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":76,"character":4},"arguments":["mainSectionAnimation",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":77,"character":6},"arguments":["show",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":77,"character":20},"arguments":[{"marginLeft":"245px"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":80,"character":6},"arguments":["hide",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":80,"character":20},"arguments":[{"marginLeft":"0"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":83,"character":6},"arguments":["show <=> hide",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":83,"character":34},"arguments":["500ms cubic-bezier(.25,.8,.25,1)"]}]}]]}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DisplayStateService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"TopNavComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-top-nav","template":"<nav class=\"navbar navbar-toggleable-md fixed-top bg-primary\">\n    <button class=\"navbar-toggler navbar-toggler-right\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarNav\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n        <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"d-flex\">\n        <a class=\"navbar-brand\" (click)=\"toggleNav()\" href=\"javascript:;\">\n            <i class=\"fa fa-bars\" aria-hidden=\"true\" title=\"Toggle sidebar visibility\"></i>\n            <span class=\"sr-only\">Toggle sidebar visibility</span>\n        </a>\n        <a class=\"navbar-brand\" [platformRouterLink]=\"{}\">{{appName}}</a>\n    </div>\n    <div class=\"navbar-collapse collapse\" id=\"navbarNav\">\n        <ul class=\"navbar-nav flex-row mr-auto justify-content-between\">\n            <li class=\"nav-item dropdown custom-dropdown\" *ngIf=\"!hideLayoutMenu\">\n                <a href=\"javascript:;\" class=\"nav-link dropdown-toggle\" id=\"layout\" data-toggle=\"dropdown\">Layout</a>\n                <div class=\"dropdown-menu\" aria-labelledby=\"layout\">\n                    <a class=\"dropdown-item\" (click)=\"toggleFullScreen()\">Full Screen  <i class=\"fa fa-check pull-right\" *ngIf=\"fullScreen\"></i></a>\n\n                    <div class=\"dropdown-submenu\">\n                        <button class=\"dropdown-item\" data-toggle=\"dropdown\">Page</button>\n                        <div class=\"dropdown-menu\">\n                            <a class=\"dropdown-item\" (click)=\"Refresh()\" href=\"javascript:;\">Refresh</a>\n                            <a class=\"dropdown-item\" (click)=\"ConfigureWidgetLayout()\" href=\"javascript:;\">Configure Widget Layout</a>\n                            <a class=\"dropdown-item\" (click)=\"RefreshWidgetConfiguration()\" href=\"javascript:;\">Refresh Widgets</a>\n                            <div class=\"dropdown-divider\"></div>\n                            <div class=\"dropdown-header\">Widgets Per Row</div>\n                            <div *ngFor=\"let perRow of widgetsPerRowList\">\n                                <a class=\"dropdown-item\" href=\"javascript:;\" (click)=\"SetWidth(perRow.name)\">\n                                {{perRow.name}}\n                                <i class=\"fa fa-check\" *ngIf=\"PerRow(perRow.name)\"></i>\n                              </a>\n                            </div>\n                            <div class=\"dropdown-divider\"></div>\n                            <div class=\"dropdown-header\">Quick Links</div>\n                            <a class=\"dropdown-item\" href=\"javascript:;\" (click)=\"QuickLink('widgetstore')\">Widget store</a>\n                            <a class=\"dropdown-item\" href=\"javascript:;\" (click)=\"QuickLink('diagnostics')\">Diagnostics</a>\n                            <a class=\"dropdown-item\" href=\"javascript:;\" (click)=\"QuickLink('cachedatareport')\">Cached Data Report</a>\n                        </div>\n                    </div>\n                    <div *ngIf=\"themePaths?.length\" class=\"dropdown-submenu\">\n                        <button class=\"dropdown-item\" data-toggle=\"dropdown\">Themes</button>\n                        <div class=\"dropdown-menu\">\n                            <a *ngFor=\"let theme of themePaths\" class=\"dropdown-item\" (click)=\"ChangeTheme(theme.name)\" href=\"javascript:;\">\n                               {{theme.name}} <i class=\"fa fa-check pull-right\" *ngIf=\"currentTheme == theme.name\"> </i>\n                            </a>\n                        </div>\n                    </div>\n                </div>\n            </li>\n            <!-- Cache Section Wrapper  -->\n            <li class=\"nav-item dropdown custom-dropdown\" *ngIf=\"!hideCacheMenu\">\n                <a class=\"nav-link dropdown-toggle\" href=\"javascript:;\" id=\"cache\" data-toggle=\"dropdown\">Cache</a>\n                <div class=\"dropdown-menu\" aria-labelledby=\"cache\">\n                    <div *ngFor=\"let policy of cachePolicyList\">\n                        <a class=\"dropdown-item\" href=\"javascript:;\" (click)=\"SetCachePolicy(policy.name)\">{{policy.value}} <i class=\"fa fa-check\" *ngIf=\"CachePolicyIs(policy.name)\"></i></a>\n                    </div>\n                    <div class=\"dropdown-divider\"></div>\n                    <a class=\"dropdown-item\" href=\"javascript:;\" (click)=\"ClearLocalCache()\">Clear Local Cache</a>\n                </div>\n            </li>\n            <!-- End of Cache Section Wrapper  -->\n            <li *ngIf=\"isAdmin\" class=\"nav-item dropdown custom-dropdown\">\n                <a class=\"nav-link dropdown-toggle\" href=\"javascript:;\" id=\"admin\" data-toggle=\"dropdown\">Admin</a>\n                <div class=\"dropdown-menu\" aria-labelledby=\"admin\">\n                    <a class=\"dropdown-item\" (click)=\"QuickLink('platformconfig')\" href=\"javascript:;\">Platform Configuration</a>\n                    <a class=\"dropdown-item\" (click)=\"SetAdminRights(false)\" href=\"javascript:;\">Set Admin Off</a>\n                    <a class=\"dropdown-item\" (click)=\"SetAdminRights(true)\" href=\"javascript:;\">Set Admin On</a>\n                    <a class=\"dropdown-item\" (click)=\"RaiseAToast()\" href=\"javascript:;\">Raise a toast</a>\n                </div>\n            </li>\n            <div *ngIf=\"CustomMenus && CustomMenus.length > 0\">\n                <li *ngFor=\"let menu of CustomMenus\" class=\"nav-item dropdown custom-dropdown\">\n                    <a class=\"nav-link dropdown-toggle\" href=\"javascript:;\" data-toggle=\"dropdown\">{{menu.name}}</a>\n                    <div class=\"dropdown-menu\">\n                        <a *ngFor=\"let item of menu.menuItems\" class=\"dropdown-item\" (click)=\"item.handler()\" href=\"javascript:;\">{{item.name}}</a>\n                    </div>\n                </li>\n            </div>\n            \n        </ul>\n        <!-- Users field  -->\n        <div class=\"my-2 hidden-sm-down\">\n            <input *ngIf=\"!isPrintModeOn && !hidePrintLayout\" type=\"button\" class=\"btn btn-sm btn-info topnav-print\" value=\"Print Layout\" (click)=\"onPrintPreviewMode()\"/>\n            <div *ngIf=\"isPrintModeOn && !hidePrintLayout\" class=\"btn-group btn-group-sm topnav-print\" role=\"group\" aria-label=\"Small button group\"> \n                <button type=\"button\" (click)=\"onPrint()\" class=\"btn btn-success topnav-print\">Print</button> \n                <button type=\"button\" (click)=\"onPrintCancel()\" class=\"btn btn-warning topnav-print\">Cancel</button> \n            </div>\n            <span *ngIf=\"showNoChromeMessage\" class=\"badge badge-danger\">Not Using Chrome !! </span>\n             <img class=\"img-circle\" src=\"http://bomysite.micron.com:80/User%20Photos/Profile%20Pictures/{{MicronUserName}}_MThumb.jpg\"/> \n             <span *ngIf=\"MicronUserName; else NotLoggedIn\" class=\"navbar-text\">Signed in as {{MicronUserName}}</span> \n            <span *ngIf=\"isAdmin\" class=\" navbar-text\">(Admin)</span>\n            <ng-template #NotLoggedIn>\n                <span class=\" navbar-text\">Obtaining user credentials...</span>\n            </ng-template>\n        </div>\n        <!-- End of Users field  -->\n    </div>\n</nav>\n\n<div class=\"scroll-to-top\" *ngIf=\"showScrollTotop\" (click)=\"smoothScrollTotop()\">\n    <i class=\"fa fa-chevron-up\" aria-hidden=\"true\"></i>\n</div>","styles":[".alert-msg{\n    height:40px;\n    margin:0px 0px;\n}\n\n#navbars{\n    cursor:pointer;\n}\n\n.navbar-text{\n    padding:0;\n}\n\n.dropdown-submenu{\n    position:relative;\n}\n\n.dropdown-submenu>.dropdown-menu{\n    top:0;\n    left:100%;\n    margin-top:-6px;\n    margin-left:0;\n    border-radius:0.25rem;\n}\n\n.dropdown-submenu:hover>.dropdown-menu{\n    display:block;\n}\n\n.dropdown-submenu>a::after{\n    border-bottom:0.3em solid transparent;\n    border-left-color:inherit;\n    border-left-style:solid;\n    border-left-width:0.3em;\n    border-top:0.3em solid transparent;\n    content:\" \";\n    display:block;\n    float:right;\n    height:0;\n    margin-right:-0.6em;\n    margin-top:-0.95em;\n    width:0;\n}\n\n.dropdown-submenu.pull-left{\n    float:none;\n}\n\n.dropdown-submenu.pull-left>.dropdown-menu{\n    left:-75%;\n}\n\n.dropdown-menu .divider{\n    background-color:#e5e5e5;\n    height:1px;\n    margin:9px 0;\n    overflow:hidden;\n}\n\n.topnav-print{\n    padding:0 7px !important;\n}\n\n.img-circle{\n    border-radius:35px;\n    height:35px;\n    margin-right:5px;\n}\n.custom-dropdown{\n    margin-top:7px;\n}\n\n.scroll-to-top{\n    position:fixed;\n    right:65px;\n    bottom:50px;\n    z-index:9999;\n    padding:7px 12px 10px 12px;\n    border-radius:20px;\n    background:#80808057;\n    -webkit-box-shadow:7px 7px 5px 0px rgba(50, 50, 50, 0.75);\n    box-shadow:7px 7px 5px 0px rgba(50, 50, 50, 0.75);\n  }\n  \n  .scroll-to-top:hover{\n    position:fixed;\n    right:65px;\n    bottom:50px;\n    z-index:9999;\n    padding:7px 12px 10px 12px;\n    border-radius:20px;\n    background:rgba(128, 128, 128, 0.82);\n    -webkit-box-shadow:1px 1px 0px 0px rgba(50, 50, 50, 0.75);\n            box-shadow:1px 1px 0px 0px rgba(50, 50, 50, 0.75);\n  }"]}]}],"members":{"onWindowScroll":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":248,"character":3},"arguments":["window:scroll",[]]}]}],"smoothScrollTotop":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":273,"character":17}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewChecked":[{"__symbolic":"method"}],"ChangeTheme":[{"__symbolic":"method"}],"toggleSideNav":[{"__symbolic":"method"}],"Refresh":[{"__symbolic":"method"}],"QuickLink":[{"__symbolic":"method"}],"SetAdminRights":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"toggleNav":[{"__symbolic":"method"}],"toggleFullScreen":[{"__symbolic":"method"}],"PerRow":[{"__symbolic":"method"}],"SetCachePolicy":[{"__symbolic":"method"}],"RaiseAToast":[{"__symbolic":"method"}],"CachePolicyIs":[{"__symbolic":"method"}],"SetWidth":[{"__symbolic":"method"}],"ConfigureWidgetLayout":[{"__symbolic":"method"}],"ClearLocalCache":[{"__symbolic":"method"}],"RefreshWidgetConfiguration":[{"__symbolic":"method"}],"onPrintPreviewMode":[{"__symbolic":"method"}],"onPrint":[{"__symbolic":"method"}],"onPrintCancel":[{"__symbolic":"method"}],"handleUnsupportedNavigator":[{"__symbolic":"method"}]}},"GroupDisplayComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":29,"character":1},"arguments":[{"selector":"app-group-display","template":"<div *ngIf=\"showBreadCrumbs\" id=\"breadcrumb-container\">\n    <ol class=\"breadcrumb mb-1\">\n        <li class=\"breadcrumb-item\" style=\"margin-top: 2px;\">Context:</li>\n        <li class=\"breadcrumb-item\" *ngFor=\"let s of contextBreadCrumbs; let idx = index;\" [title]=\"s.tooltip\" (mouseover)=\"over(s)\" (mouseleave)=\"over(s)\" style=\"margin-top: 2px;\">\n            <div *ngIf=\"(s.prevValues && s.prevValues.length > 0); else elseCtxBreadCrumb\" dropdown class=\"dropdown show\" style=\"margin-top: -18px; margin-left: 20px;\">\n                <a dropdownToggle tabindex class=\"badge badge-primary dropdown-toggle\" style=\"font-size: 100%; font-weight: 400;\">{{s.display}} <span class=\"caret\"></span></a>\n                <div *dropdownMenu class=\"dropdown-menu\" role=\"menu\">\n                    <a *ngFor=\"let pv of s.prevValues\" class=\"dropdown-item\" (click)=\"clickPrevContext(s.name, pv)\">{{pv}}</a>\n                </div>\n            </div>\n            <ng-template #elseCtxBreadCrumb>\n                <span>{{s.display}}\n                    <i *ngIf=\"s.close\" class=\"fa fa-times-circle\" (click)=\"DeleteContext(s.name)\"></i>\n                </span>\n            </ng-template>\n        </li>\n        <li class=\"breadcrumb-menu d-md-down-none pull-right\">\n            <a *ngIf=\"!widgetAsApp\" href=\"#\" (click)=\"InitSelectionModal()\" class=\"btn btn-primary btn-sm\" data-toggle=\"modal\" data-target=\"#widgetSelectionModal\">\n                <i class=\"fa fa-windows\" aria-hidden=\"true\"></i>\n            </a>\n        </li>\n    </ol>\n    <ol class=\"breadcrumb filter mb-1\">\n        <li class=\"breadcrumb-item\" style=\"margin-top: 2px;\">Filters &amp; Sorts: </li>\n        <li class=\"breadcrumb-item\" *ngFor=\"let s of filterBreadCrumbs\" [title]=\"s.tooltip\" (mouseover)=\"over(s)\" (mouseleave)=\"over(s)\" style=\"margin-top: 2px;\">\n            <span>{{s.display}}\n                <i *ngIf=\"s.close\" class=\"fa fa-times-circle\" (click)=\"DeleteFilter(s.name)\"></i>\n            </span>\n        </li>\n        <li class=\"breadcrumb-item\" *ngFor=\"let s of sortBreadCrumbs\" [title]=\"s.tooltip\" (mouseover)=\"over(s)\" (mouseleave)=\"over(s)\" style=\"margin-top: 2px;\">\n            <span>{{s.display}}\n                <i *ngIf=\"s.close\" class=\"fa fa-times-circle\" (click)=\"DeleteSort(s.name)\"></i>\n            </span>\n        </li>\n    </ol>\n</div>\n\n<div *ngIf=\"widgetDisplayGroups\" class=\"container-fluid\">\n    <div class=\"row\">\n        <div role=\"tablist\" *ngFor=\"let widgetDisplayGroup of widgetDisplayGroups; let idx = index;\" [class]=\"widgetDisplayGroup.widthStyle + ' mb-1 group-div'\">\n\n            <div class=\"card\" id=\"{{'snapable-container-' + idx}}\">\n                <div class=\"card-header\" role=\"tab\" *ngIf=\"widgetDisplayGroup.widgetList.length > 1  || !hideWidgetTabs\">\n                    <!-- Nav tabs -->\n\n                    <ul class=\"nav nav-pills\" role=\"tablist\">\n                        <li class=\"nav-item\" *ngFor=\"let OrderedWidget of widgetDisplayGroup.widgetList;  let t = index;\">\n                            <a class=\"nav-link\" [ngClass]=\"{'active': t < 1 }\" data-toggle=\"tab\" href=\"{{'#grp' + idx + 'tab' + t}}\" role=\"tab\">\n                                <span>{{ TabName(OrderedWidget) }}</span>\n\n                                <span class=\"dropdown\">\n                                                        <button class=\"btn btn-primary\" type=\"button\" data-toggle=\"dropdown\" id=\"dropdpwn-toggle-button\">\n                                                                <i class=\"fa fa-bars\"  \n                                                                aria-hidden=\"true\"></i>\n                                                        </button>\n\n                                                        <div class=\"dropdown-menu tab-action-container\" style=\"margin-top: 12px\"  aria-labelledby=\"cache\">\n                                                                <div>\n                                                                    <a class=\"dropdown-item d-flex justify-content-between\" \n                                                                       href=\"javascript:;\" \n                                                                       (click)=\"onTakePicture(idx , OrderedWidget.widgetConfiguration.name , $event)\">\n                                                                       Take Snapshot <i class=\"fa fa fa-print print-icon\" aria-hidden=\"true\"> </i>\n                                                                    </a>\n                                                                </div>\n                                                                <div>\n                                                                    <a class=\"dropdown-item d-flex justify-content-between\" \n                                                                        href=\"javascript:;\" \n                                                                        (click)=\"onCreateFeedback(OrderedWidget.widgetConfiguration)\">\n                                                                        Give Feedback <i class=\"fa fa-commenting\" aria-hidden=\"true\"> </i>\n                                                                    </a>\n                                                                </div>\n                                                                <div>\n                                                                    <a class=\"dropdown-item d-flex justify-content-between\" \n                                                                        href=\"javascript:;\" \n                                                                        (click)=\"onSeeFeedback(OrderedWidget.widgetConfiguration)\">\n                                                                        Watch Feedback <i class=\"fa fa-eye\" aria-hidden=\"true\"> </i>\n                                                                    </a>\n                                                                </div>\n                                                                <div>\n                                                                    <a class=\"dropdown-item d-flex justify-content-between\" \n                                                                        href=\"javascript:;\" \n                                                                        (click)=\"onSupportInfo(OrderedWidget.widgetConfiguration)\">\n                                                                        Support Information <i class=\"fa fa-address-book-o\" aria-hidden=\"true\"> </i>\n                                                                    </a>\n                                                                </div>\n                                                        </div>\n                                                </span>\n                            </a>\n                        </li>\n                    </ul>\n                    <div class=\"card-actions\">\n                        <button class=\"btn btn-primary btn-link btn-minimize\" type=\"button\" data-toggle=\"collapse\" [attr.data-target]=\"'#tabset' + idx\" aria-expanded=\"true\">\n                            <i class=\"fa fa-angle-down\" title=\"Show\"></i>\n                            <i class=\"fa fa-angle-up\" title=\"Hide\"></i>\n                        </button>\n                    </div>\n                </div>\n\n                <div id=\"{{ 'tabset' + idx }}\" class=\"collapse show widget-div\" role=\"tabpanel\" [style.height]=\"widgetDisplayGroup.heightStyle\">\n                    <div class=\"card-block\">\n                        <!-- Tab panes -->\n                        <div class=\"tab-content\">\n                            <div class=\"tab-pane\" [ngClass]=\"{'active': t < 1}\" *ngFor=\"let OrderedWidget of widgetDisplayGroup.widgetList; let t = index;\" id=\"{{'grp' + idx + 'tab' + t}}\" role=\"tabpanel\">\n                                <!-- <app-widget-container [heightSpec]=\"HeightOf(widgetDisplayGroup)\" [Config]=\"OrderedWidget.widgetConfiguration\"></app-widget-container> -->\n                                <ng-container *ngTemplateOutlet=\"widgetContainer; context: {WidgetConfiguration: OrderedWidget.widgetConfiguration}\"></ng-container>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div id=\"supportModal\" tabindex=\"-1\" role=\"dialog\" class=\"modal fade\">\n    <div class=\"modal-dialog modal-lg\" role=\"document\">\n        <div class=\"modal-content\">\n            <!-- header -->\n            <div class=\"modal-header\">\n                <h4 class=\"modal-title\">Support Information for {{selectedWidget.name}}</h4>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\">&times;</button>\n            </div>\n            <!-- body -->\n            <div class=\"modal-body\">\n                <div class=\"container-fluid\">\n                    <div class=\"row\">\n                        <div class=\"col-md-12\">\n                            <tabset type=\"pills\">\n                                <tab *ngFor=\"let supportTab of supportInfo\" heading=\"{{supportTab.name}}\">\n                                    <table class=\"table\">\n                                        <tbody>\n                                            <tr>\n                                                <td>Message</td>\n                                                <td>{{supportTab.Message}}</td>\n                                            </tr>\n                                            <tr *ngIf=\"supportTab.Group\">\n                                                <td>Message</td>\n                                                <td>{{supportTab.Group}}</td>\n                                            </tr>\n                                            <tr *ngIf=\"supportTab.NameList\">\n                                                <td>Personnel</td>\n                                                <td>{{supportTab.NameList}}</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </tab>\n                            </tabset>\n                        </div>\n\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<!-- create feedback modal -->\n<div id=\"feedbackModal\" tabindex=\"-1\" role=\"dialog\" class=\"modal fade\">\n    <div class=\"modal-dialog modal-lg\" role=\"document\">\n        <div class=\"modal-content\">\n            <!-- header -->\n            <div class=\"modal-header\">\n                <h4 class=\"modal-title\">Please provide your feedback for {{selectedWidget.name}}</h4>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\">&times;</button>\n            </div>\n\n            <!-- body -->\n            <div class=\"modal-body\">\n\n                <div class=\"container-fluid\">\n                    <div class=\"row\">\n                        <div class=\"form-group col-sm-4\">\n                            <label for=\"type\">Type</label>\n                            <select class=\"form-control\" size=\"1\" [(ngModel)]=\"feedback.type\" id=\"type\">\n                                      <option value=\"\"> Please select the type</option>\n                                      <option value=\"Feature\">Feature</option>\n                                      <option value=\"Bug\">Bug</option>\n                                      <option value=\"Question\">Question</option>                                      \n                                    </select>\n                        </div>\n                        <div class=\"form-group col-sm-4\">\n                            <label for=\"title\">Title</label>\n                            <input class=\"form-control\" type=\"text\" id=\"title\" [(ngModel)]=\"feedback.title\">\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"form-group col-sm-12\">\n                            <label for=\"desc\">\n                                          Please Enter the description\n                                      </label>\n                            <textarea class=\"form-control\" id=\"desc\" rows=\"4\" [(ngModel)]=\"feedback.desc\"></textarea>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <!-- footer -->\n            <div class=\"modal-footer\">\n                <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Cancel</button>\n                <button type=\"button\" class=\"btn btn-primary\" (click)=\"saveFeedback(feedback)\" data-dismiss=\"modal\">Save changes</button>\n            </div>\n        </div>\n    </div>\n</div>\n\n<!-- create feedback modal -->\n\n<!-- list feedback modal -->\n\n<div id=\"feedbackListModal\" tabindex=\"-1\" role=\"dialog\" class=\"modal fade\">\n    <div class=\"modal-dialog modal-lg\" role=\"document\">\n        <div class=\"modal-content\">\n            <!-- header -->\n            <div class=\"modal-header\">\n                <h4 class=\"modal-title\">Feedback for {{selectedWidget.name}}</h4>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\">&times;</button>\n            </div>\n\n            <!-- body -->\n            <div class=\"modal-body\">\n\n                <div class=\"container-fluid\">\n                    <table class=\"table table-hover\">\n                        <thead>\n                            <tr>\n                                <th>#</th>\n                                <th>Type</th>\n                                <th>Title</th>\n                                <th>Description</th>\n                                <th>Raised By</th>\n                                <th>Email</th>\n                            </tr>\n                        </thead>\n                        <tbody>\n\n                            <tr *ngFor=\"let fb of feedbacks; let j = index\">\n                                <td>{{j + 1}}</td>\n                                <td>{{fb.type}}</td>\n                                <td>{{fb.title}}</td>\n                                <td>{{fb.desc}}</td>\n                                <td>{{fb.userName}}</td>\n                                <td><a href=\"mailto:{{fb.userName}}?Subject={{selectedWidget.name}}%20:%20{{fb.title}}\" target=\"_top\">Send Mail</a></td>\n                                <!-- <td>\n                                      <div class=\"btn-group\" role=\"group\">\n                                        <button id=\"btnGroupVerticalDrop1\" type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\n                                          aria-expanded=\"false\">\n                                                   ... Under construction ...\n                                                  </button>\n                                        <div class=\"dropdown-menu\" aria-labelledby=\"btnGroupVerticalDrop1\">\n                                          <a class=\"dropdown-item\" href=\"#\">Add to Jira</a>\n                                          <a class=\"dropdown-item\" href=\"#\">Report</a>\n                                          <a class=\"dropdown-item\" href=\"#\">Discard</a>\n                                          <a class=\"dropdown-item\" href=\"#\">Add Comment</a>\n                                        </div>\n                                      </div>\n                                    </td> -->\n                            </tr>\n                        </tbody>\n                    </table>\n                    <div *ngIf=\"!feedbacks\">\n                        <div class=\"badge badge-warning\">\n                            <h2>\n                                No Feedback available\n                            </h2>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <!-- footer -->\n            <div class=\"modal-footer\">\n                <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Dismiss</button>\n            </div>\n        </div>\n    </div>\n</div>\n\n<!-- list feedback modal -->\n\n\n\n<div *ngIf=\"widgetAsApp\" class=\"container-fluid\">\n    <div class=\"row\">\n        <!-- <app-widget-container [Config]=\"this.matchingWidgetConfigs[0]\" class=\"widget-app\"></app-widget-container> -->\n        <ng-container *ngTemplateOutlet=\"widgetContainer; context: {WidgetConfiguration: this.matchingWidgetConfigs[0]}\"></ng-container>\n    </div>\n</div>\n<div id=\"widgetSelectionModal\" tabindex=\"-1\" role=\"dialog\" class=\"modal fade\">\n    <div class=\"modal-dialog modal-lg \" role=\"document\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h4 class=\"modal-title\">Configure Widget Layout</h4>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\">&times;</button>\n            </div>\n            <div class=\"modal-body\">\n                <app-widget-registration></app-widget-registration>\n            </div>\n            <div class=\"modal-footer\">\n                <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Cancel</button>\n                <button type=\"button\" class=\"btn btn-primary\" (click)=\"SaveLayout()\" data-dismiss=\"modal\">Save changes</button>\n            </div>\n        </div>\n    </div>\n</div>","styles":[".widget-div.collapsing{\n    -webkit-transition:none;\n    transition:none;\n}\n\n.breadcrumb{\n    padding-top:1px;\n    padding-bottom:0px;\n    padding-right:0px;\n    padding-left:8px;\n    min-height:28px;\n}\n\n.breadcrumb.filter{\n    padding-top:1px;\n    padding-bottom:0px;\n    padding-right:0px;\n    padding-left:8px;\n    min-height:28px;\n}\n\n.modal-lg{\n    max-width:90%;\n    max-height:90%;\n}\n\n.modal-lg .modal-body{\n    overflow-y:auto;\n}\n\n.modal-lg .modal-body p{\n    margin-bottom:900px\n}\n\n.btn-info{\n    color:#fff;\n    background-color:#0b406e;\n}\n\n.btn-collapse{\n    color:#fff;\n    background-color:#f4dc42;\n}\n\n.btn-warning{\n    color:#fff;\n    background-color:#804d0e;\n    border-color:#eea236;\n}\n\n.group-div{\n    padding:2px;\n    height:calc(100% - 40px);\n}\n\n.widget-div{\n    height:100%;\n    width:100%;\n    min-height:250px;\n    overflow-x:auto;\n    overflow-y:auto;\n}\n\n.breadcrumb-item.active{\n    cursor:pointer;\n}\n\n.btn-minimize{\n    border-left:1px solid #cfd8dc;\n    height:40px;\n}\n\ni.fa-angle-down{\n    display:inline-block;\n    vertical-align:middle;\n}\n\n.card-block{\n    padding:0.25rem;\n}\n\n.card-header{\n    padding:0;\n}\n\n.card-header>ul.nav-pills{\n    margin-right:1.1em\n}\n\n.card-header .card-actions{\n    position:absolute;\n    top:0px;\n    right:0;\n}\n\n#dropdpwn-toggle-button{\n    padding:0px;\n    margin-left:10px;\n    margin-right:-10px;\n}\n\n\n\n#feedbackButton{\n    -webkit-transform:rotate(-90deg);\n            transform:rotate(-90deg);\n    position:fixed;\n    z-index:9999;\n    top:50%;\n    right:-40px;\n    opacity:.5;\n}\n\n#feedbackButton:hover{\n    opacity:.8;\n}\na.nav-link button#dropdpwn-toggle-button{\n    display:none;\n}\na.nav-link.active button#dropdpwn-toggle-button{\n    display:inherit;\n}\n\n.tab-action-container a.dropdown-item.d-flex.justify-content-between{\n    padding:3px .8rem;\n}\n\n.tab-action-container a.dropdown-item.d-flex.justify-content-between i.fa{\n    margin-top:1px;\n}\n\n.btn-minimize.collapsed .fa-angle-up, .btn-minimize .fa-angle-down{\n    display:none;\n}\n\n.btn-minimize.collapsed .fa-angle-down, .btn-minimize .fa-angle-up{\n    display:inline-block;\n}\n\n.widget-app{\n    width:100%;\n    padding:15px;\n    margin-bottom:150px;\n}"]}]}],"members":{"widgetRegistrationComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":483,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵx"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","module":"ng2-toastr/ng2-toastr","name":"ToastsManager","line":508,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":509,"character":9},{"__symbolic":"reference","name":"WebPlatformApiService"},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"AppStateService"}]}],"ngOnInit":[{"__symbolic":"method"}],"onSupportInfo":[{"__symbolic":"method"}],"onCreateFeedback":[{"__symbolic":"method"}],"saveFeedback":[{"__symbolic":"method"}],"onTakePicture":[{"__symbolic":"method"}],"ClearFilterSorts":[{"__symbolic":"method"}],"over":[{"__symbolic":"method"}],"SaveLayout":[{"__symbolic":"method"}],"InitSelectionModal":[{"__symbolic":"method"}],"deselected":[{"__symbolic":"method"}],"selected":[{"__symbolic":"method"}],"sendWidgetMessage":[{"__symbolic":"method"}],"WidthOf":[{"__symbolic":"method"}],"HeightOf":[{"__symbolic":"method"}],"SetDefaultWidth":[{"__symbolic":"method"}],"ResetGroupWidths":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"DeleteContext":[{"__symbolic":"method"}],"DeleteFilter":[{"__symbolic":"method"}],"DeleteSort":[{"__symbolic":"method"}],"onSeeFeedback":[{"__symbolic":"method"}],"postDataToMiddleLayer":[{"__symbolic":"method"}],"makeMongoCall":[{"__symbolic":"method"}],"BuildBreadCrumbs":[{"__symbolic":"method"}],"WidgetDecision":[{"__symbolic":"method"}],"UserCurrentGroupedWidgets":[{"__symbolic":"method"}],"GetWidgetGroups":[{"__symbolic":"method"}],"HiddenGroupWidgetNames":[{"__symbolic":"method"}],"BuildDisplay":[{"__symbolic":"method"}],"TabName":[{"__symbolic":"method"}],"CheckDifferences":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"clickPrevContext":[{"__symbolic":"method"}]}},"Comment":{"__symbolic":"class","members":{}},"SideNavComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-side-nav","template":"<div class=\"sidenav-content\">\n        <div class=\"col-xs-12\" *ngIf=\"DisplayStateService.appState.sideNavWidgetConfig\">\n            <select class=\"form-control\" (change)=\"onSelectChange()\" [(ngModel)]=\"selectedConfig\">\n                <option *ngFor=\"let nv of DisplayStateService.appState.sideNavWidgetConfig.widgetNameList\" [ngValue]=\"nv.value\">\n                    {{nv.value}}\n                </option>\n            </select>\n        </div>\n        <!-- <app-widget-container *ngIf=\"WidgetConfiguration\" [Config]=\"WidgetConfiguration\"></app-widget-container> -->\n        <ng-container *ngTemplateOutlet=\"widgetContainer; context: {WidgetConfiguration: WidgetConfiguration}\"></ng-container>\n</div>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DisplayStateService"}]}],"ngOnInit":[{"__symbolic":"method"}],"toggleSideNav":[{"__symbolic":"method"}],"ApplySideNav":[{"__symbolic":"method"}],"OnDestroy":[{"__symbolic":"method"}],"onSelectChange":[{"__symbolic":"method"}]}},"BaseWidget":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"app-base-widget-component","template":"<p>\n  This is an 'abstract' widget and should not be displayed.\n</p>\n","styles":[""]}]}],"members":{"Config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"heightSpec":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":38,"character":21},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"ngOnInit":[{"__symbolic":"method"}],"minimumApiVersion":[{"__symbolic":"method"}],"onDataAvailable":[{"__symbolic":"method"}],"onDataError":[{"__symbolic":"method"}],"onInitialize":[{"__symbolic":"method"}],"onNewMessage":[{"__symbolic":"method"}],"onTabDeactivated":[{"__symbolic":"method"}],"onTabActivated":[{"__symbolic":"method"}],"onContextChanged":[{"__symbolic":"method"}],"onFiltersChanged":[{"__symbolic":"method"}],"onSortsChanged":[{"__symbolic":"method"}],"onStateChanged":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"BaseManagedDataWidget":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"app-base-manaaged-data-widget-component","template":"<p>\n  This is an 'abstract' widget and should not be displayed.\n</p>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":48,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"onInitialize":[{"__symbolic":"method"}],"onNewMessage":[{"__symbolic":"method"}],"onContextChanged":[{"__symbolic":"method"}],"onFiltersChanged":[{"__symbolic":"method"}],"onSortsChanged":[{"__symbolic":"method"}],"currentContext":[{"__symbolic":"method"}],"RequestDataByDataConsumerConfig":[{"__symbolic":"method"}],"RequestData":[{"__symbolic":"method"}],"onDataAvailable":[{"__symbolic":"method"}],"onDataError":[{"__symbolic":"method"}],"onManagedDataError":[{"__symbolic":"method"}],"onManagedDataReply":[{"__symbolic":"method"}],"HandleGrouping":[{"__symbolic":"method"}],"HandleFilters":[{"__symbolic":"method"}],"HandleSorts":[{"__symbolic":"method"}],"PostProcessing":[{"__symbolic":"method"}],"HandleMessages":[{"__symbolic":"method"}]}},"SecretService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ClientSettingsService"}]}]}},"WebPlatformApiService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":27,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":33,"character":24},{"__symbolic":"reference","name":"Adal5Service"},{"__symbolic":"reference","name":"SecretService"},{"__symbolic":"reference","module":"ngx-webstorage/dist/app","name":"SessionStorageService","line":36,"character":35},{"__symbolic":"reference","name":"ClientSettingsService"}]}],"GetBase":[{"__symbolic":"method"}],"GetMongoDocs":[{"__symbolic":"method"}],"GetMongoDoc":[{"__symbolic":"method"}],"UpsertMongoDoc":[{"__symbolic":"method"}],"UpsertMongoDocObs":[{"__symbolic":"method"}],"DeleteMongoDoc":[{"__symbolic":"method"}],"GetApiVersion":[{"__symbolic":"method"}],"GetUserDesigns":[{"__symbolic":"method"}],"GetAllUserStats":[{"__symbolic":"method"}],"GetUserStats":[{"__symbolic":"method"}],"UpsertUserStats":[{"__symbolic":"method"}],"UpdateConfiguration":[{"__symbolic":"method"}],"SaveSingleConfiguration":[{"__symbolic":"method"}],"RemoveSingleConfig":[{"__symbolic":"method"}],"GetServerConfigurationSettings":[{"__symbolic":"method"}],"GetConfig":[{"__symbolic":"method"}],"GetManagedCacheHitLogs":[{"__symbolic":"method"}],"UpdateCacheStatus":[{"__symbolic":"method"}],"GetManagedCacheDataStatus":[{"__symbolic":"method"}],"GetIsAdmin":[{"__symbolic":"method"}],"GetCacheDataByKey":[{"__symbolic":"method"}],"ForceUpdateByKey":[{"__symbolic":"method"}],"getRequestOptions":[{"__symbolic":"method"}],"GetManagedDataReply":[{"__symbolic":"method"}],"checkAndRefreshAuthToken":[{"__symbolic":"method"}],"getAuthHeadersOrLoginAsync":[{"__symbolic":"method"}],"handleError":[{"__symbolic":"method"}],"GetGenericDataReply":[{"__symbolic":"method"}],"getAPIToken":[{"__symbolic":"method"}]}},"DisplayStateService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":41,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"WebPlatformApiService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":71,"character":23},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":71,"character":55},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":72,"character":29},{"__symbolic":"reference","name":"ObjectDiffFinderService"}]}],"Log":[{"__symbolic":"method"}],"SetWidgetPreferencesObject":[{"__symbolic":"method"}],"SetWidgetPreferencesString":[{"__symbolic":"method"}],"GetWidgetPreferencesObject":[{"__symbolic":"method"}],"GetWidgetPreferencesString":[{"__symbolic":"method"}],"GetPreferredSettingsUser":[{"__symbolic":"method"}],"GetAllPreferredSettings":[{"__symbolic":"method"}],"GetPreferredSettings":[{"__symbolic":"method"}],"SetPreferredSettings":[{"__symbolic":"method"}],"ClearLocalCache":[{"__symbolic":"method"}],"LoadWidgetConfigList":[{"__symbolic":"method"}],"AddRequiredWidgets":[{"__symbolic":"method"}],"AddRequiredWidgetsTo":[{"__symbolic":"method"}],"AddRequiredSideNavTo":[{"__symbolic":"method"}],"LoadSideNavConfigList":[{"__symbolic":"method"}],"handleSideNavSetup":[{"__symbolic":"method"}],"setSideNav":[{"__symbolic":"method"}],"SetWidgetInternalSideNav":[{"__symbolic":"method"}],"RemoveWidgetsInternalSideNav":[{"__symbolic":"method"}],"EnablePrintMode":[{"__symbolic":"method"}],"ExistingParams":[{"__symbolic":"method"}],"RouteWidgetsPerRow":[{"__symbolic":"method"}],"RouteSideNavFilter":[{"__symbolic":"method"}],"RouteSideNav":[{"__symbolic":"method"}],"SetFullScreen":[{"__symbolic":"method"}],"SetSideNavVisible":[{"__symbolic":"method"}],"ToggleNavDisplay":[{"__symbolic":"method"}],"ToggleBreadcrumb":[{"__symbolic":"method"}],"RouteSideNavDisplay":[{"__symbolic":"method"}],"RouteBreadcrumb":[{"__symbolic":"method"}],"RemoveSort":[{"__symbolic":"method"}],"UserStatsIncrement":[{"__symbolic":"method"}],"Ready":[{"__symbolic":"method"}],"SetUser":[{"__symbolic":"method"}],"SetAppTitle":[{"__symbolic":"method"}],"SaveUserStats":[{"__symbolic":"method"}],"SetSorts":[{"__symbolic":"method"}],"AddSorts":[{"__symbolic":"method"}],"AddSort":[{"__symbolic":"method"}],"RemoveFilter":[{"__symbolic":"method"}],"SetFilters":[{"__symbolic":"method"}],"AddFilters":[{"__symbolic":"method"}],"AddFilter":[{"__symbolic":"method"}],"RemoveContext":[{"__symbolic":"method"}],"SetContext":[{"__symbolic":"method"}],"AddContextList":[{"__symbolic":"method"}],"AddContext":[{"__symbolic":"method"}],"DoContextHist":[{"__symbolic":"method"}],"RouteFromQueryParamString":[{"__symbolic":"method"}],"Route":[{"__symbolic":"method"}],"ProcessParams":[{"__symbolic":"method"}],"SetWidthClass":[{"__symbolic":"method"}],"SetSideNavFilter":[{"__symbolic":"method"}],"differentParams":[{"__symbolic":"method"}],"GetDataConsumerConfigKey":[{"__symbolic":"method"}],"GetCustomHeaders":[{"__symbolic":"method"}],"GetParams":[{"__symbolic":"method"}],"RequestWidgetData":[{"__symbolic":"method"}],"UpdateWidgetConfigColumns":[{"__symbolic":"method"}],"RequestData":[{"__symbolic":"method"}],"SendData":[{"__symbolic":"method"}],"GetWebSocketDataObj":[{"__symbolic":"method"}],"UpdateUriWithContextVars":[{"__symbolic":"method"}],"RaiseToast":[{"__symbolic":"method"}],"RaiseSuccessToast":[{"__symbolic":"method"}],"RaiseWarnToast":[{"__symbolic":"method"}],"RaiseErrorToast":[{"__symbolic":"method"}],"GroupedWidgets":[{"__symbolic":"method"}],"OpenModal":[{"__symbolic":"method"}],"HideModal":[{"__symbolic":"method"}],"GetJsonDiffHtml":[{"__symbolic":"method"}],"IsByDefaultSideNav":[{"__symbolic":"method"}],"IsByDefaultWidget":[{"__symbolic":"method"}]}},"Events":{"__symbolic":"class","members":{},"statics":{"APPLICATION_READY":"APPLICATION_READY","SIDE_NAV_CHANGED":"SIDE_NAV_CHANGED","SIDE_NAV_DISPLAYED_CHANGED":"SIDE_NAV_DISPLAYED_CHANGED","BREADCRUMB_DISPLAYED_CHANGED":"BREADCRUMB_DISPLAYED_CHANGED","SIDE_NAV_FILTER_CHANGED":"SIDE_NAV_FILTER_CHANGED","CURRENT_CONTEXT_CHANGED":"CURRENT_CONTEXT_CHANGED","CURRENT_SORTS_CHANGED":"CURRENT_SORTS_CHANGED","CURRENT_FILTERS_CHANGED":"CURRENT_FILTERS_CHANGED","WIDGET_CONFIG_LIST_CHANGED":"WIDGET_CONFIG_LIST_CHANGED","WIDTH_CLASS_CHANGED":"WIDTH_CLASS_CHANGED","USER_CHANGED":"USER_CHANGED","MESSAGE_PUBLISHED":"MESSAGE_PUBLISHED","PREFERRED_SETTINGS_CHANGED":"PREFERRED_SETTINGS_CHANGED","PRINT_PREVIEW_MODE":"PRINT_PREVIEW_MODE","TITLE_CHANGED":"TITLE_CHANGED"}},"UrlConstants":{"__symbolic":"class","members":{},"statics":{"SIDENAV_NAME":"d.nav","SIDENAV_FILTER":"d.filter","SIDENAV_SHOW":"d.showSideNav","BREADCRUMB_SHOW":"d.showBreadcrumb","WIDGETS_PER_ROW":"d.perRow"}},"CacheConstants":{"__symbolic":"class","members":{},"statics":{"DEFAULT":"default","NEVER":"never","PERMANENT":"permanent"}},"ClientSettingsService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{}},"ObjectDiffFinderService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":2,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"equalObj":[{"__symbolic":"method"}],"isValidAttr":[{"__symbolic":"method"}],"stringifyObjectKey":[{"__symbolic":"method"}],"escapeHTML":[{"__symbolic":"method"}],"formatChange":[{"__symbolic":"method"}],"inspect":[{"__symbolic":"method"}],"accInspect":[{"__symbolic":"method"}],"formatToJsonXMLString":[{"__symbolic":"method"}],"formatChangesToXMLString":[{"__symbolic":"method"}],"diffObject":[{"__symbolic":"method"}]}},"AppState":{"__symbolic":"class","members":{}},"LogEntry":{"__symbolic":"class","members":{}},"UserInfo":{"__symbolic":"class","members":{}},"AppStateService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1}}],"members":{"appendLog":[{"__symbolic":"method"}]}},"datapoint":{"__symbolic":"interface"},"HighChartDataAdapter":{"__symbolic":"class","members":{},"statics":{"colorsPalette":["#a468a6","#e67c52","#e4a928","#dec81c","#86a67b","#d39f99","#cdd399","#e5e5c9","#5aaeae","#93836b","#a468a6","#e67c52","#e4a928","#dec81c","#86a67b","#d39f99","#cdd399","#e5e5c9","#5aaeae","#93836b"]}},"ColorHelper":{"__symbolic":"class","members":{},"statics":{"h":"","hexToR":{"__symbolic":"function","parameters":["h"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"parseInt"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColorHelper"},"member":"cutHex"},"arguments":[{"__symbolic":"reference","name":"h"}]},"member":"substring"},"arguments":[0,2]},16]}},"hexToG":{"__symbolic":"function","parameters":["h"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"parseInt"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColorHelper"},"member":"cutHex"},"arguments":[{"__symbolic":"reference","name":"h"}]},"member":"substring"},"arguments":[2,4]},16]}},"hexToB":{"__symbolic":"function","parameters":["h"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"parseInt"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColorHelper"},"member":"cutHex"},"arguments":[{"__symbolic":"reference","name":"h"}]},"member":"substring"},"arguments":[4,6]},16]}},"cutHex":{"__symbolic":"function","parameters":["h"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"h"},"member":"charAt"},"arguments":[0]},"right":"#"},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"h"},"member":"substring"},"arguments":[1,7]},"elseExpression":{"__symbolic":"reference","name":"h"}}},"addOpacity":{"__symbolic":"function","parameters":["opacity"],"value":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"error","message":"Expression form not supported","line":400,"character":67,"module":"./components/highchart-platform/highchart-platform-data-adapter"},"right":{"__symbolic":"reference","name":"opacity"}},"right":")"}}}},"IChartConfig":{"__symbolic":"interface"},"IChartSeries":{"__symbolic":"interface"},"ITableData":{"__symbolic":"interface"},"IBoxAndWhiskerDataPoints":{"__symbolic":"interface"},"IScatterDataPoints":{"__symbolic":"interface"},"IChartStatsCalc":{"__symbolic":"interface"},"IBoxPlotSeriesDefaultBoxToolTip":{"__symbolic":"interface"},"BoxPlotOptions":{"__symbolic":"interface"},"ChartConfigBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"getBaseConfig":[{"__symbolic":"method"}],"addSeries":[{"__symbolic":"method"}],"prepareTreeMapConfig":[{"__symbolic":"method"}],"handleScatterDatetime":[{"__symbolic":"method"}]}},"ScatterDataPoint":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"string"}]}]}},"ChartStatsCalc":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getPercentile":[{"__symbolic":"method"}],"getThreeSigmaHigh":[{"__symbolic":"method"}],"getThreeSigmaLow":[{"__symbolic":"method"}],"getWhiskerHigh":[{"__symbolic":"method"}],"getWhiskerLow":[{"__symbolic":"method"}],"getMedian":[{"__symbolic":"method"}],"getLowerQuantile":[{"__symbolic":"method"}],"getUpperQuantile":[{"__symbolic":"method"}],"getMiddleIndex":[{"__symbolic":"method"}]}},"UtilityFunctions":{"__symbolic":"class","members":{},"statics":{"ListContains":{"__symbolic":"function","parameters":["list","value"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":">","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"list"},"member":"findIndex"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":163,"character":31,"module":"./classes/UtilityFunctions"}]},"right":-1},"right":{"__symbolic":"binop","operator":">","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"list"},"member":"findIndex"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":163,"character":74,"module":"./classes/UtilityFunctions"}]},"right":-1}}}}},"Dictionary":{"__symbolic":"class","arity":2,"members":{"__ctor__":[{"__symbolic":"constructor"}],"upsert":[{"__symbolic":"method"}],"keys":[{"__symbolic":"method"}],"values":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"containsKey":[{"__symbolic":"method"}]}},"ApiVersionCheckResults":{"__symbolic":"class","members":{}},"WindowUtils":{"__symbolic":"class","members":{},"statics":{"STORAGE_TYPE_LOCAL":"local","STORAGE_TYPE_SESSION":"session","getNativeWindowObject":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"reference","name":"window"}}}},"TreeMapDataSetAdapter":{"__symbolic":"class","members":{},"statics":{"ChartConfig":{},"GetbaseConfig":{"__symbolic":"function","parameters":["titleText"],"defaults":["Treeemap in HighCharts module"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"angular-highcharts","name":"Chart","line":45,"character":19},"arguments":[{"title":{"text":{"__symbolic":"reference","name":"titleText"}},"credits":{"enabled":false}}]}}}},"DataSetFilter":{"__symbolic":"class","members":{},"statics":{"FilterOperationMap":{"__symbolic":"function","parameters":[],"value":[{"name":"=","value":"=="},{"name":"!=","value":"!=="},{"name":">","value":"gt"},{"name":">=","value":"ge"},{"name":"<","value":"lt"},{"name":"<=","value":"le"},{"name":"included in","value":"in"},{"name":"text (case sensitive) =","value":"eq"},{"name":"text (case insensitive) =","value":"nceq"},{"name":"text (case sensitive) !=","value":"ne"},{"name":"text (case sensitive) starts with","value":"startswith"},{"name":"text (case insensitive) starts with","value":"ncstartswith"},{"name":"text (case sensitive) ends with","value":"endswith"},{"name":"text (case insensitive) ends with","value":"ncendswith"},{"name":"text (case sensitive) contains","value":"contains"},{"name":"text (case insensitive) contains","value":"nccontains"}]}}},"FilterSpec":{"__symbolic":"class","members":{"SetAlwaysPass":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"FilterRule"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@angular/router","name":"Params","line":455,"character":101},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]}]}],"Passes":[{"__symbolic":"method"}],"CreateFilterMethod":[{"__symbolic":"method"}],"trySetAsNumber":[{"__symbolic":"method"}]},"statics":{"UserExpressionToFormatted":{"__symbolic":"function","parameters":["userExpression"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"FilterSpec"},"member":"UserExpressionToFormattedCS"},"arguments":[{"__symbolic":"reference","name":"userExpression"},false]}}}},"Descriptive":{"__symbolic":"class","members":{},"statics":{"mean":{"__symbolic":"function","parameters":["data"],"value":{"__symbolic":"binop","operator":"/","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Descriptive"},"member":"sum"},"arguments":[{"__symbolic":"reference","name":"data"}]},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"data"},"member":"length"}}},"isEven":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"binop","operator":"%","left":{"__symbolic":"reference","name":"value"},"right":2},"right":0}}}},"Dataset":{"__symbolic":"interface"},"DataSetConverter":{"__symbolic":"class","members":{}},"Guid":{"__symbolic":"class","members":{}},"DataRequestError":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}]}},"DataRequestReply":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"ManagedDataReply"},{"__symbolic":"reference","name":"any"}]}]}},"WebSocketData":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]}},"AppDisplayState":{"__symbolic":"class","members":{}},"CurrentAppState":{"__symbolic":"class","members":{}},"SideNavState":{"__symbolic":"interface"},"SideNavWidgetConfig":{"__symbolic":"interface"},"SideNavList":{"__symbolic":"interface"},"ConflictViewer":{"__symbolic":"interface"},"ConflictData":{"__symbolic":"interface"},"DataSet":{"__symbolic":"interface"},"DataArrayOfObjects":{"__symbolic":"interface"},"ManagedCacheHitLog":{"__symbolic":"class","members":{}},"CustomMenu":{"__symbolic":"interface"},"CustomMenuItem":{"__symbolic":"interface"},"GroupedKey":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"GroupedKey"}]}]}},"UserStatistics":{"__symbolic":"interface"},"WidgetPreferences":{"__symbolic":"interface"},"WidgetRegistration":{"__symbolic":"interface"},"WidgetGroup":{"__symbolic":"interface"},"UsageCounter":{"__symbolic":"interface"},"WidgetConfiguration":{"__symbolic":"interface"},"ContextMatchingRule":{"__symbolic":"interface"},"DataConsumerConfiguration":{"__symbolic":"interface"},"DataPolicy":{"__symbolic":"interface"},"APIStoreTokenInfo":{"__symbolic":"interface"},"FilterRule":{"__symbolic":"interface"},"CacheRules":{"__symbolic":"interface"},"DataTableValueInfo":{"__symbolic":"interface"},"TableButtonInfo":{"__symbolic":"interface"},"TableRowSelectionButton":{"__symbolic":"interface"},"ActionButtonsPosition":{"__symbolic":"interface"},"GenericTableConfiguration":{"__symbolic":"interface"},"ActionButtonConfig":{"__symbolic":"class","members":{}},"Feedback":{"__symbolic":"class","members":{}},"TableColumnRules":{"__symbolic":"interface"},"ColumnConfig":{"__symbolic":"interface"},"ColumnHeaderConfigs":{"__symbolic":"interface"},"RowChangeBehavior":{"__symbolic":"interface"},"HeatmapRules":{"__symbolic":"interface"},"ParetoRules":{"__symbolic":"interface"},"CsvExportOptions":{"__symbolic":"interface"},"GenericFullChartConfiguration":{"__symbolic":"interface"},"GenericChartConfiguration":{"__symbolic":"interface"},"SeriesGroupConfig":{"__symbolic":"interface"},"SeriesConfig":{"__symbolic":"interface"},"NameValue":{"__symbolic":"interface"},"NameIndex":{"__symbolic":"interface"},"DataGrouping":{"__symbolic":"interface"},"Aggregation":{"__symbolic":"interface"},"Pivot":{"__symbolic":"interface"},"ManagedDataReply":{"__symbolic":"interface"},"CacheDataInfo":{"__symbolic":"interface"},"ɵa":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"app-master-configuration","template":"<div class=\"container-fluid\">\n\n    <div class=\"row\">\n        <div *ngIf=\"Ready()\" class=\"col-sm-4 \">\n            <div class=\"col-xs-12\">\n                <input type=\"text\" class=\"form-control mb-3\" [ngModel]=\"filter\" (ngModelChange)=\"onLocalFilterChange($event)\" placeholder=\"Search\"\n                />\n            </div>\n            <div class=\"pc-sidenav\">\n                <div class=\"card mb-3 \">\n                    <div class=\"card-header d-flex justify-content-between\">\n                        <h5 class=\"m-0\">Side Navigation</h5>\n                        <button type=\"button\" class=\"btn btn-success btn-sm\" (click)=\"toggleCollapse('s')\">\n                            <i class=\"fa fa-arrows-v\"></i>\n                        </button>\n                    </div>\n                    <ul [collapse]=\"isCollapsed('s')\" class=\"list-group \">\n                        <li (click)=\"UserSelect('SideNav', sideNavNV.name)\" class=\"list-group-item justify-content-between {{IsActive('SideNav', sideNavNV.name)}}\"\n                            *ngFor=\"let sideNavNV of filteredSideNavWidgetConfig.widgetNameList; let idx = index\" [ngClass]=\"{'modifiedColor': sideNavNV?.modified}\">\n                            <div>{{sideNavNV.name}}</div>\n                            <h6>\n                                <span class=\"badge badge-default\" *ngIf=\"sideNavNV?.unSavedData\">UNSAVED</span>\n                            </h6>\n                        </li>\n                    </ul>\n                </div>\n                <div class=\"card mb-3\">\n                    <div class=\"card-header d-flex justify-content-between\">\n                        <h5 class=\"m-0\">Widget Configuration</h5>\n                        <div>\n                            <button type=\"button\" class=\"btn btn-info btn-sm\" (click)=\"Add('WidgetConfiguration')\">\n                                <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n                            </button>\n                            <button type=\"button\" class=\"btn btn-info btn-sm\" (click)=\"toggleCollapse('w')\">\n                                <i class=\"fa fa-arrows-v\"></i>\n                            </button>\n                        </div>\n                    </div>\n                    <ul [collapse]=\"isCollapsed('w')\" class=\"list-group\">\n                        <li (click)=\"UserSelect('WidgetConfiguration', WidgetConfiguration.name)\" class=\"list-group-item justify-content-between {{IsActive('WidgetConfiguration', WidgetConfiguration.name)}}\"\n                            *ngFor=\"let WidgetConfiguration of filteredWidgetConfigurationList; let idx = index\" [ngClass]=\"{'modifiedColor': WidgetConfiguration?.modified}\">\n                            <span class=\"float-sm-left\">{{WidgetConfiguration.name}} </span>\n\n                            <span class=\"float-sm-right\">\n                                <span class=\"badge badge-default\" *ngIf=\"WidgetConfiguration?.unSavedData\">UNSAVED</span>\n                                <button type=\"button\" class=\"btn btn-sm btn-secondary\" *ngIf=\"CanAddWidgetConfigAsSideNav(WidgetConfiguration)\" (click)=\"AddWidgetConfigAsSideNav(WidgetConfiguration)\">Side Nav</button>\n                            </span>\n                        </li>\n\n                    </ul>\n                </div>\n\n                <div class=\"card mb-3\">\n                    <div class=\"card-header d-flex justify-content-between\">\n                        <h5 class=\"m-0\">Data Policy</h5>\n                        <div>\n                            <button type=\"button\" class=\"btn btn-warning btn-sm\" (click)=\"Add('DataPolicy')\">\n                                <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n                            </button>\n\n                            <button type=\"button\" class=\"btn btn-warning btn-sm\" (click)=\"toggleCollapse('d')\">\n                                <i class=\"fa fa-arrows-v\"></i>\n                            </button>\n                        </div>\n\n                    </div>\n                    <ul [collapse]=\"isCollapsed('d')\" class=\"list-group\">\n                        <li (click)=\"UserSelect('DataPolicy', DataPolicy.name)\" class=\"list-group-item justify-content-between {{IsActive('DataPolicy', DataPolicy.name)}}\"\n                            *ngFor=\"let DataPolicy of filteredDataPolicyList; let idx = index \" [ngClass]=\"{'modifiedColor': DataPolicy?.modified}\">\n                            <span class=\"float-sm-left\">{{DataPolicy.name}}</span>\n                        </li>\n\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-sm-8\">\n            <div *ngIf=\"selectedSideNav\">\n                <div class=\"card card-outline-success mb-2\">\n                    <div class=\"card-block\">\n                        <div class=\"d-flex justify-content-between mb-4\">\n                            <h4 class=\"card-title\">Side Navigation: {{selectedSideNav.name}}</h4>\n                            <div class=\"save-button-wrapper\" *ngIf=\"!readOnlySideNavigation\">\n                                <button class=\"btn btn-primary\" (click)=\"onSaveDb({typeName : 'SideNav', widget: selectedSideNav})\">Save DB</button>\n                                <button class=\"btn btn-success\" (click)=\"onModified({typeName : 'SideNav', widget: selectedSideNav})\">Locally</button>\n                                <div dropdown class=\"dropdown action-group\">\n                                    <button class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"dropdownMenuButton\" dropdownToggle data-toggle=\"dropdown\" aria-haspopup=\"true\"\n                                        aria-expanded=\"false\">\n                                        <i class=\"fa fa-ellipsis-v\" aria-hidden=\"true\"></i>\n                                    </button>\n                                    <div *dropdownMenu class=\"dropdown-menu  dropdown-menu-right\" aria-labelledby=\"dropdownMenuButton\">\n                                        <button class=\"dropdown-item\" type=\"button\" (click)=\"getFreshAndReset('SideNav')\">Reset</button>\n                                        <button class=\"dropdown-item\" type=\"button\" (click)=\"Remove('SideNav', selectedSideNav.name)\"> Delete</button>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"alert alert-info\" role=\"alert\" *ngIf=\"readonlyWidget\">\n                            <strong>Heads up!</strong> This is a Read Only widget.\n                        </div>\n                        <tabset [justified]=\"true\">\n                            <tab heading=\"Properties\">\n                                <div class=\"form-group row\">\n                                    <label for=\"name\" class=\"col-sm-2 col-form-label\">Display Name</label>\n                                    <div class=\"col-sm-10\">\n                                        <input type=\"text\" class=\"form-control\" [(ngModel)]=\"selectedSideNav.value\" name=\"value\" [disabled]=\"readOnlySideNavigation\">\n                                    </div>\n                                </div>\n                            </tab>\n                            <tab heading=\"Raw\">\n                                <pre>{{filteredSideNavWidgetConfig | json}}</pre>\n                            </tab>\n                        </tabset>\n                    </div>\n                </div>\n            </div>\n\n            <div *ngIf=\"selectedWidgetConfiguration\">\n                <div class=\"card card-outline-info mb-2\">\n                    <div class=\"card-block\">\n                        <div class=\"d-flex justify-content-between mb-4\">\n                            <h4 class=\"card-title\">Widget Configuration: {{selectedWidgetConfiguration.name}}</h4>\n                            <div class=\"save-button-wrapper\" *ngIf=\"!readOnlyWidget\">\n                                <button class=\"btn btn-primary\" (click)=\"onSaveDb({typeName : 'WidgetConfiguration', widget: selectedWidgetConfiguration})\">Save DB</button>\n                                <button class=\"btn btn-success\" (click)=\"onModified({typeName : 'WidgetConfiguration', widget: selectedWidgetConfiguration})\">Locally</button>\n                                <div dropdown class=\"dropdown action-group\">\n                                    <button class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"dropdownMenuButton\" dropdownToggle aria-haspopup=\"true\"\n                                        aria-expanded=\"false\">\n                                        <i class=\"fa fa-ellipsis-v\" aria-hidden=\"true\"></i>\n                                    </button>\n                                    <div *dropdownMenu class=\"dropdown-menu  dropdown-menu-right\" aria-labelledby=\"dropdownMenuButton\">\n                                        <button type=\"button\" class=\"dropdown-item\" (click)=\"getFreshAndReset('WidgetConfiguration')\">Reset</button>\n                                        <button type=\"button\" class=\"dropdown-item\" (click)=\"CloneselectedWidgetConfiguration()\">Clone</button>\n                                        <button type=\"button\" class=\"dropdown-item\" (click)=\"Remove('WidgetConfiguration', selectedWidgetConfiguration.name)\"> Delete</button>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <app-widget-config-editor [selectedWidgetConfig]=\"selectedWidgetConfiguration\"></app-widget-config-editor>\n                    </div>\n                </div>\n            </div>\n\n            <div *ngIf=\"selectedDataPolicy\">\n                <div class=\"card card-outline-warning mb-2\">\n                    <div class=\"card-block\">\n                        <div class=\"d-flex justify-content-between mb-4\">\n                            <h4 class=\"card-title\">Data Policy: {{selectedDataPolicy.name}}</h4>\n                            <div class=\"save-button-wrapper\">\n                                <button class=\"btn btn-primary\" (click)=\"onSaveDb({typeName : 'DataPolicy', widget: selectedDataPolicy})\">Save DB</button>\n                                <button class=\"btn btn-light\" (click)=\"getFreshAndReset('DataPolicy')\">Reset</button>\n                                <div dropdown class=\"dropdown action-group\">\n                                    <button class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"dropdownMenuButton\" dropdownToggle data-toggle=\"dropdown\" aria-haspopup=\"true\"\n                                        aria-expanded=\"false\">\n                                        <i class=\"fa fa-ellipsis-v\" aria-hidden=\"true\"></i>\n                                    </button>\n                                    <div *dropdownMenu class=\"dropdown-menu  dropdown-menu-right\" aria-labelledby=\"dropdownMenuButton\">\n                                        <button type=\"button\" class=\"dropdown-item\" (click)=\"CloneselectedDataPolicy()\">Clone</button>\n                                        <button type=\"button\" class=\"dropdown-item\" (click)=\"Remove('DataPolicy', selectedDataPolicy.name)\"> Delete</button>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <app-data-policy-editor [selectedDataPolicy]=\"selectedDataPolicy\"></app-data-policy-editor>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <ng-template #diffCompareModal>\n        <div class=\"modal-header\">\n            <h4 class=\"modal-title pull-left\">Conflict Viewer </h4>\n            <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"hideModal()\">\n                <span aria-hidden=\"true\">&times;</span>\n            </button>\n        </div>\n        <div class=\"modal-body\">\n            <div class=\"row\">\n                <div class=\"col-sm-4\">\n                    <div class=\"card\">\n                        <div class=\"card-block\">\n                            <h3 class=\"card-title\">Data base Copy</h3>\n\n                            <pre>{{conflictViewerFullData.data.dbCopy | json}}</pre>\n                            <button class=\"btn btn-primary\" (click)=\"saveDBAfterConflict('db')\">Save</button>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"col-sm-4\">\n                    <div class=\"card\">\n                        <div class=\"card-block\">\n                            <h3 class=\"card-title\">Your Copy</h3>\n                            <pre>{{conflictViewerFullData.data.userCopy | json}}</pre>\n                            <button class=\"btn btn-primary\" (click)=\"saveDBAfterConflict('user')\">Save</button>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"col-sm-4\">\n                    <div class=\"card\">\n                        <div class=\"card-block\">\n                            <h3 class=\"card-title\">Diff</h3>\n                            <pre [innerHTML]=\"diffBetweenConfigs\"></pre>\n                        </div>\n                    </div>\n                </div>\n\n            </div>\n        </div>\n    </ng-template>","styles":[".list-group-item{\n    cursor:pointer;\n}\n.btn-sm{\n    padding:1px;\n    padding-left:8px;\n    padding-right:8px;\n}\n\n.modifiedColor{\n    background-color:#f4b942\n}\n\n:host ::ng-deep tabset .tab-content{\n    padding:15px;\n    padding-top:25px;\n}\n\n.list-group-item{\n    border-left:none;\n    border-right:none;\n}\n\n.list-group-item:first-child{\n    border-top:none;\n}\n\n.list-group-item:last-child{\n    border-bottom:none;\n}\n\n.action-group .dropdown-toggle::after{\n    display:none;\n}\n\n.action-group{\n    display:inline-block;\n}\n.action-group .dropdown-menu{\n    background-color:white;\n    \n}\n.pc-sidenav{\n    overflow-y:auto;\n    height:calc(100vh - 252px);\n}\n.action-group .dropdown-item{\n    color:#292b2c;\n    text-align:center;\n}\n.action-group .dropdown-item:hover{\n    background-color:#f7f7f9;\n}"]}]}],"members":{"diffCompareModal":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":317,"character":3},"arguments":["diffCompareModal"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":320,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"onModified":[{"__symbolic":"method"}],"onSaveDb":[{"__symbolic":"method"}],"conflictConfigReader":[{"__symbolic":"method"}],"sideNavConfigReader":[{"__symbolic":"method"}],"widgetConfigReader":[{"__symbolic":"method"}],"dataPolicyConfigReader":[{"__symbolic":"method"}],"triggerWhenSaveConflit":[{"__symbolic":"method"}],"saveDBAfterConflict":[{"__symbolic":"method"}],"onLocalFilterChange":[{"__symbolic":"method"}],"hideModal":[{"__symbolic":"method"}],"onFiltersChanged":[{"__symbolic":"method"}],"ApplyFilter":[{"__symbolic":"method"}],"onInitialize":[{"__symbolic":"method"}],"onStateChanged":[{"__symbolic":"method"}],"toggleCollapse":[{"__symbolic":"method"}],"isCollapsed":[{"__symbolic":"method"}],"InitializeSideNav":[{"__symbolic":"method"}],"InitializeWidgetConfig":[{"__symbolic":"method"}],"InitializeDataPolicy":[{"__symbolic":"method"}],"Ready":[{"__symbolic":"method"}],"IsActive":[{"__symbolic":"method"}],"IsSelected":[{"__symbolic":"method"}],"Add":[{"__symbolic":"method"}],"Remove":[{"__symbolic":"method"}],"RemoveResponse":[{"__symbolic":"method"}],"UserSelect":[{"__symbolic":"method"}],"checkSideNavSavedLocally":[{"__symbolic":"method"}],"checkWidgetSavedLocally":[{"__symbolic":"method"}],"Select":[{"__symbolic":"method"}],"PublishItemSelectedMessage":[{"__symbolic":"method"}],"onNewMessage":[{"__symbolic":"method"}],"SetSelectedSideNavFromMessage":[{"__symbolic":"method"}],"SetSelectedWidgetConfigFromMessage":[{"__symbolic":"method"}],"SetSelectedDataPolicyFromMessage":[{"__symbolic":"method"}],"CloneselectedWidgetConfiguration":[{"__symbolic":"method"}],"CloneselectedDataPolicy":[{"__symbolic":"method"}],"AvailableSideNavWidgetNames":[{"__symbolic":"method"}],"CanAddWidgetConfigAsSideNav":[{"__symbolic":"method"}],"AddWidgetConfigAsSideNav":[{"__symbolic":"method"}],"AddWidgetConfiguration":[{"__symbolic":"method"}],"AddPolicy":[{"__symbolic":"method"}],"getFreshAndReset":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-widget-help","template":"\n<h3>Confluence documentation links</h3>\n\n<table class=\"table table-condensed\">\n  <tbody>\n    <tr>\n        <td>\n          <a href=\"https://confluence.micron.com/confluence/display/ITENG/Developer+Guide\" target=\"_blank\">Developer Guide</a>\n        </td>\n    </tr>\n    <tr>\n      <td>\n        <a href=\"https://confluence.micron.com/confluence/display/ITENG/Guide+to+Creating+a+New+Widget\" target=\"_blank\">Creating a new widget</a>\n      </td>\n    </tr>\n      \n  </tbody>\n</table>\n\n\n\n\n\n\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":46,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}]}},"ɵc":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"app-cache-data-admin","template":"<p><strong>Active Hours</strong>: Hours from first request that automatic updates occur.</p>\n<p><strong>Inactive Hours</strong>: Hours from last request before cache is retired.</p>\n<p *ngIf=\"warnForNewerMiddleLayer\" class=\"bg-warning\"><strong>Middle layer upgrade recommended</strong>: Additional cache information available from newer version of middle layer..</p>\n\n\n<app-platform-table [Config]=\"tableConfig\" (ButtonInfoClick)=\"RowSelected($event)\" [Dataset]=\"dataSet\"></app-platform-table>\n\n<button type=\"button\" class=\"btn btn-info btn-sm\" (click)=\"Refresh()\">Refresh</button>\n<button type=\"button\" class=\"btn btn-info btn-sm\" (click)=\"Update()\">Update</button> any cache expiring in the next\n<input\n  name=\"minutesAhead\" type=\"text\" style=\"width: 50px\" [(ngModel)]=\"minutesAhead\"> minutes\n  <span *ngIf=\"updating\" class=\"label label-warning\">\n    Updating...   <i class=\"fa fa-spinner fa-spin\"></i></span>\n\n  <div id=\"dataViewModal\" tabindex=\"-1\" role=\"dialog\" class=\"modal fade\">\n    <!-- modal-big  -->\n    <div class=\"modal-dialog modal-lg \" role=\"document\">\n      <div class=\"modal-content\">\n        <div class=\"modal-header\">\n          <span class=\"modal-title\">Cached Data: {{selectedKey}}</span>\n          <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n        </div>\n        <div class=\"modal-body\">\n           <app-platform-table *ngIf=\"displayDataSet\" [Dataset]=\"displayDataSet\" [SortAndfilterLocally]=\"true\"></app-platform-table>\n           <pre *ngIf=\"freeJsonData\">\n             {{freeJsonData | json}}\n           </pre>\n        </div>\n      </div>\n    </div>\n  </div>","styles":[".modal-lg{\n   max-width:90%;\n   max-height:90%;\n}\n\n.modal-lg .modal-body{\n  overflow-y:auto;\n}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":89,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"onInitialize":[{"__symbolic":"method"}],"Refresh":[{"__symbolic":"method"}],"RowSelected":[{"__symbolic":"method"}],"ViewData":[{"__symbolic":"method"}],"UpdateForce":[{"__symbolic":"method"}],"Update":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-user-widget-prefs","template":"<div *ngIf=\"!minimumVersionProblem; else minVersionProblem\" class=\"container-fluid\">\n\n  <div class=\"row\">\n    <div class=\"col-md-3\">\n\n      <div class=\"card\">\n        <div class=\"card-header\">\n          <h5 class=\"m-0\">Users</h5>\n          <input type=\"text\" class=\"form-control mb-3\" [ngModel]=\"userFilter\" (ngModelChange)=\"onLocalUserFilterChange($event)\" placeholder=\"Search\"\n          />\n        </div>\n\n        <ul *ngIf=\"filteredUserStatisticsList; else loading\" class=\"list-group scrollable-list\">\n          <li *ngFor=\"let userStats of filteredUserStatisticsList; let idx = index\" (click)=\"UserSelect(userStats)\" class=\"list-group-item justify-content-between {{IsUserActive(userStats)}}\">\n\n            <span class=\"float-sm-left\">{{userStats.userName}} </span>\n\n          </li>\n        </ul>\n      </div>\n    </div>\n\n    <div class=\"col-md-3\">\n      <div *ngIf=\"selectedUserStatistics\" class=\"card\">\n        <div class=\"card-header\">\n          <h5 class=\"m-0\">widget preference list: {{selectedUserStatistics.userName}}</h5>\n          <input type=\"text\" class=\"form-control mb-3\" [ngModel]=\"preferencesFilter\" (ngModelChange)=\"onLocalPreferencesFilterChange($event)\"\n            placeholder=\"Search\" />\n        </div>\n\n        <ul *ngIf=\"filteredPreferencesList\"  class=\"list-group scrollable-list\">\n          <li *ngFor=\"let preferences of filteredPreferencesList; let idx = index\" (click)=\"PreferencesSelect(preferences)\" class=\"list-group-item justify-content-between {{IsPreferencesActive(preferences)}}\">\n\n            <span class=\"float-sm-left\">{{preferences.uniqueWidgetKey}} </span>\n\n          </li>\n        </ul>\n      </div>\n    </div>\n    <div class=\"col-md-6\">\n      <div class=\"card\">\n        <div class=\"card-header\">\n          <h5 *ngIf=\"selectedPreferences\" class=\"m-0\">{{selectedPreferences.uniqueWidgetKey}} </h5>\n        </div>\n\n        <div *ngIf=\"JsonData\">\n          <button [disabled]=\"!canEditSettings\" type=\"button\" class=\"btn btn-info btn-sm\" (click)=\"UpdatePreferencesJson()\">\n            Save Config Changes\n          </button>\n          <textarea [disabled]=\"!canEditSettings\" style=\"width: 100%; height: 400px\" [(ngModel)]=\"JsonData\" name=\"JsonData\"></textarea>\n      </div>\n      </div>\n    </div>\n\n  </div>\n</div>\n\n<ng-template #loading>\n  <i class=\"fa fa-spinner fa-spin\"></i> Loading data...\n</ng-template>\n\n<ng-template #minVersionProblem>\n    <div class=\"card\">\n        <div class=\"card-header\">\n          <h3>Middle layer API version compatility issue</h3>          \n        </div>\n        <span>{{minimumVersionProblem}}</span>\n    </div>\n  \n</ng-template>","styles":[".modal-lg{\n   max-width:90%;\n   max-height:90%;\n}\n\n.modal-lg .modal-body{\n  overflow-y:auto;\n}\n\n.scrollable-list{\n  overflow-y:auto;\n  height:80vh;\n}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":112,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"minimumApiVersion":[{"__symbolic":"method"}],"onInitialize":[{"__symbolic":"method"}],"LoadUsers":[{"__symbolic":"method"}],"ApplyUserFilters":[{"__symbolic":"method"}],"CheckSelectedUserOK":[{"__symbolic":"method"}],"ApplyPreferencesFilters":[{"__symbolic":"method"}],"CheckSelectedPreferencesOK":[{"__symbolic":"method"}],"onLocalUserFilterChange":[{"__symbolic":"method"}],"onLocalPreferencesFilterChange":[{"__symbolic":"method"}],"UserSelect":[{"__symbolic":"method"}],"IsUserActive":[{"__symbolic":"method"}],"PreferencesSelect":[{"__symbolic":"method"}],"IsPreferencesActive":[{"__symbolic":"method"}],"UpdatePreferencesJson":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"app-diagnostics","template":"<tabset>\n    <tab heading = \"Individual usage Statistics\">\n        <table class=\"table table-sm table-striped\">\n          <thead>\n            <tr>\n              <th>Type</th>\n              <th>Key</th>\n              <th>Count</th>\n              <th>Last</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr *ngFor=\"let stat of userStatistics.widgetUsageStatistics\">\n              <td>widget usage</td>\n              <td>{{stat.key}}</td>\n              <td>{{stat.count}}</td>\n              <td>{{stat.lastUsage}}</td>\n            </tr>\n\n            <tr *ngFor=\"let stat of userStatistics.applicationUsageStatistics\">\n              <td>app counters</td>\n              <td>{{stat.key}}</td>\n              <td>{{stat.count}}</td>\n              <td>{{stat.lastUsage}}</td>\n            </tr>\n\n            <tr *ngFor=\"let stat of userStatistics.sideNavUsageStatistics\">\n              <td>side nav usage</td>\n              <td>{{stat.key}}</td>\n              <td>{{stat.count}}</td>\n              <td>{{stat.lastUsage}}</td>\n            </tr>\n\n             <tr *ngFor=\"let stat of userStatistics.dataPolicyUsageStatistics\">\n              <td>data policy</td>\n              <td>{{stat.key}}</td>\n              <td>{{stat.count}}</td>\n              <td>{{stat.lastUsage}}</td>\n            </tr>\n\n          </tbody>\n        </table>\n    </tab>\n    <tab heading=\"User entitled designs\">\n        <app-platform-table [Dataset]=\"designIdDataSet\" [SortAndfilterLocally]=\"true\"></app-platform-table>\n    </tab>\n    <tab heading=\"Widget Registration and Layout\">\n    <table class=\"table table-sm table-striped\">\n          <thead>\n            <tr>\n              <th>user/pref</th>\n              <th>key</th>\n              <th>width</th>\n              <th>height</th>\n              <th>widgets</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr *ngFor=\"let stat of widgetGroups\">\n              <td>user</td>\n              <td>{{stat[0]}}</td>\n              <td>{{stat[1]}}</td>\n              <td>{{stat[2]}}</td>\n              <td>{{stat[3]}}</td>\n            </tr>\n            <tr *ngFor=\"let stat of preferredWidgetGroups\">\n              <td>preferred</td>\n              <td>{{stat[0]}}</td>\n              <td>{{stat[1]}}</td>\n              <td>{{stat[2]}}</td>\n              <td>{{stat[3]}}</td>\n            </tr>\n\n          </tbody>\n        </table>\n    </tab>\n\n    <tab heading=\"Settings\">\n      <table class=\"table table-sm table-striped\">\n        <tr *ngFor=\"let setting of settings\">\n          <td>{{setting.name}}</td>\n          <td>{{setting.value}}</td>\n        </tr>\n      </table>\n    </tab>\n\n    <tab heading=\"Versions\">\n      <table class=\"table table-sm table-striped\">\n        <tr *ngFor=\"let version of versions\">\n          <td>{{version.name}}</td>\n          <td>{{version.value}}</td>\n        </tr>\n      </table>\n    </tab>\n\n    <tab heading=\"Activity Logs\">\n      <table class=\"table table-sm table-striped\">\n        <thead>\n          <tr>\n            <th>ms</th>\n            <th>message</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr *ngFor=\"let log of entries\" [ngClass]=\"getLogClass(log.level)\">\n            <td style=\"padding: 2px\">{{log.milliseconds}}</td>\n            <td style=\"padding: 2px\">{{log.Message}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </tab>\n    <tab heading=\"Server cache hit logs\">\n      <app-server-hit-logs></app-server-hit-logs>\n    </tab>\n    <tab heading=\"usage logs\">\n\n      <button *ngFor=\"let nv of buttons\"  class=\"btn {{IsActive(nv.value)}}\" (click)=\"SelectStatsType(nv.value)\">{{nv.name}}</button>\n\n      <table class=\"table table-sm table-striped\">\n        <thead><tr> <th>Item</th><th>Count</th> </tr></thead>\n        <tbody>\n          <tr *ngFor=\"let ni of aggregateStats\">\n            <td>{{ni.name}}</td>\n            <td>{{ni.index}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </tab>\n    <tab heading=\"all user counts\">\n\n\n      <button *ngFor=\"let nv of buttons\"  class=\"btn {{IsActive(nv.value)}}\" (click)=\"SelectStatsType(nv.value)\">{{nv.name}}</button>\n\n      <input style=\"width: 70%;\" type=\"text\" class=\"form-control\" [ngModel]=\"userFilter\" (ngModelChange)=\"onFilterChange($event)\" placeholder=\"User filter\">\n\n      <table class=\"table table-sm table-striped\">\n        <thead>\n          <tr>\n            <th *ngFor=\"let column of userDataTable.columns\">{{column}}</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr *ngFor=\"let row of userDataTable.data\">\n            <td *ngFor=\"let cell of row\">{{cell}}</td>\n          </tr>\n        </tbody>\n      </table>\n\n    </tab>\n\n    <tab heading=\"User Feedback\">\n\n        <table class=\"table table-hover\" *ngIf=\"feedbacks\">\n          <thead>\n            <tr>\n              <th>#</th>\n              <th>Type</th>\n              <th>Widget</th>              \n              <th>Title</th>\n              <th>Description</th>\n              <th>Raised By</th>\n              <!-- <th>Actions</th> -->\n            </tr>\n          </thead>\n          <tbody>\n\n            <tr *ngFor=\"let fb of feedbacks; let j = index\">\n              <td>{{j+1}}</td>\n              <td>{{fb.type}}</td>\n              <td>{{fb.widget}}</td>\n              <td>{{fb.title}}</td>\n              <td>{{fb.desc}}</td>\n              <td>{{fb.userName}}</td>\n              <!-- <td>\n                <div class=\"btn-group\" role=\"group\">\n                  <button id=\"btnGroupVerticalDrop1\" type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\n                    aria-expanded=\"false\">\n                             ... Under construction ...\n                            </button>\n                  <div class=\"dropdown-menu\" aria-labelledby=\"btnGroupVerticalDrop1\">\n                    <a class=\"dropdown-item\" href=\"#\">Add to Jira</a>\n                    <a class=\"dropdown-item\" href=\"#\">Report</a>\n                    <a class=\"dropdown-item\" href=\"#\">Discard</a>\n                    <a class=\"dropdown-item\" href=\"#\">Add Comment</a>\n                  </div>\n                </div>\n              </td> -->\n            </tr>\n          </tbody>\n        </table>\n    </tab>\n</tabset>\n","styles":[".btn{\n    padding:0px\n}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":242,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"onFilterChange":[{"__symbolic":"method"}],"getLogClass":[{"__symbolic":"method"}],"IsActive":[{"__symbolic":"method"}],"SelectStatsType":[{"__symbolic":"method"}],"onInitialize":[{"__symbolic":"method"}],"Refresh":[{"__symbolic":"method"}],"CreateWidgetGroupData":[{"__symbolic":"method"}],"StatsPerCollection":[{"__symbolic":"method"}],"CreateStats":[{"__symbolic":"method"}],"prepareFeedback":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-server-hit-logs","template":"<div class=\"container-fluid\">\n\n  <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"Refresh()\">\n    <i _ngcontent-c24=\"\" class=\"fa fa-refresh\"></i> Refresh\n  </button>\n\n  <!-- box plot without outliers examle-->\n  <app-highchart-platform *ngIf=\"boxAndWhiskerData\" [id]=\"'serverCacheHitLogBoxPlot'\" [data]=\"boxAndWhiskerData\" [title]=\"'Elapsed ms by policy'\" [type]=\"'boxplot'\"></app-highchart-platform>\n  \n  <app-platform-table *ngIf=\"sourceDataSet\" [Dataset]=\"sourceDataSet\" [Config]=\"tableConfig\"></app-platform-table>\n</div>\n\n","styles":[""]}]}],"members":{"Config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"WebPlatformApiService"},{"__symbolic":"reference","name":"AppStateService"}]}],"Refresh":[{"__symbolic":"method"}],"prepareHighChartData":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"app-landing-page","template":"<div class=\"landing-page-filter\">\n  <div class=\"justify-content-end\">\n    <div class=\"col-4\">\n      <div class=\"form-group\">\n        <label for=\"filterAreaContext\"><h4>Filter by tags</h4></label>\n        <select class=\"form-control\" id=\"filterAreaContext\" [ngModel]=\"userFilter\" (ngModelChange)=\"onFilterChange($event)\">\n                      <option value=\"all\">-- Show All --</option>\n                      <option *ngFor=\"let tag of uniqueTags\" [value]=\"tag\">{{tag}}</option>\n                    </select>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div *ngIf=\"groupedItems else noWidgets;\" class=\"landing-page-content\">\n  <div *ngFor=\"let tag of uniqueTags\">\n    <div *ngIf=\"userFilter === 'all' || userFilter === tag\" class=\"alert alert-info\">\n      {{tag.toUpperCase()}}\n    </div>\n    <div class=\"row\"  *ngIf=\"userFilter === 'all' || userFilter === tag\">\n      <div class=\"col-xs-12 col-md-6 col-lg-4 widget-card\" *ngFor=\"let wc of groupedItems.get(tag)\" (click)=\"Go(wc)\">\n        <div class=\"card border-primary bg-faded\">\n          <div class=\"card-body text-secondary\">\n            <h5 class=\"card-title\">{{wc.name}}</h5>\n            <p class=\"card-text\">{{wc.description || 'No description set up for this widget !!'}}</p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<ng-template #noWidgets>\n  <h3>\n    No widgets available for this {{groupByContext ? \"context/widget\" : \"area/widget\"}}\n  </h3>\n</ng-template>","styles":[".landing-page-content{\n    margin:11px;\n    -webkit-transition:all 1s;\n    transition:all 1s;\n}\n\n.landing-page-content .widget-card{\n    padding:5px;\n}\n\n.landing-page-content .widget-card > .card:hover{\n   border-left:2px solid #5bc0de;\n}\n\n.landing-page-content .widget-card .card-body{\n    padding:10px;\n}\n\n.landing-page-content .widget-card .card-body .card-title{\n    margin-bottom:3px;\n}\n\n.landing-page-content .alert.alert-info{\n    margin-bottom:5px;\n    margin-top:5px;\n    margin-right:-10px;\n    margin-left:-10px;\n}\n\n"]}]}],"members":{"Config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"WebPlatformApiService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"DisplayStateService"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"Go":[{"__symbolic":"method"}],"RulesIfCandidate":[{"__symbolic":"method"}],"onFilterChange":[{"__symbolic":"method"}],"Refresh":[{"__symbolic":"method"}],"groupByTags":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-data-policy-editor","template":"<tabset [justified]=\"true\">\n  <tab heading=\"Properties\">\n    <div class=\"form-group row\">\n      <label for=\"name\" class=\"col-sm-2 col-form-label tightPad\">Name</label>\n      <div class=\"col-sm-10 tightPad\">\n        <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedDataPolicy.name\" id=\"name\">\n      </div>\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"description\" class=\"col-sm-2 col-form-label tightPad\">Support Message</label>\n      <div class=\"col-sm-10 tightPad\">\n        <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedDataPolicy.supportMessage\" id=\"supportMessage\">\n      </div>\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"componentType\" class=\"col-sm-2 col-form-label tightPad\">Support Group</label>\n      <div class=\"col-sm-10 tightPad\">\n        <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedDataPolicy.supportGroup\" id=\"supportGroup\">\n      </div>\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"supportMessage\" class=\"col-sm-2 col-form-label tightPad\">Support Name List</label>\n      <div class=\"col-sm-10 tightPad\">\n        <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedDataPolicy.supportNameList\" id=\"supportNameList\">\n      </div>\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"sourceURL\" class=\"col-sm-2 col-form-label tightPad\"\n        tooltip=\"If 'Use Middle Layer Cache' is false, you can optionally specify context variables in the URL between {} and they will automatically be replaced with their current value.  \n        If the variable is missing an error toast will be raised. \n        Example: When RequestData is called for http://micron.com/{Source}/SomeResource it will become http://micron.com/LEHI/SomeResource before the http request is sent if the Context 'Source' was equal to 'LEHI'.\">\n        Support Data URI\n        <i class=\"fa fa-info-circle\"></i>\n      </label>\n      <div class=\"col-sm-10 tightPad\">\n        <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedDataPolicy.sourceURL\" id=\"sourceURL\">\n      </div>\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"supportMessage\" class=\"col-sm-2 col-form-label tightPad\">Design Id Column</label>\n      <div class=\"col-sm-10 tightPad\">\n        <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedDataPolicy.DesignIdColumn\" id=\"DesignIdColumn\">\n      </div>\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"useMiddleLayer\" class=\"col-sm-2 col-form-label tightPad\" \n        tooltip=\"If false this data policy is just a configuration store for the API info to be used by the widget.  Limited configuration is supported beyond Support Data URI.\">\n        Use Middle-Layer Cache?\n        <i class=\"fa fa-info-circle\"></i>\n      </label>\n      <div class=\"col-sm-10 tightPad\">\n        <select id=\"useMiddleLayer\" class=\"form-control\" [(ngModel)]=\"selectedDataPolicy.useMiddleLayer\">\n            <option [ngValue]=\"true\">True</option>\n            <option [ngValue]=\"false\">False</option>\n        </select>\n      </div>\n    </div>\n    <div *ngIf=\"!selectedDataPolicy.useMiddleLayer && selectedDataPolicy.useMiddleLayer !== undefined && !selectedDataPolicy.isAWebSocket\" class=\"form-group row\">\n      <label for=\"httpMethod\" class=\"col-sm-2 col-form-label tightPad\" \n        tooltip=\"If you want the API to use different HTTP methods select the method here.  Default is GET\">\n        HTTP Method?\n        <i class=\"fa fa-info-circle\"></i>\n      </label>\n      <div class=\"col-sm-10 tightPad\">\n        <select id=\"httpMethod\" class=\"form-control\" [(ngModel)]=\"selectedDataPolicy.httpMethod\">\n            <option [ngValue]=\"'get'\">GET</option>\n            <option [ngValue]=\"'put'\">PUT</option>\n            <option [ngValue]=\"'post'\">POST</option>\n            <option [ngValue]=\"'delete'\">DELETE</option>\n        </select>\n      </div>\n    </div>\n    <div *ngIf=\"!selectedDataPolicy.useMiddleLayer && selectedDataPolicy.useMiddleLayer !== undefined\" class=\"form-group row\">\n      <label for=\"useAPIStore\" class=\"col-sm-2 col-form-label tightPad\" \n        tooltip=\"If this Data Policy goes through the Micron API Gateway to get it's data additional configuration is required to handle tokens.  Default is false\">\n        From API Store?\n        <i class=\"fa fa-info-circle\"></i>\n      </label>\n      <div class=\"col-sm-10 tightPad\">\n        <select id=\"useAPIStore\" class=\"form-control\" [(ngModel)]=\"selectedDataPolicy.useAPIStore\">\n            <option [ngValue]=\"true\">True</option>\n            <option [ngValue]=\"false\">False</option>\n        </select>\n      </div>\n    </div>\n    <div *ngIf=\"selectedDataPolicy.useAPIStore && selectedDataPolicy.useAPIStore !== undefined\" class=\"form-group row\">\n      <label for=\"apiStoreAppKey\" class=\"col-sm-2 col-form-label tightPad\"\n        tooltip=\"To use API endpoint through the API store you must provide a valid subscribed app key for the API\">\n        API Store App Key\n        <i class=\"fa fa-info-circle\"></i>\n      </label>\n      <div class=\"col-sm-10 tightPad\">\n        <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedDataPolicy.apiStoreAppKey\" id=\"apiStoreAppKey\">\n      </div>\n    </div>\n    <div *ngIf=\"selectedDataPolicy.useAPIStore && selectedDataPolicy.useAPIStore !== undefined\" class=\"form-group row\">\n      <label for=\"apiStoreSendToken\" class=\"col-sm-2 col-form-label tightPad\"\n        tooltip=\"Some API endpoint from Corp API store require a x-mt-adfs-openid header to be sent with them.  This token is captured from the adfs login so it can be sent as needed\">\n        Send x-mt-adfs-openid header\n        <i class=\"fa fa-info-circle\"></i>\n      </label>\n      <div class=\"col-sm-10 tightPad\">\n        <select id=\"apiStoreSendToken\" class=\"form-control\" [(ngModel)]=\"selectedDataPolicy.apiStoreSendMtAdfsOpenId\">\n            <option [ngValue]=\"true\">True</option>\n            <option [ngValue]=\"false\">False</option>\n        </select>\n      </div>\n    </div>\n    <div *ngIf=\"!selectedDataPolicy.useMiddleLayer && selectedDataPolicy.useMiddleLayer !== undefined\" class=\"form-group row\">\n      <label for=\"isAWebSocket\" class=\"col-sm-2 col-form-label tightPad\"\n        tooltip=\"This sets up the policy as a web socket that can be initialized via DisplayStateServices.GetWebSocketDataObj \n        which returns a WebSocketData object with observables for incoming message feeds.  The Support Data URI should be a ws://\">\n        Is a WebSocket?\n        <i class=\"fa fa-info-circle\"></i>\n      </label>\n      <div class=\"col-sm-10 tightPad\">\n        <select id=\"isAWebSocket\" class=\"form-control\" [(ngModel)]=\"selectedDataPolicy.isAWebSocket\">\n            <option [ngValue]=\"true\">True</option>\n            <option [ngValue]=\"false\">False</option>\n        </select>\n      </div>\n    </div>\n  </tab>\n\n  <ng-template #dpfixedParamsTooltip>\n    <b>Fixed Parameters:</b> These parameter name/values are ALWAYS sent with the data request\n  </ng-template>\n\n\n  <tab heading=\"Fixed\" [disabled]=\"!selectedDataPolicy.useMiddleLayer && selectedDataPolicy.useMiddleLayer !== undefined\">\n    <span class=\"label label-default\" [tooltip]=\"dpfixedParamsTooltip\" placement=\"top\"><i class=\"fa fa-info-circle\"></i>&nbsp;Hover for info</span>\n    <app-name-value-editor [nvArray]=\"selectedDataPolicy.fixedParameters\" [nameDisplay]=\"'Parameter Name'\" [valueDisplay]=\"'Value'\"></app-name-value-editor>\n\n  </tab>\n\n  <ng-template #dpcolumnRenameMap>\n    <b>Column Rename:</b> Configuration for mapping the source data column names to the names seen by consumers of the data\n    policy\n  </ng-template>\n\n  <tab heading=\"Columns\" [disabled]=\"!selectedDataPolicy.useMiddleLayer && selectedDataPolicy.useMiddleLayer !== undefined\">\n    <span class=\"label label-default\" [tooltip]=\"dpcolumnRenameMap\" placement=\"top\"><i class=\"fa fa-info-circle\"></i>&nbsp;Hover for info</span>\n    <app-name-value-editor [nvArray]=\"selectedDataPolicy.columnRenameMap\" [nameDisplay]=\"'Original Column Name'\" [valueDisplay]=\"'New ColumnName'\"></app-name-value-editor>\n  </tab>\n\n  <tab heading=\"Caching\" [disabled]=\"!selectedDataPolicy.useMiddleLayer && selectedDataPolicy.useMiddleLayer !== undefined\">\n    <app-cache-rule-editor [cacheRules]=\"selectedDataPolicy.CacheRules\"></app-cache-rule-editor>\n  </tab>\n\n  <tab heading=\"Custom Headers\" [disabled]=\"!selectedDataPolicy.useMiddleLayer && selectedDataPolicy.useMiddleLayer !== undefined\">\n    <app-name-value-editor [nvArray]=\"selectedDataPolicy.customHeaders\" [nameDisplay]=\"'Header Name'\" [valueDisplay]=\"'Header Value'\"></app-name-value-editor>\n  </tab>\n\n  <tab heading=\"Raw\">\n    <pre>{{selectedDataPolicy | json}}</pre>\n  </tab>\n</tabset>","styles":[""]}]}],"members":{"selectedDataPolicy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":166,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"initializeHeaders":[{"__symbolic":"method"}]}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-cache-rule-editor","template":"<div>\n  <div class=\"form-group row\">\n    <label for=\"description\" class=\"col-sm-2 col-form-label tightPad\">period</label>\n    <div class=\"col-sm-10 tightPad\">\n      <select class=\"form-control\" [(ngModel)]=\"cacheRules.period\">\n                        <option *ngFor=\"let period of periods\" [ngValue]=\"period\">{{period}}</option>\n                    </select>\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label for=\"description\" class=\"col-sm-2 col-form-label tightPad\">frequency</label>\n    <div class=\"col-sm-10 tightPad\">\n      <input class=\"form-control\" type=\"text\" [(ngModel)]=\"cacheRules.frequency\" id=\"description\">\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label for=\"description\" class=\"col-sm-2 col-form-label tightPad\">target Minute</label>\n    <div class=\"col-sm-10 tightPad\">\n      <input class=\"form-control\" type=\"text\" [(ngModel)]=\"cacheRules.targetMinute\" id=\"description\">\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label for=\"description\" class=\"col-sm-2 col-form-label tightPad\">target Hour</label>\n    <div class=\"col-sm-10 tightPad\">\n      <input class=\"form-control\" type=\"text\" [(ngModel)]=\"cacheRules.targetHour\" id=\"description\">\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label for=\"description\" class=\"col-sm-2 col-form-label tightPad\">target Day</label>\n    <div class=\"col-sm-10 tightPad\">\n      <input class=\"form-control\" type=\"text\" [(ngModel)]=\"cacheRules.targetDay\" id=\"description\">\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label for=\"description\" class=\"col-sm-2 col-form-label tightPad\">target WorkWeek Day</label>\n    <div class=\"col-sm-10 tightPad\">\n      <input class=\"form-control\" type=\"text\" [(ngModel)]=\"cacheRules.targetWorkWeekDay\" id=\"description\">\n    </div>\n  </div>\n</div>","styles":[""]}]}],"members":{"cacheRules":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-cache-rules-editor","template":"<p>\n  cache-rules-editor works!\n</p>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵk":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-data-consumer-config-editor","template":"<ng-template #dataConsumerConfigName>\n    <b>Data consumer config name (optional):</b> Give a unique name to your data consumer config to identify it quickly</ng-template>\n<div class=\"form-group row\" style=\"margin-top: 15px\">\n    <label [tooltip]=\"dataConsumerConfigName\" class=\"col-sm-2 col-form-label\">Data Consumer Config Name (optional)</label>\n    <div class=\"col-sm-10\">\n        <input type=\"text\" class=\"form-control\" [(ngModel)]=\"DataConsumerConfig.name\" name=\"dataConsumerConfigName\">\n    </div>\n</div>\n\n<ng-template #dataPolicyName>\n    <b>Data policy name:</b> must be a name in the list of data configuration objects </ng-template>\n<div class=\"form-group row\" style=\"margin-top: 15px\">\n    <label [tooltip]=\"dataPolicyName\" class=\"col-sm-2 col-form-label\">Data Policy Name</label>\n    <div class=\"col-sm-10\">\n\n        <select class=\"form-control\" [(ngModel)]=\"DataConsumerConfig.dataPolicy\" (change)=\"onSelectedDataPolicyChange($event.target.value)\"\n            id=\"dataPolicy\">\n            <option *ngFor=\"let name of dataPolicyNames\" [ngValue]=\"name\">\n                {{name}}\n            </option>\n        </select>\n    </div>\n</div>\n\n<tabset type=\"pills\">\n\n    <ng-template #fixedParamsTooltip>\n        <b>Fixed Parameters:</b> These parameter name/values are ALWAYS sent with the data request\n    </ng-template>\n    <tab heading=\"Fixed\" *ngIf=\"showMiddleLayerFeatures\">\n        <span class=\"label label-default\" [tooltip]=\"fixedParamsTooltip\" placement=\"bottom\">\n            <i class=\"fa fa-info-circle\"></i>&nbsp;Hover for info</span>\n        <app-name-value-editor [nvArray]=\"DataConsumerConfig.fixedParameters\" [nameDisplay]=\"'Name'\" [valueDisplay]=\"'Value'\"></app-name-value-editor>\n    </tab>\n\n    <ng-template #sortColumnsTooltip>\n        <b>Fixed Parameters:</b> These parameter name/values used to sort. The name is the column, and the value is asc or desc\n    </ng-template>\n    <tab heading=\"Sorting\" *ngIf=\"showMiddleLayerFeatures\">\n        <span class=\"label label-default\" [tooltip]=\"sortColumnsTooltip\" placement=\"bottom\">\n            <i class=\"fa fa-info-circle\"></i>&nbsp;Hover for info</span>\n        <app-name-value-editor [nvArray]=\"DataConsumerConfig.sortColumns\" [valueEnum]=\"sortTypes\" [nameEnum]=\"DataConsumerConfig.columns\"\n            [nameDisplay]=\"'column'\" [valueDisplay]=\"'Value'\"></app-name-value-editor>\n    </tab>\n\n    <ng-template #contextParamsTooltip>\n        <div style=\"text-align: left;\">\n            <b>Context Parameters:</b> Parameters sent to the data source based on current context. Specifying a 'Context Name'\n            tells the app that the context name/value should be sent to the data source url. Specifying 'Name To Send' will\n            send that value as the name instead of the context name. Example\n            <ul>\n                <li>Current context name/values are [Source=probe][Design=L06A][Lot=1234567.001][Step=FPP.00]</li>\n                <li>context parameters are [Design=,Step=Pid]</li>\n                <li>query params would be ?Design=L06A&Pid=FPP.00</li>\n            </ul>\n        </div>\n    </ng-template>\n    <tab heading=\"Context Params\" *ngIf=\"showMiddleLayerFeatures\">\n        <span class=\"label label-default\" [tooltip]=\"contextParamsTooltip\" placement=\"bottom\">\n            <i class=\"fa fa-info-circle\"></i>&nbsp;Hover for info</span>\n        <app-name-value-editor [nvArray]=\"DataConsumerConfig.contextParameters\" [nameDisplay]=\"'Context Name'\" [valueDisplay]=\"'Name To Send (optional)'\"></app-name-value-editor>\n    </tab>\n\n    <ng-template #filterConfiguration>\n        <b>Filter Configuration: </b>\n        <ul>\n            <li>\n                <b>Name: </b>Column name to filter on</li>\n            <li>\n                <b>operator</b> (optional) specifies the kind of filtering\n                <ul>\n                    <li>string filtering: eq (default), startsWith, endsWith, contains</li>\n                    <li>number filtering: ==, gt, lt, ge, le, ne</li>\n                </ul>\n            </li>\n            <li>\n                <b>Fixed value</b> (optional) the value to use with the operator to filter the rows</li>\n            <li>\n                <b>Context Name for Value</b> (optional) the current context name to use the value for to filter the rows</li>\n            <li>\n                <b>Server side filtering</b> If true, server will filter results before sending to the app. If false, filtering\n                occurs in app after it is retrieved</li>\n        </ul>\n    </ng-template>\n    <tab heading=\"Filter\" *ngIf=\"showMiddleLayerFeatures\">\n        <span class=\"label label-default\" [tooltip]=\"filterConfiguration\" placement=\"bottom\">\n            <i class=\"fa fa-info-circle\"></i>&nbsp;Hover for info</span>\n        <div class=\"form-group row\">\n            <label class=\"col-sm-3 col-form-label\">Column Name</label>\n            <label class=\"col-sm-2 col-form-label\">Operator?</label>\n            <label class=\"col-sm-2 col-form-label\">Fixed Value?</label>\n            <label class=\"col-sm-2 col-form-label\">Context Name for Value?</label>\n            <label class=\"col-sm-2 col-form-label\">Server side filtering</label>\n\n        </div>\n        <div class=\"form-group row\" *ngFor=\"let fRule of DataConsumerConfig.filterConfiguration\">\n\n            <div *ngIf=\"DataConsumerConfig.columns; else filterNameNoColumns\" class=\"col-sm-3\">\n                <select class=\"form-control\" [(ngModel)]=\"fRule.column\" id=\"fRuleColumn\">\n                    <option *ngFor=\"let name of DataConsumerConfig.columns\" [ngValue]=\"name\">\n                        {{name}}\n                    </option>\n                </select>\n            </div>\n            <ng-template #filterNameNoColumns>\n                <div class=\"col-sm-3\">\n                    <input type=\"text\" class=\"form-control\" [(ngModel)]=\"fRule.column\" name=\"column\">\n                </div>\n            </ng-template>\n            <div class=\"col-sm-2\">\n                <select class=\"form-control\" [(ngModel)]=\"fRule.operator\" id=\"fRuleOperator\">\n                    <option *ngFor=\"let nv of filterOps\" [ngValue]=\"nv.value\">\n                        {{nv.value}}\n                    </option>\n                </select>\n            </div>\n            <div class=\"col-sm-2\">\n                <input type=\"text\" class=\"form-control\" [(ngModel)]=\"fRule.value\" name=\"value\">\n            </div>\n            <div class=\"col-sm-2\">\n                <input type=\"text\" class=\"form-control\" [(ngModel)]=\"fRule.contextValueName\" name=\"contextValueName\">\n            </div>\n\n            <div class=\"col-sm-2\">\n                <select class=\"form-control\" [(ngModel)]=\"fRule.serverSide\" name=\"serverSide\">\n                    <option [ngValue]=\"true\">True</option>\n                    <option [ngValue]=\"false\">False</option>\n                </select>\n            </div>\n            <div class=\"col-sm-1\">\n                <button type=\"button\" class=\"btn btn-sm btn-danger\" (click)=\"DeleteFilterConfigByIndex(idx)\">\n                    <i class=\"fa fa-times\"></i>\n                </button>\n            </div>\n        </div>\n        <button type=\"button\" class=\"btn btn-sm btn-outline-primary\" (click)=\"AddFilterConfig()\">Add</button>\n    </tab>\n\n    <ng-template #overrideCacheRulesTooltip>\n        Used to override the data policy set cache rules for this widget\n    </ng-template>\n    <tab heading=\"Cache rule overrides\" *ngIf=\"showMiddleLayerFeatures\">\n        <span class=\"label label-default\" [tooltip]=\"overrideCacheRulesTooltip\" placement=\"bottom\">\n            <i class=\"fa fa-info-circle\"></i>&nbsp;Hover for info</span>\n        <app-cache-rule-editor [cacheRules]=\"DataConsumerConfig.overrideCacheRules\"></app-cache-rule-editor>\n    </tab>\n\n    <ng-template #dataGroupingTooltip>\n        Used to override the data policy set cache rules for this widget\n    </ng-template>\n    <tab heading=\"Grouping\" *ngIf=\"showMiddleLayerFeatures\">\n        <span class=\"label label-default\" [tooltip]=\"dataGroupingTooltip\" placement=\"bottom\">\n            <i class=\"fa fa-info-circle\"></i>&nbsp;Hover for info</span>\n        <app-data-grouping-editor [columns]=\"DataConsumerConfig.columns\" [dataGrouping]=\"DataConsumerConfig.dataGrouping\"></app-data-grouping-editor>\n    </tab>\n\n\n    <ng-template #pivotTooltip>\n        Not implemented yet\n    </ng-template>\n    <tab heading=\"Pivot\" *ngIf=\"showMiddleLayerFeatures\">\n        <span class=\"label label-default\" [tooltip]=\"pivotTooltip\" placement=\"bottom\">\n            <i class=\"fa fa-info-circle\"></i>&nbsp;Hover for info</span>\n        <p>Not Implemented yet</p>\n    </tab>\n\n    <tab heading=\"Fixed Data\" *ngIf=\"showMiddleLayerFeatures\">\n        <button type=\"button\" class=\"btn btn-info btn-sm\" (click)=\"UpdateFixedData()\">\n            Save Config Changes\n        </button>\n        <textarea style=\"width: 100%; height: 400px\" [(ngModel)]=\"FixedData\" name=\"fixedData\"></textarea>\n    </tab>\n\n    <tab heading=\"Columns\" *ngIf=\"showMiddleLayerFeatures\">\n        <div *ngIf=\"DataConsumerConfig.columns\">\n            <label>These are columns saved the last time the platform executed this data consumer configuration or from those that\n                existing when this widget was cloned. They may be out of date - if so, use the 'Clear Columns' button.\n            </label>\n            <button type=\"button\" (click)=\"ClearColumns()\" class=\"btn btn-info btn-sm\">Clear Columns</button>\n            <ul>\n                <li *ngFor=\"let name of DataConsumerConfig.columns\">{{name}}</li>\n            </ul>\n        </div>\n    </tab>\n\n    <tab heading=\"Custom Headers\">\n        <app-name-value-editor [nvArray]=\"DataConsumerConfig.overrideCustomHeaders\" [nameDisplay]=\"'Header Name'\" [valueDisplay]=\"'Header Value'\"></app-name-value-editor>\n    </tab>\n\n    <tab heading=\"JSON\" *ngIf=\"showMiddleLayerFeatures\">\n        <button type=\"button\" class=\"btn btn-info btn-sm\" (click)=\"LoadJson()\">\n            Serialize to JSON...\n        </button>\n        <button type=\"button\" class=\"btn btn-info btn-sm\" (click)=\"UpdateFromJson()\">\n            Save JSON Changes\n        </button>\n        <textarea style=\"width: 100%; height: 400px\" [(ngModel)]=\"JsonData\" name=\"JsonData\"></textarea>\n    </tab>\n</tabset>","styles":[""]}]}],"members":{"DataConsumerConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":217,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":230,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"ngOnChanges":[{"__symbolic":"method"}],"onInitialize":[{"__symbolic":"method"}],"ClearColumns":[{"__symbolic":"method"}],"initializeHeaders":[{"__symbolic":"method"}],"UpdateFixedData":[{"__symbolic":"method"}],"DeleteFilterConfigByIndex":[{"__symbolic":"method"}],"AddFilterConfig":[{"__symbolic":"method"}],"LoadJson":[{"__symbolic":"method"}],"UpdateFromJson":[{"__symbolic":"method"}],"onSelectedDataPolicyChange":[{"__symbolic":"method"}]}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-data-grouping-editor","template":"<label class=\"col-sm-2 col-form-label\">Server side filtering</label>\n<input type=\"text\" class=\"form-control\" [(ngModel)]=\"dataGrouping.serverSide\" name=\"serverSide\">\n\n<table>\n    <thead>\n        <th>Group By Column</th>\n        <th></th>\n    </thead>\n    <tbody>\n        <tr *ngFor=\"let col of dataGrouping.groupBy\">\n            <td>{{col}}</td>\n            <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"RemoveGroupBy(col)\"><i _ngcontent-c24=\"\" class=\"fa fa-times\"></i></button>\n        </tr>\n        <tr>\n            <td>\n                <input type=\"text\" class=\"form-control\" [(ngModel)]=\"newGroupByColum\" name=\"newGroupByColum\">\n            </td>\n            <td>\n                <button type=\"button\" class=\"btn btn-sm btn-outline-primary\" (click)=\"AddGroupBy()\"> New </button>\n            </td>\n        </tr>\n    </tbody>\n</table>\n\n\n<div class=\"form-group row\">\n    <label class=\"col-sm-3 col-form-label\">name</label>\n    <label class=\"col-sm-2 col-form-label\">operation</label>\n    <label class=\"col-sm-2 col-form-label\">rename</label>\n</div>\n\n<div class=\"form-group row\" *ngFor=\"let agg of dataGrouping.aggregations; let i = index\">\n    <div class=\"col-sm-3\">\n        <input type=\"text\" class=\"form-control\" [(ngModel)]=\"agg.name\" name=\"column\">\n    </div>\n    <div class=\"col-sm-2\">\n        <select class=\"form-control\" [(ngModel)]=\"agg.operation\" id=\"fRuleOperator\">\n        <option *ngFor=\"let op of operations\" [ngValue]=\"op\">\n                {{op}}\n        </option>\n    </select>\n    </div>\n\n    <div class=\"col-sm-2\">\n        <input type=\"text\" class=\"form-control\" [(ngModel)]=\"agg.rename\" name=\"aggRename\">\n    </div>\n    <div class=\"col-sm-2\">\n        <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"RemoveAggregate(i)\"><i _ngcontent-c24=\"\" class=\"fa fa-times\"></i></button>\n    </div>\n</div>\n<button type=\"button\" class=\"btn btn-sm btn-outline-primary\" (click)=\"AddAggregate()\"> New Aggregate </button>","styles":[""]}]}],"members":{"dataGrouping":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"columns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"AddGroupBy":[{"__symbolic":"method"}],"RemoveGroupBy":[{"__symbolic":"method"}],"AddAggregate":[{"__symbolic":"method"}],"RemoveAggregate":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵm":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-filter-rule-editor","template":"<p>\n  filter-rule-editor works!\n</p>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵn":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-generic-chart-config","template":"<p>\n  generic-chart-config works!\n</p>\n","styles":[""]}]}],"members":{"widgetConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵo":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-generic-table-config","template":"<label>Column Rules</label>\n\n<div *ngIf=\"widgetConfiguration && genericTableConfiguration\">\n    <div class=\"form-group row\">\n        <label class=\"col-sm-3 tightPad col-form-label\">Column</label>\n        <label class=\"col-sm-3 col-form-label\">Switch background on change</label>\n        <label class=\"col-sm-2 tightPad col-form-label\">Heatmap rule: low</label>\n        <label class=\"col-sm-2 tightPad col-form-label\">Heatmap rule: high</label>\n        <label class=\"col-sm-2 tightPad col-form-label\">Remove</label>\n    </div>\n    <div class=\"form-group row\" *ngFor=\"let rule of genericTableConfiguration.tableColumnRules; let idx = index\">\n\n        <div *ngIf=\"widgetConfiguration.dataConsumerConfiguration.columns; else noColumns\" class=\"col-sm-3\">\n            <select class=\"form-control\" [(ngModel)]=\"rule.columnName\" id=\"rulecolumnName\">\n        <option *ngFor=\"let name of widgetConfiguration.dataConsumerConfiguration.columns\" [ngValue]=\"name\">\n                {{name}}\n        </option>\n      </select>\n        </div>\n        <ng-template #noColumns>\n            <div class=\"col-sm-3\">\n                <input type=\"text\" class=\"form-control\" [(ngModel)]=\"rule.columnName\" name=\"rulecolumnName\">\n            </div>\n        </ng-template>\n\n\n        <div class=\"col-sm-3\">\n            <select class=\"form-control\" [(ngModel)]=\"rule.alternateColorOnValueChange\">\n          <option [ngValue]=\"true\">True</option>\n          <option [ngValue]=\"false\">False</option>\n      </select>\n        </div>\n\n        <div class=\"col-sm-2\">\n            <input type=\"text\" class=\"form-control\" [(ngModel)]=\"rule.heatmapRules.low\" name=\"low\">\n        </div>\n\n        <div class=\"col-sm-2\">\n            <input type=\"text\" class=\"form-control\" [(ngModel)]=\"rule.heatmapRules.high\" name=\"high\">\n        </div>\n\n        <div class=\"col-sm-2 tightPad\">\n            <button type=\"button\" class=\"btn btn-info btn-sm\">\n      <span (click)=\"DeleteByIndex(idx)\" class=\"badge badge-danger\"><i _ngcontent-c24=\"\" class=\"fa fa-times\"></i></span>\n    </button>\n        </div>\n    </div>\n    <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"Add()\">Add</button>\n</div>","styles":[""]}]}],"members":{"widgetConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"Add":[{"__symbolic":"method"}],"DeleteByIndex":[{"__symbolic":"method"}]}},"ɵp":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"app-name-value-editor","template":"<div class=\"form-group row\">\n    <label class=\"col-sm-6 tightPad col-form-label\">{{nameDisplay}}</label>\n    <label class=\"col-sm-5 col-form-label\">{{valueDisplay}}</label>\n</div>\n<div class=\"form-group row\" *ngFor=\"let nv of nvArray; let idx = index\">\n\n    <div *ngIf=\"nameEnum; else nonameEnum\" class=\"col-sm-3\">\n        <select class=\"form-control\" [(ngModel)]=\"nv.name\" id=\"nvName\">\n        <option *ngFor=\"let name of nameEnum\" [ngValue]=\"name\">\n                {{name}}\n        </option>\n      </select>\n    </div>\n    <ng-template #nonameEnum>\n        <div class=\"col-sm-3\">\n            <input type=\"text\" class=\"form-control\" [(ngModel)]=\"nv.name\" name=\"name\">\n        </div>\n    </ng-template>\n\n    <div *ngIf=\"valueEnum; else novalueEnum\" class=\"col-sm-5 tightPad\">\n\n        <select class=\"form-control\" [(ngModel)]=\"nv.value\" id=\"nvValue\">\n        <option *ngFor=\"let value of valueEnum\" [ngValue]=\"value\">\n                {{value}}\n        </option>\n      </select>\n    </div>\n\n    <ng-template #novalueEnum>\n        <div class=\"col-sm-5 tightPad\">\n            <input type=\"text\" class=\"form-control\" [(ngModel)]=\"nv.value\" name=\"value\">\n        </div>\n    </ng-template>\n\n    <div class=\"col-sm-1 tightPad\">\n        <button type=\"button\" class=\"btn btn-danger btn-sm\" (click)=\"DeleteByIndex(idx)\">\n            <i class=\"fa fa-times\"></i>\n        </button>\n    </div>\n</div>\n<button type=\"button\" class=\"btn btn-sm btn-outline-primary\" (click)=\"Add()\">Add</button>","styles":[""]}]}],"members":{"nvArray":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"nameDisplay":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"valueDisplay":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"nameEnum":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"valueEnum":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":63,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"Add":[{"__symbolic":"method"}],"DeleteByIndex":[{"__symbolic":"method"}]}},"ɵq":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-widget-config-editor","template":"<div class=\"alert alert-info\" role=\"alert\" *ngIf=\"readonlyWidget\">\n    <strong>Heads up!</strong> This is a Read Only widget.\n</div>\n<fieldset [disabled]=\"readonlyWidget\">\n    <tabset *ngIf=\"selectedWidgetConfig\" [justified]=\"true\">\n        <tab heading=\"Properties\">\n            <div class=\"form-group row\">\n                <label for=\"name\" class=\"col-sm-2 col-form-label\">Name</label>\n                <div class=\"col-sm-10\">\n                    <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedWidgetConfig.name\" id=\"name\">\n                </div>\n            </div>\n            <div class=\"form-group row\">\n                <label for=\"name\" class=\"col-sm-2 col-form-label\">Displayed Name</label>\n                <div class=\"col-sm-10\">\n                    <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedWidgetConfig.displayName\" id=\"name\">\n                </div>\n            </div>\n            <div class=\"form-group row\">\n                <label for=\"description\" class=\"col-sm-2 col-form-label\">description</label>\n                <div class=\"col-sm-10\">\n                    <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedWidgetConfig.description\" id=\"description\">\n                </div>\n            </div>\n            <div class=\"form-group row\">\n                <label for=\"componentType\" class=\"col-sm-2 col-form-label\">component Type</label>\n                <div class=\"col-sm-10\">\n                    <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedWidgetConfig.componentType\" id=\"componentType\">\n                </div>\n            </div>\n            <div class=\"form-group row\">\n                <label for=\"supportMessage\" class=\"col-sm-2 col-form-label\">Support Message</label>\n                <div class=\"col-sm-10\">\n                    <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedWidgetConfig.supportMessage\" id=\"supportMessage\">\n                </div>\n            </div>\n            <div class=\"form-group row\">\n                <label for=\"area\" class=\"col-sm-2 col-form-label\">Area</label>\n                <div class=\"col-sm-10\">\n                    <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedWidgetConfig.area\" id=\"area\">\n                </div>\n            </div>\n            <div class=\"form-group row\">\n                <label for=\"supportMessage\" class=\"col-sm-2 col-form-label\">Admin Rights Required</label>\n                <div class=\"col-sm-10\">\n                    <select class=\"form-control\" [(ngModel)]=\"selectedWidgetConfig.adminRequired\">\n                        <option [ngValue]=\"true\">True</option>\n                        <option [ngValue]=\"false\">False</option>\n                    </select>\n                </div>\n            </div>\n            <div class=\"form-group row\">\n                <label for=\"widgetAsApp\" class=\"col-sm-2 col-form-label\">Run Widget as an App</label>\n                <div class=\"col-sm-10\">\n                    <select class=\"form-control\" [(ngModel)]=\"selectedWidgetConfig.widgetAsApp\">\n                        <option [ngValue]=\"true\">True</option>\n                        <option [ngValue]=\"false\">False</option>\n                    </select>\n                </div>\n            </div>\n            <div *ngIf=\"selectedWidgetConfig.widgetAsApp\" class=\"form-group row\">\n                <label for=\"widgetSideNavLabel\" class=\"col-sm-2 col-form-label\">Internal SideNav Label</label>\n                <div class=\"col-sm-4\">\n                    <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedWidgetConfig.config.internalSideNavLabel\" id=\"internalSideNavLabel\">\n                </div>\n                <label for=\"widgetSideNavLabel\" class=\"col-sm-2 col-form-label\">Internal SideNav component Type</label>\n                <div class=\"col-sm-4\">\n                    <input class=\"form-control\" type=\"text\" [(ngModel)]=\"selectedWidgetConfig.config.internalSideNavComponentType\" id=\"internalSideNavComponentType\">\n                </div>\n            </div>\n            <div class=\"form-group row\">\n                <label for=\"config-tags\" class=\"col-sm-2 col-form-label\">Tags</label>\n                <div class=\"col-sm-10\">\n                    <div class=\"input-group\">\n                        <input class=\"form-control\" type=\"text\" #newTag (keyup.enter)=\"AddTag(newTag.value); newTag.value='';\" id=\"config-tags\" placeholder=\"Add Tag - press enter or Add button\">\n                        <span class=\"input-group-btn\">\n                            <input type=\"button\" class=\"btn btn-success\" value=\"Add\" (click)=\"AddTag(newTag.value); newTag.value='';\">\n                        </span>\n                    </div>\n                    <div class=\"tag-container\" *ngIf=\"selectedWidgetConfig.tags && selectedWidgetConfig.tags.length !== 0\">\n                        <div class=\"badge badge-info single-tag\" *ngFor=\"let tag of selectedWidgetConfig.tags\">\n                            {{tag}}\n                            <i (click)=\"RemoveTag(tag)\" class=\"fa fa-trash\" aria-hidden=\"true\"></i>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </tab>\n        <ng-template #contextMatchingRulesTooltip>\n            <div style=\"text-align: left;\">\n                <b>Context Matching:</b> At any time the application can have a set of context name/value pairs. This is called\n                the runtime context set. A list of these rules is used to determine if the widget should be shown given the\n                state of the context data. For a widget to be displayed, the rules are as follows:\n                <ul>\n                    <li>Runtime context set has ALL non-optional names defined in the widget's rules</li>\n                    <li>If a rule's context value is specified, the runtime context set item by the rule's name has to have that\n                        value. If no context value, all that matters is that runtime context set has an item with that name\n                    </li>\n                    <li>If context has names that aren't specified in the rule, the widget won't be displayed.</li>\n                </ul>\n            </div>\n        </ng-template>\n        <tab heading=\"Context Matching\">\n            <span class=\"label label-default\" [tooltip]=\"contextMatchingRulesTooltip\" placement=\"bottom\">\n                <i class=\"fa fa-info-circle\"></i>&nbsp;Hover for info</span>\n            <div class=\"form-group row\">\n                <label class=\"col-sm-4 col-form-label tightPad\">Context Name</label>\n                <label class=\"col-sm-4 col-form-label tightPad\">Context Value (optional)</label>\n                <label class=\"col-sm-2 col-form-label tightPad\">Optional</label>\n                <label class=\"col-sm-1 col-form-label tightPad\" tooltip=\"Default is none, setting this will allow you to click on recent values for this context in the breadcrumb to quickly toggle. The number represents the # of recent values to keep\">\n                    Hist\n                    <i class=\"fa fa-info-circle\"></i>\n                </label>\n                <label class=\"col-sm-1 col-form-label tightPad\"></label>\n            </div>\n\n            <div class=\"form-group row\" *ngFor=\"let cmr of selectedWidgetConfig.contextMatchingRules; let idx = index\">\n                <div class=\"col-sm-4 tightPad\">\n                    <input type=\"text\" class=\"form-control\" [(ngModel)]=\"cmr.contextName\" name=\"name\">\n                </div>\n                <div class=\"col-sm-4 tightPad\">\n                    <input type=\"text\" class=\"form-control\" [(ngModel)]=\"cmr.valueMatch\" name=\"value\">\n                </div>\n                <div class=\"col-sm-2 tightPad\">\n                    <select class=\"form-control\" [(ngModel)]=\"cmr.optional\">\n                        <option [ngValue]=\"true\">True</option>\n                        <option [ngValue]=\"false\">False</option>\n                    </select>\n                </div>\n                <div class=\"col-sm-1 tightPad\">\n                    <select class=\"form-control\" [(ngModel)]=\"cmr.historyItemsToKeep\">\n                        <option [ngValue]=\"0\">None</option>\n                        <option [ngValue]=\"3\">3</option>\n                        <option [ngValue]=\"5\">5</option>\n                    </select>\n                </div>\n                <div class=\"col-sm-1 tightPad\">\n                    <button type=\"button\" class=\"btn btn-danger btn-sm\" (click)=\"DeleteContextByIndex(idx)\">\n                        <i _ngcontent-c24=\"\" class=\"fa fa-times\"></i>\n                    </button>\n                </div>\n            </div>\n            <button type=\"button\" class=\"btn btn-info btn-sm\" (click)=\"AddContextRule()\">\n                New context rule\n            </button>\n        </tab>\n        <tab heading=\"Data\">\n            <div *ngIf=\"selectedWidgetConfig.dataConsumerConfigurations\">\n                <div *ngFor=\"let dcc of selectedWidgetConfig.dataConsumerConfigurations;let dccIdx = index\" class=\"card p-2 mb-2 row\">\n                    <app-data-consumer-config-editor [DataConsumerConfig]=\"dcc\">\n                    </app-data-consumer-config-editor>\n                    <div class=\"col-1\">\n                        <button type=\"button\" class=\"btn btn-danger btn-sm\" tooltip=\"Disassociate Data Policy from widget\" (click)=\"removeConsumerPolicy(dcc,dccIdx)\">\n                            <i class=\"fa fa-close\"></i>\n                        </button>\n                    </div>\n                </div>\n            </div>\n            <div *ngIf=\"selectedWidgetConfig.dataConsumerConfiguration\" class=\"card p-2 mb-2 row\">\n                <app-data-consumer-config-editor [DataConsumerConfig]=\"selectedWidgetConfig.dataConsumerConfiguration\">\n                </app-data-consumer-config-editor>\n            </div>\n            <button type=\"button\" class=\"btn btn-info btn-sm\" tooltip=\"Warning: Widgets with multiple data policies attached require custom logic to handle / load each policy by name.\"\n                (click)=\"addAnotherConsumerPolicy()\">\n                <i class=\"fa fa-plus\"></i> Attach another data policy to widget\n            </button>\n        </tab>\n        <tab heading=\"Configuration\">\n            <button type=\"button\" class=\"btn btn-info btn-sm\" (click)=\"UpdateSelectedConfigJson()\">\n                Save Config Changes\n            </button>\n            <textarea style=\"width: 100%; height: 400px\" [(ngModel)]=\"selectedWidgetConfigJson\" name=\"selectedConfigJson\"></textarea>\n        </tab>\n        <tab heading=\"Raw\">\n            <pre>{{selectedWidgetConfig | json}}</pre>\n        </tab>\n        <tab *ngIf=\"selectedWidgetConfig.componentType == 'GenericWidgetTable'\" heading=\"Table Config\">\n            <app-generic-table-config [widgetConfig]=\"selectedWidgetConfig\"></app-generic-table-config>\n        </tab>\n        <tab *ngIf=\"selectedWidgetConfig.componentType == 'GenericWidgetChart'\" heading=\"Chart Config\">\n            <app-generic-chart-config [widgetConfig]=\"selectedWidgetConfig\"></app-generic-chart-config>\n        </tab>\n    </tabset>\n</fieldset>","styles":[".tag-container i{\n    margin-left:10px;\n    cursor:pointer;\n}\n.tag-container i:hover{\n    color:#640E0E\n}\n.tag-container .single-tag{\n    margin-right:5px;\n    padding:5px;\n}\n\n.tag-container{\n    padding:10px;\n    border:1px solid #5bc0de;\n    margin-top:5px;\n}\n"]}]}],"members":{"selectedWidgetConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":212,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DisplayStateService"}]}],"ngOnInit":[{"__symbolic":"method"}],"canAddAsSideNav":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"AddTag":[{"__symbolic":"method"}],"RemoveTag":[{"__symbolic":"method"}],"UpdateSelectedConfigJson":[{"__symbolic":"method"}],"grabJSON":[{"__symbolic":"method"}],"DeleteContextByIndex":[{"__symbolic":"method"}],"AddAsSideNav":[{"__symbolic":"method"}],"AddContextRule":[{"__symbolic":"method"}],"addAnotherConsumerPolicy":[{"__symbolic":"method"}],"removeConsumerPolicy":[{"__symbolic":"method"}]}},"ɵr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-core-widget-container","template":"<div *ngIf=\"UserAcessDenied(); else OK\">\n  <h4>Component requires platform administration access.</h4>\n</div>\n\n<ng-template #OK>\n  <div [ngSwitch]=\"Config.componentType\">\n\n    <div *ngSwitchCase=\"'MasterConfiguration'\">       <app-master-configuration [Config]=\"Config\"></app-master-configuration> </div>\n    <div *ngSwitchCase=\"'app-master-configuration'\">  <app-master-configuration [Config]=\"Config\"></app-master-configuration> </div>\n\n    <div *ngSwitchCase=\"'app-user-widget-prefs'\">     <app-user-widget-prefs [Config]=\"Config\"></app-user-widget-prefs>       </div>\n    \n    <div *ngSwitchCase=\"'app-landing-page'\">          <app-landing-page [Config]=\"Config\"></app-landing-page>   </div>\n\n    <div *ngSwitchCase=\"'CacheDataAdmin'\">            <app-cache-data-admin [Config]=\"Config\"></app-cache-data-admin>         </div>\n    <div *ngSwitchCase=\"'app-cache-data-admin'\">      <app-cache-data-admin [Config]=\"Config\"></app-cache-data-admin>         </div>\n\n    <div *ngSwitchCase=\"'app-data-policy-testing'\">   <app-data-policy-testing [Config]=\"Config\"></app-data-policy-testing>   </div>\n\n    <div *ngSwitchCase=\"'WidgetHelp'\">                <app-widget-help [Config]=\"Config\"></app-widget-help>                   </div>\n    <div *ngSwitchCase=\"'app-widget-help'\">           <app-widget-help [Config]=\"Config\"></app-widget-help>                   </div>\n\n    <div *ngSwitchCase=\"'Diagnostics'\">               <app-diagnostics [Config]=\"Config\"></app-diagnostics>                   </div>\n    <div *ngSwitchCase=\"'app-diagnostics'\">           <app-diagnostics [Config]=\"Config\"></app-diagnostics>                   </div>\n\n    <div *ngSwitchCase=\"'RandomChartWidget'\">         <app-random-chart [Config]=\"Config\"></app-random-chart>                 </div>\n    <div *ngSwitchCase=\"'app-random-chart'\">          <app-random-chart [Config]=\"Config\"></app-random-chart>                 </div>\n\n    <div *ngSwitchCase=\"'GenericWidgetChart'\">        <app-generic-chart [Config]=\"Config\"></app-generic-chart>               </div>\n    <div *ngSwitchCase=\"'app-generic-chart'\">         <app-generic-chart [Config]=\"Config\"></app-generic-chart>               </div>\n\n    <div *ngSwitchCase=\"'GenericWidgetTable'\">        <app-generic-table [Config]=\"Config\"></app-generic-table>               </div>\n    <div *ngSwitchCase=\"'app-generic-table'\">         <app-generic-table [Config]=\"Config\"></app-generic-table>               </div>\n\n    <div *ngSwitchCase=\"'TableauComponent'\">          <app-tableau [Config]=\"Config\"></app-tableau>                           </div>\n    <div *ngSwitchCase=\"'app-tableau'\">               <app-tableau [Config]=\"Config\"></app-tableau>                           </div>\n\n    <div *ngSwitchCase=\"'GenericGroupedDataSideNav'\"> <app-generic-side-nav [Config]=\"Config\"></app-generic-side-nav>         </div>\n    <div *ngSwitchCase=\"'app-generic-side-nav'\">      <app-generic-side-nav [Config]=\"Config\"></app-generic-side-nav>         </div>\n\n    <div *ngSwitchDefault>\n      <h3>No component registered for configuration name '{{Config.componentType}}'</h3>\n    </div>\n  </div>\n</ng-template>\n","styles":["span{\n    width:auto;\n    height:auto;\n    display:inline-block;\n}\n\n"]}]}],"members":{"Config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DisplayStateService"}]}],"UserAcessDenied":[{"__symbolic":"method"}]}},"ɵs":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"app-data-policy-testing","template":"<div class=\"card\">\n  <div class=\"card-header\">\n    Select an existing widget configuration to test it's data consumer configuration\n    <select class=\"form-control\" (change)=\"onSelectChange()\" [(ngModel)]=\"selectedWidgetConfig\">\n        <option *ngFor=\"let wc of filteredWidgetConfiguration\" [ngValue]=\"wc\">\n                Widget = {{wc.name}},  Data policy = {{wc.dataConsumerConfiguration.dataPolicy}}\n        </option>\n      </select>\n  </div>\n\n\n  <div class=\"card-header\">\n    Select a data policy and configure additional data consumer configuration settings, then click 'Execute Request'\n  </div>\n  <div class=\"card-block\">\n    <app-data-consumer-config-editor [DataConsumerConfig]=\"DataConsumerConfig\"></app-data-consumer-config-editor>\n  </div>\n  <div class=\"form-inline\" *ngIf=\"!showWebSocketInput && DataConsumerConfig?.httpMethod != 'post' && DataConsumerConfig?.httpMethod != 'put'\">\n    <button type=\"button\" class=\"btn btn-primary m-3\" (click)=\"ExecuteTest()\">Execute Request</button>\n  </div>\n  <div *ngIf=\"showWebSocketInput\" class=\"form-inline\">\n    <label class=\"sr-only\" for=\"inputWSMsg\">WebSocket Input Message</label>\n    <input [(ngModel)]=\"webSocketInputMessage\" type=\"text\" class=\"form-control col-md-10 m-3\" id=\"inputWSMsg\" placeholder=\"Enter the WebSocket message to send here\">\n    <button type=\"button\" class=\"btn btn-primary\" (click)=\"SendWebSocketMessage()\">Send</button>\n  </div>\n  <div *ngIf=\"(DataConsumerConfig?.httpMethod == 'post' || DataConsumerConfig?.httpMethod == 'put') && DataConsumerConfig.httpMethod !== undefined\" class=\"form-inline\">\n    <label class=\"sr-only\" for=\"inputHttpMsg\">HTTP Message</label>\n    <textarea rows=\"3\" [(ngModel)]=\"httpInputMessage\" type=\"text\" class=\"form-control col-md-10 m-3\" id=\"inputHttpMsg\" placeholder=\"Enter the http message body to send here\"></textarea>\n    <button type=\"button\" class=\"btn btn-primary\" (click)=\"SendHttpMessage()\">Send</button>\n  </div>\n  <div *ngFor=\"let ctxInp of showCtxInputs; let ix = index\" class=\"mx-3 form-inline\">\n    <label for=\"inputCtx{{ix}}\">{{ctxInp.name}}</label>\n    <input [(ngModel)]=\"ctxInp.value\" type=\"text\" class=\"form-control col-md-10 m-3\" id=\"inputCtx{{ix}}\" placeholder=\"Enter the context value to test with here\">\n  </div>\n  <div *ngIf=\"showCtxInputs.length\" class=\"mx-3 form-inline\">\n    <button type=\"button\" class=\"btn btn-primary\" (click)=\"ExecuteTest()\">Execute with context</button>\n  </div>\n  <div *ngIf=\"waiting\" class=\"card-block\">\n    <i class=\"fa fa-spinner fa-spin\"></i>Loading data...\n  </div>\n</div>\n<div class=\"card\">\n  <div class=\"card-header\">\n    Resulting data\n  </div>\n  <div *ngIf=\"dataSet\" class=\"card-block\">\n    <app-platform-table [Dataset]=\"dataSet\" [Config]=\"tableConfig\"></app-platform-table>\n  </div>\n  <div *ngIf=\"freeJsonData\" class=\"card-block\">\n    <pre>{{ freeJsonData | json }}</pre>\n  </div>\n</div>","styles":[""]}]}],"members":{"platformTableComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":77,"character":3},"arguments":[{"__symbolic":"reference","name":"PlatformTableComponent"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":113,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"onSelectChange":[{"__symbolic":"method"}],"onInitialize":[{"__symbolic":"method"}],"filterWidgets":[{"__symbolic":"method"}],"ExecuteTest":[{"__symbolic":"method"}],"SendHttpMessage":[{"__symbolic":"method"}],"onDataAvailable":[{"__symbolic":"method"}],"onDataError":[{"__symbolic":"method"}],"SendWebSocketMessage":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵt":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-lot-forecaster","template":"<p>\n  lot-forecaster works!\n</p>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":18,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"onInitialize":[{"__symbolic":"method"}],"onNewMessage":[{"__symbolic":"method"}],"onContextChanged":[{"__symbolic":"method"}],"onFiltersChanged":[{"__symbolic":"method"}],"onSortsChanged":[{"__symbolic":"method"}]}},"ɵu":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"app-network-diagram","template":"<!--<svg style=\"width: 1200px; height: 1500px;\">-->\n<div style=\"overflow: auto\">\n<svg [ngStyle]=\"{'width': '100%', 'height': svgHeight }\" >\n  <svg:rect *ngFor=\"let r of rectangles\"\n    [attr.x]=\"r.x\" [attr.y]=\"r.y\" [attr.width]=\"r.width\" [attr.height]=\"r.height\"\n    [ngStyle]=\"{'fill': r.color, 'stroke': 'gray', 'stroke-width': '1', 'fill-opacity': '0.1', 'stroke-opacity': '0.9'}\" />\n\n  <!-- [attr:clip-path]=\"'url(#' + r.x + '' + r.y + '' + r.width + '' + r.height + ')'\" -->\n  <svg:text *ngFor=\"let r of rectangles\"\n    (click)=\"selectNode(r.source)\"\n    [attr.x]=\"r.x + 1\" [attr.y]=\"r.y + 14\" font-size=\"13\">{{r.displayText}}  {{r.Badge}}\n    <title>{{r.text}}</title>\n  </svg:text>\n\n  <svg:line *ngFor=\"let r of lines\" [attr.x1]=\"r.x1\" [attr.y1]=\"r.y1\" [attr.x2]=\"r.x2\" [attr.y2]=\"r.y2\" stroke-width=\"1\" stroke=\"gray\"/>\n\n  <!--<svg:rect *ngFor=\"let r of rectangles\"\n    (click)=\"selectNode(r.source)\"\n    [attr.x]=\"r.x + 2\" [attr.y]=\"r.y + 2\" width=\"10\" [attr.height]=\"r.height - 4\"\n    [ngStyle]=\"{'fill': 'blue', 'stroke': 'black', 'stroke-width': '1'}\" >\n    <title>{{r.text}}</title>\n  </svg:rect>-->\n</svg>\n</div>","styles":[""]}]}],"members":{"rootNode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"nodeSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":41,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":50,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"onInitialize":[{"__symbolic":"method"}],"RectangleFactory":[{"__symbolic":"method"}],"selectNode":[{"__symbolic":"method"}],"CreateRectangles":[{"__symbolic":"method"}],"getTextWidth":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}]}},"ɵv":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"app-random-chart","template":"\n<div style=\"display: block\">\n  <!-- width=\"400\" height=\"400\"-->\n  <canvas baseChart\n            [datasets]=\"lineChartData\"\n            [labels]=\"lineChartLabels\"\n            [options]=\"lineChartOptions\"\n            [colors]=\"lineChartColors\"\n            [legend]=\"lineChartLegend\"\n            [chartType]=\"lineChartType\"\n            (chartHover)=\"chartHovered($event)\"\n            (chartClick)=\"chartClicked($event)\"></canvas>\n</div>\n<button type=\"button\" class=\"btn btn-info\" (click)=\"RefreshClick()\">Refresh</button>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":39,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"chartClicked":[{"__symbolic":"method"}],"chartHovered":[{"__symbolic":"method"}],"onInitialize":[{"__symbolic":"method"}],"StaticSettings":[{"__symbolic":"method"}],"onNewMessage":[{"__symbolic":"method"}],"RefreshClick":[{"__symbolic":"method"}],"BuildRandomData":[{"__symbolic":"method"}]}},"ɵw":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"app-recursive-panel","template":"<div class=\"leaf\" *ngIf=\"levelsBelow > 0; else lastLevel\">\n    <div class=\"leaf\" *ngFor=\"let gc of GroupedKeyList | groupKeyFilter; let i = index\">\n        <a href=\"javascript:void(0)\" (click)=\"gc.collapsed = !gc.collapsed\">\n            <i class='fa fa-chevron-right' [ngClass]=\"(gc.collapsed)?'fa-chevron-right':'fa-chevron-down'\"></i>\n        </a>\n        <a [platformRouterLink]=\"getContext(gc.context)\">{{gc.name}}</a>\n        <div *ngIf=\"!gc.collapsed\" class=\"collapse show\" id=\"{{gc.key}}\">\n            <div class=\"leaf\">\n                <app-recursive-panel *ngIf=\"levelsBelow > 0\" [additionalContext]=\"additionalContext\" [GroupedKeyList]=\"gc.children\" [levelsBelow]=\"levelsBelow-1\" [toggleState]=\"toggleState\" [topLevel]=\"false\"></app-recursive-panel>\n            </div>\n        </div>\n    </div>\n</div>\n<ng-template #lastLevel>\n    <div class=\"leaf\" *ngFor=\"let gc of GroupedKeyList | groupKeyFilter\">\n        <a [platformRouterLink]=\"getContext(gc.context)\">{{gc.name}}</a>\n        <span class=\"badge\">{{gc.badge}}</span>\n    </div>\n</ng-template>","styles":[".leaf{\n    padding:.25em 0 .25em .25em;\n    width:100%;\n}"]}]}],"members":{"GroupedKeyList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"levelsBelow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"toggleState":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"additionalContext":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"topLevel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":43,"character":82}]}],"getContext":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵx":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-widget-registration","template":"<div class=\"container-fluid\">\n  <div class=\"row\">\n    <div class=\"col-sm-6\">\n      <!--Start of success 'Available' section  -->\n      <section class=\"card card-outline-success\">\n        <div class=\"card-block\">\n          <h4 class=\"card-title\">Available</h4>\n        </div>\n        <ul class=\"list-group list-group-flush\">\n          <li class=\"list-group-item justify-content-between\" *ngFor=\"let widget of AvailableWidgets()\">\n            {{widget.name}}\n            <div>\n              Group:\n\n\n              <button *ngFor=\"let group of GroupWidgetsToDisplay(); let i = index\" [disabled]=\"WidgetIsInGroup(widget.name, group)\" type=\"button\"\n                class=\"btn btn-sm btn-outline-primary\" (click)=\"AddToGroup(widget, group)\">{{i+1}}</button>\n\n              <button type=\"button\" class=\"btn btn-sm btn-outline-primary\" (click)=\"AddToNewGroup(widget)\">New</button>\n\n              <button [disabled]=\"!WidgetIsGrouped(widget.name)\" type=\"button\" class=\"btn btn-sm btn-outline-primary\" (click)=\"AddToUngrouped(widget)\">None</button>\n              <button (click)=\"AddToHidden(widget)\" type=\"button\" class=\"btn btn-sm btn-secondary\">Hide</button>\n            </div>\n\n          </li>\n        </ul>\n      </section>\n      <!--End of success 'Available' section  -->\n      <!--End of danger 'Excluded' section  -->\n      <section class=\"card card-outline-danger margin-top-10\">\n        <div class=\"card-block\">\n          <h4 class=\"card-title\">Excluded</h4>\n        </div>\n        <ul class=\"list-group list-group-flush\">\n          <li class=\"list-group-item justify-content-between\" *ngFor=\"let widget of UnavailableWidgets()\">\n            {{widget.name}}\n            <div class=\"float-sm-right\">\n              <button *ngFor=\"let group of GroupWidgetsToDisplay(); let i = index\" type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"AddToGroup(widget, group)\">Group {{i+1}}</button>\n\n              <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"AddToNewGroup(widget)\">New Group</button>\n\n              <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"AddToUngrouped(widget)\">No Group</button>\n            </div>\n          </li>\n        </ul>\n      </section>\n      <!--End of danger 'Excluded' section  -->\n    </div>\n    <!--End of .col-sm-6 div  -->\n\n    <div *ngIf=\"widgetRegistrationCopy\" class=\"col-sm-6\">\n\n      <section id=\"accordion\" role=\"tablist\" aria-multiselectable=\"true\">\n        <div *ngFor=\"let group of GroupWidgetsToDisplay(); let i = index\" [ngClass]=\"i > 0 ? 'card margin-top-10 card-outline-primary' : 'card card-outline-primary'\">\n          <div class=\"card-header\" role=\"tab\" id=\"heading{{ i + 1 }}\">\n            <h5 class=\"mb-0\">\n              <a data-toggle=\"collapse\" data-parent=\"#accordion\" href=\"#collapse{{i+1}}\" aria-expanded=\"true\">\n                {{group.contextKey}} group {{group.index}}\n              </a>\n              <i class=\"fa fa-caret-down\" aria-hidden=\"true\"></i>\n              <div class=\"float-sm-right\">\n                <button [disabled]=\"!CanGroupUp(group)\" type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"GroupUp(group)\"><i class=\"fa fa-arrow-up\"></i></button>\n                <button [disabled]=\"!CanGroupDown(group)\" type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"GroupDown(group)\"><i class=\"fa fa-arrow-down\"></i></button>\n              </div>\n            </h5>\n          </div>\n\n          <div id=\"collapse{{ i + 1 }}\" class=\"collapse show\" role=\"tabpanel\">\n            <div class=\"card-block remove-card-block-padding\">\n              <ul class=\"list-group list-group-flush\">\n                <li class=\"list-group-item justify-content-between\" *ngFor=\"let widget of WidgetNameIndexesFor(group)\">{{widget.name}} ({{widget.index}})\n                  <div>\n                    <button [disabled]=\"!CanWidgetUp(group, widget)\" type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"WidgetUp(group, widget)\"><i class=\"fa fa-arrow-up fa-2\"></i></button>\n                    <button [disabled]=\"!CanWidgetDown(group, widget)\" type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"WidgetDown(group, widget)\"><i class=\"fa fa-arrow-down fa-2\"></i></button>\n                  </div>\n              </ul>\n            </div>\n            <div class=\"card-block remove-card-block-padding\">\n              <div class=\"card\">\n                <ul class=\"list-group list-group-flush\">\n                  <li class=\"list-group-item justify-content-between\">\n                    <h2 class=\"badge badge-primary\">Height</h2>\n                    <div class=\"btn-group\" role=\"group\">\n                      <button *ngFor=\"let hs of heightSpecValues\" [disabled]=\"group.heightSpec === hs.value\" (click)=\"GroupHeightChange(group, hs.value)\"\n                        type=\"button\" class=\"btn btn-secondary btn-sm\">{{hs.name}}</button>\n                    </div>\n                  </li>\n                  <li class=\"list-group-item justify-content-between\">\n                    <h2 class=\"badge badge-primary\">Width</h2>\n                    <div class=\"btn-group\" role=\"group\">\n                      <button *ngFor=\"let ws of widthSpecValues\" [disabled]=\"group.widthSpec === ws.value\" (click)=\"GroupWidthChange(group, ws.value)\"\n                        type=\"button\" class=\"btn btn-secondary btn-sm\">{{ws.name}}</button>\n                    </div>\n                  </li>\n                  <li class=\"list-group-item list-group-item-action list-group-item-danger\">\n                    <button (click)=\"ClearGroup(group)\" type=\"button\" class=\"btn btn-secondary btn-sm\">Remove Group</button>\n                  </li>\n                </ul>\n              </div>\n              <!--End of .card div  -->\n            </div>\n          </div>\n        </div>\n      </section>\n      <!--End of primary section  -->\n    </div>\n    <!--End of .col-sm-6 div  -->\n\n  </div>\n  <div class=\"row\">\n    <div class=\"col-sm-12\">\n      <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n        <button *ngIf=\"preferredSettingsCount\" (click)=\"UsePreferred()\" type=\"button\" class=\"btn btn-secondary\">Use Preferred Settings</button>\n        <button type=\"button\" (click)=\"SavePreferred()\" class=\"btn btn-secondary\">Save as Preferred Settings</button>\n        <button type=\"button\" (click)=\"ClearAllSelections()\" class=\"btn btn-secondary\">Reset Layout</button>\n      </div>\n    </div>\n  </div>\n  <!--End of main .row div  -->\n</div>\n<!-- End of .container-fluid div -->","styles":[".margin-top-10{\n    margin-top:10px;\n}\n\n.remove-card-block-padding{\n    padding:0;\n}\n\na{\n    color:inherit;\n}\na:focus, a:hover{\n    text-decoration:none;\n}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"Initialize":[{"__symbolic":"method"}],"CreateContextKey":[{"__symbolic":"method"}],"ClearAllSelections":[{"__symbolic":"method"}],"Reset":[{"__symbolic":"method"}],"widgetRegCopyLocal":[{"__symbolic":"method"}],"GroupHeightChange":[{"__symbolic":"method"}],"GroupWidthChange":[{"__symbolic":"method"}],"ContextMatchedGroups":[{"__symbolic":"method"}],"GroupWidgetsToDisplay":[{"__symbolic":"method"}],"CanGroupUp":[{"__symbolic":"method"}],"GroupUp":[{"__symbolic":"method"}],"CanGroupDown":[{"__symbolic":"method"}],"GroupDown":[{"__symbolic":"method"}],"CanWidgetUp":[{"__symbolic":"method"}],"WidgetUp":[{"__symbolic":"method"}],"CanWidgetDown":[{"__symbolic":"method"}],"WidgetDown":[{"__symbolic":"method"}],"NormalizeIndexes":[{"__symbolic":"method"}],"UnavailableWidgets":[{"__symbolic":"method"}],"AvailableWidgets":[{"__symbolic":"method"}],"AddToNewGroup":[{"__symbolic":"method"}],"AddToGroup":[{"__symbolic":"method"}],"AddToUngrouped":[{"__symbolic":"method"}],"AddToHidden":[{"__symbolic":"method"}],"ClearGroup":[{"__symbolic":"method"}],"_removeFromAllGroups":[{"__symbolic":"method"}],"_removeFromGroup":[{"__symbolic":"method"}],"NewGroup":[{"__symbolic":"method"}],"AddToMatching":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"WidgetIsGrouped":[{"__symbolic":"method"}],"WidgetIsInGroup":[{"__symbolic":"method"}],"WidgetNameIndexesFor":[{"__symbolic":"method"}],"WidgetsFor":[{"__symbolic":"method"}],"UsePreferred":[{"__symbolic":"method"}],"SavePreferred":[{"__symbolic":"method"}],"Save":[{"__symbolic":"method"}]}},"ɵy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"groupKeyFilter","pure":false}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ɵz":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-data-error-display","template":"<tabset type=\"pills\">\n  <tab heading=\"Error\">\n    <table class=\"table table-striped table-sm\">\n      <thead>\n        <tr class=\"table-danger\">\n          <td colspan=\"2\">Data Retrieval Error</td>\n        </tr>\n      </thead>\n      <tbody>\n        <tr *ngIf=\"customMessage\">\n          <td colspan=\"2\">{{customMessage}}</td>\n        </tr>\n\n        <tr *ngIf=\"dataRequestError && dataRequestError.widgetName\">\n          <td>Widget</td>\n          <td>{{dataRequestError.widgetName}}</td>\n        </tr>\n        <tr *ngIf=\"matchingDataPolicy && matchingDataPolicy.supportGroup\">\n          <td>Data Support Group</td>\n          <td>{{matchingDataPolicy.supportGroup}}</td>\n        </tr>\n        <tr *ngIf=\"matchingDataPolicy && matchingDataPolicy.supportMessage\">\n          <td>Data support Message</td>\n          <td>{{matchingDataPolicy.supportMessage}}</td>\n        </tr>\n        <tr *ngIf=\"matchingDataPolicy && matchingDataPolicy.supportNameList\">\n          <td>Contact List</td>\n          <td>{{matchingDataPolicy.supportNameList}}</td>\n        </tr>\n      </tbody>\n    </table>\n  </tab>\n  <tab heading=\"Details\">\n    <table class=\"table table-striped table-sm\">\n      <thead>\n        <tr class=\"table-danger\">\n          <td colspan=\"2\">Data Retrieval Error</td>\n        </tr>\n      </thead>\n      <tbody>\n        <tr *ngIf=\"dataRequestError && dataRequestError.ErrorMessage\">\n          <td>Error Message</td>\n          <td>{{dataRequestError.ErrorMessage}}</td>\n        </tr>\n        <tr *ngIf=\"dataRequestError && dataRequestError.dataPolicy\">\n          <td>data policy</td>\n          <td>{{dataRequestError.dataPolicy}}</td>\n        </tr>\n        <tr *ngIf=\"dataRequestError && dataRequestError.RequestKey\">\n          <td>data key</td>\n          <td>{{dataRequestError.RequestKey}}</td>\n        </tr>\n      </tbody>\n    </table>\n  </tab>\n</tabset>","styles":[""]}]}],"members":{"dataRequestError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"parentConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"customMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵba":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"GenericBaseComponent"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"app-generic-chart","template":"<div *ngIf=\"dataRequestError; else noError\">\n    <app-data-error-display [dataRequestError] = \"dataRequestError\" [parentConfig]=\"Config\" ></app-data-error-display>\n </div>\n \n <ng-template #noError>\n  <div *ngIf=\"displayDataSet;  else loading\" style=\"display: block\">\n    <!-- width=\"400\" height=\"400\"-->\n    <h3 *ngIf=\"errorMessage\">{{errorMessage}}</h3>\n    <canvas id=\"myChart\" *ngIf=\"dataSets\" baseChart [datasets]=\"dataSets\" [labels]=\"labels\" [options]=\"options\" [colors]=\"colors\"\n      [legend]=\"legend\" [chartType]=\"chartType\" (chartHover)=\"chartHovered($event)\" (chartClick)=\"chartClicked($event)\"></canvas>\n  </div>\n</ng-template>\n\n<ng-template #loading>\n  <i class=\"fa fa-spinner fa-spin\"></i>\n  Loading data...\n</ng-template>","styles":[""]}]}],"members":{"_chart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":42,"character":3},"arguments":[{"__symbolic":"reference","name":"BaseChartDirective"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":60,"character":25},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"PostProcessing":[{"__symbolic":"method"}],"chartClicked":[{"__symbolic":"method"}],"chartHovered":[{"__symbolic":"method"}],"ChartComplete":[{"__symbolic":"method"}],"BuildChart":[{"__symbolic":"method"}],"BuildChartFromFullConfiguration":[{"__symbolic":"method"}],"BuildChartFromGenericConfiguration":[{"__symbolic":"method"}]}},"ɵbb":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"GenericBaseComponent"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"app-generic-table","template":"<div *ngIf=\"dataRequestError; else noError\">\n   <app-data-error-display [dataRequestError] = \"dataRequestError\" [parentConfig]=\"Config\" ></app-data-error-display>\n</div>\n\n<ng-template #noError>\n\n  <div *ngIf=\"displayDataSet;  else loading\" class=\"table\">\n\n    <app-platform-table [Dataset]=\"displayDataSet\" [Config]=\"Config.config\" [SortAndfilterLocally]=\"false\"\n      (AddFilter)=\"AddFilter($event)\" (RemoveFilter)=\"RemoveFilter($event)\" (NewSort)=\"NewSort($event)\"></app-platform-table>\n\n  </div>\n</ng-template>\n\n<ng-template #loading>\n  <i class=\"fa fa-spinner fa-spin\"></i>\n  Loading data...\n</ng-template>\n\n<ol *ngIf=\"displayDataSet\" class=\"breadcrumb\">\n  <li class=\"breadcrumb-item active\"><strong>Retrieved: </strong>{{cacheDataInfo.CacheDate}}</li>\n  <li class=\"breadcrumb-item active\"><strong>Cache? </strong>{{cacheDataInfo.RetrievedFromCache}}</li>\n  <li class=\"breadcrumb-item active\"><strong>Visible: </strong>{{displayDataSet.data.length}} of {{originalDataSet.data.length}}</li>\n\n</ol>","styles":[".table-condensed>tbody>tr>td,\n.table-condensed>tbody>tr>th,\n.table-condensed>tfoot>tr>td,\n.table-condensed>tfoot>tr>th,\n.table-condensed>thead>tr>td,\n.table-condensed>thead>tr>th{\n    padding:2px;\n    font-size:12px\n}\n\n.table-responsive{\n    width:auto;\n}"]}]}],"members":{"platformTableComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":56,"character":3},"arguments":[{"__symbolic":"reference","name":"PlatformTableComponent"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":63,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"NewSort":[{"__symbolic":"method"}],"AddFilter":[{"__symbolic":"method"}],"RemoveFilter":[{"__symbolic":"method"}],"PostProcessing":[{"__symbolic":"method"}],"GetColorStyle":[{"__symbolic":"method"}],"SetSort":[{"__symbolic":"method"}],"filtered":[{"__symbolic":"method"}]}},"ɵbc":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseManagedDataWidget"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"app-generic-side-nav","template":"<div *ngIf=\"dataRequestError; else next\">\n    <span style=\"background-color: #ffcccc\">Data Retrieval Error</span>\n</div>\n\n<ng-template #next>\n    <div *ngIf=\"ready; else loading\" class=\"row\">\n        <div class=\"col-md-12\">\n            <div *ngIf=\"GroupedDataSideNavConfig.selectionContext\">\n\n                <label>{{GroupedDataSideNavConfig.selectionContext.name}}</label>\n                <select class=\"form-control\" name=\"selectedContext\" (change)=\"onSelectionContextChanged()\" [(ngModel)]=\"selectedContext\">\n                    <option *ngFor=\"let s of GroupedDataSideNavConfig.selectionContext.selection\" [ngValue]=\"s\">\n                            {{s}}\n                    </option>\n                </select>\n            </div>\n            <!-- search input -->\n            <input class=\"form-control\" type=\"text\" [ngModel]=\"filter\" (ngModelChange)=\"onFilterChange($event)\" placeholder=\"Search\"\n            />\n        </div>\n    </div>\n    <div *ngIf=\"ready\" class=\"row\">\n        <div class=\"tree\" *ngIf=\"displayedGroupedKeys.length > 0\">\n            <app-recursive-panel [additionalContext]=\"selectionContextParam\" [GroupedKeyList]=\"displayedGroupedKeys\" [levelsBelow]=\"levelsBelow\"\n                [toggleState]=\"toggleState\" [topLevel]=\"true\"></app-recursive-panel>\n        </div>\n    </div>\n</ng-template>\n\n<ng-template #loading>\n    <i class=\"fa fa-spinner fa-spin\"></i> Loading data...\n</ng-template>","styles":[".tree{\n    width:100%;\n    margin-left:12px;\n    margin-right:12px;\n}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":70,"character":23},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"WebPlatformApiService"}]}],"ngOnChanges":[{"__symbolic":"method"}],"onStateChanged":[{"__symbolic":"method"}],"onInitialize":[{"__symbolic":"method"}],"UpsertSelectionContextParameter":[{"__symbolic":"method"}],"onFilterChange":[{"__symbolic":"method"}],"onSelectionContextChanged":[{"__symbolic":"method"}],"onContextChanged":[{"__symbolic":"method"}],"onFiltersChanged":[{"__symbolic":"method"}],"onSortsChanged":[{"__symbolic":"method"}],"RequestData":[{"__symbolic":"method"}],"PostProcessing":[{"__symbolic":"method"}],"buildGroupedKeysForActive":[{"__symbolic":"method"}],"expand":[{"__symbolic":"method"}],"FilterGroupedKeyList":[{"__symbolic":"method"}],"_filterGKArray":[{"__symbolic":"method"}]}},"ɵbd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":50,"character":1},"arguments":[{"selector":"platform-multiselect-dropdown","template":"<div class=\"dropdown\" [ngClass]=\"settings.containerClasses\" [class.open]=\"isVisible\" (keyup.esc)=\"closeDropdown($event)\"\n  (keydown.arrowdown)=\"focusItem(1, $event)\" (keydown.arrowup)=\"focusItem(-1, $event)\">\n  <button *ngIf=\"!isVisible || !(isVisible && settings.enableSearch); else filter\" type=\"button\" class=\"dropdown-toggle\" [ngClass]=\"settings.buttonClasses\"\n    (click)=\"toggleDropdown($event)\" [disabled]=\"disabled\" [ssAutofocus]=\"!focusBack\">\n    {{ title }}\n    <span class=\"caret\"></span>\n  </button>\n  <ng-template #filter>\n    <div class=\"input-group input-group-sm \">\n      <span class=\"input-group-addon \" id=\"sizing-addon3 \">\n        <i class=\"fa fa-search \"></i>\n      </span>\n      <input type=\"text\" class=\"form-control\" ssAutofocus [formControl]=\"filterControl\" [placeholder]=\"texts.searchPlaceholder\"\n        class=\"form-control\">\n      <span class=\"input-group-btn\" *ngIf=\"filterControl.value.length>0\">\n        <button class=\"btn btn-default btn-secondary\" type=\"button\" (click)=\"clearSearch($event)\">\n          <i class=\"fa fa-times\"></i>\n        </button>\n      </span>\n    </div>\n  </ng-template>\n  <ul #scroller *ngIf=\"isVisible\" class=\"dropdown-menu\" [ngClass]=\"{'chunkydropdown-menu': settings.checkedStyle == 'visual' }\"\n    (scroll)=\"settings.isLazyLoad ? checkScrollPosition($event) : null\" (wheel)=\"settings.stopScrollPropagation ? checkScrollPropagation($event, scroller) : null\"\n    [class.pull-right]=\"settings.pullRight\" [class.dropdown-menu-right]=\"settings.pullRight\" [style.max-height]=\"settings.maxHeight\"\n    style=\"display: block; height: auto; overflow-y: auto;\" (keydown.tab)=\"focusItem(1, $event)\" (keydown.shift.tab)=\"focusItem(-1, $event)\">\n    <li class=\"dropdown-item check-control check-control-check\" *ngIf=\"settings.showCheckAll && !disabledSelection\" (click)=\"checkAll()\">\n      <a href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\">\n        <span style=\"width: 16px;\" [ngClass]=\"{'glyphicon glyphicon-ok': settings.checkedStyle !== 'fontawesome','fa fa-check': settings.checkedStyle === 'fontawesome'}\"></span>\n        {{ texts.checkAll }}\n      </a>\n    </li>\n    <li class=\"dropdown-item check-control check-control-uncheck\" *ngIf=\"settings.showUncheckAll && !disabledSelection\" (click)=\"uncheckAll()\">\n      <a href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\">\n        <span style=\"width: 16px;\" [ngClass]=\"{'glyphicon glyphicon-remove': settings.checkedStyle !== 'fontawesome','fa fa-times': settings.checkedStyle === 'fontawesome'}\"></span>\n        {{ texts.uncheckAll }}\n      </a>\n    </li>\n    <li *ngIf=\"settings.showCheckAll || settings.showUncheckAll\" class=\"dropdown-divider divider\"></li>\n    <li *ngIf=\"!renderItems\" class=\"dropdown-item empty\">{{ texts.searchNoRenderText }}</li>\n    <li *ngIf=\"renderItems && !renderFilteredOptions.length\" class=\"dropdown-item empty\">{{ texts.searchEmptyResult }}</li>\n    <li class=\"dropdown-item\" *ngFor=\"let option of renderFilteredOptions\" [ngStyle]=\"getItemStyle(option)\"\n      [ngClass]=\"option.classes\" [class.dropdown-header]=\"option.isLabel\" [ssAutofocus]=\"option !== focusedItem\" tabindex=\"-1\"\n      (click)=\"setSelected($event, option)\" (keydown.space)=\"setSelected($event, option)\" (keydown.enter)=\"setSelected($event, option)\">\n      <a *ngIf=\"!option.isLabel; else label\" href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\" [style.padding-left]=\"this.parents.length>0&&this.parents.indexOf(option.id)<0&&'30px'\"\n        [ngStyle]=\"getItemStyleSelectionDisabled()\">\n        <ng-container [ngSwitch]=\"settings.checkedStyle\">\n          <input *ngSwitchCase=\"'checkboxes'\" type=\"checkbox\" [checked]=\"isSelected(option)\" (click)=\"preventCheckboxCheck($event, option)\"\n            [disabled]=\"isCheckboxDisabled(option)\" [ngStyle]=\"getItemStyleSelectionDisabled()\" />\n          <span *ngSwitchCase=\"'glyphicon'\" style=\"width: 16px;\" class=\"glyphicon\" [class.glyphicon-ok]=\"isSelected(option)\" [class.glyphicon-lock]=\"isCheckboxDisabled(option)\"></span>\n          <span *ngSwitchCase=\"'fontawesome'\" style=\"width: 16px;display: inline-block;\">\n            <i *ngIf=\"isSelected(option)\" class=\"fa fa-check\" aria-hidden=\"true\"></i>\n            <i *ngIf=\"isCheckboxDisabled(option)\" class=\"fa fa-lock\" aria-hidden=\"true\"></i>\n          </span>\n          <span *ngSwitchCase=\"'visual'\" style=\"display:block;float:left; border-radius: 0.2em; border: 0.1em solid rgba(44, 44, 44, 0.63);background:rgba(0, 0, 0, 0.1);width: 5.5em;\">\n            <div class=\"slider\" [ngClass]=\"{'slideron': isSelected(option)}\">\n              <img *ngIf=\"option.image != null\" [src]=\"option.image\" style=\"height: 100%; width: 100%; object-fit: contain\" />\n              <div *ngIf=\"option.image == null\" style=\"height: 100%; width: 100%;text-align: center; display: table; background-color:rgba(0, 0, 0, 0.74)\">\n                <div class=\"content_wrapper\">\n                  <span style=\"font-size:3em;color:white\" class=\"glyphicon glyphicon-eye-close\"></span>\n                </div>\n              </div>\n            </div>\n          </span>\n        </ng-container>\n        <span [ngClass]=\"{'chunkyrow': settings.checkedStyle == 'visual' }\" [class.disabled]=\"isCheckboxDisabled(option)\" [ngClass]=\"settings.itemClasses\" [style.font-weight]=\"this.parents.indexOf(option.id)>=0?'bold':'normal'\">\n          {{ option.name }}\n        </span>\n      </a>\n      <ng-template #label><span [class.disabled]=\"isCheckboxDisabled()\">{{ option.name }}</span></ng-template>\n    </li>\n  </ul>\n</div>\n","styles":["a{\n  outline:none !important;\n}\n\n.dropdown-inline{\n  display:inline-block;\n}\n\n.dropdown-toggle .caret{\n  margin-left:4px;\n  white-space:nowrap;\n  display:inline-block;\n}\n\n.chunkydropdown-menu{\n  min-width:20em;\n}\n\n.chunkyrow{\n  line-height:2;\n  margin-left:1em;\n  font-size:2em;\n}\n\n.slider{\n  width:3.8em;\n  height:3.8em;\n  display:block;\n  -webkit-transition:all 0.125s linear;\n  transition:all 0.125s linear;\n  margin-left:0.125em;\n  margin-top:auto;\n}\n\n.slideron{\n  margin-left:1.35em;\n}\n\n.content_wrapper{\n  display:table-cell;\n  vertical-align:middle;\n}\n"],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":45,"character":11},"useExisting":{"__symbolic":"reference","name":"ɵbd"},"multi":true},{"__symbolic":"reference","name":"ɵbe"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":169,"character":19},"member":"OnPush"}}]}],"members":{"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":180,"character":3}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":181,"character":3}}]}],"texts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":182,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":183,"character":3}}]}],"disabledSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":184,"character":3}}]}],"selectionLimitReached":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":185,"character":3}}]}],"dropdownClosed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":186,"character":3}}]}],"dropdownOpened":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":187,"character":3}}]}],"onAdded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":188,"character":3}}]}],"onRemoved":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":189,"character":3}}]}],"onChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":190,"character":3}}]}],"onLazyLoad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":191,"character":3}}]}],"onFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":192,"character":3}}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":194,"character":3},"arguments":["document: click",["$event.target"]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":195,"character":3},"arguments":["document: touchstart",["$event.target"]]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":292,"character":21},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":293,"character":16},{"__symbolic":"reference","name":"ɵbe"},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers","line":295,"character":13},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":296,"character":19}]}],"getItemStyle":[{"__symbolic":"method"}],"getItemStyleSelectionDisabled":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateRenderItems":[{"__symbolic":"method"}],"applyFilters":[{"__symbolic":"method"}],"fireModelChange":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"clearSearch":[{"__symbolic":"method"}],"toggleDropdown":[{"__symbolic":"method"}],"closeDropdown":[{"__symbolic":"method"}],"isSelected":[{"__symbolic":"method"}],"setSelected":[{"__symbolic":"method"}],"updateNumSelected":[{"__symbolic":"method"}],"updateTitle":[{"__symbolic":"method"}],"searchFilterApplied":[{"__symbolic":"method"}],"addChecks":[{"__symbolic":"method"}],"checkAll":[{"__symbolic":"method"}],"uncheckAll":[{"__symbolic":"method"}],"preventCheckboxCheck":[{"__symbolic":"method"}],"isCheckboxDisabled":[{"__symbolic":"method"}],"checkScrollPosition":[{"__symbolic":"method"}],"checkScrollPropagation":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"focusItem":[{"__symbolic":"method"}],"maybePreventDefault":[{"__symbolic":"method"}],"maybeStopPropagation":[{"__symbolic":"method"}]}},"ɵbe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":8,"character":1},"arguments":[{"name":"searchFilter"}]}],"members":{"transform":[{"__symbolic":"method"}],"_getSubsetOptions":[{"__symbolic":"method"}],"_doSearch":[{"__symbolic":"method"}],"_limitRenderedItems":[{"__symbolic":"method"}],"_escapeRegExp":[{"__symbolic":"method"}]}},"ɵbf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[ssAutofocus]"}]}],"members":{"ssAutofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":17,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":17,"character":29}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}]}},"ɵbg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":32,"character":1},"arguments":[{"selector":":not(a)[platformRouterLink]"}]}],"members":{"queryParams":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"commandsType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"context":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"filters":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"sorts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"display":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"fragment":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"preserveFragment":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Attribute","line":50,"character":7},"arguments":["tabindex"]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":46,"character":22},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":46,"character":45},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":50,"character":57},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":50,"character":72}]}],"platformRouterLink":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"processCommands":[{"__symbolic":"method"}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":123,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":125,"character":3},"arguments":["click"]}]}],"sendWarn":[{"__symbolic":"method"}]}},"ɵbh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":157,"character":1},"arguments":[{"selector":"a[platformRouterLink]"}]}],"members":{"target":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":159,"character":3},"arguments":["attr.target"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":159,"character":31}}]}],"queryParams":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":160,"character":3}}]}],"commandsType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":161,"character":3}}]}],"context":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":162,"character":3}}]}],"filters":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":163,"character":3}}]}],"sorts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":164,"character":3}}]}],"display":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":165,"character":3}}]}],"fragment":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":166,"character":3}}]}],"preserveFragment":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":167,"character":3}}]}],"href":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":173,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":46,"character":22},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":46,"character":45},{"__symbolic":"reference","name":"DisplayStateService"},{"__symbolic":"reference","name":"ClientSettingsService"},{"__symbolic":"reference","name":"AppStateService"},{"__symbolic":"reference","module":"@angular/common","name":"LocationStrategy","line":180,"character":32}]}],"platformRouterLink":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":188,"character":3}}]}],"processCommands":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":258,"character":3},"arguments":["click",["$event.button","$event.ctrlKey","$event.metaKey","$event.shiftKey"]]}]}],"updateTargetUrlAndHref":[{"__symbolic":"method"}],"sendWarn":[{"__symbolic":"method"}]}}},"origins":{"highchartsModules":"./index","WebPlatformCoreModule":"./index","Adal5User":"./services/adal/adal5-user","Adal5Service":"./services/adal/adal5.service","Adal5HTTPService":"./services/adal/adal5-http.service","GenericBaseComponent":"./components/widgets/generic/generic-base/generic-base.component","PlatformTableComponent":"./components/platform-table/platform-table.component","CellInfo":"./components/platform-table/platform-table.component","ButtonCellInfo":"./components/platform-table/platform-table.component","minMaxReply":"./components/platform-table/platform-table.component","PlatformTableXComponent":"./components/platform-table-x/platform-table-x.component","BaseChartDirective":"./directives/chart/base-chart-directive","Color":"./directives/chart/base-chart-directive","Colors":"./directives/chart/base-chart-directive","TableauComponent":"./components/widgets/tableau/tableau.component","TableauConfig":"./components/widgets/tableau/tableau.component","CanvasChartComponent":"./components/canvas-chart/canvas-chart.component","HighchartPlatformComponent":"./components/highchart-platform/highchart-platform.component","MainComponent":"./main.component","MainDisplayComponent":"./components/layout/main-display/main-display.component","TopNavComponent":"./components/layout/top-nav/top-nav.component","GroupDisplayComponent":"./components/layout/group-display/group-display.component","Comment":"./components/layout/group-display/group-display.component","SideNavComponent":"./components/layout/side-nav/side-nav.component","BaseWidget":"./components/widgets/BaseWidget/BaseWidget.component","BaseManagedDataWidget":"./components/widgets/BaseManagedDataWidget/BaseManagedDataWidget.component","SecretService":"./services/secret.service","WebPlatformApiService":"./services/WebPlatformApiService","DisplayStateService":"./services/DisplayStateService","Events":"./services/DisplayStateService","UrlConstants":"./services/DisplayStateService","CacheConstants":"./services/DisplayStateService","ClientSettingsService":"./services/ClientSettingsService","ObjectDiffFinderService":"./services/ObjectDiffFinderService","AppState":"./services/AppStateService","LogEntry":"./services/AppStateService","UserInfo":"./services/AppStateService","AppStateService":"./services/AppStateService","datapoint":"./components/highchart-platform/highchart-platform-data-adapter","HighChartDataAdapter":"./components/highchart-platform/highchart-platform-data-adapter","ColorHelper":"./components/highchart-platform/highchart-platform-data-adapter","IChartConfig":"./components/highchart-platform/highchart-platform-interfaces","IChartSeries":"./components/highchart-platform/highchart-platform-interfaces","ITableData":"./components/highchart-platform/highchart-platform-interfaces","IBoxAndWhiskerDataPoints":"./components/highchart-platform/highchart-platform-interfaces","IScatterDataPoints":"./components/highchart-platform/highchart-platform-interfaces","IChartStatsCalc":"./components/highchart-platform/highchart-platform-interfaces","IBoxPlotSeriesDefaultBoxToolTip":"./components/highchart-platform/highchart-platform-interfaces","BoxPlotOptions":"./components/highchart-platform/highchart-platform-interfaces","ChartConfigBuilder":"./components/highchart-platform/highchart-platform-models","ScatterDataPoint":"./components/highchart-platform/highchart-platform-models","ChartStatsCalc":"./components/highchart-platform/highchart-platform-models","UtilityFunctions":"./classes/UtilityFunctions","Dictionary":"./classes/UtilityFunctions","ApiVersionCheckResults":"./classes/UtilityFunctions","WindowUtils":"./classes/UtilityFunctions","TreeMapDataSetAdapter":"./classes/TreeMapDataSetAdapter","DataSetFilter":"./classes/DataSetFilter","FilterSpec":"./classes/DataSetFilter","Descriptive":"./classes/Descriptive","Dataset":"./classes/Descriptive","DataSetConverter":"./classes/DataSetConverter","Guid":"./classes/Guid","DataRequestError":"./interfaces/DisplayInterfaces","DataRequestReply":"./interfaces/DisplayInterfaces","WebSocketData":"./interfaces/DisplayInterfaces","AppDisplayState":"./interfaces/DisplayInterfaces","CurrentAppState":"./interfaces/DisplayInterfaces","SideNavState":"./interfaces/DisplayInterfaces","SideNavWidgetConfig":"./interfaces/DisplayInterfaces","SideNavList":"./interfaces/DisplayInterfaces","ConflictViewer":"./interfaces/DisplayInterfaces","ConflictData":"./interfaces/DisplayInterfaces","DataSet":"./interfaces/DisplayInterfaces","DataArrayOfObjects":"./interfaces/DisplayInterfaces","ManagedCacheHitLog":"./interfaces/DisplayInterfaces","CustomMenu":"./interfaces/DisplayInterfaces","CustomMenuItem":"./interfaces/DisplayInterfaces","GroupedKey":"./interfaces/DisplayInterfaces","UserStatistics":"./interfaces/UserInterfaces","WidgetPreferences":"./interfaces/UserInterfaces","WidgetRegistration":"./interfaces/UserInterfaces","WidgetGroup":"./interfaces/UserInterfaces","UsageCounter":"./interfaces/UserInterfaces","WidgetConfiguration":"./interfaces/WidgetInterfaces","ContextMatchingRule":"./interfaces/WidgetInterfaces","DataConsumerConfiguration":"./interfaces/WidgetInterfaces","DataPolicy":"./interfaces/WidgetInterfaces","APIStoreTokenInfo":"./interfaces/WidgetInterfaces","FilterRule":"./interfaces/WidgetInterfaces","CacheRules":"./interfaces/WidgetInterfaces","DataTableValueInfo":"./interfaces/WidgetInterfaces","TableButtonInfo":"./interfaces/WidgetInterfaces","TableRowSelectionButton":"./interfaces/WidgetInterfaces","ActionButtonsPosition":"./interfaces/WidgetInterfaces","GenericTableConfiguration":"./interfaces/WidgetInterfaces","ActionButtonConfig":"./interfaces/WidgetInterfaces","Feedback":"./interfaces/WidgetInterfaces","TableColumnRules":"./interfaces/WidgetInterfaces","ColumnConfig":"./interfaces/WidgetInterfaces","ColumnHeaderConfigs":"./interfaces/WidgetInterfaces","RowChangeBehavior":"./interfaces/WidgetInterfaces","HeatmapRules":"./interfaces/WidgetInterfaces","ParetoRules":"./interfaces/WidgetInterfaces","CsvExportOptions":"./interfaces/WidgetInterfaces","GenericFullChartConfiguration":"./interfaces/WidgetInterfaces","GenericChartConfiguration":"./interfaces/WidgetInterfaces","SeriesGroupConfig":"./interfaces/WidgetInterfaces","SeriesConfig":"./interfaces/WidgetInterfaces","NameValue":"./interfaces/WidgetInterfaces","NameIndex":"./interfaces/WidgetInterfaces","DataGrouping":"./interfaces/WidgetInterfaces","Aggregation":"./interfaces/WidgetInterfaces","Pivot":"./interfaces/WidgetInterfaces","ManagedDataReply":"./interfaces/WidgetInterfaces","CacheDataInfo":"./interfaces/WidgetInterfaces","ɵa":"./components/widgets/admin/master-configuration/master-configuration.component","ɵb":"./components/widgets/admin/widget-help/widget-help.component","ɵc":"./components/widgets/admin/cache-data-admin/cache-data-admin.component","ɵd":"./components/widgets/admin/user-widget-preferences/user-widget-preferences.component","ɵe":"./components/widgets/admin/diagnostics/diagnostics.component","ɵf":"./components/widgets/admin/server-hit-logs/server-hit-logs.component","ɵg":"./components/widgets/landing-page/landing-page.component","ɵh":"./components/widgets/admin/Editors/data-policy-editor/data-policy-editor.component","ɵi":"./components/widgets/admin/Editors/cache-rule-editor/cache-rule-editor.component","ɵj":"./components/widgets/admin/Editors/cache-rules-editor/cache-rules-editor.component","ɵk":"./components/widgets/admin/Editors/data-consumer-config-editor/data-consumer-config-editor.component","ɵl":"./components/widgets/admin/Editors/data-grouping-editor/data-grouping-editor.component","ɵm":"./components/widgets/admin/Editors/filter-rule-editor/filter-rule-editor.component","ɵn":"./components/widgets/admin/Editors/generic-chart-config/generic-chart-config.component","ɵo":"./components/widgets/admin/Editors/generic-table-config/generic-table-config.component","ɵp":"./components/widgets/admin/Editors/name-value-editor/name-value-editor.component","ɵq":"./components/widgets/admin/Editors/widget-config-editor/widget-config-editor.component","ɵr":"./components/layout/core-widget-container/core-widget-container.component","ɵs":"./components/widgets/admin/data-policy-testing/data-policy-testing.component","ɵt":"./components/widgets/lot-forecaster/lot-forecaster.component","ɵu":"./components/widgets/network-diagram/network-diagram.component","ɵv":"./components/widgets/random-chart/random-chart.component","ɵw":"./components/widgets/recursive-panel/recursive-panel.component","ɵx":"./components/layout/widget-registration/widget-registration.component","ɵy":"./directives/GroupKeyVisibleFilterPipe","ɵz":"./components/data-error-display/data-error-display.component","ɵba":"./components/widgets/generic/generic-chart/generic-chart.component","ɵbb":"./components/widgets/generic/generic-table/generic-table.component","ɵbc":"./components/widgets/generic/generic-grouped-data-side-nav/generic-grouped-data-side-nav.component","ɵbd":"./components/platform-multiselect/dropdown/dropdown.component","ɵbe":"./components/platform-multiselect/dropdown/search-filter.pipe","ɵbf":"./components/platform-multiselect/dropdown/autofocus.directive","ɵbg":"./directives/platform-router-link","ɵbh":"./directives/platform-router-link"},"importAs":"web-platform-library"}