{"version":3,"sources":["webpack:///./src/ui/components/devices/charts/charts/ComparisonCharts.vue?630f","webpack:///./src/ui/components/devices/charts/charts/ComparisonCharts.vue","webpack:///./src/ui/components/devices/charts/charts/ComparisonCharts.vue?aebc","webpack:///./src/ui/components/devices/charts/charts/ComparisonCharts.vue?8689","webpack:///./src/ui/components/devices/charts/charts/ComparisonCharts.vue?8794"],"names":["staticClass","$event","handleNavigation","scopedSlots","key","attrs","_vm","fn","on","otherSeriesStats","currentPeriod","dataToExport","seriesSuffixes","range","refInFor","index","projectStartedAtNumber","onMouseMove","chartLoaded","ComparisonCharts","Vue","constructor","multiSelectLimit","selectedPeriodCount","navigationItemsToExclude","Periods","DAY","reRenderKey","overflow","disableNavButton","isStackingButtonActive","differenceSeriesStats","localLegendItems","chartVisibleArray","getChartOptions","this","chartData","optionsList","chartOptions","filter","el","includes","type","length","chart","event","sync","onMouseLeave","highchartInstances","forEach","series","data","point","setState","tooltip","hide","xAxis","hideCrosshair","currentChart","pointer","normalize","emptyChecker","searchPoint","points","singleSeries","push","undefined","refresh","drawCrosshair","$refs","charts","map","c","getChartObject","a","_","defineSeriesStatsMultiSelection","lynusChartInstances","chartInstance","chartIndex","seriesElement","seriesIndex","currentChartOptionIndex","valuesArray","seriesName","legend","allItems","name","agg","getValuesOfSeries","totalValue","sum","getSeriesName","toFixed","unit","max","min","avg","mean","minValue","maxValue","avgValue","currentChartBounds","chartBounds","concatString","convertTimestampChartStats","seriesType","givenBounds","dateString","dStart","Date","start","dEnd","endChart","getDate","getMonth","getFullYear","getHours","getMinutes","dataElement","options","y","yData","period","handlePeriodsForAutarkiegrad","renderChart","handlePeriodInFullScreenView","handleFullScreen","LynusChartBasicView","handleDataToExport","handleStackingOptions","toggleStacking","setTimeout","date","calendarDialog","closeDialog","promises","handlePeriod","Promise","all","then","getLegendItems","generateChartData","itemsList","chartElement","periodForAutarkiegrad","periodConfigurations","$emit","periodConfigs","cloneDeep","day","interval","__decorate","Prop","default","week","month","year","Getter","Component","components","CalendarNavigation","DataExportNew","DeviceActions","TotalValuesWindow","component","staticRenderFns"],"mappings":"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","file":"js/chunk-38e507ff.caaa7828.js","sourcesContent":["export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ComparisonCharts.vue?vue&type=style&index=0&id=73e00e8b&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"base-chart\"},[_c('CalendarNavigation',{ref:\"calendarDialog\",attrs:{\"disable-nav-button\":_vm.disableNavButton,\"enable-multi-select\":true,\"navigation-items-to-exclude\":_vm.navigationItemsToExclude,\"hide-calendar-navigation\":true},on:{\"handleCalendar\":function($event){return _vm.handleCalendar($event)},\"handleNavigation\":function($event){return _vm.handleNavigation($event)}},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [_c('div',{staticClass:\"header-actions d-flex justify-end\"},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.handleFullScreen()}}},on),[_c('v-icon',[_vm._v(\"fa-expand\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('uiComponents.chartTooltips.fullscreen')))])]),(_vm.currentPeriod !== 'live')?_c('TotalValuesWindow',{attrs:{\"current-selected-period\":_vm.currentPeriod,\"objects-difference-series-stats\":_vm.differenceSeriesStats,\"objects-other-series-stats\":_vm.otherSeriesStats}}):_vm._e(),_c('DataExportNew',{attrs:{\"period-title\":_vm.currentPeriod,\"chart-data\":_vm.chartData,\"data-to-export\":_vm.dataToExport,\"is-threshold-line\":_vm.isThresholdLine,\"enableMultiSelect\":true,\"multiSelectData\":_vm.localLegendItems,\"seriesSuffixes\":_vm.seriesSuffixes}}),(_vm.numberOfColumns > 1)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\",\"disabled\":!_vm.isStackingButtonActive},on:{\"click\":_vm.handleStackingOptions}},on),[_c('lynus-icon',{attrs:{\"name\":\"chart_stacking\",\"color\":\"theme\",\"size\":\"26\"}})],1)]}}],null,false,937854784)},[_c('span',[_vm._v(_vm._s(_vm.$t('uiComponents.chartTooltips.switchColumn')))])]):_vm._e(),(_vm.showDeviceActions)?_c('DeviceActions',{attrs:{\"device\":_vm.chartData}}):_vm._e()],1)]},proxy:true}])},[_c('div',{staticClass:\"base-chart__body\",on:{\"mouseleave\":_vm.onMouseLeave}},_vm._l((_vm.range(_vm.multiSelectLimit)),function(index){return _c('LynusChartBasicView',{key:index,ref:\"charts\",refInFor:true,class:_vm.chartVisibleArray[index] === false ? 'hideItem' : '',attrs:{\"chart-data\":_vm.chartData,\"current-period\":_vm.currentPeriod,\"started-at\":_vm.projectStartedAtNumber,\"is-threshold-line\":_vm.isThresholdLine,\"chartHeight\":_vm.chartHeight,\"onMouseMove\":_vm.onMouseMove,\"useCustomTimeRange\":true},on:{\"chartLoaded\":_vm.chartLoaded,\"handlePeriodInFullScreenView\":_vm.handlePeriodInFullScreenView,\"handleDataToExport\":_vm.handleDataToExport}})}),1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Vue, Component, Prop } from 'vue-property-decorator';\nimport { Getter } from 'vuex-class';\nimport LynusChartBasicView from '@/ui/components/devices/charts/charts/LynusChart.vue';\nimport DataExportNew from '@/ui/components/devices/charts/charts/DataExportNew.vue';\nimport DeviceActions from '@/ui/components/devices/actions/DeviceActions.vue';\nimport TotalValuesWindow from '@/ui/components/devices/charts/components/TotalValuesWindow.vue';\nimport { Periods, getChartOptions, periodConfigurations } from '@/ui/components/devices/charts/charts/ChartUtils';\nimport _ from 'lodash';\nimport { Chart, PointerEventObject } from 'highcharts/highstock';\nimport CalendarNavigation from '@/ui/components/devices/charts/charts/CalendarNavigation.vue';\nimport { ChartData, ApproximationValue } from '@/types/chart.types';\n\n@Component({\n components: {\n CalendarNavigation,\n LynusChartBasicView,\n DataExportNew,\n DeviceActions,\n TotalValuesWindow,\n },\n})\nexport default class ComparisonCharts extends Vue {\n @Prop() chartData!: ChartData;\n @Prop({ default: 400 }) chartHeight!: number;\n @Prop({ default: true }) showDeviceActions!: boolean;\n @Prop({ default: false }) isThresholdLine!: boolean;\n @Prop({ default: () => ({ day: 4, week: 1, month: 1, year: 1 }) }) customApproximationValue!: ApproximationValue;\n @Getter('projects/projectStartedAtNumber') projectStartedAtNumber!: number;\n\n readonly multiSelectLimit: number = 4;\n // variable used to control how many charts will be rendered\n selectedPeriodCount = 1;\n navigationItemsToExclude = ['live'];\n\n currentPeriod: string = Periods.DAY;\n reRenderKey = 0;\n\n overflow: any = 'hidden';\n disableNavButton: any = false;\n dataToExport: any = null;\n isStackingButtonActive = true\n differenceSeriesStats: any = []\n otherSeriesStats: any = []\n localLegendItems = [];\n seriesSuffixes: any = []\n\n chartVisibleArray = [true, true, true, true]\n get chartOptions() {\n return getChartOptions(this.chartData);\n }\n\n get numberOfColumns() {\n const optionsList = this.chartOptions.filter((el: any) => ['column', 'diff'].includes(el.type));\n return optionsList.length;\n }\n get numberOfLines() {\n const optionsList = this.chartOptions.filter((el: any) => el.type === 'line');\n return optionsList.length;\n }\n\n /**\n * Callback for mouse move inside chart.\n */\n onMouseMove(chart: Chart, event: PointerEventObject) {\n this.sync(chart, event);\n }\n\n /**\n * Callback for mouse leaving chart div.\n */\n onMouseLeave() {\n this.highchartInstances.forEach((chart) => {\n chart.series.forEach((series) => {\n series.data.forEach((point) => point.setState());\n });\n\n chart.tooltip.hide();\n chart.xAxis[0].hideCrosshair();\n });\n }\n\n /**\n * Synchronizes all charts' tooltips, points and crosshairs to the currently hovered chart,\n * according to the given mouse move event.\n */\n sync(currentChart: Chart, event: PointerEventObject) {\n event = currentChart.pointer.normalize(event);\n\n this.highchartInstances.forEach((chart) => {\n // skip current chart, as mouse is already there\n if (chart === currentChart) return;\n let emptyChecker = true;\n chart.series.forEach((series) => {\n if (series.data.length !== 0) {\n emptyChecker = false;\n }\n });\n if (!emptyChecker) {\n chart.series.forEach((series) => {\n const point = series.searchPoint(event, true);\n const points: any[] = [];\n // loads the points of all series for the tooltip to update correctly\n chart.series.forEach(singleSeries => {\n points.push(singleSeries.searchPoint(event, true));\n });\n if (point) {\n point.setState('hover');\n if (chart.tooltip?.refresh !== undefined && chart.xAxis.length !== 0) {\n chart.tooltip.refresh(points);\n chart.xAxis[0].drawCrosshair(event, point);\n }\n }\n });\n }\n });\n }\n\n /**\n * Returns the highchart instances of the single charts that should be compared.\n */\n get highchartInstances(): Chart[] {\n return (this.$refs.charts as []).map((c: LynusChartBasicView) => c.getChartObject().chart);\n }\n /**\n * Returns the lynuschart instances. With all the functions to use.\n */\n get lynusChartInstances() {\n return (this.$refs.charts as []).map((c: LynusChartBasicView) => c);\n }\n\n /**\n * Behaves like python `range`.\n */\n range(a: number) {\n return _.range(a);\n }\n\n /**\n * Defines Chart Stats of Multiselect Charts. Those stats will be visible inside the Statswindow.\n */\n defineSeriesStatsMultiSelection() {\n this.differenceSeriesStats = [];\n this.otherSeriesStats = [];\n this.lynusChartInstances.forEach((chartInstance: any, chartIndex: number) => {\n if (this.chartVisibleArray[chartIndex] === true) {\n const chartOptions = chartInstance;\n chartOptions.chart.chart.series.forEach((seriesElement: any, seriesIndex: any) => {\n const currentChartOptionIndex = seriesIndex % this.chartOptions.length;\n let valuesArray;\n let seriesName = chartOptions.chart.chart.legend.allItems[seriesIndex].name;\n if (this.chartOptions[currentChartOptionIndex].agg === 'diff') {\n valuesArray = this.getValuesOfSeries(seriesIndex, this.chartOptions[currentChartOptionIndex].type, chartOptions.getChartObject());\n\n const totalValue = _.sum(valuesArray) ?? 0;\n seriesName = this.getSeriesName(currentChartOptionIndex, chartIndex);\n\n this.differenceSeriesStats.push({ name: seriesName, sum: totalValue.toFixed(2), unit: this.chartOptions[currentChartOptionIndex].unit });\n } else {\n valuesArray = this.getValuesOfSeries(seriesIndex, this.chartOptions[currentChartOptionIndex].type, chartOptions.getChartObject());\n\n const max: number = _.max(valuesArray) ?? 0;\n const min: number = _.min(valuesArray) ?? 0;\n const avg: number = _.mean(valuesArray) ?? 0; // return avg of all numbers in array: https://www.geeksforgeeks.org/lodash-_-mean-method/\n\n seriesName = this.getSeriesName(currentChartOptionIndex, chartIndex);\n this.otherSeriesStats.push({ name: seriesName, minValue: min.toFixed(2), maxValue: max.toFixed(2), avgValue: avg.toFixed(2), unit: this.chartOptions[currentChartOptionIndex].unit });\n }\n });\n }\n });\n }\n\n getSeriesName(seriesIndex: number, chartIndex: number) {\n let seriesName = '';\n const currentChartBounds = this.lynusChartInstances[chartIndex].chart.chartBounds;\n const concatString = this.convertTimestampChartStats(currentChartBounds);\n if (this.chartOptions[seriesIndex].name !== '') {\n seriesName = `${this.chartOptions[seriesIndex].name}_${concatString}`;\n } else {\n seriesName = `${this.chartOptions[seriesIndex].seriesType} ${seriesIndex}_${concatString}`;\n }\n return seriesName;\n }\n /**\n * Converts Unix timestamp into for example 'dd.mm.yyyy' based on the period selected\n */\n convertTimestampChartStats(givenBounds: any) {\n let dateString = '';\n const dStart = new Date(givenBounds.start * 1000);\n const dEnd = new Date(givenBounds.endChart * 1000);\n if (this.currentPeriod === 'day') {\n dateString = `${dStart.getDate()}.${dStart.getMonth() + 1}.${dStart.getFullYear()}`;\n } else if (this.currentPeriod === 'week') {\n dateString = `${dStart.getDate()}.${dStart.getMonth() + 1}.${dStart.getFullYear()} - ${dEnd.getDate()}.${dEnd.getMonth() + 1}.${dEnd.getFullYear()}`;\n } else if (this.currentPeriod === 'month') {\n dateString = `${dStart.getMonth() + 1}.${dStart.getFullYear()}`;\n } else if (this.currentPeriod === 'year') {\n dateString = `${dStart.getFullYear()}`;\n } else if (this.currentPeriod === 'hour') {\n dateString = `${dStart.getDate()}.${dStart.getMonth() + 1}.${dStart.getFullYear()} ${dStart.getHours()}:${dStart.getMinutes()}`;\n }\n return dateString;\n }\n\n /**\n * Loads all the data from one series for Chart Stats\n */\n getValuesOfSeries(index: number, type: string, chartOptions: any) {\n const chart = chartOptions;\n if (type !== 'column') {\n return chart.chart.series[index].data.map((dataElement: any) => {\n return dataElement.options.y;\n });\n } else {\n return (chart.chart.series[index] as any).yData;\n }\n }\n\n /**\n * Function loads the current Period in click of Chart Navigation Buttons\n */\n handleNavigation(period: string) {\n this.handlePeriodsForAutarkiegrad(period);\n this.disableNavButton = true;\n this.currentPeriod = period;\n this.reRenderKey += 1;\n // sets back the chartcount to 1\n this.selectedPeriodCount = 1;\n for (let chartIndex = 3; chartIndex >= this.selectedPeriodCount; chartIndex--) {\n this.chartVisibleArray[chartIndex] = false;\n }\n this.lynusChartInstances.map((c) => c.renderChart());\n }\n /**\n * Swaps period of chart in Fullscreen Mode\n */\n handlePeriodInFullScreenView(period: string) {\n this.currentPeriod = period;\n }\n\n chartLoaded() {\n this.disableNavButton = false;\n }\n\n handleFullScreen() {\n (this.$refs.LynusChartBasicView as any).handleFullScreen();\n }\n\n handleDataToExport(dataToExport: any) {\n this.dataToExport = dataToExport;\n }\n\n /**\n * Changes stackingoptions of Columncharts\n */\n handleStackingOptions() {\n (this.$refs.LynusChartBasicView as any).toggleStacking();\n\n this.isStackingButtonActive = false;\n setTimeout(() => {\n this.isStackingButtonActive = true;\n }, 2000);\n }\n\n async handleCalendar(date: number[]) {\n this.disableNavButton = true;\n (this.$refs.calendarDialog as any).closeDialog();\n this.selectedPeriodCount = date.length;\n this.seriesSuffixes = [];\n const promises = [];\n\n // loop to load the charts with the needed Period selected from the date-array\n for (let chartIndex = 0; chartIndex < this.selectedPeriodCount; chartIndex++) {\n this.chartVisibleArray[chartIndex] = true;\n promises.push(this.lynusChartInstances[chartIndex].handlePeriod(date[chartIndex]));\n }\n // waits for all the charts to be loaded to avoid Chartstats and Export to be loaded without every data being loaded from the backend\n await Promise.all(promises).then(() => {});\n for (let chartIndex = 0; chartIndex < this.selectedPeriodCount; chartIndex++) {\n const currentChartBounds = this.lynusChartInstances[chartIndex]?.chart.chartBounds;\n // creates Suffixes containing the converted date for the data export\n this.seriesSuffixes.push(this.convertTimestampChartStats(currentChartBounds));\n }\n // loop is used to hide all the charts without a period selected\n for (let chartIndex = 3; chartIndex >= this.selectedPeriodCount; chartIndex--) {\n this.chartVisibleArray[chartIndex] = false;\n }\n this.disableNavButton = false;\n\n // sets up needed Data for data export\n this.getLegendItems();\n this.generateChartData();\n\n // generateObject for Total Sum (currently only for Difference Series)\n this.defineSeriesStatsMultiSelection();\n }\n\n /**\n * Generates array for dataExport Information\n */\n getLegendItems() {\n const itemsList: any = [];\n this.lynusChartInstances.forEach((chartElement: any) => {\n itemsList.push(chartElement.chart.chart.legend.allItems);\n });\n this.localLegendItems = itemsList;\n }\n\n /**\n * Generates array with all the given data in the charts. In order to display them inside the Export Data file\n */\n generateChartData() {\n const chartData: any[] = [];\n this.dataToExport = undefined;\n for (let chartIndex = 0; chartIndex < this.selectedPeriodCount; chartIndex++) {\n chartData.push(this.lynusChartInstances[chartIndex].chart.dataToExport);\n }\n this.dataToExport = chartData;\n }\n\n handlePeriodsForAutarkiegrad(period: string) {\n const periodForAutarkiegrad = this.periodConfigurations[period].period();\n this.$emit('handleAutarkiegrad', periodForAutarkiegrad);\n }\n\n get periodConfigurations() {\n const periodConfigs: any = _.cloneDeep(periodConfigurations); // copy default periodConfigurations\n periodConfigs.day.interval = '15m';\n return periodConfigs;\n }\n}\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ComparisonCharts.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ComparisonCharts.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ComparisonCharts.vue?vue&type=template&id=73e00e8b&scoped=true&\"\nimport script from \"./ComparisonCharts.vue?vue&type=script&lang=ts&\"\nexport * from \"./ComparisonCharts.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ComparisonCharts.vue?vue&type=style&index=0&id=73e00e8b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73e00e8b\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}