logitude-dashboard-library 1.3.21 → 1.3.23

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/README.md CHANGED
@@ -1,30 +1,30 @@
1
- # logitude-dashboard-library
2
-
3
- > Made with create-react-library
4
-
5
- [![NPM](https://img.shields.io/npm/v/logitude-dashboard-library.svg)](https://www.npmjs.com/package/logitude-dashboard-library) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
6
-
7
- ## Install
8
-
9
- ```bash
10
- npm install --save logitude-dashboard-library
11
- ```
12
-
13
- ## Usage
14
-
15
- ```tsx
16
- import React, { Component } from 'react'
17
-
18
- import MyComponent from 'logitude-dashboard-library'
19
- import 'logitude-dashboard-library/dist/index.css'
20
-
21
- class Example extends Component {
22
- render() {
23
- return <MyComponent />
24
- }
25
- }
26
- ```
27
-
28
- ## License
29
-
30
- MIT © [logitude](https://github.com/logitude)
1
+ # logitude-dashboard-library
2
+
3
+ > Made with create-react-library
4
+
5
+ [![NPM](https://img.shields.io/npm/v/logitude-dashboard-library.svg)](https://www.npmjs.com/package/logitude-dashboard-library) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install --save logitude-dashboard-library
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```tsx
16
+ import React, { Component } from 'react'
17
+
18
+ import MyComponent from 'logitude-dashboard-library'
19
+ import 'logitude-dashboard-library/dist/index.css'
20
+
21
+ class Example extends Component {
22
+ render() {
23
+ return <MyComponent />
24
+ }
25
+ }
26
+ ```
27
+
28
+ ## License
29
+
30
+ MIT © [logitude](https://github.com/logitude)
package/dist/index.css CHANGED
@@ -1,13 +1,13 @@
1
- @import "primereact/resources/themes/lara-light-indigo/theme.css";
2
- @import "primereact/resources/primereact.css";
3
- @import "primeicons/primeicons.css";
4
-
5
- @import "react-grid-layout/css/styles";
6
- @import "react-resizable/css/styles";
7
-
8
- @import "logitude-dashboard-library/dist/assets/styles/dl-dashboard.scss";
9
- @import "logitude-dashboard-library/dist/assets/styles/colors.scss";
10
- @import "logitude-dashboard-library/dist/assets/styles/fonts.scss";
11
- @import "logitude-dashboard-library/dist/assets/styles/global.scss";
12
-
1
+ @import "primereact/resources/themes/lara-light-indigo/theme.css";
2
+ @import "primereact/resources/primereact.css";
3
+ @import "primeicons/primeicons.css";
4
+
5
+ @import "react-grid-layout/css/styles";
6
+ @import "react-resizable/css/styles";
7
+
8
+ @import "logitude-dashboard-library/dist/assets/styles/dl-dashboard.scss";
9
+ @import "logitude-dashboard-library/dist/assets/styles/colors.scss";
10
+ @import "logitude-dashboard-library/dist/assets/styles/fonts.scss";
11
+ @import "logitude-dashboard-library/dist/assets/styles/global.scss";
12
+
13
13
 
package/dist/index.js CHANGED
@@ -82,6 +82,20 @@ var Tools = /*#__PURE__*/function () {
82
82
  return logitude_url;
83
83
  };
84
84
 
85
+ Tools.Map = function Map(from, to) {
86
+ if (!from) return;
87
+ if (!to) to = {};
88
+ var keys = Object.keys(to);
89
+
90
+ for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {
91
+ var k = _keys[_i];
92
+
93
+ if (from[k]) {
94
+ to[k] = from[k];
95
+ }
96
+ }
97
+ };
98
+
85
99
  return Tools;
86
100
  }();
87
101
 
@@ -179,12 +193,13 @@ var DashboardAnalyticsService = /*#__PURE__*/function () {
179
193
  }();
180
194
 
181
195
  var ApexChart = function ApexChart(props) {
182
- var _props$widget, _props$widget2, _props$widget3, _props$widget5;
196
+ var _props$widget3;
183
197
 
184
198
  var _useState = React.useState(''),
185
199
  error = _useState[0],
186
200
  setEror = _useState[1];
187
201
 
202
+ var widget = React.useRef();
188
203
  var MeasuresIds = React.useRef([]);
189
204
  var GroupByIds = React.useRef([]);
190
205
  var GroupCount = React.useRef(0);
@@ -209,15 +224,24 @@ var ApexChart = function ApexChart(props) {
209
224
 
210
225
  var isLoadingDrow = React.useRef(true);
211
226
  React.useEffect(function () {
227
+ var _props$widget;
228
+
212
229
  setTimeout(function () {
213
230
  isLoadingDrow.current = false;
214
231
  updateView();
215
232
  }, 500);
233
+ widget.current = props.widget;
234
+ (_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.onChange.subscribe(function (e) {
235
+ RefreshData();
236
+ });
216
237
  }, []);
217
238
  React.useEffect(function () {
218
- console.log('useEffect ApexChart', props.widget);
239
+ RefreshData();
240
+ }, []);
241
+
242
+ var RefreshData = function RefreshData() {
219
243
  var dashboardAnalyticsService = new DashboardAnalyticsService();
220
- dashboardAnalyticsService.getData(props.widget).then(function (result) {
244
+ dashboardAnalyticsService.getData(widget.current).then(function (result) {
221
245
  fillIds(result.data);
222
246
  var data = getChartOptions(result.data);
223
247
  serArgs(data);
@@ -233,7 +257,7 @@ var ApexChart = function ApexChart(props) {
233
257
  hasDataError.current = true;
234
258
  updateView();
235
259
  });
236
- }, [(_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.EntityId, (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Filters, (_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.WidgetMeasures]);
260
+ };
237
261
 
238
262
  var fillIds = function fillIds(datas) {
239
263
  var measuresIds = [];
@@ -545,11 +569,11 @@ var ApexChart = function ApexChart(props) {
545
569
  };
546
570
 
547
571
  var getChartOptions = function getChartOptions(values) {
548
- var _props$widget4;
572
+ var _props$widget2;
549
573
 
550
574
  handelNullLabels(values);
551
575
 
552
- switch ((_props$widget4 = props.widget) === null || _props$widget4 === void 0 ? void 0 : _props$widget4.TypeCode) {
576
+ switch ((_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.TypeCode) {
553
577
  case 'bar':
554
578
  return barOptoins(values);
555
579
 
@@ -578,7 +602,7 @@ var ApexChart = function ApexChart(props) {
578
602
  })) : isView ? React__default.createElement(ReactApexChart, {
579
603
  options: args === null || args === void 0 ? void 0 : args.options,
580
604
  series: args === null || args === void 0 ? void 0 : args.series,
581
- type: (_props$widget5 = props.widget) === null || _props$widget5 === void 0 ? void 0 : _props$widget5.TypeCode,
605
+ type: (_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.TypeCode,
582
606
  height: "100%",
583
607
  width: "100%"
584
608
  }) : React__default.createElement("div", {
@@ -678,6 +702,16 @@ var DashboardDesigner = function DashboardDesigner(props) {
678
702
  React.useEffect(function () {
679
703
  FillLayout(props.Widgetlayouts);
680
704
  console.log('DashboardDesigner => ', props.Widgetlayouts);
705
+ props.dataBinding.onEditWidget.subscribe(function (Editedwidget) {
706
+ var widget = widgets.lg.find(function (e) {
707
+ return e.key == Editedwidget.key;
708
+ });
709
+
710
+ if (widget) {
711
+ Tools.Map(Editedwidget, widget);
712
+ widget.onChange.next(true);
713
+ }
714
+ });
681
715
  }, [props.Widgetlayouts]);
682
716
 
683
717
  var FillLayout = function FillLayout(dashboardLayouts) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n \r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const MeasuresIds = useRef<string[]>([]);\r\n const GroupByIds = useRef<string[]>([]);\r\n const GroupCount = useRef<number>(0);\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n }, [])\r\n useEffect(() => {\r\n console.log('useEffect ApexChart', props.widget);\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n\r\n\r\n }, [props.widget?.EntityId, props.widget?.Filters, props.widget?.WidgetMeasures]);\r\n\r\n const fillIds = (datas: SeriesMeasure[]) => {\r\n var measuresIds: string[] = [];\r\n var groupByIds: string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n\r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n\r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\r\n\r\n }\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const lineOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var colors = CreateColors(labels.length);\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n colors:colors,\r\n tooltip:{\r\n fillSeriesColor:false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const CreateColors = (count: number): any[] | undefined => {\r\n GroupCount.current = count;\r\n var colors: any[] = [];\r\n CreateDifferentColors(colors, 0, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n\r\n return undefined;\r\n\r\n\r\n }\r\n const CreateDifferentColors = (colors: any[], startAngle: number, s: number, v: number) => {\r\n for (let index = 0; GroupCount.current > 0 && index < 12; index++) {\r\n var color = `hsl(${startAngle + index * 30}deg ${s}% ${v}%)`;\r\n colors.push(color);\r\n GroupCount.current--;\r\n }\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any[] = [];\r\n var labels: any[] = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n // var ll = labels.length;\r\n // for (let index = 0; index < ll; index++) {\r\n // series[index] = 100;\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT');\r\n // }\r\n // for (let index = 0; index < ll; index++) {\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT2');\r\n // }\r\n }\r\n var colors = CreateColors(labels.length);\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n colors:colors,\r\n tooltip:{\r\n fillSeriesColor:false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.forEach(element => {\r\n element.SeriesMeasureVulues.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId: MeasuresIds.current[options.seriesIndex],\r\n Widget: props.widget\r\n })\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]): ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n \r\n\r\n const editWidget = ()=>{\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n {\r\n props.isInEditMode ? \r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n /> \r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n <ApexChart widget={props.widget} onSelectDataPoint={props.onSelectDataPoint} />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n // const layoutsRef = useRef<Layouts>({ lg: [] });\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n // const widgetsRef = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n console.log('DashboardDesigner => ',props.Widgetlayouts)\r\n // props.dataBinding.onAddWidget.subscribe(e => {\r\n // // layoutsRef.current['lg'].push(e.Layout as Layout);\r\n // // widgetsRef.current.lg.push(e);\r\n // // setWidgets(widgetsRef.current);\r\n // // setLayouts(layoutsRef.current);\r\n\r\n\r\n // })\r\n\r\n // props.dataBinding.onGetLayouts.subscribe(dashboardLayouts => {\r\n // FillLayout(dashboardLayouts);\r\n // })\r\n\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n setFirstChange(true);\r\n var layout = createLayout(dashboardLayouts);\r\n setLayouts(layout);\r\n // layoutsRef.current = layout;\r\n // widgetsRef.current = dashboardLayouts;\r\n setWidgets(dashboardLayouts);\r\n // console.log('layoutsRef.current', layoutsRef.current)\r\n // console.log('widgetsRef.current', widgetsRef.current)\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n console.log(' setisInEditMode(props.editMode);')\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n console.log('setplaceholderRowsArray(', gridLayout);\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n console.log('setplaceholderRowsArray(', newPlaceholderRows);\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget:ReactWidgetPM) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const [reactDashboardPM, setReactDashboardPM] = useState<{ lg: ReactDashboardPM[] }>({ lg: [] });\r\n\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n console.log(\"index > dataBinding.onGetLayouts = > \",layouts)\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState({...Widgetlayouts.current});\r\n\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e=>{\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w=>{\r\n Widgetlayouts.current.lg.push(w);\r\n console.log(\"index > after add dataBinding.onGetLayouts = > \",Widgetlayouts.current)\r\n\r\n setWidgetlayoutsState({...Widgetlayouts.current});\r\n });\r\n \r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n // const EditDashBoard = () => {\r\n // props.openAddEditDashboard(currentDashbord);\r\n // dashboardMoreButtonToggle?.current?.hide();\r\n\r\n // }\r\n // const addWidget = (widgetCode) => {\r\n // var position = EvaluateNewWidgetPosition();\r\n // props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n // }\r\n\r\n // const editLayout = () => {\r\n // setIsInEditMode(true);\r\n // setHasChanges(false);\r\n // dashboardMoreButtonToggle?.current?.hide();\r\n\r\n // setBeforEditDashbord(deepClone(currentDashbord));\r\n // }\r\n // const save = () => {\r\n // setIsInEditMode(false)\r\n // console.log('onSaveDashboard > ', currentDashbord)\r\n // props.onSaveDashboard(currentDashbord);\r\n // onHide();\r\n\r\n // setHasChanges(false);;\r\n // }\r\n\r\n // const cancelSave = () => {\r\n // if (!hasChanges) {\r\n // setIsInEditMode(false);\r\n // setHasChanges(false);\r\n\r\n // } else {\r\n // setCancelConfirmDialog(true);\r\n // }\r\n\r\n\r\n // }\r\n\r\n // const dontSave = () => {\r\n // setHasChanges(false)\r\n // setIsInEditMode(false);\r\n // props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n // setCancelConfirmDialog(false);\r\n // }\r\n // const changeDashboard = (event) => {\r\n // if (event.value == currentDashbord?.Id)\r\n // return;\r\n // var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n // props.onChangeDashboard(dasboard);\r\n // props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n // }\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n }\r\n\r\n });\r\n \r\n console.log('after update widget', Widgetlayouts)\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n\r\n \r\n return (\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} Widgetlayouts={widgetlayoutsState} dataBinding={props.dataBinding} editMode={isInEditMode} onLayoutChange={updateWidgets} openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","error","setEror","MeasuresIds","useRef","GroupByIds","GroupCount","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","console","log","dashboardAnalyticsService","then","result","fillIds","data","getChartOptions","response","ErrorMessage","message","EntityId","Filters","WidgetMeasures","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","e","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","CreateColors","fillSeriesColor","count","CreateDifferentColors","undefined","startAngle","s","v","index","color","donutOptoins","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","onSelectDataPoint","dataPointIndex","seriesIndex","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","dateFilter","setisInEditMode","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dashboardLayouts","layout","createLayout","w","Layout","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","dataBinding","onGetLayouts","subscribe","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","StartPotistion","x","y","EndPosition","h","onChangeLayouts"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Tools {\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(to);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n \r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const widget = useRef<ReactWidgetPM>();\r\n const MeasuresIds = useRef<string[]>([]);\r\n const GroupByIds = useRef<string[]>([]);\r\n const GroupCount = useRef<number>(0);\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n widget.current = props.widget;\r\n props.widget?.onChange.subscribe(e=>{\r\n RefreshData();\r\n })\r\n }, [])\r\n useEffect(() => {\r\n \r\n RefreshData();\r\n\r\n\r\n }, []);\r\n\r\n const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(widget.current as ReactWidgetPM).then(result => {\r\n fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n }\r\n const fillIds = (datas: SeriesMeasure[]) => {\r\n var measuresIds: string[] = [];\r\n var groupByIds: string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n\r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n\r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\r\n\r\n }\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const lineOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var colors = CreateColors(labels.length);\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n colors:colors,\r\n tooltip:{\r\n fillSeriesColor:false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const CreateColors = (count: number): any[] | undefined => {\r\n GroupCount.current = count;\r\n var colors: any[] = [];\r\n CreateDifferentColors(colors, 0, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n\r\n return undefined;\r\n\r\n\r\n }\r\n const CreateDifferentColors = (colors: any[], startAngle: number, s: number, v: number) => {\r\n for (let index = 0; GroupCount.current > 0 && index < 12; index++) {\r\n var color = `hsl(${startAngle + index * 30}deg ${s}% ${v}%)`;\r\n colors.push(color);\r\n GroupCount.current--;\r\n }\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any[] = [];\r\n var labels: any[] = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n // var ll = labels.length;\r\n // for (let index = 0; index < ll; index++) {\r\n // series[index] = 100;\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT');\r\n // }\r\n // for (let index = 0; index < ll; index++) {\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT2');\r\n // }\r\n }\r\n var colors = CreateColors(labels.length);\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n colors:colors,\r\n tooltip:{\r\n fillSeriesColor:false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.forEach(element => {\r\n element.SeriesMeasureVulues.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId: MeasuresIds.current[options.seriesIndex],\r\n Widget: props.widget\r\n })\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]): ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n \r\n\r\n const editWidget = ()=>{\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n {\r\n props.isInEditMode ? \r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n /> \r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n <ApexChart widget={props.widget} onSelectDataPoint={props.onSelectDataPoint} />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { Tools } from \"../../services/tools\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n // const layoutsRef = useRef<Layouts>({ lg: [] });\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n // const widgetsRef = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n console.log('DashboardDesigner => ',props.Widgetlayouts)\r\n \r\n props.dataBinding.onEditWidget.subscribe(Editedwidget => {\r\n var widget = widgets.lg.find(e=>e.key == Editedwidget.key);\r\n if(widget){\r\n Tools.Map(Editedwidget,widget);\r\n widget.onChange.next(true);\r\n }\r\n })\r\n\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n setFirstChange(true);\r\n var layout = createLayout(dashboardLayouts);\r\n setLayouts(layout);\r\n setWidgets(dashboardLayouts);\r\n \r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n console.log(' setisInEditMode(props.editMode);')\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n console.log('setplaceholderRowsArray(', gridLayout);\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n console.log('setplaceholderRowsArray(', newPlaceholderRows);\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget:ReactWidgetPM) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const [reactDashboardPM, setReactDashboardPM] = useState<{ lg: ReactDashboardPM[] }>({ lg: [] });\r\n\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n console.log(\"index > dataBinding.onGetLayouts = > \",layouts)\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState({...Widgetlayouts.current});\r\n\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e=>{\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w=>{\r\n Widgetlayouts.current.lg.push(w);\r\n console.log(\"index > after add dataBinding.onGetLayouts = > \",Widgetlayouts.current)\r\n\r\n setWidgetlayoutsState({...Widgetlayouts.current});\r\n });\r\n \r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n // const EditDashBoard = () => {\r\n // props.openAddEditDashboard(currentDashbord);\r\n // dashboardMoreButtonToggle?.current?.hide();\r\n\r\n // }\r\n // const addWidget = (widgetCode) => {\r\n // var position = EvaluateNewWidgetPosition();\r\n // props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n // }\r\n\r\n // const editLayout = () => {\r\n // setIsInEditMode(true);\r\n // setHasChanges(false);\r\n // dashboardMoreButtonToggle?.current?.hide();\r\n\r\n // setBeforEditDashbord(deepClone(currentDashbord));\r\n // }\r\n // const save = () => {\r\n // setIsInEditMode(false)\r\n // console.log('onSaveDashboard > ', currentDashbord)\r\n // props.onSaveDashboard(currentDashbord);\r\n // onHide();\r\n\r\n // setHasChanges(false);;\r\n // }\r\n\r\n // const cancelSave = () => {\r\n // if (!hasChanges) {\r\n // setIsInEditMode(false);\r\n // setHasChanges(false);\r\n\r\n // } else {\r\n // setCancelConfirmDialog(true);\r\n // }\r\n\r\n\r\n // }\r\n\r\n // const dontSave = () => {\r\n // setHasChanges(false)\r\n // setIsInEditMode(false);\r\n // props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n // setCancelConfirmDialog(false);\r\n // }\r\n // const changeDashboard = (event) => {\r\n // if (event.value == currentDashbord?.Id)\r\n // return;\r\n // var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n // props.onChangeDashboard(dasboard);\r\n // props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n // }\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n }\r\n\r\n });\r\n \r\n console.log('after update widget', Widgetlayouts)\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n\r\n \r\n return (\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} Widgetlayouts={widgetlayoutsState} dataBinding={props.dataBinding} editMode={isInEditMode} onLayoutChange={updateWidgets} openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","error","setEror","useRef","MeasuresIds","GroupByIds","GroupCount","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","onChange","subscribe","e","RefreshData","dashboardAnalyticsService","then","result","fillIds","data","getChartOptions","console","log","response","ErrorMessage","message","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","CreateColors","fillSeriesColor","count","CreateDifferentColors","undefined","startAngle","s","v","index","color","donutOptoins","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","onSelectDataPoint","dataPointIndex","seriesIndex","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","dateFilter","setisInEditMode","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dataBinding","onEditWidget","Editedwidget","find","next","dashboardLayouts","layout","createLayout","w","Layout","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","StartPotistion","x","y","EndPosition","h","onChangeLayouts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAaA,KAAb;EAAA;;EAAA,MACkBC,cADlB,GACW;IAEH,IAAIC,YAAY,GAAGC,QAAQ,CAACC,IAAT,CAAcC,OAAd,CAAsB,YAAtB,EAAoC,EAApC,CAAnB;;IAEA,IAAIF,QAAQ,CAACC,IAAT,CAAcE,OAAd,CAAsB,WAAtB,IAAqC,CAAC,CAA1C,EAA6C;MACzCJ,YAAY,GAAG,uBAAf;KADJ,MAIK;MACD,IAAIK,MAAM,GAAGJ,QAAQ,CAACC,IAAT,CAAcI,KAAd,CAAoB,aAApB,CAAb;MACA,IAAIC,GAAG,GAAGF,MAAM,CAAC,CAAD,CAAhB;MACAE,GAAG,GAAGA,GAAG,CAACJ,OAAJ,CAAYI,GAAG,CAACC,SAAJ,CAAcD,GAAG,CAACE,WAAJ,CAAgB,GAAhB,CAAd,EAAoCF,GAAG,CAACG,MAAxC,CAAZ,EAA6D,EAA7D,CAAN;MACAV,YAAY,GAAGO,GAAf;;;IAGJ,OAAOP,YAAP;GAhBR;;EAAA,MAmBkBW,GAnBlB,GAmBW,aAAWC,IAAX,EAAsBC,EAAtB;IACH,IAAI,CAACD,IAAL,EACI;IACJ,IAAI,CAACC,EAAL,EACIA,EAAE,GAAG,EAAL;IACJ,IAAIC,IAAI,GAAGC,MAAM,CAACD,IAAP,CAAYD,EAAZ,CAAX;;IACA,yBAAgBC,IAAhB,2BAAsB;MAAjB,IAAME,CAAC,YAAP;;MACD,IAAGJ,IAAI,CAACI,CAAD,CAAP,EAAW;QACPH,EAAE,CAACG,CAAD,CAAF,GAAQJ,IAAI,CAACI,CAAD,CAAZ;;;GA3BhB;;EAAA;AAAA;;ICMaC,WAAb;EAEI;IACI,KAAKC,OAAL,GAAepB,KAAK,CAACC,cAAN,EAAf;;;EAHR;;EAAA,OAKIoB,YALJ,GAKI,sBAAgBC,GAAhB,EAAoBC,OAApB;IAEI,IAAIC,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACAI,MAAM,GAAG,KAAKC,kBAAL,CAAwBJ,OAAxB,EAAiCG,MAAjC,CAAT;IAEM,OAAOE,KAAK,CAACC,GAAN,CAAwBH,MAAxB,EAAgC;MAAEI,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAA1F,CAAP;GAXR;;EAAA,OAaIK,GAbJ,GAaI,aAAOP,GAAP;IAEI,IAAIE,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACM,OAAOM,KAAK,CAACC,GAAN,CAAaH,MAAb,EAAqB;MAAEI,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAA/E,CAAP;GAjBR;;EAAA,OAmBIO,IAnBJ,GAmBI,cAAQT,GAAR,EAAYU,IAAZ;IACI,IAAIR,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACM,OAAOM,KAAK,CAACG,IAAN,CAAcL,MAAd,EAAqBM,IAArB,EAA2B;MAAEF,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAArF,CAAP;GAtBR;;EAAA,OAyBIC,mBAzBJ,GAyBI;IACI,OAAOQ,MAAM,CAACC,YAAP,CAAoBC,OAApB,CAA4B,OAA5B,KAAwC,EAA/C;GA1BR;;EAAA,OA4BYR,kBA5BZ,GA4BY,4BAAmBJ,OAAnB,EAA6Ca,aAA7C;IAEJ,IAAIC,MAAM,GAAGpB,MAAM,CAACD,IAAP,CAAYO,OAAZ,CAAb;IACA,IAAIe,sBAAsB,GAAkB,IAA5C;;IAEA,KAAK,IAAIC,CAAT,IAAcF,MAAd,EAAsB;MAClB,IAAIG,QAAQ,GAAGH,MAAM,CAACE,CAAD,CAArB;MACA,IAAIE,SAAS,GAAGlB,OAAO,CAACiB,QAAD,CAAvB;MACA,IAAIE,YAAY,GAAKF,QAAQ,CAAClC,OAAT,CAAiB,UAAjB,IAA+B,CAA/B,IAAoCmC,SAAS,IAAI,QAAlD,IAA+DD,QAAQ,IAAI,mBAA/F;;MAEA,IAAIJ,aAAa,IAAI,GAArB,EAA0B;QACtBA,aAAa,GAAGA,aAAa,CAACO,MAAd,CAAqB,GAArB,CAAhB;;;MAGJ,IAAI,CAACD,YAAL,EAAmB;QACfD,SAAS,GAAGA,SAAS,GAAGG,kBAAkB,CAACH,SAAD,CAArB,GAAmC,EAAxD;QACAL,aAAa,GAAGA,aAAa,CAACO,MAAd,CAAqBH,QAAQ,CAACG,MAAT,CAAgB,GAAhB,EAAqBA,MAArB,CAA4BF,SAA5B,CAArB,CAAhB;;;MAGJ,IAAID,QAAQ,IAAI,mBAAZ,IAAmCC,SAAS,CAAC7B,MAAV,GAAmB,CAA1D,EAA6D;QACzD0B,sBAAsB,GAAGO,IAAI,CAACC,SAAL,CAAeL,SAAf,CAAzB;;;;IAIR,IAAIH,sBAAJ,EAA4B;MACxBF,aAAa,GAAGA,aAAa,CAACO,MAAd,CAAqB,qBAArB,EAA4CA,MAA5C,CAAmDL,sBAAnD,CAAhB;;;IAEJ,OAAOF,aAAP;GAvDR;;EAAA;AAAA;;ICGaW,yBAAb;EAGI;IADA,eAAA,GAAa,oBAAb;IAEI,KAAKC,YAAL,GAAoB,IAAI7B,WAAJ,EAApB;;;EAJR;;EAAA,OAQI8B,OARJ,GAQI,iBAAQC,MAAR;IACI,OAAO,KAAKF,YAAL,CAAkBjB,IAAlB,WAAgD,KAAKoB,UAArD,2BAAsFD,MAAtF,CAAP;GATR;;EAAA;AAAA;;ACIA,IAAME,SAAS,GAAG,SAAZA,SAAY,CAACC,KAAD;;;EAEd,gBAAyBC,cAAQ,CAAS,EAAT,CAAjC;MAAOC,KAAP;MAAcC,OAAd;;EACA,IAAMN,MAAM,GAAGO,YAAM,EAArB;EACA,IAAMC,WAAW,GAAGD,YAAM,CAAW,EAAX,CAA1B;EACA,IAAME,UAAU,GAAGF,YAAM,CAAW,EAAX,CAAzB;EACA,IAAMG,UAAU,GAAGH,YAAM,CAAS,CAAT,CAAzB;;EACA,iBAA4BH,cAAQ,CAAU,KAAV,CAApC;MAAOO,MAAP;MAAeC,SAAf;;EACA,iBAAkCR,cAAQ,CAAU,KAAV,CAA1C;MAAOS,SAAP;MAAkBC,YAAlB;;EACA,IAAMC,YAAY,GAAGR,YAAM,CAAU,KAAV,CAA3B;EACA,IAAMS,YAAY,GAAGT,YAAM,CAAU,KAAV,CAA3B;;EACA,iBAAwBH,cAAQ,CAAgB;IAC5Ca,MAAM,EAAE,EADoC;IAE5CC,OAAO,EAAE;GAFmB,CAAhC;MAAOC,IAAP;MAAaC,OAAb;;EAIA,IAAMC,aAAa,GAAGd,YAAM,CAAC,IAAD,CAA5B;EAEAe,eAAS,CAAC;;;IACNC,UAAU,CAAC;MACPF,aAAa,CAACG,OAAd,GAAwB,KAAxB;MACAC,UAAU;KAFJ,EAGP,GAHO,CAAV;IAIAzB,MAAM,CAACwB,OAAP,GAAiBrB,KAAK,CAACH,MAAvB;IACA,iBAAAG,KAAK,CAACH,MAAN,gEAAc0B,QAAd,CAAuBC,SAAvB,CAAiC,UAAAC,CAAC;MAC9BC,WAAW;KADf;GANK,EASN,EATM,CAAT;EAUAP,eAAS,CAAC;IAENO,WAAW;GAFN,EAKN,EALM,CAAT;;EAOA,IAAMA,WAAW,GAAG,SAAdA,WAAc;IAChB,IAAIC,yBAAyB,GAAG,IAAIjC,yBAAJ,EAAhC;IACAiC,yBAAyB,CAAC/B,OAA1B,CAAkCC,MAAM,CAACwB,OAAzC,EAAmEO,IAAnE,CAAwE,UAAAC,MAAM;MAC1EC,OAAO,CAACD,MAAM,CAACE,IAAR,CAAP;MACA,IAAMA,IAAI,GAAGC,eAAe,CAACH,MAAM,CAACE,IAAR,CAA5B;MACAd,OAAO,CAACc,IAAD,CAAP;MACAnB,YAAY,CAACS,OAAb,GAAuB,IAAvB;MACAR,YAAY,CAACQ,OAAb,GAAuB,KAAvB;MACAC,UAAU;KANd,EAOG,UAAApB,KAAK;;;MACJ+B,OAAO,CAACC,GAAR,CAAY,OAAZ,EAAqBhC,KAArB;MACA,IAAIA,KAAJ,aAAIA,KAAJ,kCAAIA,KAAK,CAAEiC,QAAX,oEAAI,gBAAiBJ,IAArB,iDAAI,qBAAuBK,YAA3B,EACIjC,OAAO,CAACD,KAAD,aAACA,KAAD,2CAACA,KAAK,CAAEiC,QAAR,8EAAC,iBAAiBJ,IAAlB,0DAAC,sBAAuBK,YAAxB,CAAP,CADJ,KAGIjC,OAAO,CAACD,KAAK,CAACmC,OAAP,CAAP;MACJzB,YAAY,CAACS,OAAb,GAAuB,IAAvB;MACAR,YAAY,CAACQ,OAAb,GAAuB,IAAvB;MACAC,UAAU;KAfd;GAFJ;;EAoBA,IAAMQ,OAAO,GAAG,SAAVA,OAAU,CAACQ,KAAD;IACZ,IAAIC,WAAW,GAAa,EAA5B;IACA,IAAIC,UAAU,GAAa,EAA3B;;IACA,qDAA4BF,KAA5B,wCAAmC;MAAA,IAAxBG,aAAwB;MAC/BF,WAAW,CAACG,IAAZ,CAAiBD,aAAa,CAACE,cAA/B;;;IAGJ,sDAA4BL,KAA5B,2CAAmC;MAAA,IAAxBG,cAAwB;;MAC/B,sDAAoBA,cAAa,CAACG,mBAAlC,2CAAuD;QAAA,IAA5CC,KAA4C;QACnDL,UAAU,CAACE,IAAX,CAAgBG,KAAK,CAACC,SAAtB;;;MAEJ;;;IAGJzC,WAAW,CAACgB,OAAZ,GAAsBkB,WAAtB;IACAjC,UAAU,CAACe,OAAX,GAAqBmB,UAArB;GAfJ;;EAkBA,IAAMlB,UAAU,GAAG,SAAbA,UAAa;IACf,IAAIV,YAAY,CAACS,OAAb,IAAwB,CAACH,aAAa,CAACG,OAAvC,IAAkD,CAACR,YAAY,CAACQ,OAApE,EAA6E;MACzEZ,SAAS,CAAC,IAAD,CAAT;MACAE,YAAY,CAAC,KAAD,CAAZ;;;IAGJ,IAAIC,YAAY,CAACS,OAAb,IAAwB,CAACH,aAAa,CAACG,OAAvC,IAAkDR,YAAY,CAACQ,OAAnE,EAA4E;MACxEZ,SAAS,CAAC,KAAD,CAAT;MACAE,YAAY,CAAC,IAAD,CAAZ;;GARR;;EAaA,IAAMoC,WAAW,GAAG,SAAdA,WAAc,CAACC,MAAD;IAGhB,IAAIlC,MAAM,GAAQ,EAAlB;IACA,IAAImC,UAAU,GAAQ,EAAtB;;IACA,IAAID,MAAM,IAAIA,MAAM,CAAC,CAAD,CAApB,EAAyB;MACrBlC,MAAM,GAAGkC,MAAM,CAACE,GAAP,CAAW,UAAAzB,CAAC;QACjB,OAAO;UAAEM,IAAI,EAAEN,CAAC,CAACmB,mBAAF,CAAsBM,GAAtB,CAA0B,UAAAC,CAAC;YAAA,OAAIA,CAAC,CAACC,KAAN;WAA3B;SAAf;OADK,CAAT;MAIAH,UAAU,GAAGD,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC4B,KAAN;OAAnC,CAAb;;;IAGJ,OAAO;MAEHvC,MAAM,EAAEA,MAFL;MAGHC,OAAO,EAAE;QACLuC,KAAK,EAAE;UACHC,MAAM,EAAE,GADL;UAEHC,IAAI,EAAE,MAFH;UAGHC,IAAI,EAAE;YACFC,OAAO,EAAE;WAJV;UAMHC,MAAM,EAAE;YACJC,KAAK,EAAEC;WAPR;UASHC,OAAO,EAAE;YACLC,KAAK,EAAE;cACHC,QAAQ,EAAE;;;SAZjB;QAgBLC,UAAU,EAAE;UACRP,OAAO,EAAE;SAjBR;QAmBLQ,MAAM,EAAE;UACJC,KAAK,EAAE;SApBN;QAsBLC,KAAK,EAAE;UACHC,IAAI,EAAE,EADH;UAEHC,KAAK,EAAE;SAxBN;QA0BLC,IAAI,EAAE;UACFC,GAAG,EAAE;YACDC,MAAM,EAAE,CAAC,SAAD,EAAY,aAAZ,CADP;YAEDC,OAAO,EAAE;;SA7BZ;QAgCLC,KAAK,EAAE;UACH1B,UAAU,EAAEA;SAjCX;QAmCL2B,MAAM,EAAE;UACJP,IAAI,EAAE;;;KAvClB;GAbJ;;EA4DA,IAAMQ,UAAU,GAAG,SAAbA,UAAa,CAAC7B,MAAD;IACf,IAAIlC,MAAM,GAAQ,CAAC;MACfiB,IAAI,EAAE;KADQ,CAAlB;IAGA,IAAIkB,UAAU,GAAQ,EAAtB;;IACA,IAAID,MAAM,IAAIA,MAAM,CAAC,CAAD,CAApB,EAAyB;MACrBlC,MAAM,GAAGkC,MAAM,CAACE,GAAP,CAAW,UAAAzB,CAAC;QACjB,OAAO;UAAEM,IAAI,EAAEN,CAAC,CAACmB,mBAAF,CAAsBM,GAAtB,CAA0B,UAAAC,CAAC;YAAA,OAAIA,CAAC,CAACC,KAAN;WAA3B;SAAf;OADK,CAAT;MAIAH,UAAU,GAAGD,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC4B,KAAN;OAAnC,CAAb;;;IAEJ,OAAO;MACHvC,MAAM,EAAEA,MADL;MAGHC,OAAO,EAAE;QACLuC,KAAK,EAAE;UACHE,IAAI,EAAE,KADH;UAEHD,MAAM,EAAE,GAFL;UAGHI,MAAM,EAAE;YACJE,kBAAkB,EAAEA;WAJrB;UAMHC,OAAO,EAAE;YACLC,KAAK,EAAE;cACHC,QAAQ,EAAE;;;SATjB;QAaLc,WAAW,EAAE;UACTC,GAAG,EAAE;YACDC,UAAU,EAAE,IADX;YAEDf,UAAU,EAAE;cACRgB,QAAQ,EAAE;;;SAjBjB;QAsBLhB,UAAU,EAAE;UACRP,OAAO,EAAE,KADD;UAERwB,OAAO,EAAE,CAAC,CAFF;UAGRC,KAAK,EAAE;YACHC,QAAQ,EAAE,MADP;YAEHX,MAAM,EAAE,CAAC,MAAD;;SA3BX;QA8BLP,MAAM,EAAE;UACJmB,IAAI,EAAE,IADF;UAEJC,KAAK,EAAE,CAFH;UAGJb,MAAM,EAAE,CAAC,MAAD;SAjCP;QAmCLc,OAAO,EAAE;UACLC,MAAM,EAAE,IADH;UAELC,SAAS,EAAE;SArCV;QAuCLd,KAAK,EAAE;UACH1B,UAAU,EAAEA;SAxCX;QA2CL2B,MAAM,EAAE;UACJP,IAAI,EAAE;;;KA/ClB;GAZJ;;EAmEA,IAAMqB,UAAU,GAAG,SAAbA,UAAa,CAAC1C,MAAD;IAEf,IAAIlC,MAAM,GAAQ,EAAlB;IACA,IAAI6E,MAAM,GAAQ,EAAlB;;IACA,IAAI3C,MAAM,IAAIA,MAAM,CAAC,CAAD,CAApB,EAAyB;MACrBlC,MAAM,GAAGkC,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC2B,KAAN;OAAnC,CAAT;MACAuC,MAAM,GAAG3C,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC4B,KAAN;OAAnC,CAAT;;;IAEJ,IAAIoB,MAAM,GAAGmB,YAAY,CAACD,MAAM,CAACpI,MAAR,CAAzB;IAEA,OAAO;MAEHuD,MAAM,EAAEA,MAFL;MAGHC,OAAO,EAAE;QACLuC,KAAK,EAAE;UACHE,IAAI,EAAE,KADH;UAEHG,MAAM,EAAE;YACJE,kBAAkB,EAAEA;WAHrB;UAKHC,OAAO,EAAE;YACLC,KAAK,EAAE;cACHC,QAAQ,EAAE;;;SARjB;QAYL2B,MAAM,EAAEA,MAZH;QAaLlB,MAAM,EAACA,MAbF;QAcLc,OAAO,EAAC;UACJM,eAAe,EAAC;SAff;QAiBLjB,MAAM,EAAE;UACJP,IAAI,EAAE;;;KArBlB;GAVJ;;EAyCA,IAAMuB,YAAY,GAAG,SAAfA,YAAe,CAACE,KAAD;IACjBvF,UAAU,CAACc,OAAX,GAAqByE,KAArB;IACA,IAAIrB,MAAM,GAAU,EAApB;IACAsB,qBAAqB,CAACtB,MAAD,EAAS,CAAT,EAAY,GAAZ,EAAiB,EAAjB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IACJsB,qBAAqB,CAACtB,MAAD,EAAS,EAAT,EAAa,GAAb,EAAkB,EAAlB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IACJsB,qBAAqB,CAACtB,MAAD,EAAS,CAAT,EAAY,EAAZ,EAAgB,EAAhB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IACJsB,qBAAqB,CAACtB,MAAD,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IACJsB,qBAAqB,CAACtB,MAAD,EAAS,CAAT,EAAY,EAAZ,EAAgB,EAAhB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IACJsB,qBAAqB,CAACtB,MAAD,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IAEJ,OAAOuB,SAAP;GAtBJ;;EA0BA,IAAMD,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACtB,MAAD,EAAgBwB,UAAhB,EAAoCC,CAApC,EAA+CC,CAA/C;IAC1B,KAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoB7F,UAAU,CAACc,OAAX,GAAqB,CAArB,IAA0B+E,KAAK,GAAG,EAAtD,EAA0DA,KAAK,EAA/D,EAAmE;MAC/D,IAAIC,KAAK,aAAUJ,UAAU,GAAGG,KAAK,GAAG,EAA/B,aAAwCF,CAAxC,UAA8CC,CAA9C,OAAT;MACA1B,MAAM,CAAC/B,IAAP,CAAY2D,KAAZ;MACA9F,UAAU,CAACc,OAAX;;GAJR;;EAOA,IAAMiF,YAAY,GAAG,SAAfA,YAAe,CAACtD,MAAD;IACjB,IAAIlC,MAAM,GAAU,EAApB;IACA,IAAI6E,MAAM,GAAU,EAApB;;IACA,IAAI3C,MAAM,IAAIA,MAAM,CAAC,CAAD,CAApB,EAAyB;MACrBlC,MAAM,GAAGkC,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC2B,KAAN;OAAnC,CAAT;MACAuC,MAAM,GAAG3C,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC4B,KAAN;OAAnC,CAAT;;;IAYJ,IAAIoB,MAAM,GAAGmB,YAAY,CAACD,MAAM,CAACpI,MAAR,CAAzB;IACA,IAAIsE,MAAM,GAAqC;MAE3Cf,MAAM,EAAEA,MAFmC;MAG3CC,OAAO,EAAE;QACLuC,KAAK,EAAE;UACHgC,KAAK,EAAE,GADJ;UAEH9B,IAAI,EAAE,OAFH;UAGHG,MAAM,EAAE;YACJE,kBAAkB,EAAEA;WAJrB;UAMHC,OAAO,EAAE;YACLC,KAAK,EAAE;cACHC,QAAQ,EAAE;;;SATjB;QAaLC,UAAU,EAAE;UACRP,OAAO,EAAE;SAdR;QAgBL6C,UAAU,EAAE,CAAC;UACTC,UAAU,EAAE,GADH;UAETzF,OAAO,EAAE;YACLuC,KAAK,EAAE;cACHgC,KAAK,EAAE;aAFN;YAILmB,MAAM,EAAE;cACJpB,IAAI,EAAE;;;SAPN,CAhBP;QA2BLoB,MAAM,EAAE;UACJxB,QAAQ,EAAE,OADN;UAEJyB,OAAO,EAAE,CAFL;UAGJnD,MAAM,EAAE;SA9BP;QAgCLoC,MAAM,EAAEA,MAhCH;QAiCLlB,MAAM,EAACA,MAjCF;QAkCLc,OAAO,EAAC;UACJM,eAAe,EAAC;SAnCf;QAqCLjB,MAAM,EAAE;UACJP,IAAI,EAAE;;;KAzClB;IAgDA,OAAOxC,MAAP;GAlEJ;;EAqEA,IAAM8E,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAC3D,MAAD;IACrBA,MAAM,CAAC4D,OAAP,CAAe,UAAAC,OAAO;MAClBA,OAAO,CAACjE,mBAAR,CAA4BgE,OAA5B,CAAoC,UAAAE,KAAK;QACrC,IAAI,CAACA,KAAK,CAACzD,KAAP,IAAgByD,KAAK,CAACzD,KAAN,IAAe,EAAnC,EACIyD,KAAK,CAACzD,KAAN,GAAc,aAAd;OAFR;KADJ;GADJ;;EAYA,IAAMQ,kBAAkB,GAAG,SAArBA,kBAAqB,CAACpC,CAAD,EAAS6B,KAAT,EAAsBvC,OAAtB;IACvBf,KAAK,CAAC+G,iBAAN,CAAwB;MACpBjE,SAAS,EAAExC,UAAU,CAACe,OAAX,CAAmBN,OAAO,CAACiG,cAA3B,CADS;MAEpBrE,cAAc,EAAEtC,WAAW,CAACgB,OAAZ,CAAoBN,OAAO,CAACkG,WAA5B,CAFI;MAGpBC,MAAM,EAAElH,KAAK,CAACH;KAHlB;GADJ;;EAQA,IAAMmC,eAAe,GAAG,SAAlBA,eAAkB,CAACgB,MAAD;;;IACpB2D,gBAAgB,CAAC3D,MAAD,CAAhB;;IACA,0BAAQhD,KAAK,CAACH,MAAd,mDAAQ,eAAcsH,QAAtB;MACI,KAAK,KAAL;QACI,OAAOtC,UAAU,CAAC7B,MAAD,CAAjB;;MAEJ,KAAK,MAAL;QACI,OAAOD,WAAW,CAACC,MAAD,CAAlB;;MAEJ,KAAK,KAAL;QACI,OAAO0C,UAAU,CAAC1C,MAAD,CAAjB;;MAEJ,KAAK,OAAL;QACI,OAAOsD,YAAY,CAACtD,MAAD,CAAnB;;;IAKR,OAAO6B,UAAU,CAAC7B,MAAD,CAAjB;GAlBJ;;EAqBA,OACI,CAACxC,MAAD,IAAW,CAACE,SAAZ,GACI0G,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,CAACE,+BAAD;IAAiBnC,KAAK,EAAE;MAAEG,KAAK,EAAE,OAAT;MAAkB/B,MAAM,EAAE;;IAAWgE,WAAW,EAAC;IAAIC,iBAAiB,EAAC;GAA/F,CADJ,CADJ,GAKIhH,MAAM,GACF4G,4BAAA,CAACK,cAAD;IACI1G,OAAO,EAAEC,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAED;IACfD,MAAM,EAAEE,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEF;IACd0C,IAAI,oBAAExD,KAAK,CAACH,MAAR,mDAAE,eAAcsH;IACpB5D,MAAM,EAAE;IACR+B,KAAK,EAAE;GALX,CADE,GASA8B,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACID,4BAAA,MAAA;IAAK9B,KAAK,EAAE;IAAKoC,GAAG,EAAE;GAAtB,CADJ,EAEIN,4BAAA,OAAA;IAAMC,SAAS,EAAC;GAAhB,EAAkCnH,KAAlC,CAFJ,CADF,CAfd;AA0BH,CAtaD;;ACQA,IAAMyH,UAAU,GAAG,SAAbA,UAAa,CAAC3H,KAAD,EAAyB4H,KAAzB;;;EACjB,IAAMC,aAAa,GAAGzH,YAAM,CAAe,IAAf,CAA5B;;EAGA,IAAM0H,UAAU,GAAG,SAAbA,UAAa;;;IACjB,yBAAAD,aAAa,CAACxG,OAAd,gFAAuB0G,IAAvB;IACA/H,KAAK,CAACgI,cAAN,CAAqBhI,KAAK,CAACH,MAA3B;GAFF;;EAMA,OACEuH,4BAAA,MAAA;IAAKC,SAAS,EAAC;IAAQY,GAAG,EAAEjI,KAAK,CAACkI,EAAN,CAAShJ;GAArC,EACEkI,4BAAA,SAAA,MAAA,EACEA,4BAAA,KAAA,MAAA,EAAK,kBAAApH,KAAK,CAACH,MAAN,gEAAcsI,KAAd,KAAuB,SAA5B,CADF,EAGInI,KAAK,CAACoI,YAAN,GACAhB,4BAAA,CAACiB,aAAD;IACEC,IAAI,EAAC;IACLjB,SAAS,EAAC;IACVkB,OAAO,EAAE,iBAAC9G,CAAD;MAAA;;MAAA,iCAAOoG,aAAa,CAACxG,OAArB,2DAAO,uBAAuBmH,MAAvB,CAA8B/G,CAA9B,CAAP;;GAHX,CADA,GAME,IATN,EAaE2F,4BAAA,CAACqB,yBAAD;IAAcC,GAAG,EAAEb;IAAeR,SAAS,EAAC;GAA5C,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKmB,OAAO,EAAET;GAAd,UAAA,CADF,EAEEV,4BAAA,MAAA;IAAKmB,OAAO,EAAE;MAAA;;MAAA,OAAMvI,KAAK,CAAC2I,gBAAN,mBAAuB3I,KAAK,CAACH,MAA7B,mDAAuB,eAAcoI,GAArC,CAAN;;GAAd,UAAA,CAFF,CADF,CAbF,CADF,EAsBEb,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,CAACrH,SAAD;IAAWF,MAAM,EAAEG,KAAK,CAACH;IAAQkH,iBAAiB,EAAE/G,KAAK,CAAC+G;GAA1D,CADF,CAtBF,CADF;AA4BD,CAtCD;;ACMA,IAAM6B,yBAAyB,GAAGC,6BAAa,CAACC,0BAAD,CAA/C;AACA;AAUA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC/I,KAAD;EAGxB,IAAMgJ,OAAO,GAAGC,KAAK,CAACxL,IAAN,CAAW;IAAEF,MAAM,EAAE;GAArB,EAA2B2L,IAA3B,CAAgC,IAAhC,CAAhB;EACA,IAAMC,2BAA2B,GAAG,EAApC;;EAEA,gBAA8BlJ,cAAQ,CAAU;IAAEmJ,EAAE,EAAE;GAAhB,CAAtC;MAAOC,OAAP;MAAgBC,UAAhB;;EACA,iBAAwDrJ,cAAQ,CAACgJ,KAAK,CAACxL,IAAN,CAAW;IAAEF,MAAM,EAAE4L;GAArB,EAAoDD,IAApD,CAAyD,IAAzD,CAAD,CAAhE;MAAOK,oBAAP;MAA6BC,uBAA7B;;EACA,iBAAsCvJ,cAAQ,CAAC,IAAD,CAA9C;MAAOwJ,WAAP;MAAoBC,cAApB;;EACA,iBAAoCzJ,cAAQ,CAA4B+F,SAA5B,CAA5C;MAAO2D,UAAP;;EACA,iBAAwC1J,cAAQ,CAAC,KAAD,CAAhD;MAAOmI,YAAP;MAAqBwB,eAArB;;EAEA,iBAA8B3J,cAAQ,CAA0B;IAAEmJ,EAAE,EAAE;GAAhC,CAAtC;MAAOS,OAAP;MAAgBC,UAAhB;;EACA,IAAMC,mBAAmB,GAAG3J,YAAM,CAAM,IAAN,CAAlC;EAGAe,eAAS,CAAC;IACR6I,UAAU,CAAChK,KAAK,CAACiK,aAAP,CAAV;IACAhI,OAAO,CAACC,GAAR,CAAY,uBAAZ,EAAoClC,KAAK,CAACiK,aAA1C;IAEAjK,KAAK,CAACkK,WAAN,CAAkBC,YAAlB,CAA+B3I,SAA/B,CAAyC,UAAA4I,YAAY;MACnD,IAAIvK,MAAM,GAAGgK,OAAO,CAACT,EAAR,CAAWiB,IAAX,CAAgB,UAAA5I,CAAC;QAAA,OAAEA,CAAC,CAACwG,GAAF,IAASmC,YAAY,CAACnC,GAAxB;OAAjB,CAAb;;MACA,IAAGpI,MAAH,EAAU;QACRlD,KAAK,CAACa,GAAN,CAAU4M,YAAV,EAAuBvK,MAAvB;QACAA,MAAM,CAAC0B,QAAP,CAAgB+I,IAAhB,CAAqB,IAArB;;KAJJ;GAJO,EAYN,CAACtK,KAAK,CAACiK,aAAP,CAZM,CAAT;;EAcA,IAAMD,UAAU,GAAG,SAAbA,UAAa,CAACO,gBAAD;IACjBb,cAAc,CAAC,IAAD,CAAd;IACA,IAAIc,MAAM,GAAGC,YAAY,CAACF,gBAAD,CAAzB;IACAjB,UAAU,CAACkB,MAAD,CAAV;IACAV,UAAU,CAACS,gBAAD,CAAV;GAJF;;EAOA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAACF,gBAAD;IACnB,IAAIC,MAAM,GAAQ;MAAEpB,EAAE,EAAE;KAAxB;IACAmB,gBAAgB,CAACnB,EAAjB,CAAoBlG,GAApB,CAAwB,UAAAwH,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAN;KAAzB,EAAiD/D,OAAjD,CAAyD,UAAAnF,CAAC;MACxD+I,MAAM,CAACpB,EAAP,CAAU1G,IAAV,CAAejB,CAAf;KADF;IAGA,OAAO+I,MAAP;GALF;;EAOArJ,eAAS,CAAC;IACRyI,eAAe,CAAC5J,KAAK,CAAC4K,QAAP,CAAf;IACA3I,OAAO,CAACC,GAAR,CAAY,mCAAZ;GAFO,EAGN,CAAClC,KAAK,CAAC4K,QAAP,CAHM,CAAT;;EAmBA,SAASC,eAAT,CAAwBL,MAAxB,EAAqCM,cAArC;IACE,IAAIrB,WAAJ,EAAiB;MACfC,cAAc,CAAC,KAAD,CAAd;MACA;;;IAEFJ,UAAU,CAACwB,cAAD,CAAV;IACAC,2BAA2B;IAC3B/K,KAAK,CAAC6K,cAAN,CAAqBC,cAArB;;;EAGF,SAASE,WAAT,CAAqBC,EAArB;IACE,IAAIC,UAAU,GAAG;MAAE9B,EAAE,EAAEC,OAAO,CAACD,EAAR,CAAW+B,MAAX,CAAkB,UAAA1J,CAAC;QAAA,OAAIA,CAAC,CAACvC,CAAF,IAAO+L,EAAX;OAAnB;KAAvB;IAEA3B,UAAU,CAAC4B,UAAD,CAAV;IAEA,IAAIE,UAAU,GAAG;MAAEhC,EAAE,EAAES,OAAO,CAACT,EAAR,CAAW+B,MAAX,CAAkB,UAAA1J,CAAC;QAAA,OAAIA,CAAC,CAACwG,GAAF,IAASgD,EAAb;OAAnB;KAAvB;IACAnB,UAAU,CAACsB,UAAD,CAAV;IACApL,KAAK,CAAC6K,cAAN,CAAqBK,UAArB;;;EAGF,SAASpD,UAAT,CAAoBjI,MAApB;IACEA,MAAM,CAACwL,WAAP,GAAqB,QAArB;IACArL,KAAK,CAACsL,cAAN,CAAqBzL,MAArB;;;EAIF,SAASkL,2BAAT;IACE,IAAIQ,UAAU,GAAGxB,mBAAmB,CAAC1I,OAArC;IACA,IAAI,CAACkK,UAAL,EACE;IACFtJ,OAAO,CAACC,GAAR,CAAY,0BAAZ,EAAwCqJ,UAAxC;IACA,IAAMC,iBAAiB,GAAGD,UAAU,CAACE,UAAX,CAAsBpK,OAAtB,CAA8BqK,YAAxD;IAEA,IAAIC,kBAAkB,GAAGC,IAAI,CAACC,KAAL,CAAWL,iBAAiB,GAAGM,eAAe,CAACC,SAA/C,CAAzB;IACAJ,kBAAkB,GAAGA,kBAAkB,GAAGxC,2BAArB,GAAmDA,2BAAnD,GAAiFwC,kBAAtG;IACAnC,uBAAuB,CAACP,KAAK,CAACxL,IAAN,CAAW;MAAEF,MAAM,EAAEoO;KAArB,EAA2CzC,IAA3C,CAAgD,IAAhD,CAAD,CAAvB;IACAjH,OAAO,CAACC,GAAR,CAAY,0BAAZ,EAAwCyJ,kBAAxC;;;EAEF,OAAQvE,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACND,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EAIED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACGe,YAAY,GAAGmB,oBAAoB,CAACrG,GAArB,CAAyB,UAACzB,CAAD,EAAIvC,CAAJ;IAAA,OACvC8J,OAAO,CAAC9F,GAAR,CAAY,UAACzB,CAAD,EAAIvC,CAAJ;MAAA,OACVkI,4BAAA,MAAA;QAAKa,GAAG,EAAE/I;QACRiG,KAAK,EAAE;UACL5B,MAAM,EAAEuI,eAAe,CAACC;;OAF5B,CADU;KAAZ,CADuC;GAAzB,CAAH,GAST,IAVN,CADF,EAeE3E,4BAAA,CAACwB,yBAAD;IAA2BF,GAAG,EAAEqB;KAC1B+B;IACJzC,OAAO,EAAEA;IACT2C,WAAW,EAAC;IACZC,WAAW,EAAE7D;IACb8D,WAAW,EAAE9D;IACb+D,aAAa,EAAE;MAAA,OAAMpB,2BAA2B,EAAjC;;IACfF,cAAc,EAAE,wBAACL,MAAD,EAASnB,OAAT;MAAA,OACdwB,eAAc,CAACL,MAAD,EAASnB,OAAT,CADA;;IAPlB,EAWGQ,OAAO,CAACT,EAAR,CAAWlG,GAAX,CAAe,UAACrD,MAAD;IAAA;;IAAA,OAEduH,4BAAA,MAAA;MAAKa,GAAG,oBAAEpI,MAAM,CAAC8K,MAAT,mDAAE,eAAezL;KAAzB,EACEkI,4BAAA,CAACO,UAAD;MACES,YAAY,EAAEA;MACdH,GAAG,qBAAEpI,MAAM,CAAC8K,MAAT,oDAAE,gBAAezL;MACpBW,MAAM,EAAEA;MACRqI,EAAE,EAAErI;MACJ8J,UAAU,EAAEA;MACZ3B,cAAc,EAAEF;MAChBa,gBAAgB,EAAEqC;MAClBjE,iBAAiB,EAAE/G,KAAK,CAAC+G;KAR3B,CADF,CAFc;GAAf,CAXH,CAfF,CADF,CAJF,CADM,CAAR;AA+DD,CApKD;;AAuKA,AAAO,IAAM+E,eAAe,GAAG;EAC7BC,SAAS,EAAE,EADkB;EAE7B1E,SAAS,EAAE,QAFkB;EAG7B+E,IAAI,EAAE;IAAEhD,EAAE,EAAE,EAAN;IAAUiD,EAAE,EAAE,CAAd;IAAiBC,EAAE,EAAE,CAArB;IAAwBC,EAAE,EAAE,CAA5B;IAA+BC,GAAG,EAAE;GAHb;EAI7BC,gBAAgB,EAAE;AAJW,CAAxB;;AC5KP,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAC1M,KAAD;;;EAChB,gBAAgDC,cAAQ,CAA6B;IAAEmJ,EAAE,EAAE;GAAnC,CAAxD;EAKA,IAAMa,aAAa,GAAG7J,YAAM,CAA0B;IAAEgJ,EAAE,EAAE;GAAhC,CAA5B;;EACA,iBAAoDnJ,cAAQ,CAA0B;IAAEmJ,EAAE,EAAE;GAAhC,CAA5D;MAAOuD,kBAAP;MAA2BC,qBAA3B;;EACA,iBAAwC3M,cAAQ,CAAU,KAAV,CAAhD;MAAOmI,YAAP;MAAqByE,eAArB;;EACA1L,eAAS,CAAC;IACRnB,KAAK,CAACkK,WAAN,CAAkB4C,YAAlB,CAA+BtL,SAA/B,CAAyC,UAAA6H,OAAO;MAC9CpH,OAAO,CAACC,GAAR,CAAY,uCAAZ,EAAoDmH,OAApD;MACAY,aAAa,CAAC5I,OAAd,GAAwBgI,OAAxB;MACAuD,qBAAqB,cAAK3C,aAAa,CAAC5I,OAAnB,EAArB;KAHF;IAMArB,KAAK,CAACkK,WAAN,CAAkB6C,cAAlB,CAAiCvL,SAAjC,CAA2C,UAAAC,CAAC;MAC1CoL,eAAe,CAACpL,CAAD,CAAf;KADF;IAGAzB,KAAK,CAACkK,WAAN,CAAkB8C,WAAlB,CAA8BxL,SAA9B,CAAwC,UAAAkJ,CAAC;MACvCT,aAAa,CAAC5I,OAAd,CAAsB+H,EAAtB,CAAyB1G,IAAzB,CAA8BgI,CAA9B;MACAzI,OAAO,CAACC,GAAR,CAAY,iDAAZ,EAA8D+H,aAAa,CAAC5I,OAA5E;MAEAuL,qBAAqB,cAAK3C,aAAa,CAAC5I,OAAnB,EAArB;KAJF;GAVO,EAkBN,EAlBM,CAAT;EAuBA,IAAI,CAAArB,KAAK,SAAL,IAAAA,KAAK,WAAL,4BAAAA,KAAK,CAAE7B,KAAP,8DAAcZ,MAAd,IAAuB,CAA3B,EACEsB,YAAY,CAACoO,OAAb,CAAqB,OAArB,EAA8BjN,KAA9B,aAA8BA,KAA9B,uBAA8BA,KAAK,CAAE7B,KAArC;;EAyDF,IAAM+O,aAAa,GAAG,SAAhBA,aAAgB,CAAC7D,OAAD;IACpBpH,OAAO,CAACC,GAAR,CAAY,kCAAZ,EAAgDmH,OAAhD;IACA,IAAI8D,UAAU,GAA8B,EAA5C;IACAvP,MAAM,CAACD,IAAP,CAAY0L,OAAZ,EAAqBzC,OAArB,CAA6B,UAAAwG,QAAQ;MACnC,IAAI/D,OAAO,CAAC+D,QAAD,CAAP,CAAkB7P,MAAlB,GAA2B,CAA/B,EAAkC;QAChC8L,OAAO,CAAC+D,QAAD,CAAP,CAAkBlK,GAAlB,CAAsB,UAAAsH,MAAM;UAC1B2C,UAAU,CAAC3C,MAAM,CAACtL,CAAR,CAAV,GAAuBsL,MAAvB;SADF;QAGA;;KALJ;IAQAP,aAAa,CAAC5I,OAAd,CAAsB+H,EAAtB,CAAyBxC,OAAzB,CAAiC,UAAA/G,MAAM;MACrC,IAAIsN,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAAd,EAA4B;QAC1BpI,MAAM,CAACwN,cAAP,GAA2BF,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAAV,CAAuBqF,CAAlD,SAAuDH,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAAV,CAAuBsF,CAA9E;QACA1N,MAAM,CAAC2N,WAAP,GAAwBL,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAAV,CAAuByC,CAA/C,SAAoDyC,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAAV,CAAuBwF,CAA3E;QACA5N,MAAM,CAAC8K,MAAP,GAAgBwC,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAA1B;;KAJJ;IASAhG,OAAO,CAACC,GAAR,CAAY,qBAAZ,EAAmC+H,aAAnC;IACAjK,KAAK,CAAC0N,eAAN,CAAsBzD,aAAa,CAAC5I,OAApC;GArBF;;EA0BA,OACE+F,mBAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,mBAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,mBAAA,CAAC2B,iBAAD;IAAmBhC,iBAAiB,EAAE/G,KAAK,CAAC+G;IAAmBkD,aAAa,EAAE0C;IAAoBzC,WAAW,EAAElK,KAAK,CAACkK;IAAaU,QAAQ,EAAExC;IAAcyC,cAAc,EAAEqC;IAAe5B,cAAc,EAAE,wBAACzL,MAAD;MAAA,OAA2BG,KAAK,CAACsL,cAAN,CAAqBzL,MAArB,CAA3B;;GAAzM,CADF,CADF,CADF;AAQD,CA5HD;;;;"}
@@ -79,6 +79,20 @@ var Tools = /*#__PURE__*/function () {
79
79
  return logitude_url;
80
80
  };
81
81
 
82
+ Tools.Map = function Map(from, to) {
83
+ if (!from) return;
84
+ if (!to) to = {};
85
+ var keys = Object.keys(to);
86
+
87
+ for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {
88
+ var k = _keys[_i];
89
+
90
+ if (from[k]) {
91
+ to[k] = from[k];
92
+ }
93
+ }
94
+ };
95
+
82
96
  return Tools;
83
97
  }();
84
98
 
@@ -176,12 +190,13 @@ var DashboardAnalyticsService = /*#__PURE__*/function () {
176
190
  }();
177
191
 
178
192
  var ApexChart = function ApexChart(props) {
179
- var _props$widget, _props$widget2, _props$widget3, _props$widget5;
193
+ var _props$widget3;
180
194
 
181
195
  var _useState = useState(''),
182
196
  error = _useState[0],
183
197
  setEror = _useState[1];
184
198
 
199
+ var widget = useRef();
185
200
  var MeasuresIds = useRef([]);
186
201
  var GroupByIds = useRef([]);
187
202
  var GroupCount = useRef(0);
@@ -206,15 +221,24 @@ var ApexChart = function ApexChart(props) {
206
221
 
207
222
  var isLoadingDrow = useRef(true);
208
223
  useEffect(function () {
224
+ var _props$widget;
225
+
209
226
  setTimeout(function () {
210
227
  isLoadingDrow.current = false;
211
228
  updateView();
212
229
  }, 500);
230
+ widget.current = props.widget;
231
+ (_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.onChange.subscribe(function (e) {
232
+ RefreshData();
233
+ });
213
234
  }, []);
214
235
  useEffect(function () {
215
- console.log('useEffect ApexChart', props.widget);
236
+ RefreshData();
237
+ }, []);
238
+
239
+ var RefreshData = function RefreshData() {
216
240
  var dashboardAnalyticsService = new DashboardAnalyticsService();
217
- dashboardAnalyticsService.getData(props.widget).then(function (result) {
241
+ dashboardAnalyticsService.getData(widget.current).then(function (result) {
218
242
  fillIds(result.data);
219
243
  var data = getChartOptions(result.data);
220
244
  serArgs(data);
@@ -230,7 +254,7 @@ var ApexChart = function ApexChart(props) {
230
254
  hasDataError.current = true;
231
255
  updateView();
232
256
  });
233
- }, [(_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.EntityId, (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Filters, (_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.WidgetMeasures]);
257
+ };
234
258
 
235
259
  var fillIds = function fillIds(datas) {
236
260
  var measuresIds = [];
@@ -542,11 +566,11 @@ var ApexChart = function ApexChart(props) {
542
566
  };
543
567
 
544
568
  var getChartOptions = function getChartOptions(values) {
545
- var _props$widget4;
569
+ var _props$widget2;
546
570
 
547
571
  handelNullLabels(values);
548
572
 
549
- switch ((_props$widget4 = props.widget) === null || _props$widget4 === void 0 ? void 0 : _props$widget4.TypeCode) {
573
+ switch ((_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.TypeCode) {
550
574
  case 'bar':
551
575
  return barOptoins(values);
552
576
 
@@ -575,7 +599,7 @@ var ApexChart = function ApexChart(props) {
575
599
  })) : isView ? React__default.createElement(ReactApexChart, {
576
600
  options: args === null || args === void 0 ? void 0 : args.options,
577
601
  series: args === null || args === void 0 ? void 0 : args.series,
578
- type: (_props$widget5 = props.widget) === null || _props$widget5 === void 0 ? void 0 : _props$widget5.TypeCode,
602
+ type: (_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.TypeCode,
579
603
  height: "100%",
580
604
  width: "100%"
581
605
  }) : React__default.createElement("div", {
@@ -675,6 +699,16 @@ var DashboardDesigner = function DashboardDesigner(props) {
675
699
  useEffect(function () {
676
700
  FillLayout(props.Widgetlayouts);
677
701
  console.log('DashboardDesigner => ', props.Widgetlayouts);
702
+ props.dataBinding.onEditWidget.subscribe(function (Editedwidget) {
703
+ var widget = widgets.lg.find(function (e) {
704
+ return e.key == Editedwidget.key;
705
+ });
706
+
707
+ if (widget) {
708
+ Tools.Map(Editedwidget, widget);
709
+ widget.onChange.next(true);
710
+ }
711
+ });
678
712
  }, [props.Widgetlayouts]);
679
713
 
680
714
  var FillLayout = function FillLayout(dashboardLayouts) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n \r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const MeasuresIds = useRef<string[]>([]);\r\n const GroupByIds = useRef<string[]>([]);\r\n const GroupCount = useRef<number>(0);\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n }, [])\r\n useEffect(() => {\r\n console.log('useEffect ApexChart', props.widget);\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n\r\n\r\n }, [props.widget?.EntityId, props.widget?.Filters, props.widget?.WidgetMeasures]);\r\n\r\n const fillIds = (datas: SeriesMeasure[]) => {\r\n var measuresIds: string[] = [];\r\n var groupByIds: string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n\r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n\r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\r\n\r\n }\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const lineOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var colors = CreateColors(labels.length);\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n colors:colors,\r\n tooltip:{\r\n fillSeriesColor:false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const CreateColors = (count: number): any[] | undefined => {\r\n GroupCount.current = count;\r\n var colors: any[] = [];\r\n CreateDifferentColors(colors, 0, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n\r\n return undefined;\r\n\r\n\r\n }\r\n const CreateDifferentColors = (colors: any[], startAngle: number, s: number, v: number) => {\r\n for (let index = 0; GroupCount.current > 0 && index < 12; index++) {\r\n var color = `hsl(${startAngle + index * 30}deg ${s}% ${v}%)`;\r\n colors.push(color);\r\n GroupCount.current--;\r\n }\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any[] = [];\r\n var labels: any[] = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n // var ll = labels.length;\r\n // for (let index = 0; index < ll; index++) {\r\n // series[index] = 100;\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT');\r\n // }\r\n // for (let index = 0; index < ll; index++) {\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT2');\r\n // }\r\n }\r\n var colors = CreateColors(labels.length);\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n colors:colors,\r\n tooltip:{\r\n fillSeriesColor:false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.forEach(element => {\r\n element.SeriesMeasureVulues.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId: MeasuresIds.current[options.seriesIndex],\r\n Widget: props.widget\r\n })\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]): ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n \r\n\r\n const editWidget = ()=>{\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n {\r\n props.isInEditMode ? \r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n /> \r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n <ApexChart widget={props.widget} onSelectDataPoint={props.onSelectDataPoint} />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n // const layoutsRef = useRef<Layouts>({ lg: [] });\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n // const widgetsRef = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n console.log('DashboardDesigner => ',props.Widgetlayouts)\r\n // props.dataBinding.onAddWidget.subscribe(e => {\r\n // // layoutsRef.current['lg'].push(e.Layout as Layout);\r\n // // widgetsRef.current.lg.push(e);\r\n // // setWidgets(widgetsRef.current);\r\n // // setLayouts(layoutsRef.current);\r\n\r\n\r\n // })\r\n\r\n // props.dataBinding.onGetLayouts.subscribe(dashboardLayouts => {\r\n // FillLayout(dashboardLayouts);\r\n // })\r\n\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n setFirstChange(true);\r\n var layout = createLayout(dashboardLayouts);\r\n setLayouts(layout);\r\n // layoutsRef.current = layout;\r\n // widgetsRef.current = dashboardLayouts;\r\n setWidgets(dashboardLayouts);\r\n // console.log('layoutsRef.current', layoutsRef.current)\r\n // console.log('widgetsRef.current', widgetsRef.current)\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n console.log(' setisInEditMode(props.editMode);')\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n console.log('setplaceholderRowsArray(', gridLayout);\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n console.log('setplaceholderRowsArray(', newPlaceholderRows);\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget:ReactWidgetPM) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const [reactDashboardPM, setReactDashboardPM] = useState<{ lg: ReactDashboardPM[] }>({ lg: [] });\r\n\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n console.log(\"index > dataBinding.onGetLayouts = > \",layouts)\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState({...Widgetlayouts.current});\r\n\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e=>{\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w=>{\r\n Widgetlayouts.current.lg.push(w);\r\n console.log(\"index > after add dataBinding.onGetLayouts = > \",Widgetlayouts.current)\r\n\r\n setWidgetlayoutsState({...Widgetlayouts.current});\r\n });\r\n \r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n // const EditDashBoard = () => {\r\n // props.openAddEditDashboard(currentDashbord);\r\n // dashboardMoreButtonToggle?.current?.hide();\r\n\r\n // }\r\n // const addWidget = (widgetCode) => {\r\n // var position = EvaluateNewWidgetPosition();\r\n // props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n // }\r\n\r\n // const editLayout = () => {\r\n // setIsInEditMode(true);\r\n // setHasChanges(false);\r\n // dashboardMoreButtonToggle?.current?.hide();\r\n\r\n // setBeforEditDashbord(deepClone(currentDashbord));\r\n // }\r\n // const save = () => {\r\n // setIsInEditMode(false)\r\n // console.log('onSaveDashboard > ', currentDashbord)\r\n // props.onSaveDashboard(currentDashbord);\r\n // onHide();\r\n\r\n // setHasChanges(false);;\r\n // }\r\n\r\n // const cancelSave = () => {\r\n // if (!hasChanges) {\r\n // setIsInEditMode(false);\r\n // setHasChanges(false);\r\n\r\n // } else {\r\n // setCancelConfirmDialog(true);\r\n // }\r\n\r\n\r\n // }\r\n\r\n // const dontSave = () => {\r\n // setHasChanges(false)\r\n // setIsInEditMode(false);\r\n // props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n // setCancelConfirmDialog(false);\r\n // }\r\n // const changeDashboard = (event) => {\r\n // if (event.value == currentDashbord?.Id)\r\n // return;\r\n // var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n // props.onChangeDashboard(dasboard);\r\n // props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n // }\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n }\r\n\r\n });\r\n \r\n console.log('after update widget', Widgetlayouts)\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n\r\n \r\n return (\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} Widgetlayouts={widgetlayoutsState} dataBinding={props.dataBinding} editMode={isInEditMode} onLayoutChange={updateWidgets} openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","error","setEror","MeasuresIds","useRef","GroupByIds","GroupCount","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","console","log","dashboardAnalyticsService","then","result","fillIds","data","getChartOptions","response","ErrorMessage","message","EntityId","Filters","WidgetMeasures","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","e","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","CreateColors","fillSeriesColor","count","CreateDifferentColors","undefined","startAngle","s","v","index","color","donutOptoins","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","onSelectDataPoint","dataPointIndex","seriesIndex","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","dateFilter","setisInEditMode","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dashboardLayouts","layout","createLayout","w","Layout","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","dataBinding","onGetLayouts","subscribe","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","StartPotistion","x","y","EndPosition","h","onChangeLayouts"],"mappings":"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"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Tools {\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(to);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n \r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const widget = useRef<ReactWidgetPM>();\r\n const MeasuresIds = useRef<string[]>([]);\r\n const GroupByIds = useRef<string[]>([]);\r\n const GroupCount = useRef<number>(0);\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n widget.current = props.widget;\r\n props.widget?.onChange.subscribe(e=>{\r\n RefreshData();\r\n })\r\n }, [])\r\n useEffect(() => {\r\n \r\n RefreshData();\r\n\r\n\r\n }, []);\r\n\r\n const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(widget.current as ReactWidgetPM).then(result => {\r\n fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n }\r\n const fillIds = (datas: SeriesMeasure[]) => {\r\n var measuresIds: string[] = [];\r\n var groupByIds: string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n\r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n\r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\r\n\r\n }\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const lineOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var colors = CreateColors(labels.length);\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n colors:colors,\r\n tooltip:{\r\n fillSeriesColor:false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const CreateColors = (count: number): any[] | undefined => {\r\n GroupCount.current = count;\r\n var colors: any[] = [];\r\n CreateDifferentColors(colors, 0, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n\r\n return undefined;\r\n\r\n\r\n }\r\n const CreateDifferentColors = (colors: any[], startAngle: number, s: number, v: number) => {\r\n for (let index = 0; GroupCount.current > 0 && index < 12; index++) {\r\n var color = `hsl(${startAngle + index * 30}deg ${s}% ${v}%)`;\r\n colors.push(color);\r\n GroupCount.current--;\r\n }\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any[] = [];\r\n var labels: any[] = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n // var ll = labels.length;\r\n // for (let index = 0; index < ll; index++) {\r\n // series[index] = 100;\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT');\r\n // }\r\n // for (let index = 0; index < ll; index++) {\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT2');\r\n // }\r\n }\r\n var colors = CreateColors(labels.length);\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n colors:colors,\r\n tooltip:{\r\n fillSeriesColor:false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.forEach(element => {\r\n element.SeriesMeasureVulues.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId: MeasuresIds.current[options.seriesIndex],\r\n Widget: props.widget\r\n })\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]): ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n \r\n\r\n const editWidget = ()=>{\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n {\r\n props.isInEditMode ? \r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n /> \r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n <ApexChart widget={props.widget} onSelectDataPoint={props.onSelectDataPoint} />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { Tools } from \"../../services/tools\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n // const layoutsRef = useRef<Layouts>({ lg: [] });\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n // const widgetsRef = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n console.log('DashboardDesigner => ',props.Widgetlayouts)\r\n \r\n props.dataBinding.onEditWidget.subscribe(Editedwidget => {\r\n var widget = widgets.lg.find(e=>e.key == Editedwidget.key);\r\n if(widget){\r\n Tools.Map(Editedwidget,widget);\r\n widget.onChange.next(true);\r\n }\r\n })\r\n\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n setFirstChange(true);\r\n var layout = createLayout(dashboardLayouts);\r\n setLayouts(layout);\r\n setWidgets(dashboardLayouts);\r\n \r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n console.log(' setisInEditMode(props.editMode);')\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n console.log('setplaceholderRowsArray(', gridLayout);\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n console.log('setplaceholderRowsArray(', newPlaceholderRows);\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget:ReactWidgetPM) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const [reactDashboardPM, setReactDashboardPM] = useState<{ lg: ReactDashboardPM[] }>({ lg: [] });\r\n\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n console.log(\"index > dataBinding.onGetLayouts = > \",layouts)\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState({...Widgetlayouts.current});\r\n\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e=>{\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w=>{\r\n Widgetlayouts.current.lg.push(w);\r\n console.log(\"index > after add dataBinding.onGetLayouts = > \",Widgetlayouts.current)\r\n\r\n setWidgetlayoutsState({...Widgetlayouts.current});\r\n });\r\n \r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n // const EditDashBoard = () => {\r\n // props.openAddEditDashboard(currentDashbord);\r\n // dashboardMoreButtonToggle?.current?.hide();\r\n\r\n // }\r\n // const addWidget = (widgetCode) => {\r\n // var position = EvaluateNewWidgetPosition();\r\n // props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n // }\r\n\r\n // const editLayout = () => {\r\n // setIsInEditMode(true);\r\n // setHasChanges(false);\r\n // dashboardMoreButtonToggle?.current?.hide();\r\n\r\n // setBeforEditDashbord(deepClone(currentDashbord));\r\n // }\r\n // const save = () => {\r\n // setIsInEditMode(false)\r\n // console.log('onSaveDashboard > ', currentDashbord)\r\n // props.onSaveDashboard(currentDashbord);\r\n // onHide();\r\n\r\n // setHasChanges(false);;\r\n // }\r\n\r\n // const cancelSave = () => {\r\n // if (!hasChanges) {\r\n // setIsInEditMode(false);\r\n // setHasChanges(false);\r\n\r\n // } else {\r\n // setCancelConfirmDialog(true);\r\n // }\r\n\r\n\r\n // }\r\n\r\n // const dontSave = () => {\r\n // setHasChanges(false)\r\n // setIsInEditMode(false);\r\n // props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n // setCancelConfirmDialog(false);\r\n // }\r\n // const changeDashboard = (event) => {\r\n // if (event.value == currentDashbord?.Id)\r\n // return;\r\n // var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n // props.onChangeDashboard(dasboard);\r\n // props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n // }\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n }\r\n\r\n });\r\n \r\n console.log('after update widget', Widgetlayouts)\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n\r\n \r\n return (\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} Widgetlayouts={widgetlayoutsState} dataBinding={props.dataBinding} editMode={isInEditMode} onLayoutChange={updateWidgets} openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","error","setEror","useRef","MeasuresIds","GroupByIds","GroupCount","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","onChange","subscribe","e","RefreshData","dashboardAnalyticsService","then","result","fillIds","data","getChartOptions","console","log","response","ErrorMessage","message","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","CreateColors","fillSeriesColor","count","CreateDifferentColors","undefined","startAngle","s","v","index","color","donutOptoins","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","onSelectDataPoint","dataPointIndex","seriesIndex","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","dateFilter","setisInEditMode","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dataBinding","onEditWidget","Editedwidget","find","next","dashboardLayouts","layout","createLayout","w","Layout","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","StartPotistion","x","y","EndPosition","h","onChangeLayouts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAaA,KAAb;EAAA;;EAAA,MACkBC,cADlB,GACW;IAEH,IAAIC,YAAY,GAAGC,QAAQ,CAACC,IAAT,CAAcC,OAAd,CAAsB,YAAtB,EAAoC,EAApC,CAAnB;;IAEA,IAAIF,QAAQ,CAACC,IAAT,CAAcE,OAAd,CAAsB,WAAtB,IAAqC,CAAC,CAA1C,EAA6C;MACzCJ,YAAY,GAAG,uBAAf;KADJ,MAIK;MACD,IAAIK,MAAM,GAAGJ,QAAQ,CAACC,IAAT,CAAcI,KAAd,CAAoB,aAApB,CAAb;MACA,IAAIC,GAAG,GAAGF,MAAM,CAAC,CAAD,CAAhB;MACAE,GAAG,GAAGA,GAAG,CAACJ,OAAJ,CAAYI,GAAG,CAACC,SAAJ,CAAcD,GAAG,CAACE,WAAJ,CAAgB,GAAhB,CAAd,EAAoCF,GAAG,CAACG,MAAxC,CAAZ,EAA6D,EAA7D,CAAN;MACAV,YAAY,GAAGO,GAAf;;;IAGJ,OAAOP,YAAP;GAhBR;;EAAA,MAmBkBW,GAnBlB,GAmBW,aAAWC,IAAX,EAAsBC,EAAtB;IACH,IAAI,CAACD,IAAL,EACI;IACJ,IAAI,CAACC,EAAL,EACIA,EAAE,GAAG,EAAL;IACJ,IAAIC,IAAI,GAAGC,MAAM,CAACD,IAAP,CAAYD,EAAZ,CAAX;;IACA,yBAAgBC,IAAhB,2BAAsB;MAAjB,IAAME,CAAC,YAAP;;MACD,IAAGJ,IAAI,CAACI,CAAD,CAAP,EAAW;QACPH,EAAE,CAACG,CAAD,CAAF,GAAQJ,IAAI,CAACI,CAAD,CAAZ;;;GA3BhB;;EAAA;AAAA;;ICMaC,WAAb;EAEI;IACI,KAAKC,OAAL,GAAepB,KAAK,CAACC,cAAN,EAAf;;;EAHR;;EAAA,OAKIoB,YALJ,GAKI,sBAAgBC,GAAhB,EAAoBC,OAApB;IAEI,IAAIC,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACAI,MAAM,GAAG,KAAKC,kBAAL,CAAwBJ,OAAxB,EAAiCG,MAAjC,CAAT;IAEM,OAAOE,KAAK,CAACC,GAAN,CAAwBH,MAAxB,EAAgC;MAAEI,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAA1F,CAAP;GAXR;;EAAA,OAaIK,GAbJ,GAaI,aAAOP,GAAP;IAEI,IAAIE,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACM,OAAOM,KAAK,CAACC,GAAN,CAAaH,MAAb,EAAqB;MAAEI,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAA/E,CAAP;GAjBR;;EAAA,OAmBIO,IAnBJ,GAmBI,cAAQT,GAAR,EAAYU,IAAZ;IACI,IAAIR,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACM,OAAOM,KAAK,CAACG,IAAN,CAAcL,MAAd,EAAqBM,IAArB,EAA2B;MAAEF,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAArF,CAAP;GAtBR;;EAAA,OAyBIC,mBAzBJ,GAyBI;IACI,OAAOQ,MAAM,CAACC,YAAP,CAAoBC,OAApB,CAA4B,OAA5B,KAAwC,EAA/C;GA1BR;;EAAA,OA4BYR,kBA5BZ,GA4BY,4BAAmBJ,OAAnB,EAA6Ca,aAA7C;IAEJ,IAAIC,MAAM,GAAGpB,MAAM,CAACD,IAAP,CAAYO,OAAZ,CAAb;IACA,IAAIe,sBAAsB,GAAkB,IAA5C;;IAEA,KAAK,IAAIC,CAAT,IAAcF,MAAd,EAAsB;MAClB,IAAIG,QAAQ,GAAGH,MAAM,CAACE,CAAD,CAArB;MACA,IAAIE,SAAS,GAAGlB,OAAO,CAACiB,QAAD,CAAvB;MACA,IAAIE,YAAY,GAAKF,QAAQ,CAAClC,OAAT,CAAiB,UAAjB,IAA+B,CAA/B,IAAoCmC,SAAS,IAAI,QAAlD,IAA+DD,QAAQ,IAAI,mBAA/F;;MAEA,IAAIJ,aAAa,IAAI,GAArB,EAA0B;QACtBA,aAAa,GAAGA,aAAa,CAACO,MAAd,CAAqB,GAArB,CAAhB;;;MAGJ,IAAI,CAACD,YAAL,EAAmB;QACfD,SAAS,GAAGA,SAAS,GAAGG,kBAAkB,CAACH,SAAD,CAArB,GAAmC,EAAxD;QACAL,aAAa,GAAGA,aAAa,CAACO,MAAd,CAAqBH,QAAQ,CAACG,MAAT,CAAgB,GAAhB,EAAqBA,MAArB,CAA4BF,SAA5B,CAArB,CAAhB;;;MAGJ,IAAID,QAAQ,IAAI,mBAAZ,IAAmCC,SAAS,CAAC7B,MAAV,GAAmB,CAA1D,EAA6D;QACzD0B,sBAAsB,GAAGO,IAAI,CAACC,SAAL,CAAeL,SAAf,CAAzB;;;;IAIR,IAAIH,sBAAJ,EAA4B;MACxBF,aAAa,GAAGA,aAAa,CAACO,MAAd,CAAqB,qBAArB,EAA4CA,MAA5C,CAAmDL,sBAAnD,CAAhB;;;IAEJ,OAAOF,aAAP;GAvDR;;EAAA;AAAA;;ICGaW,yBAAb;EAGI;IADA,eAAA,GAAa,oBAAb;IAEI,KAAKC,YAAL,GAAoB,IAAI7B,WAAJ,EAApB;;;EAJR;;EAAA,OAQI8B,OARJ,GAQI,iBAAQC,MAAR;IACI,OAAO,KAAKF,YAAL,CAAkBjB,IAAlB,WAAgD,KAAKoB,UAArD,2BAAsFD,MAAtF,CAAP;GATR;;EAAA;AAAA;;ACIA,IAAME,SAAS,GAAG,SAAZA,SAAY,CAACC,KAAD;;;EAEd,gBAAyBC,QAAQ,CAAS,EAAT,CAAjC;MAAOC,KAAP;MAAcC,OAAd;;EACA,IAAMN,MAAM,GAAGO,MAAM,EAArB;EACA,IAAMC,WAAW,GAAGD,MAAM,CAAW,EAAX,CAA1B;EACA,IAAME,UAAU,GAAGF,MAAM,CAAW,EAAX,CAAzB;EACA,IAAMG,UAAU,GAAGH,MAAM,CAAS,CAAT,CAAzB;;EACA,iBAA4BH,QAAQ,CAAU,KAAV,CAApC;MAAOO,MAAP;MAAeC,SAAf;;EACA,iBAAkCR,QAAQ,CAAU,KAAV,CAA1C;MAAOS,SAAP;MAAkBC,YAAlB;;EACA,IAAMC,YAAY,GAAGR,MAAM,CAAU,KAAV,CAA3B;EACA,IAAMS,YAAY,GAAGT,MAAM,CAAU,KAAV,CAA3B;;EACA,iBAAwBH,QAAQ,CAAgB;IAC5Ca,MAAM,EAAE,EADoC;IAE5CC,OAAO,EAAE;GAFmB,CAAhC;MAAOC,IAAP;MAAaC,OAAb;;EAIA,IAAMC,aAAa,GAAGd,MAAM,CAAC,IAAD,CAA5B;EAEAe,SAAS,CAAC;;;IACNC,UAAU,CAAC;MACPF,aAAa,CAACG,OAAd,GAAwB,KAAxB;MACAC,UAAU;KAFJ,EAGP,GAHO,CAAV;IAIAzB,MAAM,CAACwB,OAAP,GAAiBrB,KAAK,CAACH,MAAvB;IACA,iBAAAG,KAAK,CAACH,MAAN,gEAAc0B,QAAd,CAAuBC,SAAvB,CAAiC,UAAAC,CAAC;MAC9BC,WAAW;KADf;GANK,EASN,EATM,CAAT;EAUAP,SAAS,CAAC;IAENO,WAAW;GAFN,EAKN,EALM,CAAT;;EAOA,IAAMA,WAAW,GAAG,SAAdA,WAAc;IAChB,IAAIC,yBAAyB,GAAG,IAAIjC,yBAAJ,EAAhC;IACAiC,yBAAyB,CAAC/B,OAA1B,CAAkCC,MAAM,CAACwB,OAAzC,EAAmEO,IAAnE,CAAwE,UAAAC,MAAM;MAC1EC,OAAO,CAACD,MAAM,CAACE,IAAR,CAAP;MACA,IAAMA,IAAI,GAAGC,eAAe,CAACH,MAAM,CAACE,IAAR,CAA5B;MACAd,OAAO,CAACc,IAAD,CAAP;MACAnB,YAAY,CAACS,OAAb,GAAuB,IAAvB;MACAR,YAAY,CAACQ,OAAb,GAAuB,KAAvB;MACAC,UAAU;KANd,EAOG,UAAApB,KAAK;;;MACJ+B,OAAO,CAACC,GAAR,CAAY,OAAZ,EAAqBhC,KAArB;MACA,IAAIA,KAAJ,aAAIA,KAAJ,kCAAIA,KAAK,CAAEiC,QAAX,oEAAI,gBAAiBJ,IAArB,iDAAI,qBAAuBK,YAA3B,EACIjC,OAAO,CAACD,KAAD,aAACA,KAAD,2CAACA,KAAK,CAAEiC,QAAR,8EAAC,iBAAiBJ,IAAlB,0DAAC,sBAAuBK,YAAxB,CAAP,CADJ,KAGIjC,OAAO,CAACD,KAAK,CAACmC,OAAP,CAAP;MACJzB,YAAY,CAACS,OAAb,GAAuB,IAAvB;MACAR,YAAY,CAACQ,OAAb,GAAuB,IAAvB;MACAC,UAAU;KAfd;GAFJ;;EAoBA,IAAMQ,OAAO,GAAG,SAAVA,OAAU,CAACQ,KAAD;IACZ,IAAIC,WAAW,GAAa,EAA5B;IACA,IAAIC,UAAU,GAAa,EAA3B;;IACA,qDAA4BF,KAA5B,wCAAmC;MAAA,IAAxBG,aAAwB;MAC/BF,WAAW,CAACG,IAAZ,CAAiBD,aAAa,CAACE,cAA/B;;;IAGJ,sDAA4BL,KAA5B,2CAAmC;MAAA,IAAxBG,cAAwB;;MAC/B,sDAAoBA,cAAa,CAACG,mBAAlC,2CAAuD;QAAA,IAA5CC,KAA4C;QACnDL,UAAU,CAACE,IAAX,CAAgBG,KAAK,CAACC,SAAtB;;;MAEJ;;;IAGJzC,WAAW,CAACgB,OAAZ,GAAsBkB,WAAtB;IACAjC,UAAU,CAACe,OAAX,GAAqBmB,UAArB;GAfJ;;EAkBA,IAAMlB,UAAU,GAAG,SAAbA,UAAa;IACf,IAAIV,YAAY,CAACS,OAAb,IAAwB,CAACH,aAAa,CAACG,OAAvC,IAAkD,CAACR,YAAY,CAACQ,OAApE,EAA6E;MACzEZ,SAAS,CAAC,IAAD,CAAT;MACAE,YAAY,CAAC,KAAD,CAAZ;;;IAGJ,IAAIC,YAAY,CAACS,OAAb,IAAwB,CAACH,aAAa,CAACG,OAAvC,IAAkDR,YAAY,CAACQ,OAAnE,EAA4E;MACxEZ,SAAS,CAAC,KAAD,CAAT;MACAE,YAAY,CAAC,IAAD,CAAZ;;GARR;;EAaA,IAAMoC,WAAW,GAAG,SAAdA,WAAc,CAACC,MAAD;IAGhB,IAAIlC,MAAM,GAAQ,EAAlB;IACA,IAAImC,UAAU,GAAQ,EAAtB;;IACA,IAAID,MAAM,IAAIA,MAAM,CAAC,CAAD,CAApB,EAAyB;MACrBlC,MAAM,GAAGkC,MAAM,CAACE,GAAP,CAAW,UAAAzB,CAAC;QACjB,OAAO;UAAEM,IAAI,EAAEN,CAAC,CAACmB,mBAAF,CAAsBM,GAAtB,CAA0B,UAAAC,CAAC;YAAA,OAAIA,CAAC,CAACC,KAAN;WAA3B;SAAf;OADK,CAAT;MAIAH,UAAU,GAAGD,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC4B,KAAN;OAAnC,CAAb;;;IAGJ,OAAO;MAEHvC,MAAM,EAAEA,MAFL;MAGHC,OAAO,EAAE;QACLuC,KAAK,EAAE;UACHC,MAAM,EAAE,GADL;UAEHC,IAAI,EAAE,MAFH;UAGHC,IAAI,EAAE;YACFC,OAAO,EAAE;WAJV;UAMHC,MAAM,EAAE;YACJC,KAAK,EAAEC;WAPR;UASHC,OAAO,EAAE;YACLC,KAAK,EAAE;cACHC,QAAQ,EAAE;;;SAZjB;QAgBLC,UAAU,EAAE;UACRP,OAAO,EAAE;SAjBR;QAmBLQ,MAAM,EAAE;UACJC,KAAK,EAAE;SApBN;QAsBLC,KAAK,EAAE;UACHC,IAAI,EAAE,EADH;UAEHC,KAAK,EAAE;SAxBN;QA0BLC,IAAI,EAAE;UACFC,GAAG,EAAE;YACDC,MAAM,EAAE,CAAC,SAAD,EAAY,aAAZ,CADP;YAEDC,OAAO,EAAE;;SA7BZ;QAgCLC,KAAK,EAAE;UACH1B,UAAU,EAAEA;SAjCX;QAmCL2B,MAAM,EAAE;UACJP,IAAI,EAAE;;;KAvClB;GAbJ;;EA4DA,IAAMQ,UAAU,GAAG,SAAbA,UAAa,CAAC7B,MAAD;IACf,IAAIlC,MAAM,GAAQ,CAAC;MACfiB,IAAI,EAAE;KADQ,CAAlB;IAGA,IAAIkB,UAAU,GAAQ,EAAtB;;IACA,IAAID,MAAM,IAAIA,MAAM,CAAC,CAAD,CAApB,EAAyB;MACrBlC,MAAM,GAAGkC,MAAM,CAACE,GAAP,CAAW,UAAAzB,CAAC;QACjB,OAAO;UAAEM,IAAI,EAAEN,CAAC,CAACmB,mBAAF,CAAsBM,GAAtB,CAA0B,UAAAC,CAAC;YAAA,OAAIA,CAAC,CAACC,KAAN;WAA3B;SAAf;OADK,CAAT;MAIAH,UAAU,GAAGD,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC4B,KAAN;OAAnC,CAAb;;;IAEJ,OAAO;MACHvC,MAAM,EAAEA,MADL;MAGHC,OAAO,EAAE;QACLuC,KAAK,EAAE;UACHE,IAAI,EAAE,KADH;UAEHD,MAAM,EAAE,GAFL;UAGHI,MAAM,EAAE;YACJE,kBAAkB,EAAEA;WAJrB;UAMHC,OAAO,EAAE;YACLC,KAAK,EAAE;cACHC,QAAQ,EAAE;;;SATjB;QAaLc,WAAW,EAAE;UACTC,GAAG,EAAE;YACDC,UAAU,EAAE,IADX;YAEDf,UAAU,EAAE;cACRgB,QAAQ,EAAE;;;SAjBjB;QAsBLhB,UAAU,EAAE;UACRP,OAAO,EAAE,KADD;UAERwB,OAAO,EAAE,CAAC,CAFF;UAGRC,KAAK,EAAE;YACHC,QAAQ,EAAE,MADP;YAEHX,MAAM,EAAE,CAAC,MAAD;;SA3BX;QA8BLP,MAAM,EAAE;UACJmB,IAAI,EAAE,IADF;UAEJC,KAAK,EAAE,CAFH;UAGJb,MAAM,EAAE,CAAC,MAAD;SAjCP;QAmCLc,OAAO,EAAE;UACLC,MAAM,EAAE,IADH;UAELC,SAAS,EAAE;SArCV;QAuCLd,KAAK,EAAE;UACH1B,UAAU,EAAEA;SAxCX;QA2CL2B,MAAM,EAAE;UACJP,IAAI,EAAE;;;KA/ClB;GAZJ;;EAmEA,IAAMqB,UAAU,GAAG,SAAbA,UAAa,CAAC1C,MAAD;IAEf,IAAIlC,MAAM,GAAQ,EAAlB;IACA,IAAI6E,MAAM,GAAQ,EAAlB;;IACA,IAAI3C,MAAM,IAAIA,MAAM,CAAC,CAAD,CAApB,EAAyB;MACrBlC,MAAM,GAAGkC,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC2B,KAAN;OAAnC,CAAT;MACAuC,MAAM,GAAG3C,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC4B,KAAN;OAAnC,CAAT;;;IAEJ,IAAIoB,MAAM,GAAGmB,YAAY,CAACD,MAAM,CAACpI,MAAR,CAAzB;IAEA,OAAO;MAEHuD,MAAM,EAAEA,MAFL;MAGHC,OAAO,EAAE;QACLuC,KAAK,EAAE;UACHE,IAAI,EAAE,KADH;UAEHG,MAAM,EAAE;YACJE,kBAAkB,EAAEA;WAHrB;UAKHC,OAAO,EAAE;YACLC,KAAK,EAAE;cACHC,QAAQ,EAAE;;;SARjB;QAYL2B,MAAM,EAAEA,MAZH;QAaLlB,MAAM,EAACA,MAbF;QAcLc,OAAO,EAAC;UACJM,eAAe,EAAC;SAff;QAiBLjB,MAAM,EAAE;UACJP,IAAI,EAAE;;;KArBlB;GAVJ;;EAyCA,IAAMuB,YAAY,GAAG,SAAfA,YAAe,CAACE,KAAD;IACjBvF,UAAU,CAACc,OAAX,GAAqByE,KAArB;IACA,IAAIrB,MAAM,GAAU,EAApB;IACAsB,qBAAqB,CAACtB,MAAD,EAAS,CAAT,EAAY,GAAZ,EAAiB,EAAjB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IACJsB,qBAAqB,CAACtB,MAAD,EAAS,EAAT,EAAa,GAAb,EAAkB,EAAlB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IACJsB,qBAAqB,CAACtB,MAAD,EAAS,CAAT,EAAY,EAAZ,EAAgB,EAAhB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IACJsB,qBAAqB,CAACtB,MAAD,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IACJsB,qBAAqB,CAACtB,MAAD,EAAS,CAAT,EAAY,EAAZ,EAAgB,EAAhB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IACJsB,qBAAqB,CAACtB,MAAD,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,CAArB;IACA,IAAIlE,UAAU,CAACc,OAAX,IAAsB,CAA1B,EACI,OAAOoD,MAAP;IAEJ,OAAOuB,SAAP;GAtBJ;;EA0BA,IAAMD,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACtB,MAAD,EAAgBwB,UAAhB,EAAoCC,CAApC,EAA+CC,CAA/C;IAC1B,KAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoB7F,UAAU,CAACc,OAAX,GAAqB,CAArB,IAA0B+E,KAAK,GAAG,EAAtD,EAA0DA,KAAK,EAA/D,EAAmE;MAC/D,IAAIC,KAAK,aAAUJ,UAAU,GAAGG,KAAK,GAAG,EAA/B,aAAwCF,CAAxC,UAA8CC,CAA9C,OAAT;MACA1B,MAAM,CAAC/B,IAAP,CAAY2D,KAAZ;MACA9F,UAAU,CAACc,OAAX;;GAJR;;EAOA,IAAMiF,YAAY,GAAG,SAAfA,YAAe,CAACtD,MAAD;IACjB,IAAIlC,MAAM,GAAU,EAApB;IACA,IAAI6E,MAAM,GAAU,EAApB;;IACA,IAAI3C,MAAM,IAAIA,MAAM,CAAC,CAAD,CAApB,EAAyB;MACrBlC,MAAM,GAAGkC,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC2B,KAAN;OAAnC,CAAT;MACAuC,MAAM,GAAG3C,MAAM,CAAC,CAAD,CAAN,CAAUJ,mBAAV,CAA8BM,GAA9B,CAAkC,UAAAzB,CAAC;QAAA,OAAIA,CAAC,CAAC4B,KAAN;OAAnC,CAAT;;;IAYJ,IAAIoB,MAAM,GAAGmB,YAAY,CAACD,MAAM,CAACpI,MAAR,CAAzB;IACA,IAAIsE,MAAM,GAAqC;MAE3Cf,MAAM,EAAEA,MAFmC;MAG3CC,OAAO,EAAE;QACLuC,KAAK,EAAE;UACHgC,KAAK,EAAE,GADJ;UAEH9B,IAAI,EAAE,OAFH;UAGHG,MAAM,EAAE;YACJE,kBAAkB,EAAEA;WAJrB;UAMHC,OAAO,EAAE;YACLC,KAAK,EAAE;cACHC,QAAQ,EAAE;;;SATjB;QAaLC,UAAU,EAAE;UACRP,OAAO,EAAE;SAdR;QAgBL6C,UAAU,EAAE,CAAC;UACTC,UAAU,EAAE,GADH;UAETzF,OAAO,EAAE;YACLuC,KAAK,EAAE;cACHgC,KAAK,EAAE;aAFN;YAILmB,MAAM,EAAE;cACJpB,IAAI,EAAE;;;SAPN,CAhBP;QA2BLoB,MAAM,EAAE;UACJxB,QAAQ,EAAE,OADN;UAEJyB,OAAO,EAAE,CAFL;UAGJnD,MAAM,EAAE;SA9BP;QAgCLoC,MAAM,EAAEA,MAhCH;QAiCLlB,MAAM,EAACA,MAjCF;QAkCLc,OAAO,EAAC;UACJM,eAAe,EAAC;SAnCf;QAqCLjB,MAAM,EAAE;UACJP,IAAI,EAAE;;;KAzClB;IAgDA,OAAOxC,MAAP;GAlEJ;;EAqEA,IAAM8E,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAC3D,MAAD;IACrBA,MAAM,CAAC4D,OAAP,CAAe,UAAAC,OAAO;MAClBA,OAAO,CAACjE,mBAAR,CAA4BgE,OAA5B,CAAoC,UAAAE,KAAK;QACrC,IAAI,CAACA,KAAK,CAACzD,KAAP,IAAgByD,KAAK,CAACzD,KAAN,IAAe,EAAnC,EACIyD,KAAK,CAACzD,KAAN,GAAc,aAAd;OAFR;KADJ;GADJ;;EAYA,IAAMQ,kBAAkB,GAAG,SAArBA,kBAAqB,CAACpC,CAAD,EAAS6B,KAAT,EAAsBvC,OAAtB;IACvBf,KAAK,CAAC+G,iBAAN,CAAwB;MACpBjE,SAAS,EAAExC,UAAU,CAACe,OAAX,CAAmBN,OAAO,CAACiG,cAA3B,CADS;MAEpBrE,cAAc,EAAEtC,WAAW,CAACgB,OAAZ,CAAoBN,OAAO,CAACkG,WAA5B,CAFI;MAGpBC,MAAM,EAAElH,KAAK,CAACH;KAHlB;GADJ;;EAQA,IAAMmC,eAAe,GAAG,SAAlBA,eAAkB,CAACgB,MAAD;;;IACpB2D,gBAAgB,CAAC3D,MAAD,CAAhB;;IACA,0BAAQhD,KAAK,CAACH,MAAd,mDAAQ,eAAcsH,QAAtB;MACI,KAAK,KAAL;QACI,OAAOtC,UAAU,CAAC7B,MAAD,CAAjB;;MAEJ,KAAK,MAAL;QACI,OAAOD,WAAW,CAACC,MAAD,CAAlB;;MAEJ,KAAK,KAAL;QACI,OAAO0C,UAAU,CAAC1C,MAAD,CAAjB;;MAEJ,KAAK,OAAL;QACI,OAAOsD,YAAY,CAACtD,MAAD,CAAnB;;;IAKR,OAAO6B,UAAU,CAAC7B,MAAD,CAAjB;GAlBJ;;EAqBA,OACI,CAACxC,MAAD,IAAW,CAACE,SAAZ,GACI0G,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,CAACE,eAAD;IAAiBnC,KAAK,EAAE;MAAEG,KAAK,EAAE,OAAT;MAAkB/B,MAAM,EAAE;;IAAWgE,WAAW,EAAC;IAAIC,iBAAiB,EAAC;GAA/F,CADJ,CADJ,GAKIhH,MAAM,GACF4G,4BAAA,CAACK,cAAD;IACI1G,OAAO,EAAEC,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAED;IACfD,MAAM,EAAEE,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEF;IACd0C,IAAI,oBAAExD,KAAK,CAACH,MAAR,mDAAE,eAAcsH;IACpB5D,MAAM,EAAE;IACR+B,KAAK,EAAE;GALX,CADE,GASA8B,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACID,4BAAA,MAAA;IAAK9B,KAAK,EAAE;IAAKoC,GAAG,EAAE;GAAtB,CADJ,EAEIN,4BAAA,OAAA;IAAMC,SAAS,EAAC;GAAhB,EAAkCnH,KAAlC,CAFJ,CADF,CAfd;AA0BH,CAtaD;;ACQA,IAAMyH,UAAU,GAAG,SAAbA,UAAa,CAAC3H,KAAD,EAAyB4H,KAAzB;;;EACjB,IAAMC,aAAa,GAAGzH,MAAM,CAAe,IAAf,CAA5B;;EAGA,IAAM0H,UAAU,GAAG,SAAbA,UAAa;;;IACjB,yBAAAD,aAAa,CAACxG,OAAd,gFAAuB0G,IAAvB;IACA/H,KAAK,CAACgI,cAAN,CAAqBhI,KAAK,CAACH,MAA3B;GAFF;;EAMA,OACEuH,4BAAA,MAAA;IAAKC,SAAS,EAAC;IAAQY,GAAG,EAAEjI,KAAK,CAACkI,EAAN,CAAShJ;GAArC,EACEkI,4BAAA,SAAA,MAAA,EACEA,4BAAA,KAAA,MAAA,EAAK,kBAAApH,KAAK,CAACH,MAAN,gEAAcsI,KAAd,KAAuB,SAA5B,CADF,EAGInI,KAAK,CAACoI,YAAN,GACAhB,4BAAA,CAACiB,MAAD;IACEC,IAAI,EAAC;IACLjB,SAAS,EAAC;IACVkB,OAAO,EAAE,iBAAC9G,CAAD;MAAA;;MAAA,iCAAOoG,aAAa,CAACxG,OAArB,2DAAO,uBAAuBmH,MAAvB,CAA8B/G,CAA9B,CAAP;;GAHX,CADA,GAME,IATN,EAaE2F,4BAAA,CAACqB,YAAD;IAAcC,GAAG,EAAEb;IAAeR,SAAS,EAAC;GAA5C,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKmB,OAAO,EAAET;GAAd,UAAA,CADF,EAEEV,4BAAA,MAAA;IAAKmB,OAAO,EAAE;MAAA;;MAAA,OAAMvI,KAAK,CAAC2I,gBAAN,mBAAuB3I,KAAK,CAACH,MAA7B,mDAAuB,eAAcoI,GAArC,CAAN;;GAAd,UAAA,CAFF,CADF,CAbF,CADF,EAsBEb,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,CAACrH,SAAD;IAAWF,MAAM,EAAEG,KAAK,CAACH;IAAQkH,iBAAiB,EAAE/G,KAAK,CAAC+G;GAA1D,CADF,CAtBF,CADF;AA4BD,CAtCD;;ACMA,IAAM6B,yBAAyB,GAAGC,aAAa,CAACC,UAAD,CAA/C;AACA;AAUA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC/I,KAAD;EAGxB,IAAMgJ,OAAO,GAAGC,KAAK,CAACxL,IAAN,CAAW;IAAEF,MAAM,EAAE;GAArB,EAA2B2L,IAA3B,CAAgC,IAAhC,CAAhB;EACA,IAAMC,2BAA2B,GAAG,EAApC;;EAEA,gBAA8BlJ,QAAQ,CAAU;IAAEmJ,EAAE,EAAE;GAAhB,CAAtC;MAAOC,OAAP;MAAgBC,UAAhB;;EACA,iBAAwDrJ,QAAQ,CAACgJ,KAAK,CAACxL,IAAN,CAAW;IAAEF,MAAM,EAAE4L;GAArB,EAAoDD,IAApD,CAAyD,IAAzD,CAAD,CAAhE;MAAOK,oBAAP;MAA6BC,uBAA7B;;EACA,iBAAsCvJ,QAAQ,CAAC,IAAD,CAA9C;MAAOwJ,WAAP;MAAoBC,cAApB;;EACA,iBAAoCzJ,QAAQ,CAA4B+F,SAA5B,CAA5C;MAAO2D,UAAP;;EACA,iBAAwC1J,QAAQ,CAAC,KAAD,CAAhD;MAAOmI,YAAP;MAAqBwB,eAArB;;EAEA,iBAA8B3J,QAAQ,CAA0B;IAAEmJ,EAAE,EAAE;GAAhC,CAAtC;MAAOS,OAAP;MAAgBC,UAAhB;;EACA,IAAMC,mBAAmB,GAAG3J,MAAM,CAAM,IAAN,CAAlC;EAGAe,SAAS,CAAC;IACR6I,UAAU,CAAChK,KAAK,CAACiK,aAAP,CAAV;IACAhI,OAAO,CAACC,GAAR,CAAY,uBAAZ,EAAoClC,KAAK,CAACiK,aAA1C;IAEAjK,KAAK,CAACkK,WAAN,CAAkBC,YAAlB,CAA+B3I,SAA/B,CAAyC,UAAA4I,YAAY;MACnD,IAAIvK,MAAM,GAAGgK,OAAO,CAACT,EAAR,CAAWiB,IAAX,CAAgB,UAAA5I,CAAC;QAAA,OAAEA,CAAC,CAACwG,GAAF,IAASmC,YAAY,CAACnC,GAAxB;OAAjB,CAAb;;MACA,IAAGpI,MAAH,EAAU;QACRlD,KAAK,CAACa,GAAN,CAAU4M,YAAV,EAAuBvK,MAAvB;QACAA,MAAM,CAAC0B,QAAP,CAAgB+I,IAAhB,CAAqB,IAArB;;KAJJ;GAJO,EAYN,CAACtK,KAAK,CAACiK,aAAP,CAZM,CAAT;;EAcA,IAAMD,UAAU,GAAG,SAAbA,UAAa,CAACO,gBAAD;IACjBb,cAAc,CAAC,IAAD,CAAd;IACA,IAAIc,MAAM,GAAGC,YAAY,CAACF,gBAAD,CAAzB;IACAjB,UAAU,CAACkB,MAAD,CAAV;IACAV,UAAU,CAACS,gBAAD,CAAV;GAJF;;EAOA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAACF,gBAAD;IACnB,IAAIC,MAAM,GAAQ;MAAEpB,EAAE,EAAE;KAAxB;IACAmB,gBAAgB,CAACnB,EAAjB,CAAoBlG,GAApB,CAAwB,UAAAwH,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAN;KAAzB,EAAiD/D,OAAjD,CAAyD,UAAAnF,CAAC;MACxD+I,MAAM,CAACpB,EAAP,CAAU1G,IAAV,CAAejB,CAAf;KADF;IAGA,OAAO+I,MAAP;GALF;;EAOArJ,SAAS,CAAC;IACRyI,eAAe,CAAC5J,KAAK,CAAC4K,QAAP,CAAf;IACA3I,OAAO,CAACC,GAAR,CAAY,mCAAZ;GAFO,EAGN,CAAClC,KAAK,CAAC4K,QAAP,CAHM,CAAT;;EAmBA,SAASC,eAAT,CAAwBL,MAAxB,EAAqCM,cAArC;IACE,IAAIrB,WAAJ,EAAiB;MACfC,cAAc,CAAC,KAAD,CAAd;MACA;;;IAEFJ,UAAU,CAACwB,cAAD,CAAV;IACAC,2BAA2B;IAC3B/K,KAAK,CAAC6K,cAAN,CAAqBC,cAArB;;;EAGF,SAASE,WAAT,CAAqBC,EAArB;IACE,IAAIC,UAAU,GAAG;MAAE9B,EAAE,EAAEC,OAAO,CAACD,EAAR,CAAW+B,MAAX,CAAkB,UAAA1J,CAAC;QAAA,OAAIA,CAAC,CAACvC,CAAF,IAAO+L,EAAX;OAAnB;KAAvB;IAEA3B,UAAU,CAAC4B,UAAD,CAAV;IAEA,IAAIE,UAAU,GAAG;MAAEhC,EAAE,EAAES,OAAO,CAACT,EAAR,CAAW+B,MAAX,CAAkB,UAAA1J,CAAC;QAAA,OAAIA,CAAC,CAACwG,GAAF,IAASgD,EAAb;OAAnB;KAAvB;IACAnB,UAAU,CAACsB,UAAD,CAAV;IACApL,KAAK,CAAC6K,cAAN,CAAqBK,UAArB;;;EAGF,SAASpD,UAAT,CAAoBjI,MAApB;IACEA,MAAM,CAACwL,WAAP,GAAqB,QAArB;IACArL,KAAK,CAACsL,cAAN,CAAqBzL,MAArB;;;EAIF,SAASkL,2BAAT;IACE,IAAIQ,UAAU,GAAGxB,mBAAmB,CAAC1I,OAArC;IACA,IAAI,CAACkK,UAAL,EACE;IACFtJ,OAAO,CAACC,GAAR,CAAY,0BAAZ,EAAwCqJ,UAAxC;IACA,IAAMC,iBAAiB,GAAGD,UAAU,CAACE,UAAX,CAAsBpK,OAAtB,CAA8BqK,YAAxD;IAEA,IAAIC,kBAAkB,GAAGC,IAAI,CAACC,KAAL,CAAWL,iBAAiB,GAAGM,eAAe,CAACC,SAA/C,CAAzB;IACAJ,kBAAkB,GAAGA,kBAAkB,GAAGxC,2BAArB,GAAmDA,2BAAnD,GAAiFwC,kBAAtG;IACAnC,uBAAuB,CAACP,KAAK,CAACxL,IAAN,CAAW;MAAEF,MAAM,EAAEoO;KAArB,EAA2CzC,IAA3C,CAAgD,IAAhD,CAAD,CAAvB;IACAjH,OAAO,CAACC,GAAR,CAAY,0BAAZ,EAAwCyJ,kBAAxC;;;EAEF,OAAQvE,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACND,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EAIED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACGe,YAAY,GAAGmB,oBAAoB,CAACrG,GAArB,CAAyB,UAACzB,CAAD,EAAIvC,CAAJ;IAAA,OACvC8J,OAAO,CAAC9F,GAAR,CAAY,UAACzB,CAAD,EAAIvC,CAAJ;MAAA,OACVkI,4BAAA,MAAA;QAAKa,GAAG,EAAE/I;QACRiG,KAAK,EAAE;UACL5B,MAAM,EAAEuI,eAAe,CAACC;;OAF5B,CADU;KAAZ,CADuC;GAAzB,CAAH,GAST,IAVN,CADF,EAeE3E,4BAAA,CAACwB,yBAAD;IAA2BF,GAAG,EAAEqB;KAC1B+B;IACJzC,OAAO,EAAEA;IACT2C,WAAW,EAAC;IACZC,WAAW,EAAE7D;IACb8D,WAAW,EAAE9D;IACb+D,aAAa,EAAE;MAAA,OAAMpB,2BAA2B,EAAjC;;IACfF,cAAc,EAAE,wBAACL,MAAD,EAASnB,OAAT;MAAA,OACdwB,eAAc,CAACL,MAAD,EAASnB,OAAT,CADA;;IAPlB,EAWGQ,OAAO,CAACT,EAAR,CAAWlG,GAAX,CAAe,UAACrD,MAAD;IAAA;;IAAA,OAEduH,4BAAA,MAAA;MAAKa,GAAG,oBAAEpI,MAAM,CAAC8K,MAAT,mDAAE,eAAezL;KAAzB,EACEkI,4BAAA,CAACO,UAAD;MACES,YAAY,EAAEA;MACdH,GAAG,qBAAEpI,MAAM,CAAC8K,MAAT,oDAAE,gBAAezL;MACpBW,MAAM,EAAEA;MACRqI,EAAE,EAAErI;MACJ8J,UAAU,EAAEA;MACZ3B,cAAc,EAAEF;MAChBa,gBAAgB,EAAEqC;MAClBjE,iBAAiB,EAAE/G,KAAK,CAAC+G;KAR3B,CADF,CAFc;GAAf,CAXH,CAfF,CADF,CAJF,CADM,CAAR;AA+DD,CApKD;;AAuKA,AAAO,IAAM+E,eAAe,GAAG;EAC7BC,SAAS,EAAE,EADkB;EAE7B1E,SAAS,EAAE,QAFkB;EAG7B+E,IAAI,EAAE;IAAEhD,EAAE,EAAE,EAAN;IAAUiD,EAAE,EAAE,CAAd;IAAiBC,EAAE,EAAE,CAArB;IAAwBC,EAAE,EAAE,CAA5B;IAA+BC,GAAG,EAAE;GAHb;EAI7BC,gBAAgB,EAAE;AAJW,CAAxB;;AC5KP,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAC1M,KAAD;;;EAChB,gBAAgDC,QAAQ,CAA6B;IAAEmJ,EAAE,EAAE;GAAnC,CAAxD;EAKA,IAAMa,aAAa,GAAG7J,MAAM,CAA0B;IAAEgJ,EAAE,EAAE;GAAhC,CAA5B;;EACA,iBAAoDnJ,QAAQ,CAA0B;IAAEmJ,EAAE,EAAE;GAAhC,CAA5D;MAAOuD,kBAAP;MAA2BC,qBAA3B;;EACA,iBAAwC3M,QAAQ,CAAU,KAAV,CAAhD;MAAOmI,YAAP;MAAqByE,eAArB;;EACA1L,SAAS,CAAC;IACRnB,KAAK,CAACkK,WAAN,CAAkB4C,YAAlB,CAA+BtL,SAA/B,CAAyC,UAAA6H,OAAO;MAC9CpH,OAAO,CAACC,GAAR,CAAY,uCAAZ,EAAoDmH,OAApD;MACAY,aAAa,CAAC5I,OAAd,GAAwBgI,OAAxB;MACAuD,qBAAqB,cAAK3C,aAAa,CAAC5I,OAAnB,EAArB;KAHF;IAMArB,KAAK,CAACkK,WAAN,CAAkB6C,cAAlB,CAAiCvL,SAAjC,CAA2C,UAAAC,CAAC;MAC1CoL,eAAe,CAACpL,CAAD,CAAf;KADF;IAGAzB,KAAK,CAACkK,WAAN,CAAkB8C,WAAlB,CAA8BxL,SAA9B,CAAwC,UAAAkJ,CAAC;MACvCT,aAAa,CAAC5I,OAAd,CAAsB+H,EAAtB,CAAyB1G,IAAzB,CAA8BgI,CAA9B;MACAzI,OAAO,CAACC,GAAR,CAAY,iDAAZ,EAA8D+H,aAAa,CAAC5I,OAA5E;MAEAuL,qBAAqB,cAAK3C,aAAa,CAAC5I,OAAnB,EAArB;KAJF;GAVO,EAkBN,EAlBM,CAAT;EAuBA,IAAI,CAAArB,KAAK,SAAL,IAAAA,KAAK,WAAL,4BAAAA,KAAK,CAAE7B,KAAP,8DAAcZ,MAAd,IAAuB,CAA3B,EACEsB,YAAY,CAACoO,OAAb,CAAqB,OAArB,EAA8BjN,KAA9B,aAA8BA,KAA9B,uBAA8BA,KAAK,CAAE7B,KAArC;;EAyDF,IAAM+O,aAAa,GAAG,SAAhBA,aAAgB,CAAC7D,OAAD;IACpBpH,OAAO,CAACC,GAAR,CAAY,kCAAZ,EAAgDmH,OAAhD;IACA,IAAI8D,UAAU,GAA8B,EAA5C;IACAvP,MAAM,CAACD,IAAP,CAAY0L,OAAZ,EAAqBzC,OAArB,CAA6B,UAAAwG,QAAQ;MACnC,IAAI/D,OAAO,CAAC+D,QAAD,CAAP,CAAkB7P,MAAlB,GAA2B,CAA/B,EAAkC;QAChC8L,OAAO,CAAC+D,QAAD,CAAP,CAAkBlK,GAAlB,CAAsB,UAAAsH,MAAM;UAC1B2C,UAAU,CAAC3C,MAAM,CAACtL,CAAR,CAAV,GAAuBsL,MAAvB;SADF;QAGA;;KALJ;IAQAP,aAAa,CAAC5I,OAAd,CAAsB+H,EAAtB,CAAyBxC,OAAzB,CAAiC,UAAA/G,MAAM;MACrC,IAAIsN,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAAd,EAA4B;QAC1BpI,MAAM,CAACwN,cAAP,GAA2BF,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAAV,CAAuBqF,CAAlD,SAAuDH,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAAV,CAAuBsF,CAA9E;QACA1N,MAAM,CAAC2N,WAAP,GAAwBL,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAAV,CAAuByC,CAA/C,SAAoDyC,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAAV,CAAuBwF,CAA3E;QACA5N,MAAM,CAAC8K,MAAP,GAAgBwC,UAAU,CAACtN,MAAM,CAACoI,GAAR,CAA1B;;KAJJ;IASAhG,OAAO,CAACC,GAAR,CAAY,qBAAZ,EAAmC+H,aAAnC;IACAjK,KAAK,CAAC0N,eAAN,CAAsBzD,aAAa,CAAC5I,OAApC;GArBF;;EA0BA,OACE+F,aAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,aAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,aAAA,CAAC2B,iBAAD;IAAmBhC,iBAAiB,EAAE/G,KAAK,CAAC+G;IAAmBkD,aAAa,EAAE0C;IAAoBzC,WAAW,EAAElK,KAAK,CAACkK;IAAaU,QAAQ,EAAExC;IAAcyC,cAAc,EAAEqC;IAAe5B,cAAc,EAAE,wBAACzL,MAAD;MAAA,OAA2BG,KAAK,CAACsL,cAAN,CAAqBzL,MAArB,CAA3B;;GAAzM,CADF,CADF,CADF;AAQD,CA5HD;;;;"}
@@ -1,3 +1,4 @@
1
1
  export declare class Tools {
2
2
  static GetLogitudeURL(): string;
3
+ static Map(from: any, to: any): void;
3
4
  }
@@ -7,5 +7,5 @@ export declare type DashboardDataBinding = {
7
7
  isOnEditLayout: Subject<boolean>;
8
8
  widgetUpdated: Subject<ReactWidgetPM>;
9
9
  onAddWidget: Subject<ReactWidgetPM>;
10
- onEditWidget: Subject<string>;
10
+ onEditWidget: Subject<ReactWidgetPM>;
11
11
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "logitude-dashboard-library",
3
- "version": "1.3.21",
3
+ "version": "1.3.23",
4
4
  "description": "Made with create-react-library",
5
5
  "author": "logitude",
6
6
  "license": "MIT",