logitude-dashboard-library 1.3.89 → 1.3.91

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.
@@ -1,3 +1,5 @@
1
+ @import url('https://fonts.cdnfonts.com/css/manrope');
2
+
1
3
  $blue: #2C99F7;
2
4
  $bg-color: #ffffff;
3
5
  $gray: #F5F6FB;
@@ -7,7 +9,7 @@ $red: #F74E49;
7
9
  $dark-grey: #717585;
8
10
 
9
11
  .dl-dashboard-body {
10
- background: $bg-color;
12
+ background: #F4F4F4;
11
13
  height: 100%;
12
14
  padding: 2px;
13
15
  margin: 0;
@@ -288,20 +290,19 @@ $dark-grey: #717585;
288
290
 
289
291
  .panel {
290
292
  background: white !important;
291
- // border-radius: 7px;
292
293
  box-shadow: 0px 0px 3px 1px #6273842b;
293
- padding: 5px;
294
294
  box-sizing: border-box;
295
295
  position: relative;
296
296
  height: 100%;
297
+
297
298
  header {
298
299
  display: flex;
299
300
  justify-content: space-between;
300
301
  align-items: center;
301
302
  position: unset;
303
+
302
304
  i {
303
305
  font-size: 18px;
304
- // color: colors.$red;
305
306
  cursor: pointer;
306
307
  }
307
308
  }
@@ -309,8 +310,13 @@ $dark-grey: #717585;
309
310
  h1 {
310
311
  text-transform: capitalize;
311
312
  font-size: 15px;
312
- font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
313
- color: #061436;
313
+ font-family: 'Manrope';
314
+ font-style: normal;
315
+ color: #292D30;
316
+ margin-top: 0;
317
+ margin-bottom: 0;
318
+ padding: 12px;
319
+ font-size: 12px;
314
320
  }
315
321
  }
316
322
 
@@ -327,7 +333,7 @@ $dark-grey: #717585;
327
333
 
328
334
 
329
335
  .dl-grid--bordered>div {
330
- border: 2px solid #d0d0d0;
336
+ background-color: #ECECEC;
331
337
  }
332
338
 
333
339
  .dl-grid--boxes>div {
@@ -455,3 +461,10 @@ $dark-grey: #717585;
455
461
  width: 100%;
456
462
  height: 100%;
457
463
  }
464
+
465
+ .dl-line {
466
+ border-top: 1px solid #E7E7E7;
467
+ margin-left: 12px;
468
+ margin-right: 12px;
469
+ margin-bottom: 12px;
470
+ }
@@ -1,4 +1,4 @@
1
1
  import { ChartObject } from "fusioncharts";
2
2
  import { SeriesMeasure } from "../../../types/SeriesMeasure";
3
3
  import { FusionChartProps } from "./FusionChart";
4
- export declare function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], props: FusionChartProps, id: string): ChartObject;
4
+ export declare function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], props: FusionChartProps): ChartObject;
package/dist/index.js CHANGED
@@ -289,8 +289,8 @@ var KpiChart = function KpiChart(props) {
289
289
  className: 'dl-full-hight dl-flex-content-center spinner-custome'
290
290
  }, React__default.createElement(progressspinner.ProgressSpinner, {
291
291
  style: {
292
- width: '100px',
293
- height: '100px'
292
+ width: '60px',
293
+ height: '60px'
294
294
  },
295
295
  strokeWidth: "4",
296
296
  animationDuration: "2s"
@@ -333,7 +333,7 @@ var CustomChart = function CustomChart(props) {
333
333
  }, project());
334
334
  };
335
335
 
336
- function BuildFusionChartObject(seriesMeasures, props, id) {
336
+ function BuildFusionChartObject(seriesMeasures, props) {
337
337
  var _props$widget;
338
338
 
339
339
  handelNullLabels(seriesMeasures);
@@ -385,7 +385,7 @@ function getPieObject(seriesMeasures, chart) {
385
385
  return chart;
386
386
  }
387
387
 
388
- function getDefaultChartobject(seriesMeasures, props, id) {
388
+ function getDefaultChartobject(seriesMeasures, props) {
389
389
  var chart = {};
390
390
  chart.type = "column2d";
391
391
  chart.width = "100%";
@@ -442,7 +442,6 @@ function buildDataSource(values) {
442
442
 
443
443
  function buildDataSet(seriesMeasures) {
444
444
  var dataSet = [];
445
- var position = 1;
446
445
  seriesMeasures.forEach(function (seriesMeasure) {
447
446
  var datas = seriesMeasure.SeriesMeasureVulues.map(function (e) {
448
447
  return {
@@ -455,9 +454,8 @@ function buildDataSet(seriesMeasures) {
455
454
  });
456
455
  dataSet.push({
457
456
  data: datas,
458
- seriesname: "series-" + position
457
+ seriesname: seriesMeasure.Name
459
458
  });
460
- position++;
461
459
  });
462
460
  return dataSet;
463
461
  }
@@ -553,7 +551,7 @@ var FusionChart = function FusionChart(props) {
553
551
  props.onSelectDataPoint({
554
552
  GroupById: dataObj.id.groupbyid,
555
553
  MeasureFieldId: dataObj.id.measurefieldid,
556
- Widget: props.widget
554
+ Widget: widget.current
557
555
  });
558
556
  };
559
557
 
@@ -580,8 +578,8 @@ var FusionChart = function FusionChart(props) {
580
578
  className: 'dl-full-hight dl-flex-content-center spinner-custome'
581
579
  }, React__default.createElement(progressspinner.ProgressSpinner, {
582
580
  style: {
583
- width: '100px',
584
- height: '100px'
581
+ width: '60px',
582
+ height: '60px'
585
583
  },
586
584
  strokeWidth: "4",
587
585
  animationDuration: "2s"
@@ -618,18 +616,20 @@ var WidgetCard = function WidgetCard(props, state) {
618
616
 
619
617
  return React__default.createElement("div", {
620
618
  className: "panel",
621
- key: props.el.i
622
- }, React__default.createElement("header", {
619
+ key: props.el.i,
623
620
  style: {
624
- paddingLeft: "5px"
621
+ cursor: props.isInEditMode ? 'move' : 'default'
625
622
  }
626
- }, React__default.createElement("h1", null, (props === null || props === void 0 ? void 0 : (_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.TypeCode) == "kpi" ? null : (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Title), props.isInEditMode ? React__default.createElement(button.Button, {
623
+ }, React__default.createElement("header", null, React__default.createElement("h1", null, (props === null || props === void 0 ? void 0 : (_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.TypeCode) == "kpi" ? null : (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Title), props.isInEditMode ? React__default.createElement(button.Button, {
627
624
  icon: "pi pi-ellipsis-v",
628
- className: "p-button-lg p-button-rounded p-button-text",
625
+ className: "p-button-rounded p-button-text",
629
626
  onClick: function onClick(e) {
630
627
  var _moreBtnToggle$curren2;
631
628
 
632
629
  return (_moreBtnToggle$curren2 = moreBtnToggle.current) === null || _moreBtnToggle$curren2 === void 0 ? void 0 : _moreBtnToggle$curren2.toggle(e);
630
+ },
631
+ style: {
632
+ color: "#292D30"
633
633
  }
634
634
  }) : null, React__default.createElement(overlaypanel.OverlayPanel, {
635
635
  ref: moreBtnToggle,
@@ -645,6 +645,8 @@ var WidgetCard = function WidgetCard(props, state) {
645
645
  return props.deleteBtnClicked((_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.key);
646
646
  }
647
647
  }, "Remove")))), React__default.createElement("div", {
648
+ className: "dl-line"
649
+ }), React__default.createElement("div", {
648
650
  className: "dl-dashboard-widget"
649
651
  }, (props === null || props === void 0 ? void 0 : (_props$widget4 = props.widget) === null || _props$widget4 === void 0 ? void 0 : _props$widget4.TypeCode) == "kpi" ? React__default.createElement(CustomChart, {
650
652
  dataBinding: props.dataBinding,
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/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../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(from);\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\nimport { KpiChart } from \"../types/KpiChart\";\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 getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChart>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n \r\n \r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Tools } from \"../../../../services/tools\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { KpiChart } from \"../../../../types/KpiChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const hasDataError = useRef<boolean>(false);\r\n const [data, setData] = useState<KpiChart>();\r\n const [title, setTitle] = useState<string>();\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n onRefresh();\r\n }, [])\r\n\r\n const onRefresh = () => {\r\n props.customChartProps.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n setDataLoaded(false);\r\n Tools.Map(e, widget.current);\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n }, [props.customChartProps.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n setTitle(props?.customChartProps?.widget?.Title)\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n if (props.customChartProps?.widgetRef?.WidgetMeasures)\r\n measureFieldId = props.customChartProps?.widgetRef?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: props.customChartProps.widget\r\n });\r\n }\r\n\r\n return (\r\n !dataLoaded ?\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 !error ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"kpIHeader\"}>{title}</div>\r\n <div>{data?.Value} </div>\r\n </div>\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 default KpiChart;","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n return (\r\n <div style={{ height: '100%' }}>{project()}</div>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\nimport { FusionChartProps } from \"./FusionChart\";\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], props: FusionChartProps, id: string): ChartObject {\r\n handelNullLabels(seriesMeasures);\r\n let defaultChart = getDefaultChartobject(seriesMeasures, props, id);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return getBarObject(seriesMeasures, defaultChart);\r\n case 'line':\r\n return getLineObject(seriesMeasures, defaultChart);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, defaultChart);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, defaultChart);\r\n default:\r\n return defaultChart;\r\n }\r\n}\r\n\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.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\nfunction getBarObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollbar2d\";\r\n return chart;\r\n}\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollline2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"doughnut2d\";\r\n return chart;\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"pie2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDefaultChartobject(seriesMeasures: SeriesMeasure[], props: FusionChartProps, id: string): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"80%\";\r\n chart.dataFormat = \"json\";\r\n buildChartDataSource(chart, props, seriesMeasures);\r\n return chart;\r\n}\r\n\r\n\r\nfunction buildChartDataSource(chart: ChartObject, props: FusionChartProps, seriesMeasures: SeriesMeasure[]) {\r\n if (!seriesMeasures || !seriesMeasures[0]) return;\r\n let chartinfo = {\r\n theme: \"fusion\",\r\n scrollHeight: \"5\",\r\n scrollWidth: \"5\",\r\n scrollPadding: \"8\",\r\n flatScrollBars: \"1\",\r\n enableSlicing: \"0\",\r\n showLegend: props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\" ? \"1\" : \"0\",\r\n };\r\n\r\n // pie donut lines\r\n // smartLineColor: \"#ff0000\",\r\n // smartLineThickness: \"1\",\r\n // smartLineAlpha: \"100\",\r\n // isSmartLineSlanted: \"0\"\r\n if (props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\") {\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n categories: buildCategories(seriesMeasures),\r\n dataset: buildDataSet(seriesMeasures)\r\n };\r\n return;\r\n }\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n data: buildDataSource(seriesMeasures),\r\n };\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[]) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n data = values[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n value: e.Value,\r\n label: e.Label,\r\n id: { GroupById: e.GroupById, MeasureFieldId: values[0].MeasureFieldId }\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[]) {\r\n let dataSet: any[] = [];\r\n let position = 1;\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.SeriesMeasureVulues.map(e => {\r\n return { value: e.Value, id: { GroupById: e.GroupById, MeasureFieldId: seriesMeasure.MeasureFieldId } }\r\n });\r\n dataSet.push({ data: datas, seriesname: \"series-\" + position });\r\n position++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[]) {\r\n var categories = seriesMeasures[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n label: e.Label\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}","import React, { useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { Tools } from \"../../../services/tools\";\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = (props: FusionChartProps) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<any>({});\r\n const entered = useRef<boolean>(false);\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n onRefresh();\r\n }, []);\r\n\r\n const onRefresh = () => {\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n setDataLoaded(false);\r\n Tools.Map(e, widget.current);\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500); \r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n }, [props.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n const chart = BuildFusionChartObject(result.data, props, id);\r\n setArgs(chart);\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n Widget: props.widget\r\n });\r\n };\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n fChart.resizeTo(width, height);\r\n },\r\n });\r\n\r\n return (\r\n !dataLoaded ?\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 !error ?\r\n <div className={'db-fc-container'} ref={ref} id={id}><ReactFC {...args} fcEvent-dataplotClick={dataplotClick} onRender={renderComplete} /></div>\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 </div>\r\n )\r\n}\r\nexport default FusionChart;","import { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionChart\";\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 widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\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 style={{ paddingLeft: \"5px\" }}>\r\n <h1>{props?.widget?.TypeCode == \"kpi\" ? null : props.widget?.Title}</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 {props?.widget?.TypeCode == \"kpi\" ?\r\n <CustomChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} /> :\r\n <FusionChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n //<ApexChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\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 { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\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 const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\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 }, [props.editMode]);\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 // layoutsRef.current = changedLayouts;\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n // layoutsRef.current = newLayouts;\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n FillWidgetDictionary(newWidgets);\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 function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight-scroll\">\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={() => { }}\r\n onLayoutChange={onLayoutChange}\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 widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\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\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 DashboardDesigner from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\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 Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(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 setWidgetlayoutsState(deepClone(Widgetlayouts.current));\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\r\n\r\n const updateWidgets = (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 var newWidgetlayouts: ReactWidgetPM[] = [];\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 newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\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","getKpiData","KpiChart","props","useState","dataLoaded","setDataLoaded","error","setError","useRef","widgetRef","hasDataError","data","setData","title","setTitle","useEffect","current","customChartProps","onRefresh","dataBinding","onEditWidget","subscribe","e","key","setTimeout","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","React","className","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Value","src","CustomChart","project","TypeCode","BuildFusionChartObject","seriesMeasures","id","handelNullLabels","defaultChart","getDefaultChartobject","getBarObject","getLineObject","getPieObject","getDonutObject","forEach","element","SeriesMeasureVulues","value","Label","chart","type","dataFormat","buildChartDataSource","chartinfo","theme","scrollHeight","scrollWidth","scrollPadding","flatScrollBars","enableSlicing","showLegend","dataSource","categories","buildCategories","dataset","buildDataSet","buildDataSource","values","map","label","GroupById","dataSet","position","seriesMeasure","datas","push","seriesname","category","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","FusionChart","args","setArgs","fChart","setFchart","entered","Math","random","toString","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","renderComplete","useResizeObserver","onResize","resizeTo","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","paddingLeft","isInEditMode","Button","icon","toggle","OverlayPanel","deleteBtnClicked","deepClone","obj","parse","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","item","w","Layout","editMode","onLayoutChange","changedLayouts","UpdateWidget","deletePanel","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","max","y","h","newPlaceholderRows","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","EndPosition","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/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../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(from);\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\nimport { KpiChart } from \"../types/KpiChart\";\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 getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChart>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n \r\n \r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Tools } from \"../../../../services/tools\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { KpiChart } from \"../../../../types/KpiChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const hasDataError = useRef<boolean>(false);\r\n const [data, setData] = useState<KpiChart>();\r\n const [title, setTitle] = useState<string>();\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n onRefresh();\r\n }, [])\r\n\r\n const onRefresh = () => {\r\n props.customChartProps.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n setDataLoaded(false);\r\n Tools.Map(e, widget.current);\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n }, [props.customChartProps.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n setTitle(props?.customChartProps?.widget?.Title)\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n if (props.customChartProps?.widgetRef?.WidgetMeasures)\r\n measureFieldId = props.customChartProps?.widgetRef?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: props.customChartProps.widget\r\n });\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '60px', height: '60px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"kpIHeader\"}>{title}</div>\r\n <div>{data?.Value} </div>\r\n </div>\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 default KpiChart;","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n return (\r\n <div style={{ height: '100%' }}>{project()}</div>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\nimport { FusionChartProps } from \"./FusionChart\";\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], props: FusionChartProps): ChartObject {\r\n handelNullLabels(seriesMeasures);\r\n let defaultChart = getDefaultChartobject(seriesMeasures, props);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return getBarObject(seriesMeasures, defaultChart);\r\n case 'line':\r\n return getLineObject(seriesMeasures, defaultChart);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, defaultChart);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, defaultChart);\r\n default:\r\n return defaultChart;\r\n }\r\n}\r\n\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.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\nfunction getBarObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollbar2d\";\r\n return chart;\r\n}\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollline2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"doughnut2d\";\r\n return chart;\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"pie2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDefaultChartobject(seriesMeasures: SeriesMeasure[], props: FusionChartProps): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"80%\";\r\n chart.dataFormat = \"json\";\r\n buildChartDataSource(chart, props, seriesMeasures);\r\n return chart;\r\n}\r\n\r\n\r\nfunction buildChartDataSource(chart: ChartObject, props: FusionChartProps, seriesMeasures: SeriesMeasure[]) {\r\n if (!seriesMeasures || !seriesMeasures[0]) return;\r\n let chartinfo = {\r\n theme: \"fusion\",\r\n scrollHeight: \"5\",\r\n scrollWidth: \"5\",\r\n scrollPadding: \"8\",\r\n flatScrollBars: \"1\",\r\n enableSlicing: \"0\",\r\n showLegend: props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\" ? \"1\" : \"0\",\r\n };\r\n\r\n // pie donut lines\r\n // smartLineColor: \"#ff0000\",\r\n // smartLineThickness: \"1\",\r\n // smartLineAlpha: \"100\",\r\n // isSmartLineSlanted: \"0\"\r\n if (props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\") {\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n categories: buildCategories(seriesMeasures),\r\n dataset: buildDataSet(seriesMeasures)\r\n };\r\n return;\r\n }\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n data: buildDataSource(seriesMeasures),\r\n };\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[]) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n data = values[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n value: e.Value,\r\n label: e.Label,\r\n id: { GroupById: e.GroupById, MeasureFieldId: values[0].MeasureFieldId }\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[]) {\r\n let dataSet: any[] = [];\r\n let position = 1;\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.SeriesMeasureVulues.map(e => {\r\n return { value: e.Value, id: { GroupById: e.GroupById, MeasureFieldId: seriesMeasure.MeasureFieldId } }\r\n });\r\n dataSet.push({ data: datas, seriesname: seriesMeasure.Name });\r\n position++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[]) {\r\n var categories = seriesMeasures[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n label: e.Label\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}","import React, { useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { Tools } from \"../../../services/tools\";\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = (props: FusionChartProps) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<any>({});\r\n const entered = useRef<boolean>(false);\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n onRefresh();\r\n }, []);\r\n\r\n const onRefresh = () => {\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n setDataLoaded(false);\r\n Tools.Map(e, widget.current);\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500); \r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n }, [props.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n const chart = BuildFusionChartObject(result.data, props);\r\n setArgs(chart);\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const toggle_element = () => {\r\n var element = document.getElementById(id)?.children[0]?.children[0]?.children[0];\r\n if (!element) return;\r\n console.log(element)\r\n let htmlelement = document.getElementById(element.id);\r\n if (!htmlelement) return;\r\n htmlelement.style.cursor = 'move';\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n Widget: widget.current\r\n });\r\n };\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n fChart.resizeTo(width, height);\r\n },\r\n });\r\n\r\n return (\r\n !dataLoaded ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '60px', height: '60px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-container'} ref={ref} id={id}><ReactFC {...args} fcEvent-dataplotClick={dataplotClick} onRender={renderComplete} /></div>\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 </div>\r\n )\r\n}\r\nexport default FusionChart;","import { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionChart\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\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 widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\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} style={{ cursor: props.isInEditMode ? 'move' : 'default' }} >\r\n <header>\r\n <h1>{props?.widget?.TypeCode == \"kpi\" ? null : props.widget?.Title}</h1>\r\n {\r\n props.isInEditMode ?\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n style={{ color: \"#292D30\" }}\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 <div className=\"dl-line\"></div>\r\n <div className=\"dl-dashboard-widget\">\r\n {props?.widget?.TypeCode == \"kpi\" ?\r\n <CustomChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} /> :\r\n <FusionChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n //<ApexChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\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 { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\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 const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\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 }, [props.editMode]);\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 // layoutsRef.current = changedLayouts;\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n // layoutsRef.current = newLayouts;\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n FillWidgetDictionary(newWidgets);\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 function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight-scroll\">\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={() => { }}\r\n onLayoutChange={onLayoutChange}\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 widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\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\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 DashboardDesigner from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\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 Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(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 setWidgetlayoutsState(deepClone(Widgetlayouts.current));\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\r\n\r\n const updateWidgets = (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 var newWidgetlayouts: ReactWidgetPM[] = [];\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 newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\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","getKpiData","KpiChart","props","useState","dataLoaded","setDataLoaded","error","setError","useRef","widgetRef","hasDataError","data","setData","title","setTitle","useEffect","current","customChartProps","onRefresh","dataBinding","onEditWidget","subscribe","e","key","setTimeout","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","React","className","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Value","src","CustomChart","project","TypeCode","BuildFusionChartObject","seriesMeasures","handelNullLabels","defaultChart","getDefaultChartobject","getBarObject","getLineObject","getPieObject","getDonutObject","forEach","element","SeriesMeasureVulues","value","Label","chart","type","dataFormat","buildChartDataSource","chartinfo","theme","scrollHeight","scrollWidth","scrollPadding","flatScrollBars","enableSlicing","showLegend","dataSource","categories","buildCategories","dataset","buildDataSet","buildDataSource","values","map","label","id","GroupById","dataSet","seriesMeasure","datas","push","seriesname","Name","category","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","FusionChart","args","setArgs","fChart","setFchart","entered","Math","random","toString","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","renderComplete","useResizeObserver","onResize","resizeTo","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","cursor","isInEditMode","Button","icon","toggle","color","OverlayPanel","deleteBtnClicked","deepClone","obj","parse","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","item","w","Layout","editMode","onLayoutChange","changedLayouts","UpdateWidget","deletePanel","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","max","y","h","newPlaceholderRows","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","EndPosition","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,CAAYF,IAAZ,CAAX;;IACA,yBAAgBE,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;;ICIaW,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,OAYIE,UAZJ,GAYI,oBAAWF,MAAX;IACI,OAAO,KAAKF,YAAL,CAAkBjB,IAAlB,WAAyC,KAAKoB,UAA9C,sBAA0ED,MAA1E,CAAP;GAbR;;EAAA;AAAA;;ACGA,IAAMG,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD;EACb,gBAAoCC,cAAQ,CAAU,KAAV,CAA5C;MAAOC,UAAP;MAAmBC,aAAnB;;EACA,iBAA0BF,cAAQ,EAAlC;MAAOG,KAAP;MAAcC,QAAd;;EAEA,IAAMT,MAAM,GAAGU,YAAM,EAArB;EACA,IAAMC,SAAS,GAAGD,YAAM,EAAxB;EACA,IAAME,YAAY,GAAGF,YAAM,CAAU,KAAV,CAA3B;;EACA,iBAAwBL,cAAQ,EAAhC;MAAOQ,IAAP;MAAaC,OAAb;;EACA,iBAA0BT,cAAQ,EAAlC;MAAOU,KAAP;MAAcC,QAAd;;EAEAC,eAAS,CAAC;IACNjB,MAAM,CAACkB,OAAP,GAAiBd,KAAK,CAACe,gBAAN,CAAuBnB,MAAxC;IACAoB,SAAS;GAFJ,EAGN,EAHM,CAAT;;EAKA,IAAMA,SAAS,GAAG,SAAZA,SAAY;;;IACd,yBAAAhB,KAAK,CAACe,gBAAN,CAAuBE,WAAvB,gFAAoCC,YAApC,CAAiDC,SAAjD,CAA2D,UAAAC,CAAC;;;MACxD,IAAIA,CAAC,CAACC,GAAF,wBAASzB,MAAM,CAACkB,OAAhB,oDAAS,gBAAgBO,GAAzB,CAAJ,EAAkC;QAC9BlB,aAAa,CAAC,KAAD,CAAb;QACAzD,KAAK,CAACa,GAAN,CAAU6D,CAAV,EAAaxB,MAAM,CAACkB,OAApB;QACAQ,UAAU,CAAC;UACPC,WAAW;SADL,EAEP,GAFO,CAAV;;KAJR;GADJ;;EAYAV,eAAS,CAAC;IACNN,SAAS,CAACO,OAAV,GAAoBd,KAAK,CAACe,gBAAN,CAAuBR,SAA3C;IACAe,UAAU,CAAC;MACPC,WAAW;KADL,EAEP,GAFO,CAAV;GAFK,EAKN,EALM,CAAT;EAOAV,eAAS,CAAC;IACNN,SAAS,CAACO,OAAV,GAAoBd,KAAK,CAACe,gBAAN,CAAuBR,SAA3C;GADK,EAEN,CAACP,KAAK,CAACe,gBAAN,CAAuBR,SAAxB,CAFM,CAAT;;EAIA,IAAMgB,WAAW,GAAG,SAAdA,WAAc;;;IAChBX,QAAQ,CAACZ,KAAD,aAACA,KAAD,iDAACA,KAAK,CAAEe,gBAAR,qFAAC,uBAAyBnB,MAA1B,2DAAC,uBAAiC4B,KAAlC,CAAR;IACA,IAAIC,yBAAyB,GAAG,IAAIhC,yBAAJ,EAAhC;;IACA,IAAIiC,UAAU,gBAAa9B,MAAM,CAACkB,OAApB,CAAd;;IACAY,UAAU,CAACC,QAAX,GAAsBC,SAAtB;IACAH,yBAAyB,CAAC3B,UAA1B,CAAqC4B,UAArC,EAAkEG,IAAlE,CAAuE,UAAAC,MAAM;MACzEpB,OAAO,CAACoB,MAAM,CAACrB,IAAR,CAAP;MACAN,aAAa,CAAC,IAAD,CAAb;KAFJ,EAGG,UAAAC,KAAK;;;MACJ2B,OAAO,CAACC,GAAR,CAAY,OAAZ,EAAqB5B,KAArB;MACA,IAAIA,KAAJ,aAAIA,KAAJ,kCAAIA,KAAK,CAAE6B,QAAX,oEAAI,gBAAiBxB,IAArB,iDAAI,qBAAuByB,YAA3B,EAAyC7B,QAAQ,CAACD,KAAD,aAACA,KAAD,2CAACA,KAAK,CAAE6B,QAAR,8EAAC,iBAAiBxB,IAAlB,0DAAC,sBAAuByB,YAAxB,CAAR,CAAzC,KACK7B,QAAQ,CAACD,KAAK,CAAC+B,OAAP,CAAR;MACLhC,aAAa,CAAC,IAAD,CAAb;KAPJ;GALJ;;EAgBA,IAAMiC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,IAAIC,cAAJ;IACA,8BAAIrC,KAAK,CAACe,gBAAV,6EAAI,uBAAwBR,SAA5B,mDAAI,uBAAmC+B,cAAvC,EACID,cAAc,6BAAGrC,KAAK,CAACe,gBAAT,qFAAG,uBAAwBR,SAA3B,qFAAG,uBAAmC+B,cAAnC,CAAkD,CAAlD,CAAH,2DAAG,uBAAsDC,cAAvE;IACJvC,KAAK,CAACe,gBAAN,CAAuByB,iBAAvB,CAAyC;MACrCD,cAAc,EAAEF,cADqB;MAErCI,MAAM,EAAEzC,KAAK,CAACe,gBAAN,CAAuBnB;KAFnC;GAJJ;;EAUA,OACI,CAACM,UAAD,GACIwC,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,CAACE,+BAAD;IAAiBC,KAAK,EAAE;MAAEC,KAAK,EAAE,MAAT;MAAiBC,MAAM,EAAE;;IAAUC,WAAW,EAAC;IAAIC,iBAAiB,EAAC;GAA7F,CADJ,CADJ,GAKI,CAAC7C,KAAD,GACIsC,4BAAA,MAAA;IAAKC,SAAS,EAAE;IAAgBO,OAAO,EAAEd;GAAzC,EACIM,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EAA8BhC,KAA9B,CADJ,EAEI+B,4BAAA,MAAA,MAAA,EAAMjC,IAAN,aAAMA,IAAN,uBAAMA,IAAI,CAAE0C,KAAZ,KAAA,CAFJ,CADJ,GAKMT,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACID,4BAAA,MAAA;IAAKI,KAAK,EAAE;IAAKM,GAAG,EAAE;GAAtB,CADJ,EAEIV,4BAAA,OAAA;IAAMC,SAAS,EAAC;GAAhB,EAAkCvC,KAAlC,CAFJ,CADF,CAXd;AAoBH,CApFD;;ACAA,IAAMiD,WAAW,GAAG,SAAdA,WAAc,CAACrD,KAAD;EAChB,IAAMsD,OAAO,GAAG,SAAVA,OAAU;;;IACZ,yBAAQtD,KAAK,CAACJ,MAAd,kDAAQ,cAAc2D,QAAtB;MACI,KAAK,KAAL;QAAY,OAAOb,4BAAA,CAAC3C,QAAD;UAAUgB,gBAAgB,EAAEf;SAA5B,CAAP;;MACZ;QAAS,OAAO0C,4BAAA,MAAA,MAAA,gBAAA,CAAP;;GAHjB;;EAMA,OACIA,4BAAA,MAAA;IAAKG,KAAK,EAAE;MAAEE,MAAM,EAAE;;GAAtB,EAAiCO,OAAO,EAAxC,CADJ;AAGH,CAVD;;SCTgBE,uBAAuBC,gBAAiCzD;;;EACpE0D,gBAAgB,CAACD,cAAD,CAAhB;EACA,IAAIE,YAAY,GAAGC,qBAAqB,CAACH,cAAD,EAAiBzD,KAAjB,CAAxC;;EACA,yBAAQA,KAAK,CAACJ,MAAd,kDAAQ,cAAc2D,QAAtB;IACI,KAAK,KAAL;MACI,OAAOM,YAAY,CAACJ,cAAD,EAAiBE,YAAjB,CAAnB;;IACJ,KAAK,MAAL;MACI,OAAOG,aAAa,CAACL,cAAD,EAAiBE,YAAjB,CAApB;;IACJ,KAAK,KAAL;MACI,OAAOI,YAAY,CAACN,cAAD,EAAiBE,YAAjB,CAAnB;;IACJ,KAAK,OAAL;MACI,OAAOK,cAAc,CAACP,cAAD,EAAiBE,YAAjB,CAArB;;IACJ;MACI,OAAOA,YAAP;;AAEX;;AAGD,SAASD,gBAAT,CAA0BD,cAA1B;EACIA,cAAc,CAACQ,OAAf,CAAuB,UAAAC,OAAO;IAC1BA,OAAO,CAACC,mBAAR,CAA4BF,OAA5B,CAAoC,UAAAG,KAAK;MACrC,IAAI,CAACA,KAAK,CAACC,KAAP,IAAgBD,KAAK,CAACC,KAAN,IAAe,EAAnC,EACID,KAAK,CAACC,KAAN,GAAc,aAAd;KAFR;GADJ;AAMH;;AAED,SAASR,YAAT,CAAsBJ,cAAtB,EAAuDa,KAAvD;EACIA,KAAK,CAACC,IAAN,GAAa,aAAb;EACA,OAAOD,KAAP;AACH;;AAED,SAASR,aAAT,CAAuBL,cAAvB,EAAwDa,KAAxD;EACIA,KAAK,CAACC,IAAN,GAAa,cAAb;EACA,OAAOD,KAAP;AACH;;AAED,SAASN,cAAT,CAAwBP,cAAxB,EAAyDa,KAAzD;EACIA,KAAK,CAACC,IAAN,GAAa,YAAb;EACA,OAAOD,KAAP;AACH;;AAED,SAASP,YAAT,CAAsBN,cAAtB,EAAuDa,KAAvD;EACIA,KAAK,CAACC,IAAN,GAAa,OAAb;EACA,OAAOD,KAAP;AACH;;AAED,SAASV,qBAAT,CAA+BH,cAA/B,EAAgEzD,KAAhE;EACI,IAAIsE,KAAK,GAAG,EAAZ;EACAA,KAAK,CAACC,IAAN,GAAa,UAAb;EACAD,KAAK,CAACxB,KAAN,GAAc,MAAd;EACAwB,KAAK,CAACvB,MAAN,GAAe,KAAf;EACAuB,KAAK,CAACE,UAAN,GAAmB,MAAnB;EACAC,oBAAoB,CAACH,KAAD,EAAQtE,KAAR,EAAeyD,cAAf,CAApB;EACA,OAAOa,KAAP;AACH;;AAGD,SAASG,oBAAT,CAA8BH,KAA9B,EAAkDtE,KAAlD,EAA2EyD,cAA3E;;;EACI,IAAI,CAACA,cAAD,IAAmB,CAACA,cAAc,CAAC,CAAD,CAAtC,EAA2C;EAC3C,IAAIiB,SAAS,GAAG;IACZC,KAAK,EAAE,QADK;IAEZC,YAAY,EAAE,GAFF;IAGZC,WAAW,EAAE,GAHD;IAIZC,aAAa,EAAE,GAJH;IAKZC,cAAc,EAAE,GALJ;IAMZC,aAAa,EAAE,GANH;IAOZC,UAAU,EAAE,mBAAAjF,KAAK,CAACJ,MAAN,kEAAc2D,QAAd,KAA0B,KAA1B,IAAmC,mBAAAvD,KAAK,CAACJ,MAAN,kEAAc2D,QAAd,KAA0B,MAA7D,GAAsE,GAAtE,GAA4E;GAP5F;;EAeA,IAAI,mBAAAvD,KAAK,CAACJ,MAAN,kEAAc2D,QAAd,KAA0B,KAA1B,IAAmC,mBAAAvD,KAAK,CAACJ,MAAN,kEAAc2D,QAAd,KAA0B,MAAjE,EAAyE;IACrEe,KAAK,CAACY,UAAN,GAAmB;MACfZ,KAAK,EAAEI,SADQ;MAEfS,UAAU,EAAEC,eAAe,CAAC3B,cAAD,CAFZ;MAGf4B,OAAO,EAAEC,YAAY,CAAC7B,cAAD;KAHzB;IAKA;;;EAEJa,KAAK,CAACY,UAAN,GAAmB;IACfZ,KAAK,EAAEI,SADQ;IAEfjE,IAAI,EAAE8E,eAAe,CAAC9B,cAAD;GAFzB;AAIH;;AAED,SAAS8B,eAAT,CAAyBC,MAAzB;EACI,IAAI/E,IAAI,GAAU,EAAlB;EACA,IAAI,CAAC+E,MAAD,IAAW,CAACA,MAAM,CAAC,CAAD,CAAtB,EAA2B,OAAO/E,IAAP;EAC3BA,IAAI,GAAG+E,MAAM,CAAC,CAAD,CAAN,CAAUrB,mBAAV,CAA8BsB,GAA9B,CAAkC,UAACrE,CAAD;IACrC,OAAO;MACHgD,KAAK,EAAEhD,CAAC,CAAC+B,KADN;MAEHuC,KAAK,EAAEtE,CAAC,CAACiD,KAFN;MAGHsB,EAAE,EAAE;QAAEC,SAAS,EAAExE,CAAC,CAACwE,SAAf;QAA0BrD,cAAc,EAAEiD,MAAM,CAAC,CAAD,CAAN,CAAUjD;;KAH5D;GADG,CAAP;EAOA,OAAO9B,IAAP;AACH;;AAED,SAAS6E,YAAT,CAAsB7B,cAAtB;EACI,IAAIoC,OAAO,GAAU,EAArB;EAEApC,cAAc,CAACQ,OAAf,CAAuB,UAAA6B,aAAa;IAChC,IAAIC,KAAK,GAAGD,aAAa,CAAC3B,mBAAd,CAAkCsB,GAAlC,CAAsC,UAAArE,CAAC;MAC/C,OAAO;QAAEgD,KAAK,EAAEhD,CAAC,CAAC+B,KAAX;QAAkBwC,EAAE,EAAE;UAAEC,SAAS,EAAExE,CAAC,CAACwE,SAAf;UAA0BrD,cAAc,EAAEuD,aAAa,CAACvD;;OAArF;KADQ,CAAZ;IAGAsD,OAAO,CAACG,IAAR,CAAa;MAAEvF,IAAI,EAAEsF,KAAR;MAAeE,UAAU,EAAEH,aAAa,CAACI;KAAtD;GAJJ;EAOA,OAAOL,OAAP;AACH;;AAED,SAAST,eAAT,CAAyB3B,cAAzB;EACI,IAAI0B,UAAU,GAAG1B,cAAc,CAAC,CAAD,CAAd,CAAkBU,mBAAlB,CAAsCsB,GAAtC,CAA0C,UAACrE,CAAD;IACvD,OAAO;MACHsE,KAAK,EAAEtE,CAAC,CAACiD;KADb;GADa,CAAjB;EAKA,IAAIvC,MAAM,GAAU,EAApB;EACAA,MAAM,CAACkE,IAAP,CAAY;IAAEG,QAAQ,EAAEhB;GAAxB;EACA,OAAOrD,MAAP;AACH;;ACjHDsE,OAAO,CAACC,MAAR,CAAeC,YAAf,EAA6BC,MAA7B,EAAqCC,WAArC;;AAQA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACzG,KAAD;EAChB,gBAAoCC,cAAQ,CAAU,KAAV,CAA5C;MAAOC,UAAP;MAAmBC,aAAnB;;EACA,iBAA0BF,cAAQ,EAAlC;MAAOG,KAAP;MAAcC,QAAd;;EAEA,IAAMT,MAAM,GAAGU,YAAM,EAArB;EACA,IAAMC,SAAS,GAAGD,YAAM,EAAxB;;EACA,iBAAwBL,cAAQ,CAAc,EAAd,CAAhC;MAAOyG,IAAP;MAAaC,OAAb;;EACA,iBAA4B1G,cAAQ,CAAM,EAAN,CAApC;MAAO2G,MAAP;MAAeC,SAAf;;EACA,IAAMC,OAAO,GAAGxG,YAAM,CAAU,KAAV,CAAtB;EACA,IAAMqF,EAAE,GAAG,CAACoB,IAAI,CAACC,MAAL,KAAgB,CAAjB,EAAoBC,QAApB,CAA6B,EAA7B,EAAiC7J,SAAjC,CAA2C,CAA3C,CAAX;EAEAyD,eAAS,CAAC;IACNjB,MAAM,CAACkB,OAAP,GAAiBd,KAAK,CAACJ,MAAvB;IACAoB,SAAS;GAFJ,EAGN,EAHM,CAAT;;EAKA,IAAMA,SAAS,GAAG,SAAZA,SAAY;;;IACd,sBAAAhB,KAAK,CAACiB,WAAN,0EAAmBC,YAAnB,CAAgCC,SAAhC,CAA0C,UAAAC,CAAC;;;MACvC,IAAIA,CAAC,CAACC,GAAF,wBAASzB,MAAM,CAACkB,OAAhB,oDAAS,gBAAgBO,GAAzB,CAAJ,EAAkC;QAC9BlB,aAAa,CAAC,KAAD,CAAb;QACAzD,KAAK,CAACa,GAAN,CAAU6D,CAAV,EAAaxB,MAAM,CAACkB,OAApB;QACAQ,UAAU,CAAC;UACPC,WAAW;SADL,EAEP,GAFO,CAAV;;KAJR;GADJ;;EAYAV,eAAS,CAAC;IACNN,SAAS,CAACO,OAAV,GAAoBd,KAAK,CAACO,SAA1B;IACAe,UAAU,CAAC;MACPC,WAAW;KADL,EAEP,GAFO,CAAV;GAFK,EAKN,EALM,CAAT;EAOAV,eAAS,CAAC;IACNN,SAAS,CAACO,OAAV,GAAoBd,KAAK,CAACO,SAA1B;GADK,EAEN,CAACP,KAAK,CAACO,SAAP,CAFM,CAAT;;EAIA,IAAMgB,WAAW,GAAG,SAAdA,WAAc;IAChB,IAAIE,yBAAyB,GAAG,IAAIhC,yBAAJ,EAAhC;;IACA,IAAIiC,UAAU,gBAAa9B,MAAM,CAACkB,OAApB,CAAd;;IACAY,UAAU,CAACC,QAAX,GAAsBC,SAAtB;IACAH,yBAAyB,CAAC9B,OAA1B,CAAkC+B,UAAlC,EAA+DG,IAA/D,CAAoE,UAAAC,MAAM;MACtE,IAAMwC,KAAK,GAAGd,sBAAsB,CAAC1B,MAAM,CAACrB,IAAR,EAAcT,KAAd,CAApC;MACA2G,OAAO,CAACrC,KAAD,CAAP;MACAnE,aAAa,CAAC,IAAD,CAAb;KAHJ,EAIG,UAAAC,KAAK;;;MACJ2B,OAAO,CAACC,GAAR,CAAY,OAAZ,EAAqB5B,KAArB;MACA,IAAIA,KAAJ,aAAIA,KAAJ,kCAAIA,KAAK,CAAE6B,QAAX,oEAAI,gBAAiBxB,IAArB,iDAAI,qBAAuByB,YAA3B,EAAyC7B,QAAQ,CAACD,KAAD,aAACA,KAAD,2CAACA,KAAK,CAAE6B,QAAR,8EAAC,iBAAiBxB,IAAlB,0DAAC,sBAAuByB,YAAxB,CAAR,CAAzC,KACK7B,QAAQ,CAACD,KAAK,CAAC+B,OAAP,CAAR;MACLhC,aAAa,CAAC,IAAD,CAAb;KARJ;GAJJ;;EAyBA,IAAM+G,aAAa,GAAG,SAAhBA,aAAgB,CAACC,QAAD,EAAgBC,OAAhB;IAClBpH,KAAK,CAACwC,iBAAN,CAAwB;MACpBoD,SAAS,EAAEwB,OAAO,CAACzB,EAAR,CAAW0B,SADF;MAEpB9E,cAAc,EAAE6E,OAAO,CAACzB,EAAR,CAAW2B,cAFP;MAGpB7E,MAAM,EAAE7C,MAAM,CAACkB;KAHnB;GADJ;;EAQA,IAAMyG,cAAc,GAAG,SAAjBA,cAAiB,CAACjD,KAAD;IACnBuC,SAAS,CAACvC,KAAD,CAAT;GADJ;;EAIA,yBAAgBkD,iBAAiB,CAAiB;IAC9CC,QAAQ,EAAE;UAAG3E,aAAAA;UAAOC,cAAAA;;MAChB,IAAI+D,OAAO,CAAChG,OAAR,IAAmB,KAAvB,EAA8B;QAC1BgG,OAAO,CAAChG,OAAR,GAAkB,IAAlB;QACA;;;MAEJ8F,MAAM,CAACc,QAAP,CAAgB5E,KAAhB,EAAuBC,MAAvB;;GANyB,CAAjC;MAAQ4E,GAAR,sBAAQA,GAAR;;EAUA,OACI,CAACzH,UAAD,GACIwC,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,CAACE,+BAAD;IAAiBC,KAAK,EAAE;MAAEC,KAAK,EAAE,MAAT;MAAiBC,MAAM,EAAE;;IAAUC,WAAW,EAAC;IAAIC,iBAAiB,EAAC;GAA7F,CADJ,CADJ,GAKI,CAAC7C,KAAD,GACIsC,4BAAA,MAAA;IAAKC,SAAS,EAAE;IAAmBgF,GAAG,EAAEA;IAAKhC,EAAE,EAAEA;GAAjD,EAAqDjD,4BAAA,CAAC0D,OAAD,oBAAaM;6BAA6BQ;IAAeU,QAAQ,EAAEL;IAAnE,CAArD,CADJ,GAEM7E,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACID,4BAAA,MAAA;IAAKI,KAAK,EAAE;IAAKM,GAAG,EAAE;GAAtB,CADJ,EAEIV,4BAAA,OAAA;IAAMC,SAAS,EAAC;GAAhB,EAAkCvC,KAAlC,CAFJ,CADF,CARd;AAeH,CArGD;;ACCA,IAAMyH,UAAU,GAAG,SAAbA,UAAa,CAAC7H,KAAD,EAAyB8H,KAAzB;;;EACjB,IAAMC,aAAa,GAAGzH,YAAM,CAAe,IAAf,CAA5B;;EAGA,IAAM0H,UAAU,GAAG,SAAbA,UAAa;;;IACjB,yBAAAD,aAAa,CAACjH,OAAd,gFAAuBmH,IAAvB;IACAjI,KAAK,CAACkI,cAAN,CAAqBlI,KAAK,CAACJ,MAA3B;GAFF;;EAMA,OACE8C,4BAAA,MAAA;IAAKC,SAAS,EAAC;IAAQtB,GAAG,EAAErB,KAAK,CAACmI,EAAN,CAASlJ;IAAG4D,KAAK,EAAE;MAAEuF,MAAM,EAAEpI,KAAK,CAACqI,YAAN,GAAqB,MAArB,GAA8B;;GAAvF,EACE3F,4BAAA,SAAA,MAAA,EACEA,4BAAA,KAAA,MAAA,EAAK,CAAA1C,KAAK,SAAL,IAAAA,KAAK,WAAL,6BAAAA,KAAK,CAAEJ,MAAP,gEAAe2D,QAAf,KAA2B,KAA3B,GAAmC,IAAnC,qBAA0CvD,KAAK,CAACJ,MAAhD,mDAA0C,eAAc4B,KAA7D,CADF,EAGIxB,KAAK,CAACqI,YAAN,GACE3F,4BAAA,CAAC4F,aAAD;IACEC,IAAI,EAAC;IACL5F,SAAS,EAAC;IACVO,OAAO,EAAE,iBAAC9B,CAAD;MAAA;;MAAA,iCAAO2G,aAAa,CAACjH,OAArB,2DAAO,uBAAuB0H,MAAvB,CAA8BpH,CAA9B,CAAP;;IACTyB,KAAK,EAAE;MAAE4F,KAAK,EAAE;;GAJlB,CADF,GAOI,IAVR,EAcE/F,4BAAA,CAACgG,yBAAD;IAAcf,GAAG,EAAEI;IAAepF,SAAS,EAAC;GAA5C,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKQ,OAAO,EAAE8E;GAAd,UAAA,CADF,EAEEtF,4BAAA,MAAA;IAAKQ,OAAO,EAAE;MAAA;;MAAA,OAAMlD,KAAK,CAAC2I,gBAAN,mBAAuB3I,KAAK,CAACJ,MAA7B,mDAAuB,eAAcyB,GAArC,CAAN;;GAAd,UAAA,CAFF,CADF,CAdF,CADF,EAsBEqB,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,CAtBF,EAuBED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACG,CAAA3C,KAAK,SAAL,IAAAA,KAAK,WAAL,8BAAAA,KAAK,CAAEJ,MAAP,kEAAe2D,QAAf,KAA2B,KAA3B,GACCb,4BAAA,CAACW,WAAD;IAAapC,WAAW,EAAEjB,KAAK,CAACiB;IAAarB,MAAM,EAAEI,KAAK,CAACJ;IAAQW,SAAS,EAAEP,KAAK,CAACO;IAAWiC,iBAAiB,EAAExC,KAAK,CAACwC;GAAxH,CADD,GAECE,4BAAA,CAAC+D,WAAD;IAAaxF,WAAW,EAAEjB,KAAK,CAACiB;IAAarB,MAAM,EAAEI,KAAK,CAACJ;IAAQW,SAAS,EAAEP,KAAK,CAACO;IAAWiC,iBAAiB,EAAExC,KAAK,CAACwC;GAAxH,CAHJ,CAvBF,CADF;AAkCD,CA5CD;;SCxBgBoG,UAAWC;EACvB,OAAOtJ,IAAI,CAACuJ,KAAL,CAAWvJ,IAAI,CAACC,SAAL,CAAeqJ,GAAf,CAAX,CAAP;AACH;;ACaD,IAAME,yBAAyB,GAAGC,6BAAa,CAACC,0BAAD,CAA/C;;AAUA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAClJ,KAAD;EACxB,IAAMmJ,OAAO,GAAGC,KAAK,CAAC5L,IAAN,CAAW;IAAEF,MAAM,EAAE;GAArB,EAA2B+L,IAA3B,CAAgC,IAAhC,CAAhB;EACA,IAAMC,2BAA2B,GAAG,EAApC;;EACA,gBAA8BrJ,cAAQ,CAAU;IAAEsJ,EAAE,EAAE;GAAhB,CAAtC;MAAOC,OAAP;MAAgBC,UAAhB;;EACA,iBAAwDxJ,cAAQ,CAACmJ,KAAK,CAAC5L,IAAN,CAAW;IAAEF,MAAM,EAAEgM;GAArB,EAAoDD,IAApD,CAAyD,IAAzD,CAAD,CAAhE;MAAOK,oBAAP;MAA6BC,uBAA7B;;EACA,iBAAoC1J,cAAQ,CAA4B2B,SAA5B,CAA5C;MAAOgI,UAAP;;EACA,iBAAwC3J,cAAQ,CAAC,KAAD,CAAhD;MAAOoI,YAAP;MAAqBwB,eAArB;;EACA,IAAMC,oBAAoB,GAAGxJ,YAAM,CAAiC,EAAjC,CAAnC;;EACA,iBAA8BL,cAAQ,CAA0B;IAAEsJ,EAAE,EAAE;GAAhC,CAAtC;MAAOQ,OAAP;MAAgBC,UAAhB;;EACA,IAAMC,mBAAmB,GAAG3J,YAAM,CAAM,IAAN,CAAlC;EACA,IAAMwG,OAAO,GAAGxG,YAAM,CAAU,KAAV,CAAtB;EAEAO,eAAS,CAAC;IACRqJ,UAAU,CAAClK,KAAK,CAACmK,aAAP,CAAV;GADO,EAEN,CAACnK,KAAK,CAACmK,aAAP,CAFM,CAAT;;EAIA,IAAMD,UAAU,GAAG,SAAbA,UAAa,CAACE,gBAAD;IACjB,IAAIC,KAAK,GAA4BzB,SAAS,CAACwB,gBAAD,CAA9C;IACA,IAAIE,MAAM,GAAGC,YAAY,CAACF,KAAD,CAAzB;IACAG,oBAAoB,CAACH,KAAD,CAApB;IACAL,UAAU,CAACK,KAAD,CAAV;IACAZ,UAAU,CAACa,MAAD,CAAV;IACAG,2BAA2B,CAACH,MAAD,CAA3B;GANF;;EAQA,IAAME,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACH,KAAD;IAC3B,qDAAmBA,KAAK,CAACd,EAAzB,wCAA6B;MAAA,IAAlBmB,IAAkB;MAC3BZ,oBAAoB,CAAChJ,OAArB,CAA6B4J,IAAI,CAACrJ,GAAlC,IAAyCqJ,IAAzC;;GAFJ;;EAKA,IAAMH,YAAY,GAAG,SAAfA,YAAe,CAACH,gBAAD;IACnB,IAAIE,MAAM,GAAQ;MAAEf,EAAE,EAAE;KAAxB;IACAa,gBAAgB,CAACb,EAAjB,CAAoB9D,GAApB,CAAwB,UAAAkF,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAN;KAAzB,EAAiD3G,OAAjD,CAAyD,UAAA7C,CAAC;MACxDkJ,MAAM,CAACf,EAAP,CAAUvD,IAAV,CAAe5E,CAAf;KADF;IAGA,OAAOkJ,MAAP;GALF;;EAOAzJ,eAAS,CAAC;IACRgJ,eAAe,CAAC7J,KAAK,CAAC6K,QAAP,CAAf;GADO,EAEN,CAAC7K,KAAK,CAAC6K,QAAP,CAFM,CAAT;;EAUA,SAASC,cAAT,CAAwBR,MAAxB,EAAqCS,cAArC;IAEEC,YAAY,CAACD,cAAD,CAAZ;IACAtB,UAAU,CAACsB,cAAD,CAAV;IACAN,2BAA2B,CAACM,cAAD,CAA3B;;IACA,IAAIjE,OAAO,CAAChG,OAAR,IAAmB,KAAvB,EAA8B;MAC5BgG,OAAO,CAAChG,OAAR,GAAkB,IAAlB;MACA;;;IAEFd,KAAK,CAAC8K,cAAN,CAAqBC,cAArB;;;EAGF,SAASC,YAAT,CAAsBD,cAAtB;IACE,sDAAmBA,cAAc,CAACxB,EAAlC,2CAAsC;MAAA,IAA3BmB,IAA2B;;MACpC,IAAIZ,oBAAoB,CAAChJ,OAArB,CAA6B4J,IAAI,CAACzL,CAAlC,CAAJ,EAA0C;QACxC6K,oBAAoB,CAAChJ,OAArB,CAA6B4J,IAAI,CAACzL,CAAlC,EAAqC2L,MAArC,GAA8CF,IAA9C;;;;;EAKN,SAASO,WAAT,CAAqBtF,EAArB;IACE,IAAIuF,UAAU,GAAG;MAAE3B,EAAE,EAAEC,OAAO,CAACD,EAAR,CAAW4B,MAAX,CAAkB,UAAA/J,CAAC;QAAA,OAAIA,CAAC,CAACnC,CAAF,IAAO0G,EAAX;OAAnB;KAAvB;IAEA8D,UAAU,CAACyB,UAAD,CAAV;IAEA,IAAIE,UAAU,GAAG;MAAE7B,EAAE,EAAEQ,OAAO,CAACR,EAAR,CAAW4B,MAAX,CAAkB,UAAA/J,CAAC;QAAA,OAAIA,CAAC,CAACC,GAAF,IAASsE,EAAb;OAAnB;KAAvB;IACA6E,oBAAoB,CAACY,UAAD,CAApB;IACApB,UAAU,CAACoB,UAAD,CAAV;IACApL,KAAK,CAAC8K,cAAN,CAAqBI,UAArB;;;EAGF,SAASlD,UAAT,CAAoBpI,MAApB;IACEA,MAAM,CAACyL,WAAP,GAAqB,QAArB;IACArL,KAAK,CAACsL,cAAN,CAAqB1L,MAArB;;;EAGF,SAAS6K,2BAAT,CAAqCjB,OAArC;IACE,IAAI,CAACA,OAAL,EACE;IACF,IAAI+B,GAAG,GAAGjC,2BAAV;;IACA,sDAAqBE,OAAO,CAAC,IAAD,CAA5B,2CAAoC;MAAA,IAAzBc,MAAyB;MAClC,IAAIA,MAAM,CAACkB,CAAP,GAAWlB,MAAM,CAACmB,CAAlB,GAAsBF,GAA1B,EACEA,GAAG,GAAGjB,MAAM,CAACkB,CAAP,GAAWlB,MAAM,CAACmB,CAAxB;;;IAGJ,IAAIC,kBAAkB,GAAGH,GAAG,GAAG,CAA/B;IACAG,kBAAkB,GAAGA,kBAAkB,GAAGpC,2BAArB,GAAmDA,2BAAnD,GAAiFoC,kBAAtG;IACA/B,uBAAuB,CAACP,KAAK,CAAC5L,IAAN,CAAW;MAAEF,MAAM,EAAEoO;KAArB,EAA2CrC,IAA3C,CAAgD,IAAhD,CAAD,CAAvB;;;EAEF,OAAQ3G,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,EACG0F,YAAY,GAAGqB,oBAAoB,CAACjE,GAArB,CAAyB,UAACrE,CAAD,EAAInC,CAAJ;IAAA,OACvCkK,OAAO,CAAC1D,GAAR,CAAY,UAACrE,CAAD,EAAInC,CAAJ;MAAA,OACVyD,4BAAA,MAAA;QAAKrB,GAAG,EAAEpC;QACR4D,KAAK,EAAE;UACLE,MAAM,EAAE4I,eAAe,CAACC;;OAF5B,CADU;KAAZ,CADuC;GAAzB,CAAH,GAST,IAVN,CADF,EAeElJ,4BAAA,CAACqG,yBAAD;IAA2BpB,GAAG,EAAEsC;KAC1B0B;IACJnC,OAAO,EAAEA;IACTqC,WAAW,EAAC;IACZC,WAAW,EAAEzD;IACb0D,WAAW,EAAE1D;IACb2D,aAAa,EAAE;IACflB,cAAc,EAAEA;IAPlB,EASGf,OAAO,CAACR,EAAR,CAAW9D,GAAX,CAAe,UAAC7F,MAAD;IAAA;;IAAA,OAEd8C,4BAAA,MAAA;MAAKrB,GAAG,oBAAEzB,MAAM,CAACgL,MAAT,mDAAE,eAAe3L;KAAzB,EACEyD,4BAAA,CAACmF,UAAD;MACEQ,YAAY,EAAEA;MACdhH,GAAG,qBAAEzB,MAAM,CAACgL,MAAT,oDAAE,gBAAe3L;MACpBW,MAAM,EAAEA;MACRW,SAAS,EAAEuJ,oBAAoB,CAAChJ,OAArB,CAA6BlB,MAAM,CAACyB,GAApC;MACX8G,EAAE,EAAEvI;MACJqB,WAAW,EAAEjB,KAAK,CAACiB;MACnB2I,UAAU,EAAEA;MACZ1B,cAAc,EAAEF;MAChBW,gBAAgB,EAAEsC;MAClBzI,iBAAiB,EAAExC,KAAK,CAACwC;KAV3B,CADF,CAFc;GAAf,CATH,CAfF,CADF,CAJF,CADM,CAAR;AA+DD,CA9JD;;AAiKA,AAAO,IAAMmJ,eAAe,GAAG;EAC7BC,SAAS,EAAE,EADkB;EAE7BjJ,SAAS,EAAE,QAFkB;EAG7BsJ,IAAI,EAAE;IAAE1C,EAAE,EAAE,EAAN;IAAU2C,EAAE,EAAE,CAAd;IAAiBC,EAAE,EAAE,CAArB;IAAwBC,EAAE,EAAE,CAA5B;IAA+BC,GAAG,EAAE;GAHb;EAI7BC,gBAAgB,EAAE;AAJW,CAAxB;;ACtKP,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACvM,KAAD;;;EAChB,IAAMmK,aAAa,GAAG7J,YAAM,CAA0B;IAAEiJ,EAAE,EAAE;GAAhC,CAA5B;;EACA,gBAAoDtJ,cAAQ,CAA0B;IAAEsJ,EAAE,EAAE;GAAhC,CAA5D;MAAOiD,kBAAP;MAA2BC,qBAA3B;;EACA,iBAAwCxM,cAAQ,CAAU,KAAV,CAAhD;MAAOoI,YAAP;MAAqBqE,eAArB;;EAEA7L,eAAS,CAAC;IACRb,KAAK,CAACiB,WAAN,CAAkB0L,YAAlB,CAA+BxL,SAA/B,CAAyC,UAAAqI,OAAO;MAC9CW,aAAa,CAACrJ,OAAd,GAAwB0I,OAAxB;MACAiD,qBAAqB,CAAC7D,SAAS,CAACuB,aAAa,CAACrJ,OAAf,CAAV,CAArB;KAFF;IAKAd,KAAK,CAACiB,WAAN,CAAkB2L,cAAlB,CAAiCzL,SAAjC,CAA2C,UAAAC,CAAC;MAC1CsL,eAAe,CAACtL,CAAD,CAAf;KADF;IAGApB,KAAK,CAACiB,WAAN,CAAkB4L,WAAlB,CAA8B1L,SAA9B,CAAwC,UAAAwJ,CAAC;MACvCR,aAAa,CAACrJ,OAAd,CAAsByI,EAAtB,CAAyBvD,IAAzB,CAA8B2E,CAA9B;MACA8B,qBAAqB,CAAC7D,SAAS,CAACuB,aAAa,CAACrJ,OAAf,CAAV,CAArB;KAFF;GATO,EAaN,EAbM,CAAT;EAmBA,IAAI,CAAAd,KAAK,SAAL,IAAAA,KAAK,WAAL,4BAAAA,KAAK,CAAE9B,KAAP,8DAAcZ,MAAd,IAAuB,CAA3B,EACEsB,YAAY,CAACkO,OAAb,CAAqB,OAArB,EAA8B9M,KAA9B,aAA8BA,KAA9B,uBAA8BA,KAAK,CAAE9B,KAArC;;EAIF,IAAM6O,aAAa,GAAG,SAAhBA,aAAgB,CAACvD,OAAD;IACpB,IAAIwD,UAAU,GAA8B,EAA5C;IACArP,MAAM,CAACD,IAAP,CAAY8L,OAAZ,EAAqBvF,OAArB,CAA6B,UAAAgJ,QAAQ;MACnC,IAAIzD,OAAO,CAACyD,QAAD,CAAP,CAAkB3P,MAAlB,GAA2B,CAA/B,EAAkC;QAChCkM,OAAO,CAACyD,QAAD,CAAP,CAAkBxH,GAAlB,CAAsB,UAAA6E,MAAM;UAC1B0C,UAAU,CAAC1C,MAAM,CAACrL,CAAR,CAAV,GAAuBqL,MAAvB;SADF;QAGA;;KALJ;IAQA,IAAI4C,gBAAgB,GAAoB,EAAxC;IACA/C,aAAa,CAACrJ,OAAd,CAAsByI,EAAtB,CAAyBtF,OAAzB,CAAiC,UAAArE,MAAM;MACrC,IAAIoN,UAAU,CAACpN,MAAM,CAACyB,GAAR,CAAd,EAA4B;QAC1BzB,MAAM,CAACuN,cAAP,GAA2BH,UAAU,CAACpN,MAAM,CAACyB,GAAR,CAAV,CAAuB+L,CAAlD,SAAuDJ,UAAU,CAACpN,MAAM,CAACyB,GAAR,CAAV,CAAuBmK,CAA9E;QACA5L,MAAM,CAACyN,WAAP,GAAwBL,UAAU,CAACpN,MAAM,CAACyB,GAAR,CAAV,CAAuBsJ,CAA/C,SAAoDqC,UAAU,CAACpN,MAAM,CAACyB,GAAR,CAAV,CAAuBoK,CAA3E;QACA7L,MAAM,CAACgL,MAAP,GAAgBoC,UAAU,CAACpN,MAAM,CAACyB,GAAR,CAA1B;QACA6L,gBAAgB,CAAClH,IAAjB,CAAsBpG,MAAtB;;KALJ;IASAuK,aAAa,CAACrJ,OAAd,GAAwB;MAAEyI,EAAE,EAAE2D;KAA9B;IACAlN,KAAK,CAACsN,eAAN,CAAsBnD,aAAa,CAACrJ,OAApC;GArBF;;EA0BA,OACE4B,mBAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,mBAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,mBAAA,CAACwG,iBAAD;IAAmB1G,iBAAiB,EAAExC,KAAK,CAACwC;IAAmB2H,aAAa,EAAEqC;IAAoBvL,WAAW,EAAEjB,KAAK,CAACiB;IAAa4J,QAAQ,EAAExC;IAAcyC,cAAc,EAAEiC;IAAezB,cAAc,EAAE,wBAAC1L,MAAD;MAAA,OAA2BI,KAAK,CAACsL,cAAN,CAAqB1L,MAArB,CAA3B;;GAAzM,CADF,CADF,CADF;AAQD,CA/DD;;;;"}
@@ -286,8 +286,8 @@ var KpiChart = function KpiChart(props) {
286
286
  className: 'dl-full-hight dl-flex-content-center spinner-custome'
287
287
  }, React__default.createElement(ProgressSpinner, {
288
288
  style: {
289
- width: '100px',
290
- height: '100px'
289
+ width: '60px',
290
+ height: '60px'
291
291
  },
292
292
  strokeWidth: "4",
293
293
  animationDuration: "2s"
@@ -330,7 +330,7 @@ var CustomChart = function CustomChart(props) {
330
330
  }, project());
331
331
  };
332
332
 
333
- function BuildFusionChartObject(seriesMeasures, props, id) {
333
+ function BuildFusionChartObject(seriesMeasures, props) {
334
334
  var _props$widget;
335
335
 
336
336
  handelNullLabels(seriesMeasures);
@@ -382,7 +382,7 @@ function getPieObject(seriesMeasures, chart) {
382
382
  return chart;
383
383
  }
384
384
 
385
- function getDefaultChartobject(seriesMeasures, props, id) {
385
+ function getDefaultChartobject(seriesMeasures, props) {
386
386
  var chart = {};
387
387
  chart.type = "column2d";
388
388
  chart.width = "100%";
@@ -439,7 +439,6 @@ function buildDataSource(values) {
439
439
 
440
440
  function buildDataSet(seriesMeasures) {
441
441
  var dataSet = [];
442
- var position = 1;
443
442
  seriesMeasures.forEach(function (seriesMeasure) {
444
443
  var datas = seriesMeasure.SeriesMeasureVulues.map(function (e) {
445
444
  return {
@@ -452,9 +451,8 @@ function buildDataSet(seriesMeasures) {
452
451
  });
453
452
  dataSet.push({
454
453
  data: datas,
455
- seriesname: "series-" + position
454
+ seriesname: seriesMeasure.Name
456
455
  });
457
- position++;
458
456
  });
459
457
  return dataSet;
460
458
  }
@@ -550,7 +548,7 @@ var FusionChart = function FusionChart(props) {
550
548
  props.onSelectDataPoint({
551
549
  GroupById: dataObj.id.groupbyid,
552
550
  MeasureFieldId: dataObj.id.measurefieldid,
553
- Widget: props.widget
551
+ Widget: widget.current
554
552
  });
555
553
  };
556
554
 
@@ -577,8 +575,8 @@ var FusionChart = function FusionChart(props) {
577
575
  className: 'dl-full-hight dl-flex-content-center spinner-custome'
578
576
  }, React__default.createElement(ProgressSpinner, {
579
577
  style: {
580
- width: '100px',
581
- height: '100px'
578
+ width: '60px',
579
+ height: '60px'
582
580
  },
583
581
  strokeWidth: "4",
584
582
  animationDuration: "2s"
@@ -615,18 +613,20 @@ var WidgetCard = function WidgetCard(props, state) {
615
613
 
616
614
  return React__default.createElement("div", {
617
615
  className: "panel",
618
- key: props.el.i
619
- }, React__default.createElement("header", {
616
+ key: props.el.i,
620
617
  style: {
621
- paddingLeft: "5px"
618
+ cursor: props.isInEditMode ? 'move' : 'default'
622
619
  }
623
- }, React__default.createElement("h1", null, (props === null || props === void 0 ? void 0 : (_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.TypeCode) == "kpi" ? null : (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Title), props.isInEditMode ? React__default.createElement(Button, {
620
+ }, React__default.createElement("header", null, React__default.createElement("h1", null, (props === null || props === void 0 ? void 0 : (_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.TypeCode) == "kpi" ? null : (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Title), props.isInEditMode ? React__default.createElement(Button, {
624
621
  icon: "pi pi-ellipsis-v",
625
- className: "p-button-lg p-button-rounded p-button-text",
622
+ className: "p-button-rounded p-button-text",
626
623
  onClick: function onClick(e) {
627
624
  var _moreBtnToggle$curren2;
628
625
 
629
626
  return (_moreBtnToggle$curren2 = moreBtnToggle.current) === null || _moreBtnToggle$curren2 === void 0 ? void 0 : _moreBtnToggle$curren2.toggle(e);
627
+ },
628
+ style: {
629
+ color: "#292D30"
630
630
  }
631
631
  }) : null, React__default.createElement(OverlayPanel, {
632
632
  ref: moreBtnToggle,
@@ -642,6 +642,8 @@ var WidgetCard = function WidgetCard(props, state) {
642
642
  return props.deleteBtnClicked((_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.key);
643
643
  }
644
644
  }, "Remove")))), React__default.createElement("div", {
645
+ className: "dl-line"
646
+ }), React__default.createElement("div", {
645
647
  className: "dl-dashboard-widget"
646
648
  }, (props === null || props === void 0 ? void 0 : (_props$widget4 = props.widget) === null || _props$widget4 === void 0 ? void 0 : _props$widget4.TypeCode) == "kpi" ? React__default.createElement(CustomChart, {
647
649
  dataBinding: props.dataBinding,
@@ -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/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../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(from);\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\nimport { KpiChart } from \"../types/KpiChart\";\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 getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChart>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n \r\n \r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Tools } from \"../../../../services/tools\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { KpiChart } from \"../../../../types/KpiChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const hasDataError = useRef<boolean>(false);\r\n const [data, setData] = useState<KpiChart>();\r\n const [title, setTitle] = useState<string>();\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n onRefresh();\r\n }, [])\r\n\r\n const onRefresh = () => {\r\n props.customChartProps.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n setDataLoaded(false);\r\n Tools.Map(e, widget.current);\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n }, [props.customChartProps.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n setTitle(props?.customChartProps?.widget?.Title)\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n if (props.customChartProps?.widgetRef?.WidgetMeasures)\r\n measureFieldId = props.customChartProps?.widgetRef?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: props.customChartProps.widget\r\n });\r\n }\r\n\r\n return (\r\n !dataLoaded ?\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 !error ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"kpIHeader\"}>{title}</div>\r\n <div>{data?.Value} </div>\r\n </div>\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 default KpiChart;","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n return (\r\n <div style={{ height: '100%' }}>{project()}</div>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\nimport { FusionChartProps } from \"./FusionChart\";\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], props: FusionChartProps, id: string): ChartObject {\r\n handelNullLabels(seriesMeasures);\r\n let defaultChart = getDefaultChartobject(seriesMeasures, props, id);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return getBarObject(seriesMeasures, defaultChart);\r\n case 'line':\r\n return getLineObject(seriesMeasures, defaultChart);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, defaultChart);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, defaultChart);\r\n default:\r\n return defaultChart;\r\n }\r\n}\r\n\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.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\nfunction getBarObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollbar2d\";\r\n return chart;\r\n}\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollline2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"doughnut2d\";\r\n return chart;\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"pie2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDefaultChartobject(seriesMeasures: SeriesMeasure[], props: FusionChartProps, id: string): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"80%\";\r\n chart.dataFormat = \"json\";\r\n buildChartDataSource(chart, props, seriesMeasures);\r\n return chart;\r\n}\r\n\r\n\r\nfunction buildChartDataSource(chart: ChartObject, props: FusionChartProps, seriesMeasures: SeriesMeasure[]) {\r\n if (!seriesMeasures || !seriesMeasures[0]) return;\r\n let chartinfo = {\r\n theme: \"fusion\",\r\n scrollHeight: \"5\",\r\n scrollWidth: \"5\",\r\n scrollPadding: \"8\",\r\n flatScrollBars: \"1\",\r\n enableSlicing: \"0\",\r\n showLegend: props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\" ? \"1\" : \"0\",\r\n };\r\n\r\n // pie donut lines\r\n // smartLineColor: \"#ff0000\",\r\n // smartLineThickness: \"1\",\r\n // smartLineAlpha: \"100\",\r\n // isSmartLineSlanted: \"0\"\r\n if (props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\") {\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n categories: buildCategories(seriesMeasures),\r\n dataset: buildDataSet(seriesMeasures)\r\n };\r\n return;\r\n }\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n data: buildDataSource(seriesMeasures),\r\n };\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[]) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n data = values[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n value: e.Value,\r\n label: e.Label,\r\n id: { GroupById: e.GroupById, MeasureFieldId: values[0].MeasureFieldId }\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[]) {\r\n let dataSet: any[] = [];\r\n let position = 1;\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.SeriesMeasureVulues.map(e => {\r\n return { value: e.Value, id: { GroupById: e.GroupById, MeasureFieldId: seriesMeasure.MeasureFieldId } }\r\n });\r\n dataSet.push({ data: datas, seriesname: \"series-\" + position });\r\n position++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[]) {\r\n var categories = seriesMeasures[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n label: e.Label\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}","import React, { useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { Tools } from \"../../../services/tools\";\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = (props: FusionChartProps) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<any>({});\r\n const entered = useRef<boolean>(false);\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n onRefresh();\r\n }, []);\r\n\r\n const onRefresh = () => {\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n setDataLoaded(false);\r\n Tools.Map(e, widget.current);\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500); \r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n }, [props.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n const chart = BuildFusionChartObject(result.data, props, id);\r\n setArgs(chart);\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n Widget: props.widget\r\n });\r\n };\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n fChart.resizeTo(width, height);\r\n },\r\n });\r\n\r\n return (\r\n !dataLoaded ?\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 !error ?\r\n <div className={'db-fc-container'} ref={ref} id={id}><ReactFC {...args} fcEvent-dataplotClick={dataplotClick} onRender={renderComplete} /></div>\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 </div>\r\n )\r\n}\r\nexport default FusionChart;","import { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionChart\";\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 widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\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 style={{ paddingLeft: \"5px\" }}>\r\n <h1>{props?.widget?.TypeCode == \"kpi\" ? null : props.widget?.Title}</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 {props?.widget?.TypeCode == \"kpi\" ?\r\n <CustomChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} /> :\r\n <FusionChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n //<ApexChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\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 { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\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 const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\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 }, [props.editMode]);\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 // layoutsRef.current = changedLayouts;\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n // layoutsRef.current = newLayouts;\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n FillWidgetDictionary(newWidgets);\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 function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight-scroll\">\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={() => { }}\r\n onLayoutChange={onLayoutChange}\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 widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\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\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 DashboardDesigner from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\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 Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(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 setWidgetlayoutsState(deepClone(Widgetlayouts.current));\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\r\n\r\n const updateWidgets = (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 var newWidgetlayouts: ReactWidgetPM[] = [];\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 newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\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","getKpiData","KpiChart","props","useState","dataLoaded","setDataLoaded","error","setError","useRef","widgetRef","hasDataError","data","setData","title","setTitle","useEffect","current","customChartProps","onRefresh","dataBinding","onEditWidget","subscribe","e","key","setTimeout","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","React","className","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Value","src","CustomChart","project","TypeCode","BuildFusionChartObject","seriesMeasures","id","handelNullLabels","defaultChart","getDefaultChartobject","getBarObject","getLineObject","getPieObject","getDonutObject","forEach","element","SeriesMeasureVulues","value","Label","chart","type","dataFormat","buildChartDataSource","chartinfo","theme","scrollHeight","scrollWidth","scrollPadding","flatScrollBars","enableSlicing","showLegend","dataSource","categories","buildCategories","dataset","buildDataSet","buildDataSource","values","map","label","GroupById","dataSet","position","seriesMeasure","datas","push","seriesname","category","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","FusionChart","args","setArgs","fChart","setFchart","entered","Math","random","toString","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","renderComplete","useResizeObserver","onResize","resizeTo","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","paddingLeft","isInEditMode","Button","icon","toggle","OverlayPanel","deleteBtnClicked","deepClone","obj","parse","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","item","w","Layout","editMode","onLayoutChange","changedLayouts","UpdateWidget","deletePanel","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","max","y","h","newPlaceholderRows","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","EndPosition","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,CAAYF,IAAZ,CAAX;;IACA,yBAAgBE,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;;ICIaW,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,OAYIE,UAZJ,GAYI,oBAAWF,MAAX;IACI,OAAO,KAAKF,YAAL,CAAkBjB,IAAlB,WAAyC,KAAKoB,UAA9C,sBAA0ED,MAA1E,CAAP;GAbR;;EAAA;AAAA;;ACGA,IAAMG,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD;EACb,gBAAoCC,QAAQ,CAAU,KAAV,CAA5C;MAAOC,UAAP;MAAmBC,aAAnB;;EACA,iBAA0BF,QAAQ,EAAlC;MAAOG,KAAP;MAAcC,QAAd;;EAEA,IAAMT,MAAM,GAAGU,MAAM,EAArB;EACA,IAAMC,SAAS,GAAGD,MAAM,EAAxB;EACA,IAAME,YAAY,GAAGF,MAAM,CAAU,KAAV,CAA3B;;EACA,iBAAwBL,QAAQ,EAAhC;MAAOQ,IAAP;MAAaC,OAAb;;EACA,iBAA0BT,QAAQ,EAAlC;MAAOU,KAAP;MAAcC,QAAd;;EAEAC,SAAS,CAAC;IACNjB,MAAM,CAACkB,OAAP,GAAiBd,KAAK,CAACe,gBAAN,CAAuBnB,MAAxC;IACAoB,SAAS;GAFJ,EAGN,EAHM,CAAT;;EAKA,IAAMA,SAAS,GAAG,SAAZA,SAAY;;;IACd,yBAAAhB,KAAK,CAACe,gBAAN,CAAuBE,WAAvB,gFAAoCC,YAApC,CAAiDC,SAAjD,CAA2D,UAAAC,CAAC;;;MACxD,IAAIA,CAAC,CAACC,GAAF,wBAASzB,MAAM,CAACkB,OAAhB,oDAAS,gBAAgBO,GAAzB,CAAJ,EAAkC;QAC9BlB,aAAa,CAAC,KAAD,CAAb;QACAzD,KAAK,CAACa,GAAN,CAAU6D,CAAV,EAAaxB,MAAM,CAACkB,OAApB;QACAQ,UAAU,CAAC;UACPC,WAAW;SADL,EAEP,GAFO,CAAV;;KAJR;GADJ;;EAYAV,SAAS,CAAC;IACNN,SAAS,CAACO,OAAV,GAAoBd,KAAK,CAACe,gBAAN,CAAuBR,SAA3C;IACAe,UAAU,CAAC;MACPC,WAAW;KADL,EAEP,GAFO,CAAV;GAFK,EAKN,EALM,CAAT;EAOAV,SAAS,CAAC;IACNN,SAAS,CAACO,OAAV,GAAoBd,KAAK,CAACe,gBAAN,CAAuBR,SAA3C;GADK,EAEN,CAACP,KAAK,CAACe,gBAAN,CAAuBR,SAAxB,CAFM,CAAT;;EAIA,IAAMgB,WAAW,GAAG,SAAdA,WAAc;;;IAChBX,QAAQ,CAACZ,KAAD,aAACA,KAAD,iDAACA,KAAK,CAAEe,gBAAR,qFAAC,uBAAyBnB,MAA1B,2DAAC,uBAAiC4B,KAAlC,CAAR;IACA,IAAIC,yBAAyB,GAAG,IAAIhC,yBAAJ,EAAhC;;IACA,IAAIiC,UAAU,gBAAa9B,MAAM,CAACkB,OAApB,CAAd;;IACAY,UAAU,CAACC,QAAX,GAAsBC,SAAtB;IACAH,yBAAyB,CAAC3B,UAA1B,CAAqC4B,UAArC,EAAkEG,IAAlE,CAAuE,UAAAC,MAAM;MACzEpB,OAAO,CAACoB,MAAM,CAACrB,IAAR,CAAP;MACAN,aAAa,CAAC,IAAD,CAAb;KAFJ,EAGG,UAAAC,KAAK;;;MACJ2B,OAAO,CAACC,GAAR,CAAY,OAAZ,EAAqB5B,KAArB;MACA,IAAIA,KAAJ,aAAIA,KAAJ,kCAAIA,KAAK,CAAE6B,QAAX,oEAAI,gBAAiBxB,IAArB,iDAAI,qBAAuByB,YAA3B,EAAyC7B,QAAQ,CAACD,KAAD,aAACA,KAAD,2CAACA,KAAK,CAAE6B,QAAR,8EAAC,iBAAiBxB,IAAlB,0DAAC,sBAAuByB,YAAxB,CAAR,CAAzC,KACK7B,QAAQ,CAACD,KAAK,CAAC+B,OAAP,CAAR;MACLhC,aAAa,CAAC,IAAD,CAAb;KAPJ;GALJ;;EAgBA,IAAMiC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,IAAIC,cAAJ;IACA,8BAAIrC,KAAK,CAACe,gBAAV,6EAAI,uBAAwBR,SAA5B,mDAAI,uBAAmC+B,cAAvC,EACID,cAAc,6BAAGrC,KAAK,CAACe,gBAAT,qFAAG,uBAAwBR,SAA3B,qFAAG,uBAAmC+B,cAAnC,CAAkD,CAAlD,CAAH,2DAAG,uBAAsDC,cAAvE;IACJvC,KAAK,CAACe,gBAAN,CAAuByB,iBAAvB,CAAyC;MACrCD,cAAc,EAAEF,cADqB;MAErCI,MAAM,EAAEzC,KAAK,CAACe,gBAAN,CAAuBnB;KAFnC;GAJJ;;EAUA,OACI,CAACM,UAAD,GACIwC,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,CAACE,eAAD;IAAiBC,KAAK,EAAE;MAAEC,KAAK,EAAE,OAAT;MAAkBC,MAAM,EAAE;;IAAWC,WAAW,EAAC;IAAIC,iBAAiB,EAAC;GAA/F,CADJ,CADJ,GAKI,CAAC7C,KAAD,GACIsC,4BAAA,MAAA;IAAKC,SAAS,EAAE;IAAgBO,OAAO,EAAEd;GAAzC,EACIM,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EAA8BhC,KAA9B,CADJ,EAEI+B,4BAAA,MAAA,MAAA,EAAMjC,IAAN,aAAMA,IAAN,uBAAMA,IAAI,CAAE0C,KAAZ,KAAA,CAFJ,CADJ,GAKMT,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACID,4BAAA,MAAA;IAAKI,KAAK,EAAE;IAAKM,GAAG,EAAE;GAAtB,CADJ,EAEIV,4BAAA,OAAA;IAAMC,SAAS,EAAC;GAAhB,EAAkCvC,KAAlC,CAFJ,CADF,CAXd;AAoBH,CApFD;;ACAA,IAAMiD,WAAW,GAAG,SAAdA,WAAc,CAACrD,KAAD;EAChB,IAAMsD,OAAO,GAAG,SAAVA,OAAU;;;IACZ,yBAAQtD,KAAK,CAACJ,MAAd,kDAAQ,cAAc2D,QAAtB;MACI,KAAK,KAAL;QAAY,OAAOb,4BAAA,CAAC3C,QAAD;UAAUgB,gBAAgB,EAAEf;SAA5B,CAAP;;MACZ;QAAS,OAAO0C,4BAAA,MAAA,MAAA,gBAAA,CAAP;;GAHjB;;EAMA,OACIA,4BAAA,MAAA;IAAKG,KAAK,EAAE;MAAEE,MAAM,EAAE;;GAAtB,EAAiCO,OAAO,EAAxC,CADJ;AAGH,CAVD;;SCTgBE,uBAAuBC,gBAAiCzD,OAAyB0D;;;EAC7FC,gBAAgB,CAACF,cAAD,CAAhB;EACA,IAAIG,YAAY,GAAGC,qBAAqB,CAACJ,cAAD,EAAiBzD,KAAjB,AAAA,CAAxC;;EACA,yBAAQA,KAAK,CAACJ,MAAd,kDAAQ,cAAc2D,QAAtB;IACI,KAAK,KAAL;MACI,OAAOO,YAAY,CAACL,cAAD,EAAiBG,YAAjB,CAAnB;;IACJ,KAAK,MAAL;MACI,OAAOG,aAAa,CAACN,cAAD,EAAiBG,YAAjB,CAApB;;IACJ,KAAK,KAAL;MACI,OAAOI,YAAY,CAACP,cAAD,EAAiBG,YAAjB,CAAnB;;IACJ,KAAK,OAAL;MACI,OAAOK,cAAc,CAACR,cAAD,EAAiBG,YAAjB,CAArB;;IACJ;MACI,OAAOA,YAAP;;AAEX;;AAGD,SAASD,gBAAT,CAA0BF,cAA1B;EACIA,cAAc,CAACS,OAAf,CAAuB,UAAAC,OAAO;IAC1BA,OAAO,CAACC,mBAAR,CAA4BF,OAA5B,CAAoC,UAAAG,KAAK;MACrC,IAAI,CAACA,KAAK,CAACC,KAAP,IAAgBD,KAAK,CAACC,KAAN,IAAe,EAAnC,EACID,KAAK,CAACC,KAAN,GAAc,aAAd;KAFR;GADJ;AAMH;;AAED,SAASR,YAAT,CAAsBL,cAAtB,EAAuDc,KAAvD;EACIA,KAAK,CAACC,IAAN,GAAa,aAAb;EACA,OAAOD,KAAP;AACH;;AAED,SAASR,aAAT,CAAuBN,cAAvB,EAAwDc,KAAxD;EACIA,KAAK,CAACC,IAAN,GAAa,cAAb;EACA,OAAOD,KAAP;AACH;;AAED,SAASN,cAAT,CAAwBR,cAAxB,EAAyDc,KAAzD;EACIA,KAAK,CAACC,IAAN,GAAa,YAAb;EACA,OAAOD,KAAP;AACH;;AAED,SAASP,YAAT,CAAsBP,cAAtB,EAAuDc,KAAvD;EACIA,KAAK,CAACC,IAAN,GAAa,OAAb;EACA,OAAOD,KAAP;AACH;;AAED,SAASV,qBAAT,CAA+BJ,cAA/B,EAAgEzD,KAAhE,EAAyF0D,EAAzF;EACI,IAAIa,KAAK,GAAG,EAAZ;EACAA,KAAK,CAACC,IAAN,GAAa,UAAb;EACAD,KAAK,CAACzB,KAAN,GAAc,MAAd;EACAyB,KAAK,CAACxB,MAAN,GAAe,KAAf;EACAwB,KAAK,CAACE,UAAN,GAAmB,MAAnB;EACAC,oBAAoB,CAACH,KAAD,EAAQvE,KAAR,EAAeyD,cAAf,CAApB;EACA,OAAOc,KAAP;AACH;;AAGD,SAASG,oBAAT,CAA8BH,KAA9B,EAAkDvE,KAAlD,EAA2EyD,cAA3E;;;EACI,IAAI,CAACA,cAAD,IAAmB,CAACA,cAAc,CAAC,CAAD,CAAtC,EAA2C;EAC3C,IAAIkB,SAAS,GAAG;IACZC,KAAK,EAAE,QADK;IAEZC,YAAY,EAAE,GAFF;IAGZC,WAAW,EAAE,GAHD;IAIZC,aAAa,EAAE,GAJH;IAKZC,cAAc,EAAE,GALJ;IAMZC,aAAa,EAAE,GANH;IAOZC,UAAU,EAAE,mBAAAlF,KAAK,CAACJ,MAAN,kEAAc2D,QAAd,KAA0B,KAA1B,IAAmC,mBAAAvD,KAAK,CAACJ,MAAN,kEAAc2D,QAAd,KAA0B,MAA7D,GAAsE,GAAtE,GAA4E;GAP5F;;EAeA,IAAI,mBAAAvD,KAAK,CAACJ,MAAN,kEAAc2D,QAAd,KAA0B,KAA1B,IAAmC,mBAAAvD,KAAK,CAACJ,MAAN,kEAAc2D,QAAd,KAA0B,MAAjE,EAAyE;IACrEgB,KAAK,CAACY,UAAN,GAAmB;MACfZ,KAAK,EAAEI,SADQ;MAEfS,UAAU,EAAEC,eAAe,CAAC5B,cAAD,CAFZ;MAGf6B,OAAO,EAAEC,YAAY,CAAC9B,cAAD;KAHzB;IAKA;;;EAEJc,KAAK,CAACY,UAAN,GAAmB;IACfZ,KAAK,EAAEI,SADQ;IAEflE,IAAI,EAAE+E,eAAe,CAAC/B,cAAD;GAFzB;AAIH;;AAED,SAAS+B,eAAT,CAAyBC,MAAzB;EACI,IAAIhF,IAAI,GAAU,EAAlB;EACA,IAAI,CAACgF,MAAD,IAAW,CAACA,MAAM,CAAC,CAAD,CAAtB,EAA2B,OAAOhF,IAAP;EAC3BA,IAAI,GAAGgF,MAAM,CAAC,CAAD,CAAN,CAAUrB,mBAAV,CAA8BsB,GAA9B,CAAkC,UAACtE,CAAD;IACrC,OAAO;MACHiD,KAAK,EAAEjD,CAAC,CAAC+B,KADN;MAEHwC,KAAK,EAAEvE,CAAC,CAACkD,KAFN;MAGHZ,EAAE,EAAE;QAAEkC,SAAS,EAAExE,CAAC,CAACwE,SAAf;QAA0BrD,cAAc,EAAEkD,MAAM,CAAC,CAAD,CAAN,CAAUlD;;KAH5D;GADG,CAAP;EAOA,OAAO9B,IAAP;AACH;;AAED,SAAS8E,YAAT,CAAsB9B,cAAtB;EACI,IAAIoC,OAAO,GAAU,EAArB;EACA,IAAIC,QAAQ,GAAG,CAAf;EACArC,cAAc,CAACS,OAAf,CAAuB,UAAA6B,aAAa;IAChC,IAAIC,KAAK,GAAGD,aAAa,CAAC3B,mBAAd,CAAkCsB,GAAlC,CAAsC,UAAAtE,CAAC;MAC/C,OAAO;QAAEiD,KAAK,EAAEjD,CAAC,CAAC+B,KAAX;QAAkBO,EAAE,EAAE;UAAEkC,SAAS,EAAExE,CAAC,CAACwE,SAAf;UAA0BrD,cAAc,EAAEwD,aAAa,CAACxD;;OAArF;KADQ,CAAZ;IAGAsD,OAAO,CAACI,IAAR,CAAa;MAAExF,IAAI,EAAEuF,KAAR;MAAeE,UAAU,EAAE,YAAYJ;KAApD;IACAA,QAAQ;GALZ;EAOA,OAAOD,OAAP;AACH;;AAED,SAASR,eAAT,CAAyB5B,cAAzB;EACI,IAAI2B,UAAU,GAAG3B,cAAc,CAAC,CAAD,CAAd,CAAkBW,mBAAlB,CAAsCsB,GAAtC,CAA0C,UAACtE,CAAD;IACvD,OAAO;MACHuE,KAAK,EAAEvE,CAAC,CAACkD;KADb;GADa,CAAjB;EAKA,IAAIxC,MAAM,GAAU,EAApB;EACAA,MAAM,CAACmE,IAAP,CAAY;IAAEE,QAAQ,EAAEf;GAAxB;EACA,OAAOtD,MAAP;AACH;;ACjHDsE,OAAO,CAACC,MAAR,CAAeC,YAAf,EAA6BC,MAA7B,EAAqCC,WAArC;;AAQA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACzG,KAAD;EAChB,gBAAoCC,QAAQ,CAAU,KAAV,CAA5C;MAAOC,UAAP;MAAmBC,aAAnB;;EACA,iBAA0BF,QAAQ,EAAlC;MAAOG,KAAP;MAAcC,QAAd;;EAEA,IAAMT,MAAM,GAAGU,MAAM,EAArB;EACA,IAAMC,SAAS,GAAGD,MAAM,EAAxB;;EACA,iBAAwBL,QAAQ,CAAc,EAAd,CAAhC;MAAOyG,IAAP;MAAaC,OAAb;;EACA,iBAA4B1G,QAAQ,CAAM,EAAN,CAApC;MAAO2G,MAAP;MAAeC,SAAf;;EACA,IAAMC,OAAO,GAAGxG,MAAM,CAAU,KAAV,CAAtB;EACA,IAAMoD,EAAE,GAAG,CAACqD,IAAI,CAACC,MAAL,KAAgB,CAAjB,EAAoBC,QAApB,CAA6B,EAA7B,EAAiC7J,SAAjC,CAA2C,CAA3C,CAAX;EAEAyD,SAAS,CAAC;IACNjB,MAAM,CAACkB,OAAP,GAAiBd,KAAK,CAACJ,MAAvB;IACAoB,SAAS;GAFJ,EAGN,EAHM,CAAT;;EAKA,IAAMA,SAAS,GAAG,SAAZA,SAAY;;;IACd,sBAAAhB,KAAK,CAACiB,WAAN,0EAAmBC,YAAnB,CAAgCC,SAAhC,CAA0C,UAAAC,CAAC;;;MACvC,IAAIA,CAAC,CAACC,GAAF,wBAASzB,MAAM,CAACkB,OAAhB,oDAAS,gBAAgBO,GAAzB,CAAJ,EAAkC;QAC9BlB,aAAa,CAAC,KAAD,CAAb;QACAzD,KAAK,CAACa,GAAN,CAAU6D,CAAV,EAAaxB,MAAM,CAACkB,OAApB;QACAQ,UAAU,CAAC;UACPC,WAAW;SADL,EAEP,GAFO,CAAV;;KAJR;GADJ;;EAYAV,SAAS,CAAC;IACNN,SAAS,CAACO,OAAV,GAAoBd,KAAK,CAACO,SAA1B;IACAe,UAAU,CAAC;MACPC,WAAW;KADL,EAEP,GAFO,CAAV;GAFK,EAKN,EALM,CAAT;EAOAV,SAAS,CAAC;IACNN,SAAS,CAACO,OAAV,GAAoBd,KAAK,CAACO,SAA1B;GADK,EAEN,CAACP,KAAK,CAACO,SAAP,CAFM,CAAT;;EAIA,IAAMgB,WAAW,GAAG,SAAdA,WAAc;IAChB,IAAIE,yBAAyB,GAAG,IAAIhC,yBAAJ,EAAhC;;IACA,IAAIiC,UAAU,gBAAa9B,MAAM,CAACkB,OAApB,CAAd;;IACAY,UAAU,CAACC,QAAX,GAAsBC,SAAtB;IACAH,yBAAyB,CAAC9B,OAA1B,CAAkC+B,UAAlC,EAA+DG,IAA/D,CAAoE,UAAAC,MAAM;MACtE,IAAMyC,KAAK,GAAGf,sBAAsB,CAAC1B,MAAM,CAACrB,IAAR,EAAcT,KAAd,AAAA,CAApC;MACA2G,OAAO,CAACpC,KAAD,CAAP;MACApE,aAAa,CAAC,IAAD,CAAb;KAHJ,EAIG,UAAAC,KAAK;;;MACJ2B,OAAO,CAACC,GAAR,CAAY,OAAZ,EAAqB5B,KAArB;MACA,IAAIA,KAAJ,aAAIA,KAAJ,kCAAIA,KAAK,CAAE6B,QAAX,oEAAI,gBAAiBxB,IAArB,iDAAI,qBAAuByB,YAA3B,EAAyC7B,QAAQ,CAACD,KAAD,aAACA,KAAD,2CAACA,KAAK,CAAE6B,QAAR,8EAAC,iBAAiBxB,IAAlB,0DAAC,sBAAuByB,YAAxB,CAAR,CAAzC,KACK7B,QAAQ,CAACD,KAAK,CAAC+B,OAAP,CAAR;MACLhC,aAAa,CAAC,IAAD,CAAb;KARJ;GAJJ;;EAgBA,IAAM+G,aAAa,GAAG,SAAhBA,aAAgB,CAACC,QAAD,EAAgBC,OAAhB;IAClBpH,KAAK,CAACwC,iBAAN,CAAwB;MACpBoD,SAAS,EAAEwB,OAAO,CAAC1D,EAAR,CAAW2D,SADF;MAEpB9E,cAAc,EAAE6E,OAAO,CAAC1D,EAAR,CAAW4D,cAFP;MAGpB7E,MAAM,EAAEzC,KAAK,CAACJ;KAHlB;GADJ;;EAQA,IAAM2H,cAAc,GAAG,SAAjBA,cAAiB,CAAChD,KAAD;IACnBsC,SAAS,CAACtC,KAAD,CAAT;GADJ;;EAIA,yBAAgBiD,iBAAiB,CAAiB;IAC9CC,QAAQ,EAAE;UAAG3E,aAAAA;UAAOC,cAAAA;;MAChB,IAAI+D,OAAO,CAAChG,OAAR,IAAmB,KAAvB,EAA8B;QAC1BgG,OAAO,CAAChG,OAAR,GAAkB,IAAlB;QACA;;;MAEJ8F,MAAM,CAACc,QAAP,CAAgB5E,KAAhB,EAAuBC,MAAvB;;GANyB,CAAjC;MAAQ4E,GAAR,sBAAQA,GAAR;;EAUA,OACI,CAACzH,UAAD,GACIwC,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,CAACE,eAAD;IAAiBC,KAAK,EAAE;MAAEC,KAAK,EAAE,OAAT;MAAkBC,MAAM,EAAE;;IAAWC,WAAW,EAAC;IAAIC,iBAAiB,EAAC;GAA/F,CADJ,CADJ,GAKI,CAAC7C,KAAD,GACIsC,4BAAA,MAAA;IAAKC,SAAS,EAAE;IAAmBgF,GAAG,EAAEA;IAAKjE,EAAE,EAAEA;GAAjD,EAAqDhB,4BAAA,CAAC0D,OAAD,oBAAaM;6BAA6BQ;IAAeU,QAAQ,EAAEL;IAAnE,CAArD,CADJ,GAEM7E,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACID,4BAAA,MAAA;IAAKI,KAAK,EAAE;IAAKM,GAAG,EAAE;GAAtB,CADJ,EAEIV,4BAAA,OAAA;IAAMC,SAAS,EAAC;GAAhB,EAAkCvC,KAAlC,CAFJ,CADF,CARd;AAeH,CA5FD;;ACEA,IAAMyH,UAAU,GAAG,SAAbA,UAAa,CAAC7H,KAAD,EAAyB8H,KAAzB;;;EACjB,IAAMC,aAAa,GAAGzH,MAAM,CAAe,IAAf,CAA5B;;EAGA,IAAM0H,UAAU,GAAG,SAAbA,UAAa;;;IACjB,yBAAAD,aAAa,CAACjH,OAAd,gFAAuBmH,IAAvB;IACAjI,KAAK,CAACkI,cAAN,CAAqBlI,KAAK,CAACJ,MAA3B;GAFF;;EAMA,OACE8C,4BAAA,MAAA;IAAKC,SAAS,EAAC;IAAQtB,GAAG,EAAErB,KAAK,CAACmI,EAAN,CAASlJ;GAArC,EACEyD,4BAAA,SAAA;IAAQG,KAAK,EAAE;MAAEuF,WAAW,EAAE;;GAA9B,EACE1F,4BAAA,KAAA,MAAA,EAAK,CAAA1C,KAAK,SAAL,IAAAA,KAAK,WAAL,6BAAAA,KAAK,CAAEJ,MAAP,gEAAe2D,QAAf,KAA2B,KAA3B,GAAmC,IAAnC,qBAA0CvD,KAAK,CAACJ,MAAhD,mDAA0C,eAAc4B,KAA7D,CADF,EAGIxB,KAAK,CAACqI,YAAN,GACE3F,4BAAA,CAAC4F,MAAD;IACEC,IAAI,EAAC;IACL5F,SAAS,EAAC;IACVO,OAAO,EAAE,iBAAC9B,CAAD;MAAA;;MAAA,iCAAO2G,aAAa,CAACjH,OAArB,2DAAO,uBAAuB0H,MAAvB,CAA8BpH,CAA9B,CAAP;;GAHX,CADF,GAMI,IATR,EAaEsB,4BAAA,CAAC+F,YAAD;IAAcd,GAAG,EAAEI;IAAepF,SAAS,EAAC;GAA5C,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKQ,OAAO,EAAE8E;GAAd,UAAA,CADF,EAEEtF,4BAAA,MAAA;IAAKQ,OAAO,EAAE;MAAA;;MAAA,OAAMlD,KAAK,CAAC0I,gBAAN,mBAAuB1I,KAAK,CAACJ,MAA7B,mDAAuB,eAAcyB,GAArC,CAAN;;GAAd,UAAA,CAFF,CADF,CAbF,CADF,EAsBEqB,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACG,CAAA3C,KAAK,SAAL,IAAAA,KAAK,WAAL,8BAAAA,KAAK,CAAEJ,MAAP,kEAAe2D,QAAf,KAA2B,KAA3B,GACCb,4BAAA,CAACW,WAAD;IAAapC,WAAW,EAAEjB,KAAK,CAACiB;IAAarB,MAAM,EAAEI,KAAK,CAACJ;IAAQW,SAAS,EAAEP,KAAK,CAACO;IAAWiC,iBAAiB,EAAExC,KAAK,CAACwC;GAAxH,CADD,GAECE,4BAAA,CAAC+D,WAAD;IAAaxF,WAAW,EAAEjB,KAAK,CAACiB;IAAarB,MAAM,EAAEI,KAAK,CAACJ;IAAQW,SAAS,EAAEP,KAAK,CAACO;IAAWiC,iBAAiB,EAAExC,KAAK,CAACwC;GAAxH,CAHJ,CAtBF,CADF;AAiCD,CA3CD;;SCzBgBmG,UAAWC;EACvB,OAAOrJ,IAAI,CAACsJ,KAAL,CAAWtJ,IAAI,CAACC,SAAL,CAAeoJ,GAAf,CAAX,CAAP;AACH;;ACaD,IAAME,yBAAyB,GAAGC,aAAa,CAACC,UAAD,CAA/C;;AAUA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACjJ,KAAD;EACxB,IAAMkJ,OAAO,GAAGC,KAAK,CAAC3L,IAAN,CAAW;IAAEF,MAAM,EAAE;GAArB,EAA2B8L,IAA3B,CAAgC,IAAhC,CAAhB;EACA,IAAMC,2BAA2B,GAAG,EAApC;;EACA,gBAA8BpJ,QAAQ,CAAU;IAAEqJ,EAAE,EAAE;GAAhB,CAAtC;MAAOC,OAAP;MAAgBC,UAAhB;;EACA,iBAAwDvJ,QAAQ,CAACkJ,KAAK,CAAC3L,IAAN,CAAW;IAAEF,MAAM,EAAE+L;GAArB,EAAoDD,IAApD,CAAyD,IAAzD,CAAD,CAAhE;MAAOK,oBAAP;MAA6BC,uBAA7B;;EACA,iBAAoCzJ,QAAQ,CAA4B2B,SAA5B,CAA5C;MAAO+H,UAAP;;EACA,iBAAwC1J,QAAQ,CAAC,KAAD,CAAhD;MAAOoI,YAAP;MAAqBuB,eAArB;;EACA,IAAMC,oBAAoB,GAAGvJ,MAAM,CAAiC,EAAjC,CAAnC;;EACA,iBAA8BL,QAAQ,CAA0B;IAAEqJ,EAAE,EAAE;GAAhC,CAAtC;MAAOQ,OAAP;MAAgBC,UAAhB;;EACA,IAAMC,mBAAmB,GAAG1J,MAAM,CAAM,IAAN,CAAlC;EACA,IAAMwG,OAAO,GAAGxG,MAAM,CAAU,KAAV,CAAtB;EAEAO,SAAS,CAAC;IACRoJ,UAAU,CAACjK,KAAK,CAACkK,aAAP,CAAV;GADO,EAEN,CAAClK,KAAK,CAACkK,aAAP,CAFM,CAAT;;EAIA,IAAMD,UAAU,GAAG,SAAbA,UAAa,CAACE,gBAAD;IACjB,IAAIC,KAAK,GAA4BzB,SAAS,CAACwB,gBAAD,CAA9C;IACA,IAAIE,MAAM,GAAGC,YAAY,CAACF,KAAD,CAAzB;IACAG,oBAAoB,CAACH,KAAD,CAApB;IACAL,UAAU,CAACK,KAAD,CAAV;IACAZ,UAAU,CAACa,MAAD,CAAV;IACAG,2BAA2B,CAACH,MAAD,CAA3B;GANF;;EAQA,IAAME,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACH,KAAD;IAC3B,qDAAmBA,KAAK,CAACd,EAAzB,wCAA6B;MAAA,IAAlBmB,IAAkB;MAC3BZ,oBAAoB,CAAC/I,OAArB,CAA6B2J,IAAI,CAACpJ,GAAlC,IAAyCoJ,IAAzC;;GAFJ;;EAKA,IAAMH,YAAY,GAAG,SAAfA,YAAe,CAACH,gBAAD;IACnB,IAAIE,MAAM,GAAQ;MAAEf,EAAE,EAAE;KAAxB;IACAa,gBAAgB,CAACb,EAAjB,CAAoB5D,GAApB,CAAwB,UAAAgF,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAN;KAAzB,EAAiDzG,OAAjD,CAAyD,UAAA9C,CAAC;MACxDiJ,MAAM,CAACf,EAAP,CAAUrD,IAAV,CAAe7E,CAAf;KADF;IAGA,OAAOiJ,MAAP;GALF;;EAOAxJ,SAAS,CAAC;IACR+I,eAAe,CAAC5J,KAAK,CAAC4K,QAAP,CAAf;GADO,EAEN,CAAC5K,KAAK,CAAC4K,QAAP,CAFM,CAAT;;EAUA,SAASC,cAAT,CAAwBR,MAAxB,EAAqCS,cAArC;IAEEC,YAAY,CAACD,cAAD,CAAZ;IACAtB,UAAU,CAACsB,cAAD,CAAV;IACAN,2BAA2B,CAACM,cAAD,CAA3B;;IACA,IAAIhE,OAAO,CAAChG,OAAR,IAAmB,KAAvB,EAA8B;MAC5BgG,OAAO,CAAChG,OAAR,GAAkB,IAAlB;MACA;;;IAEFd,KAAK,CAAC6K,cAAN,CAAqBC,cAArB;;;EAGF,SAASC,YAAT,CAAsBD,cAAtB;IACE,sDAAmBA,cAAc,CAACxB,EAAlC,2CAAsC;MAAA,IAA3BmB,IAA2B;;MACpC,IAAIZ,oBAAoB,CAAC/I,OAArB,CAA6B2J,IAAI,CAACxL,CAAlC,CAAJ,EAA0C;QACxC4K,oBAAoB,CAAC/I,OAArB,CAA6B2J,IAAI,CAACxL,CAAlC,EAAqC0L,MAArC,GAA8CF,IAA9C;;;;;EAKN,SAASO,WAAT,CAAqBtH,EAArB;IACE,IAAIuH,UAAU,GAAG;MAAE3B,EAAE,EAAEC,OAAO,CAACD,EAAR,CAAW4B,MAAX,CAAkB,UAAA9J,CAAC;QAAA,OAAIA,CAAC,CAACnC,CAAF,IAAOyE,EAAX;OAAnB;KAAvB;IAEA8F,UAAU,CAACyB,UAAD,CAAV;IAEA,IAAIE,UAAU,GAAG;MAAE7B,EAAE,EAAEQ,OAAO,CAACR,EAAR,CAAW4B,MAAX,CAAkB,UAAA9J,CAAC;QAAA,OAAIA,CAAC,CAACC,GAAF,IAASqC,EAAb;OAAnB;KAAvB;IACA6G,oBAAoB,CAACY,UAAD,CAApB;IACApB,UAAU,CAACoB,UAAD,CAAV;IACAnL,KAAK,CAAC6K,cAAN,CAAqBI,UAArB;;;EAGF,SAASjD,UAAT,CAAoBpI,MAApB;IACEA,MAAM,CAACwL,WAAP,GAAqB,QAArB;IACApL,KAAK,CAACqL,cAAN,CAAqBzL,MAArB;;;EAGF,SAAS4K,2BAAT,CAAqCjB,OAArC;IACE,IAAI,CAACA,OAAL,EACE;IACF,IAAI+B,GAAG,GAAGjC,2BAAV;;IACA,sDAAqBE,OAAO,CAAC,IAAD,CAA5B,2CAAoC;MAAA,IAAzBc,MAAyB;MAClC,IAAIA,MAAM,CAACkB,CAAP,GAAWlB,MAAM,CAACmB,CAAlB,GAAsBF,GAA1B,EACEA,GAAG,GAAGjB,MAAM,CAACkB,CAAP,GAAWlB,MAAM,CAACmB,CAAxB;;;IAGJ,IAAIC,kBAAkB,GAAGH,GAAG,GAAG,CAA/B;IACAG,kBAAkB,GAAGA,kBAAkB,GAAGpC,2BAArB,GAAmDA,2BAAnD,GAAiFoC,kBAAtG;IACA/B,uBAAuB,CAACP,KAAK,CAAC3L,IAAN,CAAW;MAAEF,MAAM,EAAEmO;KAArB,EAA2CrC,IAA3C,CAAgD,IAAhD,CAAD,CAAvB;;;EAEF,OAAQ1G,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,EACG0F,YAAY,GAAGoB,oBAAoB,CAAC/D,GAArB,CAAyB,UAACtE,CAAD,EAAInC,CAAJ;IAAA,OACvCiK,OAAO,CAACxD,GAAR,CAAY,UAACtE,CAAD,EAAInC,CAAJ;MAAA,OACVyD,4BAAA,MAAA;QAAKrB,GAAG,EAAEpC;QACR4D,KAAK,EAAE;UACLE,MAAM,EAAE2I,eAAe,CAACC;;OAF5B,CADU;KAAZ,CADuC;GAAzB,CAAH,GAST,IAVN,CADF,EAeEjJ,4BAAA,CAACoG,yBAAD;IAA2BnB,GAAG,EAAEqC;KAC1B0B;IACJnC,OAAO,EAAEA;IACTqC,WAAW,EAAC;IACZC,WAAW,EAAExD;IACbyD,WAAW,EAAEzD;IACb0D,aAAa,EAAE;IACflB,cAAc,EAAEA;IAPlB,EASGf,OAAO,CAACR,EAAR,CAAW5D,GAAX,CAAe,UAAC9F,MAAD;IAAA;;IAAA,OAEd8C,4BAAA,MAAA;MAAKrB,GAAG,oBAAEzB,MAAM,CAAC+K,MAAT,mDAAE,eAAe1L;KAAzB,EACEyD,4BAAA,CAACmF,UAAD;MACEQ,YAAY,EAAEA;MACdhH,GAAG,qBAAEzB,MAAM,CAAC+K,MAAT,oDAAE,gBAAe1L;MACpBW,MAAM,EAAEA;MACRW,SAAS,EAAEsJ,oBAAoB,CAAC/I,OAArB,CAA6BlB,MAAM,CAACyB,GAApC;MACX8G,EAAE,EAAEvI;MACJqB,WAAW,EAAEjB,KAAK,CAACiB;MACnB0I,UAAU,EAAEA;MACZzB,cAAc,EAAEF;MAChBU,gBAAgB,EAAEsC;MAClBxI,iBAAiB,EAAExC,KAAK,CAACwC;KAV3B,CADF,CAFc;GAAf,CATH,CAfF,CADF,CAJF,CADM,CAAR;AA+DD,CA9JD;;AAiKA,AAAO,IAAMkJ,eAAe,GAAG;EAC7BC,SAAS,EAAE,EADkB;EAE7BhJ,SAAS,EAAE,QAFkB;EAG7BqJ,IAAI,EAAE;IAAE1C,EAAE,EAAE,EAAN;IAAU2C,EAAE,EAAE,CAAd;IAAiBC,EAAE,EAAE,CAArB;IAAwBC,EAAE,EAAE,CAA5B;IAA+BC,GAAG,EAAE;GAHb;EAI7BC,gBAAgB,EAAE;AAJW,CAAxB;;ACtKP,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACtM,KAAD;;;EAChB,IAAMkK,aAAa,GAAG5J,MAAM,CAA0B;IAAEgJ,EAAE,EAAE;GAAhC,CAA5B;;EACA,gBAAoDrJ,QAAQ,CAA0B;IAAEqJ,EAAE,EAAE;GAAhC,CAA5D;MAAOiD,kBAAP;MAA2BC,qBAA3B;;EACA,iBAAwCvM,QAAQ,CAAU,KAAV,CAAhD;MAAOoI,YAAP;MAAqBoE,eAArB;;EAEA5L,SAAS,CAAC;IACRb,KAAK,CAACiB,WAAN,CAAkByL,YAAlB,CAA+BvL,SAA/B,CAAyC,UAAAoI,OAAO;MAC9CW,aAAa,CAACpJ,OAAd,GAAwByI,OAAxB;MACAiD,qBAAqB,CAAC7D,SAAS,CAACuB,aAAa,CAACpJ,OAAf,CAAV,CAArB;KAFF;IAKAd,KAAK,CAACiB,WAAN,CAAkB0L,cAAlB,CAAiCxL,SAAjC,CAA2C,UAAAC,CAAC;MAC1CqL,eAAe,CAACrL,CAAD,CAAf;KADF;IAGApB,KAAK,CAACiB,WAAN,CAAkB2L,WAAlB,CAA8BzL,SAA9B,CAAwC,UAAAuJ,CAAC;MACvCR,aAAa,CAACpJ,OAAd,CAAsBwI,EAAtB,CAAyBrD,IAAzB,CAA8ByE,CAA9B;MACA8B,qBAAqB,CAAC7D,SAAS,CAACuB,aAAa,CAACpJ,OAAf,CAAV,CAArB;KAFF;GATO,EAaN,EAbM,CAAT;EAmBA,IAAI,CAAAd,KAAK,SAAL,IAAAA,KAAK,WAAL,4BAAAA,KAAK,CAAE9B,KAAP,8DAAcZ,MAAd,IAAuB,CAA3B,EACEsB,YAAY,CAACiO,OAAb,CAAqB,OAArB,EAA8B7M,KAA9B,aAA8BA,KAA9B,uBAA8BA,KAAK,CAAE9B,KAArC;;EAIF,IAAM4O,aAAa,GAAG,SAAhBA,aAAgB,CAACvD,OAAD;IACpB,IAAIwD,UAAU,GAA8B,EAA5C;IACApP,MAAM,CAACD,IAAP,CAAY6L,OAAZ,EAAqBrF,OAArB,CAA6B,UAAA8I,QAAQ;MACnC,IAAIzD,OAAO,CAACyD,QAAD,CAAP,CAAkB1P,MAAlB,GAA2B,CAA/B,EAAkC;QAChCiM,OAAO,CAACyD,QAAD,CAAP,CAAkBtH,GAAlB,CAAsB,UAAA2E,MAAM;UAC1B0C,UAAU,CAAC1C,MAAM,CAACpL,CAAR,CAAV,GAAuBoL,MAAvB;SADF;QAGA;;KALJ;IAQA,IAAI4C,gBAAgB,GAAoB,EAAxC;IACA/C,aAAa,CAACpJ,OAAd,CAAsBwI,EAAtB,CAAyBpF,OAAzB,CAAiC,UAAAtE,MAAM;MACrC,IAAImN,UAAU,CAACnN,MAAM,CAACyB,GAAR,CAAd,EAA4B;QAC1BzB,MAAM,CAACsN,cAAP,GAA2BH,UAAU,CAACnN,MAAM,CAACyB,GAAR,CAAV,CAAuB8L,CAAlD,SAAuDJ,UAAU,CAACnN,MAAM,CAACyB,GAAR,CAAV,CAAuBkK,CAA9E;QACA3L,MAAM,CAACwN,WAAP,GAAwBL,UAAU,CAACnN,MAAM,CAACyB,GAAR,CAAV,CAAuBqJ,CAA/C,SAAoDqC,UAAU,CAACnN,MAAM,CAACyB,GAAR,CAAV,CAAuBmK,CAA3E;QACA5L,MAAM,CAAC+K,MAAP,GAAgBoC,UAAU,CAACnN,MAAM,CAACyB,GAAR,CAA1B;QACA4L,gBAAgB,CAAChH,IAAjB,CAAsBrG,MAAtB;;KALJ;IASAsK,aAAa,CAACpJ,OAAd,GAAwB;MAAEwI,EAAE,EAAE2D;KAA9B;IACAjN,KAAK,CAACqN,eAAN,CAAsBnD,aAAa,CAACpJ,OAApC;GArBF;;EA0BA,OACE4B,aAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,aAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,aAAA,CAACuG,iBAAD;IAAmBzG,iBAAiB,EAAExC,KAAK,CAACwC;IAAmB0H,aAAa,EAAEqC;IAAoBtL,WAAW,EAAEjB,KAAK,CAACiB;IAAa2J,QAAQ,EAAEvC;IAAcwC,cAAc,EAAEiC;IAAezB,cAAc,EAAE,wBAACzL,MAAD;MAAA,OAA2BI,KAAK,CAACqL,cAAN,CAAqBzL,MAArB,CAA3B;;GAAzM,CADF,CADF,CADF;AAQD,CA/DD;;;;"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../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(from);\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\nimport { KpiChart } from \"../types/KpiChart\";\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 getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChart>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n \r\n \r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Tools } from \"../../../../services/tools\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { KpiChart } from \"../../../../types/KpiChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const hasDataError = useRef<boolean>(false);\r\n const [data, setData] = useState<KpiChart>();\r\n const [title, setTitle] = useState<string>();\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n onRefresh();\r\n }, [])\r\n\r\n const onRefresh = () => {\r\n props.customChartProps.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n setDataLoaded(false);\r\n Tools.Map(e, widget.current);\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n }, [props.customChartProps.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n setTitle(props?.customChartProps?.widget?.Title)\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n if (props.customChartProps?.widgetRef?.WidgetMeasures)\r\n measureFieldId = props.customChartProps?.widgetRef?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: props.customChartProps.widget\r\n });\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '60px', height: '60px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"kpIHeader\"}>{title}</div>\r\n <div>{data?.Value} </div>\r\n </div>\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 default KpiChart;","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n return (\r\n <div style={{ height: '100%' }}>{project()}</div>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\nimport { FusionChartProps } from \"./FusionChart\";\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], props: FusionChartProps): ChartObject {\r\n handelNullLabels(seriesMeasures);\r\n let defaultChart = getDefaultChartobject(seriesMeasures, props);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return getBarObject(seriesMeasures, defaultChart);\r\n case 'line':\r\n return getLineObject(seriesMeasures, defaultChart);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, defaultChart);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, defaultChart);\r\n default:\r\n return defaultChart;\r\n }\r\n}\r\n\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.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\nfunction getBarObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollbar2d\";\r\n return chart;\r\n}\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollline2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"doughnut2d\";\r\n return chart;\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"pie2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDefaultChartobject(seriesMeasures: SeriesMeasure[], props: FusionChartProps): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"80%\";\r\n chart.dataFormat = \"json\";\r\n buildChartDataSource(chart, props, seriesMeasures);\r\n return chart;\r\n}\r\n\r\n\r\nfunction buildChartDataSource(chart: ChartObject, props: FusionChartProps, seriesMeasures: SeriesMeasure[]) {\r\n if (!seriesMeasures || !seriesMeasures[0]) return;\r\n let chartinfo = {\r\n theme: \"fusion\",\r\n scrollHeight: \"5\",\r\n scrollWidth: \"5\",\r\n scrollPadding: \"8\",\r\n flatScrollBars: \"1\",\r\n enableSlicing: \"0\",\r\n showLegend: props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\" ? \"1\" : \"0\",\r\n };\r\n\r\n // pie donut lines\r\n // smartLineColor: \"#ff0000\",\r\n // smartLineThickness: \"1\",\r\n // smartLineAlpha: \"100\",\r\n // isSmartLineSlanted: \"0\"\r\n if (props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\") {\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n categories: buildCategories(seriesMeasures),\r\n dataset: buildDataSet(seriesMeasures)\r\n };\r\n return;\r\n }\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n data: buildDataSource(seriesMeasures),\r\n };\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[]) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n data = values[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n value: e.Value,\r\n label: e.Label,\r\n id: { GroupById: e.GroupById, MeasureFieldId: values[0].MeasureFieldId }\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[]) {\r\n let dataSet: any[] = [];\r\n let position = 1;\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.SeriesMeasureVulues.map(e => {\r\n return { value: e.Value, id: { GroupById: e.GroupById, MeasureFieldId: seriesMeasure.MeasureFieldId } }\r\n });\r\n dataSet.push({ data: datas, seriesname: seriesMeasure.Name });\r\n position++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[]) {\r\n var categories = seriesMeasures[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n label: e.Label\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}","import React, { useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { Tools } from \"../../../services/tools\";\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = (props: FusionChartProps) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<any>({});\r\n const entered = useRef<boolean>(false);\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n onRefresh();\r\n }, []);\r\n\r\n const onRefresh = () => {\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n setDataLoaded(false);\r\n Tools.Map(e, widget.current);\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500); \r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n }, [props.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n const chart = BuildFusionChartObject(result.data, props);\r\n setArgs(chart);\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const toggle_element = () => {\r\n var element = document.getElementById(id)?.children[0]?.children[0]?.children[0];\r\n if (!element) return;\r\n console.log(element)\r\n let htmlelement = document.getElementById(element.id);\r\n if (!htmlelement) return;\r\n htmlelement.style.cursor = 'move';\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n Widget: widget.current\r\n });\r\n };\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n fChart.resizeTo(width, height);\r\n },\r\n });\r\n\r\n return (\r\n !dataLoaded ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '60px', height: '60px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-container'} ref={ref} id={id}><ReactFC {...args} fcEvent-dataplotClick={dataplotClick} onRender={renderComplete} /></div>\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 </div>\r\n )\r\n}\r\nexport default FusionChart;","import { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionChart\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\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 widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\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} style={{ cursor: props.isInEditMode ? 'move' : 'default' }} >\r\n <header>\r\n <h1>{props?.widget?.TypeCode == \"kpi\" ? null : props.widget?.Title}</h1>\r\n {\r\n props.isInEditMode ?\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n style={{ color: \"#292D30\" }}\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 <div className=\"dl-line\"></div>\r\n <div className=\"dl-dashboard-widget\">\r\n {props?.widget?.TypeCode == \"kpi\" ?\r\n <CustomChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} /> :\r\n <FusionChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n //<ApexChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\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 { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\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 const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\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 }, [props.editMode]);\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 // layoutsRef.current = changedLayouts;\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n // layoutsRef.current = newLayouts;\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n FillWidgetDictionary(newWidgets);\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 function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight-scroll\">\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={() => { }}\r\n onLayoutChange={onLayoutChange}\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 widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\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\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 DashboardDesigner from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\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 Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(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 setWidgetlayoutsState(deepClone(Widgetlayouts.current));\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\r\n\r\n const updateWidgets = (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 var newWidgetlayouts: ReactWidgetPM[] = [];\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 newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\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","getKpiData","KpiChart","props","useState","dataLoaded","setDataLoaded","error","setError","useRef","widgetRef","hasDataError","data","setData","title","setTitle","useEffect","current","customChartProps","onRefresh","dataBinding","onEditWidget","subscribe","e","key","setTimeout","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","React","className","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Value","src","CustomChart","project","TypeCode","BuildFusionChartObject","seriesMeasures","handelNullLabels","defaultChart","getDefaultChartobject","getBarObject","getLineObject","getPieObject","getDonutObject","forEach","element","SeriesMeasureVulues","value","Label","chart","type","dataFormat","buildChartDataSource","chartinfo","theme","scrollHeight","scrollWidth","scrollPadding","flatScrollBars","enableSlicing","showLegend","dataSource","categories","buildCategories","dataset","buildDataSet","buildDataSource","values","map","label","id","GroupById","dataSet","seriesMeasure","datas","push","seriesname","Name","category","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","FusionChart","args","setArgs","fChart","setFchart","entered","Math","random","toString","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","renderComplete","useResizeObserver","onResize","resizeTo","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","cursor","isInEditMode","Button","icon","toggle","color","OverlayPanel","deleteBtnClicked","deepClone","obj","parse","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","item","w","Layout","editMode","onLayoutChange","changedLayouts","UpdateWidget","deletePanel","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","max","y","h","newPlaceholderRows","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","EndPosition","onChangeLayouts"],"mappings":"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"}
@@ -2,6 +2,7 @@ import { ReactWidgetPM } from './widget';
2
2
  export declare type SeriesMeasure = {
3
3
  MeasureFieldId: string;
4
4
  SeriesMeasureVulues: SeriesMeasureVulue[];
5
+ Name: string[];
5
6
  };
6
7
  export declare type SeriesMeasureVulue = {
7
8
  Value: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "logitude-dashboard-library",
3
- "version": "1.3.89",
3
+ "version": "1.3.91",
4
4
  "description": "Made with create-react-library",
5
5
  "author": "logitude",
6
6
  "license": "MIT",