widget-common-container 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.angular/cache/19.2.26/ng-packagr/0997d7866dbb7999756bcd6dce071e827244865f4ff149c26d049d1515686b01 +1 -0
- package/.angular/cache/19.2.26/ng-packagr/882519e10fb587011272af89a34932495c0e2cc97d0c030536d1033ee55ce561 +1 -0
- package/.angular/cache/19.2.26/ng-packagr/8b15b546ec32b4e82b20945f62d23ba911050bdc6a4a60d34875eea6fe236635 +1 -0
- package/.angular/cache/19.2.26/ng-packagr/9711df1afdc00e2ac901d2b22d9559a220e74d16c0bf6d3917e410c565aed496 +1 -0
- package/.angular/cache/19.2.26/ng-packagr/tsbuildinfo/inspark-widget-common.tsbuildinfo +1 -0
- package/.editorconfig +13 -0
- package/.eslintrc.json +28 -0
- package/README.md +27 -0
- package/angular.json +46 -0
- package/e2e/protractor.conf.js +28 -0
- package/e2e/src/app.e2e-spec.ts +14 -0
- package/e2e/src/app.po.ts +11 -0
- package/e2e/tsconfig.e2e.json +13 -0
- package/package.json +75 -0
- package/projects/widget-common/copy.json +8 -0
- package/projects/widget-common/karma.conf.js +31 -0
- package/projects/widget-common/ng-package.json +7 -0
- package/projects/widget-common/package-lock.json +78 -0
- package/projects/widget-common/package.json +23 -0
- package/projects/widget-common/src/assets/error.svg +6 -0
- package/projects/widget-common/src/assets/falsevalue.svg +6 -0
- package/projects/widget-common/src/assets/icon.svg +6 -0
- package/projects/widget-common/src/assets/none.svg +6 -0
- package/projects/widget-common/src/assets/success.svg +6 -0
- package/projects/widget-common/src/assets/warning.svg +6 -0
- package/projects/widget-common/src/lib/common.ts +23 -0
- package/projects/widget-common/src/lib/communication.service.ts +59 -0
- package/projects/widget-common/src/lib/echart/echart.component.html +2 -0
- package/projects/widget-common/src/lib/echart/echart.component.scss +40 -0
- package/projects/widget-common/src/lib/echart/echart.component.ts +703 -0
- package/projects/widget-common/src/lib/echart/en.ts +156 -0
- package/projects/widget-common/src/lib/echart/ru.ts +156 -0
- package/projects/widget-common/src/lib/forge/ParamAssign.ts +187 -0
- package/projects/widget-common/src/lib/forge/Script.service.ts +86 -0
- package/projects/widget-common/src/lib/forge/extenstion.ts +263 -0
- package/projects/widget-common/src/lib/forge/forge.component.html +2 -0
- package/projects/widget-common/src/lib/forge/forge.component.scss +6 -0
- package/projects/widget-common/src/lib/forge/forge.component.ts +184 -0
- package/projects/widget-common/src/lib/forge/forge.interface.ts +4 -0
- package/projects/widget-common/src/lib/loader.ts +19 -0
- package/projects/widget-common/src/lib/pie-chart/pie-chart.component.html +1 -0
- package/projects/widget-common/src/lib/pie-chart/pie-chart.component.scss +3 -0
- package/projects/widget-common/src/lib/pie-chart/pie-chart.component.ts +252 -0
- package/projects/widget-common/src/lib/shared.module.ts +40 -0
- package/projects/widget-common/src/lib/sprintf.ts +212 -0
- package/projects/widget-common/src/lib/widget-container/widget-container.component.ts +53 -0
- package/projects/widget-common/src/lib/widget.api.ts +24 -0
- package/projects/widget-common/src/lib/widget.component.ts +87 -0
- package/projects/widget-common/src/lib/widget.dialog.ts +14 -0
- package/projects/widget-common/src/lib/widget.generator.ts +1532 -0
- package/projects/widget-common/src/lib/widget.interface.ts +871 -0
- package/projects/widget-common/src/lib/widget.utils.ts +634 -0
- package/projects/widget-common/src/public_api.ts +9 -0
- package/projects/widget-common/src/scss/main.scss +24 -0
- package/projects/widget-common/src/test.ts +22 -0
- package/projects/widget-common/tsconfig.lib.json +38 -0
- package/projects/widget-common/tsconfig.lib.prod.json +6 -0
- package/projects/widget-common/tsconfig.spec.json +17 -0
- package/projects/widget-common/tslint.json +17 -0
- package/projects/widget-common/versions/full/copy.json +15 -0
- package/projects/widget-common/versions/full/package.json +7 -0
- package/projects/widget-common/versions/full/public_api.ts +19 -0
- package/projects/widget-common/versions/interfaces/copy.json +15 -0
- package/projects/widget-common/versions/interfaces/package.json +7 -0
- package/projects/widget-common/versions/interfaces/public_api.ts +9 -0
- package/src/app/app.component.html +20 -0
- package/src/app/app.component.scss +0 -0
- package/src/app/app.component.spec.ts +31 -0
- package/src/app/app.component.ts +10 -0
- package/src/app/app.module.ts +16 -0
- package/src/assets/.gitkeep +0 -0
- package/src/browserslist +11 -0
- package/src/environments/environment.prod.ts +3 -0
- package/src/environments/environment.ts +16 -0
- package/src/favicon.ico +0 -0
- package/src/index.html +14 -0
- package/src/karma.conf.js +31 -0
- package/src/main.ts +12 -0
- package/src/polyfills.ts +80 -0
- package/src/styles.scss +1 -0
- package/src/test.ts +20 -0
- package/src/tsconfig.app.json +11 -0
- package/src/tsconfig.spec.json +18 -0
- package/src/tslint.json +17 -0
- package/tsconfig.json +34 -0
- package/tslint.json +131 -0
- package/update_full.js +27 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"hash":"2c1992d4aa8456ffbcac87914a73136fb037175c18b33c41d2ffc3ec2e3e96a6","fesm2022":[{"exports":["ArrayNumberPipe","ChartTypeToView","ChartTypes","ChartUrl","ChartViewToType","ChartViews","CommunicationCommand","CommunicationService","Component","ControllerState","DashboardSharedModule","DashboardType","EChartComponentModule","EchartComponent","FilterIndexOfPipe","ForgeComponent","ForgeComponentModule","INTERVAL_PARAM_VALUE","ITEM_TYPE","LineType","MakeChartUrl","MakeIconUrl","MakePictureUrl","PARAM_STATE","PARAM_STATE_INT","PARAM_TYPE","PARAM_TYPE_ITOS","PRIME_MODULES","PeriodFromDatePipe","PieChartComponent","PieChartComponentModule","SINGLE_PARAM_VALUE","STATE_COLORS","SeriesDuration","SiteTheme","Utils","VALUE_TYPE","WidgetComponent","WidgetComponentContainer","WidgetContainer","WidgetCustomFieldType","WidgetDialog","_","addArrayItem","assignValues","clearParams","clearValue","common","convertArcherToItem","createGenerateItemConfig","createParamList","findParam","generateValues","getRandom","prepareExternalJSON","updateIndex","updateWidgetMediaUrl","validateArcherParams"],"facadeModuleId":"C:\\Projects\\widget-common\\dist\\widget-common\\full\\esm2022\\inspark-widget-common.mjs","isDynamicEntry":false,"isEntry":true,"isImplicitEntry":false,"moduleIds":["C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/communication.service.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/common.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/loader.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.interface.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.component.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.utils.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/forge/extenstion.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/forge/ParamAssign.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/forge/Script.service.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/forge/forge.component.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/pie-chart/pie-chart.component.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/echart/ru.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/echart/en.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/echart/echart.component.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/shared.module.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.generator.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.api.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.dialog.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget-container/widget-container.component.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/forge/forge.interface.mjs","C:/Projects/widget-common/dist/widget-common/full/esm2022/public_api.mjs","C:\\Projects\\widget-common\\dist\\widget-common\\full\\esm2022\\inspark-widget-common.mjs"],"name":"inspark-widget-common","type":"chunk","dynamicImports":["echarts","echarts"],"fileName":"inspark-widget-common.mjs","implicitlyLoadedBefore":[],"importedBindings":{"@angular/core":["*","Injectable","Pipe","EventEmitter","Output","Input","ViewChild","ChangeDetectionStrategy","Component","NgModule","ViewEncapsulation"],"rxjs":["Subject"],"@ngx-translate/core":["TranslateModule"],"@angular/common":["CommonModule","*","DatePipe"],"ng-inline-svg-2":["InlineSVGModule","*"],"@angular/common/http":["*"],"@angular/forms":["FormsModule"],"js-cookie":["default"],"ngx-echarts":["NgxEchartsDirective","NgxEchartsModule","*"],"echarts":["*"],"primeng/button":["ButtonModule"],"primeng/dialog":["DialogModule"],"primeng/toast":["ToastModule"],"primeng/api":["MessageService"]},"imports":["@angular/core","rxjs","@ngx-translate/core","@angular/common","ng-inline-svg-2","@angular/common/http","@angular/forms","js-cookie","ngx-echarts","echarts","primeng/button","primeng/dialog","primeng/toast","primeng/api"],"modules":{"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/communication.service.mjs":{"code":"var CommunicationCommand;\n(function (CommunicationCommand) {\n CommunicationCommand[\"values\"] = \"values\";\n CommunicationCommand[\"params\"] = \"params\";\n CommunicationCommand[\"locale\"] = \"locale\";\n CommunicationCommand[\"theme\"] = \"theme\";\n CommunicationCommand[\"widget\"] = \"widget\";\n CommunicationCommand[\"resize\"] = \"resize\";\n CommunicationCommand[\"paramData\"] = \"paramData\";\n})(CommunicationCommand || (CommunicationCommand = {}));\nclass CommunicationService {\n constructor() {\n this.messageSource = {};\n this.message$ /*: Record<number, Observable<CommunicationValue>>*/ = {};\n this.cache = {};\n }\n create(id) {\n const _id = `${id}`.trim();\n if (!this.messageSource[_id]) {\n this.messageSource[_id] = new Subject();\n this.message$[_id] = this.messageSource[_id].asObservable();\n this.cache[_id] = {};\n }\n }\n next(widgetId, value) {\n const _id = `${widgetId}`.trim();\n this.create(_id);\n this.messageSource[_id].next(value);\n if (value.command) {\n this.cache[_id][value.command] = value;\n }\n }\n subscribe(widgetId, callback) {\n const _id = `${widgetId}`.trim();\n this.create(_id);\n if (this.cache[_id][CommunicationCommand.params]) {\n callback((this.cache[_id][CommunicationCommand.params]));\n }\n for (const k in this.cache[_id]) {\n if (this.cache[_id].hasOwnProperty(k)) {\n callback((this.cache[_id][k]));\n }\n }\n return this.message$[_id].subscribe(callback);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: CommunicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: CommunicationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: CommunicationService, decorators: [{\n type: Injectable\n }] });","originalLength":7402,"removedExports":[],"renderedExports":["CommunicationCommand","CommunicationService"],"renderedLength":2128},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/common.mjs":{"code":"class Common {\n constructor() {\n this.serviceUrl = '';\n }\n getWidgetPath(widget) {\n return `/assets/widgets/${widget.storeId}/`;\n }\n transformChartUrlConfig(param, isCalc = null, isSignal = null) {\n return '';\n }\n override(serviceUrl, transformChartUrlConfig, getWidgetPath) {\n this.serviceUrl = serviceUrl;\n this.transformChartUrlConfig = transformChartUrlConfig;\n this.getWidgetPath = getWidgetPath;\n }\n}\nconst common = new Common();","originalLength":2203,"removedExports":[],"renderedExports":["common"],"renderedLength":501},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/loader.mjs":{"code":"const WIDGET_CACHE = {};\nfunction updateWidgetMediaUrl(media, url) {\n const res = {};\n for (const key in media) {\n if (media.hasOwnProperty(key)) {\n res[key] = url + media[key];\n }\n }\n return res;\n}","originalLength":1497,"removedExports":[],"renderedExports":["updateWidgetMediaUrl"],"renderedLength":235},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.interface.mjs":{"code":"var ITEM_TYPE;\n(function (ITEM_TYPE) {\n ITEM_TYPE[ITEM_TYPE[\"single\"] = 1] = \"single\";\n ITEM_TYPE[ITEM_TYPE[\"series\"] = 2] = \"series\";\n ITEM_TYPE[ITEM_TYPE[\"events\"] = 3] = \"events\";\n ITEM_TYPE[ITEM_TYPE[\"sysinfo\"] = 4] = \"sysinfo\";\n ITEM_TYPE[ITEM_TYPE[\"interval\"] = 5] = \"interval\";\n ITEM_TYPE[ITEM_TYPE[\"table\"] = 6] = \"table\";\n ITEM_TYPE[ITEM_TYPE[\"custom\"] = 7] = \"custom\";\n ITEM_TYPE[ITEM_TYPE[\"object\"] = 8] = \"object\";\n ITEM_TYPE[ITEM_TYPE[\"objstate\"] = 9] = \"objstate\";\n ITEM_TYPE[ITEM_TYPE[\"liftinfo\"] = 10] = \"liftinfo\";\n})(ITEM_TYPE || (ITEM_TYPE = {}));\n// нет контроля, норма, отклонение, критическое, хз todo Скорей всего нужно перенести в css\nconst STATE_COLORS = ['#FFFAFA', '#00e4c8', '#ffd452', '#c95e46', '#f71800', '#008B8B', '#5F9EA0'];\n// Типы параметров\nvar PARAM_TYPE;\n(function (PARAM_TYPE) {\n PARAM_TYPE[PARAM_TYPE[\"signal\"] = 1] = \"signal\";\n PARAM_TYPE[PARAM_TYPE[\"value\"] = 2] = \"value\";\n PARAM_TYPE[PARAM_TYPE[\"increment\"] = 3] = \"increment\";\n PARAM_TYPE[PARAM_TYPE[\"pulse_counter\"] = 4] = \"pulse_counter\";\n PARAM_TYPE[PARAM_TYPE[\"string\"] = 5] = \"string\";\n PARAM_TYPE[PARAM_TYPE[\"image\"] = 6] = \"image\";\n PARAM_TYPE[PARAM_TYPE[\"text\"] = 7] = \"text\";\n PARAM_TYPE[PARAM_TYPE[\"coordinates\"] = 8] = \"coordinates\";\n PARAM_TYPE[PARAM_TYPE[\"custom_string\"] = 11] = \"custom_string\";\n PARAM_TYPE[PARAM_TYPE[\"custom_archer\"] = 12] = \"custom_archer\";\n PARAM_TYPE[PARAM_TYPE[\"custom_external\"] = 13] = \"custom_external\";\n PARAM_TYPE[PARAM_TYPE[\"custom_file\"] = 14] = \"custom_file\";\n PARAM_TYPE[PARAM_TYPE[\"custom_json\"] = 15] = \"custom_json\";\n PARAM_TYPE[PARAM_TYPE[\"custom_select\"] = 16] = \"custom_select\";\n PARAM_TYPE[PARAM_TYPE[\"custom_forge\"] = 17] = \"custom_forge\";\n PARAM_TYPE[PARAM_TYPE[\"custom_dashboard\"] = 18] = \"custom_dashboard\";\n PARAM_TYPE[PARAM_TYPE[\"custom_objstate\"] = 19] = \"custom_objstate\";\n PARAM_TYPE[PARAM_TYPE[\"custom_fuxa\"] = 20] = \"custom_fuxa\";\n // группа виртуальных объектов для работы конфигуратора\n PARAM_TYPE[PARAM_TYPE[\"virtual_object\"] = 90] = \"virtual_object\";\n})(PARAM_TYPE || (PARAM_TYPE = {}));\nconst PARAM_TYPE_ITOS = {\n 1: 'param_type_signal',\n 2: 'param_type_value',\n 3: 'param_type_increment'\n};\n// Типы значений\nvar VALUE_TYPE;\n(function (VALUE_TYPE) {\n VALUE_TYPE[VALUE_TYPE[\"absolute\"] = 1] = \"absolute\";\n VALUE_TYPE[VALUE_TYPE[\"relative\"] = 2] = \"relative\";\n VALUE_TYPE[VALUE_TYPE[\"signal\"] = 3] = \"signal\";\n VALUE_TYPE[VALUE_TYPE[\"increment\"] = 4] = \"increment\";\n})(VALUE_TYPE || (VALUE_TYPE = {}));\n// Возможные пересечения типа параметров и типа значения\nconst INTERVAL_PARAM_VALUE = {\n [PARAM_TYPE.signal]: [VALUE_TYPE.signal],\n [PARAM_TYPE.value]: [VALUE_TYPE.absolute, VALUE_TYPE.relative],\n [PARAM_TYPE.increment]: [VALUE_TYPE.absolute, VALUE_TYPE.relative, VALUE_TYPE.increment]\n};\nconst SINGLE_PARAM_VALUE = {\n [PARAM_TYPE.signal]: [VALUE_TYPE.signal],\n [PARAM_TYPE.value]: [VALUE_TYPE.absolute, VALUE_TYPE.relative],\n [PARAM_TYPE.increment]: [VALUE_TYPE.absolute, VALUE_TYPE.relative]\n};\nvar SiteTheme;\n(function (SiteTheme) {\n SiteTheme[\"dark\"] = \"dark\";\n SiteTheme[\"light\"] = \"light\";\n})(SiteTheme || (SiteTheme = {}));\nvar PARAM_STATE;\n(function (PARAM_STATE) {\n PARAM_STATE[PARAM_STATE[\"falsevalue\"] = -1] = \"falsevalue\";\n PARAM_STATE[PARAM_STATE[\"none\"] = 0] = \"none\";\n PARAM_STATE[PARAM_STATE[\"success\"] = 1] = \"success\";\n PARAM_STATE[PARAM_STATE[\"warning\"] = 2] = \"warning\";\n PARAM_STATE[PARAM_STATE[\"error\"] = 3] = \"error\";\n PARAM_STATE[PARAM_STATE[\"maintenance\"] = 4] = \"maintenance\";\n})(PARAM_STATE || (PARAM_STATE = {}));\nconst PARAM_STATE_INT = [];\nPARAM_STATE_INT['-1'] = 'falsevalue';\nPARAM_STATE_INT[0] = 'none';\nPARAM_STATE_INT[1] = 'success';\nPARAM_STATE_INT[2] = 'warning';\nPARAM_STATE_INT[3] = 'error';\nPARAM_STATE_INT[4] = 'maintenance';\nvar SeriesDuration;\n(function (SeriesDuration) {\n SeriesDuration[\"day\"] = \"day\";\n SeriesDuration[\"week\"] = \"week\";\n SeriesDuration[\"month\"] = \"month\";\n})(SeriesDuration || (SeriesDuration = {}));\n// Тип ленты событий\nvar LineType;\n(function (LineType) {\n LineType[LineType[\"eventlog\"] = 1] = \"eventlog\";\n LineType[LineType[\"setvaluelog\"] = 2] = \"setvaluelog\";\n LineType[LineType[\"commandlog\"] = 3] = \"commandlog\";\n})(LineType || (LineType = {}));\nvar ChartTypes;\n(function (ChartTypes) {\n ChartTypes[\"lineChart\"] = \"lineChart\";\n ChartTypes[\"candlestickBarChart\"] = \"candlestickBarChart\";\n ChartTypes[\"stackedAreaChart\"] = \"stackedAreaChart\";\n ChartTypes[\"histogramChart\"] = \"histogramChart\";\n ChartTypes[\"pieChart\"] = \"pieChart\";\n ChartTypes[\"intervalPieChart\"] = \"intervalPieChart\";\n})(ChartTypes || (ChartTypes = {}));\nvar ChartViews;\n(function (ChartViews) {\n ChartViews[\"lineChart\"] = \"lineChart\";\n ChartViews[\"lineWeekend\"] = \"lineWeekend\";\n ChartViews[\"candlestickBarChart\"] = \"candlestickBarChart\";\n ChartViews[\"stackedAreaChart\"] = \"stackedAreaChart\";\n ChartViews[\"histogramChart\"] = \"histogramChart\";\n ChartViews[\"pieChart\"] = \"pieChart\";\n})(ChartViews || (ChartViews = {}));\nconst ChartViewToType = {\n [ChartViews.lineChart]: ChartTypes.lineChart,\n [ChartViews.candlestickBarChart]: ChartTypes.candlestickBarChart,\n [ChartViews.stackedAreaChart]: ChartTypes.stackedAreaChart,\n [ChartViews.histogramChart]: ChartTypes.histogramChart,\n [ChartViews.lineWeekend]: ChartTypes.lineChart,\n};\nconst ChartTypeToView = {\n [ChartTypes.lineChart]: ChartViews.lineChart,\n [ChartTypes.candlestickBarChart]: ChartViews.candlestickBarChart,\n [ChartTypes.stackedAreaChart]: ChartViews.stackedAreaChart,\n [ChartTypes.histogramChart]: ChartViews.histogramChart,\n};\nvar WidgetCustomFieldType;\n(function (WidgetCustomFieldType) {\n WidgetCustomFieldType[WidgetCustomFieldType[\"boolean\"] = 0] = \"boolean\";\n WidgetCustomFieldType[WidgetCustomFieldType[\"dashboardLink\"] = 1] = \"dashboardLink\";\n WidgetCustomFieldType[WidgetCustomFieldType[\"string\"] = 2] = \"string\";\n})(WidgetCustomFieldType || (WidgetCustomFieldType = {}));\nvar DashboardType;\n(function (DashboardType) {\n DashboardType[\"WEB\"] = \"WEB\";\n DashboardType[\"MOBILE\"] = \"MOBILE\";\n DashboardType[\"ANALYTIC\"] = \"ANALYTIC\";\n})(DashboardType || (DashboardType = {}));\nvar ControllerState;\n(function (ControllerState) {\n ControllerState[\"ONLINE\"] = \"ONLINE\";\n ControllerState[\"OFFLINE\"] = \"OFFLINE\";\n})(ControllerState || (ControllerState = {}));\n// Обертка для среды разработки\nconst Component = (opts) => {\n return (component) => {\n return component;\n };\n};","originalLength":45846,"removedExports":[],"renderedExports":["ITEM_TYPE","STATE_COLORS","PARAM_TYPE","PARAM_TYPE_ITOS","VALUE_TYPE","INTERVAL_PARAM_VALUE","SINGLE_PARAM_VALUE","SiteTheme","PARAM_STATE","PARAM_STATE_INT","SeriesDuration","LineType","ChartTypes","ChartViews","ChartViewToType","ChartTypeToView","WidgetCustomFieldType","DashboardType","ControllerState","Component"],"renderedLength":6603},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.component.mjs":{"code":"const _ = (str) => str;\nclass WidgetComponent {\n onInit(container) {\n this.container = container;\n }\n onDestroy() {\n }\n onResize(width, height) {\n this.width = width;\n this.height = height;\n }\n onRender(values) {\n }\n onUpdate(values) {\n }\n}\nclass WidgetComponentContainer {\n constructor() {\n this.CHART_TYPES = ChartTypes;\n this.VALUE_TYPE = VALUE_TYPE;\n }\n urlExport() {\n return '';\n }\n paramCancel(par) {\n }\n paramEdit(par) {\n }\n paramSave(par) {\n }\n getIconUrl(par) {\n return '';\n }\n setManual(par, value) {\n }\n}","originalLength":4561,"removedExports":[],"renderedExports":["_","WidgetComponent","WidgetComponentContainer"],"renderedLength":636},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.utils.mjs":{"code":"class FilterIndexOfPipe {\n transform(array, field, search) {\n return array.filter(val => {\n return val[field].indexOf(search) !== -1;\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: FilterIndexOfPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: FilterIndexOfPipe, isStandalone: true, name: \"filterIndexOf\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: FilterIndexOfPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'filterIndexOf', standalone: true }]\n }] });\nclass PeriodFromDatePipe {\n transform(count, period) {\n switch (period) {\n case 'now':\n return Utils.getDate();\n case 'day':\n return Utils.getDay(count);\n case 'week':\n return Utils.getWeek(count);\n case 'month':\n return Utils.getMonth(count);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PeriodFromDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: PeriodFromDatePipe, isStandalone: true, name: \"periodFromDate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PeriodFromDatePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'periodFromDate', standalone: true }]\n }] });\nclass ArrayNumberPipe {\n transform(value, args = []) {\n return Array(value).fill(1).map((x, i) => i + 1);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ArrayNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: ArrayNumberPipe, isStandalone: true, name: \"arrayNumber\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ArrayNumberPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'arrayNumber', standalone: true }]\n }] });\nclass MakePictureUrl {\n transform(id) {\n if (id === -1) {\n return 'data:image/gif;base64,R0lGODlhZABkAIAAAP///ztXpyH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkNCMTBEMjc5NDJCMjExRTlCOTY0Q0MxNURGQkREMDc0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkNCMTBEMjdBNDJCMjExRTlCOTY0Q0MxNURGQkREMDc0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Q0IxMEQyNzc0MkIyMTFFOUI5NjRDQzE1REZCREQwNzQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Q0IxMEQyNzg0MkIyMTFFOUI5NjRDQzE1REZCREQwNzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQAAAAAACwAAAAAZABkAAAC/4SPqcvtD6MLtNqLs968+58Z4EiWpime6sqOaQvH8CvXNkjf+m7l/G/zAYctIfGIAiCXKyPzuXFCpz0l9aqRYqHaLbPrRYLDxDEZaD7z0modux20wrny+bduF+Pz5T0f7fe3FijoRlgYh9inOPTGSOL4iHMoyRJZ2XGJGUW5meSZCCqjKVpVGkN6GpB6ylrqKgoLKutJu2mLiVupK8n76MsIrCiMSFxoLIj8p8zHnOdsBz0nDUfdZq2GfaZNxh3m7QW+JY5FfmVOhT6lTqda1OnOwf40fxffBH8fkq9/Ub/0T0+/TwMh8Su46mDBgEcYLkI4CWJEiR4cNlI40CIgig0VMfaTADKkyJEkDRQAADs=';\n }\n else {\n return common.serviceUrl + `/db/icon/${id}/img`;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakePictureUrl, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: MakePictureUrl, isStandalone: true, name: \"makePictureUrl\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakePictureUrl, decorators: [{\n type: Pipe,\n args: [{ name: 'makePictureUrl', standalone: true }]\n }] });\nclass MakeIconUrl {\n transform(id) {\n if (id === -1) {\n return '/assets/icon.svg';\n }\n else {\n return common.serviceUrl + `/db/icon/${id}/img`;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeIconUrl, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeIconUrl, isStandalone: true, name: \"makeIconUrl\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeIconUrl, decorators: [{\n type: Pipe,\n args: [{ name: 'makeIconUrl', standalone: true }]\n }] });\n/**\n * @deprecated\n */\nclass MakeChartUrl {\n transform(id, isCalc, isSignal = false) {\n return common.transformChartUrlConfig(id, isCalc, isSignal);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeChartUrl, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeChartUrl, isStandalone: true, name: \"makeChartUrl\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeChartUrl, decorators: [{\n type: Pipe,\n args: [{ name: 'makeChartUrl', standalone: true }]\n }] });\nclass ChartUrl {\n transform(param) {\n return common.transformChartUrlConfig(param);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ChartUrl, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: ChartUrl, isStandalone: true, name: \"chartUrl\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ChartUrl, decorators: [{\n type: Pipe,\n args: [{ name: 'chartUrl', standalone: true }]\n }] });\nfunction assignValues(inputValues, params, viewConfig, path = []) {\n const result = {};\n for (const key in inputValues) {\n if (inputValues.hasOwnProperty(key)) {\n const item = inputValues[key];\n const itemPath = [...path, key];\n const refName = itemPath.join('.');\n if (item.items) {\n const param = params.find(val => val.refName === itemPath.join('.'));\n const cfg = getConfig$1(viewConfig, refName);\n if (item.items instanceof Array) {\n result[key] = {\n items: assignValuesArray(item.items, params, viewConfig, itemPath, item.param_type),\n viewConfig: cfg,\n files: cfg.files ? cfg.files : null,\n custom_data: item.custom_data\n };\n }\n else {\n result[key] = {\n ...assignValues(item.items, params, viewConfig, itemPath),\n refName,\n viewConfig: cfg,\n files: cfg.files ? cfg.files : null,\n custom_data: item.custom_data\n };\n }\n if (param && param.config && result[key]) {\n result[key].config = param.config;\n }\n }\n else {\n result[key] = assignValue(item, itemPath, params, viewConfig);\n }\n }\n }\n return result;\n}\nfunction validateArcherParams(variables) {\n const errors = [];\n const forbiddenNames = ['viewConfig', 'title', 'config', 'files'];\n forbiddenNames.forEach(name => {\n if (variables.find(item => item.name === name)) {\n errors.push(name);\n }\n });\n return errors;\n}\nfunction getConfig$1(viewConfig, refName) {\n return viewConfig[refName] ? viewConfig[refName] : {};\n}\nfunction assignValuesArray(inputValues, params, viewConfigs, path = [], paramType = PARAM_TYPE.value) {\n let result = [];\n const sPath = path.join('.');\n const inputValue = inputValues[0];\n params.forEach(val => {\n const valPath = val.refName.split('.');\n const ind = valPath.splice(valPath.length - 1, 1);\n const pType = inputValue.param_type ?? paramType;\n if (valPath.join('.') === sPath) {\n const viewConfig = getConfig$1(viewConfigs, val.refName);\n if (val.itemType === ITEM_TYPE.custom) {\n let value;\n if (pType === PARAM_TYPE.custom_json) {\n try {\n value = JSON.parse(val.config.value);\n }\n catch (e) {\n value = {};\n }\n }\n else {\n value = val.config.value;\n }\n if (pType === PARAM_TYPE.virtual_object) {\n result[ind] = assignValues(inputValue, params, viewConfigs, [...path, ...ind]);\n }\n else {\n result[ind] = { ...val, data: null, value, viewConfig };\n }\n }\n else {\n const value = (val.itemType === ITEM_TYPE.single && val?.device?.param?.value) ? val.device.param.value : null;\n result[ind] = { ...val, data: value, value, viewConfig };\n }\n }\n });\n result = result.filter(val => val);\n return result;\n}\nfunction assignValue(item, itemPath, params, viewConfigs) {\n const path = itemPath.join('.');\n if (item.item_type === ITEM_TYPE.table) {\n const itemValues = [];\n let rows = 0, cols = 0;\n const itemTable = params.find(param => param.refName === path);\n params.forEach((param) => {\n if (param.refName.indexOf(path) === 0) {\n const path = param.refName.split('.');\n const i = parseInt(path[path.length - 2]) - 1;\n const j = parseInt(path[path.length - 1]) - 1;\n if (!itemValues[i]) {\n itemValues[i] = [];\n }\n itemValues[i][j] = {\n ...param,\n data: null,\n value: null,\n custom: {},\n config: {},\n viewConfig: getConfig$1(viewConfigs, path.join('.')),\n custom_data: item.custom_data,\n };\n if (i > rows) {\n rows = i;\n }\n if (j > cols) {\n cols = j;\n }\n }\n });\n const res = {\n ...itemTable,\n values: itemValues,\n viewConfig: getConfig$1(viewConfigs, path),\n custom_data: item.custom_data,\n };\n return res;\n }\n else {\n const param = params.find(val => val.refName === path);\n if (param && param.config) {\n const viewConfig = getConfig$1(viewConfigs, path);\n if (item.item_type === ITEM_TYPE.custom) {\n let value;\n if (item.param_type === PARAM_TYPE.custom_json) {\n try {\n value = JSON.parse(param.config.value);\n }\n catch (e) {\n value = {};\n }\n }\n else if (item.param_type === PARAM_TYPE.custom_fuxa) {\n value = param.value;\n }\n else {\n value = param.config.value;\n }\n return {\n ...param,\n data: null,\n value,\n custom_data: item.custom_data,\n viewConfig,\n custom: {}\n };\n }\n else {\n const value = (param.itemType === ITEM_TYPE.single && param?.device?.param?.value) ? param.device.param.value : null;\n return {\n ...param,\n data: value,\n value,\n custom_data: item.custom_data,\n viewConfig,\n custom: {}\n };\n }\n }\n else {\n return { data: null };\n }\n }\n}\nfunction clearParams(params) {\n for (let i = 0; i < params.length; i++) {\n params[i].value = null;\n if (params[i].items) {\n clearParams(params[i].items);\n }\n }\n}\nfunction findParam(params, refname) {\n for (let i = 0; i < params.length; i++) {\n if (params[i].name === refname) {\n return params[i];\n }\n if (params[i].items) {\n const param = findParam(params[i].items, refname);\n if (param) {\n return param;\n }\n }\n }\n return null;\n}\nfunction createParamList(params, itemType = ITEM_TYPE.single, paramType = PARAM_TYPE.value, path = [], parent = null) {\n const result = [];\n if (params instanceof Array) {\n const item = params[0];\n const pItemType = item.item_type || itemType;\n const pParamType = item.param_type || paramType;\n if (pParamType === PARAM_TYPE.virtual_object) {\n const itemPath = [...path, 1];\n result.push(createParam(item, itemPath, pItemType, pParamType, item));\n }\n else {\n const itemPath = [...path, 1];\n result.push({\n name: itemPath.join('.'),\n title: 'Item 1',\n views: item.views,\n itemType: pItemType,\n paramType: pParamType,\n parent,\n config: null,\n generateConfig: { count: 3, param: true, data: true },\n param: item,\n });\n }\n }\n else {\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n const item = params[key];\n const pItemType = item.item_type || itemType;\n const pParamType = item.param_type || paramType;\n const itemPath = [...path, key];\n if (params[key].items) {\n result.push(createParam(item, itemPath, pItemType, pParamType, parent));\n }\n else {\n if (pItemType === ITEM_TYPE.table) {\n result.push({\n name: itemPath.join('.'),\n views: item.views,\n title: item.title,\n itemType: pItemType,\n paramType: pParamType,\n parent,\n param: params[key],\n viewConfig: {\n rows: 1,\n cols: 1,\n colsName: ['Col 1'],\n rowsName: ['Row 1'],\n visibleRow: true,\n visibleCol: true,\n table: {\n visibleRow: true,\n visibleCol: true,\n colConfig: [{ name: '' }, { name: 'Col 1' }],\n rowConfig: [{ name: 'Row 1' }],\n }\n },\n config: {},\n generateConfig: {\n data: true,\n param: true,\n rows: 2,\n columns: 2,\n visibleCol: true,\n visibleRow: true,\n }\n });\n }\n else {\n let config = {};\n if (ITEM_TYPE.series === pItemType) {\n config = { count: 0, charttype: ChartTypes.lineChart, duration: SeriesDuration.day };\n }\n result.push({\n name: itemPath.join('.'),\n title: item.title,\n views: item.views,\n itemType: pItemType,\n paramType: pParamType,\n parent,\n config,\n param: params[key],\n generateConfig: { data: true, param: true }\n });\n }\n }\n }\n }\n }\n return result;\n}\nfunction createParam(item, itemPath, itemType, paramType, parent) {\n let config = {};\n if (ITEM_TYPE.series === itemType) {\n config = { count: 0, charttype: ChartTypes.lineChart, duration: SeriesDuration.day };\n }\n const res = {\n name: itemPath.join('.'),\n title: _(item.title),\n itemType,\n paramType,\n parent,\n views: item.views,\n config,\n generateConfig: { count: 3, param: true, data: true },\n param: item,\n };\n if (item.items) {\n res.items = createParamList(item.items, itemType, paramType, itemPath, res);\n if (item.items instanceof Array) {\n res.isArray = true;\n if (item.items[0].max) {\n res.maxItems = item.items[0].max;\n }\n }\n }\n else if (paramType === PARAM_TYPE.virtual_object) {\n res.items = createParamList(item, itemType, paramType, itemPath, res);\n }\n return res;\n}\nfunction createGenerateItemConfig() {\n return {\n pageLink: false,\n isOnline: true,\n data: true,\n param: true,\n borders: false,\n editable: false,\n paragraphCount: 1,\n isWorkingDevice: true,\n title: 'Title param',\n ctrability: true,\n archer: {}\n };\n}\nfunction addArrayItem(parent) {\n if (parent.paramType === PARAM_TYPE.virtual_object) {\n parent.items.push({\n ...updateIndex(clearValue(deepClone(parent.items[0])), parent.items[0].name, [parent.name, parent.items.length + 1].join('.')),\n name: [parent.name, parent.items.length + 1].join('.'),\n title: `Item ${parent.items.length + 1}`,\n parent: parent,\n });\n }\n else {\n parent.items.push({\n name: [parent.name, parent.items.length + 1].join('.'),\n title: `Item ${parent.items.length + 1}`,\n itemType: parent.itemType,\n paramType: parent.paramType,\n parent: parent,\n config: {}\n });\n }\n}\nfunction deepClone(obj, map = new WeakMap()) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof RegExp) {\n return new RegExp(obj);\n }\n if (map.has(obj)) {\n return map.get(obj);\n }\n const result = Array.isArray(obj) ? [] : {};\n map.set(obj, result);\n for (const key of Object.keys(obj)) {\n result[key] = deepClone(obj[key], map);\n }\n return result;\n}\nfunction clearValue(param) {\n param.value = undefined;\n if (param.items) {\n param.items = param.items.map((p) => clearValue(p));\n if (param.isArray && param.paramType !== PARAM_TYPE.virtual_object) {\n param.items = param.items.slice(0, 1);\n }\n }\n return param;\n}\nfunction updateIndex(param, oldName, newName) {\n param.name = param.name.replace(oldName, newName);\n if (param.items) {\n param.items = param.items.map((p) => updateIndex(p, oldName, newName));\n if (param.isArray && param.paramType !== PARAM_TYPE.virtual_object) {\n param.items = param.items.slice(0, 1);\n }\n }\n return param;\n}\nfunction convertArcherToItem(item, param) {\n return {\n name: (param.name || param.refName) + '.' + item.name,\n title: item.title ? item.title : item.name,\n itemType: ITEM_TYPE.single,\n paramType: PARAM_TYPE.value,\n parent: param,\n config: {},\n generateConfig: {\n count: 3, param: true, data: true\n }\n };\n}\nfunction prepareExternalJSON(json) {\n for (const k in json) {\n if (json.hasOwnProperty(k)) {\n if (json[k].item_type && typeof json[k].item_type === 'string') {\n json[k].item_type = ITEM_TYPE[json[k].item_type];\n }\n if (json[k].param_type && typeof json[k].param_type === 'string') {\n json[k].param_type = PARAM_TYPE[json[k].param_type];\n }\n if (json[k].items) {\n json[k].items = prepareExternalJSON(json[k].items);\n }\n }\n }\n return json;\n}\nclass Utils {\n static getDate(ts = Date.now()) {\n const d = new Date(ts);\n const dd = d.getDate();\n const mm = d.getMonth() + 1;\n const yyyy = d.getFullYear();\n return ('0' + dd).slice(-2) + '/' + ('0' + mm).slice(-2) + '/' + yyyy;\n }\n static getDay(num) {\n const d = new Date();\n d.setDate(d.getDate() - num);\n const dd = d.getDate();\n const mm = d.getMonth() + 1;\n const yyyy = d.getFullYear();\n return ('0' + dd).slice(-2) + '/' + ('0' + mm).slice(-2) + '/' + yyyy;\n }\n static getWeek(num) {\n const d = new Date();\n const day = d.getDay();\n if (day === 0) {\n num++;\n }\n const firstDay = new Date();\n firstDay.setDate(d.getDate() - day - num * 7 + 1);\n const lastDay = new Date();\n if (num > 0) {\n lastDay.setDate(d.getDate() - day - (num - 1) * 7);\n }\n return ('0' + firstDay.getDate()).slice(-2) + '/' + ('0' + (firstDay.getMonth() + 1)).slice(-2) + '/' + firstDay.getFullYear() + ' - ' +\n ('0' + lastDay.getDate()).slice(-2) + '/' + ('0' + (lastDay.getMonth() + 1)).slice(-2) + '/' + lastDay.getFullYear();\n }\n static getMonth(num) {\n const d = new Date();\n d.setMonth(d.getMonth() - num);\n const dd = d.getDate();\n const mm = d.getMonth();\n const yyyy = d.getFullYear();\n const firstDay = new Date(yyyy, mm, 1);\n const lastDay = new Date(yyyy, mm + 1, 0);\n return ('0' + firstDay.getDate()).slice(-2) + '/' + ('0' + (firstDay.getMonth() + 1)).slice(-2) + '/' + firstDay.getFullYear() + ' - ' +\n ('0' + lastDay.getDate()).slice(-2) + '/' + ('0' + (lastDay.getMonth() + 1)).slice(-2) + '/' + lastDay.getFullYear();\n }\n static getTime(ts) {\n let d;\n if (typeof ts === 'undefined') {\n d = new Date();\n }\n else {\n d = new Date(ts);\n }\n const hh = d.getHours();\n const mm = d.getMinutes();\n return ('0' + hh).slice(-2) + ':' + ('0' + mm).slice(-2);\n }\n}","originalLength":81312,"removedExports":[],"renderedExports":["FilterIndexOfPipe","PeriodFromDatePipe","ArrayNumberPipe","MakePictureUrl","MakeIconUrl","MakeChartUrl","ChartUrl","assignValues","validateArcherParams","clearParams","findParam","createParamList","createGenerateItemConfig","addArrayItem","clearValue","updateIndex","convertArcherToItem","prepareExternalJSON","Utils"],"renderedLength":24345},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/forge/extenstion.mjs":{"code":"/// <reference types=\"forge-viewer\" />\nclass ViewerEventArgs {\n}\nclass AggregationSelectionChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT;\n }\n}\nclass AnimationReadyEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.ANIMATION_READY_EVENT;\n }\n}\nclass CameraChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.CAMERA_CHANGE_EVENT;\n }\n}\nclass CutplanesChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.CUTPLANES_CHANGE_EVENT;\n }\n}\nclass EscapeEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.ESCAPE_EVENT;\n }\n}\nclass ExplodeChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.EXPLODE_CHANGE_EVENT;\n }\n}\nclass ExtensionLoadedUnloadedEventArgs extends ViewerEventArgs {\n}\nclass ExtensionLoadedEventArgs extends ExtensionLoadedUnloadedEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.EXTENSION_LOADED_EVENT;\n }\n}\nclass ExtensionUnloadedEventArgs extends ExtensionLoadedUnloadedEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.EXTENSION_UNLOADED_EVENT;\n }\n}\nclass FinalFrameRenderedChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.FINAL_FRAME_RENDERED_CHANGED_EVENT;\n }\n}\nclass FitToViewEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.FIT_TO_VIEW_EVENT;\n }\n}\nclass FragmentsLoadedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.FRAGMENTS_LOADED_EVENT;\n }\n}\nclass FullscreenEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.FULLSCREEN_MODE_EVENT;\n }\n}\nclass GeometryLoadedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.GEOMETRY_LOADED_EVENT;\n }\n}\nclass HideEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.HIDE_EVENT;\n }\n}\nclass HyperlinkEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.HYPERLINK_EVENT;\n }\n}\nclass IsolateEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.ISOLATE_EVENT;\n }\n}\nclass LayerVisibilityEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.LAYER_VISIBILITY_CHANGED_EVENT;\n }\n}\nclass LoadMissingGeometryEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.LOAD_MISSING_GEOMETRY;\n }\n}\nclass ModelRootLoadedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT;\n }\n}\nclass ModelUnloadedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.MODEL_UNLOADED_EVENT;\n }\n}\nclass NavigationModeChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.NAVIGATION_MODE_CHANGED_EVENT;\n }\n}\nclass ObjectTreeEventArgs extends ViewerEventArgs {\n}\nclass ObjectTreeCreatedEventArgs extends ObjectTreeEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT;\n }\n}\nclass ObjectTreeUnavailableEventArgs extends ObjectTreeEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.OBJECT_TREE_UNAVAILABLE_EVENT;\n }\n}\nclass PrefEventArgs extends ViewerEventArgs {\n}\nclass PrefChangedEventArgs extends PrefEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.PREF_CHANGED_EVENT;\n }\n}\nclass PrefResetEventArgs extends PrefEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.PREF_RESET_EVENT;\n }\n}\nclass ProgressUpdateEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.PROGRESS_UPDATE_EVENT;\n }\n}\nclass RenderOptionChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT;\n }\n}\nclass RenderPresentedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.RENDER_PRESENTED_EVENT;\n }\n}\nclass ResetEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.RESET_EVENT;\n }\n}\nclass RestoreDefaultSettingsEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.RESTORE_DEFAULT_SETTINGS_EVENT;\n }\n}\nclass SelectionChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.SELECTION_CHANGED_EVENT;\n }\n}\nclass ShowEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.SHOW_EVENT;\n }\n}\nclass TexturesLoadedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.TEXTURES_LOADED_EVENT;\n }\n}\nclass ToolChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.TOOL_CHANGE_EVENT;\n }\n}\nclass ViewerInitializedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.VIEWER_INITIALIZED;\n }\n}\nclass ViewerResizeEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.VIEWER_RESIZE_EVENT;\n }\n}\nclass ViewerStateRestoredEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.VIEWER_STATE_RESTORED_EVENT;\n }\n}\nclass ViewerUnInitializedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.VIEWER_UNINITIALIZED;\n }\n}\n/**\n * Base extension that all other extensions can inherit from\n */\nclass Extension {\n static { this.extensionName = ''; }\n static registerExtension(extensionName, extension) {\n Autodesk.Viewing.theExtensionManager.registerExtension(extensionName, extension);\n }\n static unregisterExtension(extensionName) {\n Autodesk.Viewing.theExtensionManager.unregisterExtension(extensionName);\n }\n constructor(viewer, options) {\n this.viewer = undefined;\n this.extOptions = undefined;\n this.eventArgsTypeMap = {};\n this.viewer = viewer;\n this.extOptions = options;\n this.registerEventTypes();\n }\n /** Register event args types that we will cast to 'proper' objects */\n registerEventTypes() {\n // tslint:disable:max-line-length\n this.eventArgsTypeMap[Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT] = AggregationSelectionChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.ANIMATION_READY_EVENT] = AnimationReadyEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.CAMERA_CHANGE_EVENT] = CameraChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.CUTPLANES_CHANGE_EVENT] = CutplanesChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.ESCAPE_EVENT] = EscapeEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.EXPLODE_CHANGE_EVENT] = ExplodeChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.EXTENSION_LOADED_EVENT] = ExtensionLoadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.EXTENSION_UNLOADED_EVENT] = ExtensionUnloadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.FINAL_FRAME_RENDERED_CHANGED_EVENT] = FinalFrameRenderedChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.FIT_TO_VIEW_EVENT] = FitToViewEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.FRAGMENTS_LOADED_EVENT] = FragmentsLoadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.FULLSCREEN_MODE_EVENT] = FullscreenEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.GEOMETRY_LOADED_EVENT] = GeometryLoadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.HIDE_EVENT] = HideEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.HYPERLINK_EVENT] = HyperlinkEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.ISOLATE_EVENT] = IsolateEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.LAYER_VISIBILITY_CHANGED_EVENT] = LayerVisibilityEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.LOAD_MISSING_GEOMETRY] = LoadMissingGeometryEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT] = ModelRootLoadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.MODEL_UNLOADED_EVENT] = ModelUnloadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.NAVIGATION_MODE_CHANGED_EVENT] = NavigationModeChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT] = ObjectTreeCreatedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.OBJECT_TREE_UNAVAILABLE_EVENT] = ObjectTreeUnavailableEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.PREF_CHANGED_EVENT] = PrefChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.PREF_RESET_EVENT] = PrefResetEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.PROGRESS_UPDATE_EVENT] = ProgressUpdateEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT] = RenderOptionChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.RENDER_PRESENTED_EVENT] = RenderPresentedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.RESET_EVENT] = ResetEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.RESTORE_DEFAULT_SETTINGS_EVENT] = RestoreDefaultSettingsEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.SELECTION_CHANGED_EVENT] = SelectionChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.SHOW_EVENT] = ShowEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.TEXTURES_LOADED_EVENT] = TexturesLoadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.TOOL_CHANGE_EVENT] = ToolChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_INITIALIZED] = ViewerInitializedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_RESIZE_EVENT] = ViewerResizeEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_STATE_RESTORED_EVENT] = ViewerStateRestoredEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_UNINITIALIZED] = ViewerUnInitializedEventArgs;\n // tslint:enable:max-line-length\n }\n /** Cast Viewer event args to class */\n castArgs(args) {\n if (Array.isArray(args)) {\n return args.map(this.castArgs);\n }\n if (!args || typeof args !== 'object' || !args.hasOwnProperty('type')) {\n // Can't cast this object\n return args;\n }\n // Create new object of appropriate type\n const clazz = this.eventArgsTypeMap[args.type];\n const typedItem = Object.create(clazz.prototype);\n // Cast any properties\n for (const k of Object.keys(args)) {\n typedItem[k] = this.castArgs(args[k]);\n }\n return typedItem;\n }\n}","originalLength":39613,"removedExports":[],"renderedExports":["ViewerEventArgs","AggregationSelectionChangedEventArgs","AnimationReadyEventArgs","CameraChangedEventArgs","CutplanesChangedEventArgs","EscapeEventArgs","ExplodeChangedEventArgs","ExtensionLoadedUnloadedEventArgs","ExtensionLoadedEventArgs","ExtensionUnloadedEventArgs","FinalFrameRenderedChangedEventArgs","FitToViewEventArgs","FragmentsLoadedEventArgs","FullscreenEventArgs","GeometryLoadedEventArgs","HideEventArgs","HyperlinkEventArgs","IsolateEventArgs","LayerVisibilityEventArgs","LoadMissingGeometryEventArgs","ModelRootLoadedEventArgs","ModelUnloadedEventArgs","NavigationModeChangedEventArgs","ObjectTreeEventArgs","ObjectTreeCreatedEventArgs","ObjectTreeUnavailableEventArgs","PrefEventArgs","PrefChangedEventArgs","PrefResetEventArgs","ProgressUpdateEventArgs","RenderOptionChangedEventArgs","RenderPresentedEventArgs","ResetEventArgs","RestoreDefaultSettingsEventArgs","SelectionChangedEventArgs","ShowEventArgs","TexturesLoadedEventArgs","ToolChangedEventArgs","ViewerInitializedEventArgs","ViewerResizeEventArgs","ViewerStateRestoredEventArgs","ViewerUnInitializedEventArgs","Extension"],"renderedLength":12057},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/forge/ParamAssign.mjs":{"code":"class ParamAssignExtension extends Extension {\n constructor(viewer, options) {\n super(viewer, options);\n this._enabled = false;\n this._frags = {};\n this.labels = [];\n this.container = null;\n this._group = null;\n this._button = null;\n this._icons = options.icons || [];\n this.options = options;\n }\n static { this.extensionName = 'ParamAssignExtension'; }\n static { this.callback = null; }\n static registerExtension(extensionName, callback) {\n ParamAssignExtension.callback = callback;\n super.registerExtension(ParamAssignExtension.extensionName, ParamAssignExtension);\n }\n activate() {\n return true;\n }\n deactivate() {\n return true;\n }\n load() {\n this.container = this.viewer.clientContainer;\n this._enabled = true;\n if (this.viewer.model && this.viewer.model.getInstanceTree()) {\n this.customize();\n }\n else {\n this.viewer.addEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT, this.customize.bind(this));\n }\n if (ParamAssignExtension.callback) {\n ParamAssignExtension.callback(this);\n }\n return true;\n }\n unload() {\n // Clean our UI elements if we added any\n if (this._group) {\n this._group.removeControl(this._button);\n if (this._group.getNumberOfControls() === 0) {\n this.viewer.toolbar.removeControl(this._group);\n }\n }\n return true;\n }\n customize() {\n this.showIcons();\n const updateIconsCallback = () => {\n this.updateIcons();\n };\n this.viewer.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT, updateIconsCallback);\n this.viewer.addEventListener(Autodesk.Viewing.ISOLATE_EVENT, updateIconsCallback);\n this.viewer.addEventListener(Autodesk.Viewing.HIDE_EVENT, updateIconsCallback);\n this.viewer.addEventListener(Autodesk.Viewing.SHOW_EVENT, updateIconsCallback);\n }\n showIcons() {\n const $viewer = this.container.querySelector('.adsk-viewing-viewer');\n const element = this.container.querySelector('label.markup');\n // remove previous...\n if (element) {\n element.remove();\n }\n this.labels = [];\n // do we have anything to show?\n if (this._icons === undefined || this._icons === null) {\n return;\n }\n // do we have access to the instance tree?\n const tree = this.viewer.model && this.viewer.model.getInstanceTree();\n if (tree === undefined) {\n return;\n }\n const onClick = (e) => {\n // this.viewer.select($(e.currentTarget).data('id'));\n // this.viewer.utilities.fitToView();\n };\n this._frags = {};\n for (let i = 0; i < this._icons.length; i++) {\n // we need to collect all the fragIds for a given dbId\n const icon = this._icons[i];\n this._frags['dbId' + icon.dbId] = [];\n const $label = document.createElement('label');\n $label.setAttribute('data-id', '' + icon.dbId);\n $label.className = 'markup update';\n $label.style.setProperty('display', this.viewer.isNodeVisible(icon.dbId) ? 'block' : 'none');\n $label.style.setProperty('position', 'absolute');\n $label.style.setProperty('white-space', 'nowrap');\n $label.style.setProperty('cursor', 'pointer');\n $label.style.setProperty('z-index', '1');\n $label.addEventListener('click', this.options.onClick || onClick);\n $label.appendChild(icon.element);\n $viewer.appendChild($label);\n // now collect the fragIds\n const getChildren = (topParentId, dbId) => {\n if (tree.getChildCount(dbId) === 0) {\n getFrags(topParentId, dbId);\n } // get frags for this leaf child\n tree.enumNodeChildren(dbId, (childId) => {\n getChildren(topParentId, childId);\n });\n };\n const getFrags = (topParentId, dbId) => {\n tree.enumNodeFragments(dbId, (fragId) => {\n this._frags['dbId' + topParentId].push(fragId);\n });\n };\n getChildren(icon.dbId, icon.dbId);\n this.labels.push({ id: icon.dbId, label: $label });\n }\n this.updateIcons(); // re-position for each fragId found\n }\n getModifiedWorldBoundingBox(dbId) {\n const fragList = this.viewer.model.getFragmentList();\n const nodebBox = new THREE.Box3();\n // for each fragId on the list, get the bounding box\n for (const fragId of this._frags['dbId' + dbId]) {\n const fragbBox = new THREE.Box3();\n fragList.getWorldBounds(fragId, fragbBox);\n nodebBox.union(fragbBox); // create a unifed bounding box\n }\n return nodebBox;\n }\n updateIcons() {\n for (let i = 0; i < this.labels.length; i++) {\n const pos = this.viewer.worldToClient(this.getModifiedWorldBoundingBox(this.labels[i].id).getCenter());\n const label = this.labels[i].label;\n label.style.setProperty('left', Math.floor(pos.x - label.offsetWidth / 2) + 'px');\n label.style.setProperty('top', Math.floor(pos.y - label.offsetHeight / 2) + 'px');\n label.style.setProperty('display', this.viewer.isNodeVisible(this.labels[i].id) ? 'block' : 'none');\n }\n }\n}","originalLength":21356,"removedExports":[],"renderedExports":["ParamAssignExtension"],"renderedLength":5588},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/forge/Script.service.mjs":{"code":"const ScriptStore = [\n { name: 'viewer', src: 'https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js' },\n];\nconst StyleStore = [\n { name: 'viewer', src: 'https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css' },\n];\nlet promiseLoad = null;\nlet isLoadedStyles = false;\nclass ScriptService {\n constructor() {\n this.scripts = {};\n this.styles = {};\n ScriptStore.forEach((script) => {\n this.scripts[script.name] = {\n loaded: false,\n src: script.src\n };\n });\n }\n loadStyles() {\n if (!isLoadedStyles) {\n isLoadedStyles = true;\n StyleStore.forEach(style => {\n const el = document.createElement('link');\n el.rel = 'stylesheet';\n el.href = style.src;\n el.type = 'text/css';\n document.getElementsByTagName('head')[0].appendChild(el);\n });\n }\n }\n load(...scripts) {\n if (!promiseLoad) {\n promiseLoad = new Promise((resolve, reject) => {\n const promises = [];\n scripts.forEach((script) => promises.push(this.loadScript(script)));\n Promise.all(promises).then(data => {\n resolve(data);\n });\n });\n }\n return promiseLoad;\n }\n loadScript(name) {\n return new Promise((resolve, reject) => {\n if (this.scripts[name].loaded) {\n resolve({ script: name, loaded: true, status: 'Already Loaded' });\n }\n else {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = this.scripts[name].src;\n if (script.readyState) { // IE\n script.onreadystatechange = () => {\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n script.onreadystatechange = null;\n this.scripts[name].loaded = true;\n resolve({ script: name, loaded: true, status: 'Loaded' });\n }\n };\n }\n else { // Others\n script.onload = () => {\n this.scripts[name].loaded = true;\n resolve({ script: name, loaded: true, status: 'Loaded' });\n };\n }\n script.onerror = (error) => resolve({ script: name, loaded: false, status: 'Loaded' });\n document.getElementsByTagName('head')[0].appendChild(script);\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ScriptService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ScriptService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ScriptService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });","originalLength":10986,"removedExports":[],"renderedExports":["ScriptService"],"renderedLength":3271},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/forge/forge.component.mjs":{"code":"/**\n * Интеграция с Autodesk Forge Viewer\n */\n/// <reference types=\"forge-viewer\" />\nclass ForgeComponent {\n constructor(http, cdr, ngZone, scripts) {\n this.http = http;\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.scripts = scripts;\n this.urn = '';\n this.labels = [];\n this.onReady = new EventEmitter();\n }\n ngOnInit() {\n this.scripts.load('viewer').then(data => {\n this.launchViewer(this.urn);\n }).catch(error => console.log(error));\n this.scripts.loadStyles();\n }\n ngOnDestroy() { }\n authForge(callback) {\n callback(Cookies.get('forge'), 3599);\n }\n launchViewer(urn) {\n const options = {\n env: 'AutodeskProduction',\n getAccessToken: this.authForge.bind(this)\n };\n this.ngZone.runOutsideAngular(() => {\n ParamAssignExtension.registerExtension(ParamAssignExtension.extensionName, this.extensionLoaded.bind(this));\n Autodesk.Viewing.Initializer(options, () => {\n const documentId = 'urn:' + urn;\n this.viewer = new Autodesk.Viewing.GuiViewer3D(this.viewerDiv.nativeElement, { extensions: [] });\n Autodesk.Viewing.Document.load(documentId, this.onDocumentLoadSuccess.bind(this), this.onDocumentLoadFailure.bind(this));\n });\n });\n }\n extensionLoaded() {\n console.log('extensionLoaded');\n }\n afterViewerEvents(viewer, events) {\n const promises = [];\n events.forEach((event) => {\n promises.push(new Promise((resolve, reject) => {\n const handler = () => {\n viewer.removeEventListener(event, handler);\n resolve(null);\n };\n viewer.addEventListener(event, handler);\n }));\n });\n return Promise.all(promises);\n }\n onDocumentLoadSuccess(doc) {\n this.viewer.start();\n const viewables = doc.getRoot().getDefaultGeometry();\n this.viewer.loadDocumentNode(doc, viewables, {}).then(async (model) => {\n this.loadParamExtension();\n });\n }\n loadParamExtension() {\n this.viewer.getObjectTree((tree) => {\n const icons = [];\n tree.enumNodeChildren(tree.getRootId(), (dbid) => {\n this.labels.forEach(label => {\n if (label.name === tree.getNodeName(dbid)) {\n icons.push({\n element: label.element,\n dbId: dbid,\n name: label.name,\n });\n }\n });\n }, true);\n this.viewer.loadExtension(ParamAssignExtension.extensionName, { icons });\n this.onReady.emit({ viewer: this.viewer });\n });\n }\n onDocumentLoadFailure(viewerErrorCode, viewerErrorMsg) {\n console.error('onDocumentLoadFailure() - errorCode:' + viewerErrorCode + '\\n- errorMessage:' + viewerErrorMsg);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: ScriptService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.2.23\", type: ForgeComponent, isStandalone: true, selector: \"app-forge\", inputs: { urn: \"urn\", labels: \"labels\" }, outputs: { onReady: \"onReady\" }, providers: [ScriptService], viewQueries: [{ propertyName: \"viewerDiv\", first: true, predicate: [\"forgeViewer\"], descendants: true }], ngImport: i0, template: \"<div #forgeViewer class=\\\"adsk-viewer\\\"></div>\\r\\n\\r\\n\", styles: [\".adsk-viewing-viewer{width:100%;height:100%;position:relative}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponent, decorators: [{\n type: Component$1,\n args: [{ standalone: true, selector: 'app-forge', changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, CommonModule], providers: [ScriptService], template: \"<div #forgeViewer class=\\\"adsk-viewer\\\"></div>\\r\\n\\r\\n\", styles: [\".adsk-viewing-viewer{width:100%;height:100%;position:relative}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: ScriptService }], propDecorators: { viewerDiv: [{\n type: ViewChild,\n args: ['forgeViewer']\n }], urn: [{\n type: Input\n }], labels: [{\n type: Input\n }], onReady: [{\n type: Output\n }] } });\nclass ForgeComponentModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponentModule, imports: [ForgeComponent], exports: [ForgeComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponentModule, providers: [ScriptService], imports: [ForgeComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponentModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ForgeComponent],\n exports: [ForgeComponent],\n providers: [ScriptService],\n }]\n }] });","originalLength":17971,"removedExports":[],"renderedExports":["ForgeComponent","ForgeComponentModule"],"renderedLength":5886},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/pie-chart/pie-chart.component.mjs":{"code":"class PieChartComponent {\n constructor(cdr) {\n this.cdr = cdr;\n this.locale = 'en';\n this.noDataMessage = 'No data';\n this.width = 250;\n this.height = 250;\n this.margin = {\n top: 25,\n right: 25,\n bottom: 25,\n left: 25\n };\n this.options = {\n backgroundColor: 'transparent',\n tooltip: {\n trigger: 'item',\n confine: true,\n appendToBody: true,\n },\n toolbox: {\n feature: {\n saveAsImage: { show: true }\n }\n },\n grid: {\n left: `${this.margin.left}px`,\n right: `${this.margin.right}px`,\n bottom: `${this.margin.bottom}px`,\n top: `${this.margin.top}px`,\n containLabel: true\n },\n series: [],\n legend: {\n show: false,\n },\n };\n this.uniqTitles = [];\n this.initOpts = {\n locale: this.locale.toLocaleUpperCase()\n };\n this.darkColor = [\n { 'color': '#00FF7F' }, { 'color': '#00E0E0' }, { 'color': '#FF00FF' }, { 'color': '#B2CCE5' }, { 'color': '#F1F227' },\n { 'color': '#FDE3A7' }, { 'color': '#F64747' }, { 'color': '#8BB82D' }, { 'color': '#1E90FF' }, { 'color': '#D2527F' },\n { 'color': '#91A6BA' }\n ];\n this.lightColor = [\n { 'color': '#007A4B' }, { 'color': '#3477DB' }, { 'color': '#D252B2' }, { 'color': '#708090' }, { 'color': '#AF851A' },\n { 'color': '#BB671C' }, { 'color': '#E00000' }, { 'color': '#005031' }, { 'color': '#34415E' }, { 'color': '#58007E' },\n { 'color': '#2E343B' }\n ];\n this.display = false;\n }\n ngOnChanges(changes) {\n if (changes.locale) {\n this.initOpts = { locale: this.locale };\n this.display = false;\n this.cdr.detectChanges();\n setTimeout(() => {\n this.display = true;\n this.cdr.detectChanges();\n });\n }\n if (this.echartsInstance && (changes.width || changes.height)) {\n this.resizeChart();\n }\n if (changes.config || changes.values || changes.theme) {\n if (this.config && this.values) {\n this.updateData(this.config, this.values);\n }\n }\n }\n ngOnInit() {\n this.initOpts = { locale: this.locale };\n }\n ngOnDestroy() { }\n onChartInit(ec) {\n this.echartsInstance = ec;\n }\n resizeChart() {\n if (this.echartsInstance) {\n this.echartsInstance.resize();\n }\n }\n updateData(config, values) {\n const res = [];\n this.uniqTitles = [];\n const customColors = [];\n const data = values.data.map((val, indexData) => {\n customColors.push(val.color || this.getChartColor(indexData));\n return {\n value: val.value,\n name: this.findUniqName(val.key)\n };\n });\n if (this.config.legend) {\n this.options.legend = { show: true, bottom: '16px' };\n }\n if (config.charttype === ChartTypes.intervalPieChart) {\n this.options.tooltip = { show: false };\n this.options.legend = { show: false };\n this.options.grid = { show: false };\n res.push({\n name: 'Chart',\n type: 'pie',\n radius: '55%',\n center: ['50%', '50%'],\n data: data,\n itemStyle: {\n color: ({ seriesIndex, dataIndex }) => customColors[dataIndex],\n },\n label: { show: false },\n labelLine: { show: false },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n animationDelay: function (idx) {\n return Math.random() * 200;\n }\n });\n }\n else {\n res.push({\n name: 'Chart',\n type: 'pie',\n radius: ['40%', '70%'],\n center: ['50%', '50%'],\n data: data,\n label: {\n color: this.theme === SiteTheme.dark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)'\n },\n labelLine: {\n lineStyle: {\n color: this.theme === SiteTheme.dark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)'\n },\n smooth: 0.2,\n length: 10,\n length2: 20\n },\n itemStyle: {\n borderRadius: 4,\n color: ({ seriesIndex, dataIndex }) => this.getChartColor(dataIndex),\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n animationDelay: function (idx) {\n return Math.random() * 200;\n }\n });\n }\n this.options = { ...this.options, series: res };\n }\n findUniqName(title, ind = 0) {\n if (ind === 0) {\n if (this.uniqTitles.indexOf(title) !== -1) {\n return this.findUniqName(title, ind + 1);\n }\n this.uniqTitles.push(title);\n return title;\n }\n else {\n const newTitle = `${title} (${ind})`;\n if (this.uniqTitles.indexOf(newTitle) !== -1) {\n return this.findUniqName(title, ind + 1);\n }\n this.uniqTitles.push(newTitle);\n return newTitle;\n }\n }\n getChartColor(seed) {\n if (this.theme === SiteTheme.dark) {\n return this.lightColor[seed % this.darkColor.length].color;\n }\n else {\n return this.darkColor[seed % this.lightColor.length].color;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.2.23\", type: PieChartComponent, isStandalone: true, selector: \"app-pie-chart\", inputs: { values: \"values\", config: \"config\", locale: \"locale\", noDataMessage: \"noDataMessage\", width: \"width\", height: \"height\", margin: \"margin\", theme: \"theme\" }, usesOnChanges: true, ngImport: i0, template: \"<div echarts [options]=\\\"options\\\" *ngIf=\\\"display\\\" [initOpts]=\\\"initOpts\\\" style=\\\"width:100%; height: 100%\\\" [theme]=\\\"theme\\\" (chartInit)=\\\"onChartInit($event)\\\"></div>\\r\\n\", styles: [\".nvd3{width:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: NgxEchartsDirective, selector: \"echarts, [echarts]\", inputs: [\"options\", \"theme\", \"initOpts\", \"merge\", \"autoResize\", \"loading\", \"loadingType\", \"loadingOpts\"], outputs: [\"chartInit\", \"optionsError\", \"chartClick\", \"chartDblClick\", \"chartMouseDown\", \"chartMouseMove\", \"chartMouseUp\", \"chartMouseOver\", \"chartMouseOut\", \"chartGlobalOut\", \"chartContextMenu\", \"chartHighlight\", \"chartDownplay\", \"chartSelectChanged\", \"chartLegendSelectChanged\", \"chartLegendSelected\", \"chartLegendUnselected\", \"chartLegendLegendSelectAll\", \"chartLegendLegendInverseSelect\", \"chartLegendScroll\", \"chartDataZoom\", \"chartDataRangeSelected\", \"chartGraphRoam\", \"chartGeoRoam\", \"chartTreeRoam\", \"chartTimelineChanged\", \"chartTimelinePlayChanged\", \"chartRestore\", \"chartDataViewChanged\", \"chartMagicTypeChanged\", \"chartGeoSelectChanged\", \"chartGeoSelected\", \"chartGeoUnselected\", \"chartAxisAreaSelected\", \"chartBrush\", \"chartBrushEnd\", \"chartBrushSelected\", \"chartGlobalCursorTaken\", \"chartRendered\", \"chartFinished\"], exportAs: [\"echarts\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponent, decorators: [{\n type: Component$1,\n args: [{ standalone: true, selector: 'app-pie-chart', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, NgxEchartsDirective], template: \"<div echarts [options]=\\\"options\\\" *ngIf=\\\"display\\\" [initOpts]=\\\"initOpts\\\" style=\\\"width:100%; height: 100%\\\" [theme]=\\\"theme\\\" (chartInit)=\\\"onChartInit($event)\\\"></div>\\r\\n\", styles: [\".nvd3{width:100%}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { values: [{\n type: Input\n }], config: [{\n type: Input\n }], locale: [{\n type: Input\n }], noDataMessage: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], theme: [{\n type: Input\n }] } });\nclass PieChartComponentModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponentModule, imports: [PieChartComponent], exports: [PieChartComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponentModule, imports: [PieChartComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponentModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [PieChartComponent],\n exports: [PieChartComponent],\n }]\n }] });","originalLength":28567,"removedExports":[],"renderedExports":["PieChartComponent","PieChartComponentModule"],"renderedLength":10090},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/echart/ru.mjs":{"code":"/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n/**\n * Language: Russian.\n */\nvar langRU = {\n time: {\n month: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],\n monthAbbr: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],\n dayOfWeek: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],\n dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']\n },\n legend: {\n selector: {\n all: 'Всё',\n inverse: 'Обратить'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: 'Выделить область',\n polygon: 'Инструмент «Лассо»',\n lineX: 'Горизонтальное выделение',\n lineY: 'Вертикальное выделение',\n keep: 'Оставить выбранное',\n clear: 'Очистить выбранное'\n }\n },\n dataView: {\n title: 'Данные',\n lang: ['Данные', 'Закрыть', 'Обновить']\n },\n dataZoom: {\n title: {\n zoom: 'Увеличить',\n back: 'Сбросить увеличение'\n }\n },\n magicType: {\n title: {\n line: 'Линия',\n bar: 'Гистограмма',\n stack: 'Стак',\n tiled: 'Плитка'\n }\n },\n restore: {\n title: 'Восстановить'\n },\n saveAsImage: {\n title: 'Сохранить как картинку',\n lang: ['Правый клик, чтобы сохранить картинку']\n }\n },\n series: {\n typeNames: {\n pie: 'Круговая диаграмма',\n bar: 'Столбчатая диаграмма',\n line: 'Линейный график',\n scatter: 'Точечная диаграмма',\n effectScatter: 'Точечная диаграмма с волнами',\n radar: 'Лепестковая диаграмма',\n tree: 'Дерево',\n treemap: 'Плоское дерево',\n boxplot: 'Ящик с усами',\n candlestick: 'Свечной график',\n k: 'График К-линий',\n heatmap: 'Тепловая карта',\n map: 'Карта',\n parallel: 'Диаграмма параллельных координат',\n lines: 'Линейный граф',\n graph: 'Граф отношений',\n sankey: 'Диаграмма Санкей',\n funnel: 'Воронкообразная диаграмма',\n gauge: 'Шкала',\n pictorialBar: 'Столбец-картинка',\n themeRiver: 'Тематическая река',\n sunburst: 'Солнечные лучи',\n custom: 'Пользовательский график',\n chart: 'График'\n }\n },\n aria: {\n general: {\n withTitle: 'Это график, показывающий \"{title}\"',\n withoutTitle: 'Это график'\n },\n series: {\n single: {\n prefix: '',\n withName: ' с типом {seriesType} и именем {seriesName}.',\n withoutName: ' с типом {seriesType}.'\n },\n multiple: {\n prefix: '. Он состоит из {seriesCount} серий.',\n withName: ' Серия {seriesId} имеет тип {seriesType} и показывает {seriesName}.',\n withoutName: ' Серия {seriesId} имеет тип {seriesType}.',\n separator: {\n middle: '',\n end: ''\n }\n }\n },\n data: {\n allData: 'Данные таковы: ',\n partialData: 'Первые {displayCnt} элементов: ',\n withName: 'значение для {name} — {value}',\n withoutName: '{value}',\n separator: {\n middle: ', ',\n end: '. '\n }\n }\n }\n};","originalLength":16954,"removedExports":[],"renderedExports":["default"],"renderedLength":5321},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/echart/en.mjs":{"code":"/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n/**\n * Language: English.\n */\nvar langEN = {\n time: {\n month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthAbbr: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n dayOfWeek: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayOfWeekAbbr: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n },\n legend: {\n selector: {\n all: 'All',\n inverse: 'Inv'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: 'Box Select',\n polygon: 'Lasso Select',\n lineX: 'Horizontally Select',\n lineY: 'Vertically Select',\n keep: 'Keep Selections',\n clear: 'Clear Selections'\n }\n },\n dataView: {\n title: 'Data View',\n lang: ['Data View', 'Close', 'Refresh']\n },\n dataZoom: {\n title: {\n zoom: 'Zoom',\n back: 'Zoom Reset'\n }\n },\n magicType: {\n title: {\n line: 'Line',\n bar: 'Histogram',\n stack: 'Stack',\n tiled: 'Tile'\n }\n },\n restore: {\n title: 'Restore'\n },\n saveAsImage: {\n title: 'Save as Image',\n lang: ['Right Click to Save Image']\n }\n },\n series: {\n typeNames: {\n pie: 'Pie chart',\n bar: 'Bar chart',\n line: 'Line chart',\n scatter: 'Scatter plot',\n effectScatter: 'Ripple scatter plot',\n radar: 'Radar chart',\n tree: 'Tree',\n treemap: 'Treemap',\n boxplot: 'Boxplot',\n candlestick: 'Candlestick',\n k: 'K line chart',\n heatmap: 'Heat map',\n map: 'Map',\n parallel: 'Parallel coordinate map',\n lines: 'Line graph',\n graph: 'Relationship graph',\n sankey: 'Sankey diagram',\n funnel: 'Funnel chart',\n gauge: 'Gauge',\n pictorialBar: 'Pictorial bar',\n themeRiver: 'Theme River Map',\n sunburst: 'Sunburst',\n custom: 'Custom chart',\n chart: 'Chart'\n }\n },\n aria: {\n general: {\n withTitle: 'This is a chart about \"{title}\"',\n withoutTitle: 'This is a chart'\n },\n series: {\n single: {\n prefix: '',\n withName: ' with type {seriesType} named {seriesName}.',\n withoutName: ' with type {seriesType}.'\n },\n multiple: {\n prefix: '. It consists of {seriesCount} series count.',\n withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',\n withoutName: ' The {seriesId} series is a {seriesType}.',\n separator: {\n middle: '',\n end: ''\n }\n }\n },\n data: {\n allData: 'The data is as follows: ',\n partialData: 'The first {displayCnt} items are: ',\n withName: 'the data for {name} is {value}',\n withoutName: '{value}',\n separator: {\n middle: ', ',\n end: '. '\n }\n }\n }\n};","originalLength":15237,"removedExports":[],"renderedExports":["default"],"renderedLength":5140},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/echart/echart.component.mjs":{"code":"echarts.registerLocale('RU', langRU);\necharts.registerLocale('EN', langEN);\nconst FULL_DAY = 86400000;\nconst GRADIENT = [\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: 'rgb(128, 255, 165)' },\n { offset: 1, color: 'rgb(1, 191, 236)' }\n ]),\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: 'rgb(0, 221, 255)' },\n { offset: 1, color: 'rgb(77, 119, 255)' }\n ]),\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: 'rgb(55, 162, 255)' },\n { offset: 1, color: 'rgb(116, 21, 219)' }\n ]),\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: 'rgb(255, 0, 135)' },\n { offset: 1, color: 'rgb(135, 0, 157)' }\n ]),\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: 'rgb(255, 191, 0)' },\n { offset: 1, color: 'rgb(224, 62, 76)' }\n ])\n];\nconst getGradient = (seed) => GRADIENT[seed % GRADIENT.length];\nconst cutName = (name, length) => {\n if (name.length > length + 3) {\n return name.substring(0, length) + '...';\n }\n return name;\n};\nconst BackGround = {\n [SiteTheme.light]: '#FFFFFF',\n [SiteTheme.dark]: '#494C55'\n};\nconst RedZone = {\n [SiteTheme.light]: 'rgba(255, 173, 177, 0.4)',\n [SiteTheme.dark]: 'rgba(145, 30, 49, 0.2)'\n};\nclass EchartComponent {\n constructor(cdr) {\n this.cdr = cdr;\n this.locale = 'en';\n this.noDataMessage = 'No data';\n this.width = 250;\n this.height = 250;\n this.margin = { top: 70, right: 20, bottom: 60, left: 20 };\n this.data = [];\n this.options = {\n backgroundColor: 'transparent',\n tooltip: {\n appendToBody: true,\n renderMode: 'html',\n trigger: 'axis',\n axisPointer: { type: 'cross' },\n className: 'label-formatter',\n formatter: (params) => {\n let res = 'No data';\n if (params && params[0]) {\n res = `<div class=\"title\">${new DatePipe(this.getLocale(this.locale)).transform(params[0].value[0], 'd MMM y, HH:mm')}</div><table>`;\n res += params.map((val) => {\n if (typeof val.value[val.value.length - 1] === 'number') {\n return `<tr><td class=\"label\">${val.marker} ${cutName(val.seriesName, 20)}</td>\r\n<td><div class=\"value\"><b>${this.roundData(val.value[1])}</b></div></td></tr>`;\n }\n else {\n const unit = val.value[val.value.length - 1].device.param.measure.unit ? val.value[val.value.length - 1].device.param.measure.unit : '';\n if (val.seriesType === 'candlestick') {\n return `<tr><td class=\"label\">${val.marker} ${cutName(val.seriesName, 20)}</td>\r\n<td><div class=\"value\"><div><span>ОТКР:</span> ${this.roundData(val.value[1])}</div><div><span>ЗАКР:</span> ${this.roundData(val.value[2])}</div><div><span>МИН:</span> ${this.roundData(val.value[3])}</div><div><span>МАКС:</span> ${this.roundData(val.value[4])}</div></div></td></tr>`;\n }\n else {\n return `<tr><td class=\"label\">${val.marker} ${cutName(val.seriesName, 20)}</td>\r\n<td><div class=\"value\"><b>${this.roundData(val.value[1])}</b> ${cutName(unit, 10)}</div></td></tr>`;\n }\n }\n }).join('') + '</table>';\n }\n return res;\n }\n },\n xAxis: { type: 'time', boundaryGap: ['0%', '0%'] },\n yAxis: { type: 'value' },\n toolbox: {\n right: '20px',\n showTitle: false,\n feature: {},\n tooltip: {\n show: true,\n formatter: function (param) {\n return '<div>' + param.title + '</div>';\n },\n backgroundColor: '#222',\n extraCssText: 'color: #fff'\n }\n },\n grid: {\n left: `${this.margin.left}px`,\n right: `${this.margin.right}px`,\n bottom: `${this.margin.bottom}px`,\n top: `${this.margin.top}px`,\n containLabel: true\n },\n series: [],\n };\n this.uniqTitles = [];\n this.initOpts = { locale: this.locale.toLocaleUpperCase() };\n this.darkColor = [\n { 'color': '#00FF7F' }, { 'color': '#00E0E0' }, { 'color': '#FF00FF' }, { 'color': '#B2CCE5' }, { 'color': '#F1F227' },\n { 'color': '#FDE3A7' }, { 'color': '#F64747' }, { 'color': '#8BB82D' }, { 'color': '#1E90FF' }, { 'color': '#D2527F' },\n { 'color': '#91A6BA' }\n ];\n this.lightColor = [\n { 'color': '#007A4B' }, { 'color': '#3477DB' }, { 'color': '#D252B2' }, { 'color': '#708090' }, { 'color': '#AF851A' },\n { 'color': '#BB671C' }, { 'color': '#E00000' }, { 'color': '#005031' }, { 'color': '#34415E' }, { 'color': '#58007E' },\n { 'color': '#2E343B' }\n ];\n this.display = true;\n }\n ngOnChanges(changes) {\n if (changes.locale) {\n this.initOpts = { locale: this.locale };\n this.display = false;\n this.cdr.detectChanges();\n setTimeout(() => {\n this.display = true;\n this.cdr.detectChanges();\n });\n }\n if (this.echartsInstance && (changes.width || changes.height)) {\n this.resizeChart();\n }\n if (changes.config || changes.values || changes.theme || changes.simpleData) {\n this.data = [];\n if (this.config && (this.values || this.simpleData)) {\n if (this.values && this.values.length && this.values[0].data) {\n this.updateData(this.config, this.values);\n }\n if (this.simpleData && this.simpleData.length) {\n this.updateArrayData(this.config, this.simpleData);\n }\n }\n }\n }\n ngOnInit() {\n this.initOpts = { locale: this.locale };\n }\n ngOnDestroy() { }\n onChartInit(ec) {\n this.echartsInstance = ec;\n }\n getLocale(locale) {\n return locale.toLowerCase() === 'ru' ? 'ru-RU' : 'en-US';\n }\n resizeChart() {\n if (this.echartsInstance) {\n this.echartsInstance.resize();\n }\n }\n roundData(value, numbers = 2) {\n return Math.round(value * Math.pow(10, numbers)) / Math.pow(10, numbers);\n }\n updateArrayData(config, values) {\n const res = [];\n const xAxis = {\n type: 'value',\n boundaryGap: true,\n max: values[0].data.length,\n axisLabel: {\n formatter: function (value) {\n return value / 1000 + 'kGhz';\n }\n }\n };\n const legend = values.map((val) => val.title || '');\n const yAxis = { type: 'value' };\n values.forEach((value, ind) => {\n res.push({\n type: 'line',\n name: value.title,\n lineStyle: { color: this.getChartColor(ind) },\n itemStyle: { color: this.getChartColor(ind) },\n data: value.data.map((val, i) => [i, val]),\n });\n });\n const magicType = { type: ['bar', 'line'] };\n this.options = {\n ...this.options,\n xAxis,\n yAxis,\n legend: { data: legend, bottom: `8px`, show: true, type: 'scroll' },\n series: res,\n grid: {\n ...this.options.grid,\n left: this.margin.left + 30,\n right: this.margin.right + 30,\n },\n toolbox: {\n ...this.options.toolbox,\n feature: {\n ...this.options.toolbox.feature,\n saveAsImage: { show: true, backgroundColor: BackGround[this.theme] },\n magicType,\n }\n }\n };\n }\n updateData(config, values) {\n const res = [];\n const legend = [];\n const xAxis = {\n type: 'time',\n boundaryGap: false,\n axisLabel: { formatter: '{d} {MMM}\\n{HH}:{mm}' }\n };\n let yAxis = [];\n this.uniqTitles = [];\n values = this.updateValueTimeZone(values);\n const first = values[0];\n const shift = Math.max(0, Number(config.count || 0));\n const tz = first?.device?.object?.timezone ?? 0;\n const endNow = this.nowWithTZ(tz);\n let period;\n switch (config.duration) {\n case SeriesDuration.day:\n period = this.getDay(shift, tz, endNow);\n break;\n case SeriesDuration.week:\n period = this.getWeek(shift, tz, endNow);\n break;\n case SeriesDuration.month:\n period = this.getMonth(shift, tz, endNow);\n break;\n default:\n period = this.getDay(0, tz, endNow);\n }\n if (config.generator) {\n const times = this.getMaxMinTimeline(first);\n xAxis.min = times.min - FULL_DAY;\n xAxis.max = times.max + FULL_DAY;\n }\n else {\n xAxis.min = period.startTime;\n xAxis.max = period.endTime;\n }\n if (config.viewtype !== ChartViews.stackedAreaChart) {\n const diff = Math.round((xAxis.max - xAxis.min) * 0.02);\n xAxis.min = xAxis.min - diff;\n xAxis.max = xAxis.max + diff;\n }\n const measures = values.map(v => v.device.param.measure.id).filter((v, i, s) => s.indexOf(v) === i);\n if (measures.length > 1 && config.viewtype !== ChartViews.stackedAreaChart) {\n yAxis = values.map((v, ind) => {\n const maxmin = this.getMaxMin(v);\n const diff = Math.round((maxmin.max - maxmin.min) * 0.1);\n return {\n type: 'value',\n min: Math.round(maxmin.min - diff),\n max: Math.round(maxmin.max + diff),\n position: ind % 2 === 0 ? 'left' : 'right',\n offset: 60 * Math.floor(ind / 2),\n axisLine: { show: true, lineStyle: { color: this.getChartColor(ind) } },\n splitLine: { show: false },\n axisLabel: { formatter: '{value} ', color: this.getChartColor(ind) }\n };\n });\n }\n else {\n yAxis.push({\n type: 'value',\n splitLine: { lineStyle: { color: ['#aaa', '#aaa'] } },\n axisLine: { show: true, lineStyle: { color: this.getChartColor(0) } },\n axisLabel: { formatter: '{value} ', color: this.getChartColor(0) }\n });\n }\n if (config.viewtype === ChartViews.histogramChart) {\n values.forEach((value, ind) => {\n const title = this.findUniqName(value.title) + ' ' + (value.device.param.measure.unit ? value.device.param.measure.unit : '');\n legend.push(title);\n res.push({\n type: 'bar',\n data: value.data.map((val) => [val.timestmp, val.value, value]),\n itemStyle: { color: this.getChartColor(ind) },\n name: title,\n yAxisIndex: yAxis.length > 1 ? ind : 0,\n });\n });\n }\n else if (config.viewtype === ChartViews.candlestickBarChart) {\n values.forEach((value, ind) => {\n const title = this.findUniqName(value.title) + ' ' + (value.device.param.measure.unit ? value.device.param.measure.unit : '');\n legend.push(title);\n res.push({\n type: 'candlestick',\n data: value.data.map((val) => [val.timestmp, val.open, val.close, val.low, val.high, value]),\n name: title,\n yAxisIndex: yAxis.length > 1 ? ind : 0,\n });\n });\n }\n else {\n values.forEach((value, ind) => {\n const title = this.findUniqName(value.title) + ' ' + (value.device.param.measure.unit ? value.device.param.measure.unit : '');\n legend.push(title);\n if (config.viewtype === ChartViews.stackedAreaChart) {\n res.push({\n type: 'line',\n stack: 'Total',\n smooth: true,\n name: title,\n yAxisIndex: yAxis.length > 1 ? ind : 0,\n data: value.data.map((val) => [val.timestmp, val.value, value]),\n lineStyle: { width: 0 },\n showSymbol: false,\n emphasis: { focus: 'series' },\n itemStyle: { color: getGradient(ind) },\n areaStyle: { opacity: 0.8, color: getGradient(ind) },\n });\n }\n else {\n let markArea;\n if (config.viewtype === ChartViews.lineWeekend) {\n const data = [];\n const days = Math.ceil((xAxis.max - xAxis.min) / FULL_DAY);\n if (days > 1) {\n for (let i = 0; i < days; i++) {\n const date = (new Date(xAxis.min + i * FULL_DAY));\n this.modifyTime(date, 0);\n const day = date.getUTCDay();\n if (day === 0) {\n const d = (new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0));\n data.push([{ xAxis: d.getTime() }, { xAxis: d.getTime() + FULL_DAY }]);\n }\n if (day === 6) {\n const d = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n data.push([{ xAxis: d.getTime() }, { xAxis: d.getTime() + FULL_DAY * 2 }]);\n i++;\n }\n }\n }\n markArea = { itemStyle: { color: RedZone[this.theme] }, data };\n }\n res.push({\n type: 'line',\n smooth: true,\n name: title,\n markArea,\n yAxisIndex: yAxis.length > 1 ? ind : 0,\n lineStyle: { color: this.getChartColor(ind) },\n itemStyle: { color: this.getChartColor(ind) },\n data: value.data.map((val) => [val.timestmp, val.value, value]),\n });\n }\n });\n }\n const magicType = config.viewtype === ChartViews.candlestickBarChart ? {} : {\n type: yAxis.length === 1 ? ['bar', 'stack', 'line'] : ['bar', 'line'],\n };\n this.options = {\n ...this.options,\n xAxis,\n yAxis,\n legend: { data: legend, bottom: `8px`, show: true, type: 'scroll' },\n series: res,\n grid: {\n ...this.options.grid,\n left: this.margin.left + Math.floor(yAxis.length / 2) * 30,\n right: this.margin.right + Math.floor(yAxis.length / 2) * 30,\n },\n toolbox: {\n ...this.options.toolbox,\n feature: {\n ...this.options.toolbox.feature,\n saveAsImage: { show: true, backgroundColor: BackGround[this.theme] },\n magicType,\n }\n }\n };\n }\n findUniqName(title, ind = 0) {\n if (ind === 0) {\n if (this.uniqTitles.indexOf(title) !== -1) {\n return this.findUniqName(title, ind + 1);\n }\n this.uniqTitles.push(title);\n return title;\n }\n else {\n const newTitle = `${title} (${ind})`;\n if (this.uniqTitles.indexOf(newTitle) !== -1) {\n return this.findUniqName(title, ind + 1);\n }\n this.uniqTitles.push(newTitle);\n return newTitle;\n }\n }\n getMaxMinSimple(values) {\n let max = Number.MIN_VALUE, min = Number.MAX_VALUE;\n values.forEach((value) => {\n if (value > max) {\n max = value;\n }\n if (value < min) {\n min = value;\n }\n });\n return { max, min };\n }\n getMaxMin(values) {\n let max = Number.MIN_VALUE, min = Number.MAX_VALUE;\n if (this.config.charttype === ChartTypes.candlestickBarChart) {\n values.data.forEach((val) => {\n if (val.high > max) {\n max = val.high;\n }\n if (val.low < min) {\n min = val.low;\n }\n });\n }\n else {\n values.data.forEach((val) => {\n if (val.value > max) {\n max = val.value;\n }\n if (val.value < min) {\n min = val.value;\n }\n });\n }\n return { max, min };\n }\n updateValueTimeZone(values) {\n return values.map(value => {\n if (value.data) {\n return {\n ...value,\n data: value.data.map((val) => {\n const date = new Date(val.timestmp);\n this.modifyTime(date, 0);\n return { value: val.value ?? val.close ?? 0, timestmp: date.getTime() };\n })\n };\n }\n return value;\n });\n }\n getMaxMinTimeline(values) {\n let max = Number.MIN_VALUE, min = Number.MAX_VALUE;\n if (values.data) {\n values.data.forEach((val) => {\n if (val.timestmp > max) {\n max = val.timestmp;\n }\n if (val.timestmp < min) {\n min = val.timestmp;\n }\n });\n }\n return { max, min };\n }\n nowWithTZ(timezone) {\n const now = new Date();\n const shiftMs = (now.getTimezoneOffset() - timezone * 60) * 60000;\n return new Date(now.getTime() + shiftMs);\n }\n startOfDayTZ(d) {\n const x = new Date(d.getTime());\n x.setHours(0, 0, 0, 0);\n return x;\n }\n startOfWeekTZ(d) {\n const x = new Date(d.getTime());\n const dow = x.getDay();\n const mondayOffset = (dow + 6) % 7;\n x.setDate(x.getDate() - mondayOffset);\n x.setHours(0, 0, 0, 0);\n return x;\n }\n startOfMonthTZ(d) {\n const x = new Date(d.getTime());\n x.setDate(1);\n x.setHours(0, 0, 0, 0);\n return x;\n }\n getDay(shift, timezone, nowTZ) {\n const end = new Date(nowTZ.getTime());\n let start;\n if (shift === 0) {\n start = this.startOfDayTZ(end);\n }\n else {\n start = new Date(end.getTime() - shift * FULL_DAY);\n }\n return { startTime: start.getTime(), endTime: end.getTime(), text: '' };\n }\n getWeek(shift, timezone, nowTZ) {\n const end = new Date(nowTZ.getTime());\n let start = this.startOfWeekTZ(end);\n if (shift > 0) {\n start = new Date(start.getTime() - shift * 7 * FULL_DAY);\n }\n return { startTime: start.getTime(), endTime: end.getTime(), text: '' };\n }\n getMonth(shift, timezone, nowTZ) {\n const end = new Date(nowTZ.getTime());\n let start = this.startOfMonthTZ(end);\n if (shift > 0) {\n const s = new Date(start.getTime());\n s.setMonth(s.getMonth() - shift);\n start = s;\n }\n return { startTime: start.getTime(), endTime: end.getTime(), text: '' };\n }\n modifyTime(date, timezone) {\n return date.setTime(date.getTime() + (date.getTimezoneOffset() - timezone * 60) * 60000);\n }\n getChartColor(seed) {\n if (this.theme === SiteTheme.dark) {\n return this.darkColor[seed % this.darkColor.length].color;\n }\n return this.lightColor[seed % this.lightColor.length].color;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: EchartComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.2.23\", type: EchartComponent, isStandalone: true, selector: \"app-echart\", inputs: { values: \"values\", simpleData: \"simpleData\", config: \"config\", locale: \"locale\", noDataMessage: \"noDataMessage\", width: \"width\", height: \"height\", margin: \"margin\", theme: \"theme\" }, usesOnChanges: true, ngImport: i0, template: \"<div echarts [options]=\\\"options\\\" *ngIf=\\\"display\\\" [initOpts]=\\\"initOpts\\\" style=\\\"width:100%; height: 100%\\\" [theme]=\\\"theme\\\" (chartInit)=\\\"onChartInit($event)\\\"></div>\\r\\n<div class=\\\"no-data-message\\\" *ngIf=\\\"!values && !simpleData\\\">{{noDataMessage}}</div>\\r\\n\", styles: [\".no-data-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.7}::ng-deep .label-formatter .title{padding-bottom:8px}::ng-deep .label-formatter table{color:#333}::ng-deep .label-formatter table .label{padding-right:8px}::ng-deep .label-formatter table .value{text-align:right;color:#555;min-width:100px;display:flex}::ng-deep .label-formatter table .value>div{margin-right:4px}::ng-deep .label-formatter table .value>div span{opacity:.5;font-size:11px}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: NgxEchartsDirective, selector: \"echarts, [echarts]\", inputs: [\"options\", \"theme\", \"initOpts\", \"merge\", \"autoResize\", \"loading\", \"loadingType\", \"loadingOpts\"], outputs: [\"chartInit\", \"optionsError\", \"chartClick\", \"chartDblClick\", \"chartMouseDown\", \"chartMouseMove\", \"chartMouseUp\", \"chartMouseOver\", \"chartMouseOut\", \"chartGlobalOut\", \"chartContextMenu\", \"chartHighlight\", \"chartDownplay\", \"chartSelectChanged\", \"chartLegendSelectChanged\", \"chartLegendSelected\", \"chartLegendUnselected\", \"chartLegendLegendSelectAll\", \"chartLegendLegendInverseSelect\", \"chartLegendScroll\", \"chartDataZoom\", \"chartDataRangeSelected\", \"chartGraphRoam\", \"chartGeoRoam\", \"chartTreeRoam\", \"chartTimelineChanged\", \"chartTimelinePlayChanged\", \"chartRestore\", \"chartDataViewChanged\", \"chartMagicTypeChanged\", \"chartGeoSelectChanged\", \"chartGeoSelected\", \"chartGeoUnselected\", \"chartAxisAreaSelected\", \"chartBrush\", \"chartBrushEnd\", \"chartBrushSelected\", \"chartGlobalCursorTaken\", \"chartRendered\", \"chartFinished\"], exportAs: [\"echarts\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: EchartComponent, decorators: [{\n type: Component$1,\n args: [{ standalone: true, selector: 'app-echart', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, imports: [CommonModule, NgxEchartsDirective], template: \"<div echarts [options]=\\\"options\\\" *ngIf=\\\"display\\\" [initOpts]=\\\"initOpts\\\" style=\\\"width:100%; height: 100%\\\" [theme]=\\\"theme\\\" (chartInit)=\\\"onChartInit($event)\\\"></div>\\r\\n<div class=\\\"no-data-message\\\" *ngIf=\\\"!values && !simpleData\\\">{{noDataMessage}}</div>\\r\\n\", styles: [\".no-data-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.7}::ng-deep .label-formatter .title{padding-bottom:8px}::ng-deep .label-formatter table{color:#333}::ng-deep .label-formatter table .label{padding-right:8px}::ng-deep .label-formatter table .value{text-align:right;color:#555;min-width:100px;display:flex}::ng-deep .label-formatter table .value>div{margin-right:4px}::ng-deep .label-formatter table .value>div span{opacity:.5;font-size:11px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { values: [{\n type: Input\n }], simpleData: [{\n type: Input\n }], config: [{\n type: Input\n }], locale: [{\n type: Input\n }], noDataMessage: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], theme: [{\n type: Input\n }] } });\nclass EChartComponentModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: EChartComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: EChartComponentModule, imports: [EchartComponent, PieChartComponent], exports: [EchartComponent, PieChartComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: EChartComponentModule, imports: [EchartComponent, PieChartComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: EChartComponentModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [EchartComponent, PieChartComponent],\n exports: [EchartComponent, PieChartComponent],\n }]\n }] });","originalLength":87050,"removedExports":[],"renderedExports":["EchartComponent","EChartComponentModule"],"renderedLength":26264},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/shared.module.mjs":{"code":"const PRIME_MODULES = [\n ButtonModule,\n DialogModule,\n ToastModule,\n];\nclass DashboardSharedModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: DashboardSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: DashboardSharedModule, imports: [CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule, i1$2.InlineSVGModule, i2.NgxEchartsModule, ButtonModule,\n DialogModule,\n ToastModule, \n // Standalone pipes\n ArrayNumberPipe,\n FilterIndexOfPipe,\n MakePictureUrl,\n MakeIconUrl,\n MakeChartUrl,\n ChartUrl,\n PeriodFromDatePipe], exports: [CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule,\n InlineSVGModule,\n NgxEchartsModule, ButtonModule,\n DialogModule,\n ToastModule, ArrayNumberPipe,\n FilterIndexOfPipe,\n MakePictureUrl,\n MakeIconUrl,\n MakeChartUrl,\n ChartUrl,\n PeriodFromDatePipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: DashboardSharedModule, providers: [\n MessageService,\n ], imports: [CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule,\n InlineSVGModule.forRoot({ baseUrl: '' }),\n NgxEchartsModule.forRoot({ echarts: () => import('echarts') }), PRIME_MODULES, CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule,\n InlineSVGModule,\n NgxEchartsModule, ButtonModule,\n DialogModule,\n ToastModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: DashboardSharedModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule,\n InlineSVGModule.forRoot({ baseUrl: '' }),\n NgxEchartsModule.forRoot({ echarts: () => import('echarts') }),\n ...PRIME_MODULES,\n // Standalone pipes\n ArrayNumberPipe,\n FilterIndexOfPipe,\n MakePictureUrl,\n MakeIconUrl,\n MakeChartUrl,\n ChartUrl,\n PeriodFromDatePipe,\n ],\n exports: [\n CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule,\n InlineSVGModule,\n NgxEchartsModule,\n ...PRIME_MODULES,\n ArrayNumberPipe,\n FilterIndexOfPipe,\n MakePictureUrl,\n MakeIconUrl,\n MakeChartUrl,\n ChartUrl,\n PeriodFromDatePipe,\n ],\n providers: [\n MessageService,\n ],\n }]\n }] });","originalLength":9833,"removedExports":[],"renderedExports":["PRIME_MODULES","DashboardSharedModule"],"renderedLength":3698},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.generator.mjs":{"code":"function generateValues(inputValues, params, itemType = ITEM_TYPE.single, paramType = PARAM_TYPE.value, path = []) {\n if (inputValues instanceof Array) {\n // Проходимся по массив\n const result = [];\n const conf = inputValues[0];\n itemType = conf.item_type !== undefined ? conf.item_type : itemType;\n paramType = conf.param_type !== undefined ? conf.param_type : paramType;\n const param = findParam(params, path.join('.'));\n const max = Math.min(param.generateConfig?.count || 3, conf.max || 10);\n for (let i = 0; i < max; i++) {\n if (paramType === PARAM_TYPE.virtual_object) {\n const itemPath = [...path, 1];\n result.push(generateValues(conf, params, itemType, paramType, itemPath));\n }\n else {\n result.push(generateValue(i, conf, paramType, itemType, param));\n }\n }\n return result;\n }\n else {\n // Проходимся по объекту\n const result = {};\n for (const key in inputValues) {\n if (inputValues.hasOwnProperty(key)) {\n const itemPath = [...path, key];\n const param = findParam(params, itemPath.join('.'));\n const item = inputValues[key];\n itemType = item.item_type || itemType;\n paramType = item.param_type || paramType;\n if (inputValues[key].items) {\n if (inputValues[key].items instanceof Array) {\n // Если элемент - массив\n result[key] = {\n items: generateValues(inputValues[key].items, params, itemType, paramType, itemPath),\n config: generateParamConfig(itemType, param),\n viewConfig: { ...(param.param ? param.param.viewConfig : {}) },\n custom_data: inputValues[key].custom_data\n };\n }\n else {\n // Если элемент - объект\n result[key] = {\n ...generateValues(inputValues[key].items, params, itemType, paramType, itemPath),\n config: generateParamConfig(itemType, param),\n viewConfig: { ...(param.param ? param.param.viewConfig : {}) },\n custom_data: inputValues[key].custom_data\n };\n }\n }\n else {\n // Если элемент - простой\n result[key] = generateValue(0, item, paramType, itemType, param);\n }\n }\n }\n return result;\n }\n}\nfunction generateParamConfig(itemType, param, paramType = null) {\n switch (itemType) {\n case ITEM_TYPE.custom:\n return {\n type: paramType,\n value: 'text'\n };\n case ITEM_TYPE.interval:\n return {\n dailyRange: 'dailyRange',\n stateMap: false,\n valueType: VALUE_TYPE.absolute,\n duration: SeriesDuration.day,\n count: 1,\n };\n case ITEM_TYPE.single:\n return {\n valueType: VALUE_TYPE.absolute,\n };\n case ITEM_TYPE.series:\n const config = param.config;\n return {\n charttype: ChartViewToType[(config && config.viewtype) ? config.viewtype : ChartViews.lineChart],\n viewtype: (config && config.viewtype) ? config.viewtype : ChartViews.lineChart,\n duration: SeriesDuration.week,\n count: 0,\n generator: true\n };\n case ITEM_TYPE.events:\n return {\n lineType: LineType.eventlog,\n attrList: ['shortname', 'serialnumber', 'eventid', 'name', 'timestmp', 'msg'],\n titleList: ['Short name', 'Serial number', 'Event', 'Full name', 'Time', 'Message'],\n size: 10\n };\n }\n}\nfunction generateValue(index, item, paramType, itemType, param) {\n let res;\n switch (itemType) {\n case ITEM_TYPE.series:\n res = generateSeriesParam(index, paramType, item, param);\n break;\n case ITEM_TYPE.single:\n res = generateSingleParams(index, paramType, item, param);\n break;\n case ITEM_TYPE.table:\n res = generateTableParams(index, paramType, item, param);\n break;\n case ITEM_TYPE.events:\n res = generateEventsParams(index, paramType, item, param);\n break;\n case ITEM_TYPE.objstate:\n res = generateObjStateParams(index, paramType, item, param);\n break;\n case ITEM_TYPE.custom:\n if (paramType === PARAM_TYPE.custom_external) {\n res = generateSingleParams(index, paramType, item, param);\n }\n else {\n res = generateCustomParams(index, paramType, item, param);\n }\n break;\n case ITEM_TYPE.interval:\n res = generateIntervalParams(index, paramType, item, param);\n break;\n case ITEM_TYPE.sysinfo:\n res = generateSysInfoParam(index, paramType, item, param);\n break;\n case ITEM_TYPE.liftinfo:\n res = generateLiftInfoParam(index, paramType, item, param);\n break;\n }\n if (item.custom_data) {\n res.custom_data = res;\n }\n return res;\n}\nfunction updateValue(value) {\n if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n else {\n return value;\n }\n}\nfunction getRandomValue(paramType, item) {\n if (item.available) {\n return item.available[getRandom(0, item.available.length)];\n }\n else {\n if (paramType !== PARAM_TYPE.signal) {\n return getRandom(10, 999);\n }\n else {\n return getRandom(0, 1);\n }\n }\n}\nfunction getIconSet(needIcons) {\n if (!needIcons) {\n return null;\n }\n return {\n error: '',\n falsevalue: '',\n none: '',\n success: '',\n warning: '',\n };\n}\nfunction generateSingleParams(index, paramType, item, param) {\n const config = getConfig(param, index);\n const value = (config.value === undefined || config.value === '') ? getRandomValue(paramType, item) : updateValue(config.value);\n return {\n device: config.param ? {\n controller: { id: null, serialnumber: 'SN' + getRandom(10000, 99999), isOnline: config.isOnline },\n object: {\n id: null,\n shortname: 'Object ' + getRandom(10000, 99999),\n fullname: 'Object ' + getRandom(10000, 99999),\n timezone: 3,\n latitude: 0,\n longitude: 0\n },\n isWorking: config.isWorkingDevice,\n param: {\n id: null,\n name: 'deviceParam name',\n measure: {\n unit: generateMeasureUnit(),\n title: 'Электричество',\n id: getRandom(10000, 99999),\n icon: generateWidgetIcon(),\n },\n type: PARAM_TYPE.value,\n calc: false,\n ctrability: config.ctrability,\n },\n zone: { id: getRandom(10000, 10005), name: `Zone ${getRandom(20000, 20005)}` },\n room: { id: getRandom(10000, 10005), name: `Room ${getRandom(20000, 20005)}` },\n unit: { id: getRandom(10000, 10005), name: `Unit ${getRandom(20000, 20005)}` },\n classifier: { id: getRandom(10000, 10005), name: `Classifier ${getRandom(20000, 20005)}` },\n state: (config.isWorkingDevice ? {\n comment: 'Состояние канала устройства: работоспособен',\n id: 1,\n name: 'работоспособен'\n } : {\n comment: 'Состояние канала устройства: неработоспособен',\n id: -1,\n name: 'неработоспособен'\n }),\n } : null,\n refName: '',\n itemType: ITEM_TYPE.single,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.single, param),\n value: config.data ? value : null,\n viewConfig: { view: config.view, ...(param.param ? param.param.viewConfig : {}) },\n data: config.data ? {\n date: 1548968400000,\n value: value,\n locked: config.locked,\n manually: config.editable,\n unit: { id: 2, available: true, name: '', unavailabilityDate: 0 },\n state: config.state ? {\n color: PARAM_STATE_INT[config.state],\n comment: 'comment',\n idIcon: config.isIcon ? -1 : 0,\n } : null,\n } : null,\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n borders: config.borders ? BORDERS : [],\n icons: getIconSet(config.iconSet),\n isEditing: false,\n };\n}\nfunction generateSeriesParam(index, paramType, item, param) {\n const value = getRandomValue(paramType, item);\n return {\n device: {\n controller: { id: null, serialnumber: 'SN' + getRandom(10000, 99999) },\n object: {\n id: null,\n shortname: 'Object ' + getRandom(10000, 99999),\n fullname: 'Object ' + getRandom(10000, 99999),\n timezone: -3,\n latitude: 0,\n longitude: 0\n },\n param: {\n id: null,\n name: 'deviceParam name',\n measure: {\n unit: generateMeasureUnit(),\n title: 'Электричество',\n id: getRandom(10000, 99999),\n icon: generateWidgetIcon(),\n },\n type: PARAM_TYPE.value,\n calc: false,\n },\n zone: { id: getRandom(10000, 10005), name: `Zone ${getRandom(20000, 20005)}` },\n room: { id: getRandom(10000, 10005), name: `Room ${getRandom(20000, 20005)}` },\n unit: { id: getRandom(10000, 10005), name: `Unit ${getRandom(20000, 20005)}` },\n classifier: { id: getRandom(10000, 10005), name: `Classifier ${getRandom(20000, 20005)}` },\n },\n refName: '',\n itemType: ITEM_TYPE.single,\n widgetId: null,\n title: 'Title param',\n config: { ...generateParamConfig(ITEM_TYPE.series, param), ...param.config },\n value,\n viewConfig: null,\n data: (param.config && param.config.viewtype === ChartViews.candlestickBarChart) ? CANDLE_CHART : generateChartValues(),\n custom: {},\n borders: [],\n isEditing: false,\n };\n}\nfunction generateChartValues() {\n const rand = Math.round(Math.random() * 100);\n return CHART_VALUES.map(val => {\n return { timestmp: val.timestmp, value: val.value + rand };\n });\n}\nfunction generateIntervalParams(index, paramType, item, param) {\n const config = getConfig(param, index);\n const value = (config.value === undefined || config.value === '') ? getRandomValue(paramType, item) : updateValue(config.value);\n return {\n device: {\n controller: { id: null, serialnumber: 'SN' + getRandom(10000, 99999) },\n object: {\n id: null,\n shortname: 'Object ' + getRandom(10000, 99999),\n fullname: 'Object ' + getRandom(10000, 99999),\n timezone: 3,\n latitude: 0,\n longitude: 0\n },\n param: {\n id: null,\n name: 'deviceParam name',\n measure: {\n unit: generateMeasureUnit(),\n title: 'Электричество',\n id: getRandom(10000, 99999),\n icon: generateWidgetIcon(),\n },\n type: PARAM_TYPE.value,\n calc: false,\n ctrability: config.ctrability,\n },\n zone: { id: getRandom(10000, 10005), name: `Zone ${getRandom(20000, 20005)}` },\n room: { id: getRandom(10000, 10005), name: `Room ${getRandom(20000, 20005)}` },\n unit: { id: getRandom(10000, 10005), name: `Unit ${getRandom(20000, 20005)}` },\n classifier: { id: getRandom(10000, 10005), name: `Classifier ${getRandom(20000, 20005)}` },\n },\n refName: '',\n itemType: ITEM_TYPE.single,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.single, param),\n value,\n viewConfig: null,\n data: config.data ? {\n states: [{\n 'interval': 21602841,\n 'state': { 'id': 3, 'name': 'критическое', 'color': 'error', 'comment': 'Критическое значение параметра' }\n }, {\n 'interval': 42698374,\n 'state': {\n 'id': 2,\n 'name': 'отклонение',\n 'color': 'warning',\n 'comment': 'Значение параметра отклонилось от нормального'\n }\n }, {\n 'interval': 21414971,\n 'state': { 'id': 1, 'name': 'норма', 'color': 'success', 'comment': 'Нормальное значение параметра' }\n }, {\n 'interval': 18053,\n 'state': { 'id': 0, 'name': 'нет контроля', 'color': 'none', 'comment': 'Значение параметра не контролируется' }\n }], // absolute signal\n switchCount: 1, // signal\n value,\n percent: 1, // relative и increment\n min: 1, // absolute\n max: 1, // absolute\n state: config.state ? {\n color: PARAM_STATE_INT[config.state],\n comment: 'comment',\n idIcon: config.isIcon ? -1 : 0,\n } : null,\n 'beginInterval': 1556658000000,\n 'endInterval': 1557139222542,\n valueMap: [{ interval: -84606254, value: 0 }, { interval: 1806254, value: 1 }],\n } : null,\n custom: {},\n borders: config.borders ? BORDERS : [],\n isEditing: false,\n };\n}\nfunction generateEventsParams(index, paramType, item, param) {\n const getEvent = () => {\n return {\n 'id': Math.round(Math.random() * 100000),\n 'shortname': 'БЕЛКА',\n 'serialnumber': 'SQUIRREL',\n 'eventid': Math.round(Math.random() * 100000),\n 'name': '0pus334',\n 'timestmp': 1694157120464,\n 'paramname': null,\n 'paramvalue': null,\n 'msg': '0pus334',\n 'cdpid': null,\n 'ccpid': null,\n 'categoryid': null,\n 'media': [],\n 'criticalId': 4,\n 'criticalName': 'success',\n 'closeTime': 1694157120464,\n 'closed': Math.random() > 0.5,\n 'processed': Math.random() > 0.5,\n 'value': null\n };\n };\n const rowList = [];\n if (param.generateConfig.duration) {\n for (let i = 0; i < getRandom(6, 30); i++) {\n rowList.push(getEvent());\n }\n }\n else {\n for (let i = 0; i < (param.generateConfig.count ?? 20); i++) {\n rowList.push(getEvent());\n }\n }\n return {\n data: { rowList },\n config: { attrList: ['shortname', 'serialnumber', 'msg'], titleList: ['Объект', 'Сер.номер', 'Сообщение'] }\n };\n}\nfunction generateObjStateParams(index, paramType, item, param) {\n return {\n config: { rubricId: 1 },\n data: {\n date: 1697487855625,\n states: [\n {\n count: 5,\n id: 3,\n name: 'активен',\n },\n {\n count: 25,\n id: 2,\n name: 'не работает',\n }\n ]\n }\n };\n}\nfunction generateCustomParams(index, paramType, item, param) {\n const config = getConfig(param, index);\n if (paramType === PARAM_TYPE.custom_string) {\n const defValue = BIG_TEXT.slice(0, Math.min(config.paragraphCount || 2, 5)).join('\\n');\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: config.value ? config.value : defValue,\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_objstate) {\n const defValue = 3;\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: config.value ? config.value : defValue,\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_forge) {\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: config.value ? config.value : '',\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_fuxa) {\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: config.value ? config.value : '',\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_json) {\n const defValue = undefined;\n let json_value;\n try {\n json_value = config.value ? JSON.parse(config.value) : defValue;\n }\n catch (e) {\n }\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: json_value,\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_archer) {\n const res = {\n files: config.files ? { json: config.files.json, svg: config.files.svg } : null,\n value: (config.archer && config.archer.value) ? config.archer.value : null,\n viewConfig: {},\n };\n if (config.archer) {\n for (const key in config.archer) {\n if (config.archer.hasOwnProperty(key)) {\n res[key] = config.archer[key];\n }\n }\n }\n return res;\n }\n if (paramType === PARAM_TYPE.custom_file) {\n const res = {\n files: config.files,\n value: null,\n viewConfig: {},\n };\n return res;\n }\n if (paramType === PARAM_TYPE.custom_select) {\n const defValue = null;\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: item.custom_data.items.find(val => val.value === config.selectValue),\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_dashboard) {\n const widgets = [\n {\n title: 'Widget 1',\n dashboard: {\n id: 1,\n dashname: 'Dash 1',\n type: DashboardType.WEB,\n objrubric: {\n id: 0,\n shortname: 'Rubric'\n }\n },\n widgetclass: {\n id: 1,\n name: 'text',\n storeId: 'text',\n }\n },\n {\n title: 'Widget 2',\n dashboard: {\n id: 1,\n dashname: 'Dash 1',\n type: DashboardType.WEB,\n objrubric: {\n id: 0,\n shortname: 'Rubric'\n }\n },\n widgetclass: {\n id: 1,\n name: 'text',\n storeId: 'text',\n }\n },\n {\n title: 'Widget 3',\n dashboard: {\n id: 1,\n dashname: 'Dash 1',\n type: DashboardType.WEB,\n objrubric: {\n id: 0,\n shortname: 'Rubric'\n }\n },\n widgetclass: {\n id: 1,\n name: 'text',\n storeId: 'text',\n }\n },\n ];\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: widgets,\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n };\n }\n}\nfunction generateWidgetIcon() {\n return {\n name: 'icon',\n id: 1,\n filepath: 'path',\n iconset: {\n id: 1,\n name: 'iconset',\n imagetype: 1\n }\n };\n}\nfunction generateTableParams(index, paramType, item, param) {\n const values = [];\n for (let i = 0; i < param.generateConfig.rows; i++) {\n values[i] = [];\n for (let j = 0; j < param.generateConfig.columns; j++) {\n // if (Math.random() < 0.9) {\n values[i][j] = generateSingleParams(index, paramType, item, param);\n // } else {\n // values[i][j] = null;\n // }\n }\n }\n const colConfig = [];\n const rowConfig = [];\n for (let i = 1; i <= param.generateConfig.rows; i++) {\n rowConfig.push({ name: `Row ${i}` });\n }\n for (let i = 0; i <= param.generateConfig.columns; i++) {\n colConfig.push(getRandomCol());\n }\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.single,\n widgetId: null,\n title: 'Title param',\n config: {},\n values,\n viewConfig: {\n rowsName: ['row 1', 'row 2'],\n colsName: ['col 1', 'col 2'],\n cols: param.generateConfig.columns,\n rows: param.generateConfig.rows,\n visibleRow: param.generateConfig.visibleRow,\n visibleCol: param.generateConfig.visibleCol,\n view: param.generateConfig.view,\n table: {\n cols: param.generateConfig.columns,\n rows: param.generateConfig.rows,\n visibleRow: param.generateConfig.visibleRow,\n visibleCol: param.generateConfig.visibleCol,\n colConfig,\n rowConfig,\n }\n },\n custom: {},\n borders: [],\n isEditing: false,\n };\n}\nfunction getRandomCol(hasLabel = true) {\n const rnd = Math.random();\n if (rnd <= .25) {\n return { name: hasLabel ? 'Col Fit' : undefined, widthType: 'fit-content' };\n }\n else if (rnd <= .5) {\n return { name: hasLabel ? 'Col Auto' : undefined, widthType: 'auto' };\n }\n else if (rnd <= .8) {\n return { name: hasLabel ? 'Col Fix Px100' : undefined, widthType: 'fix', size: { unit: 'px', value: 100 } };\n }\n else {\n return { name: hasLabel ? 'Col Fix %20' : undefined, widthType: 'fix', size: { unit: '%', value: 20 } };\n }\n}\nfunction generateSysInfoParam(index, paramType, item, param) {\n return {\n id: 1,\n device: null,\n refName: '',\n itemType: ITEM_TYPE.sysinfo,\n widgetId: null,\n title: 'Title param',\n config: { rubricId: 1174 },\n data: {\n controllersInfo: { total: getRandom(0, 10), online: getRandom(0, 10), offline: getRandom(0, 10) },\n date: Date.now()\n }\n };\n}\nfunction generateLiftInfoParam(index, paramType, item, param) {\n return {\n id: 1,\n device: null,\n refName: '',\n itemType: ITEM_TYPE.liftinfo,\n widgetId: null,\n title: 'Title param',\n config: { deviceClassifierId: 76, objectIds: [372] },\n data: {\n liftsInfo: { total: getRandom(0, 10), online: getRandom(0, 10), offline: getRandom(0, 10) },\n date: Date.now()\n }\n };\n}\nfunction generateMeasureUnit() {\n const units = ['град', '°C', 'лит', 'км', '%'];\n return units[getRandom(0, units.length - 1)];\n}\n// Возвращает случайное число между min (включительно) и max (включительно)\nfunction getRandom(min, max) {\n return Math.round(Math.random() * (max - min) + min);\n}\nfunction getConfig(param, index) {\n if (param?.generateConfig?.items) {\n return param.generateConfig.items[index] || {};\n }\n return param?.generateConfig ?? {};\n}\nconst BORDERS = [{\n 'state': {\n 'id': 3,\n 'name': 'критическое',\n 'color': 'error',\n 'comment': 'Критическое значение параметра'\n }, 'intervals': [{ 'from': 70.0, 'to': null }]\n }, {\n 'state': {\n 'id': 2,\n 'name': 'отклонение',\n 'color': 'warning',\n 'comment': 'Значение параметра отклонилось от нормального'\n }, 'intervals': [{ 'from': 30.0, 'to': 70.0 }]\n }, {\n 'state': { 'id': 1, 'name': 'норма', 'color': 'success', 'comment': 'Нормальное значение параметра' },\n 'intervals': [{ 'from': 0.0, 'to': 30.0 }]\n }, {\n 'state': {\n 'id': 0,\n 'name': 'нет контроля',\n 'color': 'none',\n 'comment': 'Значение параметра не контролируется'\n }, 'intervals': [{ 'from': -20.0, 'to': 0.0 }]\n }, {\n 'state': {\n 'id': -1,\n 'name': 'недостоверно',\n 'color': 'falsevalue',\n 'comment': 'Недостоверное значение параметра'\n }, 'intervals': [{ 'from': null, 'to': -20.0 }]\n }].reverse();\nconst CHART_VALUES = [\n {\n 'timestmp': 1645551000000,\n 'value': null\n },\n {\n 'timestmp': 1645552800000,\n 'value': 32.8258476\n },\n {\n 'timestmp': 1645554600000,\n 'value': 48.659893\n },\n {\n 'timestmp': 1645556400000,\n 'value': 50.5622482\n },\n {\n 'timestmp': 1645558200000,\n 'value': 51.6553383\n },\n {\n 'timestmp': 1645560000000,\n 'value': 50.4319\n },\n {\n 'timestmp': 1645561800000,\n 'value': 53.0366707\n },\n {\n 'timestmp': 1645563600000,\n 'value': 47.8176422\n },\n {\n 'timestmp': 1645565400000,\n 'value': 51.6424713\n },\n {\n 'timestmp': 1645567200000,\n 'value': 51.812233\n },\n {\n 'timestmp': 1645569000000,\n 'value': 47.3627434\n },\n {\n 'timestmp': 1645570800000,\n 'value': 51.7313538\n },\n {\n 'timestmp': 1645572600000,\n 'value': 49.4223938\n },\n {\n 'timestmp': 1645574400000,\n 'value': 52.5739746\n },\n {\n 'timestmp': 1645576200000,\n 'value': 51.6155472\n },\n {\n 'timestmp': 1645578000000,\n 'value': 49.1932793\n },\n {\n 'timestmp': 1645579800000,\n 'value': 51.5943527\n },\n {\n 'timestmp': 1645581600000,\n 'value': 50.5669518\n },\n {\n 'timestmp': 1645583400000,\n 'value': 48.7359962\n },\n {\n 'timestmp': 1645585200000,\n 'value': 53.4266319\n },\n {\n 'timestmp': 1645587000000,\n 'value': 50.285614\n },\n {\n 'timestmp': 1645588800000,\n 'value': 49.249176\n },\n {\n 'timestmp': 1645590600000,\n 'value': 50.412838\n },\n {\n 'timestmp': 1645592400000,\n 'value': 50.2692413\n },\n {\n 'timestmp': 1645594200000,\n 'value': 52.9794044\n },\n {\n 'timestmp': 1645596000000,\n 'value': 49.6678772\n },\n {\n 'timestmp': 1645597800000,\n 'value': 49.4464493\n },\n {\n 'timestmp': 1645599600000,\n 'value': 52.1587296\n },\n {\n 'timestmp': 1645601400000,\n 'value': 49.9102745\n },\n {\n 'timestmp': 1645603200000,\n 'value': 51.7093391\n },\n {\n 'timestmp': 1645605000000,\n 'value': 51.2751236\n },\n {\n 'timestmp': 1645606800000,\n 'value': 48.9914932\n },\n {\n 'timestmp': 1645608600000,\n 'value': 51.0573616\n },\n {\n 'timestmp': 1645610400000,\n 'value': 51.5929947\n },\n {\n 'timestmp': 1645612200000,\n 'value': 50.5275879\n },\n {\n 'timestmp': 1645614000000,\n 'value': 52.7304688\n },\n {\n 'timestmp': 1645615800000,\n 'value': 48.162323\n },\n {\n 'timestmp': 1645617600000,\n 'value': 52.0599556\n },\n {\n 'timestmp': 1645619400000,\n 'value': 49.9631157\n },\n {\n 'timestmp': 1645621200000,\n 'value': 48.4315491\n },\n {\n 'timestmp': 1645623000000,\n 'value': 53.9735832\n },\n {\n 'timestmp': 1645624800000,\n 'value': 47.5742874\n },\n {\n 'timestmp': 1645626600000,\n 'value': 48.5623856\n },\n {\n 'timestmp': 1645628400000,\n 'value': 52.1424675\n },\n {\n 'timestmp': 1645630200000,\n 'value': 48.3597183\n },\n {\n 'timestmp': 1645632000000,\n 'value': 50.9834785\n },\n {\n 'timestmp': 1645633800000,\n 'value': 51.0054741\n },\n {\n 'timestmp': 1645635600000,\n 'value': 48.7688789\n },\n {\n 'timestmp': 1645637400000,\n 'value': 51.7769661\n },\n {\n 'timestmp': 1645639200000,\n 'value': 49.1443024\n },\n {\n 'timestmp': 1645641000000,\n 'value': 51.7417603\n },\n {\n 'timestmp': 1645642800000,\n 'value': 49.8708458\n },\n {\n 'timestmp': 1645644600000,\n 'value': 48.1264877\n },\n {\n 'timestmp': 1645646400000,\n 'value': 51.6495094\n },\n {\n 'timestmp': 1645648200000,\n 'value': 50.5347023\n },\n {\n 'timestmp': 1645650000000,\n 'value': 49.7064209\n },\n {\n 'timestmp': 1645651800000,\n 'value': 52.7749977\n },\n {\n 'timestmp': 1645653600000,\n 'value': 49.4221077\n },\n {\n 'timestmp': 1645655400000,\n 'value': 52.6562157\n },\n {\n 'timestmp': 1645657200000,\n 'value': 51.1348381\n },\n {\n 'timestmp': 1645659000000,\n 'value': 50.4315948\n },\n {\n 'timestmp': 1645660800000,\n 'value': 52.5681114\n },\n {\n 'timestmp': 1645662600000,\n 'value': 48.9252357\n },\n {\n 'timestmp': 1645664400000,\n 'value': 50.894516\n },\n {\n 'timestmp': 1645666200000,\n 'value': 51.7634201\n },\n {\n 'timestmp': 1645668000000,\n 'value': 51.0939255\n },\n {\n 'timestmp': 1645669800000,\n 'value': 53.2192345\n },\n {\n 'timestmp': 1645671600000,\n 'value': 51.7018623\n },\n {\n 'timestmp': 1645673400000,\n 'value': 50.0135651\n },\n {\n 'timestmp': 1645675200000,\n 'value': 51.3010292\n },\n {\n 'timestmp': 1645677000000,\n 'value': 46.5560951\n },\n {\n 'timestmp': 1645678800000,\n 'value': 52.3065147\n },\n {\n 'timestmp': 1645680600000,\n 'value': 49.7032089\n },\n {\n 'timestmp': 1645682400000,\n 'value': 48.5279617\n },\n {\n 'timestmp': 1645684200000,\n 'value': 52.1763\n },\n {\n 'timestmp': 1645686000000,\n 'value': 48.1455116\n },\n {\n 'timestmp': 1645687800000,\n 'value': 51.1893082\n },\n {\n 'timestmp': 1645689600000,\n 'value': 51.143837\n },\n {\n 'timestmp': 1645691400000,\n 'value': 48.4687042\n },\n {\n 'timestmp': 1645693200000,\n 'value': 51.5306282\n },\n {\n 'timestmp': 1645695000000,\n 'value': 50.565773\n },\n {\n 'timestmp': 1645696800000,\n 'value': 48.7029495\n },\n {\n 'timestmp': 1645698600000,\n 'value': 53.7815475\n },\n {\n 'timestmp': 1645700400000,\n 'value': 48.2070236\n },\n {\n 'timestmp': 1645702200000,\n 'value': 51.9778252\n },\n {\n 'timestmp': 1645704000000,\n 'value': 50.9588737\n },\n {\n 'timestmp': 1645705800000,\n 'value': 49.4310341\n },\n {\n 'timestmp': 1645707600000,\n 'value': 52.0059052\n },\n {\n 'timestmp': 1645709400000,\n 'value': 48.3030815\n },\n {\n 'timestmp': 1645711200000,\n 'value': 50.1639862\n },\n {\n 'timestmp': 1645713000000,\n 'value': 50.9100494\n },\n {\n 'timestmp': 1645714800000,\n 'value': 48.6635818\n },\n {\n 'timestmp': 1645716600000,\n 'value': 53.3434525\n },\n {\n 'timestmp': 1645718400000,\n 'value': 51.4400101\n },\n {\n 'timestmp': 1645720200000,\n 'value': 50.3772774\n },\n {\n 'timestmp': 1645722000000,\n 'value': 53.0157394\n },\n {\n 'timestmp': 1645723800000,\n 'value': 48.575489\n },\n {\n 'timestmp': 1645725600000,\n 'value': 50.9716911\n },\n {\n 'timestmp': 1645727400000,\n 'value': 51.041893\n },\n {\n 'timestmp': 1645729200000,\n 'value': 50.2014465\n },\n {\n 'timestmp': 1645731000000,\n 'value': 51.8398705\n },\n {\n 'timestmp': 1645732800000,\n 'value': 50.1148033\n },\n {\n 'timestmp': 1645734600000,\n 'value': 49.1726875\n },\n {\n 'timestmp': 1645736400000,\n 'value': 49.8998184\n },\n {\n 'timestmp': 1645738200000,\n 'value': 47.0266991\n },\n {\n 'timestmp': 1645740000000,\n 'value': 51.0160942\n },\n {\n 'timestmp': 1645741800000,\n 'value': 51.2925758\n },\n {\n 'timestmp': 1645743600000,\n 'value': 45.3985367\n },\n {\n 'timestmp': 1645745400000,\n 'value': 54.5472412\n },\n {\n 'timestmp': 1645747200000,\n 'value': 53.5879326\n },\n {\n 'timestmp': 1645749000000,\n 'value': 50.4831352\n },\n {\n 'timestmp': 1645750800000,\n 'value': 49.7594566\n },\n {\n 'timestmp': 1645752600000,\n 'value': 49.4067154\n },\n {\n 'timestmp': 1645754400000,\n 'value': 53.5835075\n },\n {\n 'timestmp': 1645756200000,\n 'value': 44.7278328\n },\n {\n 'timestmp': 1645758000000,\n 'value': 54.8701286\n },\n {\n 'timestmp': 1645759800000,\n 'value': 52.8954544\n },\n {\n 'timestmp': 1645761600000,\n 'value': 47.3508835\n },\n {\n 'timestmp': 1645763400000,\n 'value': 50.3395233\n },\n {\n 'timestmp': 1645765200000,\n 'value': 54.7109451\n },\n {\n 'timestmp': 1645767000000,\n 'value': 46.1835632\n },\n {\n 'timestmp': 1645768800000,\n 'value': 54.3547058\n },\n {\n 'timestmp': 1645770600000,\n 'value': 44.5034637\n },\n {\n 'timestmp': 1645772400000,\n 'value': 45.6780167\n },\n {\n 'timestmp': 1645774200000,\n 'value': 51.7169151\n },\n {\n 'timestmp': 1645776000000,\n 'value': 50.1562195\n },\n {\n 'timestmp': 1645777800000,\n 'value': 49.2977676\n },\n {\n 'timestmp': 1645779600000,\n 'value': 47.7331276\n },\n {\n 'timestmp': 1645781400000,\n 'value': 49.2630501\n },\n {\n 'timestmp': 1645783200000,\n 'value': 51.4490509\n },\n {\n 'timestmp': 1645785000000,\n 'value': 48.8069763\n },\n {\n 'timestmp': 1645786800000,\n 'value': 51.788662\n },\n {\n 'timestmp': 1645788600000,\n 'value': 50.8114243\n },\n {\n 'timestmp': 1645790400000,\n 'value': 48.7802238\n },\n {\n 'timestmp': 1645792200000,\n 'value': 52.4341049\n },\n {\n 'timestmp': 1645794000000,\n 'value': 42.9888535\n },\n {\n 'timestmp': 1645795800000,\n 'value': null\n }\n];\nconst CANDLE_CHART = [{ 'timestmp': 1548968400000, 'open': 24.0, 'close': 84.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548970200000,\n 'open': 84.0,\n 'close': 22.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1548972000000, 'open': 22.0, 'close': 55.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548973800000,\n 'open': 55.0,\n 'close': 58.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1548975600000, 'open': 58.0, 'close': 25.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548977400000,\n 'open': 25.0,\n 'close': 97.0,\n 'low': 1.0,\n 'high': 99.0\n }, { 'timestmp': 1548979200000, 'open': 90.0, 'close': 16.0, 'low': 1.0, 'high': 99.0 }, {\n 'timestmp': 1548981000000,\n 'open': 16.0,\n 'close': 57.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1548982800000, 'open': 57.0, 'close': 60.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548984600000,\n 'open': 60.0,\n 'close': 24.0,\n 'low': 2.0,\n 'high': 100.0\n }, { 'timestmp': 1548986400000, 'open': 24.0, 'close': 85.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548988200000,\n 'open': 85.0,\n 'close': 26.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1548990000000, 'open': 26.0, 'close': 59.0, 'low': 1.0, 'high': 99.0 }, {\n 'timestmp': 1548991800000,\n 'open': 59.0,\n 'close': 69.0,\n 'low': 1.0,\n 'high': 99.0\n }, { 'timestmp': 1548993600000, 'open': 69.0, 'close': 18.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548995400000,\n 'open': 18.0,\n 'close': 86.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1548997200000, 'open': 86.0, 'close': 35.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548999000000,\n 'open': 35.0,\n 'close': 53.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549000800000, 'open': 53.0, 'close': 62.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549002600000,\n 'open': 62.0,\n 'close': 30.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549004400000, 'open': 30.0, 'close': 96.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549006200000,\n 'open': 96.0,\n 'close': 39.0,\n 'low': 2.0,\n 'high': 99.0\n }, { 'timestmp': 1549008000000, 'open': 39.0, 'close': 49.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549009800000,\n 'open': 49.0,\n 'close': 56.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549011600000, 'open': 56.0, 'close': 19.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549013400000,\n 'open': 19.0,\n 'close': 73.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549015200000, 'open': 73.0, 'close': 22.0, 'low': 1.0, 'high': 99.0 }, {\n 'timestmp': 1549017000000,\n 'open': 22.0,\n 'close': 43.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549018800000, 'open': 43.0, 'close': 74.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549020600000,\n 'open': 74.0,\n 'close': 24.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549022400000, 'open': 24.0, 'close': 78.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549024200000,\n 'open': 78.0,\n 'close': 43.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549026000000, 'open': 43.0, 'close': 47.0, 'low': 2.0, 'high': 100.0 }, {\n 'timestmp': 1549027800000,\n 'open': 47.0,\n 'close': 73.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549029600000, 'open': 73.0, 'close': 2.0, 'low': 2.0, 'high': 100.0 }, {\n 'timestmp': 1549031400000,\n 'open': 2.0,\n 'close': 76.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549033200000, 'open': 76.0, 'close': 33.0, 'low': 1.0, 'high': 99.0 }, {\n 'timestmp': 1549035000000,\n 'open': 33.0,\n 'close': 45.0,\n 'low': 2.0,\n 'high': 100.0\n }];\nconst BIG_TEXT = [\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi convallis congue nisi vel congue. Nulla vel sem non diam condimentum consectetur. Vivamus venenatis vehicula arcu, nec porta nisl. Aliquam vitae euismod arcu. Aenean fringilla, ligula et convallis fermentum, felis ligula commodo ante, non bibendum arcu diam vel ligula. Nullam lobortis interdum lorem ut convallis. Suspendisse potenti. Sed malesuada suscipit odio. Morbi a magna quis arcu semper consequat.',\n '\\n\\nMauris posuere, nunc eget pulvinar feugiat, urna quam egestas enim, non interdum enim arcu eu diam. Curabitur suscipit aliquet luctus. Proin eleifend nisl vitae tellus pulvinar elementum. Praesent sollicitudin, dui eu ultrices maximus, orci tortor efficitur libero, eu eleifend leo orci ut quam. Donec dignissim vel nibh sit amet congue. Suspendisse congue lacinia suscipit. Donec nec massa facilisis, aliquet leo nec, accumsan mi. Nam fringilla massa vitae tortor mollis congue. Sed purus arcu, ornare non turpis eu, molestie laoreet leo. Nunc eu rhoncus orci. Pellentesque quis nisi tempus, sagittis erat eu, finibus tortor. Fusce nisi ex, facilisis vitae aliquet in, rutrum sed neque. Aliquam pellentesque tellus risus, sit amet hendrerit nulla condimentum at. Aliquam ultrices, nisi nec sagittis imperdiet, velit orci semper dui, vitae bibendum sem felis vel leo. Ut non leo auctor, dictum nunc sodales, dapibus dolor.',\n '\\n\\nInteger blandit maximus sem, vel accumsan augue ultrices in. Curabitur ut dignissim magna, ut semper sem. Suspendisse tellus tortor, semper nec metus eu, maximus sodales tellus. Morbi sed tortor vel est vehicula blandit. Etiam id est risus. Ut consequat quis massa et commodo. Pellentesque fringilla commodo quam ac vestibulum. Quisque euismod elit velit, nec ultricies ligula consequat vitae. Ut aliquet sed sapien et elementum. Praesent rhoncus convallis nulla, vitae tempus magna euismod sit amet. Sed risus nunc, fringilla vel orci a, cursus rhoncus quam. Mauris tincidunt dolor lacus, et condimentum nisl tempor sit amet. Sed eros tortor, auctor a vulputate et, vulputate id ante. Quisque ultrices mollis vulputate. Aenean ut augue sem.',\n '\\n\\nDonec luctus mauris nec nibh varius, in posuere felis scelerisque. Donec vitae dapibus felis. In interdum, libero vehicula pellentesque iaculis, orci felis tempus mauris, vel ullamcorper leo odio quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed fringilla vestibulum urna, nec sollicitudin lacus porta eu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean posuere ultrices nunc sit amet pretium. Quisque eget tortor semper, convallis diam sit amet, gravida purus. Maecenas finibus gravida mi eu convallis. Vivamus quis volutpat dui, vel elementum mauris. Aenean pretium odio tortor, et placerat ligula congue sit amet. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ut tristique nisi. Suspendisse pharetra elit a ligula convallis dictum. Nunc egestas non leo eu ultrices.',\n '\\n\\nPraesent pulvinar nunc nec quam consectetur fringilla. Pellentesque tristique ex id mollis fermentum. Praesent sit amet lacinia nibh. Nulla at ex consequat, hendrerit sapien in, tincidunt tortor. Etiam eget efficitur libero. Proin consequat tellus at placerat sagittis. Nam vitae euismod sapien, sit amet ullamcorper odio. Sed tincidunt ut sem eu pellentesque. Sed efficitur nulla urna, sed finibus enim imperdiet in. Nulla ac nulla finibus, eleifend urna quis, semper felis.'\n];","originalLength":160913,"removedExports":[],"renderedExports":["generateValues","getRandom"],"renderedLength":46465},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.api.mjs":{"code":"","originalLength":1365,"removedExports":[],"renderedExports":[],"renderedLength":0},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget.dialog.mjs":{"code":"class WidgetDialog {\n constructor(opts) {\n this.onClose = opts.close;\n }\n close() {\n if (this.onClose) {\n this.onClose();\n }\n }\n}","originalLength":1039,"removedExports":[],"renderedExports":["WidgetDialog"],"renderedLength":173},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/widget-container/widget-container.component.mjs":{"code":"class WidgetContainer {\n /**\n * @deprecated\n * @param componentType\n */\n createComponentModule(componentType) {\n throw new Error('You should implement this method');\n }\n /**\n * @deprecated\n * @param opts\n */\n createNewComponent(opts) {\n throw new Error('You should implement this method');\n }\n}","originalLength":2848,"removedExports":[],"renderedExports":["WidgetContainer"],"renderedLength":350},"C:/Projects/widget-common/dist/widget-common/full/esm2022/lib/forge/forge.interface.mjs":{"code":"","originalLength":433,"removedExports":[],"renderedExports":[],"renderedLength":0},"C:/Projects/widget-common/dist/widget-common/full/esm2022/public_api.mjs":{"code":"/*\n * Public API Surface of widget-common\n */","originalLength":2386,"removedExports":[],"renderedExports":[],"renderedLength":45},"C:\\Projects\\widget-common\\dist\\widget-common\\full\\esm2022\\inspark-widget-common.mjs":{"code":"/**\n * Generated bundle index. Do not edit.\n */","originalLength":532,"removedExports":[],"renderedExports":[],"renderedLength":47}},"referencedFiles":[],"code":"import * as i0 from '@angular/core';\nimport { Injectable, Pipe, EventEmitter, Output, Input, ViewChild, ChangeDetectionStrategy, Component as Component$1, NgModule, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport * as i1$1 from '@angular/common';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport * as i1$2 from 'ng-inline-svg-2';\nimport { InlineSVGModule } from 'ng-inline-svg-2';\nimport * as i1 from '@angular/common/http';\nimport { FormsModule } from '@angular/forms';\nimport Cookies from 'js-cookie';\nimport * as i2 from 'ngx-echarts';\nimport { NgxEchartsDirective, NgxEchartsModule } from 'ngx-echarts';\nimport * as echarts from 'echarts';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { ToastModule } from 'primeng/toast';\nimport { MessageService } from 'primeng/api';\n\nvar CommunicationCommand;\n(function (CommunicationCommand) {\n CommunicationCommand[\"values\"] = \"values\";\n CommunicationCommand[\"params\"] = \"params\";\n CommunicationCommand[\"locale\"] = \"locale\";\n CommunicationCommand[\"theme\"] = \"theme\";\n CommunicationCommand[\"widget\"] = \"widget\";\n CommunicationCommand[\"resize\"] = \"resize\";\n CommunicationCommand[\"paramData\"] = \"paramData\";\n})(CommunicationCommand || (CommunicationCommand = {}));\nclass CommunicationService {\n constructor() {\n this.messageSource = {};\n this.message$ /*: Record<number, Observable<CommunicationValue>>*/ = {};\n this.cache = {};\n }\n create(id) {\n const _id = `${id}`.trim();\n if (!this.messageSource[_id]) {\n this.messageSource[_id] = new Subject();\n this.message$[_id] = this.messageSource[_id].asObservable();\n this.cache[_id] = {};\n }\n }\n next(widgetId, value) {\n const _id = `${widgetId}`.trim();\n this.create(_id);\n this.messageSource[_id].next(value);\n if (value.command) {\n this.cache[_id][value.command] = value;\n }\n }\n subscribe(widgetId, callback) {\n const _id = `${widgetId}`.trim();\n this.create(_id);\n if (this.cache[_id][CommunicationCommand.params]) {\n callback((this.cache[_id][CommunicationCommand.params]));\n }\n for (const k in this.cache[_id]) {\n if (this.cache[_id].hasOwnProperty(k)) {\n callback((this.cache[_id][k]));\n }\n }\n return this.message$[_id].subscribe(callback);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: CommunicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: CommunicationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: CommunicationService, decorators: [{\n type: Injectable\n }] });\n\nclass Common {\n constructor() {\n this.serviceUrl = '';\n }\n getWidgetPath(widget) {\n return `/assets/widgets/${widget.storeId}/`;\n }\n transformChartUrlConfig(param, isCalc = null, isSignal = null) {\n return '';\n }\n override(serviceUrl, transformChartUrlConfig, getWidgetPath) {\n this.serviceUrl = serviceUrl;\n this.transformChartUrlConfig = transformChartUrlConfig;\n this.getWidgetPath = getWidgetPath;\n }\n}\nconst common = new Common();\n\nconst WIDGET_CACHE = {};\nfunction updateWidgetMediaUrl(media, url) {\n const res = {};\n for (const key in media) {\n if (media.hasOwnProperty(key)) {\n res[key] = url + media[key];\n }\n }\n return res;\n}\n\nvar ITEM_TYPE;\n(function (ITEM_TYPE) {\n ITEM_TYPE[ITEM_TYPE[\"single\"] = 1] = \"single\";\n ITEM_TYPE[ITEM_TYPE[\"series\"] = 2] = \"series\";\n ITEM_TYPE[ITEM_TYPE[\"events\"] = 3] = \"events\";\n ITEM_TYPE[ITEM_TYPE[\"sysinfo\"] = 4] = \"sysinfo\";\n ITEM_TYPE[ITEM_TYPE[\"interval\"] = 5] = \"interval\";\n ITEM_TYPE[ITEM_TYPE[\"table\"] = 6] = \"table\";\n ITEM_TYPE[ITEM_TYPE[\"custom\"] = 7] = \"custom\";\n ITEM_TYPE[ITEM_TYPE[\"object\"] = 8] = \"object\";\n ITEM_TYPE[ITEM_TYPE[\"objstate\"] = 9] = \"objstate\";\n ITEM_TYPE[ITEM_TYPE[\"liftinfo\"] = 10] = \"liftinfo\";\n})(ITEM_TYPE || (ITEM_TYPE = {}));\n// нет контроля, норма, отклонение, критическое, хз todo Скорей всего нужно перенести в css\nconst STATE_COLORS = ['#FFFAFA', '#00e4c8', '#ffd452', '#c95e46', '#f71800', '#008B8B', '#5F9EA0'];\n// Типы параметров\nvar PARAM_TYPE;\n(function (PARAM_TYPE) {\n PARAM_TYPE[PARAM_TYPE[\"signal\"] = 1] = \"signal\";\n PARAM_TYPE[PARAM_TYPE[\"value\"] = 2] = \"value\";\n PARAM_TYPE[PARAM_TYPE[\"increment\"] = 3] = \"increment\";\n PARAM_TYPE[PARAM_TYPE[\"pulse_counter\"] = 4] = \"pulse_counter\";\n PARAM_TYPE[PARAM_TYPE[\"string\"] = 5] = \"string\";\n PARAM_TYPE[PARAM_TYPE[\"image\"] = 6] = \"image\";\n PARAM_TYPE[PARAM_TYPE[\"text\"] = 7] = \"text\";\n PARAM_TYPE[PARAM_TYPE[\"coordinates\"] = 8] = \"coordinates\";\n PARAM_TYPE[PARAM_TYPE[\"custom_string\"] = 11] = \"custom_string\";\n PARAM_TYPE[PARAM_TYPE[\"custom_archer\"] = 12] = \"custom_archer\";\n PARAM_TYPE[PARAM_TYPE[\"custom_external\"] = 13] = \"custom_external\";\n PARAM_TYPE[PARAM_TYPE[\"custom_file\"] = 14] = \"custom_file\";\n PARAM_TYPE[PARAM_TYPE[\"custom_json\"] = 15] = \"custom_json\";\n PARAM_TYPE[PARAM_TYPE[\"custom_select\"] = 16] = \"custom_select\";\n PARAM_TYPE[PARAM_TYPE[\"custom_forge\"] = 17] = \"custom_forge\";\n PARAM_TYPE[PARAM_TYPE[\"custom_dashboard\"] = 18] = \"custom_dashboard\";\n PARAM_TYPE[PARAM_TYPE[\"custom_objstate\"] = 19] = \"custom_objstate\";\n PARAM_TYPE[PARAM_TYPE[\"custom_fuxa\"] = 20] = \"custom_fuxa\";\n // группа виртуальных объектов для работы конфигуратора\n PARAM_TYPE[PARAM_TYPE[\"virtual_object\"] = 90] = \"virtual_object\";\n})(PARAM_TYPE || (PARAM_TYPE = {}));\nconst PARAM_TYPE_ITOS = {\n 1: 'param_type_signal',\n 2: 'param_type_value',\n 3: 'param_type_increment'\n};\n// Типы значений\nvar VALUE_TYPE;\n(function (VALUE_TYPE) {\n VALUE_TYPE[VALUE_TYPE[\"absolute\"] = 1] = \"absolute\";\n VALUE_TYPE[VALUE_TYPE[\"relative\"] = 2] = \"relative\";\n VALUE_TYPE[VALUE_TYPE[\"signal\"] = 3] = \"signal\";\n VALUE_TYPE[VALUE_TYPE[\"increment\"] = 4] = \"increment\";\n})(VALUE_TYPE || (VALUE_TYPE = {}));\n// Возможные пересечения типа параметров и типа значения\nconst INTERVAL_PARAM_VALUE = {\n [PARAM_TYPE.signal]: [VALUE_TYPE.signal],\n [PARAM_TYPE.value]: [VALUE_TYPE.absolute, VALUE_TYPE.relative],\n [PARAM_TYPE.increment]: [VALUE_TYPE.absolute, VALUE_TYPE.relative, VALUE_TYPE.increment]\n};\nconst SINGLE_PARAM_VALUE = {\n [PARAM_TYPE.signal]: [VALUE_TYPE.signal],\n [PARAM_TYPE.value]: [VALUE_TYPE.absolute, VALUE_TYPE.relative],\n [PARAM_TYPE.increment]: [VALUE_TYPE.absolute, VALUE_TYPE.relative]\n};\nvar SiteTheme;\n(function (SiteTheme) {\n SiteTheme[\"dark\"] = \"dark\";\n SiteTheme[\"light\"] = \"light\";\n})(SiteTheme || (SiteTheme = {}));\nvar PARAM_STATE;\n(function (PARAM_STATE) {\n PARAM_STATE[PARAM_STATE[\"falsevalue\"] = -1] = \"falsevalue\";\n PARAM_STATE[PARAM_STATE[\"none\"] = 0] = \"none\";\n PARAM_STATE[PARAM_STATE[\"success\"] = 1] = \"success\";\n PARAM_STATE[PARAM_STATE[\"warning\"] = 2] = \"warning\";\n PARAM_STATE[PARAM_STATE[\"error\"] = 3] = \"error\";\n PARAM_STATE[PARAM_STATE[\"maintenance\"] = 4] = \"maintenance\";\n})(PARAM_STATE || (PARAM_STATE = {}));\nconst PARAM_STATE_INT = [];\nPARAM_STATE_INT['-1'] = 'falsevalue';\nPARAM_STATE_INT[0] = 'none';\nPARAM_STATE_INT[1] = 'success';\nPARAM_STATE_INT[2] = 'warning';\nPARAM_STATE_INT[3] = 'error';\nPARAM_STATE_INT[4] = 'maintenance';\nvar SeriesDuration;\n(function (SeriesDuration) {\n SeriesDuration[\"day\"] = \"day\";\n SeriesDuration[\"week\"] = \"week\";\n SeriesDuration[\"month\"] = \"month\";\n})(SeriesDuration || (SeriesDuration = {}));\n// Тип ленты событий\nvar LineType;\n(function (LineType) {\n LineType[LineType[\"eventlog\"] = 1] = \"eventlog\";\n LineType[LineType[\"setvaluelog\"] = 2] = \"setvaluelog\";\n LineType[LineType[\"commandlog\"] = 3] = \"commandlog\";\n})(LineType || (LineType = {}));\nvar ChartTypes;\n(function (ChartTypes) {\n ChartTypes[\"lineChart\"] = \"lineChart\";\n ChartTypes[\"candlestickBarChart\"] = \"candlestickBarChart\";\n ChartTypes[\"stackedAreaChart\"] = \"stackedAreaChart\";\n ChartTypes[\"histogramChart\"] = \"histogramChart\";\n ChartTypes[\"pieChart\"] = \"pieChart\";\n ChartTypes[\"intervalPieChart\"] = \"intervalPieChart\";\n})(ChartTypes || (ChartTypes = {}));\nvar ChartViews;\n(function (ChartViews) {\n ChartViews[\"lineChart\"] = \"lineChart\";\n ChartViews[\"lineWeekend\"] = \"lineWeekend\";\n ChartViews[\"candlestickBarChart\"] = \"candlestickBarChart\";\n ChartViews[\"stackedAreaChart\"] = \"stackedAreaChart\";\n ChartViews[\"histogramChart\"] = \"histogramChart\";\n ChartViews[\"pieChart\"] = \"pieChart\";\n})(ChartViews || (ChartViews = {}));\nconst ChartViewToType = {\n [ChartViews.lineChart]: ChartTypes.lineChart,\n [ChartViews.candlestickBarChart]: ChartTypes.candlestickBarChart,\n [ChartViews.stackedAreaChart]: ChartTypes.stackedAreaChart,\n [ChartViews.histogramChart]: ChartTypes.histogramChart,\n [ChartViews.lineWeekend]: ChartTypes.lineChart,\n};\nconst ChartTypeToView = {\n [ChartTypes.lineChart]: ChartViews.lineChart,\n [ChartTypes.candlestickBarChart]: ChartViews.candlestickBarChart,\n [ChartTypes.stackedAreaChart]: ChartViews.stackedAreaChart,\n [ChartTypes.histogramChart]: ChartViews.histogramChart,\n};\nvar WidgetCustomFieldType;\n(function (WidgetCustomFieldType) {\n WidgetCustomFieldType[WidgetCustomFieldType[\"boolean\"] = 0] = \"boolean\";\n WidgetCustomFieldType[WidgetCustomFieldType[\"dashboardLink\"] = 1] = \"dashboardLink\";\n WidgetCustomFieldType[WidgetCustomFieldType[\"string\"] = 2] = \"string\";\n})(WidgetCustomFieldType || (WidgetCustomFieldType = {}));\nvar DashboardType;\n(function (DashboardType) {\n DashboardType[\"WEB\"] = \"WEB\";\n DashboardType[\"MOBILE\"] = \"MOBILE\";\n DashboardType[\"ANALYTIC\"] = \"ANALYTIC\";\n})(DashboardType || (DashboardType = {}));\nvar ControllerState;\n(function (ControllerState) {\n ControllerState[\"ONLINE\"] = \"ONLINE\";\n ControllerState[\"OFFLINE\"] = \"OFFLINE\";\n})(ControllerState || (ControllerState = {}));\n// Обертка для среды разработки\nconst Component = (opts) => {\n return (component) => {\n return component;\n };\n};\n\nconst _ = (str) => str;\nclass WidgetComponent {\n onInit(container) {\n this.container = container;\n }\n onDestroy() {\n }\n onResize(width, height) {\n this.width = width;\n this.height = height;\n }\n onRender(values) {\n }\n onUpdate(values) {\n }\n}\nclass WidgetComponentContainer {\n constructor() {\n this.CHART_TYPES = ChartTypes;\n this.VALUE_TYPE = VALUE_TYPE;\n }\n urlExport() {\n return '';\n }\n paramCancel(par) {\n }\n paramEdit(par) {\n }\n paramSave(par) {\n }\n getIconUrl(par) {\n return '';\n }\n setManual(par, value) {\n }\n}\n\nclass FilterIndexOfPipe {\n transform(array, field, search) {\n return array.filter(val => {\n return val[field].indexOf(search) !== -1;\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: FilterIndexOfPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: FilterIndexOfPipe, isStandalone: true, name: \"filterIndexOf\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: FilterIndexOfPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'filterIndexOf', standalone: true }]\n }] });\nclass PeriodFromDatePipe {\n transform(count, period) {\n switch (period) {\n case 'now':\n return Utils.getDate();\n case 'day':\n return Utils.getDay(count);\n case 'week':\n return Utils.getWeek(count);\n case 'month':\n return Utils.getMonth(count);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PeriodFromDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: PeriodFromDatePipe, isStandalone: true, name: \"periodFromDate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PeriodFromDatePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'periodFromDate', standalone: true }]\n }] });\nclass ArrayNumberPipe {\n transform(value, args = []) {\n return Array(value).fill(1).map((x, i) => i + 1);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ArrayNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: ArrayNumberPipe, isStandalone: true, name: \"arrayNumber\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ArrayNumberPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'arrayNumber', standalone: true }]\n }] });\nclass MakePictureUrl {\n transform(id) {\n if (id === -1) {\n return 'data:image/gif;base64,R0lGODlhZABkAIAAAP///ztXpyH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkNCMTBEMjc5NDJCMjExRTlCOTY0Q0MxNURGQkREMDc0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkNCMTBEMjdBNDJCMjExRTlCOTY0Q0MxNURGQkREMDc0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Q0IxMEQyNzc0MkIyMTFFOUI5NjRDQzE1REZCREQwNzQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Q0IxMEQyNzg0MkIyMTFFOUI5NjRDQzE1REZCREQwNzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQAAAAAACwAAAAAZABkAAAC/4SPqcvtD6MLtNqLs968+58Z4EiWpime6sqOaQvH8CvXNkjf+m7l/G/zAYctIfGIAiCXKyPzuXFCpz0l9aqRYqHaLbPrRYLDxDEZaD7z0modux20wrny+bduF+Pz5T0f7fe3FijoRlgYh9inOPTGSOL4iHMoyRJZ2XGJGUW5meSZCCqjKVpVGkN6GpB6ylrqKgoLKutJu2mLiVupK8n76MsIrCiMSFxoLIj8p8zHnOdsBz0nDUfdZq2GfaZNxh3m7QW+JY5FfmVOhT6lTqda1OnOwf40fxffBH8fkq9/Ub/0T0+/TwMh8Su46mDBgEcYLkI4CWJEiR4cNlI40CIgig0VMfaTADKkyJEkDRQAADs=';\n }\n else {\n return common.serviceUrl + `/db/icon/${id}/img`;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakePictureUrl, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: MakePictureUrl, isStandalone: true, name: \"makePictureUrl\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakePictureUrl, decorators: [{\n type: Pipe,\n args: [{ name: 'makePictureUrl', standalone: true }]\n }] });\nclass MakeIconUrl {\n transform(id) {\n if (id === -1) {\n return '/assets/icon.svg';\n }\n else {\n return common.serviceUrl + `/db/icon/${id}/img`;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeIconUrl, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeIconUrl, isStandalone: true, name: \"makeIconUrl\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeIconUrl, decorators: [{\n type: Pipe,\n args: [{ name: 'makeIconUrl', standalone: true }]\n }] });\n/**\n * @deprecated\n */\nclass MakeChartUrl {\n transform(id, isCalc, isSignal = false) {\n return common.transformChartUrlConfig(id, isCalc, isSignal);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeChartUrl, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeChartUrl, isStandalone: true, name: \"makeChartUrl\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: MakeChartUrl, decorators: [{\n type: Pipe,\n args: [{ name: 'makeChartUrl', standalone: true }]\n }] });\nclass ChartUrl {\n transform(param) {\n return common.transformChartUrlConfig(param);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ChartUrl, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: ChartUrl, isStandalone: true, name: \"chartUrl\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ChartUrl, decorators: [{\n type: Pipe,\n args: [{ name: 'chartUrl', standalone: true }]\n }] });\nfunction assignValues(inputValues, params, viewConfig, path = []) {\n const result = {};\n for (const key in inputValues) {\n if (inputValues.hasOwnProperty(key)) {\n const item = inputValues[key];\n const itemPath = [...path, key];\n const refName = itemPath.join('.');\n if (item.items) {\n const param = params.find(val => val.refName === itemPath.join('.'));\n const cfg = getConfig$1(viewConfig, refName);\n if (item.items instanceof Array) {\n result[key] = {\n items: assignValuesArray(item.items, params, viewConfig, itemPath, item.param_type),\n viewConfig: cfg,\n files: cfg.files ? cfg.files : null,\n custom_data: item.custom_data\n };\n }\n else {\n result[key] = {\n ...assignValues(item.items, params, viewConfig, itemPath),\n refName,\n viewConfig: cfg,\n files: cfg.files ? cfg.files : null,\n custom_data: item.custom_data\n };\n }\n if (param && param.config && result[key]) {\n result[key].config = param.config;\n }\n }\n else {\n result[key] = assignValue(item, itemPath, params, viewConfig);\n }\n }\n }\n return result;\n}\nfunction validateArcherParams(variables) {\n const errors = [];\n const forbiddenNames = ['viewConfig', 'title', 'config', 'files'];\n forbiddenNames.forEach(name => {\n if (variables.find(item => item.name === name)) {\n errors.push(name);\n }\n });\n return errors;\n}\nfunction getConfig$1(viewConfig, refName) {\n return viewConfig[refName] ? viewConfig[refName] : {};\n}\nfunction assignValuesArray(inputValues, params, viewConfigs, path = [], paramType = PARAM_TYPE.value) {\n let result = [];\n const sPath = path.join('.');\n const inputValue = inputValues[0];\n params.forEach(val => {\n const valPath = val.refName.split('.');\n const ind = valPath.splice(valPath.length - 1, 1);\n const pType = inputValue.param_type ?? paramType;\n if (valPath.join('.') === sPath) {\n const viewConfig = getConfig$1(viewConfigs, val.refName);\n if (val.itemType === ITEM_TYPE.custom) {\n let value;\n if (pType === PARAM_TYPE.custom_json) {\n try {\n value = JSON.parse(val.config.value);\n }\n catch (e) {\n value = {};\n }\n }\n else {\n value = val.config.value;\n }\n if (pType === PARAM_TYPE.virtual_object) {\n result[ind] = assignValues(inputValue, params, viewConfigs, [...path, ...ind]);\n }\n else {\n result[ind] = { ...val, data: null, value, viewConfig };\n }\n }\n else {\n const value = (val.itemType === ITEM_TYPE.single && val?.device?.param?.value) ? val.device.param.value : null;\n result[ind] = { ...val, data: value, value, viewConfig };\n }\n }\n });\n result = result.filter(val => val);\n return result;\n}\nfunction assignValue(item, itemPath, params, viewConfigs) {\n const path = itemPath.join('.');\n if (item.item_type === ITEM_TYPE.table) {\n const itemValues = [];\n let rows = 0, cols = 0;\n const itemTable = params.find(param => param.refName === path);\n params.forEach((param) => {\n if (param.refName.indexOf(path) === 0) {\n const path = param.refName.split('.');\n const i = parseInt(path[path.length - 2]) - 1;\n const j = parseInt(path[path.length - 1]) - 1;\n if (!itemValues[i]) {\n itemValues[i] = [];\n }\n itemValues[i][j] = {\n ...param,\n data: null,\n value: null,\n custom: {},\n config: {},\n viewConfig: getConfig$1(viewConfigs, path.join('.')),\n custom_data: item.custom_data,\n };\n if (i > rows) {\n rows = i;\n }\n if (j > cols) {\n cols = j;\n }\n }\n });\n const res = {\n ...itemTable,\n values: itemValues,\n viewConfig: getConfig$1(viewConfigs, path),\n custom_data: item.custom_data,\n };\n return res;\n }\n else {\n const param = params.find(val => val.refName === path);\n if (param && param.config) {\n const viewConfig = getConfig$1(viewConfigs, path);\n if (item.item_type === ITEM_TYPE.custom) {\n let value;\n if (item.param_type === PARAM_TYPE.custom_json) {\n try {\n value = JSON.parse(param.config.value);\n }\n catch (e) {\n value = {};\n }\n }\n else if (item.param_type === PARAM_TYPE.custom_fuxa) {\n value = param.value;\n }\n else {\n value = param.config.value;\n }\n return {\n ...param,\n data: null,\n value,\n custom_data: item.custom_data,\n viewConfig,\n custom: {}\n };\n }\n else {\n const value = (param.itemType === ITEM_TYPE.single && param?.device?.param?.value) ? param.device.param.value : null;\n return {\n ...param,\n data: value,\n value,\n custom_data: item.custom_data,\n viewConfig,\n custom: {}\n };\n }\n }\n else {\n return { data: null };\n }\n }\n}\nfunction clearParams(params) {\n for (let i = 0; i < params.length; i++) {\n params[i].value = null;\n if (params[i].items) {\n clearParams(params[i].items);\n }\n }\n}\nfunction findParam(params, refname) {\n for (let i = 0; i < params.length; i++) {\n if (params[i].name === refname) {\n return params[i];\n }\n if (params[i].items) {\n const param = findParam(params[i].items, refname);\n if (param) {\n return param;\n }\n }\n }\n return null;\n}\nfunction createParamList(params, itemType = ITEM_TYPE.single, paramType = PARAM_TYPE.value, path = [], parent = null) {\n const result = [];\n if (params instanceof Array) {\n const item = params[0];\n const pItemType = item.item_type || itemType;\n const pParamType = item.param_type || paramType;\n if (pParamType === PARAM_TYPE.virtual_object) {\n const itemPath = [...path, 1];\n result.push(createParam(item, itemPath, pItemType, pParamType, item));\n }\n else {\n const itemPath = [...path, 1];\n result.push({\n name: itemPath.join('.'),\n title: 'Item 1',\n views: item.views,\n itemType: pItemType,\n paramType: pParamType,\n parent,\n config: null,\n generateConfig: { count: 3, param: true, data: true },\n param: item,\n });\n }\n }\n else {\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n const item = params[key];\n const pItemType = item.item_type || itemType;\n const pParamType = item.param_type || paramType;\n const itemPath = [...path, key];\n if (params[key].items) {\n result.push(createParam(item, itemPath, pItemType, pParamType, parent));\n }\n else {\n if (pItemType === ITEM_TYPE.table) {\n result.push({\n name: itemPath.join('.'),\n views: item.views,\n title: item.title,\n itemType: pItemType,\n paramType: pParamType,\n parent,\n param: params[key],\n viewConfig: {\n rows: 1,\n cols: 1,\n colsName: ['Col 1'],\n rowsName: ['Row 1'],\n visibleRow: true,\n visibleCol: true,\n table: {\n visibleRow: true,\n visibleCol: true,\n colConfig: [{ name: '' }, { name: 'Col 1' }],\n rowConfig: [{ name: 'Row 1' }],\n }\n },\n config: {},\n generateConfig: {\n data: true,\n param: true,\n rows: 2,\n columns: 2,\n visibleCol: true,\n visibleRow: true,\n }\n });\n }\n else {\n let config = {};\n if (ITEM_TYPE.series === pItemType) {\n config = { count: 0, charttype: ChartTypes.lineChart, duration: SeriesDuration.day };\n }\n result.push({\n name: itemPath.join('.'),\n title: item.title,\n views: item.views,\n itemType: pItemType,\n paramType: pParamType,\n parent,\n config,\n param: params[key],\n generateConfig: { data: true, param: true }\n });\n }\n }\n }\n }\n }\n return result;\n}\nfunction createParam(item, itemPath, itemType, paramType, parent) {\n let config = {};\n if (ITEM_TYPE.series === itemType) {\n config = { count: 0, charttype: ChartTypes.lineChart, duration: SeriesDuration.day };\n }\n const res = {\n name: itemPath.join('.'),\n title: _(item.title),\n itemType,\n paramType,\n parent,\n views: item.views,\n config,\n generateConfig: { count: 3, param: true, data: true },\n param: item,\n };\n if (item.items) {\n res.items = createParamList(item.items, itemType, paramType, itemPath, res);\n if (item.items instanceof Array) {\n res.isArray = true;\n if (item.items[0].max) {\n res.maxItems = item.items[0].max;\n }\n }\n }\n else if (paramType === PARAM_TYPE.virtual_object) {\n res.items = createParamList(item, itemType, paramType, itemPath, res);\n }\n return res;\n}\nfunction createGenerateItemConfig() {\n return {\n pageLink: false,\n isOnline: true,\n data: true,\n param: true,\n borders: false,\n editable: false,\n paragraphCount: 1,\n isWorkingDevice: true,\n title: 'Title param',\n ctrability: true,\n archer: {}\n };\n}\nfunction addArrayItem(parent) {\n if (parent.paramType === PARAM_TYPE.virtual_object) {\n parent.items.push({\n ...updateIndex(clearValue(deepClone(parent.items[0])), parent.items[0].name, [parent.name, parent.items.length + 1].join('.')),\n name: [parent.name, parent.items.length + 1].join('.'),\n title: `Item ${parent.items.length + 1}`,\n parent: parent,\n });\n }\n else {\n parent.items.push({\n name: [parent.name, parent.items.length + 1].join('.'),\n title: `Item ${parent.items.length + 1}`,\n itemType: parent.itemType,\n paramType: parent.paramType,\n parent: parent,\n config: {}\n });\n }\n}\nfunction deepClone(obj, map = new WeakMap()) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof RegExp) {\n return new RegExp(obj);\n }\n if (map.has(obj)) {\n return map.get(obj);\n }\n const result = Array.isArray(obj) ? [] : {};\n map.set(obj, result);\n for (const key of Object.keys(obj)) {\n result[key] = deepClone(obj[key], map);\n }\n return result;\n}\nfunction clearValue(param) {\n param.value = undefined;\n if (param.items) {\n param.items = param.items.map((p) => clearValue(p));\n if (param.isArray && param.paramType !== PARAM_TYPE.virtual_object) {\n param.items = param.items.slice(0, 1);\n }\n }\n return param;\n}\nfunction updateIndex(param, oldName, newName) {\n param.name = param.name.replace(oldName, newName);\n if (param.items) {\n param.items = param.items.map((p) => updateIndex(p, oldName, newName));\n if (param.isArray && param.paramType !== PARAM_TYPE.virtual_object) {\n param.items = param.items.slice(0, 1);\n }\n }\n return param;\n}\nfunction convertArcherToItem(item, param) {\n return {\n name: (param.name || param.refName) + '.' + item.name,\n title: item.title ? item.title : item.name,\n itemType: ITEM_TYPE.single,\n paramType: PARAM_TYPE.value,\n parent: param,\n config: {},\n generateConfig: {\n count: 3, param: true, data: true\n }\n };\n}\nfunction prepareExternalJSON(json) {\n for (const k in json) {\n if (json.hasOwnProperty(k)) {\n if (json[k].item_type && typeof json[k].item_type === 'string') {\n json[k].item_type = ITEM_TYPE[json[k].item_type];\n }\n if (json[k].param_type && typeof json[k].param_type === 'string') {\n json[k].param_type = PARAM_TYPE[json[k].param_type];\n }\n if (json[k].items) {\n json[k].items = prepareExternalJSON(json[k].items);\n }\n }\n }\n return json;\n}\nclass Utils {\n static getDate(ts = Date.now()) {\n const d = new Date(ts);\n const dd = d.getDate();\n const mm = d.getMonth() + 1;\n const yyyy = d.getFullYear();\n return ('0' + dd).slice(-2) + '/' + ('0' + mm).slice(-2) + '/' + yyyy;\n }\n static getDay(num) {\n const d = new Date();\n d.setDate(d.getDate() - num);\n const dd = d.getDate();\n const mm = d.getMonth() + 1;\n const yyyy = d.getFullYear();\n return ('0' + dd).slice(-2) + '/' + ('0' + mm).slice(-2) + '/' + yyyy;\n }\n static getWeek(num) {\n const d = new Date();\n const day = d.getDay();\n if (day === 0) {\n num++;\n }\n const firstDay = new Date();\n firstDay.setDate(d.getDate() - day - num * 7 + 1);\n const lastDay = new Date();\n if (num > 0) {\n lastDay.setDate(d.getDate() - day - (num - 1) * 7);\n }\n return ('0' + firstDay.getDate()).slice(-2) + '/' + ('0' + (firstDay.getMonth() + 1)).slice(-2) + '/' + firstDay.getFullYear() + ' - ' +\n ('0' + lastDay.getDate()).slice(-2) + '/' + ('0' + (lastDay.getMonth() + 1)).slice(-2) + '/' + lastDay.getFullYear();\n }\n static getMonth(num) {\n const d = new Date();\n d.setMonth(d.getMonth() - num);\n const dd = d.getDate();\n const mm = d.getMonth();\n const yyyy = d.getFullYear();\n const firstDay = new Date(yyyy, mm, 1);\n const lastDay = new Date(yyyy, mm + 1, 0);\n return ('0' + firstDay.getDate()).slice(-2) + '/' + ('0' + (firstDay.getMonth() + 1)).slice(-2) + '/' + firstDay.getFullYear() + ' - ' +\n ('0' + lastDay.getDate()).slice(-2) + '/' + ('0' + (lastDay.getMonth() + 1)).slice(-2) + '/' + lastDay.getFullYear();\n }\n static getTime(ts) {\n let d;\n if (typeof ts === 'undefined') {\n d = new Date();\n }\n else {\n d = new Date(ts);\n }\n const hh = d.getHours();\n const mm = d.getMinutes();\n return ('0' + hh).slice(-2) + ':' + ('0' + mm).slice(-2);\n }\n}\n\n/// <reference types=\"forge-viewer\" />\nclass ViewerEventArgs {\n}\nclass AggregationSelectionChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT;\n }\n}\nclass AnimationReadyEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.ANIMATION_READY_EVENT;\n }\n}\nclass CameraChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.CAMERA_CHANGE_EVENT;\n }\n}\nclass CutplanesChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.CUTPLANES_CHANGE_EVENT;\n }\n}\nclass EscapeEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.ESCAPE_EVENT;\n }\n}\nclass ExplodeChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.EXPLODE_CHANGE_EVENT;\n }\n}\nclass ExtensionLoadedUnloadedEventArgs extends ViewerEventArgs {\n}\nclass ExtensionLoadedEventArgs extends ExtensionLoadedUnloadedEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.EXTENSION_LOADED_EVENT;\n }\n}\nclass ExtensionUnloadedEventArgs extends ExtensionLoadedUnloadedEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.EXTENSION_UNLOADED_EVENT;\n }\n}\nclass FinalFrameRenderedChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.FINAL_FRAME_RENDERED_CHANGED_EVENT;\n }\n}\nclass FitToViewEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.FIT_TO_VIEW_EVENT;\n }\n}\nclass FragmentsLoadedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.FRAGMENTS_LOADED_EVENT;\n }\n}\nclass FullscreenEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.FULLSCREEN_MODE_EVENT;\n }\n}\nclass GeometryLoadedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.GEOMETRY_LOADED_EVENT;\n }\n}\nclass HideEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.HIDE_EVENT;\n }\n}\nclass HyperlinkEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.HYPERLINK_EVENT;\n }\n}\nclass IsolateEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.ISOLATE_EVENT;\n }\n}\nclass LayerVisibilityEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.LAYER_VISIBILITY_CHANGED_EVENT;\n }\n}\nclass LoadMissingGeometryEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.LOAD_MISSING_GEOMETRY;\n }\n}\nclass ModelRootLoadedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT;\n }\n}\nclass ModelUnloadedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.MODEL_UNLOADED_EVENT;\n }\n}\nclass NavigationModeChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.NAVIGATION_MODE_CHANGED_EVENT;\n }\n}\nclass ObjectTreeEventArgs extends ViewerEventArgs {\n}\nclass ObjectTreeCreatedEventArgs extends ObjectTreeEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT;\n }\n}\nclass ObjectTreeUnavailableEventArgs extends ObjectTreeEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.OBJECT_TREE_UNAVAILABLE_EVENT;\n }\n}\nclass PrefEventArgs extends ViewerEventArgs {\n}\nclass PrefChangedEventArgs extends PrefEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.PREF_CHANGED_EVENT;\n }\n}\nclass PrefResetEventArgs extends PrefEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.PREF_RESET_EVENT;\n }\n}\nclass ProgressUpdateEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.PROGRESS_UPDATE_EVENT;\n }\n}\nclass RenderOptionChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT;\n }\n}\nclass RenderPresentedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.RENDER_PRESENTED_EVENT;\n }\n}\nclass ResetEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.RESET_EVENT;\n }\n}\nclass RestoreDefaultSettingsEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.RESTORE_DEFAULT_SETTINGS_EVENT;\n }\n}\nclass SelectionChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.SELECTION_CHANGED_EVENT;\n }\n}\nclass ShowEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.SHOW_EVENT;\n }\n}\nclass TexturesLoadedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.TEXTURES_LOADED_EVENT;\n }\n}\nclass ToolChangedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.TOOL_CHANGE_EVENT;\n }\n}\nclass ViewerInitializedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.VIEWER_INITIALIZED;\n }\n}\nclass ViewerResizeEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.VIEWER_RESIZE_EVENT;\n }\n}\nclass ViewerStateRestoredEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.VIEWER_STATE_RESTORED_EVENT;\n }\n}\nclass ViewerUnInitializedEventArgs extends ViewerEventArgs {\n constructor() {\n super(...arguments);\n this.type = Autodesk.Viewing.VIEWER_UNINITIALIZED;\n }\n}\n/**\n * Base extension that all other extensions can inherit from\n */\nclass Extension {\n static { this.extensionName = ''; }\n static registerExtension(extensionName, extension) {\n Autodesk.Viewing.theExtensionManager.registerExtension(extensionName, extension);\n }\n static unregisterExtension(extensionName) {\n Autodesk.Viewing.theExtensionManager.unregisterExtension(extensionName);\n }\n constructor(viewer, options) {\n this.viewer = undefined;\n this.extOptions = undefined;\n this.eventArgsTypeMap = {};\n this.viewer = viewer;\n this.extOptions = options;\n this.registerEventTypes();\n }\n /** Register event args types that we will cast to 'proper' objects */\n registerEventTypes() {\n // tslint:disable:max-line-length\n this.eventArgsTypeMap[Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT] = AggregationSelectionChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.ANIMATION_READY_EVENT] = AnimationReadyEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.CAMERA_CHANGE_EVENT] = CameraChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.CUTPLANES_CHANGE_EVENT] = CutplanesChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.ESCAPE_EVENT] = EscapeEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.EXPLODE_CHANGE_EVENT] = ExplodeChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.EXTENSION_LOADED_EVENT] = ExtensionLoadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.EXTENSION_UNLOADED_EVENT] = ExtensionUnloadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.FINAL_FRAME_RENDERED_CHANGED_EVENT] = FinalFrameRenderedChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.FIT_TO_VIEW_EVENT] = FitToViewEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.FRAGMENTS_LOADED_EVENT] = FragmentsLoadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.FULLSCREEN_MODE_EVENT] = FullscreenEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.GEOMETRY_LOADED_EVENT] = GeometryLoadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.HIDE_EVENT] = HideEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.HYPERLINK_EVENT] = HyperlinkEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.ISOLATE_EVENT] = IsolateEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.LAYER_VISIBILITY_CHANGED_EVENT] = LayerVisibilityEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.LOAD_MISSING_GEOMETRY] = LoadMissingGeometryEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT] = ModelRootLoadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.MODEL_UNLOADED_EVENT] = ModelUnloadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.NAVIGATION_MODE_CHANGED_EVENT] = NavigationModeChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT] = ObjectTreeCreatedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.OBJECT_TREE_UNAVAILABLE_EVENT] = ObjectTreeUnavailableEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.PREF_CHANGED_EVENT] = PrefChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.PREF_RESET_EVENT] = PrefResetEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.PROGRESS_UPDATE_EVENT] = ProgressUpdateEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT] = RenderOptionChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.RENDER_PRESENTED_EVENT] = RenderPresentedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.RESET_EVENT] = ResetEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.RESTORE_DEFAULT_SETTINGS_EVENT] = RestoreDefaultSettingsEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.SELECTION_CHANGED_EVENT] = SelectionChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.SHOW_EVENT] = ShowEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.TEXTURES_LOADED_EVENT] = TexturesLoadedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.TOOL_CHANGE_EVENT] = ToolChangedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_INITIALIZED] = ViewerInitializedEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_RESIZE_EVENT] = ViewerResizeEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_STATE_RESTORED_EVENT] = ViewerStateRestoredEventArgs;\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_UNINITIALIZED] = ViewerUnInitializedEventArgs;\n // tslint:enable:max-line-length\n }\n /** Cast Viewer event args to class */\n castArgs(args) {\n if (Array.isArray(args)) {\n return args.map(this.castArgs);\n }\n if (!args || typeof args !== 'object' || !args.hasOwnProperty('type')) {\n // Can't cast this object\n return args;\n }\n // Create new object of appropriate type\n const clazz = this.eventArgsTypeMap[args.type];\n const typedItem = Object.create(clazz.prototype);\n // Cast any properties\n for (const k of Object.keys(args)) {\n typedItem[k] = this.castArgs(args[k]);\n }\n return typedItem;\n }\n}\n\nclass ParamAssignExtension extends Extension {\n constructor(viewer, options) {\n super(viewer, options);\n this._enabled = false;\n this._frags = {};\n this.labels = [];\n this.container = null;\n this._group = null;\n this._button = null;\n this._icons = options.icons || [];\n this.options = options;\n }\n static { this.extensionName = 'ParamAssignExtension'; }\n static { this.callback = null; }\n static registerExtension(extensionName, callback) {\n ParamAssignExtension.callback = callback;\n super.registerExtension(ParamAssignExtension.extensionName, ParamAssignExtension);\n }\n activate() {\n return true;\n }\n deactivate() {\n return true;\n }\n load() {\n this.container = this.viewer.clientContainer;\n this._enabled = true;\n if (this.viewer.model && this.viewer.model.getInstanceTree()) {\n this.customize();\n }\n else {\n this.viewer.addEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT, this.customize.bind(this));\n }\n if (ParamAssignExtension.callback) {\n ParamAssignExtension.callback(this);\n }\n return true;\n }\n unload() {\n // Clean our UI elements if we added any\n if (this._group) {\n this._group.removeControl(this._button);\n if (this._group.getNumberOfControls() === 0) {\n this.viewer.toolbar.removeControl(this._group);\n }\n }\n return true;\n }\n customize() {\n this.showIcons();\n const updateIconsCallback = () => {\n this.updateIcons();\n };\n this.viewer.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT, updateIconsCallback);\n this.viewer.addEventListener(Autodesk.Viewing.ISOLATE_EVENT, updateIconsCallback);\n this.viewer.addEventListener(Autodesk.Viewing.HIDE_EVENT, updateIconsCallback);\n this.viewer.addEventListener(Autodesk.Viewing.SHOW_EVENT, updateIconsCallback);\n }\n showIcons() {\n const $viewer = this.container.querySelector('.adsk-viewing-viewer');\n const element = this.container.querySelector('label.markup');\n // remove previous...\n if (element) {\n element.remove();\n }\n this.labels = [];\n // do we have anything to show?\n if (this._icons === undefined || this._icons === null) {\n return;\n }\n // do we have access to the instance tree?\n const tree = this.viewer.model && this.viewer.model.getInstanceTree();\n if (tree === undefined) {\n return;\n }\n const onClick = (e) => {\n // this.viewer.select($(e.currentTarget).data('id'));\n // this.viewer.utilities.fitToView();\n };\n this._frags = {};\n for (let i = 0; i < this._icons.length; i++) {\n // we need to collect all the fragIds for a given dbId\n const icon = this._icons[i];\n this._frags['dbId' + icon.dbId] = [];\n const $label = document.createElement('label');\n $label.setAttribute('data-id', '' + icon.dbId);\n $label.className = 'markup update';\n $label.style.setProperty('display', this.viewer.isNodeVisible(icon.dbId) ? 'block' : 'none');\n $label.style.setProperty('position', 'absolute');\n $label.style.setProperty('white-space', 'nowrap');\n $label.style.setProperty('cursor', 'pointer');\n $label.style.setProperty('z-index', '1');\n $label.addEventListener('click', this.options.onClick || onClick);\n $label.appendChild(icon.element);\n $viewer.appendChild($label);\n // now collect the fragIds\n const getChildren = (topParentId, dbId) => {\n if (tree.getChildCount(dbId) === 0) {\n getFrags(topParentId, dbId);\n } // get frags for this leaf child\n tree.enumNodeChildren(dbId, (childId) => {\n getChildren(topParentId, childId);\n });\n };\n const getFrags = (topParentId, dbId) => {\n tree.enumNodeFragments(dbId, (fragId) => {\n this._frags['dbId' + topParentId].push(fragId);\n });\n };\n getChildren(icon.dbId, icon.dbId);\n this.labels.push({ id: icon.dbId, label: $label });\n }\n this.updateIcons(); // re-position for each fragId found\n }\n getModifiedWorldBoundingBox(dbId) {\n const fragList = this.viewer.model.getFragmentList();\n const nodebBox = new THREE.Box3();\n // for each fragId on the list, get the bounding box\n for (const fragId of this._frags['dbId' + dbId]) {\n const fragbBox = new THREE.Box3();\n fragList.getWorldBounds(fragId, fragbBox);\n nodebBox.union(fragbBox); // create a unifed bounding box\n }\n return nodebBox;\n }\n updateIcons() {\n for (let i = 0; i < this.labels.length; i++) {\n const pos = this.viewer.worldToClient(this.getModifiedWorldBoundingBox(this.labels[i].id).getCenter());\n const label = this.labels[i].label;\n label.style.setProperty('left', Math.floor(pos.x - label.offsetWidth / 2) + 'px');\n label.style.setProperty('top', Math.floor(pos.y - label.offsetHeight / 2) + 'px');\n label.style.setProperty('display', this.viewer.isNodeVisible(this.labels[i].id) ? 'block' : 'none');\n }\n }\n}\n\nconst ScriptStore = [\n { name: 'viewer', src: 'https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js' },\n];\nconst StyleStore = [\n { name: 'viewer', src: 'https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css' },\n];\nlet promiseLoad = null;\nlet isLoadedStyles = false;\nclass ScriptService {\n constructor() {\n this.scripts = {};\n this.styles = {};\n ScriptStore.forEach((script) => {\n this.scripts[script.name] = {\n loaded: false,\n src: script.src\n };\n });\n }\n loadStyles() {\n if (!isLoadedStyles) {\n isLoadedStyles = true;\n StyleStore.forEach(style => {\n const el = document.createElement('link');\n el.rel = 'stylesheet';\n el.href = style.src;\n el.type = 'text/css';\n document.getElementsByTagName('head')[0].appendChild(el);\n });\n }\n }\n load(...scripts) {\n if (!promiseLoad) {\n promiseLoad = new Promise((resolve, reject) => {\n const promises = [];\n scripts.forEach((script) => promises.push(this.loadScript(script)));\n Promise.all(promises).then(data => {\n resolve(data);\n });\n });\n }\n return promiseLoad;\n }\n loadScript(name) {\n return new Promise((resolve, reject) => {\n if (this.scripts[name].loaded) {\n resolve({ script: name, loaded: true, status: 'Already Loaded' });\n }\n else {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = this.scripts[name].src;\n if (script.readyState) { // IE\n script.onreadystatechange = () => {\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n script.onreadystatechange = null;\n this.scripts[name].loaded = true;\n resolve({ script: name, loaded: true, status: 'Loaded' });\n }\n };\n }\n else { // Others\n script.onload = () => {\n this.scripts[name].loaded = true;\n resolve({ script: name, loaded: true, status: 'Loaded' });\n };\n }\n script.onerror = (error) => resolve({ script: name, loaded: false, status: 'Loaded' });\n document.getElementsByTagName('head')[0].appendChild(script);\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ScriptService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ScriptService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ScriptService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n\n/**\n * Интеграция с Autodesk Forge Viewer\n */\n/// <reference types=\"forge-viewer\" />\nclass ForgeComponent {\n constructor(http, cdr, ngZone, scripts) {\n this.http = http;\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.scripts = scripts;\n this.urn = '';\n this.labels = [];\n this.onReady = new EventEmitter();\n }\n ngOnInit() {\n this.scripts.load('viewer').then(data => {\n this.launchViewer(this.urn);\n }).catch(error => console.log(error));\n this.scripts.loadStyles();\n }\n ngOnDestroy() { }\n authForge(callback) {\n callback(Cookies.get('forge'), 3599);\n }\n launchViewer(urn) {\n const options = {\n env: 'AutodeskProduction',\n getAccessToken: this.authForge.bind(this)\n };\n this.ngZone.runOutsideAngular(() => {\n ParamAssignExtension.registerExtension(ParamAssignExtension.extensionName, this.extensionLoaded.bind(this));\n Autodesk.Viewing.Initializer(options, () => {\n const documentId = 'urn:' + urn;\n this.viewer = new Autodesk.Viewing.GuiViewer3D(this.viewerDiv.nativeElement, { extensions: [] });\n Autodesk.Viewing.Document.load(documentId, this.onDocumentLoadSuccess.bind(this), this.onDocumentLoadFailure.bind(this));\n });\n });\n }\n extensionLoaded() {\n console.log('extensionLoaded');\n }\n afterViewerEvents(viewer, events) {\n const promises = [];\n events.forEach((event) => {\n promises.push(new Promise((resolve, reject) => {\n const handler = () => {\n viewer.removeEventListener(event, handler);\n resolve(null);\n };\n viewer.addEventListener(event, handler);\n }));\n });\n return Promise.all(promises);\n }\n onDocumentLoadSuccess(doc) {\n this.viewer.start();\n const viewables = doc.getRoot().getDefaultGeometry();\n this.viewer.loadDocumentNode(doc, viewables, {}).then(async (model) => {\n this.loadParamExtension();\n });\n }\n loadParamExtension() {\n this.viewer.getObjectTree((tree) => {\n const icons = [];\n tree.enumNodeChildren(tree.getRootId(), (dbid) => {\n this.labels.forEach(label => {\n if (label.name === tree.getNodeName(dbid)) {\n icons.push({\n element: label.element,\n dbId: dbid,\n name: label.name,\n });\n }\n });\n }, true);\n this.viewer.loadExtension(ParamAssignExtension.extensionName, { icons });\n this.onReady.emit({ viewer: this.viewer });\n });\n }\n onDocumentLoadFailure(viewerErrorCode, viewerErrorMsg) {\n console.error('onDocumentLoadFailure() - errorCode:' + viewerErrorCode + '\\n- errorMessage:' + viewerErrorMsg);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: ScriptService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.2.23\", type: ForgeComponent, isStandalone: true, selector: \"app-forge\", inputs: { urn: \"urn\", labels: \"labels\" }, outputs: { onReady: \"onReady\" }, providers: [ScriptService], viewQueries: [{ propertyName: \"viewerDiv\", first: true, predicate: [\"forgeViewer\"], descendants: true }], ngImport: i0, template: \"<div #forgeViewer class=\\\"adsk-viewer\\\"></div>\\r\\n\\r\\n\", styles: [\".adsk-viewing-viewer{width:100%;height:100%;position:relative}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponent, decorators: [{\n type: Component$1,\n args: [{ standalone: true, selector: 'app-forge', changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, CommonModule], providers: [ScriptService], template: \"<div #forgeViewer class=\\\"adsk-viewer\\\"></div>\\r\\n\\r\\n\", styles: [\".adsk-viewing-viewer{width:100%;height:100%;position:relative}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: ScriptService }], propDecorators: { viewerDiv: [{\n type: ViewChild,\n args: ['forgeViewer']\n }], urn: [{\n type: Input\n }], labels: [{\n type: Input\n }], onReady: [{\n type: Output\n }] } });\nclass ForgeComponentModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponentModule, imports: [ForgeComponent], exports: [ForgeComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponentModule, providers: [ScriptService], imports: [ForgeComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: ForgeComponentModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ForgeComponent],\n exports: [ForgeComponent],\n providers: [ScriptService],\n }]\n }] });\n\nclass PieChartComponent {\n constructor(cdr) {\n this.cdr = cdr;\n this.locale = 'en';\n this.noDataMessage = 'No data';\n this.width = 250;\n this.height = 250;\n this.margin = {\n top: 25,\n right: 25,\n bottom: 25,\n left: 25\n };\n this.options = {\n backgroundColor: 'transparent',\n tooltip: {\n trigger: 'item',\n confine: true,\n appendToBody: true,\n },\n toolbox: {\n feature: {\n saveAsImage: { show: true }\n }\n },\n grid: {\n left: `${this.margin.left}px`,\n right: `${this.margin.right}px`,\n bottom: `${this.margin.bottom}px`,\n top: `${this.margin.top}px`,\n containLabel: true\n },\n series: [],\n legend: {\n show: false,\n },\n };\n this.uniqTitles = [];\n this.initOpts = {\n locale: this.locale.toLocaleUpperCase()\n };\n this.darkColor = [\n { 'color': '#00FF7F' }, { 'color': '#00E0E0' }, { 'color': '#FF00FF' }, { 'color': '#B2CCE5' }, { 'color': '#F1F227' },\n { 'color': '#FDE3A7' }, { 'color': '#F64747' }, { 'color': '#8BB82D' }, { 'color': '#1E90FF' }, { 'color': '#D2527F' },\n { 'color': '#91A6BA' }\n ];\n this.lightColor = [\n { 'color': '#007A4B' }, { 'color': '#3477DB' }, { 'color': '#D252B2' }, { 'color': '#708090' }, { 'color': '#AF851A' },\n { 'color': '#BB671C' }, { 'color': '#E00000' }, { 'color': '#005031' }, { 'color': '#34415E' }, { 'color': '#58007E' },\n { 'color': '#2E343B' }\n ];\n this.display = false;\n }\n ngOnChanges(changes) {\n if (changes.locale) {\n this.initOpts = { locale: this.locale };\n this.display = false;\n this.cdr.detectChanges();\n setTimeout(() => {\n this.display = true;\n this.cdr.detectChanges();\n });\n }\n if (this.echartsInstance && (changes.width || changes.height)) {\n this.resizeChart();\n }\n if (changes.config || changes.values || changes.theme) {\n if (this.config && this.values) {\n this.updateData(this.config, this.values);\n }\n }\n }\n ngOnInit() {\n this.initOpts = { locale: this.locale };\n }\n ngOnDestroy() { }\n onChartInit(ec) {\n this.echartsInstance = ec;\n }\n resizeChart() {\n if (this.echartsInstance) {\n this.echartsInstance.resize();\n }\n }\n updateData(config, values) {\n const res = [];\n this.uniqTitles = [];\n const customColors = [];\n const data = values.data.map((val, indexData) => {\n customColors.push(val.color || this.getChartColor(indexData));\n return {\n value: val.value,\n name: this.findUniqName(val.key)\n };\n });\n if (this.config.legend) {\n this.options.legend = { show: true, bottom: '16px' };\n }\n if (config.charttype === ChartTypes.intervalPieChart) {\n this.options.tooltip = { show: false };\n this.options.legend = { show: false };\n this.options.grid = { show: false };\n res.push({\n name: 'Chart',\n type: 'pie',\n radius: '55%',\n center: ['50%', '50%'],\n data: data,\n itemStyle: {\n color: ({ seriesIndex, dataIndex }) => customColors[dataIndex],\n },\n label: { show: false },\n labelLine: { show: false },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n animationDelay: function (idx) {\n return Math.random() * 200;\n }\n });\n }\n else {\n res.push({\n name: 'Chart',\n type: 'pie',\n radius: ['40%', '70%'],\n center: ['50%', '50%'],\n data: data,\n label: {\n color: this.theme === SiteTheme.dark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)'\n },\n labelLine: {\n lineStyle: {\n color: this.theme === SiteTheme.dark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)'\n },\n smooth: 0.2,\n length: 10,\n length2: 20\n },\n itemStyle: {\n borderRadius: 4,\n color: ({ seriesIndex, dataIndex }) => this.getChartColor(dataIndex),\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n animationDelay: function (idx) {\n return Math.random() * 200;\n }\n });\n }\n this.options = { ...this.options, series: res };\n }\n findUniqName(title, ind = 0) {\n if (ind === 0) {\n if (this.uniqTitles.indexOf(title) !== -1) {\n return this.findUniqName(title, ind + 1);\n }\n this.uniqTitles.push(title);\n return title;\n }\n else {\n const newTitle = `${title} (${ind})`;\n if (this.uniqTitles.indexOf(newTitle) !== -1) {\n return this.findUniqName(title, ind + 1);\n }\n this.uniqTitles.push(newTitle);\n return newTitle;\n }\n }\n getChartColor(seed) {\n if (this.theme === SiteTheme.dark) {\n return this.lightColor[seed % this.darkColor.length].color;\n }\n else {\n return this.darkColor[seed % this.lightColor.length].color;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.2.23\", type: PieChartComponent, isStandalone: true, selector: \"app-pie-chart\", inputs: { values: \"values\", config: \"config\", locale: \"locale\", noDataMessage: \"noDataMessage\", width: \"width\", height: \"height\", margin: \"margin\", theme: \"theme\" }, usesOnChanges: true, ngImport: i0, template: \"<div echarts [options]=\\\"options\\\" *ngIf=\\\"display\\\" [initOpts]=\\\"initOpts\\\" style=\\\"width:100%; height: 100%\\\" [theme]=\\\"theme\\\" (chartInit)=\\\"onChartInit($event)\\\"></div>\\r\\n\", styles: [\".nvd3{width:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: NgxEchartsDirective, selector: \"echarts, [echarts]\", inputs: [\"options\", \"theme\", \"initOpts\", \"merge\", \"autoResize\", \"loading\", \"loadingType\", \"loadingOpts\"], outputs: [\"chartInit\", \"optionsError\", \"chartClick\", \"chartDblClick\", \"chartMouseDown\", \"chartMouseMove\", \"chartMouseUp\", \"chartMouseOver\", \"chartMouseOut\", \"chartGlobalOut\", \"chartContextMenu\", \"chartHighlight\", \"chartDownplay\", \"chartSelectChanged\", \"chartLegendSelectChanged\", \"chartLegendSelected\", \"chartLegendUnselected\", \"chartLegendLegendSelectAll\", \"chartLegendLegendInverseSelect\", \"chartLegendScroll\", \"chartDataZoom\", \"chartDataRangeSelected\", \"chartGraphRoam\", \"chartGeoRoam\", \"chartTreeRoam\", \"chartTimelineChanged\", \"chartTimelinePlayChanged\", \"chartRestore\", \"chartDataViewChanged\", \"chartMagicTypeChanged\", \"chartGeoSelectChanged\", \"chartGeoSelected\", \"chartGeoUnselected\", \"chartAxisAreaSelected\", \"chartBrush\", \"chartBrushEnd\", \"chartBrushSelected\", \"chartGlobalCursorTaken\", \"chartRendered\", \"chartFinished\"], exportAs: [\"echarts\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponent, decorators: [{\n type: Component$1,\n args: [{ standalone: true, selector: 'app-pie-chart', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, NgxEchartsDirective], template: \"<div echarts [options]=\\\"options\\\" *ngIf=\\\"display\\\" [initOpts]=\\\"initOpts\\\" style=\\\"width:100%; height: 100%\\\" [theme]=\\\"theme\\\" (chartInit)=\\\"onChartInit($event)\\\"></div>\\r\\n\", styles: [\".nvd3{width:100%}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { values: [{\n type: Input\n }], config: [{\n type: Input\n }], locale: [{\n type: Input\n }], noDataMessage: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], theme: [{\n type: Input\n }] } });\nclass PieChartComponentModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponentModule, imports: [PieChartComponent], exports: [PieChartComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponentModule, imports: [PieChartComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: PieChartComponentModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [PieChartComponent],\n exports: [PieChartComponent],\n }]\n }] });\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n/**\n * Language: Russian.\n */\nvar langRU = {\n time: {\n month: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],\n monthAbbr: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],\n dayOfWeek: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],\n dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']\n },\n legend: {\n selector: {\n all: 'Всё',\n inverse: 'Обратить'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: 'Выделить область',\n polygon: 'Инструмент «Лассо»',\n lineX: 'Горизонтальное выделение',\n lineY: 'Вертикальное выделение',\n keep: 'Оставить выбранное',\n clear: 'Очистить выбранное'\n }\n },\n dataView: {\n title: 'Данные',\n lang: ['Данные', 'Закрыть', 'Обновить']\n },\n dataZoom: {\n title: {\n zoom: 'Увеличить',\n back: 'Сбросить увеличение'\n }\n },\n magicType: {\n title: {\n line: 'Линия',\n bar: 'Гистограмма',\n stack: 'Стак',\n tiled: 'Плитка'\n }\n },\n restore: {\n title: 'Восстановить'\n },\n saveAsImage: {\n title: 'Сохранить как картинку',\n lang: ['Правый клик, чтобы сохранить картинку']\n }\n },\n series: {\n typeNames: {\n pie: 'Круговая диаграмма',\n bar: 'Столбчатая диаграмма',\n line: 'Линейный график',\n scatter: 'Точечная диаграмма',\n effectScatter: 'Точечная диаграмма с волнами',\n radar: 'Лепестковая диаграмма',\n tree: 'Дерево',\n treemap: 'Плоское дерево',\n boxplot: 'Ящик с усами',\n candlestick: 'Свечной график',\n k: 'График К-линий',\n heatmap: 'Тепловая карта',\n map: 'Карта',\n parallel: 'Диаграмма параллельных координат',\n lines: 'Линейный граф',\n graph: 'Граф отношений',\n sankey: 'Диаграмма Санкей',\n funnel: 'Воронкообразная диаграмма',\n gauge: 'Шкала',\n pictorialBar: 'Столбец-картинка',\n themeRiver: 'Тематическая река',\n sunburst: 'Солнечные лучи',\n custom: 'Пользовательский график',\n chart: 'График'\n }\n },\n aria: {\n general: {\n withTitle: 'Это график, показывающий \"{title}\"',\n withoutTitle: 'Это график'\n },\n series: {\n single: {\n prefix: '',\n withName: ' с типом {seriesType} и именем {seriesName}.',\n withoutName: ' с типом {seriesType}.'\n },\n multiple: {\n prefix: '. Он состоит из {seriesCount} серий.',\n withName: ' Серия {seriesId} имеет тип {seriesType} и показывает {seriesName}.',\n withoutName: ' Серия {seriesId} имеет тип {seriesType}.',\n separator: {\n middle: '',\n end: ''\n }\n }\n },\n data: {\n allData: 'Данные таковы: ',\n partialData: 'Первые {displayCnt} элементов: ',\n withName: 'значение для {name} — {value}',\n withoutName: '{value}',\n separator: {\n middle: ', ',\n end: '. '\n }\n }\n }\n};\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n/**\n * Language: English.\n */\nvar langEN = {\n time: {\n month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthAbbr: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n dayOfWeek: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayOfWeekAbbr: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n },\n legend: {\n selector: {\n all: 'All',\n inverse: 'Inv'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: 'Box Select',\n polygon: 'Lasso Select',\n lineX: 'Horizontally Select',\n lineY: 'Vertically Select',\n keep: 'Keep Selections',\n clear: 'Clear Selections'\n }\n },\n dataView: {\n title: 'Data View',\n lang: ['Data View', 'Close', 'Refresh']\n },\n dataZoom: {\n title: {\n zoom: 'Zoom',\n back: 'Zoom Reset'\n }\n },\n magicType: {\n title: {\n line: 'Line',\n bar: 'Histogram',\n stack: 'Stack',\n tiled: 'Tile'\n }\n },\n restore: {\n title: 'Restore'\n },\n saveAsImage: {\n title: 'Save as Image',\n lang: ['Right Click to Save Image']\n }\n },\n series: {\n typeNames: {\n pie: 'Pie chart',\n bar: 'Bar chart',\n line: 'Line chart',\n scatter: 'Scatter plot',\n effectScatter: 'Ripple scatter plot',\n radar: 'Radar chart',\n tree: 'Tree',\n treemap: 'Treemap',\n boxplot: 'Boxplot',\n candlestick: 'Candlestick',\n k: 'K line chart',\n heatmap: 'Heat map',\n map: 'Map',\n parallel: 'Parallel coordinate map',\n lines: 'Line graph',\n graph: 'Relationship graph',\n sankey: 'Sankey diagram',\n funnel: 'Funnel chart',\n gauge: 'Gauge',\n pictorialBar: 'Pictorial bar',\n themeRiver: 'Theme River Map',\n sunburst: 'Sunburst',\n custom: 'Custom chart',\n chart: 'Chart'\n }\n },\n aria: {\n general: {\n withTitle: 'This is a chart about \"{title}\"',\n withoutTitle: 'This is a chart'\n },\n series: {\n single: {\n prefix: '',\n withName: ' with type {seriesType} named {seriesName}.',\n withoutName: ' with type {seriesType}.'\n },\n multiple: {\n prefix: '. It consists of {seriesCount} series count.',\n withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',\n withoutName: ' The {seriesId} series is a {seriesType}.',\n separator: {\n middle: '',\n end: ''\n }\n }\n },\n data: {\n allData: 'The data is as follows: ',\n partialData: 'The first {displayCnt} items are: ',\n withName: 'the data for {name} is {value}',\n withoutName: '{value}',\n separator: {\n middle: ', ',\n end: '. '\n }\n }\n }\n};\n\necharts.registerLocale('RU', langRU);\necharts.registerLocale('EN', langEN);\nconst FULL_DAY = 86400000;\nconst GRADIENT = [\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: 'rgb(128, 255, 165)' },\n { offset: 1, color: 'rgb(1, 191, 236)' }\n ]),\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: 'rgb(0, 221, 255)' },\n { offset: 1, color: 'rgb(77, 119, 255)' }\n ]),\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: 'rgb(55, 162, 255)' },\n { offset: 1, color: 'rgb(116, 21, 219)' }\n ]),\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: 'rgb(255, 0, 135)' },\n { offset: 1, color: 'rgb(135, 0, 157)' }\n ]),\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: 'rgb(255, 191, 0)' },\n { offset: 1, color: 'rgb(224, 62, 76)' }\n ])\n];\nconst getGradient = (seed) => GRADIENT[seed % GRADIENT.length];\nconst cutName = (name, length) => {\n if (name.length > length + 3) {\n return name.substring(0, length) + '...';\n }\n return name;\n};\nconst BackGround = {\n [SiteTheme.light]: '#FFFFFF',\n [SiteTheme.dark]: '#494C55'\n};\nconst RedZone = {\n [SiteTheme.light]: 'rgba(255, 173, 177, 0.4)',\n [SiteTheme.dark]: 'rgba(145, 30, 49, 0.2)'\n};\nclass EchartComponent {\n constructor(cdr) {\n this.cdr = cdr;\n this.locale = 'en';\n this.noDataMessage = 'No data';\n this.width = 250;\n this.height = 250;\n this.margin = { top: 70, right: 20, bottom: 60, left: 20 };\n this.data = [];\n this.options = {\n backgroundColor: 'transparent',\n tooltip: {\n appendToBody: true,\n renderMode: 'html',\n trigger: 'axis',\n axisPointer: { type: 'cross' },\n className: 'label-formatter',\n formatter: (params) => {\n let res = 'No data';\n if (params && params[0]) {\n res = `<div class=\"title\">${new DatePipe(this.getLocale(this.locale)).transform(params[0].value[0], 'd MMM y, HH:mm')}</div><table>`;\n res += params.map((val) => {\n if (typeof val.value[val.value.length - 1] === 'number') {\n return `<tr><td class=\"label\">${val.marker} ${cutName(val.seriesName, 20)}</td>\r\n<td><div class=\"value\"><b>${this.roundData(val.value[1])}</b></div></td></tr>`;\n }\n else {\n const unit = val.value[val.value.length - 1].device.param.measure.unit ? val.value[val.value.length - 1].device.param.measure.unit : '';\n if (val.seriesType === 'candlestick') {\n return `<tr><td class=\"label\">${val.marker} ${cutName(val.seriesName, 20)}</td>\r\n<td><div class=\"value\"><div><span>ОТКР:</span> ${this.roundData(val.value[1])}</div><div><span>ЗАКР:</span> ${this.roundData(val.value[2])}</div><div><span>МИН:</span> ${this.roundData(val.value[3])}</div><div><span>МАКС:</span> ${this.roundData(val.value[4])}</div></div></td></tr>`;\n }\n else {\n return `<tr><td class=\"label\">${val.marker} ${cutName(val.seriesName, 20)}</td>\r\n<td><div class=\"value\"><b>${this.roundData(val.value[1])}</b> ${cutName(unit, 10)}</div></td></tr>`;\n }\n }\n }).join('') + '</table>';\n }\n return res;\n }\n },\n xAxis: { type: 'time', boundaryGap: ['0%', '0%'] },\n yAxis: { type: 'value' },\n toolbox: {\n right: '20px',\n showTitle: false,\n feature: {},\n tooltip: {\n show: true,\n formatter: function (param) {\n return '<div>' + param.title + '</div>';\n },\n backgroundColor: '#222',\n extraCssText: 'color: #fff'\n }\n },\n grid: {\n left: `${this.margin.left}px`,\n right: `${this.margin.right}px`,\n bottom: `${this.margin.bottom}px`,\n top: `${this.margin.top}px`,\n containLabel: true\n },\n series: [],\n };\n this.uniqTitles = [];\n this.initOpts = { locale: this.locale.toLocaleUpperCase() };\n this.darkColor = [\n { 'color': '#00FF7F' }, { 'color': '#00E0E0' }, { 'color': '#FF00FF' }, { 'color': '#B2CCE5' }, { 'color': '#F1F227' },\n { 'color': '#FDE3A7' }, { 'color': '#F64747' }, { 'color': '#8BB82D' }, { 'color': '#1E90FF' }, { 'color': '#D2527F' },\n { 'color': '#91A6BA' }\n ];\n this.lightColor = [\n { 'color': '#007A4B' }, { 'color': '#3477DB' }, { 'color': '#D252B2' }, { 'color': '#708090' }, { 'color': '#AF851A' },\n { 'color': '#BB671C' }, { 'color': '#E00000' }, { 'color': '#005031' }, { 'color': '#34415E' }, { 'color': '#58007E' },\n { 'color': '#2E343B' }\n ];\n this.display = true;\n }\n ngOnChanges(changes) {\n if (changes.locale) {\n this.initOpts = { locale: this.locale };\n this.display = false;\n this.cdr.detectChanges();\n setTimeout(() => {\n this.display = true;\n this.cdr.detectChanges();\n });\n }\n if (this.echartsInstance && (changes.width || changes.height)) {\n this.resizeChart();\n }\n if (changes.config || changes.values || changes.theme || changes.simpleData) {\n this.data = [];\n if (this.config && (this.values || this.simpleData)) {\n if (this.values && this.values.length && this.values[0].data) {\n this.updateData(this.config, this.values);\n }\n if (this.simpleData && this.simpleData.length) {\n this.updateArrayData(this.config, this.simpleData);\n }\n }\n }\n }\n ngOnInit() {\n this.initOpts = { locale: this.locale };\n }\n ngOnDestroy() { }\n onChartInit(ec) {\n this.echartsInstance = ec;\n }\n getLocale(locale) {\n return locale.toLowerCase() === 'ru' ? 'ru-RU' : 'en-US';\n }\n resizeChart() {\n if (this.echartsInstance) {\n this.echartsInstance.resize();\n }\n }\n roundData(value, numbers = 2) {\n return Math.round(value * Math.pow(10, numbers)) / Math.pow(10, numbers);\n }\n updateArrayData(config, values) {\n const res = [];\n const xAxis = {\n type: 'value',\n boundaryGap: true,\n max: values[0].data.length,\n axisLabel: {\n formatter: function (value) {\n return value / 1000 + 'kGhz';\n }\n }\n };\n const legend = values.map((val) => val.title || '');\n const yAxis = { type: 'value' };\n values.forEach((value, ind) => {\n res.push({\n type: 'line',\n name: value.title,\n lineStyle: { color: this.getChartColor(ind) },\n itemStyle: { color: this.getChartColor(ind) },\n data: value.data.map((val, i) => [i, val]),\n });\n });\n const magicType = { type: ['bar', 'line'] };\n this.options = {\n ...this.options,\n xAxis,\n yAxis,\n legend: { data: legend, bottom: `8px`, show: true, type: 'scroll' },\n series: res,\n grid: {\n ...this.options.grid,\n left: this.margin.left + 30,\n right: this.margin.right + 30,\n },\n toolbox: {\n ...this.options.toolbox,\n feature: {\n ...this.options.toolbox.feature,\n saveAsImage: { show: true, backgroundColor: BackGround[this.theme] },\n magicType,\n }\n }\n };\n }\n updateData(config, values) {\n const res = [];\n const legend = [];\n const xAxis = {\n type: 'time',\n boundaryGap: false,\n axisLabel: { formatter: '{d} {MMM}\\n{HH}:{mm}' }\n };\n let yAxis = [];\n this.uniqTitles = [];\n values = this.updateValueTimeZone(values);\n const first = values[0];\n const shift = Math.max(0, Number(config.count || 0));\n const tz = first?.device?.object?.timezone ?? 0;\n const endNow = this.nowWithTZ(tz);\n let period;\n switch (config.duration) {\n case SeriesDuration.day:\n period = this.getDay(shift, tz, endNow);\n break;\n case SeriesDuration.week:\n period = this.getWeek(shift, tz, endNow);\n break;\n case SeriesDuration.month:\n period = this.getMonth(shift, tz, endNow);\n break;\n default:\n period = this.getDay(0, tz, endNow);\n }\n if (config.generator) {\n const times = this.getMaxMinTimeline(first);\n xAxis.min = times.min - FULL_DAY;\n xAxis.max = times.max + FULL_DAY;\n }\n else {\n xAxis.min = period.startTime;\n xAxis.max = period.endTime;\n }\n if (config.viewtype !== ChartViews.stackedAreaChart) {\n const diff = Math.round((xAxis.max - xAxis.min) * 0.02);\n xAxis.min = xAxis.min - diff;\n xAxis.max = xAxis.max + diff;\n }\n const measures = values.map(v => v.device.param.measure.id).filter((v, i, s) => s.indexOf(v) === i);\n if (measures.length > 1 && config.viewtype !== ChartViews.stackedAreaChart) {\n yAxis = values.map((v, ind) => {\n const maxmin = this.getMaxMin(v);\n const diff = Math.round((maxmin.max - maxmin.min) * 0.1);\n return {\n type: 'value',\n min: Math.round(maxmin.min - diff),\n max: Math.round(maxmin.max + diff),\n position: ind % 2 === 0 ? 'left' : 'right',\n offset: 60 * Math.floor(ind / 2),\n axisLine: { show: true, lineStyle: { color: this.getChartColor(ind) } },\n splitLine: { show: false },\n axisLabel: { formatter: '{value} ', color: this.getChartColor(ind) }\n };\n });\n }\n else {\n yAxis.push({\n type: 'value',\n splitLine: { lineStyle: { color: ['#aaa', '#aaa'] } },\n axisLine: { show: true, lineStyle: { color: this.getChartColor(0) } },\n axisLabel: { formatter: '{value} ', color: this.getChartColor(0) }\n });\n }\n if (config.viewtype === ChartViews.histogramChart) {\n values.forEach((value, ind) => {\n const title = this.findUniqName(value.title) + ' ' + (value.device.param.measure.unit ? value.device.param.measure.unit : '');\n legend.push(title);\n res.push({\n type: 'bar',\n data: value.data.map((val) => [val.timestmp, val.value, value]),\n itemStyle: { color: this.getChartColor(ind) },\n name: title,\n yAxisIndex: yAxis.length > 1 ? ind : 0,\n });\n });\n }\n else if (config.viewtype === ChartViews.candlestickBarChart) {\n values.forEach((value, ind) => {\n const title = this.findUniqName(value.title) + ' ' + (value.device.param.measure.unit ? value.device.param.measure.unit : '');\n legend.push(title);\n res.push({\n type: 'candlestick',\n data: value.data.map((val) => [val.timestmp, val.open, val.close, val.low, val.high, value]),\n name: title,\n yAxisIndex: yAxis.length > 1 ? ind : 0,\n });\n });\n }\n else {\n values.forEach((value, ind) => {\n const title = this.findUniqName(value.title) + ' ' + (value.device.param.measure.unit ? value.device.param.measure.unit : '');\n legend.push(title);\n if (config.viewtype === ChartViews.stackedAreaChart) {\n res.push({\n type: 'line',\n stack: 'Total',\n smooth: true,\n name: title,\n yAxisIndex: yAxis.length > 1 ? ind : 0,\n data: value.data.map((val) => [val.timestmp, val.value, value]),\n lineStyle: { width: 0 },\n showSymbol: false,\n emphasis: { focus: 'series' },\n itemStyle: { color: getGradient(ind) },\n areaStyle: { opacity: 0.8, color: getGradient(ind) },\n });\n }\n else {\n let markArea;\n if (config.viewtype === ChartViews.lineWeekend) {\n const data = [];\n const days = Math.ceil((xAxis.max - xAxis.min) / FULL_DAY);\n if (days > 1) {\n for (let i = 0; i < days; i++) {\n const date = (new Date(xAxis.min + i * FULL_DAY));\n this.modifyTime(date, 0);\n const day = date.getUTCDay();\n if (day === 0) {\n const d = (new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0));\n data.push([{ xAxis: d.getTime() }, { xAxis: d.getTime() + FULL_DAY }]);\n }\n if (day === 6) {\n const d = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n data.push([{ xAxis: d.getTime() }, { xAxis: d.getTime() + FULL_DAY * 2 }]);\n i++;\n }\n }\n }\n markArea = { itemStyle: { color: RedZone[this.theme] }, data };\n }\n res.push({\n type: 'line',\n smooth: true,\n name: title,\n markArea,\n yAxisIndex: yAxis.length > 1 ? ind : 0,\n lineStyle: { color: this.getChartColor(ind) },\n itemStyle: { color: this.getChartColor(ind) },\n data: value.data.map((val) => [val.timestmp, val.value, value]),\n });\n }\n });\n }\n const magicType = config.viewtype === ChartViews.candlestickBarChart ? {} : {\n type: yAxis.length === 1 ? ['bar', 'stack', 'line'] : ['bar', 'line'],\n };\n this.options = {\n ...this.options,\n xAxis,\n yAxis,\n legend: { data: legend, bottom: `8px`, show: true, type: 'scroll' },\n series: res,\n grid: {\n ...this.options.grid,\n left: this.margin.left + Math.floor(yAxis.length / 2) * 30,\n right: this.margin.right + Math.floor(yAxis.length / 2) * 30,\n },\n toolbox: {\n ...this.options.toolbox,\n feature: {\n ...this.options.toolbox.feature,\n saveAsImage: { show: true, backgroundColor: BackGround[this.theme] },\n magicType,\n }\n }\n };\n }\n findUniqName(title, ind = 0) {\n if (ind === 0) {\n if (this.uniqTitles.indexOf(title) !== -1) {\n return this.findUniqName(title, ind + 1);\n }\n this.uniqTitles.push(title);\n return title;\n }\n else {\n const newTitle = `${title} (${ind})`;\n if (this.uniqTitles.indexOf(newTitle) !== -1) {\n return this.findUniqName(title, ind + 1);\n }\n this.uniqTitles.push(newTitle);\n return newTitle;\n }\n }\n getMaxMinSimple(values) {\n let max = Number.MIN_VALUE, min = Number.MAX_VALUE;\n values.forEach((value) => {\n if (value > max) {\n max = value;\n }\n if (value < min) {\n min = value;\n }\n });\n return { max, min };\n }\n getMaxMin(values) {\n let max = Number.MIN_VALUE, min = Number.MAX_VALUE;\n if (this.config.charttype === ChartTypes.candlestickBarChart) {\n values.data.forEach((val) => {\n if (val.high > max) {\n max = val.high;\n }\n if (val.low < min) {\n min = val.low;\n }\n });\n }\n else {\n values.data.forEach((val) => {\n if (val.value > max) {\n max = val.value;\n }\n if (val.value < min) {\n min = val.value;\n }\n });\n }\n return { max, min };\n }\n updateValueTimeZone(values) {\n return values.map(value => {\n if (value.data) {\n return {\n ...value,\n data: value.data.map((val) => {\n const date = new Date(val.timestmp);\n this.modifyTime(date, 0);\n return { value: val.value ?? val.close ?? 0, timestmp: date.getTime() };\n })\n };\n }\n return value;\n });\n }\n getMaxMinTimeline(values) {\n let max = Number.MIN_VALUE, min = Number.MAX_VALUE;\n if (values.data) {\n values.data.forEach((val) => {\n if (val.timestmp > max) {\n max = val.timestmp;\n }\n if (val.timestmp < min) {\n min = val.timestmp;\n }\n });\n }\n return { max, min };\n }\n nowWithTZ(timezone) {\n const now = new Date();\n const shiftMs = (now.getTimezoneOffset() - timezone * 60) * 60000;\n return new Date(now.getTime() + shiftMs);\n }\n startOfDayTZ(d) {\n const x = new Date(d.getTime());\n x.setHours(0, 0, 0, 0);\n return x;\n }\n startOfWeekTZ(d) {\n const x = new Date(d.getTime());\n const dow = x.getDay();\n const mondayOffset = (dow + 6) % 7;\n x.setDate(x.getDate() - mondayOffset);\n x.setHours(0, 0, 0, 0);\n return x;\n }\n startOfMonthTZ(d) {\n const x = new Date(d.getTime());\n x.setDate(1);\n x.setHours(0, 0, 0, 0);\n return x;\n }\n getDay(shift, timezone, nowTZ) {\n const end = new Date(nowTZ.getTime());\n let start;\n if (shift === 0) {\n start = this.startOfDayTZ(end);\n }\n else {\n start = new Date(end.getTime() - shift * FULL_DAY);\n }\n return { startTime: start.getTime(), endTime: end.getTime(), text: '' };\n }\n getWeek(shift, timezone, nowTZ) {\n const end = new Date(nowTZ.getTime());\n let start = this.startOfWeekTZ(end);\n if (shift > 0) {\n start = new Date(start.getTime() - shift * 7 * FULL_DAY);\n }\n return { startTime: start.getTime(), endTime: end.getTime(), text: '' };\n }\n getMonth(shift, timezone, nowTZ) {\n const end = new Date(nowTZ.getTime());\n let start = this.startOfMonthTZ(end);\n if (shift > 0) {\n const s = new Date(start.getTime());\n s.setMonth(s.getMonth() - shift);\n start = s;\n }\n return { startTime: start.getTime(), endTime: end.getTime(), text: '' };\n }\n modifyTime(date, timezone) {\n return date.setTime(date.getTime() + (date.getTimezoneOffset() - timezone * 60) * 60000);\n }\n getChartColor(seed) {\n if (this.theme === SiteTheme.dark) {\n return this.darkColor[seed % this.darkColor.length].color;\n }\n return this.lightColor[seed % this.lightColor.length].color;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: EchartComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.2.23\", type: EchartComponent, isStandalone: true, selector: \"app-echart\", inputs: { values: \"values\", simpleData: \"simpleData\", config: \"config\", locale: \"locale\", noDataMessage: \"noDataMessage\", width: \"width\", height: \"height\", margin: \"margin\", theme: \"theme\" }, usesOnChanges: true, ngImport: i0, template: \"<div echarts [options]=\\\"options\\\" *ngIf=\\\"display\\\" [initOpts]=\\\"initOpts\\\" style=\\\"width:100%; height: 100%\\\" [theme]=\\\"theme\\\" (chartInit)=\\\"onChartInit($event)\\\"></div>\\r\\n<div class=\\\"no-data-message\\\" *ngIf=\\\"!values && !simpleData\\\">{{noDataMessage}}</div>\\r\\n\", styles: [\".no-data-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.7}::ng-deep .label-formatter .title{padding-bottom:8px}::ng-deep .label-formatter table{color:#333}::ng-deep .label-formatter table .label{padding-right:8px}::ng-deep .label-formatter table .value{text-align:right;color:#555;min-width:100px;display:flex}::ng-deep .label-formatter table .value>div{margin-right:4px}::ng-deep .label-formatter table .value>div span{opacity:.5;font-size:11px}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: NgxEchartsDirective, selector: \"echarts, [echarts]\", inputs: [\"options\", \"theme\", \"initOpts\", \"merge\", \"autoResize\", \"loading\", \"loadingType\", \"loadingOpts\"], outputs: [\"chartInit\", \"optionsError\", \"chartClick\", \"chartDblClick\", \"chartMouseDown\", \"chartMouseMove\", \"chartMouseUp\", \"chartMouseOver\", \"chartMouseOut\", \"chartGlobalOut\", \"chartContextMenu\", \"chartHighlight\", \"chartDownplay\", \"chartSelectChanged\", \"chartLegendSelectChanged\", \"chartLegendSelected\", \"chartLegendUnselected\", \"chartLegendLegendSelectAll\", \"chartLegendLegendInverseSelect\", \"chartLegendScroll\", \"chartDataZoom\", \"chartDataRangeSelected\", \"chartGraphRoam\", \"chartGeoRoam\", \"chartTreeRoam\", \"chartTimelineChanged\", \"chartTimelinePlayChanged\", \"chartRestore\", \"chartDataViewChanged\", \"chartMagicTypeChanged\", \"chartGeoSelectChanged\", \"chartGeoSelected\", \"chartGeoUnselected\", \"chartAxisAreaSelected\", \"chartBrush\", \"chartBrushEnd\", \"chartBrushSelected\", \"chartGlobalCursorTaken\", \"chartRendered\", \"chartFinished\"], exportAs: [\"echarts\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: EchartComponent, decorators: [{\n type: Component$1,\n args: [{ standalone: true, selector: 'app-echart', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, imports: [CommonModule, NgxEchartsDirective], template: \"<div echarts [options]=\\\"options\\\" *ngIf=\\\"display\\\" [initOpts]=\\\"initOpts\\\" style=\\\"width:100%; height: 100%\\\" [theme]=\\\"theme\\\" (chartInit)=\\\"onChartInit($event)\\\"></div>\\r\\n<div class=\\\"no-data-message\\\" *ngIf=\\\"!values && !simpleData\\\">{{noDataMessage}}</div>\\r\\n\", styles: [\".no-data-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.7}::ng-deep .label-formatter .title{padding-bottom:8px}::ng-deep .label-formatter table{color:#333}::ng-deep .label-formatter table .label{padding-right:8px}::ng-deep .label-formatter table .value{text-align:right;color:#555;min-width:100px;display:flex}::ng-deep .label-formatter table .value>div{margin-right:4px}::ng-deep .label-formatter table .value>div span{opacity:.5;font-size:11px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { values: [{\n type: Input\n }], simpleData: [{\n type: Input\n }], config: [{\n type: Input\n }], locale: [{\n type: Input\n }], noDataMessage: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], theme: [{\n type: Input\n }] } });\nclass EChartComponentModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: EChartComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: EChartComponentModule, imports: [EchartComponent, PieChartComponent], exports: [EchartComponent, PieChartComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: EChartComponentModule, imports: [EchartComponent, PieChartComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: EChartComponentModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [EchartComponent, PieChartComponent],\n exports: [EchartComponent, PieChartComponent],\n }]\n }] });\n\nconst PRIME_MODULES = [\n ButtonModule,\n DialogModule,\n ToastModule,\n];\nclass DashboardSharedModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: DashboardSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.2.23\", ngImport: i0, type: DashboardSharedModule, imports: [CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule, i1$2.InlineSVGModule, i2.NgxEchartsModule, ButtonModule,\n DialogModule,\n ToastModule, \n // Standalone pipes\n ArrayNumberPipe,\n FilterIndexOfPipe,\n MakePictureUrl,\n MakeIconUrl,\n MakeChartUrl,\n ChartUrl,\n PeriodFromDatePipe], exports: [CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule,\n InlineSVGModule,\n NgxEchartsModule, ButtonModule,\n DialogModule,\n ToastModule, ArrayNumberPipe,\n FilterIndexOfPipe,\n MakePictureUrl,\n MakeIconUrl,\n MakeChartUrl,\n ChartUrl,\n PeriodFromDatePipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: DashboardSharedModule, providers: [\n MessageService,\n ], imports: [CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule,\n InlineSVGModule.forRoot({ baseUrl: '' }),\n NgxEchartsModule.forRoot({ echarts: () => import('echarts') }), PRIME_MODULES, CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule,\n InlineSVGModule,\n NgxEchartsModule, ButtonModule,\n DialogModule,\n ToastModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.23\", ngImport: i0, type: DashboardSharedModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule,\n InlineSVGModule.forRoot({ baseUrl: '' }),\n NgxEchartsModule.forRoot({ echarts: () => import('echarts') }),\n ...PRIME_MODULES,\n // Standalone pipes\n ArrayNumberPipe,\n FilterIndexOfPipe,\n MakePictureUrl,\n MakeIconUrl,\n MakeChartUrl,\n ChartUrl,\n PeriodFromDatePipe,\n ],\n exports: [\n CommonModule,\n TranslateModule,\n EChartComponentModule,\n ForgeComponentModule,\n InlineSVGModule,\n NgxEchartsModule,\n ...PRIME_MODULES,\n ArrayNumberPipe,\n FilterIndexOfPipe,\n MakePictureUrl,\n MakeIconUrl,\n MakeChartUrl,\n ChartUrl,\n PeriodFromDatePipe,\n ],\n providers: [\n MessageService,\n ],\n }]\n }] });\n\nfunction generateValues(inputValues, params, itemType = ITEM_TYPE.single, paramType = PARAM_TYPE.value, path = []) {\n if (inputValues instanceof Array) {\n // Проходимся по массив\n const result = [];\n const conf = inputValues[0];\n itemType = conf.item_type !== undefined ? conf.item_type : itemType;\n paramType = conf.param_type !== undefined ? conf.param_type : paramType;\n const param = findParam(params, path.join('.'));\n const max = Math.min(param.generateConfig?.count || 3, conf.max || 10);\n for (let i = 0; i < max; i++) {\n if (paramType === PARAM_TYPE.virtual_object) {\n const itemPath = [...path, 1];\n result.push(generateValues(conf, params, itemType, paramType, itemPath));\n }\n else {\n result.push(generateValue(i, conf, paramType, itemType, param));\n }\n }\n return result;\n }\n else {\n // Проходимся по объекту\n const result = {};\n for (const key in inputValues) {\n if (inputValues.hasOwnProperty(key)) {\n const itemPath = [...path, key];\n const param = findParam(params, itemPath.join('.'));\n const item = inputValues[key];\n itemType = item.item_type || itemType;\n paramType = item.param_type || paramType;\n if (inputValues[key].items) {\n if (inputValues[key].items instanceof Array) {\n // Если элемент - массив\n result[key] = {\n items: generateValues(inputValues[key].items, params, itemType, paramType, itemPath),\n config: generateParamConfig(itemType, param),\n viewConfig: { ...(param.param ? param.param.viewConfig : {}) },\n custom_data: inputValues[key].custom_data\n };\n }\n else {\n // Если элемент - объект\n result[key] = {\n ...generateValues(inputValues[key].items, params, itemType, paramType, itemPath),\n config: generateParamConfig(itemType, param),\n viewConfig: { ...(param.param ? param.param.viewConfig : {}) },\n custom_data: inputValues[key].custom_data\n };\n }\n }\n else {\n // Если элемент - простой\n result[key] = generateValue(0, item, paramType, itemType, param);\n }\n }\n }\n return result;\n }\n}\nfunction generateParamConfig(itemType, param, paramType = null) {\n switch (itemType) {\n case ITEM_TYPE.custom:\n return {\n type: paramType,\n value: 'text'\n };\n case ITEM_TYPE.interval:\n return {\n dailyRange: 'dailyRange',\n stateMap: false,\n valueType: VALUE_TYPE.absolute,\n duration: SeriesDuration.day,\n count: 1,\n };\n case ITEM_TYPE.single:\n return {\n valueType: VALUE_TYPE.absolute,\n };\n case ITEM_TYPE.series:\n const config = param.config;\n return {\n charttype: ChartViewToType[(config && config.viewtype) ? config.viewtype : ChartViews.lineChart],\n viewtype: (config && config.viewtype) ? config.viewtype : ChartViews.lineChart,\n duration: SeriesDuration.week,\n count: 0,\n generator: true\n };\n case ITEM_TYPE.events:\n return {\n lineType: LineType.eventlog,\n attrList: ['shortname', 'serialnumber', 'eventid', 'name', 'timestmp', 'msg'],\n titleList: ['Short name', 'Serial number', 'Event', 'Full name', 'Time', 'Message'],\n size: 10\n };\n }\n}\nfunction generateValue(index, item, paramType, itemType, param) {\n let res;\n switch (itemType) {\n case ITEM_TYPE.series:\n res = generateSeriesParam(index, paramType, item, param);\n break;\n case ITEM_TYPE.single:\n res = generateSingleParams(index, paramType, item, param);\n break;\n case ITEM_TYPE.table:\n res = generateTableParams(index, paramType, item, param);\n break;\n case ITEM_TYPE.events:\n res = generateEventsParams(index, paramType, item, param);\n break;\n case ITEM_TYPE.objstate:\n res = generateObjStateParams(index, paramType, item, param);\n break;\n case ITEM_TYPE.custom:\n if (paramType === PARAM_TYPE.custom_external) {\n res = generateSingleParams(index, paramType, item, param);\n }\n else {\n res = generateCustomParams(index, paramType, item, param);\n }\n break;\n case ITEM_TYPE.interval:\n res = generateIntervalParams(index, paramType, item, param);\n break;\n case ITEM_TYPE.sysinfo:\n res = generateSysInfoParam(index, paramType, item, param);\n break;\n case ITEM_TYPE.liftinfo:\n res = generateLiftInfoParam(index, paramType, item, param);\n break;\n }\n if (item.custom_data) {\n res.custom_data = res;\n }\n return res;\n}\nfunction updateValue(value) {\n if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n else {\n return value;\n }\n}\nfunction getRandomValue(paramType, item) {\n if (item.available) {\n return item.available[getRandom(0, item.available.length)];\n }\n else {\n if (paramType !== PARAM_TYPE.signal) {\n return getRandom(10, 999);\n }\n else {\n return getRandom(0, 1);\n }\n }\n}\nfunction getIconSet(needIcons) {\n if (!needIcons) {\n return null;\n }\n return {\n error: '',\n falsevalue: '',\n none: '',\n success: '',\n warning: '',\n };\n}\nfunction generateSingleParams(index, paramType, item, param) {\n const config = getConfig(param, index);\n const value = (config.value === undefined || config.value === '') ? getRandomValue(paramType, item) : updateValue(config.value);\n return {\n device: config.param ? {\n controller: { id: null, serialnumber: 'SN' + getRandom(10000, 99999), isOnline: config.isOnline },\n object: {\n id: null,\n shortname: 'Object ' + getRandom(10000, 99999),\n fullname: 'Object ' + getRandom(10000, 99999),\n timezone: 3,\n latitude: 0,\n longitude: 0\n },\n isWorking: config.isWorkingDevice,\n param: {\n id: null,\n name: 'deviceParam name',\n measure: {\n unit: generateMeasureUnit(),\n title: 'Электричество',\n id: getRandom(10000, 99999),\n icon: generateWidgetIcon(),\n },\n type: PARAM_TYPE.value,\n calc: false,\n ctrability: config.ctrability,\n },\n zone: { id: getRandom(10000, 10005), name: `Zone ${getRandom(20000, 20005)}` },\n room: { id: getRandom(10000, 10005), name: `Room ${getRandom(20000, 20005)}` },\n unit: { id: getRandom(10000, 10005), name: `Unit ${getRandom(20000, 20005)}` },\n classifier: { id: getRandom(10000, 10005), name: `Classifier ${getRandom(20000, 20005)}` },\n state: (config.isWorkingDevice ? {\n comment: 'Состояние канала устройства: работоспособен',\n id: 1,\n name: 'работоспособен'\n } : {\n comment: 'Состояние канала устройства: неработоспособен',\n id: -1,\n name: 'неработоспособен'\n }),\n } : null,\n refName: '',\n itemType: ITEM_TYPE.single,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.single, param),\n value: config.data ? value : null,\n viewConfig: { view: config.view, ...(param.param ? param.param.viewConfig : {}) },\n data: config.data ? {\n date: 1548968400000,\n value: value,\n locked: config.locked,\n manually: config.editable,\n unit: { id: 2, available: true, name: '', unavailabilityDate: 0 },\n state: config.state ? {\n color: PARAM_STATE_INT[config.state],\n comment: 'comment',\n idIcon: config.isIcon ? -1 : 0,\n } : null,\n } : null,\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n borders: config.borders ? BORDERS : [],\n icons: getIconSet(config.iconSet),\n isEditing: false,\n };\n}\nfunction generateSeriesParam(index, paramType, item, param) {\n const value = getRandomValue(paramType, item);\n return {\n device: {\n controller: { id: null, serialnumber: 'SN' + getRandom(10000, 99999) },\n object: {\n id: null,\n shortname: 'Object ' + getRandom(10000, 99999),\n fullname: 'Object ' + getRandom(10000, 99999),\n timezone: -3,\n latitude: 0,\n longitude: 0\n },\n param: {\n id: null,\n name: 'deviceParam name',\n measure: {\n unit: generateMeasureUnit(),\n title: 'Электричество',\n id: getRandom(10000, 99999),\n icon: generateWidgetIcon(),\n },\n type: PARAM_TYPE.value,\n calc: false,\n },\n zone: { id: getRandom(10000, 10005), name: `Zone ${getRandom(20000, 20005)}` },\n room: { id: getRandom(10000, 10005), name: `Room ${getRandom(20000, 20005)}` },\n unit: { id: getRandom(10000, 10005), name: `Unit ${getRandom(20000, 20005)}` },\n classifier: { id: getRandom(10000, 10005), name: `Classifier ${getRandom(20000, 20005)}` },\n },\n refName: '',\n itemType: ITEM_TYPE.single,\n widgetId: null,\n title: 'Title param',\n config: { ...generateParamConfig(ITEM_TYPE.series, param), ...param.config },\n value,\n viewConfig: null,\n data: (param.config && param.config.viewtype === ChartViews.candlestickBarChart) ? CANDLE_CHART : generateChartValues(),\n custom: {},\n borders: [],\n isEditing: false,\n };\n}\nfunction generateChartValues() {\n const rand = Math.round(Math.random() * 100);\n return CHART_VALUES.map(val => {\n return { timestmp: val.timestmp, value: val.value + rand };\n });\n}\nfunction generateIntervalParams(index, paramType, item, param) {\n const config = getConfig(param, index);\n const value = (config.value === undefined || config.value === '') ? getRandomValue(paramType, item) : updateValue(config.value);\n return {\n device: {\n controller: { id: null, serialnumber: 'SN' + getRandom(10000, 99999) },\n object: {\n id: null,\n shortname: 'Object ' + getRandom(10000, 99999),\n fullname: 'Object ' + getRandom(10000, 99999),\n timezone: 3,\n latitude: 0,\n longitude: 0\n },\n param: {\n id: null,\n name: 'deviceParam name',\n measure: {\n unit: generateMeasureUnit(),\n title: 'Электричество',\n id: getRandom(10000, 99999),\n icon: generateWidgetIcon(),\n },\n type: PARAM_TYPE.value,\n calc: false,\n ctrability: config.ctrability,\n },\n zone: { id: getRandom(10000, 10005), name: `Zone ${getRandom(20000, 20005)}` },\n room: { id: getRandom(10000, 10005), name: `Room ${getRandom(20000, 20005)}` },\n unit: { id: getRandom(10000, 10005), name: `Unit ${getRandom(20000, 20005)}` },\n classifier: { id: getRandom(10000, 10005), name: `Classifier ${getRandom(20000, 20005)}` },\n },\n refName: '',\n itemType: ITEM_TYPE.single,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.single, param),\n value,\n viewConfig: null,\n data: config.data ? {\n states: [{\n 'interval': 21602841,\n 'state': { 'id': 3, 'name': 'критическое', 'color': 'error', 'comment': 'Критическое значение параметра' }\n }, {\n 'interval': 42698374,\n 'state': {\n 'id': 2,\n 'name': 'отклонение',\n 'color': 'warning',\n 'comment': 'Значение параметра отклонилось от нормального'\n }\n }, {\n 'interval': 21414971,\n 'state': { 'id': 1, 'name': 'норма', 'color': 'success', 'comment': 'Нормальное значение параметра' }\n }, {\n 'interval': 18053,\n 'state': { 'id': 0, 'name': 'нет контроля', 'color': 'none', 'comment': 'Значение параметра не контролируется' }\n }], // absolute signal\n switchCount: 1, // signal\n value,\n percent: 1, // relative и increment\n min: 1, // absolute\n max: 1, // absolute\n state: config.state ? {\n color: PARAM_STATE_INT[config.state],\n comment: 'comment',\n idIcon: config.isIcon ? -1 : 0,\n } : null,\n 'beginInterval': 1556658000000,\n 'endInterval': 1557139222542,\n valueMap: [{ interval: -84606254, value: 0 }, { interval: 1806254, value: 1 }],\n } : null,\n custom: {},\n borders: config.borders ? BORDERS : [],\n isEditing: false,\n };\n}\nfunction generateEventsParams(index, paramType, item, param) {\n const getEvent = () => {\n return {\n 'id': Math.round(Math.random() * 100000),\n 'shortname': 'БЕЛКА',\n 'serialnumber': 'SQUIRREL',\n 'eventid': Math.round(Math.random() * 100000),\n 'name': '0pus334',\n 'timestmp': 1694157120464,\n 'paramname': null,\n 'paramvalue': null,\n 'msg': '0pus334',\n 'cdpid': null,\n 'ccpid': null,\n 'categoryid': null,\n 'media': [],\n 'criticalId': 4,\n 'criticalName': 'success',\n 'closeTime': 1694157120464,\n 'closed': Math.random() > 0.5,\n 'processed': Math.random() > 0.5,\n 'value': null\n };\n };\n const rowList = [];\n if (param.generateConfig.duration) {\n for (let i = 0; i < getRandom(6, 30); i++) {\n rowList.push(getEvent());\n }\n }\n else {\n for (let i = 0; i < (param.generateConfig.count ?? 20); i++) {\n rowList.push(getEvent());\n }\n }\n return {\n data: { rowList },\n config: { attrList: ['shortname', 'serialnumber', 'msg'], titleList: ['Объект', 'Сер.номер', 'Сообщение'] }\n };\n}\nfunction generateObjStateParams(index, paramType, item, param) {\n return {\n config: { rubricId: 1 },\n data: {\n date: 1697487855625,\n states: [\n {\n count: 5,\n id: 3,\n name: 'активен',\n },\n {\n count: 25,\n id: 2,\n name: 'не работает',\n }\n ]\n }\n };\n}\nfunction generateCustomParams(index, paramType, item, param) {\n const config = getConfig(param, index);\n if (paramType === PARAM_TYPE.custom_string) {\n const defValue = BIG_TEXT.slice(0, Math.min(config.paragraphCount || 2, 5)).join('\\n');\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: config.value ? config.value : defValue,\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_objstate) {\n const defValue = 3;\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: config.value ? config.value : defValue,\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_forge) {\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: config.value ? config.value : '',\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_fuxa) {\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: config.value ? config.value : '',\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_json) {\n const defValue = undefined;\n let json_value;\n try {\n json_value = config.value ? JSON.parse(config.value) : defValue;\n }\n catch (e) {\n }\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: json_value,\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_archer) {\n const res = {\n files: config.files ? { json: config.files.json, svg: config.files.svg } : null,\n value: (config.archer && config.archer.value) ? config.archer.value : null,\n viewConfig: {},\n };\n if (config.archer) {\n for (const key in config.archer) {\n if (config.archer.hasOwnProperty(key)) {\n res[key] = config.archer[key];\n }\n }\n }\n return res;\n }\n if (paramType === PARAM_TYPE.custom_file) {\n const res = {\n files: config.files,\n value: null,\n viewConfig: {},\n };\n return res;\n }\n if (paramType === PARAM_TYPE.custom_select) {\n const defValue = null;\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: item.custom_data.items.find(val => val.value === config.selectValue),\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n canEditable: config.editable,\n isEditing: false,\n };\n }\n if (paramType === PARAM_TYPE.custom_dashboard) {\n const widgets = [\n {\n title: 'Widget 1',\n dashboard: {\n id: 1,\n dashname: 'Dash 1',\n type: DashboardType.WEB,\n objrubric: {\n id: 0,\n shortname: 'Rubric'\n }\n },\n widgetclass: {\n id: 1,\n name: 'text',\n storeId: 'text',\n }\n },\n {\n title: 'Widget 2',\n dashboard: {\n id: 1,\n dashname: 'Dash 1',\n type: DashboardType.WEB,\n objrubric: {\n id: 0,\n shortname: 'Rubric'\n }\n },\n widgetclass: {\n id: 1,\n name: 'text',\n storeId: 'text',\n }\n },\n {\n title: 'Widget 3',\n dashboard: {\n id: 1,\n dashname: 'Dash 1',\n type: DashboardType.WEB,\n objrubric: {\n id: 0,\n shortname: 'Rubric'\n }\n },\n widgetclass: {\n id: 1,\n name: 'text',\n storeId: 'text',\n }\n },\n ];\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.custom,\n widgetId: null,\n title: config.title !== null ? config.title : 'Title param',\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\n value: widgets,\n viewConfig: {},\n dashboardLink: config.pageLink ? { dashname: 'Test dashname', id: 2 } : null,\n custom: {},\n };\n }\n}\nfunction generateWidgetIcon() {\n return {\n name: 'icon',\n id: 1,\n filepath: 'path',\n iconset: {\n id: 1,\n name: 'iconset',\n imagetype: 1\n }\n };\n}\nfunction generateTableParams(index, paramType, item, param) {\n const values = [];\n for (let i = 0; i < param.generateConfig.rows; i++) {\n values[i] = [];\n for (let j = 0; j < param.generateConfig.columns; j++) {\n // if (Math.random() < 0.9) {\n values[i][j] = generateSingleParams(index, paramType, item, param);\n // } else {\n // values[i][j] = null;\n // }\n }\n }\n const colConfig = [];\n const rowConfig = [];\n for (let i = 1; i <= param.generateConfig.rows; i++) {\n rowConfig.push({ name: `Row ${i}` });\n }\n for (let i = 0; i <= param.generateConfig.columns; i++) {\n colConfig.push(getRandomCol());\n }\n return {\n device: null,\n refName: '',\n itemType: ITEM_TYPE.single,\n widgetId: null,\n title: 'Title param',\n config: {},\n values,\n viewConfig: {\n rowsName: ['row 1', 'row 2'],\n colsName: ['col 1', 'col 2'],\n cols: param.generateConfig.columns,\n rows: param.generateConfig.rows,\n visibleRow: param.generateConfig.visibleRow,\n visibleCol: param.generateConfig.visibleCol,\n view: param.generateConfig.view,\n table: {\n cols: param.generateConfig.columns,\n rows: param.generateConfig.rows,\n visibleRow: param.generateConfig.visibleRow,\n visibleCol: param.generateConfig.visibleCol,\n colConfig,\n rowConfig,\n }\n },\n custom: {},\n borders: [],\n isEditing: false,\n };\n}\nfunction getRandomCol(hasLabel = true) {\n const rnd = Math.random();\n if (rnd <= .25) {\n return { name: hasLabel ? 'Col Fit' : undefined, widthType: 'fit-content' };\n }\n else if (rnd <= .5) {\n return { name: hasLabel ? 'Col Auto' : undefined, widthType: 'auto' };\n }\n else if (rnd <= .8) {\n return { name: hasLabel ? 'Col Fix Px100' : undefined, widthType: 'fix', size: { unit: 'px', value: 100 } };\n }\n else {\n return { name: hasLabel ? 'Col Fix %20' : undefined, widthType: 'fix', size: { unit: '%', value: 20 } };\n }\n}\nfunction generateSysInfoParam(index, paramType, item, param) {\n return {\n id: 1,\n device: null,\n refName: '',\n itemType: ITEM_TYPE.sysinfo,\n widgetId: null,\n title: 'Title param',\n config: { rubricId: 1174 },\n data: {\n controllersInfo: { total: getRandom(0, 10), online: getRandom(0, 10), offline: getRandom(0, 10) },\n date: Date.now()\n }\n };\n}\nfunction generateLiftInfoParam(index, paramType, item, param) {\n return {\n id: 1,\n device: null,\n refName: '',\n itemType: ITEM_TYPE.liftinfo,\n widgetId: null,\n title: 'Title param',\n config: { deviceClassifierId: 76, objectIds: [372] },\n data: {\n liftsInfo: { total: getRandom(0, 10), online: getRandom(0, 10), offline: getRandom(0, 10) },\n date: Date.now()\n }\n };\n}\nfunction generateMeasureUnit() {\n const units = ['град', '°C', 'лит', 'км', '%'];\n return units[getRandom(0, units.length - 1)];\n}\n// Возвращает случайное число между min (включительно) и max (включительно)\nfunction getRandom(min, max) {\n return Math.round(Math.random() * (max - min) + min);\n}\nfunction getConfig(param, index) {\n if (param?.generateConfig?.items) {\n return param.generateConfig.items[index] || {};\n }\n return param?.generateConfig ?? {};\n}\nconst BORDERS = [{\n 'state': {\n 'id': 3,\n 'name': 'критическое',\n 'color': 'error',\n 'comment': 'Критическое значение параметра'\n }, 'intervals': [{ 'from': 70.0, 'to': null }]\n }, {\n 'state': {\n 'id': 2,\n 'name': 'отклонение',\n 'color': 'warning',\n 'comment': 'Значение параметра отклонилось от нормального'\n }, 'intervals': [{ 'from': 30.0, 'to': 70.0 }]\n }, {\n 'state': { 'id': 1, 'name': 'норма', 'color': 'success', 'comment': 'Нормальное значение параметра' },\n 'intervals': [{ 'from': 0.0, 'to': 30.0 }]\n }, {\n 'state': {\n 'id': 0,\n 'name': 'нет контроля',\n 'color': 'none',\n 'comment': 'Значение параметра не контролируется'\n }, 'intervals': [{ 'from': -20.0, 'to': 0.0 }]\n }, {\n 'state': {\n 'id': -1,\n 'name': 'недостоверно',\n 'color': 'falsevalue',\n 'comment': 'Недостоверное значение параметра'\n }, 'intervals': [{ 'from': null, 'to': -20.0 }]\n }].reverse();\nconst CHART_VALUES = [\n {\n 'timestmp': 1645551000000,\n 'value': null\n },\n {\n 'timestmp': 1645552800000,\n 'value': 32.8258476\n },\n {\n 'timestmp': 1645554600000,\n 'value': 48.659893\n },\n {\n 'timestmp': 1645556400000,\n 'value': 50.5622482\n },\n {\n 'timestmp': 1645558200000,\n 'value': 51.6553383\n },\n {\n 'timestmp': 1645560000000,\n 'value': 50.4319\n },\n {\n 'timestmp': 1645561800000,\n 'value': 53.0366707\n },\n {\n 'timestmp': 1645563600000,\n 'value': 47.8176422\n },\n {\n 'timestmp': 1645565400000,\n 'value': 51.6424713\n },\n {\n 'timestmp': 1645567200000,\n 'value': 51.812233\n },\n {\n 'timestmp': 1645569000000,\n 'value': 47.3627434\n },\n {\n 'timestmp': 1645570800000,\n 'value': 51.7313538\n },\n {\n 'timestmp': 1645572600000,\n 'value': 49.4223938\n },\n {\n 'timestmp': 1645574400000,\n 'value': 52.5739746\n },\n {\n 'timestmp': 1645576200000,\n 'value': 51.6155472\n },\n {\n 'timestmp': 1645578000000,\n 'value': 49.1932793\n },\n {\n 'timestmp': 1645579800000,\n 'value': 51.5943527\n },\n {\n 'timestmp': 1645581600000,\n 'value': 50.5669518\n },\n {\n 'timestmp': 1645583400000,\n 'value': 48.7359962\n },\n {\n 'timestmp': 1645585200000,\n 'value': 53.4266319\n },\n {\n 'timestmp': 1645587000000,\n 'value': 50.285614\n },\n {\n 'timestmp': 1645588800000,\n 'value': 49.249176\n },\n {\n 'timestmp': 1645590600000,\n 'value': 50.412838\n },\n {\n 'timestmp': 1645592400000,\n 'value': 50.2692413\n },\n {\n 'timestmp': 1645594200000,\n 'value': 52.9794044\n },\n {\n 'timestmp': 1645596000000,\n 'value': 49.6678772\n },\n {\n 'timestmp': 1645597800000,\n 'value': 49.4464493\n },\n {\n 'timestmp': 1645599600000,\n 'value': 52.1587296\n },\n {\n 'timestmp': 1645601400000,\n 'value': 49.9102745\n },\n {\n 'timestmp': 1645603200000,\n 'value': 51.7093391\n },\n {\n 'timestmp': 1645605000000,\n 'value': 51.2751236\n },\n {\n 'timestmp': 1645606800000,\n 'value': 48.9914932\n },\n {\n 'timestmp': 1645608600000,\n 'value': 51.0573616\n },\n {\n 'timestmp': 1645610400000,\n 'value': 51.5929947\n },\n {\n 'timestmp': 1645612200000,\n 'value': 50.5275879\n },\n {\n 'timestmp': 1645614000000,\n 'value': 52.7304688\n },\n {\n 'timestmp': 1645615800000,\n 'value': 48.162323\n },\n {\n 'timestmp': 1645617600000,\n 'value': 52.0599556\n },\n {\n 'timestmp': 1645619400000,\n 'value': 49.9631157\n },\n {\n 'timestmp': 1645621200000,\n 'value': 48.4315491\n },\n {\n 'timestmp': 1645623000000,\n 'value': 53.9735832\n },\n {\n 'timestmp': 1645624800000,\n 'value': 47.5742874\n },\n {\n 'timestmp': 1645626600000,\n 'value': 48.5623856\n },\n {\n 'timestmp': 1645628400000,\n 'value': 52.1424675\n },\n {\n 'timestmp': 1645630200000,\n 'value': 48.3597183\n },\n {\n 'timestmp': 1645632000000,\n 'value': 50.9834785\n },\n {\n 'timestmp': 1645633800000,\n 'value': 51.0054741\n },\n {\n 'timestmp': 1645635600000,\n 'value': 48.7688789\n },\n {\n 'timestmp': 1645637400000,\n 'value': 51.7769661\n },\n {\n 'timestmp': 1645639200000,\n 'value': 49.1443024\n },\n {\n 'timestmp': 1645641000000,\n 'value': 51.7417603\n },\n {\n 'timestmp': 1645642800000,\n 'value': 49.8708458\n },\n {\n 'timestmp': 1645644600000,\n 'value': 48.1264877\n },\n {\n 'timestmp': 1645646400000,\n 'value': 51.6495094\n },\n {\n 'timestmp': 1645648200000,\n 'value': 50.5347023\n },\n {\n 'timestmp': 1645650000000,\n 'value': 49.7064209\n },\n {\n 'timestmp': 1645651800000,\n 'value': 52.7749977\n },\n {\n 'timestmp': 1645653600000,\n 'value': 49.4221077\n },\n {\n 'timestmp': 1645655400000,\n 'value': 52.6562157\n },\n {\n 'timestmp': 1645657200000,\n 'value': 51.1348381\n },\n {\n 'timestmp': 1645659000000,\n 'value': 50.4315948\n },\n {\n 'timestmp': 1645660800000,\n 'value': 52.5681114\n },\n {\n 'timestmp': 1645662600000,\n 'value': 48.9252357\n },\n {\n 'timestmp': 1645664400000,\n 'value': 50.894516\n },\n {\n 'timestmp': 1645666200000,\n 'value': 51.7634201\n },\n {\n 'timestmp': 1645668000000,\n 'value': 51.0939255\n },\n {\n 'timestmp': 1645669800000,\n 'value': 53.2192345\n },\n {\n 'timestmp': 1645671600000,\n 'value': 51.7018623\n },\n {\n 'timestmp': 1645673400000,\n 'value': 50.0135651\n },\n {\n 'timestmp': 1645675200000,\n 'value': 51.3010292\n },\n {\n 'timestmp': 1645677000000,\n 'value': 46.5560951\n },\n {\n 'timestmp': 1645678800000,\n 'value': 52.3065147\n },\n {\n 'timestmp': 1645680600000,\n 'value': 49.7032089\n },\n {\n 'timestmp': 1645682400000,\n 'value': 48.5279617\n },\n {\n 'timestmp': 1645684200000,\n 'value': 52.1763\n },\n {\n 'timestmp': 1645686000000,\n 'value': 48.1455116\n },\n {\n 'timestmp': 1645687800000,\n 'value': 51.1893082\n },\n {\n 'timestmp': 1645689600000,\n 'value': 51.143837\n },\n {\n 'timestmp': 1645691400000,\n 'value': 48.4687042\n },\n {\n 'timestmp': 1645693200000,\n 'value': 51.5306282\n },\n {\n 'timestmp': 1645695000000,\n 'value': 50.565773\n },\n {\n 'timestmp': 1645696800000,\n 'value': 48.7029495\n },\n {\n 'timestmp': 1645698600000,\n 'value': 53.7815475\n },\n {\n 'timestmp': 1645700400000,\n 'value': 48.2070236\n },\n {\n 'timestmp': 1645702200000,\n 'value': 51.9778252\n },\n {\n 'timestmp': 1645704000000,\n 'value': 50.9588737\n },\n {\n 'timestmp': 1645705800000,\n 'value': 49.4310341\n },\n {\n 'timestmp': 1645707600000,\n 'value': 52.0059052\n },\n {\n 'timestmp': 1645709400000,\n 'value': 48.3030815\n },\n {\n 'timestmp': 1645711200000,\n 'value': 50.1639862\n },\n {\n 'timestmp': 1645713000000,\n 'value': 50.9100494\n },\n {\n 'timestmp': 1645714800000,\n 'value': 48.6635818\n },\n {\n 'timestmp': 1645716600000,\n 'value': 53.3434525\n },\n {\n 'timestmp': 1645718400000,\n 'value': 51.4400101\n },\n {\n 'timestmp': 1645720200000,\n 'value': 50.3772774\n },\n {\n 'timestmp': 1645722000000,\n 'value': 53.0157394\n },\n {\n 'timestmp': 1645723800000,\n 'value': 48.575489\n },\n {\n 'timestmp': 1645725600000,\n 'value': 50.9716911\n },\n {\n 'timestmp': 1645727400000,\n 'value': 51.041893\n },\n {\n 'timestmp': 1645729200000,\n 'value': 50.2014465\n },\n {\n 'timestmp': 1645731000000,\n 'value': 51.8398705\n },\n {\n 'timestmp': 1645732800000,\n 'value': 50.1148033\n },\n {\n 'timestmp': 1645734600000,\n 'value': 49.1726875\n },\n {\n 'timestmp': 1645736400000,\n 'value': 49.8998184\n },\n {\n 'timestmp': 1645738200000,\n 'value': 47.0266991\n },\n {\n 'timestmp': 1645740000000,\n 'value': 51.0160942\n },\n {\n 'timestmp': 1645741800000,\n 'value': 51.2925758\n },\n {\n 'timestmp': 1645743600000,\n 'value': 45.3985367\n },\n {\n 'timestmp': 1645745400000,\n 'value': 54.5472412\n },\n {\n 'timestmp': 1645747200000,\n 'value': 53.5879326\n },\n {\n 'timestmp': 1645749000000,\n 'value': 50.4831352\n },\n {\n 'timestmp': 1645750800000,\n 'value': 49.7594566\n },\n {\n 'timestmp': 1645752600000,\n 'value': 49.4067154\n },\n {\n 'timestmp': 1645754400000,\n 'value': 53.5835075\n },\n {\n 'timestmp': 1645756200000,\n 'value': 44.7278328\n },\n {\n 'timestmp': 1645758000000,\n 'value': 54.8701286\n },\n {\n 'timestmp': 1645759800000,\n 'value': 52.8954544\n },\n {\n 'timestmp': 1645761600000,\n 'value': 47.3508835\n },\n {\n 'timestmp': 1645763400000,\n 'value': 50.3395233\n },\n {\n 'timestmp': 1645765200000,\n 'value': 54.7109451\n },\n {\n 'timestmp': 1645767000000,\n 'value': 46.1835632\n },\n {\n 'timestmp': 1645768800000,\n 'value': 54.3547058\n },\n {\n 'timestmp': 1645770600000,\n 'value': 44.5034637\n },\n {\n 'timestmp': 1645772400000,\n 'value': 45.6780167\n },\n {\n 'timestmp': 1645774200000,\n 'value': 51.7169151\n },\n {\n 'timestmp': 1645776000000,\n 'value': 50.1562195\n },\n {\n 'timestmp': 1645777800000,\n 'value': 49.2977676\n },\n {\n 'timestmp': 1645779600000,\n 'value': 47.7331276\n },\n {\n 'timestmp': 1645781400000,\n 'value': 49.2630501\n },\n {\n 'timestmp': 1645783200000,\n 'value': 51.4490509\n },\n {\n 'timestmp': 1645785000000,\n 'value': 48.8069763\n },\n {\n 'timestmp': 1645786800000,\n 'value': 51.788662\n },\n {\n 'timestmp': 1645788600000,\n 'value': 50.8114243\n },\n {\n 'timestmp': 1645790400000,\n 'value': 48.7802238\n },\n {\n 'timestmp': 1645792200000,\n 'value': 52.4341049\n },\n {\n 'timestmp': 1645794000000,\n 'value': 42.9888535\n },\n {\n 'timestmp': 1645795800000,\n 'value': null\n }\n];\nconst CANDLE_CHART = [{ 'timestmp': 1548968400000, 'open': 24.0, 'close': 84.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548970200000,\n 'open': 84.0,\n 'close': 22.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1548972000000, 'open': 22.0, 'close': 55.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548973800000,\n 'open': 55.0,\n 'close': 58.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1548975600000, 'open': 58.0, 'close': 25.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548977400000,\n 'open': 25.0,\n 'close': 97.0,\n 'low': 1.0,\n 'high': 99.0\n }, { 'timestmp': 1548979200000, 'open': 90.0, 'close': 16.0, 'low': 1.0, 'high': 99.0 }, {\n 'timestmp': 1548981000000,\n 'open': 16.0,\n 'close': 57.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1548982800000, 'open': 57.0, 'close': 60.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548984600000,\n 'open': 60.0,\n 'close': 24.0,\n 'low': 2.0,\n 'high': 100.0\n }, { 'timestmp': 1548986400000, 'open': 24.0, 'close': 85.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548988200000,\n 'open': 85.0,\n 'close': 26.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1548990000000, 'open': 26.0, 'close': 59.0, 'low': 1.0, 'high': 99.0 }, {\n 'timestmp': 1548991800000,\n 'open': 59.0,\n 'close': 69.0,\n 'low': 1.0,\n 'high': 99.0\n }, { 'timestmp': 1548993600000, 'open': 69.0, 'close': 18.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548995400000,\n 'open': 18.0,\n 'close': 86.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1548997200000, 'open': 86.0, 'close': 35.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1548999000000,\n 'open': 35.0,\n 'close': 53.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549000800000, 'open': 53.0, 'close': 62.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549002600000,\n 'open': 62.0,\n 'close': 30.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549004400000, 'open': 30.0, 'close': 96.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549006200000,\n 'open': 96.0,\n 'close': 39.0,\n 'low': 2.0,\n 'high': 99.0\n }, { 'timestmp': 1549008000000, 'open': 39.0, 'close': 49.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549009800000,\n 'open': 49.0,\n 'close': 56.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549011600000, 'open': 56.0, 'close': 19.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549013400000,\n 'open': 19.0,\n 'close': 73.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549015200000, 'open': 73.0, 'close': 22.0, 'low': 1.0, 'high': 99.0 }, {\n 'timestmp': 1549017000000,\n 'open': 22.0,\n 'close': 43.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549018800000, 'open': 43.0, 'close': 74.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549020600000,\n 'open': 74.0,\n 'close': 24.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549022400000, 'open': 24.0, 'close': 78.0, 'low': 1.0, 'high': 100.0 }, {\n 'timestmp': 1549024200000,\n 'open': 78.0,\n 'close': 43.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549026000000, 'open': 43.0, 'close': 47.0, 'low': 2.0, 'high': 100.0 }, {\n 'timestmp': 1549027800000,\n 'open': 47.0,\n 'close': 73.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549029600000, 'open': 73.0, 'close': 2.0, 'low': 2.0, 'high': 100.0 }, {\n 'timestmp': 1549031400000,\n 'open': 2.0,\n 'close': 76.0,\n 'low': 1.0,\n 'high': 100.0\n }, { 'timestmp': 1549033200000, 'open': 76.0, 'close': 33.0, 'low': 1.0, 'high': 99.0 }, {\n 'timestmp': 1549035000000,\n 'open': 33.0,\n 'close': 45.0,\n 'low': 2.0,\n 'high': 100.0\n }];\nconst BIG_TEXT = [\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi convallis congue nisi vel congue. Nulla vel sem non diam condimentum consectetur. Vivamus venenatis vehicula arcu, nec porta nisl. Aliquam vitae euismod arcu. Aenean fringilla, ligula et convallis fermentum, felis ligula commodo ante, non bibendum arcu diam vel ligula. Nullam lobortis interdum lorem ut convallis. Suspendisse potenti. Sed malesuada suscipit odio. Morbi a magna quis arcu semper consequat.',\n '\\n\\nMauris posuere, nunc eget pulvinar feugiat, urna quam egestas enim, non interdum enim arcu eu diam. Curabitur suscipit aliquet luctus. Proin eleifend nisl vitae tellus pulvinar elementum. Praesent sollicitudin, dui eu ultrices maximus, orci tortor efficitur libero, eu eleifend leo orci ut quam. Donec dignissim vel nibh sit amet congue. Suspendisse congue lacinia suscipit. Donec nec massa facilisis, aliquet leo nec, accumsan mi. Nam fringilla massa vitae tortor mollis congue. Sed purus arcu, ornare non turpis eu, molestie laoreet leo. Nunc eu rhoncus orci. Pellentesque quis nisi tempus, sagittis erat eu, finibus tortor. Fusce nisi ex, facilisis vitae aliquet in, rutrum sed neque. Aliquam pellentesque tellus risus, sit amet hendrerit nulla condimentum at. Aliquam ultrices, nisi nec sagittis imperdiet, velit orci semper dui, vitae bibendum sem felis vel leo. Ut non leo auctor, dictum nunc sodales, dapibus dolor.',\n '\\n\\nInteger blandit maximus sem, vel accumsan augue ultrices in. Curabitur ut dignissim magna, ut semper sem. Suspendisse tellus tortor, semper nec metus eu, maximus sodales tellus. Morbi sed tortor vel est vehicula blandit. Etiam id est risus. Ut consequat quis massa et commodo. Pellentesque fringilla commodo quam ac vestibulum. Quisque euismod elit velit, nec ultricies ligula consequat vitae. Ut aliquet sed sapien et elementum. Praesent rhoncus convallis nulla, vitae tempus magna euismod sit amet. Sed risus nunc, fringilla vel orci a, cursus rhoncus quam. Mauris tincidunt dolor lacus, et condimentum nisl tempor sit amet. Sed eros tortor, auctor a vulputate et, vulputate id ante. Quisque ultrices mollis vulputate. Aenean ut augue sem.',\n '\\n\\nDonec luctus mauris nec nibh varius, in posuere felis scelerisque. Donec vitae dapibus felis. In interdum, libero vehicula pellentesque iaculis, orci felis tempus mauris, vel ullamcorper leo odio quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed fringilla vestibulum urna, nec sollicitudin lacus porta eu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean posuere ultrices nunc sit amet pretium. Quisque eget tortor semper, convallis diam sit amet, gravida purus. Maecenas finibus gravida mi eu convallis. Vivamus quis volutpat dui, vel elementum mauris. Aenean pretium odio tortor, et placerat ligula congue sit amet. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ut tristique nisi. Suspendisse pharetra elit a ligula convallis dictum. Nunc egestas non leo eu ultrices.',\n '\\n\\nPraesent pulvinar nunc nec quam consectetur fringilla. Pellentesque tristique ex id mollis fermentum. Praesent sit amet lacinia nibh. Nulla at ex consequat, hendrerit sapien in, tincidunt tortor. Etiam eget efficitur libero. Proin consequat tellus at placerat sagittis. Nam vitae euismod sapien, sit amet ullamcorper odio. Sed tincidunt ut sem eu pellentesque. Sed efficitur nulla urna, sed finibus enim imperdiet in. Nulla ac nulla finibus, eleifend urna quis, semper felis.'\n];\n\nclass WidgetDialog {\n constructor(opts) {\n this.onClose = opts.close;\n }\n close() {\n if (this.onClose) {\n this.onClose();\n }\n }\n}\n\nclass WidgetContainer {\n /**\n * @deprecated\n * @param componentType\n */\n createComponentModule(componentType) {\n throw new Error('You should implement this method');\n }\n /**\n * @deprecated\n * @param opts\n */\n createNewComponent(opts) {\n throw new Error('You should implement this method');\n }\n}\n\n/*\n * Public API Surface of widget-common\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayNumberPipe, ChartTypeToView, ChartTypes, ChartUrl, ChartViewToType, ChartViews, CommunicationCommand, CommunicationService, Component, ControllerState, DashboardSharedModule, DashboardType, EChartComponentModule, EchartComponent, FilterIndexOfPipe, ForgeComponent, ForgeComponentModule, INTERVAL_PARAM_VALUE, ITEM_TYPE, LineType, MakeChartUrl, MakeIconUrl, MakePictureUrl, PARAM_STATE, PARAM_STATE_INT, PARAM_TYPE, PARAM_TYPE_ITOS, PRIME_MODULES, PeriodFromDatePipe, PieChartComponent, PieChartComponentModule, SINGLE_PARAM_VALUE, STATE_COLORS, SeriesDuration, SiteTheme, Utils, VALUE_TYPE, WidgetComponent, WidgetComponentContainer, WidgetContainer, WidgetCustomFieldType, WidgetDialog, _, addArrayItem, assignValues, clearParams, clearValue, common, convertArcherToItem, createGenerateItemConfig, createParamList, findParam, generateValues, getRandom, prepareExternalJSON, updateIndex, updateWidgetMediaUrl, validateArcherParams };\n//# sourceMappingURL=inspark-widget-common.mjs.map\n","map":null,"preliminaryFileName":"inspark-widget-common.mjs","sourcemapFileName":"inspark-widget-common.mjs.map"},{"fileName":"inspark-widget-common.mjs.map","names":[],"needsCodeReference":false,"originalFileName":null,"originalFileNames":[],"source":"{\"version\":3,\"file\":\"inspark-widget-common.mjs\",\"sources\":[\"../../../../projects/widget-common/src/lib/communication.service.ts\",\"../../../../projects/widget-common/src/lib/common.ts\",\"../../../../projects/widget-common/src/lib/loader.ts\",\"../../../../projects/widget-common/src/lib/widget.interface.ts\",\"../../../../projects/widget-common/src/lib/widget.component.ts\",\"../../../../projects/widget-common/src/lib/widget.utils.ts\",\"../../../../projects/widget-common/src/lib/forge/extenstion.ts\",\"../../../../projects/widget-common/src/lib/forge/ParamAssign.ts\",\"../../../../projects/widget-common/src/lib/forge/Script.service.ts\",\"../../../../projects/widget-common/src/lib/forge/forge.component.ts\",\"../../../../projects/widget-common/src/lib/forge/forge.component.html\",\"../../../../projects/widget-common/src/lib/pie-chart/pie-chart.component.ts\",\"../../../../projects/widget-common/src/lib/pie-chart/pie-chart.component.html\",\"../../../../projects/widget-common/src/lib/echart/ru.ts\",\"../../../../projects/widget-common/src/lib/echart/en.ts\",\"../../../../projects/widget-common/src/lib/echart/echart.component.ts\",\"../../../../projects/widget-common/src/lib/echart/echart.component.html\",\"../../../../projects/widget-common/src/lib/shared.module.ts\",\"../../../../projects/widget-common/src/lib/widget.generator.ts\",\"../../../../projects/widget-common/src/lib/widget.dialog.ts\",\"../../../../projects/widget-common/src/lib/widget-container/widget-container.component.ts\",\"../../../../projects/widget-common/src/public_api.ts\",\"../../../../projects/widget-common/src/inspark-widget-common.ts\"],\"sourcesContent\":[\"import {Injectable} from '@angular/core';\\r\\nimport {Subject} from 'rxjs';\\r\\n\\r\\nexport enum CommunicationCommand {\\r\\n 'values' = 'values',\\r\\n 'params' = 'params',\\r\\n 'locale' = 'locale',\\r\\n 'theme' = 'theme',\\r\\n 'widget' = 'widget',\\r\\n 'resize' = 'resize',\\r\\n 'paramData' = 'paramData',\\r\\n}\\r\\n\\r\\nexport interface CommunicationValue {\\r\\n command?: CommunicationCommand;\\r\\n\\r\\n [k: string]: any;\\r\\n}\\r\\n\\r\\n@Injectable()\\r\\nexport class CommunicationService {\\r\\n\\r\\n private messageSource: Record<string, Subject<CommunicationValue>> = {};\\r\\n message$/*: Record<number, Observable<CommunicationValue>>*/ = {};\\r\\n\\r\\n cache: Record<string, Partial<Record<CommunicationCommand, CommunicationValue>>> = {};\\r\\n\\r\\n create(id: number | string) {\\r\\n const _id = `${id}`.trim();\\r\\n if (!this.messageSource[_id]) {\\r\\n this.messageSource[_id] = new Subject<CommunicationValue>();\\r\\n this.message$[_id] = this.messageSource[_id].asObservable() as any;\\r\\n this.cache[_id] = {};\\r\\n }\\r\\n }\\r\\n\\r\\n next(widgetId: number | string, value: CommunicationValue) {\\r\\n const _id = `${widgetId}`.trim();\\r\\n this.create(_id);\\r\\n this.messageSource[_id].next(value);\\r\\n if (value.command) {\\r\\n this.cache[_id][value.command] = value;\\r\\n }\\r\\n }\\r\\n\\r\\n subscribe(widgetId: number | string, callback: (data: CommunicationValue) => {}) {\\r\\n const _id = `${widgetId}`.trim();\\r\\n this.create(_id);\\r\\n if (this.cache[_id][CommunicationCommand.params]) {\\r\\n callback((this.cache[_id][CommunicationCommand.params]));\\r\\n }\\r\\n for (const k in this.cache[_id]) {\\r\\n if (this.cache[_id].hasOwnProperty(k)) {\\r\\n callback((this.cache[_id][k]));\\r\\n }\\r\\n }\\r\\n return this.message$[_id].subscribe(callback);\\r\\n }\\r\\n}\\r\\n\",\"import {IWidgetClass} from \\\"./widget.interface\\\";\\r\\n\\r\\nclass Common {\\r\\n\\r\\n serviceUrl = '';\\r\\n\\r\\n getWidgetPath(widget: IWidgetClass): string {\\r\\n return `/assets/widgets/${widget.storeId}/`;\\r\\n }\\r\\n\\r\\n transformChartUrlConfig(param: any, isCalc = null, isSignal = null): string {\\r\\n return '';\\r\\n }\\r\\n\\r\\n override(serviceUrl: string, transformChartUrlConfig: any, getWidgetPath: any) {\\r\\n this.serviceUrl = serviceUrl;\\r\\n this.transformChartUrlConfig = transformChartUrlConfig;\\r\\n this.getWidgetPath = getWidgetPath;\\r\\n }\\r\\n\\r\\n}\\r\\n\\r\\nexport const common = new Common();\\r\\n\",\"import {Observable} from 'rxjs';\\r\\nimport {WidgetPackage} from './widget.component';\\r\\n\\r\\n\\r\\nconst WIDGET_CACHE: {\\r\\n [k: string]: Observable<WidgetPackage>\\r\\n} = {};\\r\\n\\r\\n\\r\\n\\r\\nexport function updateWidgetMediaUrl(media: object, url: string) {\\r\\n const res = {};\\r\\n for (const key in media) {\\r\\n if (media.hasOwnProperty(key)) {\\r\\n res[key] = url + media[key];\\r\\n }\\r\\n }\\r\\n return res;\\r\\n}\\r\\n\",\"export enum ITEM_TYPE {\\r\\n 'single' = 1, // Единичные значения параметров\\r\\n 'series' = 2, // Ряды данных\\r\\n 'events' = 3, // Лента событий\\r\\n 'sysinfo' = 4, // Системные событий\\r\\n 'interval' = 5, // Значения параметров на заданном интервале\\r\\n 'table' = 6, // Таблица значений параметров\\r\\n 'custom' = 7, // Поле не требующее обработки сервера\\r\\n 'object' = 8, // Объект\\r\\n 'objstate' = 9, // Объект\\r\\n 'liftinfo' = 10, // Классификатор + объекты\\r\\n}\\r\\n\\r\\n// нет контроля, норма, отклонение, критическое, хз todo Скорей всего нужно перенести в css\\r\\nexport const STATE_COLORS = ['#FFFAFA', '#00e4c8', '#ffd452', '#c95e46', '#f71800', '#008B8B', '#5F9EA0'];\\r\\n\\r\\n// Типы параметров\\r\\nexport enum PARAM_TYPE {\\r\\n 'signal' = 1, // сигнальный\\r\\n 'value' = 2, // мгновенное значение\\r\\n 'increment' = 3, // нарастающий итог\\r\\n 'pulse_counter' = 4, // счетчик импульсов\\r\\n 'string' = 5, // строковый\\r\\n 'image' = 6, // изображение\\r\\n 'text' = 7, // текстовый\\r\\n 'coordinates' = 8, // Координаты\\r\\n\\r\\n 'custom_string' = 11,\\r\\n 'custom_archer' = 12,\\r\\n 'custom_external' = 13, // загрузка параметров через внешний файл\\r\\n 'custom_file' = 14, // загрузка файлов\\r\\n 'custom_json' = 15, // Текст JSON\\r\\n 'custom_select' = 16, // Список\\r\\n 'custom_forge' = 17, // Работа с Autodesk Forge\\r\\n 'custom_dashboard' = 18,\\r\\n 'custom_objstate' = 19,\\r\\n 'custom_fuxa' = 20,\\r\\n\\r\\n\\r\\n // группа виртуальных объектов для работы конфигуратора\\r\\n 'virtual_object' = 90,\\r\\n\\r\\n}\\r\\n\\r\\nexport const PARAM_TYPE_ITOS = {\\r\\n 1: 'param_type_signal',\\r\\n 2: 'param_type_value',\\r\\n 3: 'param_type_increment'\\r\\n};\\r\\n\\r\\n// Типы значений\\r\\nexport enum VALUE_TYPE {\\r\\n 'absolute' = 1,\\r\\n 'relative' = 2,\\r\\n 'signal' = 3,\\r\\n 'increment' = 4,\\r\\n}\\r\\n\\r\\n\\r\\n// Возможные пересечения типа параметров и типа значения\\r\\nexport const INTERVAL_PARAM_VALUE = {\\r\\n [PARAM_TYPE.signal]: [VALUE_TYPE.signal],\\r\\n [PARAM_TYPE.value]: [VALUE_TYPE.absolute, VALUE_TYPE.relative],\\r\\n [PARAM_TYPE.increment]: [VALUE_TYPE.absolute, VALUE_TYPE.relative, VALUE_TYPE.increment]\\r\\n};\\r\\n\\r\\nexport const SINGLE_PARAM_VALUE = {\\r\\n [PARAM_TYPE.signal]: [VALUE_TYPE.signal],\\r\\n [PARAM_TYPE.value]: [VALUE_TYPE.absolute, VALUE_TYPE.relative],\\r\\n [PARAM_TYPE.increment]: [VALUE_TYPE.absolute, VALUE_TYPE.relative]\\r\\n};\\r\\n\\r\\n\\r\\nexport interface Border {\\r\\n state: { id: number, name: string, color: string, comment: string };\\r\\n intervals: { from: number, to: number }[];\\r\\n}\\r\\n\\r\\n\\r\\nexport interface ItemSingle extends IWidgetParam<ParamConfigSingle> {\\r\\n value: any;\\r\\n data: SingleValue;\\r\\n}\\r\\n\\r\\nexport interface ItemInterval extends IWidgetParam<ParamConfigInterval> {\\r\\n value: any;\\r\\n data: IntervalValue;\\r\\n}\\r\\n\\r\\nexport interface ItemSysInfo extends IWidgetParam<ParamConfigSysInfo> {\\r\\n data: SysInfoValue;\\r\\n}\\r\\n\\r\\nexport interface ItemLiftInfo extends IWidgetParam<ParamConfigLiftInfo> {\\r\\n data: LiftInfoValue;\\r\\n}\\r\\n\\r\\nexport interface ItemSeries extends IWidgetParam<ParamConfigSeries> {\\r\\n value: any;\\r\\n data: SeriesValue;\\r\\n}\\r\\n\\r\\nexport interface ItemTable extends IWidgetParam {\\r\\n values: TableValues;\\r\\n}\\r\\n\\r\\nexport interface ItemCustom extends IWidgetParam<ParamConfigCustom> {\\r\\n value: any;\\r\\n files?: any; // For Archer\\r\\n}\\r\\n\\r\\nexport interface ItemParent {\\r\\n [k: string]: WidgetItem | WidgetItem[] | ParamConfig;\\r\\n}\\r\\n\\r\\nexport type WidgetItem = any | ItemSingle | ItemTable | ItemSeries | ItemInterval | ItemParent\\r\\n | EventValues | SysInfoValue | ObjStateValues | LiftInfoValue;\\r\\n\\r\\nexport interface WidgetItems {\\r\\n [k: string]: WidgetItem;\\r\\n}\\r\\n\\r\\n\\r\\nexport enum SiteTheme {\\r\\n 'dark' = 'dark',\\r\\n 'light' = 'light'\\r\\n}\\r\\n\\r\\n\\r\\nexport type IWidgetParamTable<TConfig = any> = IWidgetParam<TConfig>[][];\\r\\n\\r\\n// структура для конфигуратора\\r\\nexport interface ParamConfigurator<TConfig = any> {\\r\\n name: string;\\r\\n title: string;\\r\\n itemType: ITEM_TYPE;\\r\\n paramType: PARAM_TYPE;\\r\\n value?: IWidgetParam<TConfig>; // Для обычных значений\\r\\n values?: IWidgetParamTable<TConfig>; // Для табличных значений\\r\\n items?: ParamConfigurator[];\\r\\n isArray?: boolean;\\r\\n maxItems?: number;\\r\\n parent: ParamConfigurator;\\r\\n views?: string[]; // Варианты представлений параметра\\r\\n viewConfig?: IWidgetParamConfig;\\r\\n config?: ParamConfigInterval | ParamConfigSeries | ParamConfigSingle | ParamConfigEvents | ParamConfigCustom;\\r\\n filter?: any;\\r\\n generateConfig?: GenerateConfig;\\r\\n param?: WidgetParamChildren;\\r\\n}\\r\\n\\r\\nexport interface GenerateConfig extends GenerateConfigItem {\\r\\n count?: number;\\r\\n items?: GenerateConfigItem[];\\r\\n pictureId?: boolean;\\r\\n\\r\\n // Для таблиц\\r\\n columns?: number;\\r\\n rows?: number;\\r\\n visibleRow?: boolean;\\r\\n visibleCol?: boolean;\\r\\n\\r\\n\\r\\n // Для событий\\r\\n duration?: SeriesDuration;\\r\\n}\\r\\n\\r\\nexport interface GenerateConfigItem {\\r\\n // Для всех параметров\\r\\n pageLink?: boolean;\\r\\n editable?: boolean;\\r\\n data?: boolean;\\r\\n param?: boolean;\\r\\n locked?: boolean;\\r\\n isIcon?: boolean;\\r\\n iconSet?: boolean;\\r\\n title?: string;\\r\\n view?: string; // Тип отображения\\r\\n isWorkingDevice?: boolean;\\r\\n state?: number;\\r\\n ctrability?: boolean;\\r\\n value?: any;\\r\\n\\r\\n\\r\\n // Для мгновенных\\r\\n borders?: boolean;\\r\\n\\r\\n // Для кастомных\\r\\n paragraphCount?: number;\\r\\n\\r\\n\\r\\n // устроства\\r\\n isOnline?: boolean;\\r\\n\\r\\n // Для арчера\\r\\n files?: { [k: string]: string };\\r\\n archer?: any;\\r\\n\\r\\n // для списка\\r\\n selectValue?: number | string;\\r\\n}\\r\\n\\r\\nexport enum PARAM_STATE {\\r\\n 'falsevalue' = -1,\\r\\n 'none' = 0,\\r\\n 'success' = 1,\\r\\n 'warning' = 2,\\r\\n 'error' = 3,\\r\\n 'maintenance' = 4,\\r\\n\\r\\n}\\r\\n\\r\\nexport const PARAM_STATE_INT = [];\\r\\n\\r\\nPARAM_STATE_INT['-1'] = 'falsevalue';\\r\\nPARAM_STATE_INT[0] = 'none';\\r\\nPARAM_STATE_INT[1] = 'success';\\r\\nPARAM_STATE_INT[2] = 'warning';\\r\\nPARAM_STATE_INT[3] = 'error';\\r\\nPARAM_STATE_INT[4] = 'maintenance';\\r\\n\\r\\n\\r\\nexport interface IWidgetDeviceParam {\\r\\n controller?: { id: number, serialnumber: string, isOnline?: boolean };\\r\\n object?: { id: number, shortname: string, fullname: string, timezone: number, latitude: number, longitude: number };\\r\\n param: IWidgetDeviceParamData;\\r\\n zone?: { id: number; name: string };\\r\\n room?: { id: number; name: string };\\r\\n unit?: { id: number; name: string };\\r\\n classifier?: { id: number; name: string };\\r\\n isWorking?: boolean;\\r\\n state?: { id?: number, name?: string, comment?: string };\\r\\n sysState?: {\\r\\n comment: string;\\r\\n id: number;\\r\\n color: string;\\r\\n name: string\\r\\n };\\r\\n}\\r\\n\\r\\nexport interface IWidgetDeviceParamData {\\r\\n id?: number;\\r\\n calc?: boolean;\\r\\n name?: string;\\r\\n type?: PARAM_TYPE;\\r\\n value?: any;\\r\\n valueDate?: string;\\r\\n measure?: IWidgetDeviceParamMeasure;\\r\\n ctrability?: boolean;\\r\\n}\\r\\n\\r\\nexport interface IWidgetDeviceParamMeasure {\\r\\n title: string;\\r\\n unit: string;\\r\\n id: number;\\r\\n icon: IWidgetIconInfo;\\r\\n}\\r\\n\\r\\n// Структура для хранения информации о параметры для виджетов\\r\\nexport interface IWidgetParam<TConfig = any> {\\r\\n id?: number;\\r\\n device: IWidgetDeviceParam;\\r\\n calc?: boolean;\\r\\n widgetId: number;\\r\\n refName: string;\\r\\n itemType: ITEM_TYPE;\\r\\n paramType?: PARAM_TYPE;\\r\\n title: string;\\r\\n config: TConfig;\\r\\n filter?: any;\\r\\n viewConfig?: IWidgetParamConfig;\\r\\n icons?: {\\r\\n falsevalue: string;\\r\\n none: string;\\r\\n success: string;\\r\\n warning: string;\\r\\n error: string;\\r\\n };\\r\\n files?: any;\\r\\n custom?: any;\\r\\n custom_data?: any;\\r\\n borders?: Border[];\\r\\n dashboardLink?: { dashname?: string, id?: number };\\r\\n isEditing?: boolean; // Параметр, обозначающий, что поле редактируется\\r\\n canEditable?: boolean; // Может ли параметр редактироваться\\r\\n}\\r\\n\\r\\nexport type ColumnWidthType = 'auto' | 'fit-content' | 'fix';\\r\\n\\r\\nexport type ColumnSizeUnity = 'px' | '%';\\r\\n\\r\\nexport interface IRowConfig {\\r\\n name: string;\\r\\n}\\r\\n\\r\\nexport interface IColConfig {\\r\\n name: string;\\r\\n widthType?: ColumnWidthType;\\r\\n size?: { value: number; unit: ColumnSizeUnity };\\r\\n}\\r\\n\\r\\nexport interface IWidgetParamConfig {\\r\\n formatValue?: string;\\r\\n view?: string;\\r\\n /**\\r\\n * @deprecated Use table.rowConfig\\r\\n */\\r\\n rows?: number;\\r\\n /**\\r\\n * @deprecated Use table.rowConfig\\r\\n */\\r\\n cols?: number;\\r\\n /**\\r\\n * @deprecated Use table.rowConfig\\r\\n */\\r\\n rowsName?: string[]; // @deprecated\\r\\n /**\\r\\n * @deprecated Use table.colConfig\\r\\n */\\r\\n colsName?: string[]; // @deprecated\\r\\n /**\\r\\n * @deprecated Use table.visibleRow\\r\\n */\\r\\n visibleRow?: boolean; // @deprecated\\r\\n /**\\r\\n * @deprecated Use table.visibleCol\\r\\n */\\r\\n visibleCol?: boolean; // @deprecated\\r\\n table?: {\\r\\n rowConfig?: IRowConfig[];\\r\\n colConfig?: IColConfig[];\\r\\n visibleRow?: boolean;\\r\\n visibleCol?: boolean;\\r\\n rows?: number;\\r\\n cols?: number;\\r\\n };\\r\\n files?: { [k: string]: any };\\r\\n selectValue?: number | string;\\r\\n\\r\\n name?: string; // Для хранение внутреннего названия\\r\\n}\\r\\n\\r\\n\\r\\nexport enum SeriesDuration {\\r\\n 'day' = 'day',\\r\\n 'week' = 'week',\\r\\n 'month' = 'month'\\r\\n}\\r\\n\\r\\n// Тип ленты событий\\r\\nexport enum LineType {\\r\\n 'eventlog' = 1,\\r\\n 'setvaluelog' = 2,\\r\\n 'commandlog' = 3\\r\\n}\\r\\n\\r\\n\\r\\nexport enum ChartTypes {\\r\\n 'lineChart' = 'lineChart',\\r\\n 'candlestickBarChart' = 'candlestickBarChart',\\r\\n 'stackedAreaChart' = 'stackedAreaChart',\\r\\n 'histogramChart' = 'histogramChart',\\r\\n 'pieChart' = 'pieChart',\\r\\n 'intervalPieChart' = 'intervalPieChart'\\r\\n}\\r\\n\\r\\nexport enum ChartViews {\\r\\n 'lineChart' = 'lineChart',\\r\\n 'lineWeekend' = 'lineWeekend',\\r\\n 'candlestickBarChart' = 'candlestickBarChart',\\r\\n 'stackedAreaChart' = 'stackedAreaChart',\\r\\n 'histogramChart' = 'histogramChart',\\r\\n 'pieChart' = 'pieChart',\\r\\n}\\r\\n\\r\\n\\r\\nexport const ChartViewToType = {\\r\\n [ChartViews.lineChart]: ChartTypes.lineChart,\\r\\n [ChartViews.candlestickBarChart]: ChartTypes.candlestickBarChart,\\r\\n [ChartViews.stackedAreaChart]: ChartTypes.stackedAreaChart,\\r\\n [ChartViews.histogramChart]: ChartTypes.histogramChart,\\r\\n [ChartViews.lineWeekend]: ChartTypes.lineChart,\\r\\n};\\r\\n\\r\\nexport const ChartTypeToView = {\\r\\n [ChartTypes.lineChart]: ChartViews.lineChart,\\r\\n [ChartTypes.candlestickBarChart]: ChartViews.candlestickBarChart,\\r\\n [ChartTypes.stackedAreaChart]: ChartViews.stackedAreaChart,\\r\\n [ChartTypes.histogramChart]: ChartViews.histogramChart,\\r\\n};\\r\\n\\r\\nexport interface ParamConfigSingle {\\r\\n valueType?: number;\\r\\n}\\r\\n\\r\\n\\r\\nexport interface ParamConfigInterval {\\r\\n dailyRange: string;\\r\\n stateMap: boolean;\\r\\n valueType: number;\\r\\n duration: SeriesDuration;\\r\\n count: number;\\r\\n}\\r\\n\\r\\n\\r\\nexport interface ParamConfigSeries {\\r\\n duration?: SeriesDuration; // временной интервал\\r\\n count?: number; // смещение временного интервала от текущей даты в единицах <duration> (1 day, 2 week ...)\\r\\n charttype?: ChartTypes;\\r\\n viewtype?: ChartViews;\\r\\n generator?: boolean;\\r\\n}\\r\\n\\r\\nexport interface ParamConfigEvents {\\r\\n lineType?: number; // События, команды, уставки\\r\\n attrList?: string[]; // Список и относительное расположение выдаваемых атрибутов\\r\\n titleList?: string[]; // Список и относительное расположение заголовков выдаваемых атрибутов\\r\\n objectIds?: string[]; // Идентификаторы объектов\\r\\n eventIds?: string[]; // Идентификаторы событий\\r\\n commands?: string[]; // Идентификаторы команд\\r\\n\\r\\n // Можно использовать либо этот параметр\\r\\n size?: number; // Максимальное количество выдаваемых строк в ленте\\r\\n\\r\\n // Либо этот\\r\\n duration?: SeriesDuration; // временной интервал\\r\\n}\\r\\n\\r\\nexport interface ParamConfigObjState {\\r\\n rubricId: number;\\r\\n}\\r\\n\\r\\n\\r\\nexport interface ParamConfigCustom {\\r\\n value?: string;\\r\\n type?: PARAM_TYPE;\\r\\n}\\r\\n\\r\\nexport interface ParamConfigSysInfo {\\r\\n rubricId: number;\\r\\n}\\r\\n\\r\\nexport interface ParamConfigLiftInfo {\\r\\n deviceClassifierId: number;\\r\\n objectIds: number[];\\r\\n}\\r\\n\\r\\nexport type ParamConfig =\\r\\n ParamConfigInterval\\r\\n | ParamConfigSeries\\r\\n | ParamConfigSingle\\r\\n | ParamConfigEvents\\r\\n | ParamConfigCustom\\r\\n | ParamConfigSysInfo\\r\\n | ParamConfigLiftInfo;\\r\\n\\r\\n\\r\\n/**\\r\\n значение - value\\r\\n карта состояний - states\\r\\n карта значений - value\\r\\n */\\r\\nexport interface SingleValue {\\r\\n id?: number;\\r\\n locked: boolean;\\r\\n manually: boolean;\\r\\n date: number;\\r\\n value: any;\\r\\n state: ParamState;\\r\\n unit: { id: number, name: string, available: boolean, unavailabilityDate: number };\\r\\n isProcessing?: boolean;\\r\\n}\\r\\n\\r\\n\\r\\n/**\\r\\n среднее значение - value\\r\\n минимальное значение - min\\r\\n максимальное значение - max\\r\\n карта состояний - states\\r\\n среднее абсолютное значение - value\\r\\n среднее относительное значение – percent\\r\\n последнее абсолютное значение - value\\r\\n последнее относительное значение - percent\\r\\n */\\r\\nexport interface IntervalValue {\\r\\n value: number; // числовое значение, либо 1,0\\r\\n percent: number; // relative и increment\\r\\n min: number; // absolute\\r\\n max: number; // absolute\\r\\n states: ParamStates[]; // absolute signal\\r\\n state: ParamState;\\r\\n beginInterval: number;\\r\\n endInterval: number;\\r\\n switchCount: number; // signal\\r\\n valueMap: Array<{ interval: number; value: number }>;\\r\\n}\\r\\n\\r\\nexport interface ControllersInfo {\\r\\n total: number;\\r\\n online: number;\\r\\n offline: number;\\r\\n}\\r\\n\\r\\nexport interface LiftsInfo {\\r\\n total: number;\\r\\n online: number;\\r\\n offline: number;\\r\\n}\\r\\n\\r\\nexport interface SysInfoValue {\\r\\n date: number;\\r\\n controllersInfo: ControllersInfo;\\r\\n}\\r\\n\\r\\nexport interface LiftInfoValue {\\r\\n date: number;\\r\\n liftsInfo: LiftsInfo;\\r\\n}\\r\\n\\r\\n\\r\\nexport type SeriesValue = Array<SeriesCandleValue | SeriesLineValue>;\\r\\n\\r\\n// График свечек\\r\\nexport interface SeriesCandleValue {\\r\\n close: number;\\r\\n high: number;\\r\\n low: number;\\r\\n open: number;\\r\\n timestmp: number;\\r\\n}\\r\\n\\r\\n// Все остальные графики\\r\\nexport interface SeriesLineValue {\\r\\n value: number;\\r\\n timestmp: number;\\r\\n}\\r\\n\\r\\nexport type TableValues = Array<Array<ItemSingle>>;\\r\\n\\r\\n// События\\r\\n\\r\\nexport interface CustomValue {\\r\\n value: string;\\r\\n}\\r\\n\\r\\n/**\\r\\n * Интерфейс для ленты событий с типом 1\\r\\n */\\r\\nexport interface EventValue {\\r\\n shortname: string;\\r\\n serialnumber: string;\\r\\n eventid: number;\\r\\n name: string;\\r\\n timestmp: number;\\r\\n msg: string;\\r\\n}\\r\\n\\r\\nexport interface EventValues {\\r\\n data: {\\r\\n rowList: Array<EventValue>;\\r\\n };\\r\\n config: ParamConfigEvents;\\r\\n}\\r\\n\\r\\nexport interface ObjStateValuesState {\\r\\n id: number;\\r\\n name: string;\\r\\n count: number;\\r\\n}\\r\\n\\r\\nexport interface ObjStateValues {\\r\\n data: {\\r\\n date: number;\\r\\n states: ObjStateValuesState[];\\r\\n };\\r\\n config: ParamConfigObjState;\\r\\n}\\r\\n\\r\\n// У корневых элементов необходимо указать item_type\\r\\nexport interface WidgetParam {\\r\\n title: string;\\r\\n item_type: ITEM_TYPE;\\r\\n param_type?: PARAM_TYPE;\\r\\n items?: WidgetParamsChildren | WidgetParamsChildren[] | WidgetParamChildren[];\\r\\n views?: string[]; // Перечисление возможных видов параметра\\r\\n available?: any[]; // Ограничение для генератора случайных чисел\\r\\n custom_data?: any; // Пользовательские данные, которые пробрасываются напрямую\\r\\n}\\r\\n\\r\\nexport interface WidgetParamChildren {\\r\\n title?: string;\\r\\n item_type?: ITEM_TYPE;\\r\\n param_type?: PARAM_TYPE;\\r\\n items?: WidgetParamsChildren | WidgetParamsChildren[] | WidgetParamChildren[];\\r\\n views?: string[]; // Перечисление возможных видов параметра\\r\\n available?: any[]; // Ограничение для генератора случайных чисел\\r\\n custom_data?: any; // Пользовательские данные, которые пробрасываются напрямую\\r\\n viewConfig?: IWidgetParamConfig;\\r\\n max?: number;\\r\\n}\\r\\n\\r\\nexport interface WidgetArrayParam {\\r\\n max?: number;\\r\\n item_type?: ITEM_TYPE;\\r\\n param_type?: PARAM_TYPE;\\r\\n}\\r\\n\\r\\nexport interface WidgetParamsChildren {\\r\\n [k: string]: WidgetParamChildren;\\r\\n}\\r\\n\\r\\nexport interface WidgetParams {\\r\\n [k: string]: WidgetParam;\\r\\n}\\r\\n\\r\\nexport interface WidgetSizePosition {\\r\\n x?: number;\\r\\n y?: number;\\r\\n w: number;\\r\\n h: number;\\r\\n}\\r\\n\\r\\nexport enum WidgetCustomFieldType {\\r\\n boolean,\\r\\n dashboardLink,\\r\\n string\\r\\n}\\r\\n\\r\\nexport interface WidgetCustomField {\\r\\n name: string;\\r\\n type: WidgetCustomFieldType;\\r\\n}\\r\\n\\r\\nexport interface WidgetSize {\\r\\n sm: WidgetSizePosition;\\r\\n lg: WidgetSizePosition;\\r\\n slg?: WidgetSizePosition;\\r\\n mobile: WidgetSizePosition;\\r\\n}\\r\\n\\r\\nexport interface ParamState {\\r\\n color: string;\\r\\n comment: string;\\r\\n idIcon: number;\\r\\n}\\r\\n\\r\\nexport interface ParamStates {\\r\\n interval: number;\\r\\n state: {\\r\\n id: number;\\r\\n name: string;\\r\\n color: string;\\r\\n comment: string;\\r\\n };\\r\\n}\\r\\n\\r\\n// В коде конфиг ввиде объекта\\r\\nexport interface IWidget<TDashboard = ServiceDashboardClass> {\\r\\n id?: number;\\r\\n widgetclass: IWidgetClass;\\r\\n dashboard: TDashboard;\\r\\n title: string;\\r\\n conflict?: boolean;\\r\\n hidden?: boolean;\\r\\n config?: IWidgetConfig;\\r\\n path?: string; // Путь при загрузке виджета(для дашей которые загружаются в дашах)\\r\\n /**\\r\\n * Format: int32\\r\\n * @description Порядок размещения в рамках одного дашборда (порядок загрузки)\\r\\n */\\r\\n placement?: number;\\r\\n /**\\r\\n * Format: date-time\\r\\n * @description Дата конфигурирования\\r\\n */\\r\\n configdate?: string;\\r\\n /**\\r\\n * Format: int32\\r\\n * @description Координата X начального положения конкретног виджета в сетке\\r\\n */\\r\\n posx?: number;\\r\\n /**\\r\\n * Format: int32\\r\\n * @description Координата Y начального положения конкретног виджета в сетке\\r\\n */\\r\\n posy?: number;\\r\\n /** @description Признак наличия конфликта, нужна ручная настройка */\\r\\n /**\\r\\n * Format: int32\\r\\n * @description Ширина начального положения виджета в сетке\\r\\n */\\r\\n width?: number;\\r\\n /**\\r\\n * Format: int32\\r\\n * @description Высота начального положения виджета в сетке\\r\\n */\\r\\n height?: number;\\r\\n /** @description Настройки внутреннего представления виджета в формате json (например substitution, valformat) */\\r\\n /**\\r\\n * Format: date-time\\r\\n * @description Дата создания записи\\r\\n */\\r\\n createdate?: string;\\r\\n /**\\r\\n * Format: date-time\\r\\n * @description Дата последнего изменения записи\\r\\n */\\r\\n lastdate?: string;\\r\\n icon?: IWidgetIconInfo;\\r\\n}\\r\\n\\r\\nexport interface IWidgetIconInfo {\\r\\n /**\\r\\n * Format: int32\\r\\n * @description Идентификатор иконки\\r\\n */\\r\\n id?: number;\\r\\n /** @description Наименование иконки */\\r\\n name?: string;\\r\\n iconset?: IWidgetIconSetInfo;\\r\\n /** @description Путь к файлу в локальном хранилище */\\r\\n filepath?: string;\\r\\n}\\r\\n\\r\\n/** @description Набор изображений */\\r\\nexport interface IWidgetIconSetInfo {\\r\\n /**\\r\\n * Format: int32\\r\\n * @description Идентификатор\\r\\n */\\r\\n id?: number;\\r\\n /** @description Наименование */\\r\\n name: string;\\r\\n /**\\r\\n * Format: int32\\r\\n * @description Тип файлов, включаемых в набор (1 - иконка, 2 - картинка, 3 - видео)\\r\\n */\\r\\n imagetype: number;\\r\\n}\\r\\n\\r\\nexport enum DashboardType {\\r\\n WEB = 'WEB',\\r\\n MOBILE = 'MOBILE',\\r\\n ANALYTIC = 'ANALYTIC',\\r\\n}\\r\\n\\r\\nexport interface ServiceDashboardClass<TConfig = string> {\\r\\n /**\\r\\n * Format: int32\\r\\n * @description Идентификатор\\r\\n */\\r\\n id?: number;\\r\\n /** @description Наименование */\\r\\n dashname: string;\\r\\n /** @description Признак скрытого дашборда (не показывается) */\\r\\n hidden?: boolean;\\r\\n objrubric: Objrubric;\\r\\n /** @description Конфигурация для отображения дашборда (структура - ответственность клиента) */\\r\\n config?: TConfig;\\r\\n /**\\r\\n * @description Тип дашборда, WEB - для ЛК, MOBILE - для мобильного клиента)\\r\\n * @enum {string}\\r\\n */\\r\\n type: DashboardType;\\r\\n icon?: IWidgetIconInfo;\\r\\n}\\r\\n\\r\\nexport interface Objrubric {\\r\\n id?: number;\\r\\n shortname?: string;\\r\\n fullname?: string;\\r\\n comment?: string;\\r\\n objrubric?: Objrubric;\\r\\n}\\r\\n\\r\\n\\r\\nexport interface IWidgetConfig {\\r\\n widget: {\\r\\n picture?: {\\r\\n setId?: number;\\r\\n pictureId?: number\\r\\n },\\r\\n floatingHeader?: boolean;\\r\\n };\\r\\n position?: WidgetSize;\\r\\n items: { [k: string]: IWidgetParamConfig };\\r\\n}\\r\\n\\r\\nexport interface IWidgetClass {\\r\\n id: number;\\r\\n storeId?: string; // ссылка на файл\\r\\n version?: string;\\r\\n name?: string;\\r\\n description?: string;\\r\\n web?: boolean;\\r\\n analytic?: boolean;\\r\\n mobile?: boolean;\\r\\n}\\r\\n\\r\\nexport interface SocketEventData {\\r\\n refName: string;\\r\\n rowList: EventValue[];\\r\\n}\\r\\n\\r\\nexport interface SocketSingleData extends SingleValue {\\r\\n refName: string;\\r\\n}\\r\\n\\r\\nexport interface SocketIntervalData extends IntervalValue {\\r\\n refName: string;\\r\\n}\\r\\n\\r\\nexport type WidgetDataList = Array<SocketSingleData | SocketIntervalData | SocketEventData>;\\r\\n\\r\\nexport interface WidgetSocketData {\\r\\n dataList: WidgetDataList;\\r\\n exwidget: number;\\r\\n}\\r\\n\\r\\nexport enum ControllerState {\\r\\n ONLINE = 'ONLINE',\\r\\n OFFLINE = 'OFFLINE',\\r\\n}\\r\\n\\r\\nexport interface ControllerPayload {\\r\\n controllerId: number;\\r\\n state: ControllerState;\\r\\n}\\r\\n\\r\\nexport interface WidgetSocketDataCommand {\\r\\n command: string;\\r\\n widgetDataList: WidgetSocketData[];\\r\\n message?: string;\\r\\n error?: string;\\r\\n payload?: ControllerPayload | any;\\r\\n}\\r\\n\\r\\nexport interface WidgetSocketAnalyticDataCommand {\\r\\n cdpData: SingleValue | null;\\r\\n ccpData: SingleValue | null;\\r\\n}\\r\\n\\r\\n\\r\\nexport interface IWidgetFile {\\r\\n name: string;\\r\\n id: string;\\r\\n parent: string;\\r\\n content: any;\\r\\n url: string;\\r\\n error?: Error;\\r\\n}\\r\\n\\r\\n// Обертка для среды разработки\\r\\nexport const Component = (opts) => {\\r\\n return (component) => {\\r\\n return component;\\r\\n };\\r\\n};\\r\\n\\r\\nexport interface ModalOptions {\\r\\n header: string;\\r\\n width?: string;\\r\\n}\\r\\n\\r\\nexport interface CustomSelectData {\\r\\n items: Array<{ value: any, title: string }>;\\r\\n defaultValue?: any;\\r\\n required: true;\\r\\n}\\r\\n\",\"import {ChartTypes, SiteTheme, VALUE_TYPE, WidgetCustomField, WidgetItem, WidgetParams, WidgetSize} from './widget.interface';\\r\\nimport {WidgetApi} from './widget.api';\\r\\nimport {Type} from '@angular/core';\\r\\n\\r\\nexport const _ = (str: string) => str;\\r\\n\\r\\nexport class WidgetComponent {\\r\\n\\r\\n API: WidgetApi;\\r\\n media: any;\\r\\n width: number;\\r\\n height: number;\\r\\n\\r\\n container: Element;\\r\\n\\r\\n onInit(container: Element) {\\r\\n this.container = container;\\r\\n }\\r\\n\\r\\n onDestroy() {\\r\\n }\\r\\n\\r\\n onResize(width, height) {\\r\\n this.width = width;\\r\\n this.height = height;\\r\\n }\\r\\n\\r\\n onRender(values) {\\r\\n\\r\\n }\\r\\n\\r\\n onUpdate(values) {\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\nexport class WidgetComponentContainer {\\r\\n\\r\\n values: any;\\r\\n pictureId: number;\\r\\n theme: SiteTheme;\\r\\n\\r\\n readonly CHART_TYPES = ChartTypes;\\r\\n readonly VALUE_TYPE = VALUE_TYPE;\\r\\n\\r\\n\\r\\n urlExport(): string {\\r\\n return '';\\r\\n }\\r\\n\\r\\n paramCancel(par: WidgetItem) {\\r\\n }\\r\\n\\r\\n paramEdit(par: WidgetItem) {\\r\\n }\\r\\n\\r\\n paramSave(par: WidgetItem) {\\r\\n }\\r\\n\\r\\n getIconUrl(par: WidgetItem): string {\\r\\n return '';\\r\\n }\\r\\n\\r\\n setManual(par: WidgetItem, value) {\\r\\n\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\nexport interface WidgetPackage {\\r\\n template: string;\\r\\n component: WidgetComponent;\\r\\n params: WidgetParams;\\r\\n size: WidgetSize;\\r\\n styles: string;\\r\\n locales?: { code: string, file: string }[];\\r\\n needPicture?: boolean;\\r\\n needIcon?: boolean;\\r\\n noFullscreen?: boolean;\\r\\n fields?: WidgetCustomField[];\\r\\n // Для мобильных дашей. Будет ли виджет учитывать высоту заданную в настройках или подстроит автоматически\\r\\n autoAdjustHeight?: boolean;\\r\\n // Будет ли фрейм вокруг виджета\\r\\n showFrame?: boolean;\\r\\n imports?: Array<Type<any>>;\\r\\n}\\r\\n\\r\\n\",\"import {\\r\\n ChartTypes,\\r\\n GenerateConfigItem,\\r\\n ITEM_TYPE,\\r\\n ItemParent,\\r\\n ItemTable,\\r\\n IWidgetDeviceParamData,\\r\\n IWidgetParam,\\r\\n IWidgetParamConfig,\\r\\n PARAM_TYPE,\\r\\n ParamConfigCustom,\\r\\n ParamConfigurator,\\r\\n SeriesDuration,\\r\\n TableValues,\\r\\n WidgetArrayParam,\\r\\n WidgetItem,\\r\\n WidgetItems,\\r\\n WidgetParamChildren,\\r\\n WidgetParamsChildren,\\r\\n} from './widget.interface';\\r\\nimport {_} from './widget.component';\\r\\nimport {Pipe, PipeTransform} from '@angular/core';\\r\\nimport {common} from './common';\\r\\n\\r\\n\\r\\n@Pipe({name: 'filterIndexOf', standalone: true})\\r\\nexport class FilterIndexOfPipe implements PipeTransform {\\r\\n transform(array: any[], field: string, search: any) {\\r\\n return array.filter(val => {\\r\\n return val[field].indexOf(search) !== -1;\\r\\n });\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\n@Pipe({name: 'periodFromDate', standalone: true})\\r\\nexport class PeriodFromDatePipe implements PipeTransform {\\r\\n transform(count: number, period: string): string {\\r\\n\\r\\n switch (period) {\\r\\n case 'now':\\r\\n return Utils.getDate();\\r\\n\\r\\n case 'day':\\r\\n return Utils.getDay(count);\\r\\n\\r\\n case 'week':\\r\\n return Utils.getWeek(count);\\r\\n\\r\\n case 'month':\\r\\n return Utils.getMonth(count);\\r\\n }\\r\\n\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\n@Pipe({name: 'arrayNumber', standalone: true})\\r\\nexport class ArrayNumberPipe implements PipeTransform {\\r\\n transform(value, args: string[] = []): any {\\r\\n return Array(value).fill(1).map((x, i) => i + 1);\\r\\n }\\r\\n}\\r\\n\\r\\n@Pipe({name: 'makePictureUrl', standalone: true})\\r\\nexport class MakePictureUrl implements PipeTransform {\\r\\n transform(id: number): string {\\r\\n if (id === -1) {\\r\\n return 'data:image/gif;base64,R0lGODlhZABkAIAAAP///ztXpyH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkNCMTBEMjc5NDJCMjExRTlCOTY0Q0MxNURGQkREMDc0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkNCMTBEMjdBNDJCMjExRTlCOTY0Q0MxNURGQkREMDc0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Q0IxMEQyNzc0MkIyMTFFOUI5NjRDQzE1REZCREQwNzQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Q0IxMEQyNzg0MkIyMTFFOUI5NjRDQzE1REZCREQwNzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQAAAAAACwAAAAAZABkAAAC/4SPqcvtD6MLtNqLs968+58Z4EiWpime6sqOaQvH8CvXNkjf+m7l/G/zAYctIfGIAiCXKyPzuXFCpz0l9aqRYqHaLbPrRYLDxDEZaD7z0modux20wrny+bduF+Pz5T0f7fe3FijoRlgYh9inOPTGSOL4iHMoyRJZ2XGJGUW5meSZCCqjKVpVGkN6GpB6ylrqKgoLKutJu2mLiVupK8n76MsIrCiMSFxoLIj8p8zHnOdsBz0nDUfdZq2GfaZNxh3m7QW+JY5FfmVOhT6lTqda1OnOwf40fxffBH8fkq9/Ub/0T0+/TwMh8Su46mDBgEcYLkI4CWJEiR4cNlI40CIgig0VMfaTADKkyJEkDRQAADs=';\\r\\n } else {\\r\\n return common.serviceUrl + `/db/icon/${id}/img`;\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n@Pipe({name: 'makeIconUrl', standalone: true})\\r\\nexport class MakeIconUrl implements PipeTransform {\\r\\n transform(id: number): string {\\r\\n if (id === -1) {\\r\\n return '/assets/icon.svg';\\r\\n } else {\\r\\n return common.serviceUrl + `/db/icon/${id}/img`;\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n/**\\r\\n * @deprecated\\r\\n */\\r\\n@Pipe({name: 'makeChartUrl', standalone: true})\\r\\nexport class MakeChartUrl implements PipeTransform {\\r\\n transform(id: number, isCalc, isSignal = false): string {\\r\\n return common.transformChartUrlConfig(id, isCalc, isSignal);\\r\\n }\\r\\n}\\r\\n\\r\\n@Pipe({name: 'chartUrl', standalone: true})\\r\\nexport class ChartUrl implements PipeTransform {\\r\\n transform(param: IWidgetDeviceParamData): string {\\r\\n return common.transformChartUrlConfig(param);\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\nexport function assignValues(inputValues: WidgetParamsChildren, params: IWidgetParam[], viewConfig: {\\r\\n [k: string]: IWidgetParamConfig\\r\\n}, path = []): ItemParent {\\r\\n\\r\\n const result: WidgetItems = {};\\r\\n for (const key in inputValues) {\\r\\n if (inputValues.hasOwnProperty(key)) {\\r\\n const item = inputValues[key];\\r\\n const itemPath = [...path, key];\\r\\n const refName = itemPath.join('.');\\r\\n if (item.items) {\\r\\n const param = params.find(val => val.refName === itemPath.join('.'));\\r\\n const cfg = getConfig(viewConfig, refName);\\r\\n if (item.items instanceof Array) {\\r\\n result[key] = {\\r\\n items: assignValuesArray(item.items as WidgetArrayParam[], params, viewConfig, itemPath, item.param_type),\\r\\n viewConfig: cfg,\\r\\n files: cfg.files ? cfg.files : null,\\r\\n custom_data: item.custom_data\\r\\n } as ItemParent;\\r\\n } else {\\r\\n result[key] = {\\r\\n ...assignValues(item.items as WidgetParamsChildren, params, viewConfig, itemPath),\\r\\n refName,\\r\\n viewConfig: cfg,\\r\\n files: cfg.files ? cfg.files : null,\\r\\n custom_data: item.custom_data\\r\\n } as ItemParent;\\r\\n }\\r\\n if (param && param.config && (result[key] as ItemParent)) {\\r\\n (result[key] as ItemParent).config = param.config;\\r\\n }\\r\\n } else {\\r\\n result[key] = assignValue(item, itemPath, params, viewConfig);\\r\\n }\\r\\n }\\r\\n }\\r\\n return result;\\r\\n}\\r\\n\\r\\nexport function validateArcherParams(variables) {\\r\\n const errors = [];\\r\\n const forbiddenNames = ['viewConfig', 'title', 'config', 'files'];\\r\\n\\r\\n forbiddenNames.forEach(name => {\\r\\n if (variables.find(item => item.name === name)) {\\r\\n errors.push(name);\\r\\n }\\r\\n });\\r\\n return errors;\\r\\n}\\r\\n\\r\\n\\r\\nfunction getConfig(viewConfig, refName): IWidgetParamConfig {\\r\\n return viewConfig[refName] ? viewConfig[refName] : {};\\r\\n}\\r\\n\\r\\nfunction assignValuesArray(inputValues: WidgetArrayParam[], params: IWidgetParam[], viewConfigs: { [k: string]: IWidgetParamConfig },\\r\\n path = [], paramType: PARAM_TYPE = PARAM_TYPE.value): WidgetItem[] {\\r\\n let result: WidgetItem[] = [];\\r\\n const sPath = path.join('.');\\r\\n const inputValue = inputValues[0];\\r\\n params.forEach(val => {\\r\\n const valPath = val.refName.split('.');\\r\\n const ind: any = valPath.splice(valPath.length - 1, 1);\\r\\n const pType = inputValue.param_type ?? paramType;\\r\\n if (valPath.join('.') === sPath) {\\r\\n const viewConfig = getConfig(viewConfigs, val.refName);\\r\\n if (val.itemType === ITEM_TYPE.custom) {\\r\\n let value: any;\\r\\n if (pType === PARAM_TYPE.custom_json) {\\r\\n try {\\r\\n value = JSON.parse((val.config as ParamConfigCustom).value);\\r\\n } catch (e) {\\r\\n value = {};\\r\\n }\\r\\n } else {\\r\\n value = (val.config as ParamConfigCustom).value;\\r\\n }\\r\\n if (pType === PARAM_TYPE.virtual_object) {\\r\\n result[ind] = assignValues(inputValue as any, params, viewConfigs, [...path, ...ind]);\\r\\n } else {\\r\\n result[ind] = {...val, data: null, value, viewConfig};\\r\\n }\\r\\n } else {\\r\\n const value = (val.itemType === ITEM_TYPE.single && val?.device?.param?.value) ? val.device.param.value : null;\\r\\n result[ind] = {...val, data: value, value, viewConfig};\\r\\n }\\r\\n }\\r\\n });\\r\\n result = result.filter(val => val);\\r\\n return result;\\r\\n}\\r\\n\\r\\n\\r\\nfunction assignValue(item: WidgetParamChildren, itemPath, params: IWidgetParam[],\\r\\n viewConfigs: { [k: string]: IWidgetParamConfig }): WidgetItem {\\r\\n const path = itemPath.join('.');\\r\\n\\r\\n if (item.item_type === ITEM_TYPE.table) {\\r\\n const itemValues: TableValues = [];\\r\\n let rows = 0, cols = 0;\\r\\n const itemTable: IWidgetParam = params.find(param => param.refName === path);\\r\\n params.forEach((param: IWidgetParam) => {\\r\\n if (param.refName.indexOf(path) === 0) {\\r\\n\\r\\n const path = param.refName.split('.');\\r\\n const i = parseInt(path[path.length - 2]) - 1;\\r\\n const j = parseInt(path[path.length - 1]) - 1;\\r\\n if (!itemValues[i]) {\\r\\n itemValues[i] = [];\\r\\n }\\r\\n itemValues[i][j] = {\\r\\n ...param,\\r\\n data: null,\\r\\n value: null,\\r\\n custom: {},\\r\\n config: {},\\r\\n viewConfig: getConfig(viewConfigs, path.join('.')),\\r\\n custom_data: item.custom_data,\\r\\n };\\r\\n if (i > rows) {\\r\\n rows = i;\\r\\n }\\r\\n if (j > cols) {\\r\\n cols = j;\\r\\n }\\r\\n }\\r\\n });\\r\\n\\r\\n const res: ItemTable = {\\r\\n ...itemTable,\\r\\n values: itemValues,\\r\\n viewConfig: getConfig(viewConfigs, path),\\r\\n custom_data: item.custom_data,\\r\\n };\\r\\n return res;\\r\\n } else {\\r\\n const param = params.find(val => val.refName === path);\\r\\n if (param && param.config) {\\r\\n const viewConfig = getConfig(viewConfigs, path);\\r\\n if (item.item_type === ITEM_TYPE.custom) {\\r\\n let value: any;\\r\\n if (item.param_type === PARAM_TYPE.custom_json) {\\r\\n try {\\r\\n value = JSON.parse((param.config as ParamConfigCustom).value);\\r\\n } catch (e) {\\r\\n value = {};\\r\\n }\\r\\n } else if (item.param_type === PARAM_TYPE.custom_fuxa) {\\r\\n value = (param as any).value;\\r\\n } else {\\r\\n value = (param.config as ParamConfigCustom).value;\\r\\n }\\r\\n return {\\r\\n ...param,\\r\\n data: null,\\r\\n value,\\r\\n custom_data: item.custom_data,\\r\\n viewConfig,\\r\\n custom: {}\\r\\n };\\r\\n } else {\\r\\n const value = (param.itemType === ITEM_TYPE.single && param?.device?.param?.value) ? param.device.param.value : null;\\r\\n\\r\\n return {\\r\\n ...param,\\r\\n data: value,\\r\\n value,\\r\\n custom_data: item.custom_data,\\r\\n viewConfig,\\r\\n custom: {}\\r\\n };\\r\\n }\\r\\n } else {\\r\\n return {data: null};\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\nexport function clearParams(params: ParamConfigurator[]) {\\r\\n for (let i = 0; i < params.length; i++) {\\r\\n params[i].value = null;\\r\\n if (params[i].items) {\\r\\n clearParams(params[i].items);\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\nexport function findParam(params: ParamConfigurator[], refname: string): ParamConfigurator {\\r\\n for (let i = 0; i < params.length; i++) {\\r\\n if (params[i].name === refname) {\\r\\n return params[i];\\r\\n }\\r\\n if (params[i].items) {\\r\\n const param = findParam(params[i].items, refname);\\r\\n if (param) {\\r\\n return param;\\r\\n }\\r\\n }\\r\\n }\\r\\n return null;\\r\\n}\\r\\n\\r\\n\\r\\nexport function createParamList(params: WidgetParamsChildren | WidgetParamsChildren[] | WidgetParamChildren[], itemType = ITEM_TYPE.single,\\r\\n paramType: PARAM_TYPE = PARAM_TYPE.value, path = [], parent = null): ParamConfigurator[] {\\r\\n const result: ParamConfigurator[] = [];\\r\\n if (params instanceof Array) {\\r\\n const item: any = params[0];\\r\\n const pItemType = item.item_type || itemType;\\r\\n const pParamType = item.param_type || paramType;\\r\\n\\r\\n if (pParamType === PARAM_TYPE.virtual_object) {\\r\\n const itemPath = [...path, 1];\\r\\n result.push(createParam(item, itemPath, pItemType, pParamType, item));\\r\\n\\r\\n } else {\\r\\n const itemPath = [...path, 1];\\r\\n result.push({\\r\\n name: itemPath.join('.'),\\r\\n title: 'Item 1',\\r\\n views: item.views,\\r\\n itemType: pItemType,\\r\\n paramType: pParamType,\\r\\n parent,\\r\\n config: null,\\r\\n generateConfig: {count: 3, param: true, data: true},\\r\\n param: item,\\r\\n });\\r\\n }\\r\\n } else {\\r\\n for (const key in params) {\\r\\n if (params.hasOwnProperty(key)) {\\r\\n const item = params[key];\\r\\n\\r\\n const pItemType = item.item_type || itemType;\\r\\n const pParamType = item.param_type || paramType;\\r\\n const itemPath = [...path, key];\\r\\n\\r\\n if (params[key].items) {\\r\\n result.push(createParam(item, itemPath, pItemType, pParamType, parent));\\r\\n } else {\\r\\n if (pItemType === ITEM_TYPE.table) {\\r\\n result.push({\\r\\n name: itemPath.join('.'),\\r\\n views: item.views,\\r\\n title: item.title,\\r\\n itemType: pItemType,\\r\\n paramType: pParamType,\\r\\n parent,\\r\\n param: params[key],\\r\\n viewConfig: {\\r\\n rows: 1,\\r\\n cols: 1,\\r\\n colsName: ['Col 1'],\\r\\n rowsName: ['Row 1'],\\r\\n visibleRow: true,\\r\\n visibleCol: true,\\r\\n table: {\\r\\n visibleRow: true,\\r\\n visibleCol: true,\\r\\n colConfig: [{name: ''}, {name: 'Col 1'}],\\r\\n rowConfig: [{name: 'Row 1'}],\\r\\n }\\r\\n },\\r\\n config: {},\\r\\n generateConfig: {\\r\\n data: true,\\r\\n param: true,\\r\\n rows: 2,\\r\\n columns: 2,\\r\\n visibleCol: true,\\r\\n visibleRow: true,\\r\\n }\\r\\n });\\r\\n } else {\\r\\n let config: any = {};\\r\\n if (ITEM_TYPE.series === pItemType) {\\r\\n config = {count: 0, charttype: ChartTypes.lineChart, duration: SeriesDuration.day};\\r\\n }\\r\\n result.push({\\r\\n name: itemPath.join('.'),\\r\\n title: item.title,\\r\\n views: item.views,\\r\\n itemType: pItemType,\\r\\n paramType: pParamType,\\r\\n parent,\\r\\n config,\\r\\n param: params[key],\\r\\n generateConfig: {data: true, param: true}\\r\\n });\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n return result;\\r\\n}\\r\\n\\r\\n\\r\\nfunction createParam(item, itemPath, itemType, paramType, parent) {\\r\\n let config: any = {};\\r\\n if (ITEM_TYPE.series === itemType) {\\r\\n config = {count: 0, charttype: ChartTypes.lineChart, duration: SeriesDuration.day};\\r\\n }\\r\\n const res: ParamConfigurator = {\\r\\n name: itemPath.join('.'),\\r\\n title: _(item.title),\\r\\n itemType,\\r\\n paramType,\\r\\n parent,\\r\\n views: item.views,\\r\\n config,\\r\\n generateConfig: {count: 3, param: true, data: true},\\r\\n param: item,\\r\\n };\\r\\n if (item.items) {\\r\\n res.items = createParamList(item.items, itemType, paramType, itemPath, res);\\r\\n if (item.items instanceof Array) {\\r\\n res.isArray = true;\\r\\n if (item.items[0].max) {\\r\\n res.maxItems = item.items[0].max;\\r\\n }\\r\\n }\\r\\n } else if (paramType === PARAM_TYPE.virtual_object) {\\r\\n res.items = createParamList(item, itemType, paramType, itemPath, res);\\r\\n }\\r\\n return res;\\r\\n}\\r\\n\\r\\n\\r\\nexport function createGenerateItemConfig(): GenerateConfigItem {\\r\\n return {\\r\\n pageLink: false,\\r\\n isOnline: true,\\r\\n data: true,\\r\\n param: true,\\r\\n borders: false,\\r\\n editable: false,\\r\\n paragraphCount: 1,\\r\\n isWorkingDevice: true,\\r\\n title: 'Title param',\\r\\n ctrability: true,\\r\\n archer: {}\\r\\n };\\r\\n}\\r\\n\\r\\nexport function addArrayItem(parent: ParamConfigurator) {\\r\\n if (parent.paramType === PARAM_TYPE.virtual_object) {\\r\\n parent.items.push({\\r\\n ...updateIndex(clearValue(deepClone(parent.items[0])), parent.items[0].name, [parent.name, parent.items.length + 1].join('.')),\\r\\n name: [parent.name, parent.items.length + 1].join('.'),\\r\\n title: `Item ${parent.items.length + 1}`,\\r\\n parent: parent,\\r\\n });\\r\\n } else {\\r\\n parent.items.push({\\r\\n name: [parent.name, parent.items.length + 1].join('.'),\\r\\n title: `Item ${parent.items.length + 1}`,\\r\\n itemType: parent.itemType,\\r\\n paramType: parent.paramType,\\r\\n parent: parent,\\r\\n config: {}\\r\\n });\\r\\n }\\r\\n}\\r\\n\\r\\nfunction deepClone(obj, map = new WeakMap()) {\\r\\n if (obj === null || typeof obj !== 'object') {\\r\\n return obj;\\r\\n }\\r\\n if (obj instanceof Date) {\\r\\n return new Date(obj.getTime());\\r\\n }\\r\\n if (obj instanceof RegExp) {\\r\\n return new RegExp(obj);\\r\\n }\\r\\n if (map.has(obj)) {\\r\\n return map.get(obj);\\r\\n }\\r\\n const result = Array.isArray(obj) ? [] : {};\\r\\n map.set(obj, result);\\r\\n for (const key of Object.keys(obj)) {\\r\\n result[key] = deepClone(obj[key], map);\\r\\n }\\r\\n return result;\\r\\n}\\r\\n\\r\\n\\r\\nexport function clearValue(param: ParamConfigurator) {\\r\\n param.value = undefined;\\r\\n if (param.items) {\\r\\n param.items = param.items.map((p) => clearValue(p));\\r\\n if (param.isArray && param.paramType !== PARAM_TYPE.virtual_object) {\\r\\n param.items = param.items.slice(0, 1);\\r\\n }\\r\\n }\\r\\n return param;\\r\\n}\\r\\n\\r\\nexport function updateIndex(param: ParamConfigurator, oldName, newName) {\\r\\n param.name = param.name.replace(oldName, newName);\\r\\n if (param.items) {\\r\\n param.items = param.items.map((p) => updateIndex(p, oldName, newName));\\r\\n if (param.isArray && param.paramType !== PARAM_TYPE.virtual_object) {\\r\\n param.items = param.items.slice(0, 1);\\r\\n }\\r\\n }\\r\\n return param;\\r\\n}\\r\\n\\r\\nexport function convertArcherToItem(item, param): ParamConfigurator {\\r\\n return {\\r\\n name: (param.name || param.refName) + '.' + item.name,\\r\\n title: item.title ? item.title : item.name,\\r\\n itemType: ITEM_TYPE.single,\\r\\n paramType: PARAM_TYPE.value,\\r\\n parent: param,\\r\\n config: {},\\r\\n generateConfig: {\\r\\n count: 3, param: true, data: true\\r\\n }\\r\\n };\\r\\n}\\r\\n\\r\\n\\r\\nexport function prepareExternalJSON(json) {\\r\\n for (const k in json) {\\r\\n if (json.hasOwnProperty(k)) {\\r\\n if (json[k].item_type && typeof json[k].item_type === 'string') {\\r\\n json[k].item_type = ITEM_TYPE[json[k].item_type];\\r\\n }\\r\\n if (json[k].param_type && typeof json[k].param_type === 'string') {\\r\\n json[k].param_type = PARAM_TYPE[json[k].param_type];\\r\\n }\\r\\n if (json[k].items) {\\r\\n json[k].items = prepareExternalJSON(json[k].items);\\r\\n }\\r\\n }\\r\\n }\\r\\n return json;\\r\\n}\\r\\n\\r\\n\\r\\nexport class Utils {\\r\\n\\r\\n public static getDate(ts: number = Date.now()) {\\r\\n const d = new Date(ts);\\r\\n const dd = d.getDate();\\r\\n const mm = d.getMonth() + 1;\\r\\n const yyyy = d.getFullYear();\\r\\n return ('0' + dd).slice(-2) + '/' + ('0' + mm).slice(-2) + '/' + yyyy;\\r\\n }\\r\\n\\r\\n public static getDay(num: number) {\\r\\n const d = new Date();\\r\\n d.setDate(d.getDate() - num);\\r\\n const dd = d.getDate();\\r\\n const mm = d.getMonth() + 1;\\r\\n const yyyy = d.getFullYear();\\r\\n return ('0' + dd).slice(-2) + '/' + ('0' + mm).slice(-2) + '/' + yyyy;\\r\\n }\\r\\n\\r\\n public static getWeek(num: number) {\\r\\n const d = new Date();\\r\\n const day = d.getDay();\\r\\n if (day === 0) {\\r\\n num++;\\r\\n }\\r\\n const firstDay: any = new Date();\\r\\n firstDay.setDate(d.getDate() - day - num * 7 + 1);\\r\\n const lastDay: any = new Date();\\r\\n if (num > 0) {\\r\\n lastDay.setDate(d.getDate() - day - (num - 1) * 7);\\r\\n }\\r\\n return ('0' + firstDay.getDate()).slice(-2) + '/' + ('0' + (firstDay.getMonth() + 1)).slice(-2) + '/' + firstDay.getFullYear() + ' - ' +\\r\\n ('0' + lastDay.getDate()).slice(-2) + '/' + ('0' + (lastDay.getMonth() + 1)).slice(-2) + '/' + lastDay.getFullYear();\\r\\n }\\r\\n\\r\\n\\r\\n public static getMonth(num: number) {\\r\\n const d: any = new Date();\\r\\n d.setMonth(d.getMonth() - num);\\r\\n const dd: any = d.getDate();\\r\\n const mm: any = d.getMonth();\\r\\n const yyyy: any = d.getFullYear();\\r\\n\\r\\n const firstDay: any = new Date(yyyy, mm, 1);\\r\\n const lastDay: any = new Date(yyyy, mm + 1, 0);\\r\\n return ('0' + firstDay.getDate()).slice(-2) + '/' + ('0' + (firstDay.getMonth() + 1)).slice(-2) + '/' + firstDay.getFullYear() + ' - ' +\\r\\n ('0' + lastDay.getDate()).slice(-2) + '/' + ('0' + (lastDay.getMonth() + 1)).slice(-2) + '/' + lastDay.getFullYear();\\r\\n }\\r\\n\\r\\n\\r\\n public static getTime(ts: number) {\\r\\n let d;\\r\\n if (typeof ts === 'undefined') {\\r\\n d = new Date();\\r\\n } else {\\r\\n d = new Date(ts);\\r\\n }\\r\\n const hh = d.getHours();\\r\\n const mm = d.getMinutes();\\r\\n return ('0' + hh).slice(-2) + ':' + ('0' + mm).slice(-2);\\r\\n }\\r\\n\\r\\n}\\r\\n\",\"/// <reference types=\\\"forge-viewer\\\" />\\r\\nexport abstract class ViewerEventArgs {\\r\\n target?: Autodesk.Viewing.Viewer3D;\\r\\n model?: Autodesk.Viewing.ViewerItem;\\r\\n type: string;\\r\\n [key: string]: any;\\r\\n}\\r\\nexport class AggregationSelectionChangedEventArgs extends ViewerEventArgs {\\r\\n selections: Autodesk.Viewing.ViewerItem[];\\r\\n type = Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT;\\r\\n}\\r\\nexport class AnimationReadyEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.ANIMATION_READY_EVENT;\\r\\n}\\r\\nexport class CameraChangedEventArgs extends ViewerEventArgs {\\r\\n camera: THREE.Camera;\\r\\n type = Autodesk.Viewing.CAMERA_CHANGE_EVENT;\\r\\n}\\r\\nexport class CutplanesChangedEventArgs extends ViewerEventArgs {\\r\\n cutplanes: Object[];\\r\\n type = Autodesk.Viewing.CUTPLANES_CHANGE_EVENT;\\r\\n}\\r\\nexport class EscapeEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.ESCAPE_EVENT;\\r\\n}\\r\\nexport class ExplodeChangedEventArgs extends ViewerEventArgs {\\r\\n scale: number;\\r\\n type = Autodesk.Viewing.EXPLODE_CHANGE_EVENT;\\r\\n}\\r\\nexport abstract class ExtensionLoadedUnloadedEventArgs extends ViewerEventArgs {\\r\\n extensionId: string;\\r\\n}\\r\\nexport class ExtensionLoadedEventArgs extends ExtensionLoadedUnloadedEventArgs {\\r\\n type = Autodesk.Viewing.EXTENSION_LOADED_EVENT;\\r\\n}\\r\\nexport class ExtensionUnloadedEventArgs extends ExtensionLoadedUnloadedEventArgs {\\r\\n type = Autodesk.Viewing.EXTENSION_UNLOADED_EVENT;\\r\\n}\\r\\nexport class FinalFrameRenderedChangedEventArgs extends ViewerEventArgs {\\r\\n planes: Object[];\\r\\n type = Autodesk.Viewing.FINAL_FRAME_RENDERED_CHANGED_EVENT;\\r\\n}\\r\\nexport class FitToViewEventArgs extends ViewerEventArgs {\\r\\n immediate: boolean;\\r\\n nodeIdArray: number[];\\r\\n type = Autodesk.Viewing.FIT_TO_VIEW_EVENT;\\r\\n}\\r\\nexport class FragmentsLoadedEventArgs extends ViewerEventArgs {\\r\\n getFragIds: () => void;\\r\\n data: Object;\\r\\n type = Autodesk.Viewing.FRAGMENTS_LOADED_EVENT;\\r\\n}\\r\\nexport class FullscreenEventArgs extends ViewerEventArgs {\\r\\n mode: Autodesk.Viewing.ScreenMode;\\r\\n type = Autodesk.Viewing.FULLSCREEN_MODE_EVENT;\\r\\n}\\r\\nexport class GeometryLoadedEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.GEOMETRY_LOADED_EVENT;\\r\\n}\\r\\nexport class HideEventArgs extends ViewerEventArgs {\\r\\n nodeIdArray: number[];\\r\\n type = Autodesk.Viewing.HIDE_EVENT;\\r\\n}\\r\\nexport class HyperlinkEventArgs extends ViewerEventArgs {\\r\\n data: Object; // TODO: Can his be stronger?\\r\\n type = Autodesk.Viewing.HYPERLINK_EVENT;\\r\\n}\\r\\nexport class IsolateEventArgs extends ViewerEventArgs {\\r\\n nodeIdArray: number[];\\r\\n type = Autodesk.Viewing.ISOLATE_EVENT;\\r\\n}\\r\\nexport class LayerVisibilityEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.LAYER_VISIBILITY_CHANGED_EVENT;\\r\\n}\\r\\nexport class LoadMissingGeometryEventArgs extends ViewerEventArgs {\\r\\n delay: boolean;\\r\\n type = Autodesk.Viewing.LOAD_MISSING_GEOMETRY;\\r\\n}\\r\\nexport class ModelRootLoadedEventArgs extends ViewerEventArgs {\\r\\n svf: Object; // TODO: can this be stronger\\r\\n type = Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT;\\r\\n}\\r\\nexport class ModelUnloadedEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.MODEL_UNLOADED_EVENT;\\r\\n}\\r\\nexport class NavigationModeChangedEventArgs extends ViewerEventArgs {\\r\\n id: string;\\r\\n type = Autodesk.Viewing.NAVIGATION_MODE_CHANGED_EVENT;\\r\\n}\\r\\nexport abstract class ObjectTreeEventArgs extends ViewerEventArgs {\\r\\n svf: Object; // TODO: can this be stronger\\r\\n}\\r\\nexport class ObjectTreeCreatedEventArgs extends ObjectTreeEventArgs {\\r\\n type = Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT;\\r\\n}\\r\\nexport class ObjectTreeUnavailableEventArgs extends ObjectTreeEventArgs {\\r\\n type = Autodesk.Viewing.OBJECT_TREE_UNAVAILABLE_EVENT;\\r\\n}\\r\\nexport abstract class PrefEventArgs extends ViewerEventArgs {\\r\\n name: string;\\r\\n value: Object;\\r\\n}\\r\\nexport class PrefChangedEventArgs extends PrefEventArgs {\\r\\n type = Autodesk.Viewing.PREF_CHANGED_EVENT;\\r\\n}\\r\\nexport class PrefResetEventArgs extends PrefEventArgs {\\r\\n type = Autodesk.Viewing.PREF_RESET_EVENT;\\r\\n}\\r\\nexport class ProgressUpdateEventArgs extends ViewerEventArgs {\\r\\n percent: number;\\r\\n state: Autodesk.Viewing.ProgressState;\\r\\n type = Autodesk.Viewing.PROGRESS_UPDATE_EVENT;\\r\\n}\\r\\nexport class RenderOptionChangedEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT;\\r\\n}\\r\\nexport class RenderPresentedEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.RENDER_PRESENTED_EVENT;\\r\\n}\\r\\nexport class ResetEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.RESET_EVENT;\\r\\n}\\r\\nexport class RestoreDefaultSettingsEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.RESTORE_DEFAULT_SETTINGS_EVENT;\\r\\n}\\r\\nexport class SelectionChangedEventArgs extends ViewerEventArgs {\\r\\n fragIdsArray: number[];\\r\\n dbIdArray: number[];\\r\\n nodeArray: number[];\\r\\n type = Autodesk.Viewing.SELECTION_CHANGED_EVENT;\\r\\n}\\r\\nexport class ShowEventArgs extends ViewerEventArgs {\\r\\n nodeArrayId: number[];\\r\\n type = Autodesk.Viewing.SHOW_EVENT;\\r\\n}\\r\\nexport class TexturesLoadedEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.TEXTURES_LOADED_EVENT;\\r\\n}\\r\\nexport class ToolChangedEventArgs extends ViewerEventArgs {\\r\\n toolName: string;\\r\\n tool: Object;\\r\\n active: boolean;\\r\\n type = Autodesk.Viewing.TOOL_CHANGE_EVENT;\\r\\n}\\r\\nexport class ViewerInitializedEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.VIEWER_INITIALIZED;\\r\\n}\\r\\nexport class ViewerResizeEventArgs extends ViewerEventArgs {\\r\\n width: number;\\r\\n height: number;\\r\\n type = Autodesk.Viewing.VIEWER_RESIZE_EVENT;\\r\\n}\\r\\nexport class ViewerStateRestoredEventArgs extends ViewerEventArgs {\\r\\n value: boolean;\\r\\n type = Autodesk.Viewing.VIEWER_STATE_RESTORED_EVENT;\\r\\n}\\r\\nexport class ViewerUnInitializedEventArgs extends ViewerEventArgs {\\r\\n type = Autodesk.Viewing.VIEWER_UNINITIALIZED;\\r\\n}\\r\\n\\r\\n/**\\r\\n * Base extension that all other extensions can inherit from\\r\\n */\\r\\nexport abstract class Extension {\\r\\n public static extensionName: string = '';\\r\\n\\r\\n protected viewer: Autodesk.Viewing.Viewer3D = undefined;\\r\\n protected extOptions: Autodesk.Viewing.ExtensionOptions = undefined;\\r\\n\\r\\n protected eventArgsTypeMap: { [key: string]: Function } = {};\\r\\n\\r\\n public static registerExtension(extensionName: string, extension: Object) {\\r\\n Autodesk.Viewing.theExtensionManager.registerExtension(extensionName, extension);\\r\\n }\\r\\n\\r\\n public static unregisterExtension(extensionName: string) {\\r\\n Autodesk.Viewing.theExtensionManager.unregisterExtension(extensionName);\\r\\n }\\r\\n\\r\\n constructor(viewer: Autodesk.Viewing.Viewer3D,\\r\\n options?: Autodesk.Viewing.ExtensionOptions) {\\r\\n this.viewer = viewer;\\r\\n this.extOptions = options;\\r\\n\\r\\n this.registerEventTypes();\\r\\n }\\r\\n\\r\\n /** Called by Autodesk extension manager when extension is loaded */\\r\\n public abstract load(): boolean | Promise<boolean>;\\r\\n /** Called by Autodesk extension manager when extension is unloaded */\\r\\n public abstract unload(): boolean;\\r\\n /** Called by Autodesk extension manager when extension is activated - return true */\\r\\n public abstract activate(): boolean;\\r\\n /** Called by Autodesk extension manager when extension is activated - return true */\\r\\n public abstract deactivate(): boolean;\\r\\n\\r\\n /** Register event args types that we will cast to 'proper' objects */\\r\\n protected registerEventTypes() {\\r\\n // tslint:disable:max-line-length\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT] = AggregationSelectionChangedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.ANIMATION_READY_EVENT] = AnimationReadyEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.CAMERA_CHANGE_EVENT] = CameraChangedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.CUTPLANES_CHANGE_EVENT] = CutplanesChangedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.ESCAPE_EVENT] = EscapeEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.EXPLODE_CHANGE_EVENT] = ExplodeChangedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.EXTENSION_LOADED_EVENT] = ExtensionLoadedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.EXTENSION_UNLOADED_EVENT] = ExtensionUnloadedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.FINAL_FRAME_RENDERED_CHANGED_EVENT] = FinalFrameRenderedChangedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.FIT_TO_VIEW_EVENT] = FitToViewEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.FRAGMENTS_LOADED_EVENT] = FragmentsLoadedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.FULLSCREEN_MODE_EVENT] = FullscreenEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.GEOMETRY_LOADED_EVENT] = GeometryLoadedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.HIDE_EVENT] = HideEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.HYPERLINK_EVENT] = HyperlinkEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.ISOLATE_EVENT] = IsolateEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.LAYER_VISIBILITY_CHANGED_EVENT] = LayerVisibilityEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.LOAD_MISSING_GEOMETRY] = LoadMissingGeometryEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT] = ModelRootLoadedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.MODEL_UNLOADED_EVENT] = ModelUnloadedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.NAVIGATION_MODE_CHANGED_EVENT] = NavigationModeChangedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT] = ObjectTreeCreatedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.OBJECT_TREE_UNAVAILABLE_EVENT] = ObjectTreeUnavailableEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.PREF_CHANGED_EVENT] = PrefChangedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.PREF_RESET_EVENT] = PrefResetEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.PROGRESS_UPDATE_EVENT] = ProgressUpdateEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT] = RenderOptionChangedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.RENDER_PRESENTED_EVENT] = RenderPresentedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.RESET_EVENT] = ResetEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.RESTORE_DEFAULT_SETTINGS_EVENT] = RestoreDefaultSettingsEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.SELECTION_CHANGED_EVENT] = SelectionChangedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.SHOW_EVENT] = ShowEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.TEXTURES_LOADED_EVENT] = TexturesLoadedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.TOOL_CHANGE_EVENT] = ToolChangedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_INITIALIZED] = ViewerInitializedEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_RESIZE_EVENT] = ViewerResizeEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_STATE_RESTORED_EVENT] = ViewerStateRestoredEventArgs;\\r\\n this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_UNINITIALIZED] = ViewerUnInitializedEventArgs;\\r\\n // tslint:enable:max-line-length\\r\\n }\\r\\n\\r\\n /** Cast Viewer event args to class */\\r\\n protected castArgs(args: any): any {\\r\\n if (Array.isArray(args)) {\\r\\n return args.map(this.castArgs);\\r\\n }\\r\\n\\r\\n if (!args || typeof args !== 'object' || !args.hasOwnProperty('type')) {\\r\\n // Can't cast this object\\r\\n return args;\\r\\n }\\r\\n\\r\\n // Create new object of appropriate type\\r\\n const clazz = this.eventArgsTypeMap[args.type];\\r\\n const typedItem = Object.create(clazz.prototype);\\r\\n\\r\\n // Cast any properties\\r\\n for (const k of Object.keys(args)) {\\r\\n typedItem[k] = this.castArgs(args[k]);\\r\\n }\\r\\n\\r\\n return typedItem;\\r\\n }\\r\\n}\\r\\n\",\"import {Extension} from './extenstion';\\r\\n\\r\\n\\r\\nexport interface ParamLabel {\\r\\n dbId: number;\\r\\n element: HTMLElement;\\r\\n name: string;\\r\\n}\\r\\n\\r\\ninterface Label {\\r\\n label: HTMLLabelElement;\\r\\n id: number;\\r\\n}\\r\\n\\r\\nexport class ParamAssignExtension extends Extension {\\r\\n\\r\\n constructor(viewer, options) {\\r\\n super(viewer, options);\\r\\n this._group = null;\\r\\n this._button = null;\\r\\n this._icons = options.icons || [];\\r\\n this.options = options;\\r\\n }\\r\\n\\r\\n public static extensionName = 'ParamAssignExtension';\\r\\n\\r\\n private static callback: (ext: ParamAssignExtension) => void = null;\\r\\n _group: any;\\r\\n _button: any;\\r\\n _icons: ParamLabel[];\\r\\n options: any;\\r\\n _enabled = false;\\r\\n\\r\\n _frags: any = {};\\r\\n\\r\\n labels: Label[] = [];\\r\\n\\r\\n container: HTMLDivElement | null = null;\\r\\n\\r\\n public static registerExtension(extensionName: string, callback: (ext: ParamAssignExtension) => void) {\\r\\n ParamAssignExtension.callback = callback;\\r\\n super.registerExtension(ParamAssignExtension.extensionName, ParamAssignExtension);\\r\\n }\\r\\n\\r\\n\\r\\n public activate() {\\r\\n return true;\\r\\n }\\r\\n\\r\\n public deactivate() {\\r\\n return true;\\r\\n }\\r\\n\\r\\n load() {\\r\\n this.container = (this.viewer as any).clientContainer;\\r\\n this._enabled = true;\\r\\n if (this.viewer.model && this.viewer.model.getInstanceTree()) {\\r\\n this.customize();\\r\\n } else {\\r\\n this.viewer.addEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT, this.customize.bind(this));\\r\\n }\\r\\n if (ParamAssignExtension.callback) {\\r\\n ParamAssignExtension.callback(this);\\r\\n }\\r\\n return true;\\r\\n }\\r\\n\\r\\n unload() {\\r\\n // Clean our UI elements if we added any\\r\\n if (this._group) {\\r\\n this._group.removeControl(this._button);\\r\\n if (this._group.getNumberOfControls() === 0) {\\r\\n this.viewer.toolbar.removeControl(this._group);\\r\\n }\\r\\n }\\r\\n return true;\\r\\n }\\r\\n\\r\\n customize() {\\r\\n this.showIcons();\\r\\n const updateIconsCallback = () => {\\r\\n this.updateIcons();\\r\\n };\\r\\n this.viewer.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT, updateIconsCallback);\\r\\n this.viewer.addEventListener(Autodesk.Viewing.ISOLATE_EVENT, updateIconsCallback);\\r\\n this.viewer.addEventListener(Autodesk.Viewing.HIDE_EVENT, updateIconsCallback);\\r\\n this.viewer.addEventListener(Autodesk.Viewing.SHOW_EVENT, updateIconsCallback);\\r\\n }\\r\\n\\r\\n\\r\\n showIcons() {\\r\\n const $viewer: HTMLDivElement = this.container.querySelector('.adsk-viewing-viewer');\\r\\n const element = this.container.querySelector('label.markup');\\r\\n // remove previous...\\r\\n if (element) {\\r\\n element.remove();\\r\\n }\\r\\n\\r\\n this.labels = [];\\r\\n\\r\\n // do we have anything to show?\\r\\n if (this._icons === undefined || this._icons === null) {\\r\\n return;\\r\\n }\\r\\n\\r\\n // do we have access to the instance tree?\\r\\n const tree = this.viewer.model && this.viewer.model.getInstanceTree();\\r\\n if (tree === undefined) {\\r\\n return;\\r\\n }\\r\\n\\r\\n const onClick = (e) => {\\r\\n // this.viewer.select($(e.currentTarget).data('id'));\\r\\n // this.viewer.utilities.fitToView();\\r\\n };\\r\\n\\r\\n this._frags = {};\\r\\n for (let i = 0; i < this._icons.length; i++) {\\r\\n // we need to collect all the fragIds for a given dbId\\r\\n const icon = this._icons[i];\\r\\n this._frags['dbId' + icon.dbId] = [];\\r\\n\\r\\n\\r\\n const $label = document.createElement('label');\\r\\n $label.setAttribute('data-id', '' + icon.dbId);\\r\\n $label.className = 'markup update';\\r\\n $label.style.setProperty('display', this.viewer.isNodeVisible(icon.dbId) ? 'block' : 'none');\\r\\n $label.style.setProperty('position', 'absolute');\\r\\n $label.style.setProperty('white-space', 'nowrap');\\r\\n $label.style.setProperty('cursor', 'pointer');\\r\\n $label.style.setProperty('z-index', '1');\\r\\n $label.addEventListener('click', this.options.onClick || onClick);\\r\\n\\r\\n\\r\\n $label.appendChild(icon.element);\\r\\n $viewer.appendChild($label);\\r\\n\\r\\n\\r\\n // now collect the fragIds\\r\\n const getChildren = (topParentId, dbId) => {\\r\\n if (tree.getChildCount(dbId) === 0) {\\r\\n getFrags(topParentId, dbId);\\r\\n } // get frags for this leaf child\\r\\n tree.enumNodeChildren(dbId, (childId) => {\\r\\n getChildren(topParentId, childId);\\r\\n });\\r\\n };\\r\\n const getFrags = (topParentId, dbId) => {\\r\\n tree.enumNodeFragments(dbId, (fragId) => {\\r\\n this._frags['dbId' + topParentId].push(fragId);\\r\\n });\\r\\n };\\r\\n getChildren(icon.dbId, icon.dbId);\\r\\n this.labels.push({id: icon.dbId, label: $label});\\r\\n }\\r\\n this.updateIcons(); // re-position for each fragId found\\r\\n }\\r\\n\\r\\n getModifiedWorldBoundingBox(dbId) {\\r\\n const fragList = this.viewer.model.getFragmentList();\\r\\n const nodebBox = new THREE.Box3();\\r\\n\\r\\n // for each fragId on the list, get the bounding box\\r\\n for (const fragId of this._frags['dbId' + dbId]) {\\r\\n const fragbBox = new THREE.Box3();\\r\\n fragList.getWorldBounds(fragId, fragbBox);\\r\\n nodebBox.union(fragbBox); // create a unifed bounding box\\r\\n }\\r\\n\\r\\n return nodebBox;\\r\\n }\\r\\n\\r\\n updateIcons() {\\r\\n\\r\\n for (let i = 0; i < this.labels.length; i++) {\\r\\n const pos = this.viewer.worldToClient(this.getModifiedWorldBoundingBox(this.labels[i].id).getCenter());\\r\\n const label = this.labels[i].label;\\r\\n\\r\\n label.style.setProperty('left', Math.floor(pos.x - label.offsetWidth / 2) + 'px');\\r\\n label.style.setProperty('top', Math.floor(pos.y - label.offsetHeight / 2) + 'px');\\r\\n label.style.setProperty('display', this.viewer.isNodeVisible(this.labels[i].id) ? 'block' : 'none');\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"import {Injectable} from '@angular/core';\\r\\n\\r\\ndeclare var document: any;\\r\\n\\r\\nconst ScriptStore: any[] = [\\r\\n {name: 'viewer', src: 'https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js'},\\r\\n];\\r\\nconst StyleStore: any[] = [\\r\\n {name: 'viewer', src: 'https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css'},\\r\\n];\\r\\n\\r\\nlet promiseLoad: any = null;\\r\\nlet isLoadedStyles = false;\\r\\n\\r\\n\\r\\n@Injectable()\\r\\nexport class ScriptService {\\r\\n\\r\\n private scripts: any = {};\\r\\n private styles: any = {};\\r\\n\\r\\n constructor() {\\r\\n ScriptStore.forEach((script: any) => {\\r\\n this.scripts[script.name] = {\\r\\n loaded: false,\\r\\n src: script.src\\r\\n };\\r\\n });\\r\\n }\\r\\n\\r\\n loadStyles() {\\r\\n\\r\\n if (!isLoadedStyles) {\\r\\n isLoadedStyles = true;\\r\\n StyleStore.forEach(style => {\\r\\n const el = document.createElement('link');\\r\\n el.rel = 'stylesheet';\\r\\n el.href = style.src;\\r\\n el.type = 'text/css';\\r\\n document.getElementsByTagName('head')[0].appendChild(el);\\r\\n });\\r\\n }\\r\\n }\\r\\n\\r\\n load(...scripts: string[]) {\\r\\n if (!promiseLoad) {\\r\\n promiseLoad = new Promise((resolve, reject) => {\\r\\n const promises: any[] = [];\\r\\n scripts.forEach((script) => promises.push(this.loadScript(script)));\\r\\n Promise.all(promises).then(data => {\\r\\n resolve(data);\\r\\n });\\r\\n });\\r\\n }\\r\\n return promiseLoad;\\r\\n }\\r\\n\\r\\n loadScript(name: string) {\\r\\n return new Promise((resolve, reject) => {\\r\\n if (this.scripts[name].loaded) {\\r\\n resolve({script: name, loaded: true, status: 'Already Loaded'});\\r\\n } else {\\r\\n const script = document.createElement('script');\\r\\n script.type = 'text/javascript';\\r\\n script.src = this.scripts[name].src;\\r\\n if (script.readyState) { // IE\\r\\n script.onreadystatechange = () => {\\r\\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\\r\\n script.onreadystatechange = null;\\r\\n this.scripts[name].loaded = true;\\r\\n resolve({script: name, loaded: true, status: 'Loaded'});\\r\\n }\\r\\n };\\r\\n } else { // Others\\r\\n script.onload = () => {\\r\\n this.scripts[name].loaded = true;\\r\\n resolve({script: name, loaded: true, status: 'Loaded'});\\r\\n };\\r\\n }\\r\\n script.onerror = (error: any) => resolve({script: name, loaded: false, status: 'Loaded'});\\r\\n document.getElementsByTagName('head')[0].appendChild(script);\\r\\n }\\r\\n });\\r\\n }\\r\\n\\r\\n}\\r\\n\",\"/**\\r\\n * Интеграция с Autodesk Forge Viewer\\r\\n */\\r\\n/// <reference types=\\\"forge-viewer\\\" />\\r\\nimport {\\r\\n ChangeDetectionStrategy,\\r\\n ChangeDetectorRef,\\r\\n Component,\\r\\n ElementRef,\\r\\n EventEmitter,\\r\\n Input,\\r\\n NgModule,\\r\\n NgZone,\\r\\n OnDestroy,\\r\\n OnInit,\\r\\n Output,\\r\\n ViewChild\\r\\n} from '@angular/core';\\r\\nimport {CommonModule} from '@angular/common';\\r\\nimport {ParamAssignExtension, ParamLabel} from './ParamAssign';\\r\\nimport {HttpClient} from '@angular/common/http';\\r\\nimport {FormsModule} from '@angular/forms';\\r\\nimport {ScriptService} from './Script.service';\\r\\nimport {ForgeOption} from './forge.interface';\\r\\nimport Cookies from 'js-cookie';\\r\\n\\r\\ndeclare const Autodesk: any;\\r\\n\\r\\n\\r\\n@Component({\\r\\n standalone: true,\\r\\n selector: 'app-forge',\\r\\n templateUrl: './forge.component.html',\\r\\n styleUrls: ['./forge.component.scss'],\\r\\n changeDetection: ChangeDetectionStrategy.OnPush,\\r\\n imports: [FormsModule, CommonModule],\\r\\n providers: [ScriptService],\\r\\n})\\r\\nexport class ForgeComponent implements OnInit, OnDestroy {\\r\\n\\r\\n constructor(private http: HttpClient,\\r\\n private cdr: ChangeDetectorRef,\\r\\n private ngZone: NgZone,\\r\\n private scripts: ScriptService) {}\\r\\n\\r\\n @ViewChild('forgeViewer') viewerDiv: ElementRef<HTMLDivElement>;\\r\\n\\r\\n @Input() urn = '';\\r\\n @Input() labels: ForgeOption[] = [];\\r\\n @Output() onReady = new EventEmitter();\\r\\n\\r\\n public documentId: string;\\r\\n viewer: any;\\r\\n\\r\\n public ngOnInit() {\\r\\n this.scripts.load('viewer').then(data => {\\r\\n this.launchViewer(this.urn);\\r\\n }).catch(error => console.log(error));\\r\\n this.scripts.loadStyles();\\r\\n }\\r\\n\\r\\n ngOnDestroy() {}\\r\\n\\r\\n authForge(callback) {\\r\\n callback(Cookies.get('forge'), 3599);\\r\\n }\\r\\n\\r\\n launchViewer(urn) {\\r\\n const options = {\\r\\n env: 'AutodeskProduction',\\r\\n getAccessToken: this.authForge.bind(this)\\r\\n };\\r\\n this.ngZone.runOutsideAngular(() => {\\r\\n ParamAssignExtension.registerExtension(ParamAssignExtension.extensionName, this.extensionLoaded.bind(this));\\r\\n Autodesk.Viewing.Initializer(options, () => {\\r\\n const documentId = 'urn:' + urn;\\r\\n this.viewer = new Autodesk.Viewing.GuiViewer3D(this.viewerDiv.nativeElement, {extensions: []});\\r\\n Autodesk.Viewing.Document.load(documentId, this.onDocumentLoadSuccess.bind(this), this.onDocumentLoadFailure.bind(this));\\r\\n });\\r\\n });\\r\\n }\\r\\n\\r\\n extensionLoaded() {\\r\\n console.log('extensionLoaded');\\r\\n }\\r\\n\\r\\n afterViewerEvents(viewer, events) {\\r\\n const promises = [];\\r\\n events.forEach((event) => {\\r\\n promises.push(new Promise((resolve, reject) => {\\r\\n const handler = () => {\\r\\n viewer.removeEventListener(event, handler);\\r\\n resolve(null);\\r\\n };\\r\\n viewer.addEventListener(event, handler);\\r\\n }));\\r\\n });\\r\\n return Promise.all(promises);\\r\\n }\\r\\n\\r\\n onDocumentLoadSuccess(doc) {\\r\\n this.viewer.start();\\r\\n const viewables = doc.getRoot().getDefaultGeometry();\\r\\n this.viewer.loadDocumentNode(doc, viewables, {}).then(async (model) => {\\r\\n this.loadParamExtension();\\r\\n });\\r\\n }\\r\\n\\r\\n loadParamExtension() {\\r\\n this.viewer.getObjectTree((tree) => {\\r\\n const icons: ParamLabel[] = [];\\r\\n tree.enumNodeChildren(tree.getRootId(), (dbid) => {\\r\\n this.labels.forEach(label => {\\r\\n if (label.name === tree.getNodeName(dbid)) {\\r\\n icons.push({\\r\\n element: label.element,\\r\\n dbId: dbid,\\r\\n name: label.name,\\r\\n });\\r\\n }\\r\\n });\\r\\n }, true);\\r\\n\\r\\n this.viewer.loadExtension(ParamAssignExtension.extensionName, {icons});\\r\\n this.onReady.emit({viewer: this.viewer});\\r\\n });\\r\\n }\\r\\n\\r\\n onDocumentLoadFailure(viewerErrorCode, viewerErrorMsg) {\\r\\n console.error('onDocumentLoadFailure() - errorCode:' + viewerErrorCode + '\\\\n- errorMessage:' + viewerErrorMsg);\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\n@NgModule({\\r\\n imports: [ForgeComponent],\\r\\n exports: [ForgeComponent],\\r\\n providers: [ScriptService],\\r\\n})\\r\\nexport class ForgeComponentModule {}\\r\\n\",\"<div #forgeViewer class=\\\"adsk-viewer\\\"></div>\\r\\n\\r\\n\",\"import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, NgModule, OnChanges, OnDestroy, OnInit} from '@angular/core';\\r\\nimport {ItemInterval, ItemSingle, ParamConfigSingle, SiteTheme, ChartTypes} from '../widget.interface';\\r\\nimport {EChartsOption, SeriesOption} from 'echarts/types/dist/echarts';\\r\\nimport {NgxEchartsDirective} from 'ngx-echarts';\\r\\nimport {CommonModule} from '@angular/common';\\r\\n\\r\\n\\r\\n@Component({\\r\\n standalone: true,\\r\\n selector: 'app-pie-chart',\\r\\n templateUrl: './pie-chart.component.html',\\r\\n styleUrls: ['./pie-chart.component.scss'],\\r\\n changeDetection: ChangeDetectionStrategy.OnPush,\\r\\n imports: [CommonModule, NgxEchartsDirective],\\r\\n})\\r\\nexport class PieChartComponent implements OnInit, OnChanges, OnDestroy {\\r\\n\\r\\n @Input() values: ItemInterval | ItemSingle;\\r\\n @Input() config: ParamConfigSingle;\\r\\n @Input() locale = 'en';\\r\\n @Input() noDataMessage = 'No data';\\r\\n @Input() width = 250;\\r\\n @Input() height = 250;\\r\\n @Input() margin = {\\r\\n top: 25,\\r\\n right: 25,\\r\\n bottom: 25,\\r\\n left: 25\\r\\n };\\r\\n\\r\\n @Input() theme: SiteTheme;\\r\\n\\r\\n options: EChartsOption = {\\r\\n backgroundColor: 'transparent',\\r\\n tooltip: {\\r\\n trigger: 'item',\\r\\n confine: true,\\r\\n appendToBody: true,\\r\\n },\\r\\n toolbox: {\\r\\n feature: {\\r\\n saveAsImage: {show: true}\\r\\n }\\r\\n },\\r\\n grid: {\\r\\n left: `${this.margin.left}px`,\\r\\n right: `${this.margin.right}px`,\\r\\n bottom: `${this.margin.bottom}px`,\\r\\n top: `${this.margin.top}px`,\\r\\n containLabel: true\\r\\n },\\r\\n series: [],\\r\\n legend: {\\r\\n show: false,\\r\\n },\\r\\n };\\r\\n\\r\\n uniqTitles = [];\\r\\n\\r\\n initOpts: any = {\\r\\n locale: this.locale.toLocaleUpperCase()\\r\\n };\\r\\n\\r\\n darkColor = [\\r\\n {'color': '#00FF7F'}, {'color': '#00E0E0'}, {'color': '#FF00FF'}, {'color': '#B2CCE5'}, {'color': '#F1F227'},\\r\\n {'color': '#FDE3A7'}, {'color': '#F64747'}, {'color': '#8BB82D'}, {'color': '#1E90FF'}, {'color': '#D2527F'},\\r\\n {'color': '#91A6BA'}\\r\\n ];\\r\\n\\r\\n lightColor = [\\r\\n {'color': '#007A4B'}, {'color': '#3477DB'}, {'color': '#D252B2'}, {'color': '#708090'}, {'color': '#AF851A'},\\r\\n {'color': '#BB671C'}, {'color': '#E00000'}, {'color': '#005031'}, {'color': '#34415E'}, {'color': '#58007E'},\\r\\n {'color': '#2E343B'}\\r\\n ];\\r\\n\\r\\n display = false;\\r\\n echartsInstance: any;\\r\\n\\r\\n constructor(private cdr: ChangeDetectorRef) {}\\r\\n\\r\\n ngOnChanges(changes) {\\r\\n if (changes.locale) {\\r\\n this.initOpts = {locale: this.locale};\\r\\n this.display = false;\\r\\n this.cdr.detectChanges();\\r\\n setTimeout(() => {\\r\\n this.display = true;\\r\\n this.cdr.detectChanges();\\r\\n });\\r\\n }\\r\\n if (this.echartsInstance && (changes.width || changes.height)) {\\r\\n this.resizeChart();\\r\\n }\\r\\n if (changes.config || changes.values || changes.theme) {\\r\\n if (this.config && this.values) {\\r\\n this.updateData(this.config, this.values);\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n ngOnInit() {\\r\\n this.initOpts = {locale: this.locale};\\r\\n }\\r\\n\\r\\n ngOnDestroy() {}\\r\\n\\r\\n onChartInit(ec) {\\r\\n this.echartsInstance = ec;\\r\\n }\\r\\n\\r\\n resizeChart() {\\r\\n if (this.echartsInstance) {\\r\\n this.echartsInstance.resize();\\r\\n }\\r\\n }\\r\\n\\r\\n updateData(config: ParamConfigSingle, values: ItemInterval | ItemSingle) {\\r\\n const res: SeriesOption[] = [];\\r\\n this.uniqTitles = [];\\r\\n const customColors = [];\\r\\n\\r\\n const data = (values.data as any).map((val, indexData) => {\\r\\n customColors.push(val.color || this.getChartColor(indexData));\\r\\n return {\\r\\n value: val.value,\\r\\n name: this.findUniqName(val.key)\\r\\n };\\r\\n });\\r\\n if ((this.config as any).legend) {\\r\\n this.options.legend = {show: true, bottom: '16px'};\\r\\n }\\r\\n if ((config as any).charttype === ChartTypes.intervalPieChart) {\\r\\n this.options.tooltip = {show: false};\\r\\n this.options.legend = {show: false};\\r\\n this.options.grid = {show: false};\\r\\n\\r\\n res.push({\\r\\n name: 'Chart',\\r\\n type: 'pie',\\r\\n radius: '55%',\\r\\n center: ['50%', '50%'],\\r\\n data: data,\\r\\n itemStyle: {\\r\\n color: ({seriesIndex, dataIndex}) => customColors[dataIndex],\\r\\n },\\r\\n label: {show: false},\\r\\n labelLine: {show: false},\\r\\n animationType: 'scale',\\r\\n animationEasing: 'elasticOut',\\r\\n animationDelay: function (idx) {\\r\\n return Math.random() * 200;\\r\\n }\\r\\n });\\r\\n } else {\\r\\n res.push({\\r\\n name: 'Chart',\\r\\n type: 'pie',\\r\\n radius: ['40%', '70%'],\\r\\n center: ['50%', '50%'],\\r\\n data: data,\\r\\n label: {\\r\\n color: this.theme === SiteTheme.dark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)'\\r\\n },\\r\\n labelLine: {\\r\\n lineStyle: {\\r\\n color: this.theme === SiteTheme.dark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)'\\r\\n },\\r\\n smooth: 0.2,\\r\\n length: 10,\\r\\n length2: 20\\r\\n },\\r\\n itemStyle: {\\r\\n borderRadius: 4,\\r\\n color: ({seriesIndex, dataIndex}) => this.getChartColor(dataIndex),\\r\\n },\\r\\n animationType: 'scale',\\r\\n animationEasing: 'elasticOut',\\r\\n animationDelay: function (idx) {\\r\\n return Math.random() * 200;\\r\\n }\\r\\n });\\r\\n }\\r\\n this.options = {...this.options, series: res};\\r\\n }\\r\\n\\r\\n findUniqName(title, ind = 0) {\\r\\n if (ind === 0) {\\r\\n if (this.uniqTitles.indexOf(title) !== -1) {\\r\\n return this.findUniqName(title, ind + 1);\\r\\n }\\r\\n this.uniqTitles.push(title);\\r\\n return title;\\r\\n } else {\\r\\n const newTitle = `${title} (${ind})`;\\r\\n if (this.uniqTitles.indexOf(newTitle) !== -1) {\\r\\n return this.findUniqName(title, ind + 1);\\r\\n }\\r\\n this.uniqTitles.push(newTitle);\\r\\n return newTitle;\\r\\n }\\r\\n }\\r\\n\\r\\n getChartColor(seed) {\\r\\n if (this.theme === SiteTheme.dark) {\\r\\n return this.lightColor[seed % this.darkColor.length].color;\\r\\n } else {\\r\\n return this.darkColor[seed % this.lightColor.length].color;\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n@NgModule({\\r\\n imports: [PieChartComponent],\\r\\n exports: [PieChartComponent],\\r\\n})\\r\\nexport class PieChartComponentModule {}\\r\\n\",\"<div echarts [options]=\\\"options\\\" *ngIf=\\\"display\\\" [initOpts]=\\\"initOpts\\\" style=\\\"width:100%; height: 100%\\\" [theme]=\\\"theme\\\" (chartInit)=\\\"onChartInit($event)\\\"></div>\\r\\n\",\"\\r\\n/*\\r\\n* Licensed to the Apache Software Foundation (ASF) under one\\r\\n* or more contributor license agreements. See the NOTICE file\\r\\n* distributed with this work for additional information\\r\\n* regarding copyright ownership. The ASF licenses this file\\r\\n* to you under the Apache License, Version 2.0 (the\\r\\n* \\\"License\\\"); you may not use this file except in compliance\\r\\n* with the License. You may obtain a copy of the License at\\r\\n*\\r\\n* http://www.apache.org/licenses/LICENSE-2.0\\r\\n*\\r\\n* Unless required by applicable law or agreed to in writing,\\r\\n* software distributed under the License is distributed on an\\r\\n* \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\\r\\n* KIND, either express or implied. See the License for the\\r\\n* specific language governing permissions and limitations\\r\\n* under the License.\\r\\n*/\\r\\n\\r\\n\\r\\n/**\\r\\n * AUTO-GENERATED FILE. DO NOT MODIFY.\\r\\n */\\r\\n\\r\\n/*\\r\\n * Licensed to the Apache Software Foundation (ASF) under one\\r\\n * or more contributor license agreements. See the NOTICE file\\r\\n * distributed with this work for additional information\\r\\n * regarding copyright ownership. The ASF licenses this file\\r\\n * to you under the Apache License, Version 2.0 (the\\r\\n * \\\"License\\\"); you may not use this file except in compliance\\r\\n * with the License. You may obtain a copy of the License at\\r\\n *\\r\\n * http://www.apache.org/licenses/LICENSE-2.0\\r\\n *\\r\\n * Unless required by applicable law or agreed to in writing,\\r\\n * software distributed under the License is distributed on an\\r\\n * \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\\r\\n * KIND, either express or implied. See the License for the\\r\\n * specific language governing permissions and limitations\\r\\n * under the License.\\r\\n */\\r\\n\\r\\n/**\\r\\n * Language: Russian.\\r\\n */\\r\\nexport default {\\r\\n time: {\\r\\n month: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],\\r\\n monthAbbr: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],\\r\\n dayOfWeek: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],\\r\\n dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']\\r\\n },\\r\\n legend: {\\r\\n selector: {\\r\\n all: 'Всё',\\r\\n inverse: 'Обратить'\\r\\n }\\r\\n },\\r\\n toolbox: {\\r\\n brush: {\\r\\n title: {\\r\\n rect: 'Выделить область',\\r\\n polygon: 'Инструмент «Лассо»',\\r\\n lineX: 'Горизонтальное выделение',\\r\\n lineY: 'Вертикальное выделение',\\r\\n keep: 'Оставить выбранное',\\r\\n clear: 'Очистить выбранное'\\r\\n }\\r\\n },\\r\\n dataView: {\\r\\n title: 'Данные',\\r\\n lang: ['Данные', 'Закрыть', 'Обновить']\\r\\n },\\r\\n dataZoom: {\\r\\n title: {\\r\\n zoom: 'Увеличить',\\r\\n back: 'Сбросить увеличение'\\r\\n }\\r\\n },\\r\\n magicType: {\\r\\n title: {\\r\\n line: 'Линия',\\r\\n bar: 'Гистограмма',\\r\\n stack: 'Стак',\\r\\n tiled: 'Плитка'\\r\\n }\\r\\n },\\r\\n restore: {\\r\\n title: 'Восстановить'\\r\\n },\\r\\n saveAsImage: {\\r\\n title: 'Сохранить как картинку',\\r\\n lang: ['Правый клик, чтобы сохранить картинку']\\r\\n }\\r\\n },\\r\\n series: {\\r\\n typeNames: {\\r\\n pie: 'Круговая диаграмма',\\r\\n bar: 'Столбчатая диаграмма',\\r\\n line: 'Линейный график',\\r\\n scatter: 'Точечная диаграмма',\\r\\n effectScatter: 'Точечная диаграмма с волнами',\\r\\n radar: 'Лепестковая диаграмма',\\r\\n tree: 'Дерево',\\r\\n treemap: 'Плоское дерево',\\r\\n boxplot: 'Ящик с усами',\\r\\n candlestick: 'Свечной график',\\r\\n k: 'График К-линий',\\r\\n heatmap: 'Тепловая карта',\\r\\n map: 'Карта',\\r\\n parallel: 'Диаграмма параллельных координат',\\r\\n lines: 'Линейный граф',\\r\\n graph: 'Граф отношений',\\r\\n sankey: 'Диаграмма Санкей',\\r\\n funnel: 'Воронкообразная диаграмма',\\r\\n gauge: 'Шкала',\\r\\n pictorialBar: 'Столбец-картинка',\\r\\n themeRiver: 'Тематическая река',\\r\\n sunburst: 'Солнечные лучи',\\r\\n custom: 'Пользовательский график',\\r\\n chart: 'График'\\r\\n }\\r\\n },\\r\\n aria: {\\r\\n general: {\\r\\n withTitle: 'Это график, показывающий \\\"{title}\\\"',\\r\\n withoutTitle: 'Это график'\\r\\n },\\r\\n series: {\\r\\n single: {\\r\\n prefix: '',\\r\\n withName: ' с типом {seriesType} и именем {seriesName}.',\\r\\n withoutName: ' с типом {seriesType}.'\\r\\n },\\r\\n multiple: {\\r\\n prefix: '. Он состоит из {seriesCount} серий.',\\r\\n withName: ' Серия {seriesId} имеет тип {seriesType} и показывает {seriesName}.',\\r\\n withoutName: ' Серия {seriesId} имеет тип {seriesType}.',\\r\\n separator: {\\r\\n middle: '',\\r\\n end: ''\\r\\n }\\r\\n }\\r\\n },\\r\\n data: {\\r\\n allData: 'Данные таковы: ',\\r\\n partialData: 'Первые {displayCnt} элементов: ',\\r\\n withName: 'значение для {name} — {value}',\\r\\n withoutName: '{value}',\\r\\n separator: {\\r\\n middle: ', ',\\r\\n end: '. '\\r\\n }\\r\\n }\\r\\n }\\r\\n};\\r\\n\",\"\\r\\n/*\\r\\n* Licensed to the Apache Software Foundation (ASF) under one\\r\\n* or more contributor license agreements. See the NOTICE file\\r\\n* distributed with this work for additional information\\r\\n* regarding copyright ownership. The ASF licenses this file\\r\\n* to you under the Apache License, Version 2.0 (the\\r\\n* \\\"License\\\"); you may not use this file except in compliance\\r\\n* with the License. You may obtain a copy of the License at\\r\\n*\\r\\n* http://www.apache.org/licenses/LICENSE-2.0\\r\\n*\\r\\n* Unless required by applicable law or agreed to in writing,\\r\\n* software distributed under the License is distributed on an\\r\\n* \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\\r\\n* KIND, either express or implied. See the License for the\\r\\n* specific language governing permissions and limitations\\r\\n* under the License.\\r\\n*/\\r\\n\\r\\n\\r\\n/**\\r\\n * AUTO-GENERATED FILE. DO NOT MODIFY.\\r\\n */\\r\\n\\r\\n/*\\r\\n* Licensed to the Apache Software Foundation (ASF) under one\\r\\n* or more contributor license agreements. See the NOTICE file\\r\\n* distributed with this work for additional information\\r\\n* regarding copyright ownership. The ASF licenses this file\\r\\n* to you under the Apache License, Version 2.0 (the\\r\\n* \\\"License\\\"); you may not use this file except in compliance\\r\\n* with the License. You may obtain a copy of the License at\\r\\n*\\r\\n* http://www.apache.org/licenses/LICENSE-2.0\\r\\n*\\r\\n* Unless required by applicable law or agreed to in writing,\\r\\n* software distributed under the License is distributed on an\\r\\n* \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\\r\\n* KIND, either express or implied. See the License for the\\r\\n* specific language governing permissions and limitations\\r\\n* under the License.\\r\\n*/\\r\\n\\r\\n/**\\r\\n * Language: English.\\r\\n */\\r\\nexport default {\\r\\n time: {\\r\\n month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\\r\\n monthAbbr: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\\r\\n dayOfWeek: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\\r\\n dayOfWeekAbbr: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\\r\\n },\\r\\n legend: {\\r\\n selector: {\\r\\n all: 'All',\\r\\n inverse: 'Inv'\\r\\n }\\r\\n },\\r\\n toolbox: {\\r\\n brush: {\\r\\n title: {\\r\\n rect: 'Box Select',\\r\\n polygon: 'Lasso Select',\\r\\n lineX: 'Horizontally Select',\\r\\n lineY: 'Vertically Select',\\r\\n keep: 'Keep Selections',\\r\\n clear: 'Clear Selections'\\r\\n }\\r\\n },\\r\\n dataView: {\\r\\n title: 'Data View',\\r\\n lang: ['Data View', 'Close', 'Refresh']\\r\\n },\\r\\n dataZoom: {\\r\\n title: {\\r\\n zoom: 'Zoom',\\r\\n back: 'Zoom Reset'\\r\\n }\\r\\n },\\r\\n magicType: {\\r\\n title: {\\r\\n line: 'Line',\\r\\n bar: 'Histogram',\\r\\n stack: 'Stack',\\r\\n tiled: 'Tile'\\r\\n }\\r\\n },\\r\\n restore: {\\r\\n title: 'Restore'\\r\\n },\\r\\n saveAsImage: {\\r\\n title: 'Save as Image',\\r\\n lang: ['Right Click to Save Image']\\r\\n }\\r\\n },\\r\\n series: {\\r\\n typeNames: {\\r\\n pie: 'Pie chart',\\r\\n bar: 'Bar chart',\\r\\n line: 'Line chart',\\r\\n scatter: 'Scatter plot',\\r\\n effectScatter: 'Ripple scatter plot',\\r\\n radar: 'Radar chart',\\r\\n tree: 'Tree',\\r\\n treemap: 'Treemap',\\r\\n boxplot: 'Boxplot',\\r\\n candlestick: 'Candlestick',\\r\\n k: 'K line chart',\\r\\n heatmap: 'Heat map',\\r\\n map: 'Map',\\r\\n parallel: 'Parallel coordinate map',\\r\\n lines: 'Line graph',\\r\\n graph: 'Relationship graph',\\r\\n sankey: 'Sankey diagram',\\r\\n funnel: 'Funnel chart',\\r\\n gauge: 'Gauge',\\r\\n pictorialBar: 'Pictorial bar',\\r\\n themeRiver: 'Theme River Map',\\r\\n sunburst: 'Sunburst',\\r\\n custom: 'Custom chart',\\r\\n chart: 'Chart'\\r\\n }\\r\\n },\\r\\n aria: {\\r\\n general: {\\r\\n withTitle: 'This is a chart about \\\"{title}\\\"',\\r\\n withoutTitle: 'This is a chart'\\r\\n },\\r\\n series: {\\r\\n single: {\\r\\n prefix: '',\\r\\n withName: ' with type {seriesType} named {seriesName}.',\\r\\n withoutName: ' with type {seriesType}.'\\r\\n },\\r\\n multiple: {\\r\\n prefix: '. It consists of {seriesCount} series count.',\\r\\n withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',\\r\\n withoutName: ' The {seriesId} series is a {seriesType}.',\\r\\n separator: {\\r\\n middle: '',\\r\\n end: ''\\r\\n }\\r\\n }\\r\\n },\\r\\n data: {\\r\\n allData: 'The data is as follows: ',\\r\\n partialData: 'The first {displayCnt} items are: ',\\r\\n withName: 'the data for {name} is {value}',\\r\\n withoutName: '{value}',\\r\\n separator: {\\r\\n middle: ', ',\\r\\n end: '. '\\r\\n }\\r\\n }\\r\\n }\\r\\n};\\r\\n\",\"import {\\r\\n ChangeDetectionStrategy,\\r\\n ChangeDetectorRef,\\r\\n Component,\\r\\n Input,\\r\\n NgModule,\\r\\n OnChanges,\\r\\n OnDestroy,\\r\\n OnInit,\\r\\n ViewEncapsulation\\r\\n} from '@angular/core';\\r\\nimport {\\r\\n ChartTypes, ChartViews,\\r\\n ItemSeries,\\r\\n ParamConfigSeries,\\r\\n SeriesCandleValue,\\r\\n SeriesDuration,\\r\\n SeriesLineValue,\\r\\n SiteTheme\\r\\n} from '../widget.interface';\\r\\nimport {CommonModule, DatePipe} from '@angular/common';\\r\\nimport {NgxEchartsDirective} from 'ngx-echarts';\\r\\nimport {EChartsOption, SeriesOption} from 'echarts/types/dist/echarts';\\r\\nimport * as echarts from 'echarts';\\r\\nimport {PieChartComponent} from '../pie-chart/pie-chart.component';\\r\\nimport langRU from './ru';\\r\\nimport langEN from './en';\\r\\n\\r\\necharts.registerLocale('RU', langRU);\\r\\necharts.registerLocale('EN', langEN);\\r\\n\\r\\nconst FULL_DAY = 86400000;\\r\\nconst GRADIENT = [\\r\\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\\r\\n {offset: 0, color: 'rgb(128, 255, 165)'},\\r\\n {offset: 1, color: 'rgb(1, 191, 236)'}\\r\\n ]),\\r\\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\\r\\n {offset: 0, color: 'rgb(0, 221, 255)'},\\r\\n {offset: 1, color: 'rgb(77, 119, 255)'}\\r\\n ]),\\r\\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\\r\\n {offset: 0, color: 'rgb(55, 162, 255)'},\\r\\n {offset: 1, color: 'rgb(116, 21, 219)'}\\r\\n ]),\\r\\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\\r\\n {offset: 0, color: 'rgb(255, 0, 135)'},\\r\\n {offset: 1, color: 'rgb(135, 0, 157)'}\\r\\n ]),\\r\\n new echarts.graphic.LinearGradient(0, 0, 0, 1, [\\r\\n {offset: 0, color: 'rgb(255, 191, 0)'},\\r\\n {offset: 1, color: 'rgb(224, 62, 76)'}\\r\\n ])\\r\\n];\\r\\n\\r\\nconst getGradient = (seed: number) => GRADIENT[seed % GRADIENT.length];\\r\\n\\r\\nconst cutName = (name: string, length: number) => {\\r\\n if (name.length > length + 3) {\\r\\n return name.substring(0, length) + '...';\\r\\n }\\r\\n return name;\\r\\n};\\r\\n\\r\\nconst BackGround = {\\r\\n [SiteTheme.light]: '#FFFFFF',\\r\\n [SiteTheme.dark]: '#494C55'\\r\\n};\\r\\n\\r\\nconst RedZone = {\\r\\n [SiteTheme.light]: 'rgba(255, 173, 177, 0.4)',\\r\\n [SiteTheme.dark]: 'rgba(145, 30, 49, 0.2)'\\r\\n};\\r\\n\\r\\nexport interface SimpleData {\\r\\n title?: string;\\r\\n data: number[];\\r\\n}\\r\\n\\r\\n@Component({\\r\\n standalone: true,\\r\\n selector: 'app-echart',\\r\\n templateUrl: './echart.component.html',\\r\\n styleUrls: ['./echart.component.scss'],\\r\\n changeDetection: ChangeDetectionStrategy.OnPush,\\r\\n encapsulation: ViewEncapsulation.Emulated,\\r\\n imports: [CommonModule, NgxEchartsDirective],\\r\\n})\\r\\nexport class EchartComponent implements OnInit, OnChanges, OnDestroy {\\r\\n\\r\\n @Input() values: ItemSeries[];\\r\\n @Input() simpleData: SimpleData[];\\r\\n @Input() config: ParamConfigSeries;\\r\\n @Input() locale = 'en';\\r\\n @Input() noDataMessage = 'No data';\\r\\n @Input() width = 250;\\r\\n @Input() height = 250;\\r\\n @Input() margin = {top: 70, right: 20, bottom: 60, left: 20};\\r\\n @Input() theme: SiteTheme;\\r\\n\\r\\n data: any[] = [];\\r\\n options: EChartsOption = {\\r\\n backgroundColor: 'transparent',\\r\\n tooltip: {\\r\\n appendToBody: true,\\r\\n renderMode: 'html',\\r\\n trigger: 'axis',\\r\\n axisPointer: {type: 'cross'},\\r\\n className: 'label-formatter',\\r\\n formatter: (params: any[]) => {\\r\\n let res = 'No data';\\r\\n if (params && params[0]) {\\r\\n res = `<div class=\\\"title\\\">${new DatePipe(this.getLocale(this.locale)).transform(params[0].value[0], 'd MMM y, HH:mm')}</div><table>`;\\r\\n res += params.map((val: any) => {\\r\\n if (typeof val.value[val.value.length - 1] === 'number') {\\r\\n return `<tr><td class=\\\"label\\\">${val.marker} ${cutName(val.seriesName, 20)}</td>\\r\\n<td><div class=\\\"value\\\"><b>${this.roundData(val.value[1])}</b></div></td></tr>`;\\r\\n } else {\\r\\n const unit = val.value[val.value.length - 1].device.param.measure.unit ? val.value[val.value.length - 1].device.param.measure.unit : '';\\r\\n if (val.seriesType === 'candlestick') {\\r\\n return `<tr><td class=\\\"label\\\">${val.marker} ${cutName(val.seriesName, 20)}</td>\\r\\n<td><div class=\\\"value\\\"><div><span>ОТКР:</span> ${this.roundData(val.value[1])}</div><div><span>ЗАКР:</span> ${this.roundData(val.value[2])}</div><div><span>МИН:</span> ${this.roundData(val.value[3])}</div><div><span>МАКС:</span> ${this.roundData(val.value[4])}</div></div></td></tr>`;\\r\\n } else {\\r\\n return `<tr><td class=\\\"label\\\">${val.marker} ${cutName(val.seriesName, 20)}</td>\\r\\n<td><div class=\\\"value\\\"><b>${this.roundData(val.value[1])}</b> ${cutName(unit, 10)}</div></td></tr>`;\\r\\n }\\r\\n }\\r\\n }).join('') + '</table>';\\r\\n }\\r\\n return res;\\r\\n }\\r\\n },\\r\\n xAxis: {type: 'time', boundaryGap: ['0%', '0%']},\\r\\n yAxis: {type: 'value'},\\r\\n toolbox: {\\r\\n right: '20px',\\r\\n showTitle: false,\\r\\n feature: {},\\r\\n tooltip: {\\r\\n show: true,\\r\\n formatter: function (param) {\\r\\n return '<div>' + param.title + '</div>';\\r\\n },\\r\\n backgroundColor: '#222',\\r\\n extraCssText: 'color: #fff'\\r\\n }\\r\\n },\\r\\n grid: {\\r\\n left: `${this.margin.left}px`,\\r\\n right: `${this.margin.right}px`,\\r\\n bottom: `${this.margin.bottom}px`,\\r\\n top: `${this.margin.top}px`,\\r\\n containLabel: true\\r\\n },\\r\\n series: [],\\r\\n };\\r\\n\\r\\n uniqTitles: string[] = [];\\r\\n initOpts: any = {locale: this.locale.toLocaleUpperCase()};\\r\\n\\r\\n darkColor = [\\r\\n {'color': '#00FF7F'}, {'color': '#00E0E0'}, {'color': '#FF00FF'}, {'color': '#B2CCE5'}, {'color': '#F1F227'},\\r\\n {'color': '#FDE3A7'}, {'color': '#F64747'}, {'color': '#8BB82D'}, {'color': '#1E90FF'}, {'color': '#D2527F'},\\r\\n {'color': '#91A6BA'}\\r\\n ];\\r\\n\\r\\n lightColor = [\\r\\n {'color': '#007A4B'}, {'color': '#3477DB'}, {'color': '#D252B2'}, {'color': '#708090'}, {'color': '#AF851A'},\\r\\n {'color': '#BB671C'}, {'color': '#E00000'}, {'color': '#005031'}, {'color': '#34415E'}, {'color': '#58007E'},\\r\\n {'color': '#2E343B'}\\r\\n ];\\r\\n\\r\\n display = true;\\r\\n echartsInstance: any;\\r\\n\\r\\n constructor(private cdr: ChangeDetectorRef) {}\\r\\n\\r\\n ngOnChanges(changes: any) {\\r\\n if (changes.locale) {\\r\\n this.initOpts = {locale: this.locale};\\r\\n this.display = false;\\r\\n this.cdr.detectChanges();\\r\\n setTimeout(() => {\\r\\n this.display = true;\\r\\n this.cdr.detectChanges();\\r\\n });\\r\\n }\\r\\n if (this.echartsInstance && (changes.width || changes.height)) {\\r\\n this.resizeChart();\\r\\n }\\r\\n if (changes.config || changes.values || changes.theme || changes.simpleData) {\\r\\n this.data = [];\\r\\n if (this.config && (this.values || this.simpleData)) {\\r\\n if (this.values && this.values.length && this.values[0].data) {\\r\\n this.updateData(this.config, this.values);\\r\\n }\\r\\n if (this.simpleData && this.simpleData.length) {\\r\\n this.updateArrayData(this.config, this.simpleData);\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n ngOnInit() {\\r\\n this.initOpts = {locale: this.locale};\\r\\n }\\r\\n\\r\\n ngOnDestroy() {}\\r\\n\\r\\n onChartInit(ec: any) {\\r\\n this.echartsInstance = ec;\\r\\n }\\r\\n\\r\\n getLocale(locale: string) {\\r\\n return locale.toLowerCase() === 'ru' ? 'ru-RU' : 'en-US';\\r\\n }\\r\\n\\r\\n resizeChart() {\\r\\n if (this.echartsInstance) {\\r\\n this.echartsInstance.resize();\\r\\n }\\r\\n }\\r\\n\\r\\n roundData(value: number, numbers = 2) {\\r\\n return Math.round(value * Math.pow(10, numbers)) / Math.pow(10, numbers);\\r\\n }\\r\\n\\r\\n updateArrayData(config: ParamConfigSeries, values: SimpleData[]) {\\r\\n const res: SeriesOption[] = [];\\r\\n const xAxis: any = {\\r\\n type: 'value',\\r\\n boundaryGap: true,\\r\\n max: values[0].data.length,\\r\\n axisLabel: {\\r\\n formatter: function (value: number) {\\r\\n return value / 1000 + 'kGhz';\\r\\n }\\r\\n }\\r\\n };\\r\\n const legend: string[] = values.map((val) => val.title || '');\\r\\n const yAxis: any = {type: 'value'};\\r\\n\\r\\n values.forEach((value, ind) => {\\r\\n res.push({\\r\\n type: 'line',\\r\\n name: value.title,\\r\\n lineStyle: {color: this.getChartColor(ind)},\\r\\n itemStyle: {color: this.getChartColor(ind)},\\r\\n data: value.data.map((val, i) => [i, val]),\\r\\n });\\r\\n });\\r\\n\\r\\n const magicType = {type: ['bar', 'line']};\\r\\n\\r\\n this.options = {\\r\\n ...this.options,\\r\\n xAxis,\\r\\n yAxis,\\r\\n legend: {data: legend, bottom: `8px`, show: true, type: 'scroll'},\\r\\n series: res,\\r\\n grid: {\\r\\n ...this.options.grid,\\r\\n left: this.margin.left + 30,\\r\\n right: this.margin.right + 30,\\r\\n },\\r\\n toolbox: {\\r\\n ...this.options.toolbox,\\r\\n feature: {\\r\\n ...(this.options.toolbox as any).feature,\\r\\n saveAsImage: {show: true, backgroundColor: BackGround[this.theme]},\\r\\n magicType,\\r\\n }\\r\\n }\\r\\n };\\r\\n }\\r\\n\\r\\n updateData(config: ParamConfigSeries, values: ItemSeries[]) {\\r\\n const res: SeriesOption[] = [];\\r\\n const legend: string[] = [];\\r\\n const xAxis: any = {\\r\\n type: 'time',\\r\\n boundaryGap: false,\\r\\n axisLabel: {formatter: '{d} {MMM}\\\\n{HH}:{mm}'}\\r\\n };\\r\\n let yAxis: any[] = [];\\r\\n this.uniqTitles = [];\\r\\n\\r\\n values = this.updateValueTimeZone(values);\\r\\n const first = values[0];\\r\\n\\r\\n const shift = Math.max(0, Number(config.count || 0));\\r\\n const tz = first?.device?.object?.timezone ?? 0;\\r\\n const endNow = this.nowWithTZ(tz);\\r\\n\\r\\n let period: { startTime: number; endTime: number; text: string };\\r\\n switch (config.duration) {\\r\\n case SeriesDuration.day:\\r\\n period = this.getDay(shift, tz, endNow);\\r\\n break;\\r\\n case SeriesDuration.week:\\r\\n period = this.getWeek(shift, tz, endNow);\\r\\n break;\\r\\n case SeriesDuration.month:\\r\\n period = this.getMonth(shift, tz, endNow);\\r\\n break;\\r\\n default:\\r\\n period = this.getDay(0, tz, endNow);\\r\\n }\\r\\n\\r\\n if (config.generator) {\\r\\n const times = this.getMaxMinTimeline(first);\\r\\n xAxis.min = times.min - FULL_DAY;\\r\\n xAxis.max = times.max + FULL_DAY;\\r\\n } else {\\r\\n xAxis.min = period.startTime;\\r\\n xAxis.max = period.endTime;\\r\\n }\\r\\n if (config.viewtype !== ChartViews.stackedAreaChart) {\\r\\n const diff = Math.round((xAxis.max - xAxis.min) * 0.02);\\r\\n xAxis.min = xAxis.min - diff;\\r\\n xAxis.max = xAxis.max + diff;\\r\\n }\\r\\n\\r\\n const measures = values.map(v => v.device.param.measure.id).filter((v, i, s) => s.indexOf(v) === i);\\r\\n if (measures.length > 1 && config.viewtype !== ChartViews.stackedAreaChart) {\\r\\n yAxis = values.map((v, ind) => {\\r\\n const maxmin = this.getMaxMin(v);\\r\\n const diff = Math.round((maxmin.max - maxmin.min) * 0.1);\\r\\n return {\\r\\n type: 'value',\\r\\n min: Math.round(maxmin.min - diff),\\r\\n max: Math.round(maxmin.max + diff),\\r\\n position: ind % 2 === 0 ? 'left' : 'right',\\r\\n offset: 60 * Math.floor(ind / 2),\\r\\n axisLine: {show: true, lineStyle: {color: this.getChartColor(ind)}},\\r\\n splitLine: {show: false},\\r\\n axisLabel: {formatter: '{value} ', color: this.getChartColor(ind)}\\r\\n };\\r\\n });\\r\\n } else {\\r\\n yAxis.push({\\r\\n type: 'value',\\r\\n splitLine: {lineStyle: {color: ['#aaa', '#aaa']}},\\r\\n axisLine: {show: true, lineStyle: {color: this.getChartColor(0)}},\\r\\n axisLabel: {formatter: '{value} ', color: this.getChartColor(0)}\\r\\n });\\r\\n }\\r\\n\\r\\n if (config.viewtype === ChartViews.histogramChart) {\\r\\n values.forEach((value, ind) => {\\r\\n const title = this.findUniqName(value.title) + ' ' + (value.device.param.measure.unit ? value.device.param.measure.unit : '');\\r\\n legend.push(title);\\r\\n res.push({\\r\\n type: 'bar',\\r\\n data: value.data.map((val: any) => [val.timestmp, val.value, value]),\\r\\n itemStyle: {color: this.getChartColor(ind)},\\r\\n name: title,\\r\\n yAxisIndex: yAxis.length > 1 ? ind : 0,\\r\\n });\\r\\n });\\r\\n } else if (config.viewtype === ChartViews.candlestickBarChart) {\\r\\n values.forEach((value, ind) => {\\r\\n const title = this.findUniqName(value.title) + ' ' + (value.device.param.measure.unit ? value.device.param.measure.unit : '');\\r\\n legend.push(title);\\r\\n res.push({\\r\\n type: 'candlestick',\\r\\n data: value.data.map((val: any) => [val.timestmp, val.open, val.close, val.low, val.high, value]),\\r\\n name: title,\\r\\n yAxisIndex: yAxis.length > 1 ? ind : 0,\\r\\n });\\r\\n });\\r\\n } else {\\r\\n values.forEach((value, ind) => {\\r\\n const title = this.findUniqName(value.title) + ' ' + (value.device.param.measure.unit ? value.device.param.measure.unit : '');\\r\\n legend.push(title);\\r\\n\\r\\n if (config.viewtype === ChartViews.stackedAreaChart) {\\r\\n res.push({\\r\\n type: 'line',\\r\\n stack: 'Total',\\r\\n smooth: true,\\r\\n name: title,\\r\\n yAxisIndex: yAxis.length > 1 ? ind : 0,\\r\\n data: value.data.map((val: any) => [val.timestmp, val.value, value]),\\r\\n lineStyle: {width: 0},\\r\\n showSymbol: false,\\r\\n emphasis: {focus: 'series'},\\r\\n itemStyle: {color: getGradient(ind)},\\r\\n areaStyle: {opacity: 0.8, color: getGradient(ind)},\\r\\n });\\r\\n } else {\\r\\n let markArea: any;\\r\\n if (config.viewtype === ChartViews.lineWeekend) {\\r\\n const data = [];\\r\\n const days = Math.ceil((xAxis.max - xAxis.min) / FULL_DAY);\\r\\n if (days > 1) {\\r\\n for (let i = 0; i < days; i++) {\\r\\n const date = (new Date(xAxis.min + i * FULL_DAY));\\r\\n this.modifyTime(date, 0);\\r\\n const day = date.getUTCDay();\\r\\n if (day === 0) {\\r\\n const d = (new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0));\\r\\n data.push([{xAxis: d.getTime()}, {xAxis: d.getTime() + FULL_DAY}]);\\r\\n }\\r\\n if (day === 6) {\\r\\n const d = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\\r\\n data.push([{xAxis: d.getTime()}, {xAxis: d.getTime() + FULL_DAY * 2}]);\\r\\n i++;\\r\\n }\\r\\n }\\r\\n }\\r\\n markArea = {itemStyle: {color: RedZone[this.theme]}, data};\\r\\n }\\r\\n\\r\\n res.push({\\r\\n type: 'line',\\r\\n smooth: true,\\r\\n name: title,\\r\\n markArea,\\r\\n yAxisIndex: yAxis.length > 1 ? ind : 0,\\r\\n lineStyle: {color: this.getChartColor(ind)},\\r\\n itemStyle: {color: this.getChartColor(ind)},\\r\\n data: value.data.map((val: any) => [val.timestmp, val.value, value]),\\r\\n });\\r\\n }\\r\\n });\\r\\n }\\r\\n\\r\\n const magicType = config.viewtype === ChartViews.candlestickBarChart ? {} : {\\r\\n type: yAxis.length === 1 ? ['bar', 'stack', 'line'] : ['bar', 'line'],\\r\\n };\\r\\n\\r\\n this.options = {\\r\\n ...this.options,\\r\\n xAxis,\\r\\n yAxis,\\r\\n legend: {data: legend, bottom: `8px`, show: true, type: 'scroll'},\\r\\n series: res,\\r\\n grid: {\\r\\n ...this.options.grid,\\r\\n left: this.margin.left + Math.floor(yAxis.length / 2) * 30,\\r\\n right: this.margin.right + Math.floor(yAxis.length / 2) * 30,\\r\\n },\\r\\n toolbox: {\\r\\n ...this.options.toolbox,\\r\\n feature: {\\r\\n ...(this.options.toolbox as any).feature,\\r\\n saveAsImage: {show: true, backgroundColor: BackGround[this.theme]},\\r\\n magicType,\\r\\n }\\r\\n }\\r\\n };\\r\\n }\\r\\n\\r\\n findUniqName(title: string, ind = 0): string {\\r\\n if (ind === 0) {\\r\\n if (this.uniqTitles.indexOf(title) !== -1) {\\r\\n return this.findUniqName(title, ind + 1);\\r\\n }\\r\\n this.uniqTitles.push(title);\\r\\n return title;\\r\\n } else {\\r\\n const newTitle = `${title} (${ind})`;\\r\\n if (this.uniqTitles.indexOf(newTitle) !== -1) {\\r\\n return this.findUniqName(title, ind + 1);\\r\\n }\\r\\n this.uniqTitles.push(newTitle);\\r\\n return newTitle;\\r\\n }\\r\\n }\\r\\n\\r\\n getMaxMinSimple(values: SimpleData['data']) {\\r\\n let max = Number.MIN_VALUE, min = Number.MAX_VALUE;\\r\\n values.forEach((value) => {\\r\\n if (value > max) { max = value; }\\r\\n if (value < min) { min = value; }\\r\\n });\\r\\n return {max, min};\\r\\n }\\r\\n\\r\\n getMaxMin(values: ItemSeries) {\\r\\n let max = Number.MIN_VALUE, min = Number.MAX_VALUE;\\r\\n if (this.config.charttype === ChartTypes.candlestickBarChart) {\\r\\n values.data.forEach((val: SeriesCandleValue) => {\\r\\n if (val.high > max) { max = val.high; }\\r\\n if (val.low < min) { min = val.low; }\\r\\n });\\r\\n } else {\\r\\n values.data.forEach((val: SeriesLineValue) => {\\r\\n if (val.value > max) { max = val.value; }\\r\\n if (val.value < min) { min = val.value; }\\r\\n });\\r\\n }\\r\\n return {max, min};\\r\\n }\\r\\n\\r\\n updateValueTimeZone(values: ItemSeries[]): ItemSeries[] {\\r\\n return values.map(value => {\\r\\n if (value.data) {\\r\\n return {\\r\\n ...value,\\r\\n data: value.data.map((val: SeriesLineValue) => {\\r\\n const date = new Date(val.timestmp);\\r\\n this.modifyTime(date, 0);\\r\\n return {value: (val as any).value ?? (val as any).close ?? 0, timestmp: date.getTime()};\\r\\n })\\r\\n };\\r\\n }\\r\\n return value;\\r\\n });\\r\\n }\\r\\n\\r\\n getMaxMinTimeline(values: ItemSeries) {\\r\\n let max = Number.MIN_VALUE, min = Number.MAX_VALUE;\\r\\n if (values.data) {\\r\\n values.data.forEach((val: SeriesLineValue) => {\\r\\n if (val.timestmp > max) { max = val.timestmp; }\\r\\n if (val.timestmp < min) { min = val.timestmp; }\\r\\n });\\r\\n }\\r\\n return {max, min};\\r\\n }\\r\\n\\r\\n private nowWithTZ(timezone: number): Date {\\r\\n const now = new Date();\\r\\n const shiftMs = (now.getTimezoneOffset() - timezone * 60) * 60000;\\r\\n return new Date(now.getTime() + shiftMs);\\r\\n }\\r\\n\\r\\n private startOfDayTZ(d: Date): Date {\\r\\n const x = new Date(d.getTime());\\r\\n x.setHours(0, 0, 0, 0);\\r\\n return x;\\r\\n }\\r\\n\\r\\n private startOfWeekTZ(d: Date): Date {\\r\\n const x = new Date(d.getTime());\\r\\n const dow = x.getDay();\\r\\n const mondayOffset = (dow + 6) % 7;\\r\\n x.setDate(x.getDate() - mondayOffset);\\r\\n x.setHours(0, 0, 0, 0);\\r\\n return x;\\r\\n }\\r\\n\\r\\n private startOfMonthTZ(d: Date): Date {\\r\\n const x = new Date(d.getTime());\\r\\n x.setDate(1);\\r\\n x.setHours(0, 0, 0, 0);\\r\\n return x;\\r\\n }\\r\\n\\r\\n getDay(shift: number, timezone: number, nowTZ: Date) {\\r\\n const end = new Date(nowTZ.getTime());\\r\\n let start: Date;\\r\\n if (shift === 0) {\\r\\n start = this.startOfDayTZ(end);\\r\\n } else {\\r\\n start = new Date(end.getTime() - shift * FULL_DAY);\\r\\n }\\r\\n return {startTime: start.getTime(), endTime: end.getTime(), text: ''};\\r\\n }\\r\\n\\r\\n getWeek(shift: number, timezone: number, nowTZ: Date) {\\r\\n const end = new Date(nowTZ.getTime());\\r\\n let start = this.startOfWeekTZ(end);\\r\\n if (shift > 0) {\\r\\n start = new Date(start.getTime() - shift * 7 * FULL_DAY);\\r\\n }\\r\\n return {startTime: start.getTime(), endTime: end.getTime(), text: ''};\\r\\n }\\r\\n\\r\\n getMonth(shift: number, timezone: number, nowTZ: Date) {\\r\\n const end = new Date(nowTZ.getTime());\\r\\n let start = this.startOfMonthTZ(end);\\r\\n if (shift > 0) {\\r\\n const s = new Date(start.getTime());\\r\\n s.setMonth(s.getMonth() - shift);\\r\\n start = s;\\r\\n }\\r\\n return {startTime: start.getTime(), endTime: end.getTime(), text: ''};\\r\\n }\\r\\n\\r\\n modifyTime(date: Date, timezone: number) {\\r\\n return date.setTime(date.getTime() + (date.getTimezoneOffset() - timezone * 60) * 60000);\\r\\n }\\r\\n\\r\\n getChartColor(seed: number) {\\r\\n if (this.theme === SiteTheme.dark) {\\r\\n return this.darkColor[seed % this.darkColor.length].color;\\r\\n }\\r\\n return this.lightColor[seed % this.lightColor.length].color;\\r\\n }\\r\\n}\\r\\n\\r\\n@NgModule({\\r\\n imports: [EchartComponent, PieChartComponent],\\r\\n exports: [EchartComponent, PieChartComponent],\\r\\n})\\r\\nexport class EChartComponentModule {}\\r\\n\",\"<div echarts [options]=\\\"options\\\" *ngIf=\\\"display\\\" [initOpts]=\\\"initOpts\\\" style=\\\"width:100%; height: 100%\\\" [theme]=\\\"theme\\\" (chartInit)=\\\"onChartInit($event)\\\"></div>\\r\\n<div class=\\\"no-data-message\\\" *ngIf=\\\"!values && !simpleData\\\">{{noDataMessage}}</div>\\r\\n\",\"import {TranslateModule} from '@ngx-translate/core';\\r\\nimport {NgModule} from '@angular/core';\\r\\nimport {CommonModule} from '@angular/common';\\r\\nimport {ArrayNumberPipe, ChartUrl, FilterIndexOfPipe, MakeChartUrl, MakeIconUrl, MakePictureUrl, PeriodFromDatePipe} from './widget.utils';\\r\\nimport {InlineSVGModule} from 'ng-inline-svg-2';\\r\\nimport {ForgeComponentModule} from './forge/forge.component';\\r\\nimport {EChartComponentModule} from './echart/echart.component';\\r\\nimport {NgxEchartsModule} from 'ngx-echarts';\\r\\n\\r\\n// PrimeNG\\r\\nimport {ButtonModule} from 'primeng/button';\\r\\nimport {DialogModule} from 'primeng/dialog';\\r\\nimport {ToastModule} from 'primeng/toast';\\r\\nimport {MessageService} from 'primeng/api';\\r\\n\\r\\nexport const PRIME_MODULES = [\\r\\n ButtonModule,\\r\\n DialogModule,\\r\\n ToastModule,\\r\\n];\\r\\n\\r\\n@NgModule({\\r\\n imports: [\\r\\n CommonModule,\\r\\n TranslateModule,\\r\\n EChartComponentModule,\\r\\n ForgeComponentModule,\\r\\n InlineSVGModule.forRoot({baseUrl: ''}),\\r\\n NgxEchartsModule.forRoot({echarts: () => import('echarts')}),\\r\\n ...PRIME_MODULES,\\r\\n // Standalone pipes\\r\\n ArrayNumberPipe,\\r\\n FilterIndexOfPipe,\\r\\n MakePictureUrl,\\r\\n MakeIconUrl,\\r\\n MakeChartUrl,\\r\\n ChartUrl,\\r\\n PeriodFromDatePipe,\\r\\n ],\\r\\n exports: [\\r\\n CommonModule,\\r\\n TranslateModule,\\r\\n EChartComponentModule,\\r\\n ForgeComponentModule,\\r\\n InlineSVGModule,\\r\\n NgxEchartsModule,\\r\\n ...PRIME_MODULES,\\r\\n ArrayNumberPipe,\\r\\n FilterIndexOfPipe,\\r\\n MakePictureUrl,\\r\\n MakeIconUrl,\\r\\n MakeChartUrl,\\r\\n ChartUrl,\\r\\n PeriodFromDatePipe,\\r\\n ],\\r\\n providers: [\\r\\n MessageService,\\r\\n ],\\r\\n})\\r\\nexport class DashboardSharedModule {}\\r\\n\",\"import {\\r\\n Border,\\r\\n ChartViews,\\r\\n ChartViewToType,\\r\\n EventValues,\\r\\n GenerateConfigItem, IColConfig, IRowConfig,\\r\\n ITEM_TYPE,\\r\\n ItemCustom,\\r\\n ItemInterval,\\r\\n ItemSeries,\\r\\n ItemSingle,\\r\\n ItemSysInfo,\\r\\n ItemLiftInfo,\\r\\n ItemTable,\\r\\n IWidget,\\r\\n LineType,\\r\\n ObjStateValues,\\r\\n PARAM_STATE_INT,\\r\\n PARAM_TYPE,\\r\\n ParamConfigSeries,\\r\\n ParamConfigurator,\\r\\n SeriesDuration,\\r\\n VALUE_TYPE,\\r\\n WidgetItem,\\r\\n WidgetParamChildren,\\r\\n WidgetParamsChildren, DashboardType, IWidgetIconInfo\\r\\n} from './widget.interface';\\r\\nimport {findParam} from './widget.utils';\\r\\n\\r\\nexport function generateValues(inputValues: WidgetParamsChildren | WidgetParamsChildren[] | WidgetParamChildren[],\\r\\n params: ParamConfigurator[],\\r\\n itemType = ITEM_TYPE.single, paramType = PARAM_TYPE.value, path = []): WidgetItem[] {\\r\\n if (inputValues instanceof Array) {\\r\\n // Проходимся по массив\\r\\n const result: WidgetItem[] = [];\\r\\n const conf: any = inputValues[0];\\r\\n itemType = conf.item_type !== undefined ? conf.item_type : itemType;\\r\\n paramType = conf.param_type !== undefined ? conf.param_type : paramType;\\r\\n const param = findParam(params, path.join('.'));\\r\\n const max = Math.min(param.generateConfig?.count || 3, conf.max || 10);\\r\\n for (let i = 0; i < max; i++) {\\r\\n\\r\\n if (paramType === PARAM_TYPE.virtual_object) {\\r\\n const itemPath = [...path, 1];\\r\\n result.push(generateValues(conf, params, itemType, paramType, itemPath));\\r\\n } else {\\r\\n result.push(generateValue(i, conf, paramType, itemType, param));\\r\\n }\\r\\n }\\r\\n return result;\\r\\n } else {\\r\\n // Проходимся по объекту\\r\\n const result: any = {};\\r\\n for (const key in inputValues) {\\r\\n if (inputValues.hasOwnProperty(key)) {\\r\\n const itemPath = [...path, key];\\r\\n const param = findParam(params, itemPath.join('.'));\\r\\n const item = inputValues[key];\\r\\n itemType = item.item_type || itemType;\\r\\n paramType = item.param_type || paramType;\\r\\n if (inputValues[key].items) {\\r\\n if (inputValues[key].items instanceof Array) {\\r\\n // Если элемент - массив\\r\\n result[key] = {\\r\\n items: generateValues(inputValues[key].items, params, itemType, paramType, itemPath),\\r\\n config: generateParamConfig(itemType, param),\\r\\n viewConfig: {...(param.param ? param.param.viewConfig : {})},\\r\\n custom_data: inputValues[key].custom_data\\r\\n };\\r\\n } else {\\r\\n // Если элемент - объект\\r\\n result[key] = {\\r\\n ...generateValues(inputValues[key].items, params, itemType, paramType, itemPath),\\r\\n config: generateParamConfig(itemType, param),\\r\\n viewConfig: {...(param.param ? param.param.viewConfig : {})},\\r\\n custom_data: inputValues[key].custom_data\\r\\n };\\r\\n }\\r\\n } else {\\r\\n // Если элемент - простой\\r\\n result[key] = generateValue(0, item, paramType, itemType, param);\\r\\n }\\r\\n }\\r\\n }\\r\\n return result;\\r\\n\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\nfunction generateParamConfig<T>(itemType: ITEM_TYPE, param: ParamConfigurator, paramType: PARAM_TYPE = null)\\r\\n : T {\\r\\n switch (itemType) {\\r\\n case ITEM_TYPE.custom:\\r\\n return {\\r\\n type: paramType,\\r\\n value: 'text'\\r\\n } as any;\\r\\n case ITEM_TYPE.interval:\\r\\n return {\\r\\n dailyRange: 'dailyRange',\\r\\n stateMap: false,\\r\\n valueType: VALUE_TYPE.absolute,\\r\\n duration: SeriesDuration.day,\\r\\n count: 1,\\r\\n } as any;\\r\\n\\r\\n case ITEM_TYPE.single:\\r\\n return {\\r\\n valueType: VALUE_TYPE.absolute,\\r\\n } as any;\\r\\n\\r\\n case ITEM_TYPE.series:\\r\\n const config = param.config as ParamConfigSeries;\\r\\n return {\\r\\n charttype: ChartViewToType[(config && config.viewtype) ? config.viewtype : ChartViews.lineChart],\\r\\n viewtype: (config && config.viewtype) ? config.viewtype : ChartViews.lineChart,\\r\\n duration: SeriesDuration.week,\\r\\n count: 0,\\r\\n generator: true\\r\\n } as any;\\r\\n case ITEM_TYPE.events:\\r\\n return {\\r\\n lineType: LineType.eventlog,\\r\\n attrList: ['shortname', 'serialnumber', 'eventid', 'name', 'timestmp', 'msg'],\\r\\n titleList: ['Short name', 'Serial number', 'Event', 'Full name', 'Time', 'Message'],\\r\\n size: 10\\r\\n } as any;\\r\\n\\r\\n }\\r\\n\\r\\n}\\r\\n\\r\\nfunction generateValue(index: number, item: WidgetParamChildren, paramType: PARAM_TYPE, itemType: ITEM_TYPE, param: ParamConfigurator): WidgetItem {\\r\\n let res;\\r\\n switch (itemType) {\\r\\n case ITEM_TYPE.series:\\r\\n res = generateSeriesParam(index, paramType, item, param);\\r\\n break;\\r\\n case ITEM_TYPE.single:\\r\\n res = generateSingleParams(index, paramType, item, param);\\r\\n break;\\r\\n case ITEM_TYPE.table:\\r\\n res = generateTableParams(index, paramType, item, param);\\r\\n break;\\r\\n case ITEM_TYPE.events:\\r\\n res = generateEventsParams(index, paramType, item, param);\\r\\n break;\\r\\n case ITEM_TYPE.objstate:\\r\\n res = generateObjStateParams(index, paramType, item, param);\\r\\n break;\\r\\n case ITEM_TYPE.custom:\\r\\n if (paramType === PARAM_TYPE.custom_external) {\\r\\n res = generateSingleParams(index, paramType, item, param);\\r\\n } else {\\r\\n res = generateCustomParams(index, paramType, item, param);\\r\\n }\\r\\n break;\\r\\n case ITEM_TYPE.interval:\\r\\n res = generateIntervalParams(index, paramType, item, param);\\r\\n break;\\r\\n case ITEM_TYPE.sysinfo:\\r\\n res = generateSysInfoParam(index, paramType, item, param);\\r\\n break;\\r\\n case ITEM_TYPE.liftinfo:\\r\\n res = generateLiftInfoParam(index, paramType, item, param);\\r\\n break;\\r\\n }\\r\\n if (item.custom_data) {\\r\\n res.custom_data = res;\\r\\n }\\r\\n return res;\\r\\n}\\r\\n\\r\\nfunction updateValue(value) {\\r\\n\\r\\n if (typeof value === 'boolean') {\\r\\n return value ? 1 : 0;\\r\\n } else {\\r\\n return value;\\r\\n }\\r\\n}\\r\\n\\r\\nfunction getRandomValue(paramType: PARAM_TYPE, item: WidgetParamChildren) {\\r\\n\\r\\n if (item.available) {\\r\\n return item.available[getRandom(0, item.available.length)];\\r\\n } else {\\r\\n if (paramType !== PARAM_TYPE.signal) {\\r\\n return getRandom(10, 999);\\r\\n } else {\\r\\n return getRandom(0, 1);\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\nfunction getIconSet(needIcons: boolean) {\\r\\n if (!needIcons) {\\r\\n return null;\\r\\n }\\r\\n return {\\r\\n error: '',\\r\\n falsevalue: '',\\r\\n none: '',\\r\\n success: '',\\r\\n warning: '',\\r\\n };\\r\\n}\\r\\n\\r\\nfunction generateSingleParams(index: number, paramType: PARAM_TYPE, item: WidgetParamChildren, param: any): ItemSingle {\\r\\n\\r\\n const config = getConfig(param, index);\\r\\n const value = (config.value === undefined || config.value === '') ? getRandomValue(paramType, item) : updateValue(config.value);\\r\\n return {\\r\\n device: config.param ? {\\r\\n controller: {id: null, serialnumber: 'SN' + getRandom(10000, 99999), isOnline: config.isOnline},\\r\\n object: {\\r\\n id: null,\\r\\n shortname: 'Object ' + getRandom(10000, 99999),\\r\\n fullname: 'Object ' + getRandom(10000, 99999),\\r\\n timezone: 3,\\r\\n latitude: 0,\\r\\n longitude: 0\\r\\n },\\r\\n isWorking: config.isWorkingDevice,\\r\\n param: {\\r\\n id: null,\\r\\n name: 'deviceParam name',\\r\\n measure: {\\r\\n unit: generateMeasureUnit(),\\r\\n title: 'Электричество',\\r\\n id: getRandom(10000, 99999),\\r\\n icon: generateWidgetIcon(),\\r\\n },\\r\\n type: PARAM_TYPE.value,\\r\\n calc: false,\\r\\n ctrability: config.ctrability,\\r\\n },\\r\\n zone: {id: getRandom(10000, 10005), name: `Zone ${getRandom(20000, 20005)}`},\\r\\n room: {id: getRandom(10000, 10005), name: `Room ${getRandom(20000, 20005)}`},\\r\\n unit: {id: getRandom(10000, 10005), name: `Unit ${getRandom(20000, 20005)}`},\\r\\n classifier: {id: getRandom(10000, 10005), name: `Classifier ${getRandom(20000, 20005)}`},\\r\\n state: (config.isWorkingDevice ? {\\r\\n comment: 'Состояние канала устройства: работоспособен',\\r\\n id: 1,\\r\\n name: 'работоспособен'\\r\\n } : {\\r\\n comment: 'Состояние канала устройства: неработоспособен',\\r\\n id: -1,\\r\\n name: 'неработоспособен'\\r\\n }),\\r\\n } : null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.single,\\r\\n widgetId: null,\\r\\n title: config.title !== null ? config.title : 'Title param',\\r\\n config: generateParamConfig(ITEM_TYPE.single, param),\\r\\n value: config.data ? value : null,\\r\\n viewConfig: {view: config.view, ...(param.param ? (param.param as ParamConfigurator).viewConfig : {})},\\r\\n data: config.data ? {\\r\\n date: 1548968400000,\\r\\n value: value,\\r\\n locked: config.locked,\\r\\n manually: config.editable,\\r\\n unit: {id: 2, available: true, name: '', unavailabilityDate: 0},\\r\\n state: config.state ? {\\r\\n color: PARAM_STATE_INT[config.state],\\r\\n comment: 'comment',\\r\\n idIcon: config.isIcon ? -1 : 0,\\r\\n } : null,\\r\\n } : null,\\r\\n dashboardLink: config.pageLink ? {dashname: 'Test dashname', id: 2} : null,\\r\\n custom: {},\\r\\n canEditable: config.editable,\\r\\n borders: config.borders ? BORDERS : [],\\r\\n icons: getIconSet(config.iconSet),\\r\\n isEditing: false,\\r\\n };\\r\\n}\\r\\n\\r\\n\\r\\nfunction generateSeriesParam(index: number, paramType: PARAM_TYPE, item: WidgetParamChildren, param: ParamConfigurator): ItemSeries {\\r\\n\\r\\n const value = getRandomValue(paramType, item);\\r\\n return {\\r\\n device: {\\r\\n controller: {id: null, serialnumber: 'SN' + getRandom(10000, 99999)},\\r\\n object: {\\r\\n id: null,\\r\\n shortname: 'Object ' + getRandom(10000, 99999),\\r\\n fullname: 'Object ' + getRandom(10000, 99999),\\r\\n timezone: -3,\\r\\n latitude: 0,\\r\\n longitude: 0\\r\\n },\\r\\n param: {\\r\\n id: null,\\r\\n name: 'deviceParam name',\\r\\n measure: {\\r\\n unit: generateMeasureUnit(),\\r\\n title: 'Электричество',\\r\\n id: getRandom(10000, 99999),\\r\\n icon: generateWidgetIcon(),\\r\\n },\\r\\n type: PARAM_TYPE.value,\\r\\n calc: false,\\r\\n },\\r\\n zone: {id: getRandom(10000, 10005), name: `Zone ${getRandom(20000, 20005)}`},\\r\\n room: {id: getRandom(10000, 10005), name: `Room ${getRandom(20000, 20005)}`},\\r\\n unit: {id: getRandom(10000, 10005), name: `Unit ${getRandom(20000, 20005)}`},\\r\\n classifier: {id: getRandom(10000, 10005), name: `Classifier ${getRandom(20000, 20005)}`},\\r\\n },\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.single,\\r\\n widgetId: null,\\r\\n title: 'Title param',\\r\\n config: {...generateParamConfig(ITEM_TYPE.series, param), ...param.config},\\r\\n value,\\r\\n viewConfig: null,\\r\\n data: (param.config && (param.config as ParamConfigSeries).viewtype === ChartViews.candlestickBarChart) ? CANDLE_CHART : generateChartValues(),\\r\\n custom: {},\\r\\n borders: [],\\r\\n isEditing: false,\\r\\n };\\r\\n\\r\\n}\\r\\n\\r\\n\\r\\nfunction generateChartValues() {\\r\\n const rand = Math.round(Math.random() * 100);\\r\\n return CHART_VALUES.map(val => {\\r\\n return {timestmp: val.timestmp, value: val.value + rand};\\r\\n });\\r\\n}\\r\\n\\r\\nfunction generateIntervalParams(index: number, paramType: PARAM_TYPE, item: WidgetParamChildren, param: ParamConfigurator): ItemInterval {\\r\\n const config = getConfig(param, index);\\r\\n const value = (config.value === undefined || config.value === '') ? getRandomValue(paramType, item) : updateValue(config.value);\\r\\n return {\\r\\n device: {\\r\\n controller: {id: null, serialnumber: 'SN' + getRandom(10000, 99999)},\\r\\n object: {\\r\\n id: null,\\r\\n shortname: 'Object ' + getRandom(10000, 99999),\\r\\n fullname: 'Object ' + getRandom(10000, 99999),\\r\\n timezone: 3,\\r\\n latitude: 0,\\r\\n longitude: 0\\r\\n },\\r\\n param: {\\r\\n id: null,\\r\\n name: 'deviceParam name',\\r\\n measure: {\\r\\n unit: generateMeasureUnit(),\\r\\n title: 'Электричество',\\r\\n id: getRandom(10000, 99999),\\r\\n icon: generateWidgetIcon(),\\r\\n },\\r\\n type: PARAM_TYPE.value,\\r\\n calc: false,\\r\\n ctrability: config.ctrability,\\r\\n },\\r\\n zone: {id: getRandom(10000, 10005), name: `Zone ${getRandom(20000, 20005)}`},\\r\\n room: {id: getRandom(10000, 10005), name: `Room ${getRandom(20000, 20005)}`},\\r\\n unit: {id: getRandom(10000, 10005), name: `Unit ${getRandom(20000, 20005)}`},\\r\\n classifier: {id: getRandom(10000, 10005), name: `Classifier ${getRandom(20000, 20005)}`},\\r\\n },\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.single,\\r\\n widgetId: null,\\r\\n title: config.title !== null ? config.title : 'Title param',\\r\\n config: generateParamConfig(ITEM_TYPE.single, param),\\r\\n value,\\r\\n viewConfig: null,\\r\\n data: config.data ? {\\r\\n states: [{\\r\\n 'interval': 21602841,\\r\\n 'state': {'id': 3, 'name': 'критическое', 'color': 'error', 'comment': 'Критическое значение параметра'}\\r\\n }, {\\r\\n 'interval': 42698374,\\r\\n 'state': {\\r\\n 'id': 2,\\r\\n 'name': 'отклонение',\\r\\n 'color': 'warning',\\r\\n 'comment': 'Значение параметра отклонилось от нормального'\\r\\n }\\r\\n }, {\\r\\n 'interval': 21414971,\\r\\n 'state': {'id': 1, 'name': 'норма', 'color': 'success', 'comment': 'Нормальное значение параметра'}\\r\\n }, {\\r\\n 'interval': 18053,\\r\\n 'state': {'id': 0, 'name': 'нет контроля', 'color': 'none', 'comment': 'Значение параметра не контролируется'}\\r\\n }], // absolute signal\\r\\n switchCount: 1, // signal\\r\\n value,\\r\\n percent: 1, // relative и increment\\r\\n min: 1, // absolute\\r\\n max: 1, // absolute\\r\\n state: config.state ? {\\r\\n color: PARAM_STATE_INT[config.state],\\r\\n comment: 'comment',\\r\\n idIcon: config.isIcon ? -1 : 0,\\r\\n } : null,\\r\\n 'beginInterval': 1556658000000,\\r\\n 'endInterval': 1557139222542,\\r\\n valueMap: [{interval: -84606254, value: 0}, {interval: 1806254, value: 1}],\\r\\n } : null,\\r\\n custom: {},\\r\\n borders: config.borders ? BORDERS : [],\\r\\n isEditing: false,\\r\\n };\\r\\n\\r\\n}\\r\\n\\r\\nfunction generateEventsParams(index: number, paramType: PARAM_TYPE, item: WidgetParamChildren, param: ParamConfigurator): EventValues {\\r\\n\\r\\n const getEvent = () => {\\r\\n return {\\r\\n 'id': Math.round(Math.random() * 100000),\\r\\n 'shortname': 'БЕЛКА',\\r\\n 'serialnumber': 'SQUIRREL',\\r\\n 'eventid': Math.round(Math.random() * 100000),\\r\\n 'name': '0pus334',\\r\\n 'timestmp': 1694157120464,\\r\\n 'paramname': null,\\r\\n 'paramvalue': null,\\r\\n 'msg': '0pus334',\\r\\n 'cdpid': null,\\r\\n 'ccpid': null,\\r\\n 'categoryid': null,\\r\\n 'media': [],\\r\\n 'criticalId': 4,\\r\\n 'criticalName': 'success',\\r\\n 'closeTime': 1694157120464,\\r\\n 'closed': Math.random() > 0.5,\\r\\n 'processed': Math.random() > 0.5,\\r\\n 'value': null\\r\\n };\\r\\n };\\r\\n const rowList: any[] = [];\\r\\n\\r\\n if (param.generateConfig.duration) {\\r\\n for (let i = 0; i < getRandom(6, 30); i++) {\\r\\n rowList.push(getEvent());\\r\\n }\\r\\n } else {\\r\\n for (let i = 0; i < (param.generateConfig.count ?? 20); i++) {\\r\\n rowList.push(getEvent());\\r\\n }\\r\\n }\\r\\n\\r\\n return {\\r\\n data: {rowList},\\r\\n config: {attrList: ['shortname', 'serialnumber', 'msg'], titleList: ['Объект', 'Сер.номер', 'Сообщение']}\\r\\n };\\r\\n}\\r\\n\\r\\nfunction generateObjStateParams(index: number, paramType: PARAM_TYPE, item: WidgetParamChildren, param: ParamConfigurator): ObjStateValues {\\r\\n return {\\r\\n config: {rubricId: 1},\\r\\n data: {\\r\\n date: 1697487855625,\\r\\n states: [\\r\\n {\\r\\n count: 5,\\r\\n id: 3,\\r\\n name: 'активен',\\r\\n },\\r\\n {\\r\\n count: 25,\\r\\n id: 2,\\r\\n name: 'не работает',\\r\\n }\\r\\n ]\\r\\n }\\r\\n };\\r\\n}\\r\\n\\r\\nfunction generateCustomParams(index: number, paramType: PARAM_TYPE, item: WidgetParamChildren, param: ParamConfigurator): ItemCustom {\\r\\n const config = getConfig(param, index);\\r\\n if (paramType === PARAM_TYPE.custom_string) {\\r\\n const defValue = BIG_TEXT.slice(0, Math.min(config.paragraphCount || 2, 5)).join('\\\\n');\\r\\n return {\\r\\n device: null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.custom,\\r\\n widgetId: null,\\r\\n title: config.title !== null ? config.title : 'Title param',\\r\\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\\r\\n value: config.value ? config.value : defValue,\\r\\n viewConfig: {},\\r\\n dashboardLink: config.pageLink ? {dashname: 'Test dashname', id: 2} : null,\\r\\n custom: {},\\r\\n canEditable: config.editable,\\r\\n isEditing: false,\\r\\n };\\r\\n }\\r\\n\\r\\n if (paramType === PARAM_TYPE.custom_objstate) {\\r\\n const defValue = 3;\\r\\n return {\\r\\n device: null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.custom,\\r\\n widgetId: null,\\r\\n title: config.title !== null ? config.title : 'Title param',\\r\\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\\r\\n value: config.value ? config.value : defValue,\\r\\n viewConfig: {},\\r\\n dashboardLink: config.pageLink ? {dashname: 'Test dashname', id: 2} : null,\\r\\n custom: {},\\r\\n canEditable: config.editable,\\r\\n isEditing: false,\\r\\n };\\r\\n }\\r\\n\\r\\n if (paramType === PARAM_TYPE.custom_forge) {\\r\\n return {\\r\\n device: null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.custom,\\r\\n widgetId: null,\\r\\n title: config.title !== null ? config.title : 'Title param',\\r\\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\\r\\n value: config.value ? config.value : '',\\r\\n viewConfig: {},\\r\\n dashboardLink: config.pageLink ? {dashname: 'Test dashname', id: 2} : null,\\r\\n custom: {},\\r\\n canEditable: config.editable,\\r\\n isEditing: false,\\r\\n };\\r\\n }\\r\\n\\r\\n if (paramType === PARAM_TYPE.custom_fuxa) {\\r\\n return {\\r\\n device: null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.custom,\\r\\n widgetId: null,\\r\\n title: config.title !== null ? config.title : 'Title param',\\r\\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\\r\\n value: config.value ? config.value : '',\\r\\n viewConfig: {},\\r\\n dashboardLink: config.pageLink ? {dashname: 'Test dashname', id: 2} : null,\\r\\n custom: {},\\r\\n canEditable: config.editable,\\r\\n isEditing: false,\\r\\n };\\r\\n }\\r\\n\\r\\n if (paramType === PARAM_TYPE.custom_json) {\\r\\n\\r\\n const defValue = undefined;\\r\\n let json_value: any;\\r\\n try {\\r\\n json_value = config.value ? JSON.parse(config.value) : defValue;\\r\\n } catch (e) {\\r\\n\\r\\n }\\r\\n return {\\r\\n device: null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.custom,\\r\\n widgetId: null,\\r\\n title: config.title !== null ? config.title : 'Title param',\\r\\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\\r\\n value: json_value,\\r\\n viewConfig: {},\\r\\n dashboardLink: config.pageLink ? {dashname: 'Test dashname', id: 2} : null,\\r\\n custom: {},\\r\\n canEditable: config.editable,\\r\\n isEditing: false,\\r\\n };\\r\\n }\\r\\n if (paramType === PARAM_TYPE.custom_archer) {\\r\\n const res = {\\r\\n files: config.files ? {json: config.files.json, svg: config.files.svg} : null,\\r\\n value: (config.archer && config.archer.value) ? config.archer.value : null,\\r\\n viewConfig: {},\\r\\n };\\r\\n\\r\\n if (config.archer) {\\r\\n for (const key in config.archer) {\\r\\n if (config.archer.hasOwnProperty(key)) {\\r\\n res[key] = config.archer[key];\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n return res as any;\\r\\n }\\r\\n if (paramType === PARAM_TYPE.custom_file) {\\r\\n const res = {\\r\\n files: config.files,\\r\\n value: null,\\r\\n viewConfig: {},\\r\\n };\\r\\n\\r\\n return res as any;\\r\\n }\\r\\n\\r\\n if (paramType === PARAM_TYPE.custom_select) {\\r\\n const defValue = null;\\r\\n return {\\r\\n device: null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.custom,\\r\\n widgetId: null,\\r\\n title: config.title !== null ? config.title : 'Title param',\\r\\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\\r\\n value: item.custom_data.items.find(val => val.value === config.selectValue),\\r\\n viewConfig: {},\\r\\n dashboardLink: config.pageLink ? {dashname: 'Test dashname', id: 2} : null,\\r\\n custom: {},\\r\\n canEditable: config.editable,\\r\\n isEditing: false,\\r\\n };\\r\\n }\\r\\n\\r\\n if (paramType === PARAM_TYPE.custom_dashboard) {\\r\\n const widgets: IWidget[] = [\\r\\n {\\r\\n title: 'Widget 1',\\r\\n dashboard: {\\r\\n id: 1,\\r\\n dashname: 'Dash 1',\\r\\n type: DashboardType.WEB,\\r\\n objrubric: {\\r\\n id: 0,\\r\\n shortname: 'Rubric'\\r\\n }\\r\\n },\\r\\n widgetclass: {\\r\\n id: 1,\\r\\n name: 'text',\\r\\n storeId: 'text',\\r\\n }\\r\\n },\\r\\n {\\r\\n title: 'Widget 2',\\r\\n dashboard: {\\r\\n id: 1,\\r\\n dashname: 'Dash 1',\\r\\n type: DashboardType.WEB,\\r\\n objrubric: {\\r\\n id: 0,\\r\\n shortname: 'Rubric'\\r\\n }\\r\\n },\\r\\n widgetclass: {\\r\\n id: 1,\\r\\n name: 'text',\\r\\n storeId: 'text',\\r\\n }\\r\\n },\\r\\n {\\r\\n title: 'Widget 3',\\r\\n dashboard: {\\r\\n id: 1,\\r\\n dashname: 'Dash 1',\\r\\n type: DashboardType.WEB,\\r\\n objrubric: {\\r\\n id: 0,\\r\\n shortname: 'Rubric'\\r\\n }\\r\\n },\\r\\n widgetclass: {\\r\\n id: 1,\\r\\n name: 'text',\\r\\n storeId: 'text',\\r\\n }\\r\\n },\\r\\n ];\\r\\n return {\\r\\n device: null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.custom,\\r\\n widgetId: null,\\r\\n title: config.title !== null ? config.title : 'Title param',\\r\\n config: generateParamConfig(ITEM_TYPE.custom, param, paramType),\\r\\n value: widgets,\\r\\n viewConfig: {},\\r\\n dashboardLink: config.pageLink ? {dashname: 'Test dashname', id: 2} : null,\\r\\n custom: {},\\r\\n };\\r\\n }\\r\\n}\\r\\n\\r\\nfunction generateWidgetIcon(): IWidgetIconInfo {\\r\\n return {\\r\\n name: 'icon',\\r\\n id: 1,\\r\\n filepath: 'path',\\r\\n iconset: {\\r\\n id: 1,\\r\\n name: 'iconset',\\r\\n imagetype: 1\\r\\n }\\r\\n };\\r\\n}\\r\\n\\r\\nfunction generateTableParams(index: number, paramType: PARAM_TYPE, item: WidgetParamChildren, param: ParamConfigurator): ItemTable {\\r\\n\\r\\n\\r\\n const values = [];\\r\\n\\r\\n\\r\\n for (let i = 0; i < param.generateConfig.rows; i++) {\\r\\n values[i] = [];\\r\\n for (let j = 0; j < param.generateConfig.columns; j++) {\\r\\n // if (Math.random() < 0.9) {\\r\\n values[i][j] = generateSingleParams(index, paramType, item, param);\\r\\n // } else {\\r\\n // values[i][j] = null;\\r\\n // }\\r\\n }\\r\\n }\\r\\n\\r\\n const colConfig: IColConfig[] = [];\\r\\n\\r\\n const rowConfig: IRowConfig[] = [];\\r\\n for (let i = 1; i <= param.generateConfig.rows; i++) {\\r\\n rowConfig.push({name: `Row ${i}`});\\r\\n }\\r\\n for (let i = 0; i <= param.generateConfig.columns; i++) {\\r\\n colConfig.push(getRandomCol());\\r\\n }\\r\\n\\r\\n return {\\r\\n device: null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.single,\\r\\n widgetId: null,\\r\\n title: 'Title param',\\r\\n config: {},\\r\\n values,\\r\\n viewConfig: {\\r\\n rowsName: ['row 1', 'row 2'],\\r\\n colsName: ['col 1', 'col 2'],\\r\\n cols: param.generateConfig.columns,\\r\\n rows: param.generateConfig.rows,\\r\\n visibleRow: param.generateConfig.visibleRow,\\r\\n visibleCol: param.generateConfig.visibleCol,\\r\\n view: param.generateConfig.view,\\r\\n table: {\\r\\n cols: param.generateConfig.columns,\\r\\n rows: param.generateConfig.rows,\\r\\n visibleRow: param.generateConfig.visibleRow,\\r\\n visibleCol: param.generateConfig.visibleCol,\\r\\n colConfig,\\r\\n rowConfig,\\r\\n }\\r\\n },\\r\\n custom: {},\\r\\n borders: [],\\r\\n isEditing: false,\\r\\n };\\r\\n}\\r\\n\\r\\nfunction getRandomCol(hasLabel = true): IColConfig {\\r\\n const rnd = Math.random();\\r\\n\\r\\n if (rnd <= .25) {\\r\\n return {name: hasLabel ? 'Col Fit' : undefined, widthType: 'fit-content'};\\r\\n } else if (rnd <= .5) {\\r\\n return {name: hasLabel ? 'Col Auto' : undefined, widthType: 'auto'};\\r\\n } else if (rnd <= .8) {\\r\\n return {name: hasLabel ? 'Col Fix Px100' : undefined, widthType: 'fix', size: {unit: 'px', value: 100}};\\r\\n } else {\\r\\n return {name: hasLabel ? 'Col Fix %20' : undefined, widthType: 'fix', size: {unit: '%', value: 20}};\\r\\n }\\r\\n}\\r\\n\\r\\nfunction generateSysInfoParam(index: number, paramType: PARAM_TYPE, item: WidgetParamChildren, param: ParamConfigurator): ItemSysInfo {\\r\\n return {\\r\\n id: 1,\\r\\n device: null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.sysinfo,\\r\\n widgetId: null,\\r\\n title: 'Title param',\\r\\n config: {rubricId: 1174},\\r\\n data: {\\r\\n controllersInfo: {total: getRandom(0, 10), online: getRandom(0, 10), offline: getRandom(0, 10)},\\r\\n date: Date.now()\\r\\n }\\r\\n };\\r\\n}\\r\\n\\r\\nfunction generateLiftInfoParam(index: number, paramType: PARAM_TYPE, item: WidgetParamChildren, param: ParamConfigurator): ItemLiftInfo {\\r\\n return {\\r\\n id: 1,\\r\\n device: null,\\r\\n refName: '',\\r\\n itemType: ITEM_TYPE.liftinfo,\\r\\n widgetId: null,\\r\\n title: 'Title param',\\r\\n config: {deviceClassifierId: 76, objectIds: [372]},\\r\\n data: {\\r\\n liftsInfo: {total: getRandom(0, 10), online: getRandom(0, 10), offline: getRandom(0, 10)},\\r\\n date: Date.now()\\r\\n }\\r\\n };\\r\\n}\\r\\n\\r\\nfunction generateMeasureUnit() {\\r\\n const units = ['град', '°C', 'лит', 'км', '%'];\\r\\n return units[getRandom(0, units.length - 1)];\\r\\n}\\r\\n\\r\\n// Возвращает случайное число между min (включительно) и max (включительно)\\r\\nexport function getRandom(min, max) {\\r\\n return Math.round(Math.random() * (max - min) + min);\\r\\n}\\r\\n\\r\\nfunction getConfig(param, index): GenerateConfigItem {\\r\\n if (param?.generateConfig?.items) {\\r\\n return param.generateConfig.items[index] || {};\\r\\n }\\r\\n return param?.generateConfig ?? {};\\r\\n}\\r\\n\\r\\nconst BORDERS: Border[] = [{\\r\\n 'state': {\\r\\n 'id': 3,\\r\\n 'name': 'критическое',\\r\\n 'color': 'error',\\r\\n 'comment': 'Критическое значение параметра'\\r\\n }, 'intervals': [{'from': 70.0, 'to': null}]\\r\\n}, {\\r\\n 'state': {\\r\\n 'id': 2,\\r\\n 'name': 'отклонение',\\r\\n 'color': 'warning',\\r\\n 'comment': 'Значение параметра отклонилось от нормального'\\r\\n }, 'intervals': [{'from': 30.0, 'to': 70.0}]\\r\\n}, {\\r\\n 'state': {'id': 1, 'name': 'норма', 'color': 'success', 'comment': 'Нормальное значение параметра'},\\r\\n 'intervals': [{'from': 0.0, 'to': 30.0}]\\r\\n}, {\\r\\n 'state': {\\r\\n 'id': 0,\\r\\n 'name': 'нет контроля',\\r\\n 'color': 'none',\\r\\n 'comment': 'Значение параметра не контролируется'\\r\\n }, 'intervals': [{'from': -20.0, 'to': 0.0}]\\r\\n}, {\\r\\n 'state': {\\r\\n 'id': -1,\\r\\n 'name': 'недостоверно',\\r\\n 'color': 'falsevalue',\\r\\n 'comment': 'Недостоверное значение параметра'\\r\\n }, 'intervals': [{'from': null, 'to': -20.0}]\\r\\n}].reverse();\\r\\n\\r\\nconst CHART_VALUES = [\\r\\n {\\r\\n 'timestmp': 1645551000000,\\r\\n 'value': null\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645552800000,\\r\\n 'value': 32.8258476\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645554600000,\\r\\n 'value': 48.659893\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645556400000,\\r\\n 'value': 50.5622482\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645558200000,\\r\\n 'value': 51.6553383\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645560000000,\\r\\n 'value': 50.4319\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645561800000,\\r\\n 'value': 53.0366707\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645563600000,\\r\\n 'value': 47.8176422\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645565400000,\\r\\n 'value': 51.6424713\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645567200000,\\r\\n 'value': 51.812233\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645569000000,\\r\\n 'value': 47.3627434\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645570800000,\\r\\n 'value': 51.7313538\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645572600000,\\r\\n 'value': 49.4223938\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645574400000,\\r\\n 'value': 52.5739746\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645576200000,\\r\\n 'value': 51.6155472\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645578000000,\\r\\n 'value': 49.1932793\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645579800000,\\r\\n 'value': 51.5943527\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645581600000,\\r\\n 'value': 50.5669518\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645583400000,\\r\\n 'value': 48.7359962\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645585200000,\\r\\n 'value': 53.4266319\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645587000000,\\r\\n 'value': 50.285614\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645588800000,\\r\\n 'value': 49.249176\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645590600000,\\r\\n 'value': 50.412838\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645592400000,\\r\\n 'value': 50.2692413\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645594200000,\\r\\n 'value': 52.9794044\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645596000000,\\r\\n 'value': 49.6678772\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645597800000,\\r\\n 'value': 49.4464493\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645599600000,\\r\\n 'value': 52.1587296\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645601400000,\\r\\n 'value': 49.9102745\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645603200000,\\r\\n 'value': 51.7093391\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645605000000,\\r\\n 'value': 51.2751236\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645606800000,\\r\\n 'value': 48.9914932\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645608600000,\\r\\n 'value': 51.0573616\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645610400000,\\r\\n 'value': 51.5929947\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645612200000,\\r\\n 'value': 50.5275879\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645614000000,\\r\\n 'value': 52.7304688\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645615800000,\\r\\n 'value': 48.162323\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645617600000,\\r\\n 'value': 52.0599556\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645619400000,\\r\\n 'value': 49.9631157\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645621200000,\\r\\n 'value': 48.4315491\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645623000000,\\r\\n 'value': 53.9735832\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645624800000,\\r\\n 'value': 47.5742874\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645626600000,\\r\\n 'value': 48.5623856\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645628400000,\\r\\n 'value': 52.1424675\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645630200000,\\r\\n 'value': 48.3597183\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645632000000,\\r\\n 'value': 50.9834785\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645633800000,\\r\\n 'value': 51.0054741\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645635600000,\\r\\n 'value': 48.7688789\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645637400000,\\r\\n 'value': 51.7769661\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645639200000,\\r\\n 'value': 49.1443024\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645641000000,\\r\\n 'value': 51.7417603\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645642800000,\\r\\n 'value': 49.8708458\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645644600000,\\r\\n 'value': 48.1264877\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645646400000,\\r\\n 'value': 51.6495094\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645648200000,\\r\\n 'value': 50.5347023\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645650000000,\\r\\n 'value': 49.7064209\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645651800000,\\r\\n 'value': 52.7749977\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645653600000,\\r\\n 'value': 49.4221077\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645655400000,\\r\\n 'value': 52.6562157\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645657200000,\\r\\n 'value': 51.1348381\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645659000000,\\r\\n 'value': 50.4315948\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645660800000,\\r\\n 'value': 52.5681114\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645662600000,\\r\\n 'value': 48.9252357\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645664400000,\\r\\n 'value': 50.894516\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645666200000,\\r\\n 'value': 51.7634201\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645668000000,\\r\\n 'value': 51.0939255\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645669800000,\\r\\n 'value': 53.2192345\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645671600000,\\r\\n 'value': 51.7018623\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645673400000,\\r\\n 'value': 50.0135651\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645675200000,\\r\\n 'value': 51.3010292\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645677000000,\\r\\n 'value': 46.5560951\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645678800000,\\r\\n 'value': 52.3065147\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645680600000,\\r\\n 'value': 49.7032089\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645682400000,\\r\\n 'value': 48.5279617\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645684200000,\\r\\n 'value': 52.1763\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645686000000,\\r\\n 'value': 48.1455116\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645687800000,\\r\\n 'value': 51.1893082\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645689600000,\\r\\n 'value': 51.143837\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645691400000,\\r\\n 'value': 48.4687042\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645693200000,\\r\\n 'value': 51.5306282\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645695000000,\\r\\n 'value': 50.565773\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645696800000,\\r\\n 'value': 48.7029495\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645698600000,\\r\\n 'value': 53.7815475\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645700400000,\\r\\n 'value': 48.2070236\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645702200000,\\r\\n 'value': 51.9778252\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645704000000,\\r\\n 'value': 50.9588737\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645705800000,\\r\\n 'value': 49.4310341\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645707600000,\\r\\n 'value': 52.0059052\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645709400000,\\r\\n 'value': 48.3030815\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645711200000,\\r\\n 'value': 50.1639862\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645713000000,\\r\\n 'value': 50.9100494\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645714800000,\\r\\n 'value': 48.6635818\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645716600000,\\r\\n 'value': 53.3434525\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645718400000,\\r\\n 'value': 51.4400101\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645720200000,\\r\\n 'value': 50.3772774\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645722000000,\\r\\n 'value': 53.0157394\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645723800000,\\r\\n 'value': 48.575489\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645725600000,\\r\\n 'value': 50.9716911\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645727400000,\\r\\n 'value': 51.041893\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645729200000,\\r\\n 'value': 50.2014465\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645731000000,\\r\\n 'value': 51.8398705\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645732800000,\\r\\n 'value': 50.1148033\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645734600000,\\r\\n 'value': 49.1726875\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645736400000,\\r\\n 'value': 49.8998184\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645738200000,\\r\\n 'value': 47.0266991\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645740000000,\\r\\n 'value': 51.0160942\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645741800000,\\r\\n 'value': 51.2925758\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645743600000,\\r\\n 'value': 45.3985367\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645745400000,\\r\\n 'value': 54.5472412\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645747200000,\\r\\n 'value': 53.5879326\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645749000000,\\r\\n 'value': 50.4831352\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645750800000,\\r\\n 'value': 49.7594566\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645752600000,\\r\\n 'value': 49.4067154\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645754400000,\\r\\n 'value': 53.5835075\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645756200000,\\r\\n 'value': 44.7278328\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645758000000,\\r\\n 'value': 54.8701286\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645759800000,\\r\\n 'value': 52.8954544\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645761600000,\\r\\n 'value': 47.3508835\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645763400000,\\r\\n 'value': 50.3395233\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645765200000,\\r\\n 'value': 54.7109451\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645767000000,\\r\\n 'value': 46.1835632\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645768800000,\\r\\n 'value': 54.3547058\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645770600000,\\r\\n 'value': 44.5034637\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645772400000,\\r\\n 'value': 45.6780167\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645774200000,\\r\\n 'value': 51.7169151\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645776000000,\\r\\n 'value': 50.1562195\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645777800000,\\r\\n 'value': 49.2977676\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645779600000,\\r\\n 'value': 47.7331276\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645781400000,\\r\\n 'value': 49.2630501\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645783200000,\\r\\n 'value': 51.4490509\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645785000000,\\r\\n 'value': 48.8069763\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645786800000,\\r\\n 'value': 51.788662\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645788600000,\\r\\n 'value': 50.8114243\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645790400000,\\r\\n 'value': 48.7802238\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645792200000,\\r\\n 'value': 52.4341049\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645794000000,\\r\\n 'value': 42.9888535\\r\\n },\\r\\n {\\r\\n 'timestmp': 1645795800000,\\r\\n 'value': null\\r\\n }\\r\\n];\\r\\n\\r\\n\\r\\nconst CANDLE_CHART = [{'timestmp': 1548968400000, 'open': 24.0, 'close': 84.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1548970200000,\\r\\n 'open': 84.0,\\r\\n 'close': 22.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1548972000000, 'open': 22.0, 'close': 55.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1548973800000,\\r\\n 'open': 55.0,\\r\\n 'close': 58.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1548975600000, 'open': 58.0, 'close': 25.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1548977400000,\\r\\n 'open': 25.0,\\r\\n 'close': 97.0,\\r\\n 'low': 1.0,\\r\\n 'high': 99.0\\r\\n}, {'timestmp': 1548979200000, 'open': 90.0, 'close': 16.0, 'low': 1.0, 'high': 99.0}, {\\r\\n 'timestmp': 1548981000000,\\r\\n 'open': 16.0,\\r\\n 'close': 57.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1548982800000, 'open': 57.0, 'close': 60.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1548984600000,\\r\\n 'open': 60.0,\\r\\n 'close': 24.0,\\r\\n 'low': 2.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1548986400000, 'open': 24.0, 'close': 85.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1548988200000,\\r\\n 'open': 85.0,\\r\\n 'close': 26.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1548990000000, 'open': 26.0, 'close': 59.0, 'low': 1.0, 'high': 99.0}, {\\r\\n 'timestmp': 1548991800000,\\r\\n 'open': 59.0,\\r\\n 'close': 69.0,\\r\\n 'low': 1.0,\\r\\n 'high': 99.0\\r\\n}, {'timestmp': 1548993600000, 'open': 69.0, 'close': 18.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1548995400000,\\r\\n 'open': 18.0,\\r\\n 'close': 86.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1548997200000, 'open': 86.0, 'close': 35.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1548999000000,\\r\\n 'open': 35.0,\\r\\n 'close': 53.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1549000800000, 'open': 53.0, 'close': 62.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1549002600000,\\r\\n 'open': 62.0,\\r\\n 'close': 30.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1549004400000, 'open': 30.0, 'close': 96.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1549006200000,\\r\\n 'open': 96.0,\\r\\n 'close': 39.0,\\r\\n 'low': 2.0,\\r\\n 'high': 99.0\\r\\n}, {'timestmp': 1549008000000, 'open': 39.0, 'close': 49.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1549009800000,\\r\\n 'open': 49.0,\\r\\n 'close': 56.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1549011600000, 'open': 56.0, 'close': 19.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1549013400000,\\r\\n 'open': 19.0,\\r\\n 'close': 73.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1549015200000, 'open': 73.0, 'close': 22.0, 'low': 1.0, 'high': 99.0}, {\\r\\n 'timestmp': 1549017000000,\\r\\n 'open': 22.0,\\r\\n 'close': 43.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1549018800000, 'open': 43.0, 'close': 74.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1549020600000,\\r\\n 'open': 74.0,\\r\\n 'close': 24.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1549022400000, 'open': 24.0, 'close': 78.0, 'low': 1.0, 'high': 100.0}, {\\r\\n 'timestmp': 1549024200000,\\r\\n 'open': 78.0,\\r\\n 'close': 43.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1549026000000, 'open': 43.0, 'close': 47.0, 'low': 2.0, 'high': 100.0}, {\\r\\n 'timestmp': 1549027800000,\\r\\n 'open': 47.0,\\r\\n 'close': 73.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1549029600000, 'open': 73.0, 'close': 2.0, 'low': 2.0, 'high': 100.0}, {\\r\\n 'timestmp': 1549031400000,\\r\\n 'open': 2.0,\\r\\n 'close': 76.0,\\r\\n 'low': 1.0,\\r\\n 'high': 100.0\\r\\n}, {'timestmp': 1549033200000, 'open': 76.0, 'close': 33.0, 'low': 1.0, 'high': 99.0}, {\\r\\n 'timestmp': 1549035000000,\\r\\n 'open': 33.0,\\r\\n 'close': 45.0,\\r\\n 'low': 2.0,\\r\\n 'high': 100.0\\r\\n}];\\r\\n\\r\\n\\r\\nconst BIG_TEXT = [\\r\\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi convallis congue nisi vel congue. Nulla vel sem non diam condimentum consectetur. Vivamus venenatis vehicula arcu, nec porta nisl. Aliquam vitae euismod arcu. Aenean fringilla, ligula et convallis fermentum, felis ligula commodo ante, non bibendum arcu diam vel ligula. Nullam lobortis interdum lorem ut convallis. Suspendisse potenti. Sed malesuada suscipit odio. Morbi a magna quis arcu semper consequat.',\\r\\n '\\\\n\\\\nMauris posuere, nunc eget pulvinar feugiat, urna quam egestas enim, non interdum enim arcu eu diam. Curabitur suscipit aliquet luctus. Proin eleifend nisl vitae tellus pulvinar elementum. Praesent sollicitudin, dui eu ultrices maximus, orci tortor efficitur libero, eu eleifend leo orci ut quam. Donec dignissim vel nibh sit amet congue. Suspendisse congue lacinia suscipit. Donec nec massa facilisis, aliquet leo nec, accumsan mi. Nam fringilla massa vitae tortor mollis congue. Sed purus arcu, ornare non turpis eu, molestie laoreet leo. Nunc eu rhoncus orci. Pellentesque quis nisi tempus, sagittis erat eu, finibus tortor. Fusce nisi ex, facilisis vitae aliquet in, rutrum sed neque. Aliquam pellentesque tellus risus, sit amet hendrerit nulla condimentum at. Aliquam ultrices, nisi nec sagittis imperdiet, velit orci semper dui, vitae bibendum sem felis vel leo. Ut non leo auctor, dictum nunc sodales, dapibus dolor.',\\r\\n '\\\\n\\\\nInteger blandit maximus sem, vel accumsan augue ultrices in. Curabitur ut dignissim magna, ut semper sem. Suspendisse tellus tortor, semper nec metus eu, maximus sodales tellus. Morbi sed tortor vel est vehicula blandit. Etiam id est risus. Ut consequat quis massa et commodo. Pellentesque fringilla commodo quam ac vestibulum. Quisque euismod elit velit, nec ultricies ligula consequat vitae. Ut aliquet sed sapien et elementum. Praesent rhoncus convallis nulla, vitae tempus magna euismod sit amet. Sed risus nunc, fringilla vel orci a, cursus rhoncus quam. Mauris tincidunt dolor lacus, et condimentum nisl tempor sit amet. Sed eros tortor, auctor a vulputate et, vulputate id ante. Quisque ultrices mollis vulputate. Aenean ut augue sem.',\\r\\n '\\\\n\\\\nDonec luctus mauris nec nibh varius, in posuere felis scelerisque. Donec vitae dapibus felis. In interdum, libero vehicula pellentesque iaculis, orci felis tempus mauris, vel ullamcorper leo odio quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed fringilla vestibulum urna, nec sollicitudin lacus porta eu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean posuere ultrices nunc sit amet pretium. Quisque eget tortor semper, convallis diam sit amet, gravida purus. Maecenas finibus gravida mi eu convallis. Vivamus quis volutpat dui, vel elementum mauris. Aenean pretium odio tortor, et placerat ligula congue sit amet. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ut tristique nisi. Suspendisse pharetra elit a ligula convallis dictum. Nunc egestas non leo eu ultrices.',\\r\\n '\\\\n\\\\nPraesent pulvinar nunc nec quam consectetur fringilla. Pellentesque tristique ex id mollis fermentum. Praesent sit amet lacinia nibh. Nulla at ex consequat, hendrerit sapien in, tincidunt tortor. Etiam eget efficitur libero. Proin consequat tellus at placerat sagittis. Nam vitae euismod sapien, sit amet ullamcorper odio. Sed tincidunt ut sem eu pellentesque. Sed efficitur nulla urna, sed finibus enim imperdiet in. Nulla ac nulla finibus, eleifend urna quis, semper felis.'\\r\\n];\\r\\n\",\"export class WidgetDialog {\\r\\n\\r\\n onClose;\\r\\n\\r\\n constructor(opts: { close: Function }) {\\r\\n this.onClose = opts.close;\\r\\n }\\r\\n\\r\\n close() {\\r\\n if (this.onClose) {\\r\\n this.onClose();\\r\\n }\\r\\n }\\r\\n}\\r\\n\",\"import {ItemSingle, IWidget, IWidgetClass, IWidgetParam, SiteTheme} from '../widget.interface';\\r\\nimport {WidgetPackage} from '../widget.component';\\r\\n\\r\\nexport interface WidgetContainerDevOptions {\\r\\n widget: IWidget;\\r\\n widgetPackage: WidgetPackage;\\r\\n setManual: (param: ItemSingle, value: boolean) => {};\\r\\n paramEdit: (param: ItemSingle, container?: HTMLElement) => {};\\r\\n isDev: boolean;\\r\\n theme: SiteTheme;\\r\\n element: Element;\\r\\n locale: string;\\r\\n}\\r\\n\\r\\n\\r\\nexport interface WidgetContainerProduction {\\r\\n widget: IWidget;\\r\\n widgetClass: IWidgetClass;\\r\\n id: string;\\r\\n widgetPackage: WidgetPackage;\\r\\n sendData: (param: ItemSingle) => {};\\r\\n setManual: (param: ItemSingle, value: boolean) => {};\\r\\n paramEdit: (param: ItemSingle, container?: HTMLElement) => {};\\r\\n isDev: boolean;\\r\\n theme: SiteTheme;\\r\\n element: Element;\\r\\n locale: string;\\r\\n}\\r\\n\\r\\n\\r\\nexport class WidgetContainer {\\r\\n\\r\\n\\r\\n /**\\r\\n * @deprecated\\r\\n * @param componentType\\r\\n */\\r\\n public createComponentModule(componentType: any): any {\\r\\n\\r\\n throw new Error('You should implement this method');\\r\\n }\\r\\n\\r\\n\\r\\n /**\\r\\n * @deprecated\\r\\n * @param opts\\r\\n */\\r\\n public createNewComponent(opts: WidgetContainerDevOptions | WidgetContainerProduction): any {\\r\\n\\r\\n throw new Error('You should implement this method');\\r\\n }\\r\\n\\r\\n}\\r\\n\",\"/*\\r\\n * Public API Surface of widget-common\\r\\n */\\r\\n\\r\\nexport * from './lib/communication.service';\\r\\nexport * from './lib/common';\\r\\nexport * from './lib/loader';\\r\\nexport * from './lib/shared.module';\\r\\nexport * from './lib/widget.component';\\r\\nexport * from './lib/widget.generator';\\r\\nexport * from './lib/widget.utils';\\r\\nexport * from './lib/widget.interface';\\r\\nexport * from './lib/widget.api';\\r\\nexport * from './lib/widget.dialog';\\r\\nexport * from './lib/echart/echart.component';\\r\\nexport * from './lib/pie-chart/pie-chart.component';\\r\\nexport * from './lib/widget-container/widget-container.component';\\r\\nexport * from './lib/forge/forge.component';\\r\\nexport * from './lib/forge/forge.interface';\\r\\n\",\"/**\\n * Generated bundle index. Do not edit.\\n */\\n\\nexport * from './public_api';\\n\"],\"names\":[\"getConfig\",\"i2.ScriptService\",\"Component\"],\"mappings\":\"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\"}","type":"asset"}]}
|