logitude-dashboard-library 1.4.2 → 1.4.3
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.
|
@@ -129,6 +129,7 @@ $dark-grey: #717585;
|
|
|
129
129
|
>div {
|
|
130
130
|
box-sizing: border-box;
|
|
131
131
|
border-radius: 7px;
|
|
132
|
+
|
|
132
133
|
}
|
|
133
134
|
|
|
134
135
|
}
|
|
@@ -469,4 +470,33 @@ $dark-grey: #717585;
|
|
|
469
470
|
margin-left: 12px;
|
|
470
471
|
margin-right: 12px;
|
|
471
472
|
margin-bottom: 12px;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
.dl-kpi-arrow-pic {
|
|
476
|
+
|
|
477
|
+
display: inline-block;
|
|
478
|
+
vertical-align: middle;
|
|
479
|
+
width: 0;
|
|
480
|
+
height: 0;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
.dl-kpi-arrow-up {
|
|
484
|
+
border-left: 10px solid transparent;
|
|
485
|
+
border-right: 10px solid transparent;
|
|
486
|
+
border-bottom: 10px solid greenyellow;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
.dl-kpi-arrow-down {
|
|
490
|
+
border-left: 10px solid transparent;
|
|
491
|
+
border-right: 10px solid transparent;
|
|
492
|
+
border-top: 10px solid red;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
.dl-kpi-same-line {
|
|
496
|
+
display: flex;
|
|
497
|
+
flex-direction: row;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
.dl-kpi-margin {
|
|
501
|
+
margin-right: 4px;
|
|
472
502
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Layouts } from "react-grid-layout";
|
|
3
|
-
import ColumnChartComponent from "./ChartsComponents/ColumnChartComponent";
|
|
4
3
|
import { ReactWidgetPM } from "../../types/widget";
|
|
5
4
|
import { DataPointSelection } from "../../types/SeriesMeasure";
|
|
6
5
|
import { DashboardDataBinding } from "../../types/DashboardDataBinding";
|
|
@@ -27,12 +26,4 @@ export declare const layoutGridProps: {
|
|
|
27
26
|
};
|
|
28
27
|
useCSSTransforms: boolean;
|
|
29
28
|
};
|
|
30
|
-
export declare const WidgetTypes: {
|
|
31
|
-
Name: string;
|
|
32
|
-
Disabled: boolean;
|
|
33
|
-
}[];
|
|
34
|
-
export declare const widgetComponents: {
|
|
35
|
-
type: string;
|
|
36
|
-
component: typeof ColumnChartComponent;
|
|
37
|
-
}[];
|
|
38
29
|
export default DashboardDesigner;
|
package/dist/index.js
CHANGED
|
@@ -3,11 +3,10 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var React__default = _interopDefault(React);
|
|
5
5
|
var reactGridLayout = require('react-grid-layout');
|
|
6
|
-
require('react-apexcharts');
|
|
7
|
-
var axios = _interopDefault(require('axios'));
|
|
8
6
|
var button = require('primereact/button');
|
|
9
7
|
var overlaypanel = require('primereact/overlaypanel');
|
|
10
8
|
var progressspinner = require('primereact/progressspinner');
|
|
9
|
+
var axios = _interopDefault(require('axios'));
|
|
11
10
|
var ReactFC = _interopDefault(require('react-fusioncharts'));
|
|
12
11
|
var FusionCharts = _interopDefault(require('fusioncharts'));
|
|
13
12
|
var Charts = _interopDefault(require('fusioncharts/fusioncharts.charts'));
|
|
@@ -343,23 +342,21 @@ var KpiChart = function KpiChart(props) {
|
|
|
343
342
|
})) : !error ? React__default.createElement("div", {
|
|
344
343
|
className: "kpIcontainer",
|
|
345
344
|
onClick: kpiClick
|
|
346
|
-
}, React__default.createElement("div",
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
},
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
},
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
},
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
}
|
|
362
|
-
}, React__default.createElement("div", null)), React__default.createElement("td", null, checkVisibleUnit && (data === null || data === void 0 ? void 0 : data.Unit)))) : React__default.createElement("div", {
|
|
345
|
+
}, React__default.createElement("div", {
|
|
346
|
+
className: "dl-kpi-same-line"
|
|
347
|
+
}, React__default.createElement("div", {
|
|
348
|
+
className: "dl-kpi-margin"
|
|
349
|
+
}, data === null || data === void 0 ? void 0 : data.Value, " "), React__default.createElement("div", null, (data === null || data === void 0 ? void 0 : data.Value) != 0 && (data === null || data === void 0 ? void 0 : data.Unit))), React__default.createElement("div", {
|
|
350
|
+
className: "dl-kpi-same-line"
|
|
351
|
+
}, React__default.createElement("div", {
|
|
352
|
+
className: "dl-kpi-margin"
|
|
353
|
+
}, checkValuesValidity && arrowColorDirection), React__default.createElement("div", null, checkValuesValidity && (data === null || data === void 0 ? void 0 : data.Ratio))), React__default.createElement("div", {
|
|
354
|
+
className: "dl-kpi-same-line"
|
|
355
|
+
}, React__default.createElement("div", {
|
|
356
|
+
className: "dl-kpi-margin"
|
|
357
|
+
}, (widget === null || widget === void 0 ? void 0 : (_widget$current6 = widget.current) === null || _widget$current6 === void 0 ? void 0 : _widget$current6.TimeOverTime) && prev), React__default.createElement("div", {
|
|
358
|
+
className: "dl-kpi-margin"
|
|
359
|
+
}, (widget === null || widget === void 0 ? void 0 : (_widget$current7 = widget.current) === null || _widget$current7 === void 0 ? void 0 : _widget$current7.TimeOverTime) && (data === null || data === void 0 ? void 0 : data.ComparisonValue)), React__default.createElement("div", null, checkVisibleUnit && (data === null || data === void 0 ? void 0 : data.Unit)))) : React__default.createElement("div", {
|
|
363
360
|
className: "dl-flex-content-center dl-full-hight "
|
|
364
361
|
}, React__default.createElement("div", {
|
|
365
362
|
className: "dl-tooltip"
|
|
@@ -496,7 +493,7 @@ function buildDataSource(values) {
|
|
|
496
493
|
data = values[0].SeriesMeasureVulues.map(function (e) {
|
|
497
494
|
return {
|
|
498
495
|
value: e.Value,
|
|
499
|
-
label: e.Label
|
|
496
|
+
label: getTrimedLabelText(e.Label),
|
|
500
497
|
id: {
|
|
501
498
|
GroupById: e.GroupById,
|
|
502
499
|
MeasureFieldId: values[0].MeasureFieldId
|
|
@@ -507,6 +504,11 @@ function buildDataSource(values) {
|
|
|
507
504
|
return data;
|
|
508
505
|
}
|
|
509
506
|
|
|
507
|
+
function getTrimedLabelText(label) {
|
|
508
|
+
if (!label || label.length <= 20) return label;
|
|
509
|
+
return label.substring(0, 17) + "...";
|
|
510
|
+
}
|
|
511
|
+
|
|
510
512
|
function buildDataSet(seriesMeasures) {
|
|
511
513
|
var dataSet = [];
|
|
512
514
|
seriesMeasures.forEach(function (seriesMeasure) {
|
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 const [arrowColorDirection, setArrowColorDirection] = useState<any>();\r\n const [checkValuesValidity, setCheckValuesValidity] = useState<boolean>(false);\r\n const [checkVisibleUnit, setVisibilityUnit] = useState<boolean>(false);\r\n const prev = \"prev: \";\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 setTimeOverTimeImage(result.data);\r\n checkValues(result.data);\r\n checkUnitVisible(result.data);\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\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\r\n const setTimeOverTimeImage = (data : KpiChart) => {\r\n if (!widget?.current?.TimeOverTime) return;\r\n\r\n var ratio = data?.Ratio;\r\n if (!ratio) return;\r\n\r\n if (ratio >= 1) setArrowColorDirection(<span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up\"}></span>); \r\n else if (ratio < 1) setArrowColorDirection(<span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down\"}></span>); \r\n }\r\n\r\n const checkValues = (data : KpiChart) => {\r\n if (!widget?.current?.TimeOverTime) return;\r\n if (widget?.current?.TimeOverTime && data?.ComparisonValue == 0 && data?.Value === 0) return;\r\n setCheckValuesValidity(true);\r\n\r\n }\r\n const checkUnitVisible = (data: KpiChart) => {\r\n if (!widget?.current?.TimeOverTime || data?.ComparisonValue == 0) return;\r\n setVisibilityUnit(true);\r\n }\r\n\r\n\r\n return (\r\n\r\n !dataLoaded ?\r\n\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>\r\n <td>{data?.Value} </td>\r\n <td style={{ width: '4px' }}><div></div></td>\r\n <td>{data?.Value!= 0 && data?.Unit}</td>\r\n </div>\r\n \r\n <div>\r\n <td>{checkValuesValidity && arrowColorDirection}</td>\r\n <td style={{ width: '4px' }}><div></div></td>\r\n <td >{checkValuesValidity && data?.Ratio}</td>\r\n </div>\r\n\r\n <div>\r\n <td>{widget?.current?.TimeOverTime && prev}</td>\r\n <td style={{ width: '4px' }}><div></div></td>\r\n <td>{widget?.current?.TimeOverTime && data?.ComparisonValue}</td>\r\n <td style={{ width: '4px' }}><div></div></td>\r\n <td>{checkVisibleUnit && data?.Unit}</td>\r\n </div>\r\n\r\n </div> \r\n\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport 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 = \"100%\";\r\n chart.dataFormat = \"json\";\r\n \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 chartLeftMargin: \"20\",\r\n chartTopMargin: \"20\",\r\n chartRightMargin: \"20\",\r\n chartBottomMargin: \"20\",\r\n showPercentValues: props.widget?.TypeCode == \"donut\" || props.widget?.TypeCode == \"pie\" ? \"0\" : \"1\",\r\n showValues: props.widget?.TypeCode == \"donut\" || props.widget?.TypeCode == \"pie\" ? \"0\" : \"1\",\r\n showLegend: ((props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\") && seriesMeasures?.length > 1) ? \"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.substring(0, 20),\r\n id: { GroupById: e.GroupById, MeasureFieldId: values[0].MeasureFieldId },\r\n tooltext: e.Label + ' ,$dataValue ' + ', $percentValue'\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[]) {\r\n let dataSet: any[] = [];\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 });\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\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\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\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<any>({});\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n\r\n const [widgetWidth, setWidgetWidth] = useState<any>();\r\n const [widgetHeight, setWidgetHeight] = useState<any>();\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n onRefresh();\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n const onRefresh = () => {\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key != widget.current?.key) return;\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 const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n //postWidget.GlobalFilters = globalFilter?.current;\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 if (widgetHeight && widgetWidth && fChart) fChart.resizeTo(widgetWidth, widgetHeight);\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 setWidgetWidth(width);\r\n setWidgetHeight(height);\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\nimport { Tooltip } from 'primereact/tooltip';\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 <Tooltip target=\".h-tool-tip\" />\r\n <h1 data-pr-tooltip={props.widget?.Title} data-pr-position=\"top\" className=\"h-tool-tip\">{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","arrowColorDirection","setArrowColorDirection","checkValuesValidity","setCheckValuesValidity","checkVisibleUnit","setVisibilityUnit","prev","useEffect","current","customChartProps","onRefresh","dataBinding","onEditWidget","subscribe","e","key","setTimeout","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","setTimeOverTimeImage","checkValues","checkUnitVisible","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","TimeOverTime","ratio","Ratio","React","className","ComparisonValue","Value","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Unit","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","chartLeftMargin","chartTopMargin","chartRightMargin","chartBottomMargin","showPercentValues","showValues","showLegend","dataSource","categories","buildCategories","dataset","buildDataSet","buildDataSource","values","map","label","id","GroupById","tooltext","dataSet","seriesMeasure","datas","push","seriesname","Name","category","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","creditLabel","FusionChart","args","setArgs","fChart","setFchart","Math","random","toString","widgetWidth","setWidgetWidth","widgetHeight","setWidgetHeight","resizeTo","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","renderComplete","useResizeObserver","onResize","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","cursor","isInEditMode","Tooltip","target","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","entered","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 const [arrowColorDirection, setArrowColorDirection] = useState<any>();\r\n const [checkValuesValidity, setCheckValuesValidity] = useState<boolean>(false);\r\n const [checkVisibleUnit, setVisibilityUnit] = useState<boolean>(false);\r\n const prev = \"prev: \";\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 setTimeOverTimeImage(result.data);\r\n checkValues(result.data);\r\n checkUnitVisible(result.data);\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\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\r\n const setTimeOverTimeImage = (data: KpiChart) => {\r\n if (!widget?.current?.TimeOverTime) return;\r\n\r\n var ratio = data?.Ratio;\r\n if (!ratio) return;\r\n\r\n if (ratio >= 1) setArrowColorDirection(<span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up\"}></span>);\r\n else if (ratio < 1) setArrowColorDirection(<span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down\"}></span>);\r\n }\r\n\r\n const checkValues = (data: KpiChart) => {\r\n if (!widget?.current?.TimeOverTime) return;\r\n if (widget?.current?.TimeOverTime && data?.ComparisonValue == 0 && data?.Value === 0) return;\r\n setCheckValuesValidity(true);\r\n\r\n }\r\n const checkUnitVisible = (data: KpiChart) => {\r\n if (!widget?.current?.TimeOverTime || data?.ComparisonValue == 0) return;\r\n setVisibilityUnit(true);\r\n }\r\n\r\n\r\n return (\r\n\r\n !dataLoaded ?\r\n\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={\"dl-kpi-same-line\"}>\r\n <div className=\"dl-kpi-margin\">{data?.Value} </div>\r\n <div>{data?.Value != 0 && data?.Unit}</div>\r\n </div>\r\n\r\n <div className={\"dl-kpi-same-line\"}>\r\n <div className=\"dl-kpi-margin\">{checkValuesValidity && arrowColorDirection}</div>\r\n <div>{checkValuesValidity && data?.Ratio}</div>\r\n </div>\r\n\r\n <div className={\"dl-kpi-same-line\"}>\r\n <div className=\"dl-kpi-margin\">{widget?.current?.TimeOverTime && prev}</div>\r\n <div className=\"dl-kpi-margin\">{widget?.current?.TimeOverTime && data?.ComparisonValue}</div>\r\n <div>{checkVisibleUnit && data?.Unit}</div>\r\n </div>\r\n\r\n </div>\r\n\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport 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 = \"100%\";\r\n chart.dataFormat = \"json\";\r\n\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 chartLeftMargin: \"20\",\r\n chartTopMargin: \"20\",\r\n chartRightMargin: \"20\",\r\n chartBottomMargin: \"20\",\r\n showPercentValues: props.widget?.TypeCode == \"donut\" || props.widget?.TypeCode == \"pie\" ? \"0\" : \"1\",\r\n showValues: props.widget?.TypeCode == \"donut\" || props.widget?.TypeCode == \"pie\" ? \"0\" : \"1\",\r\n showLegend: ((props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\") && seriesMeasures?.length > 1) ? \"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: getTrimedLabelText(e.Label),\r\n id: { GroupById: e.GroupById, MeasureFieldId: values[0].MeasureFieldId },\r\n tooltext: e.Label + ' ,$dataValue ' + ', $percentValue'\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction getTrimedLabelText(label: string): string {\r\n if (!label || label.length <= 20) return label;\r\n return label.substring(0, 17) + \"...\";\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[]) {\r\n let dataSet: any[] = [];\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 });\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\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\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\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<any>({});\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n\r\n const [widgetWidth, setWidgetWidth] = useState<any>();\r\n const [widgetHeight, setWidgetHeight] = useState<any>();\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n onRefresh();\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n const onRefresh = () => {\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key != widget.current?.key) return;\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 const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n //postWidget.GlobalFilters = globalFilter?.current;\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 if (widgetHeight && widgetWidth && fChart) fChart.resizeTo(widgetWidth, widgetHeight);\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 setWidgetWidth(width);\r\n setWidgetHeight(height);\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\nimport { Tooltip } from 'primereact/tooltip';\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 <Tooltip target=\".h-tool-tip\" />\r\n <h1 data-pr-tooltip={props.widget?.Title} data-pr-position=\"top\" className=\"h-tool-tip\">{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\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\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 setLayouts(newLayouts);\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-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>\r\n </div>);\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 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","arrowColorDirection","setArrowColorDirection","checkValuesValidity","setCheckValuesValidity","checkVisibleUnit","setVisibilityUnit","prev","useEffect","current","customChartProps","onRefresh","dataBinding","onEditWidget","subscribe","e","key","setTimeout","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","setTimeOverTimeImage","checkValues","checkUnitVisible","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","TimeOverTime","ratio","Ratio","React","className","ComparisonValue","Value","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Unit","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","chartLeftMargin","chartTopMargin","chartRightMargin","chartBottomMargin","showPercentValues","showValues","showLegend","dataSource","categories","buildCategories","dataset","buildDataSet","buildDataSource","values","map","label","getTrimedLabelText","id","GroupById","tooltext","dataSet","seriesMeasure","datas","push","seriesname","Name","category","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","creditLabel","FusionChart","args","setArgs","fChart","setFchart","Math","random","toString","widgetWidth","setWidgetWidth","widgetHeight","setWidgetHeight","resizeTo","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","renderComplete","useResizeObserver","onResize","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","cursor","isInEditMode","Tooltip","target","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","entered","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,AAAOC,QAAd;;EACA,iBAAsDX,cAAQ,EAA9D;MAAOY,mBAAP;MAA4BC,sBAA5B;;EACA,iBAAsDb,cAAQ,CAAU,KAAV,CAA9D;MAAOc,mBAAP;MAA4BC,sBAA5B;;EACA,iBAA8Cf,cAAQ,CAAU,KAAV,CAAtD;MAAOgB,gBAAP;MAAyBC,iBAAzB;;EACA,IAAMC,IAAI,GAAG,QAAb;EAEAC,eAAS,CAAC;IACNxB,MAAM,CAACyB,OAAP,GAAiBrB,KAAK,CAACsB,gBAAN,CAAuB1B,MAAxC;IACA2B,SAAS;GAFJ,EAGN,EAHM,CAAT;;EAKA,IAAMA,SAAS,GAAG,SAAZA,SAAY;;;IACd,yBAAAvB,KAAK,CAACsB,gBAAN,CAAuBE,WAAvB,gFAAoCC,YAApC,CAAiDC,SAAjD,CAA2D,UAAAC,CAAC;;;MACxD,IAAIA,CAAC,CAACC,GAAF,wBAAShC,MAAM,CAACyB,OAAhB,oDAAS,gBAAgBO,GAAzB,CAAJ,EAAkC;QAC9BzB,aAAa,CAAC,KAAD,CAAb;QACAzD,KAAK,CAACa,GAAN,CAAUoE,CAAV,EAAa/B,MAAM,CAACyB,OAApB;QACAQ,UAAU,CAAC;UACPC,WAAW;SADL,EAEP,GAFO,CAAV;;KAJR;GADJ;;EAYAV,eAAS,CAAC;IACNb,SAAS,CAACc,OAAV,GAAoBrB,KAAK,CAACsB,gBAAN,CAAuBf,SAA3C;IACAsB,UAAU,CAAC;MACPC,WAAW;KADL,EAEP,GAFO,CAAV;GAFK,EAKN,EALM,CAAT;EAOAV,eAAS,CAAC;IACNb,SAAS,CAACc,OAAV,GAAoBrB,KAAK,CAACsB,gBAAN,CAAuBf,SAA3C;GADK,EAEN,CAACP,KAAK,CAACsB,gBAAN,CAAuBf,SAAxB,CAFM,CAAT;;EAIA,IAAMuB,WAAW,GAAG,SAAdA,WAAc;;;IAChBlB,QAAQ,CAACZ,KAAD,aAACA,KAAD,iDAACA,KAAK,CAAEsB,gBAAR,qFAAC,uBAAyB1B,MAA1B,2DAAC,uBAAiCmC,KAAlC,CAAR;IACA,IAAIC,yBAAyB,GAAG,IAAIvC,yBAAJ,EAAhC;;IACA,IAAIwC,UAAU,gBAAarC,MAAM,CAACyB,OAApB,CAAd;;IACAY,UAAU,CAACC,QAAX,GAAsBC,SAAtB;IACAH,yBAAyB,CAAClC,UAA1B,CAAqCmC,UAArC,EAAkEG,IAAlE,CAAuE,UAAAC,MAAM;MACzE3B,OAAO,CAAC2B,MAAM,CAAC5B,IAAR,CAAP;MACAN,aAAa,CAAC,IAAD,CAAb;MACAmC,oBAAoB,CAACD,MAAM,CAAC5B,IAAR,CAApB;MACA8B,WAAW,CAACF,MAAM,CAAC5B,IAAR,CAAX;MACA+B,gBAAgB,CAACH,MAAM,CAAC5B,IAAR,CAAhB;KALJ,EAMG,UAAAL,KAAK;;;MACJqC,OAAO,CAACC,GAAR,CAAY,OAAZ,EAAqBtC,KAArB;MACA,IAAIA,KAAJ,aAAIA,KAAJ,kCAAIA,KAAK,CAAEuC,QAAX,oEAAI,gBAAiBlC,IAArB,iDAAI,qBAAuBmC,YAA3B,EAAyCvC,QAAQ,CAACD,KAAD,aAACA,KAAD,2CAACA,KAAK,CAAEuC,QAAR,8EAAC,iBAAiBlC,IAAlB,0DAAC,sBAAuBmC,YAAxB,CAAR,CAAzC,KACKvC,QAAQ,CAACD,KAAK,CAACyC,OAAP,CAAR;MACL1C,aAAa,CAAC,IAAD,CAAb;KAVJ;GALJ;;EAoBA,IAAM2C,QAAQ,GAAG,SAAXA,QAAW;;;IACb,IAAIC,cAAJ;IACA,8BAAI/C,KAAK,CAACsB,gBAAV,6EAAI,uBAAwBf,SAA5B,mDAAI,uBAAmCyC,cAAvC,EACID,cAAc,6BAAG/C,KAAK,CAACsB,gBAAT,qFAAG,uBAAwBf,SAA3B,qFAAG,uBAAmCyC,cAAnC,CAAkD,CAAlD,CAAH,2DAAG,uBAAsDC,cAAvE;IACJjD,KAAK,CAACsB,gBAAN,CAAuB4B,iBAAvB,CAAyC;MACrCD,cAAc,EAAEF,cADqB;MAErCI,MAAM,EAAEnD,KAAK,CAACsB,gBAAN,CAAuB1B;KAFnC;GAJJ;;EAWA,IAAM0C,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAC7B,IAAD;;;IACzB,IAAI,EAACb,MAAD,aAACA,MAAD,mCAACA,MAAM,CAAEyB,OAAT,6CAAC,iBAAiB+B,YAAlB,CAAJ,EAAoC;IAEpC,IAAIC,KAAK,GAAG5C,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAE6C,KAAlB;IACA,IAAI,CAACD,KAAL,EAAY;IAEZ,IAAIA,KAAK,IAAI,CAAb,EAAgBvC,sBAAsB,CAACyC,4BAAA,OAAA;MAAMC,SAAS,EAAE;KAAjB,CAAD,CAAtB,CAAhB,KACK,IAAIH,KAAK,GAAG,CAAZ,EAAevC,sBAAsB,CAACyC,4BAAA,OAAA;MAAMC,SAAS,EAAE;KAAjB,CAAD,CAAtB;GAPxB;;EAUA,IAAMjB,WAAW,GAAG,SAAdA,WAAc,CAAC9B,IAAD;;;IAChB,IAAI,EAACb,MAAD,aAACA,MAAD,mCAACA,MAAM,CAAEyB,OAAT,6CAAC,iBAAiB+B,YAAlB,CAAJ,EAAoC;IACpC,IAAIxD,MAAM,SAAN,IAAAA,MAAM,WAAN,wBAAAA,MAAM,CAAEyB,OAAR,8DAAiB+B,YAAjB,IAAiC,CAAA3C,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEgD,eAAN,KAAyB,CAA1D,IAA+D,CAAAhD,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEiD,KAAN,MAAgB,CAAnF,EAAsF;IACtF1C,sBAAsB,CAAC,IAAD,CAAtB;GAHJ;;EAMA,IAAMwB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAC/B,IAAD;;;IACrB,IAAI,EAACb,MAAD,aAACA,MAAD,mCAACA,MAAM,CAAEyB,OAAT,6CAAC,iBAAiB+B,YAAlB,KAAkC,CAAA3C,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEgD,eAAN,KAAyB,CAA/D,EAAkE;IAClEvC,iBAAiB,CAAC,IAAD,CAAjB;GAFJ;;EAMA,OAEI,CAAChB,UAAD,GAEIqD,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,CAACI,+BAAD;IAAiBC,KAAK,EAAE;MAAEC,KAAK,EAAE,MAAT;MAAiBC,MAAM,EAAE;;IAAUC,WAAW,EAAC;IAAIC,iBAAiB,EAAC;GAA7F,CADJ,CAFJ,GAMI,CAAC5D,KAAD,GACImD,4BAAA,MAAA;IAAKC,SAAS,EAAE;IAAgBS,OAAO,EAAEnB;GAAzC,EACIS,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EAAgC/C,IAAhC,aAAgCA,IAAhC,uBAAgCA,IAAI,CAAEiD,KAAtC,KAAA,CADJ,EAEIH,4BAAA,MAAA,MAAA,EAAM,CAAA9C,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEiD,KAAN,KAAe,CAAf,KAAoBjD,IAApB,aAAoBA,IAApB,uBAAoBA,IAAI,CAAEyD,IAA1B,CAAN,CAFJ,CADJ,EAMIX,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EAAgCzC,mBAAmB,IAAIF,mBAAvD,CADJ,EAEI0C,4BAAA,MAAA,MAAA,EAAMxC,mBAAmB,KAAIN,IAAJ,aAAIA,IAAJ,uBAAIA,IAAI,CAAE6C,KAAV,CAAzB,CAFJ,CANJ,EAWIC,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EAAgC,CAAA5D,MAAM,SAAN,IAAAA,MAAM,WAAN,gCAAAA,MAAM,CAAEyB,OAAR,sEAAiB+B,YAAjB,KAAiCjC,IAAjE,CADJ,EAEIoC,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EAAgC,CAAA5D,MAAM,SAAN,IAAAA,MAAM,WAAN,gCAAAA,MAAM,CAAEyB,OAAR,sEAAiB+B,YAAjB,MAAiC3C,IAAjC,aAAiCA,IAAjC,uBAAiCA,IAAI,CAAEgD,eAAvC,CAAhC,CAFJ,EAGIF,4BAAA,MAAA,MAAA,EAAMtC,gBAAgB,KAAIR,IAAJ,aAAIA,IAAJ,uBAAIA,IAAI,CAAEyD,IAAV,CAAtB,CAHJ,CAXJ,CADJ,GAoBMX,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACID,4BAAA,MAAA;IAAKM,KAAK,EAAE;IAAKM,GAAG,EAAE;GAAtB,CADJ,EAEIZ,4BAAA,OAAA;IAAMC,SAAS,EAAC;GAAhB,EAAkCpD,KAAlC,CAFJ,CADF,CA5Bd;AAqCH,CApID;;ACAA,IAAMgE,WAAW,GAAG,SAAdA,WAAc,CAACpE,KAAD;EAChB,IAAMqE,OAAO,GAAG,SAAVA,OAAU;;;IACZ,yBAAQrE,KAAK,CAACJ,MAAd,kDAAQ,cAAc0E,QAAtB;MACI,KAAK,KAAL;QAAY,OAAOf,4BAAA,CAACxD,QAAD;UAAUuB,gBAAgB,EAAEtB;SAA5B,CAAP;;MACZ;QAAS,OAAOuD,4BAAA,MAAA,MAAA,gBAAA,CAAP;;GAHjB;;EAMA,OACIA,4BAAA,MAAA;IAAKK,KAAK,EAAE;MAAEE,MAAM,EAAE;;GAAtB,EAAiCO,OAAO,EAAxC,CADJ;AAGH,CAVD;;SCTgBE,uBAAuBC,gBAAiCxE;;;EACpEyE,gBAAgB,CAACD,cAAD,CAAhB;EACA,IAAIE,YAAY,GAAGC,qBAAqB,CAACH,cAAD,EAAiBxE,KAAjB,CAAxC;;EACA,yBAAQA,KAAK,CAACJ,MAAd,kDAAQ,cAAc0E,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,EAAgExE,KAAhE;EACI,IAAIqF,KAAK,GAAG,EAAZ;EACAA,KAAK,CAACC,IAAN,GAAa,UAAb;EACAD,KAAK,CAACxB,KAAN,GAAc,MAAd;EACAwB,KAAK,CAACvB,MAAN,GAAe,MAAf;EACAuB,KAAK,CAACE,UAAN,GAAmB,MAAnB;EAEAC,oBAAoB,CAACH,KAAD,EAAQrF,KAAR,EAAewE,cAAf,CAApB;EACA,OAAOa,KAAP;AACH;;AAGD,SAASG,oBAAT,CAA8BH,KAA9B,EAAkDrF,KAAlD,EAA2EwE,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,eAAe,EAAE,IAPL;IAQZC,cAAc,EAAE,IARJ;IASZC,gBAAgB,EAAE,IATN;IAUZC,iBAAiB,EAAE,IAVP;IAWZC,iBAAiB,EAAE,mBAAApG,KAAK,CAACJ,MAAN,kEAAc0E,QAAd,KAA0B,OAA1B,IAAqC,mBAAAtE,KAAK,CAACJ,MAAN,kEAAc0E,QAAd,KAA0B,KAA/D,GAAuE,GAAvE,GAA6E,GAXpF;IAYZ+B,UAAU,EAAE,mBAAArG,KAAK,CAACJ,MAAN,kEAAc0E,QAAd,KAA0B,OAA1B,IAAqC,mBAAAtE,KAAK,CAACJ,MAAN,kEAAc0E,QAAd,KAA0B,KAA/D,GAAuE,GAAvE,GAA6E,GAZ7E;IAaZgC,UAAU,EAAG,CAAC,mBAAAtG,KAAK,CAACJ,MAAN,kEAAc0E,QAAd,KAA0B,KAA1B,IAAmC,mBAAAtE,KAAK,CAACJ,MAAN,kEAAc0E,QAAd,KAA0B,MAA9D,KAAyE,CAAAE,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAElH,MAAhB,IAAyB,CAAnG,GAAwG,GAAxG,GAA8G;GAb9H;;EAqBA,IAAK,mBAAA0C,KAAK,CAACJ,MAAN,kEAAc0E,QAAd,KAA0B,KAA1B,IAAmC,mBAAAtE,KAAK,CAACJ,MAAN,kEAAc0E,QAAd,KAA0B,MAAlE,EAA2E;IACvEe,KAAK,CAACkB,UAAN,GAAmB;MACflB,KAAK,EAAEI,SADQ;MAEfe,UAAU,EAAEC,eAAe,CAACjC,cAAD,CAFZ;MAGfkC,OAAO,EAAEC,YAAY,CAACnC,cAAD;KAHzB;IAKA;;;EAEJa,KAAK,CAACkB,UAAN,GAAmB;IACflB,KAAK,EAAEI,SADQ;IAEfhF,IAAI,EAAEmG,eAAe,CAACpC,cAAD;GAFzB;AAIH;;AAED,SAASoC,eAAT,CAAyBC,MAAzB;EACI,IAAIpG,IAAI,GAAU,EAAlB;EACA,IAAI,CAACoG,MAAD,IAAW,CAACA,MAAM,CAAC,CAAD,CAAtB,EAA2B,OAAOpG,IAAP;EAC3BA,IAAI,GAAGoG,MAAM,CAAC,CAAD,CAAN,CAAU3B,mBAAV,CAA8B4B,GAA9B,CAAkC,UAACnF,CAAD;IACrC,OAAO;MACHwD,KAAK,EAAExD,CAAC,CAAC+B,KADN;MAEHqD,KAAK,EAAEC,kBAAkB,CAACrF,CAAC,CAACyD,KAAH,CAFtB;MAGH6B,EAAE,EAAE;QAAEC,SAAS,EAAEvF,CAAC,CAACuF,SAAf;QAA0BjE,cAAc,EAAE4D,MAAM,CAAC,CAAD,CAAN,CAAU5D;OAHrD;MAIHkE,QAAQ,EAAExF,CAAC,CAACyD,KAAF,GAAU,eAAV,GAA4B;KAJ1C;GADG,CAAP;EAQA,OAAO3E,IAAP;AACH;;AAED,SAASuG,kBAAT,CAA4BD,KAA5B;EACI,IAAI,CAACA,KAAD,IAAUA,KAAK,CAACzJ,MAAN,IAAgB,EAA9B,EAAkC,OAAOyJ,KAAP;EAClC,OAAOA,KAAK,CAAC3J,SAAN,CAAgB,CAAhB,EAAmB,EAAnB,IAAyB,KAAhC;AACH;;AAED,SAASuJ,YAAT,CAAsBnC,cAAtB;EACI,IAAI4C,OAAO,GAAU,EAArB;EACA5C,cAAc,CAACQ,OAAf,CAAuB,UAAAqC,aAAa;IAChC,IAAIC,KAAK,GAAGD,aAAa,CAACnC,mBAAd,CAAkC4B,GAAlC,CAAsC,UAAAnF,CAAC;MAC/C,OAAO;QAAEwD,KAAK,EAAExD,CAAC,CAAC+B,KAAX;QAAkBuD,EAAE,EAAE;UAAEC,SAAS,EAAEvF,CAAC,CAACuF,SAAf;UAA0BjE,cAAc,EAAEoE,aAAa,CAACpE;;OAArF;KADQ,CAAZ;IAGAmE,OAAO,CAACG,IAAR,CAAa;MAAE9G,IAAI,EAAE6G,KAAR;MAAeE,UAAU,EAAEH,aAAa,CAACI;KAAtD;GAJJ;EAMA,OAAOL,OAAP;AACH;;AAED,SAASX,eAAT,CAAyBjC,cAAzB;EACI,IAAIgC,UAAU,GAAGhC,cAAc,CAAC,CAAD,CAAd,CAAkBU,mBAAlB,CAAsC4B,GAAtC,CAA0C,UAACnF,CAAD;IACvD,OAAO;MACHoF,KAAK,EAAEpF,CAAC,CAACyD;KADb;GADa,CAAjB;EAKA,IAAI/C,MAAM,GAAU,EAApB;EACAA,MAAM,CAACkF,IAAP,CAAY;IAAEG,QAAQ,EAAElB;GAAxB;EACA,OAAOnE,MAAP;AACH;;AC5HDsF,OAAO,CAACC,MAAR,CAAeC,YAAf,EAA6BC,MAA7B,EAAqCC,WAArC;AAEAF,YAAY,CAACG,OAAb,CAAqB,SAArB,EAAgC;EAC5BpG,GAAG,EAAE,kOADuB;EAE5BqG,WAAW,EAAE;AAFe,CAAhC;;AAWA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAAClI,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;;EAEA,iBAAwBL,cAAQ,CAAc,EAAd,CAAhC;MAAOkI,IAAP;MAAaC,OAAb;;EACA,iBAA4BnI,cAAQ,CAAM,EAAN,CAApC;MAAOoI,MAAP;MAAeC,SAAf;;EACA,IAAMrB,EAAE,GAAG,CAACsB,IAAI,CAACC,MAAL,KAAgB,CAAjB,EAAoBC,QAApB,CAA6B,EAA7B,EAAiCrL,SAAjC,CAA2C,CAA3C,CAAX;;EAEA,iBAAsC6C,cAAQ,EAA9C;MAAOyI,WAAP;MAAoBC,cAApB;;EACA,iBAAwC1I,cAAQ,EAAhD;MAAO2I,YAAP;MAAqBC,eAArB;;EAEAzH,eAAS,CAAC;IACNxB,MAAM,CAACyB,OAAP,GAAiBrB,KAAK,CAACJ,MAAvB;IACA2B,SAAS;IACTM,UAAU,CAAC;MACPC,WAAW;KADL,EAEP,GAFO,CAAV;GAHK,EAMN,EANM,CAAT;;EAQA,IAAMP,SAAS,GAAG,SAAZA,SAAY;;;IACd,sBAAAvB,KAAK,CAACwB,WAAN,0EAAmBC,YAAnB,CAAgCC,SAAhC,CAA0C,UAAAC,CAAC;;;MACvC,IAAIA,CAAC,CAACC,GAAF,wBAAShC,MAAM,CAACyB,OAAhB,oDAAS,gBAAgBO,GAAzB,CAAJ,EAAkC;MAClCzB,aAAa,CAAC,KAAD,CAAb;MACAzD,KAAK,CAACa,GAAN,CAAUoE,CAAV,EAAa/B,MAAM,CAACyB,OAApB;MACAQ,UAAU,CAAC;QACPC,WAAW;OADL,EAEP,GAFO,CAAV;KAJJ;GADJ;;EAWA,IAAMA,WAAW,GAAG,SAAdA,WAAc;IAChB,IAAIE,yBAAyB,GAAG,IAAIvC,yBAAJ,EAAhC;;IACA,IAAIwC,UAAU,gBAAarC,MAAM,CAACyB,OAApB,CAAd;;IACAY,UAAU,CAACC,QAAX,GAAsBC,SAAtB;IAEAH,yBAAyB,CAACrC,OAA1B,CAAkCsC,UAAlC,EAA+DG,IAA/D,CAAoE,UAAAC,MAAM;MACtE,IAAMgD,KAAK,GAAGd,sBAAsB,CAAClC,MAAM,CAAC5B,IAAR,EAAcT,KAAd,CAApC;MACAoI,OAAO,CAAC/C,KAAD,CAAP;MACAlF,aAAa,CAAC,IAAD,CAAb;MACA,IAAIyI,YAAY,IAAIF,WAAhB,IAA+BL,MAAnC,EAA2CA,MAAM,CAACS,QAAP,CAAgBJ,WAAhB,EAA6BE,YAA7B;KAJ/C,EAKG,UAAAxI,KAAK;;;MACJqC,OAAO,CAACC,GAAR,CAAY,OAAZ,EAAqBtC,KAArB;MACA,IAAIA,KAAJ,aAAIA,KAAJ,kCAAIA,KAAK,CAAEuC,QAAX,oEAAI,gBAAiBlC,IAArB,iDAAI,qBAAuBmC,YAA3B,EAAyCvC,QAAQ,CAACD,KAAD,aAACA,KAAD,2CAACA,KAAK,CAAEuC,QAAR,8EAAC,iBAAiBlC,IAAlB,0DAAC,sBAAuBmC,YAAxB,CAAR,CAAzC,KACKvC,QAAQ,CAACD,KAAK,CAACyC,OAAP,CAAR;MACL1C,aAAa,CAAC,IAAD,CAAb;KATJ;GALJ;;EA2BA,IAAM4I,aAAa,GAAG,SAAhBA,aAAgB,CAACC,QAAD,EAAgBC,OAAhB;IAClBjJ,KAAK,CAACkD,iBAAN,CAAwB;MACpBgE,SAAS,EAAE+B,OAAO,CAAChC,EAAR,CAAWiC,SADF;MAEpBjG,cAAc,EAAEgG,OAAO,CAAChC,EAAR,CAAWkC,cAFP;MAGpBhG,MAAM,EAAEvD,MAAM,CAACyB;KAHnB;GADJ;;EAQA,IAAM+H,cAAc,GAAG,SAAjBA,cAAiB,CAAC/D,KAAD;IACnBiD,SAAS,CAACjD,KAAD,CAAT;GADJ;;EAIA,yBAAgBgE,iBAAiB,CAAiB;IAC9CC,QAAQ,EAAE;UAAGzF,aAAAA;UAAOC,cAAAA;MAChB6E,cAAc,CAAC9E,KAAD,CAAd;MACAgF,eAAe,CAAC/E,MAAD,CAAf;MACAuE,MAAM,CAACS,QAAP,CAAgBjF,KAAhB,EAAuBC,MAAvB;;GAJyB,CAAjC;MAAQyF,GAAR,sBAAQA,GAAR;;EAQA,OACI,CAACrJ,UAAD,GACIqD,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,CAACI,+BAAD;IAAiBC,KAAK,EAAE;MAAEC,KAAK,EAAE,MAAT;MAAiBC,MAAM,EAAE;;IAAUC,WAAW,EAAC;IAAIC,iBAAiB,EAAC;GAA7F,CADJ,CADJ,GAKI,CAAC5D,KAAD,GACImD,4BAAA,MAAA;IAAKC,SAAS,EAAE;IAAmB+F,GAAG,EAAEA;IAAKtC,EAAE,EAAEA;GAAjD,EAAqD1D,4BAAA,CAACoE,OAAD,oBAAaQ;6BAA6BY;IAAeS,QAAQ,EAAEJ;IAAnE,CAArD,CADJ,GAEM7F,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACID,4BAAA,MAAA;IAAKM,KAAK,EAAE;IAAKM,GAAG,EAAE;GAAtB,CADJ,EAEIZ,4BAAA,OAAA;IAAMC,SAAS,EAAC;GAAhB,EAAkCpD,KAAlC,CAFJ,CADF,CARd;AAeH,CA9FD;;ACJA,IAAMqJ,UAAU,GAAG,SAAbA,UAAa,CAACzJ,KAAD,EAAyB0J,KAAzB;;;EACjB,IAAMC,aAAa,GAAGrJ,YAAM,CAAe,IAAf,CAA5B;;EAGA,IAAMsJ,UAAU,GAAG,SAAbA,UAAa;;;IACjB,yBAAAD,aAAa,CAACtI,OAAd,gFAAuBwI,IAAvB;IACA7J,KAAK,CAAC8J,cAAN,CAAqB9J,KAAK,CAACJ,MAA3B;GAFF;;EAMA,OACE2D,4BAAA,MAAA;IAAKC,SAAS,EAAC;IAAQ5B,GAAG,EAAE5B,KAAK,CAAC+J,EAAN,CAAS9K;IAAG2E,KAAK,EAAE;MAAEoG,MAAM,EAAEhK,KAAK,CAACiK,YAAN,GAAqB,MAArB,GAA8B;;GAAvF,EACE1G,4BAAA,SAAA,MAAA,EACEA,4BAAA,CAAC2G,eAAD;IAASC,MAAM,EAAC;GAAhB,CADF,EAEE5G,4BAAA,KAAA;wCAAqBvD,KAAK,CAACJ,wDAAN,cAAcmC;wBAAwB;IAAMyB,SAAS,EAAC;GAA3E,oBAAyFxD,KAAK,CAACJ,MAA/F,mDAAyF,eAAcmC,KAAvG,CAFF,EAII/B,KAAK,CAACiK,YAAN,GACE1G,4BAAA,CAAC6G,aAAD;IACEC,IAAI,EAAC;IACL7G,SAAS,EAAC;IACVS,OAAO,EAAE,iBAACtC,CAAD;MAAA;;MAAA,iCAAOgI,aAAa,CAACtI,OAArB,2DAAO,uBAAuBiJ,MAAvB,CAA8B3I,CAA9B,CAAP;;IACTiC,KAAK,EAAE;MAAE2G,KAAK,EAAE;;GAJlB,CADF,GAOI,IAXR,EAeEhH,4BAAA,CAACiH,yBAAD;IAAcjB,GAAG,EAAEI;IAAenG,SAAS,EAAC;GAA5C,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKU,OAAO,EAAE2F;GAAd,UAAA,CADF,EAEErG,4BAAA,MAAA;IAAKU,OAAO,EAAE;MAAA;;MAAA,OAAMjE,KAAK,CAACyK,gBAAN,mBAAuBzK,KAAK,CAACJ,MAA7B,mDAAuB,eAAcgC,GAArC,CAAN;;GAAd,UAAA,CAFF,CADF,CAfF,CADF,EAuBE2B,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,CAvBF,EAwBED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACG,CAAAxD,KAAK,SAAL,IAAAA,KAAK,WAAL,8BAAAA,KAAK,CAAEJ,MAAP,kEAAe0E,QAAf,KAA2B,KAA3B,GACCf,4BAAA,CAACa,WAAD;IAAa5C,WAAW,EAAExB,KAAK,CAACwB;IAAa5B,MAAM,EAAEI,KAAK,CAACJ;IAAQW,SAAS,EAAEP,KAAK,CAACO;IAAW2C,iBAAiB,EAAElD,KAAK,CAACkD;GAAxH,CADD,GAECK,4BAAA,CAAC2E,WAAD;IAAa1G,WAAW,EAAExB,KAAK,CAACwB;IAAa5B,MAAM,EAAEI,KAAK,CAACJ;IAAQW,SAAS,EAAEP,KAAK,CAACO;IAAW2C,iBAAiB,EAAElD,KAAK,CAACkD;GAAxH,CAHJ,CAxBF,CADF;AAmCD,CA7CD;;SCxBgBwH,UAAWC;EACvB,OAAOpL,IAAI,CAACqL,KAAL,CAAWrL,IAAI,CAACC,SAAL,CAAemL,GAAf,CAAX,CAAP;AACH;;ACaD,IAAME,yBAAyB,GAAGC,6BAAa,CAACC,0BAAD,CAA/C;;AAUA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAChL,KAAD;EACxB,IAAMiL,OAAO,GAAGC,KAAK,CAAC1N,IAAN,CAAW;IAAEF,MAAM,EAAE;GAArB,EAA2B6N,IAA3B,CAAgC,IAAhC,CAAhB;EACA,IAAMC,2BAA2B,GAAG,EAApC;;EACA,gBAA8BnL,cAAQ,CAAU;IAAEoL,EAAE,EAAE;GAAhB,CAAtC;MAAOC,OAAP;MAAgBC,UAAhB;;EACA,iBAAwDtL,cAAQ,CAACiL,KAAK,CAAC1N,IAAN,CAAW;IAAEF,MAAM,EAAE8N;GAArB,EAAoDD,IAApD,CAAyD,IAAzD,CAAD,CAAhE;MAAOK,oBAAP;MAA6BC,uBAA7B;;EACA,iBAAoCxL,cAAQ,CAA4BkC,SAA5B,CAA5C;MAAOuJ,UAAP;;EACA,iBAAwCzL,cAAQ,CAAC,KAAD,CAAhD;MAAOgK,YAAP;MAAqB0B,eAArB;;EACA,IAAMC,oBAAoB,GAAGtL,YAAM,CAAiC,EAAjC,CAAnC;;EACA,iBAA8BL,cAAQ,CAA0B;IAAEoL,EAAE,EAAE;GAAhC,CAAtC;MAAOQ,OAAP;MAAgBC,UAAhB;;EACA,IAAMC,mBAAmB,GAAGzL,YAAM,CAAM,IAAN,CAAlC;EACA,IAAM0L,OAAO,GAAG1L,YAAM,CAAU,KAAV,CAAtB;EAEAc,eAAS,CAAC;IACR6K,UAAU,CAACjM,KAAK,CAACkM,aAAP,CAAV;GADO,EAEN,CAAClM,KAAK,CAACkM,aAAP,CAFM,CAAT;;EAIA,IAAMD,UAAU,GAAG,SAAbA,UAAa,CAACE,gBAAD;IACjB,IAAIC,KAAK,GAA4B1B,SAAS,CAACyB,gBAAD,CAA9C;IACA,IAAIE,MAAM,GAAGC,YAAY,CAACF,KAAD,CAAzB;IACAG,oBAAoB,CAACH,KAAD,CAApB;IACAN,UAAU,CAACM,KAAD,CAAV;IACAb,UAAU,CAACc,MAAD,CAAV;IACAG,2BAA2B,CAACH,MAAD,CAA3B;GANF;;EAQA,IAAME,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACH,KAAD;IAC3B,qDAAmBA,KAAK,CAACf,EAAzB,wCAA6B;MAAA,IAAlBoB,IAAkB;MAC3Bb,oBAAoB,CAACvK,OAArB,CAA6BoL,IAAI,CAAC7K,GAAlC,IAAyC6K,IAAzC;;GAFJ;;EAKA,IAAMH,YAAY,GAAG,SAAfA,YAAe,CAACH,gBAAD;IACnB,IAAIE,MAAM,GAAQ;MAAEhB,EAAE,EAAE;KAAxB;IACAc,gBAAgB,CAACd,EAAjB,CAAoBvE,GAApB,CAAwB,UAAA4F,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAN;KAAzB,EAAiD3H,OAAjD,CAAyD,UAAArD,CAAC;MACxD0K,MAAM,CAAChB,EAAP,CAAU9D,IAAV,CAAe5F,CAAf;KADF;IAGA,OAAO0K,MAAP;GALF;;EAQAjL,eAAS,CAAC;IACRuK,eAAe,CAAC3L,KAAK,CAAC4M,QAAP,CAAf;GADO,EAEN,CAAC5M,KAAK,CAAC4M,QAAP,CAFM,CAAT;;EAIA,SAASC,cAAT,CAAwBR,MAAxB,EAAqCS,cAArC;IAEEC,YAAY,CAACD,cAAD,CAAZ;IACAvB,UAAU,CAACuB,cAAD,CAAV;IACAN,2BAA2B,CAACM,cAAD,CAA3B;;IACA,IAAId,OAAO,CAAC3K,OAAR,IAAmB,KAAvB,EAA8B;MAC5B2K,OAAO,CAAC3K,OAAR,GAAkB,IAAlB;MACA;;;IAEFrB,KAAK,CAAC6M,cAAN,CAAqBC,cAArB;;;EAGF,SAASC,YAAT,CAAsBD,cAAtB;IACE,sDAAmBA,cAAc,CAACzB,EAAlC,2CAAsC;MAAA,IAA3BoB,IAA2B;;MACpC,IAAIb,oBAAoB,CAACvK,OAArB,CAA6BoL,IAAI,CAACxN,CAAlC,CAAJ,EAA0C;QACxC2M,oBAAoB,CAACvK,OAArB,CAA6BoL,IAAI,CAACxN,CAAlC,EAAqC0N,MAArC,GAA8CF,IAA9C;;;;;EAKN,SAASO,WAAT,CAAqB/F,EAArB;IACE,IAAIgG,UAAU,GAAG;MAAE5B,EAAE,EAAEC,OAAO,CAACD,EAAR,CAAW6B,MAAX,CAAkB,UAAAvL,CAAC;QAAA,OAAIA,CAAC,CAAC1C,CAAF,IAAOgI,EAAX;OAAnB;KAAvB;IACAsE,UAAU,CAAC0B,UAAD,CAAV;IACA,IAAIE,UAAU,GAAG;MAAE9B,EAAE,EAAEQ,OAAO,CAACR,EAAR,CAAW6B,MAAX,CAAkB,UAAAvL,CAAC;QAAA,OAAIA,CAAC,CAACC,GAAF,IAASqF,EAAb;OAAnB;KAAvB;IACAsF,oBAAoB,CAACY,UAAD,CAApB;IACArB,UAAU,CAACqB,UAAD,CAAV;IACAnN,KAAK,CAAC6M,cAAN,CAAqBI,UAArB;;;EAGF,SAASrD,UAAT,CAAoBhK,MAApB;IACEA,MAAM,CAACwN,WAAP,GAAqB,QAArB;IACApN,KAAK,CAACqN,cAAN,CAAqBzN,MAArB;;;EAGF,SAAS4M,2BAAT,CAAqClB,OAArC;IACE,IAAI,CAACA,OAAL,EACE;IACF,IAAIgC,GAAG,GAAGlC,2BAAV;;IACA,sDAAqBE,OAAO,CAAC,IAAD,CAA5B,2CAAoC;MAAA,IAAzBe,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,GAAGrC,2BAArB,GAAmDA,2BAAnD,GAAiFqC,kBAAtG;IACAhC,uBAAuB,CAACP,KAAK,CAAC1N,IAAN,CAAW;MAAEF,MAAM,EAAEmQ;KAArB,EAA2CtC,IAA3C,CAAgD,IAAhD,CAAD,CAAvB;;;EAEF,OAAQ5H,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACND,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACGyG,YAAY,GAAGuB,oBAAoB,CAAC1E,GAArB,CAAyB,UAACnF,CAAD,EAAI1C,CAAJ;IAAA,OACvCgM,OAAO,CAACnE,GAAR,CAAY,UAACnF,CAAD,EAAI1C,CAAJ;MAAA,OACVsE,4BAAA,MAAA;QAAK3B,GAAG,EAAE3C;QACR2E,KAAK,EAAE;UACLE,MAAM,EAAE4J,eAAe,CAACC;;OAF5B,CADU;KAAZ,CADuC;GAAzB,CAAH,GAST,IAVN,CADF,EAeEpK,4BAAA,CAACsH,yBAAD;IAA2BtB,GAAG,EAAEwC;KAC1B2B;IACJpC,OAAO,EAAEA;IACTsC,WAAW,EAAC;IACZC,WAAW,EAAE5D;IACb6D,WAAW,EAAE7D;IACb8D,aAAa,EAAE;IACflB,cAAc,EAAEA;IAPlB,EASGhB,OAAO,CAACR,EAAR,CAAWvE,GAAX,CAAe,UAAClH,MAAD;IAAA;;IAAA,OAEd2D,4BAAA,MAAA;MAAK3B,GAAG,oBAAEhC,MAAM,CAAC+M,MAAT,mDAAE,eAAe1N;KAAzB,EACEsE,4BAAA,CAACkG,UAAD;MACEQ,YAAY,EAAEA;MACdrI,GAAG,qBAAEhC,MAAM,CAAC+M,MAAT,oDAAE,gBAAe1N;MACpBW,MAAM,EAAEA;MACRW,SAAS,EAAEqL,oBAAoB,CAACvK,OAArB,CAA6BzB,MAAM,CAACgC,GAApC;MACXmI,EAAE,EAAEnK;MACJ4B,WAAW,EAAExB,KAAK,CAACwB;MACnBkK,UAAU,EAAEA;MACZ5B,cAAc,EAAEF;MAChBa,gBAAgB,EAAEuC;MAClB9J,iBAAiB,EAAElD,KAAK,CAACkD;KAV3B,CADF,CAFc;GAAf,CATH,CAfF,CADF,CADF,CADM,CAAR;AAmDD,CA3ID;;AA6IA,AAAO,IAAMwK,eAAe,GAAG;EAC7BC,SAAS,EAAE,EADkB;EAE7BnK,SAAS,EAAE,QAFkB;EAG7BwK,IAAI,EAAE;IAAE3C,EAAE,EAAE,EAAN;IAAU4C,EAAE,EAAE,CAAd;IAAiBC,EAAE,EAAE,CAArB;IAAwBC,EAAE,EAAE,CAA5B;IAA+BC,GAAG,EAAE;GAHb;EAI7BC,gBAAgB,EAAE;AAJW,CAAxB;;AClJP,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACtO,KAAD;;;EAChB,IAAMkM,aAAa,GAAG5L,YAAM,CAA0B;IAAE+K,EAAE,EAAE;GAAhC,CAA5B;;EACA,gBAAoDpL,cAAQ,CAA0B;IAAEoL,EAAE,EAAE;GAAhC,CAA5D;MAAOkD,kBAAP;MAA2BC,qBAA3B;;EACA,iBAAwCvO,cAAQ,CAAU,KAAV,CAAhD;MAAOgK,YAAP;MAAqBwE,eAArB;;EAEArN,eAAS,CAAC;IACRpB,KAAK,CAACwB,WAAN,CAAkBkN,YAAlB,CAA+BhN,SAA/B,CAAyC,UAAA4J,OAAO;MAC9CY,aAAa,CAAC7K,OAAd,GAAwBiK,OAAxB;MACAkD,qBAAqB,CAAC9D,SAAS,CAACwB,aAAa,CAAC7K,OAAf,CAAV,CAArB;KAFF;IAKArB,KAAK,CAACwB,WAAN,CAAkBmN,cAAlB,CAAiCjN,SAAjC,CAA2C,UAAAC,CAAC;MAC1C8M,eAAe,CAAC9M,CAAD,CAAf;KADF;IAGA3B,KAAK,CAACwB,WAAN,CAAkBoN,WAAlB,CAA8BlN,SAA9B,CAAwC,UAAAgL,CAAC;MACvCR,aAAa,CAAC7K,OAAd,CAAsBgK,EAAtB,CAAyB9D,IAAzB,CAA8BmF,CAA9B;MACA8B,qBAAqB,CAAC9D,SAAS,CAACwB,aAAa,CAAC7K,OAAf,CAAV,CAArB;KAFF;GATO,EAaN,EAbM,CAAT;EAmBA,IAAI,CAAArB,KAAK,SAAL,IAAAA,KAAK,WAAL,4BAAAA,KAAK,CAAE9B,KAAP,8DAAcZ,MAAd,IAAuB,CAA3B,EACEsB,YAAY,CAACiQ,OAAb,CAAqB,OAArB,EAA8B7O,KAA9B,aAA8BA,KAA9B,uBAA8BA,KAAK,CAAE9B,KAArC;;EAIF,IAAM4Q,aAAa,GAAG,SAAhBA,aAAgB,CAACxD,OAAD;IACpB,IAAIyD,UAAU,GAA8B,EAA5C;IACApR,MAAM,CAACD,IAAP,CAAY4N,OAAZ,EAAqBtG,OAArB,CAA6B,UAAAgK,QAAQ;MACnC,IAAI1D,OAAO,CAAC0D,QAAD,CAAP,CAAkB1R,MAAlB,GAA2B,CAA/B,EAAkC;QAChCgO,OAAO,CAAC0D,QAAD,CAAP,CAAkBlI,GAAlB,CAAsB,UAAAuF,MAAM;UAC1B0C,UAAU,CAAC1C,MAAM,CAACpN,CAAR,CAAV,GAAuBoN,MAAvB;SADF;QAGA;;KALJ;IAQA,IAAI4C,gBAAgB,GAAoB,EAAxC;IACA/C,aAAa,CAAC7K,OAAd,CAAsBgK,EAAtB,CAAyBrG,OAAzB,CAAiC,UAAApF,MAAM;MACrC,IAAImP,UAAU,CAACnP,MAAM,CAACgC,GAAR,CAAd,EAA4B;QAC1BhC,MAAM,CAACsP,cAAP,GAA2BH,UAAU,CAACnP,MAAM,CAACgC,GAAR,CAAV,CAAuBuN,CAAlD,SAAuDJ,UAAU,CAACnP,MAAM,CAACgC,GAAR,CAAV,CAAuB2L,CAA9E;QACA3N,MAAM,CAACwP,WAAP,GAAwBL,UAAU,CAACnP,MAAM,CAACgC,GAAR,CAAV,CAAuB8K,CAA/C,SAAoDqC,UAAU,CAACnP,MAAM,CAACgC,GAAR,CAAV,CAAuB4L,CAA3E;QACA5N,MAAM,CAAC+M,MAAP,GAAgBoC,UAAU,CAACnP,MAAM,CAACgC,GAAR,CAA1B;QACAqN,gBAAgB,CAAC1H,IAAjB,CAAsB3H,MAAtB;;KALJ;IASAsM,aAAa,CAAC7K,OAAd,GAAwB;MAAEgK,EAAE,EAAE4D;KAA9B;IACAjP,KAAK,CAACqP,eAAN,CAAsBnD,aAAa,CAAC7K,OAApC;GArBF;;EA0BA,OACEkC,mBAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,mBAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,mBAAA,CAACyH,iBAAD;IAAmB9H,iBAAiB,EAAElD,KAAK,CAACkD;IAAmBgJ,aAAa,EAAEqC;IAAoB/M,WAAW,EAAExB,KAAK,CAACwB;IAAaoL,QAAQ,EAAE3C;IAAc4C,cAAc,EAAEiC;IAAezB,cAAc,EAAE,wBAACzN,MAAD;MAAA,OAA2BI,KAAK,CAACqN,cAAN,CAAqBzN,MAArB,CAA3B;;GAAzM,CADF,CADF,CADF;AAQD,CA/DD;;;;"}
|
package/dist/index.modern.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import React__default, { useState, useRef, useEffect, createElement } from 'react';
|
|
2
2
|
import { WidthProvider, Responsive } from 'react-grid-layout';
|
|
3
|
-
import 'react-apexcharts';
|
|
4
|
-
import axios from 'axios';
|
|
5
3
|
import { Button } from 'primereact/button';
|
|
6
4
|
import { OverlayPanel } from 'primereact/overlaypanel';
|
|
7
5
|
import { ProgressSpinner } from 'primereact/progressspinner';
|
|
6
|
+
import axios from 'axios';
|
|
8
7
|
import ReactFC from 'react-fusioncharts';
|
|
9
8
|
import FusionCharts from 'fusioncharts';
|
|
10
9
|
import Charts from 'fusioncharts/fusioncharts.charts';
|
|
@@ -340,23 +339,21 @@ var KpiChart = function KpiChart(props) {
|
|
|
340
339
|
})) : !error ? React__default.createElement("div", {
|
|
341
340
|
className: "kpIcontainer",
|
|
342
341
|
onClick: kpiClick
|
|
343
|
-
}, React__default.createElement("div",
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
},
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
},
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
},
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
}
|
|
359
|
-
}, React__default.createElement("div", null)), React__default.createElement("td", null, checkVisibleUnit && (data === null || data === void 0 ? void 0 : data.Unit)))) : React__default.createElement("div", {
|
|
342
|
+
}, React__default.createElement("div", {
|
|
343
|
+
className: "dl-kpi-same-line"
|
|
344
|
+
}, React__default.createElement("div", {
|
|
345
|
+
className: "dl-kpi-margin"
|
|
346
|
+
}, data === null || data === void 0 ? void 0 : data.Value, " "), React__default.createElement("div", null, (data === null || data === void 0 ? void 0 : data.Value) != 0 && (data === null || data === void 0 ? void 0 : data.Unit))), React__default.createElement("div", {
|
|
347
|
+
className: "dl-kpi-same-line"
|
|
348
|
+
}, React__default.createElement("div", {
|
|
349
|
+
className: "dl-kpi-margin"
|
|
350
|
+
}, checkValuesValidity && arrowColorDirection), React__default.createElement("div", null, checkValuesValidity && (data === null || data === void 0 ? void 0 : data.Ratio))), React__default.createElement("div", {
|
|
351
|
+
className: "dl-kpi-same-line"
|
|
352
|
+
}, React__default.createElement("div", {
|
|
353
|
+
className: "dl-kpi-margin"
|
|
354
|
+
}, (widget === null || widget === void 0 ? void 0 : (_widget$current6 = widget.current) === null || _widget$current6 === void 0 ? void 0 : _widget$current6.TimeOverTime) && prev), React__default.createElement("div", {
|
|
355
|
+
className: "dl-kpi-margin"
|
|
356
|
+
}, (widget === null || widget === void 0 ? void 0 : (_widget$current7 = widget.current) === null || _widget$current7 === void 0 ? void 0 : _widget$current7.TimeOverTime) && (data === null || data === void 0 ? void 0 : data.ComparisonValue)), React__default.createElement("div", null, checkVisibleUnit && (data === null || data === void 0 ? void 0 : data.Unit)))) : React__default.createElement("div", {
|
|
360
357
|
className: "dl-flex-content-center dl-full-hight "
|
|
361
358
|
}, React__default.createElement("div", {
|
|
362
359
|
className: "dl-tooltip"
|
|
@@ -493,7 +490,7 @@ function buildDataSource(values) {
|
|
|
493
490
|
data = values[0].SeriesMeasureVulues.map(function (e) {
|
|
494
491
|
return {
|
|
495
492
|
value: e.Value,
|
|
496
|
-
label: e.Label
|
|
493
|
+
label: getTrimedLabelText(e.Label),
|
|
497
494
|
id: {
|
|
498
495
|
GroupById: e.GroupById,
|
|
499
496
|
MeasureFieldId: values[0].MeasureFieldId
|
|
@@ -504,6 +501,11 @@ function buildDataSource(values) {
|
|
|
504
501
|
return data;
|
|
505
502
|
}
|
|
506
503
|
|
|
504
|
+
function getTrimedLabelText(label) {
|
|
505
|
+
if (!label || label.length <= 20) return label;
|
|
506
|
+
return label.substring(0, 17) + "...";
|
|
507
|
+
}
|
|
508
|
+
|
|
507
509
|
function buildDataSet(seriesMeasures) {
|
|
508
510
|
var dataSet = [];
|
|
509
511
|
seriesMeasures.forEach(function (seriesMeasure) {
|
package/dist/index.modern.js.map
CHANGED
|
@@ -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 const [arrowColorDirection, setArrowColorDirection] = useState<any>();\r\n const [checkValuesValidity, setCheckValuesValidity] = useState<boolean>(false);\r\n const [checkVisibleUnit, setVisibilityUnit] = useState<boolean>(false);\r\n const prev = \"prev: \";\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 setTimeOverTimeImage(result.data);\r\n checkValues(result.data);\r\n checkUnitVisible(result.data);\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\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\r\n const setTimeOverTimeImage = (data : KpiChart) => {\r\n if (!widget?.current?.TimeOverTime) return;\r\n\r\n var ratio = data?.Ratio;\r\n if (!ratio) return;\r\n\r\n if (ratio >= 1) setArrowColorDirection(<span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up\"}></span>); \r\n else if (ratio < 1) setArrowColorDirection(<span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down\"}></span>); \r\n }\r\n\r\n const checkValues = (data : KpiChart) => {\r\n if (!widget?.current?.TimeOverTime) return;\r\n if (widget?.current?.TimeOverTime && data?.ComparisonValue == 0 && data?.Value === 0) return;\r\n setCheckValuesValidity(true);\r\n\r\n }\r\n const checkUnitVisible = (data: KpiChart) => {\r\n if (!widget?.current?.TimeOverTime || data?.ComparisonValue == 0) return;\r\n setVisibilityUnit(true);\r\n }\r\n\r\n\r\n return (\r\n\r\n !dataLoaded ?\r\n\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>\r\n <td>{data?.Value} </td>\r\n <td style={{ width: '4px' }}><div></div></td>\r\n <td>{data?.Value!= 0 && data?.Unit}</td>\r\n </div>\r\n \r\n <div>\r\n <td>{checkValuesValidity && arrowColorDirection}</td>\r\n <td style={{ width: '4px' }}><div></div></td>\r\n <td >{checkValuesValidity && data?.Ratio}</td>\r\n </div>\r\n\r\n <div>\r\n <td>{widget?.current?.TimeOverTime && prev}</td>\r\n <td style={{ width: '4px' }}><div></div></td>\r\n <td>{widget?.current?.TimeOverTime && data?.ComparisonValue}</td>\r\n <td style={{ width: '4px' }}><div></div></td>\r\n <td>{checkVisibleUnit && data?.Unit}</td>\r\n </div>\r\n\r\n </div> \r\n\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport 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 = \"100%\";\r\n chart.dataFormat = \"json\";\r\n \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 chartLeftMargin: \"20\",\r\n chartTopMargin: \"20\",\r\n chartRightMargin: \"20\",\r\n chartBottomMargin: \"20\",\r\n showPercentValues: props.widget?.TypeCode == \"donut\" || props.widget?.TypeCode == \"pie\" ? \"0\" : \"1\",\r\n showValues: props.widget?.TypeCode == \"donut\" || props.widget?.TypeCode == \"pie\" ? \"0\" : \"1\",\r\n showLegend: ((props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\") && seriesMeasures?.length > 1) ? \"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.substring(0, 20),\r\n id: { GroupById: e.GroupById, MeasureFieldId: values[0].MeasureFieldId },\r\n tooltext: e.Label + ' ,$dataValue ' + ', $percentValue'\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[]) {\r\n let dataSet: any[] = [];\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 });\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\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\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\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<any>({});\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n\r\n const [widgetWidth, setWidgetWidth] = useState<any>();\r\n const [widgetHeight, setWidgetHeight] = useState<any>();\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n onRefresh();\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n const onRefresh = () => {\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key != widget.current?.key) return;\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 const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n //postWidget.GlobalFilters = globalFilter?.current;\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 if (widgetHeight && widgetWidth && fChart) fChart.resizeTo(widgetWidth, widgetHeight);\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 setWidgetWidth(width);\r\n setWidgetHeight(height);\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\nimport { Tooltip } from 'primereact/tooltip';\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 <Tooltip target=\".h-tool-tip\" />\r\n <h1 data-pr-tooltip={props.widget?.Title} data-pr-position=\"top\" className=\"h-tool-tip\">{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","arrowColorDirection","setArrowColorDirection","checkValuesValidity","setCheckValuesValidity","checkVisibleUnit","setVisibilityUnit","prev","useEffect","current","customChartProps","onRefresh","dataBinding","onEditWidget","subscribe","e","key","setTimeout","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","setTimeOverTimeImage","checkValues","checkUnitVisible","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","TimeOverTime","ratio","Ratio","React","className","ComparisonValue","Value","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Unit","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","chartLeftMargin","chartTopMargin","chartRightMargin","chartBottomMargin","showPercentValues","showValues","showLegend","dataSource","categories","buildCategories","dataset","buildDataSet","buildDataSource","values","map","label","id","GroupById","tooltext","dataSet","seriesMeasure","datas","push","seriesname","Name","category","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","creditLabel","FusionChart","args","setArgs","fChart","setFchart","Math","random","toString","widgetWidth","setWidgetWidth","widgetHeight","setWidgetHeight","resizeTo","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","renderComplete","useResizeObserver","onResize","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","cursor","isInEditMode","Tooltip","target","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","entered","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.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 const [arrowColorDirection, setArrowColorDirection] = useState<any>();\r\n const [checkValuesValidity, setCheckValuesValidity] = useState<boolean>(false);\r\n const [checkVisibleUnit, setVisibilityUnit] = useState<boolean>(false);\r\n const prev = \"prev: \";\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 setTimeOverTimeImage(result.data);\r\n checkValues(result.data);\r\n checkUnitVisible(result.data);\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\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\r\n const setTimeOverTimeImage = (data: KpiChart) => {\r\n if (!widget?.current?.TimeOverTime) return;\r\n\r\n var ratio = data?.Ratio;\r\n if (!ratio) return;\r\n\r\n if (ratio >= 1) setArrowColorDirection(<span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up\"}></span>);\r\n else if (ratio < 1) setArrowColorDirection(<span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down\"}></span>);\r\n }\r\n\r\n const checkValues = (data: KpiChart) => {\r\n if (!widget?.current?.TimeOverTime) return;\r\n if (widget?.current?.TimeOverTime && data?.ComparisonValue == 0 && data?.Value === 0) return;\r\n setCheckValuesValidity(true);\r\n\r\n }\r\n const checkUnitVisible = (data: KpiChart) => {\r\n if (!widget?.current?.TimeOverTime || data?.ComparisonValue == 0) return;\r\n setVisibilityUnit(true);\r\n }\r\n\r\n\r\n return (\r\n\r\n !dataLoaded ?\r\n\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={\"dl-kpi-same-line\"}>\r\n <div className=\"dl-kpi-margin\">{data?.Value} </div>\r\n <div>{data?.Value != 0 && data?.Unit}</div>\r\n </div>\r\n\r\n <div className={\"dl-kpi-same-line\"}>\r\n <div className=\"dl-kpi-margin\">{checkValuesValidity && arrowColorDirection}</div>\r\n <div>{checkValuesValidity && data?.Ratio}</div>\r\n </div>\r\n\r\n <div className={\"dl-kpi-same-line\"}>\r\n <div className=\"dl-kpi-margin\">{widget?.current?.TimeOverTime && prev}</div>\r\n <div className=\"dl-kpi-margin\">{widget?.current?.TimeOverTime && data?.ComparisonValue}</div>\r\n <div>{checkVisibleUnit && data?.Unit}</div>\r\n </div>\r\n\r\n </div>\r\n\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport 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 = \"100%\";\r\n chart.dataFormat = \"json\";\r\n\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 chartLeftMargin: \"20\",\r\n chartTopMargin: \"20\",\r\n chartRightMargin: \"20\",\r\n chartBottomMargin: \"20\",\r\n showPercentValues: props.widget?.TypeCode == \"donut\" || props.widget?.TypeCode == \"pie\" ? \"0\" : \"1\",\r\n showValues: props.widget?.TypeCode == \"donut\" || props.widget?.TypeCode == \"pie\" ? \"0\" : \"1\",\r\n showLegend: ((props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\") && seriesMeasures?.length > 1) ? \"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: getTrimedLabelText(e.Label),\r\n id: { GroupById: e.GroupById, MeasureFieldId: values[0].MeasureFieldId },\r\n tooltext: e.Label + ' ,$dataValue ' + ', $percentValue'\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction getTrimedLabelText(label: string): string {\r\n if (!label || label.length <= 20) return label;\r\n return label.substring(0, 17) + \"...\";\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[]) {\r\n let dataSet: any[] = [];\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 });\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\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\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\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<any>({});\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n\r\n const [widgetWidth, setWidgetWidth] = useState<any>();\r\n const [widgetHeight, setWidgetHeight] = useState<any>();\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n onRefresh();\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\r\n }, []);\r\n\r\n const onRefresh = () => {\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key != widget.current?.key) return;\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 const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n //postWidget.GlobalFilters = globalFilter?.current;\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 if (widgetHeight && widgetWidth && fChart) fChart.resizeTo(widgetWidth, widgetHeight);\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 setWidgetWidth(width);\r\n setWidgetHeight(height);\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\nimport { Tooltip } from 'primereact/tooltip';\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 <Tooltip target=\".h-tool-tip\" />\r\n <h1 data-pr-tooltip={props.widget?.Title} data-pr-position=\"top\" className=\"h-tool-tip\">{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\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\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 setLayouts(newLayouts);\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-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>\r\n </div>);\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 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","arrowColorDirection","setArrowColorDirection","checkValuesValidity","setCheckValuesValidity","checkVisibleUnit","setVisibilityUnit","prev","useEffect","current","customChartProps","onRefresh","dataBinding","onEditWidget","subscribe","e","key","setTimeout","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","setTimeOverTimeImage","checkValues","checkUnitVisible","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","TimeOverTime","ratio","Ratio","React","className","ComparisonValue","Value","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Unit","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","chartLeftMargin","chartTopMargin","chartRightMargin","chartBottomMargin","showPercentValues","showValues","showLegend","dataSource","categories","buildCategories","dataset","buildDataSet","buildDataSource","values","map","label","getTrimedLabelText","id","GroupById","tooltext","dataSet","seriesMeasure","datas","push","seriesname","Name","category","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","creditLabel","FusionChart","args","setArgs","fChart","setFchart","Math","random","toString","widgetWidth","setWidgetWidth","widgetHeight","setWidgetHeight","resizeTo","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","renderComplete","useResizeObserver","onResize","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","cursor","isInEditMode","Tooltip","target","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","entered","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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"}
|