logitude-dashboard-library 1.4.6 → 1.4.7

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.
@@ -332,11 +332,6 @@ $dark-grey: #717585;
332
332
  position: absolute;
333
333
  }
334
334
 
335
-
336
-
337
-
338
-
339
-
340
335
  .dl-grid--bordered>div {
341
336
  background-color: #ECECEC;
342
337
  }
@@ -30,7 +30,12 @@ export interface ChartInfo {
30
30
  legendCaptionFontSize: string;
31
31
  labelFont: string;
32
32
  labelFontSize: string;
33
+ toolTipBorderColor: string;
34
+ toolTipBgAlpha: string;
35
+ showToolTipShadow: string;
36
+ toolTipBgColor: string;
33
37
  plottooltext: string;
34
38
  }
35
- export declare function getTooltip(): string;
39
+ export declare function getTooltip(widget: ReactWidgetPM): string;
40
+ export declare function getTooltipPercentage(widget: ReactWidgetPM): string;
36
41
  export declare function getSeriesPositionColor(position: number): string | null;
package/dist/index.js CHANGED
@@ -379,7 +379,6 @@ function buildDataSource(values) {
379
379
  GroupById: e.GroupById,
380
380
  MeasureFieldId: values[0].MeasureFieldId
381
381
  },
382
- tooltext: e.Label + ' ,$dataValue ' + ', $percentValue',
383
382
  color: getSeriesPositionColor(index + 1)
384
383
  };
385
384
  return item;
@@ -443,16 +442,19 @@ function BuildFusionChartObject(seriesMeasures, widget) {
443
442
 
444
443
  switch (widget === null || widget === void 0 ? void 0 : widget.TypeCode) {
445
444
  case 'bar':
446
- return getBarObject(seriesMeasures);
445
+ return getBarObject(seriesMeasures, widget);
447
446
 
448
447
  case 'line':
449
- return getLineObject(seriesMeasures);
448
+ return getLineObject(seriesMeasures, widget);
450
449
 
451
450
  case 'pie':
452
- return getPieObject(seriesMeasures);
451
+ return getPieObject(seriesMeasures, widget);
453
452
 
454
453
  case 'donut':
455
- return getDonutObject(seriesMeasures);
454
+ return getDonutObject(seriesMeasures, widget);
455
+
456
+ case 'column':
457
+ return getColumnObject(seriesMeasures, widget);
456
458
 
457
459
  default:
458
460
  return {};
@@ -470,7 +472,7 @@ function handelNullLabels(seriesMeasures) {
470
472
  function getBarObject(seriesMeasures, widget) {
471
473
  var chart = getDefaultChartobject();
472
474
  chart.type = "scrollbar2d";
473
- var chartInfo = getDefaultChartInfo();
475
+ var chartInfo = getDefaultChartInfo(widget);
474
476
  chartInfo.scrollHeight = "5";
475
477
  chartInfo.scrollWidth = "5";
476
478
  chartInfo.scrollPadding = "8";
@@ -488,7 +490,7 @@ function getBarObject(seriesMeasures, widget) {
488
490
  function getLineObject(seriesMeasures, widget) {
489
491
  var chart = getDefaultChartobject();
490
492
  chart.type = "msspline";
491
- var chartInfo = getDefaultChartInfo();
493
+ var chartInfo = getDefaultChartInfo(widget);
492
494
  chartInfo.scrollHeight = "5";
493
495
  chartInfo.scrollWidth = "5";
494
496
  chartInfo.scrollPadding = "8";
@@ -506,7 +508,7 @@ function getLineObject(seriesMeasures, widget) {
506
508
  function getDonutObject(seriesMeasures, widget) {
507
509
  var chart = getDefaultChartobject();
508
510
  chart.type = "doughnut2d";
509
- var chartInfo = getDefaultChartInfo();
511
+ var chartInfo = getDefaultChartInfo(widget);
510
512
  chartInfo.showPercentValues = "0";
511
513
  chartInfo.showValues = "0";
512
514
  chartInfo.showLegend = "0";
@@ -519,7 +521,7 @@ function getDonutObject(seriesMeasures, widget) {
519
521
  function getPieObject(seriesMeasures, widget) {
520
522
  var chart = getDefaultChartobject();
521
523
  chart.type = "pie2d";
522
- var chartInfo = getDefaultChartInfo();
524
+ var chartInfo = getDefaultChartInfo(widget);
523
525
  chartInfo.showPercentValues = "0";
524
526
  chartInfo.showValues = "0";
525
527
  chartInfo.showLegend = "0";
@@ -531,6 +533,24 @@ function getPieObject(seriesMeasures, widget) {
531
533
  return chart;
532
534
  }
533
535
 
536
+ function getColumnObject(seriesMeasures, widget) {
537
+ var chart = getDefaultChartobject();
538
+ chart.type = "scrollcolumn2d";
539
+ var chartInfo = getDefaultChartInfo(widget);
540
+ chartInfo.scrollHeight = "5";
541
+ chartInfo.scrollWidth = "5";
542
+ chartInfo.scrollPadding = "8";
543
+ chartInfo.flatScrollBars = "1";
544
+ chartInfo.showPercentValues = "1";
545
+ chartInfo.showLegend = (seriesMeasures === null || seriesMeasures === void 0 ? void 0 : seriesMeasures.length) > 1 ? "1" : "0";
546
+ chartInfo.legendItemFont = defautFont;
547
+ chartInfo.legendItemFontSize = defautFontSize;
548
+ chartInfo.divLineDashed = "1";
549
+ chartInfo.divLineDashLen = "7";
550
+ chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);
551
+ return chart;
552
+ }
553
+
534
554
  function getDefaultChartobject() {
535
555
  var chart = {};
536
556
  chart.type = "column2d";
@@ -540,7 +560,7 @@ function getDefaultChartobject() {
540
560
  return chart;
541
561
  }
542
562
 
543
- function getDefaultChartInfo() {
563
+ function getDefaultChartInfo(widget) {
544
564
  var chart = {};
545
565
  chart.theme = "fusion";
546
566
  chart.baseFont = defautFont;
@@ -551,8 +571,19 @@ function getDefaultChartInfo() {
551
571
  chart.chartTopMargin = "20";
552
572
  chart.chartRightMargin = "20";
553
573
  chart.chartBottomMargin = "20";
574
+ chart.toolTipBgColor = "#FFFFFF";
575
+ chart.showToolTipShadow = "1";
576
+ chart.plottooltext = getTooltip(widget);
554
577
  return chart;
555
578
  }
579
+
580
+ function getTooltip(widget) {
581
+ return "\n <div style=\"min-width: 108px;\">\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\n <span style=\"margin: 0; height: 10px; width: 10px; background-color: #369CFB; border-radius: 50%; display: inline-block;\"></span>\n <p style=\" margin: 0; margin-left: 4px;font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232; flex: none; order: 1;flex-grow: 0;\">$label</p>\n </div>\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\n <div style=\"display: flex;align-items: center;margin:0;margin-top: 6px;\">\n <p style=\"margin: 0;font-family: 'Manrope';font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;flex: none;order: 0;flex-grow: 0;\">Count:</p>\n <p style=\"margin: 0;margin-left: 6px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #323232;flex: none; order: 1;flex-grow: 0;\">$dataValue</p>\n " + getTooltipPercentage(widget) + " </div>\n </div>\n ";
582
+ }
583
+ function getTooltipPercentage(widget) {
584
+ if (widget.TypeCode != "donut" && widget.TypeCode != "pie") return "";
585
+ return "\n <p style=\"margin: 0;margin-left: 2px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;flex: none; order: 1;flex-grow: 0;\">($percentValue)</p>\n ";
586
+ }
556
587
  function getSeriesPositionColor(position) {
557
588
  switch (position) {
558
589
  case 1:
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/FusionCharts/FusionChartDataSoruceBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionColors.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/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 { KpiChart } from \"../../../../types/KpiChart\";\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 const widget = useRef<ReactWidgetPM>();\r\n\r\n const [data, setData] = useState<KpiChart>();\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 = \"\";\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n setDataLoaded(false);\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 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 (widget?.current?.WidgetMeasures) measureFieldId = widget?.current?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current\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 setCheckValuesValidity(false);\r\n\r\n if (!widget?.current?.TimeOverTime) return;\r\n if (widget?.current?.TimeOverTime && (data?.ComparisonValue === 0 || data?.ComparisonValue === null) && (data?.Value === 0 || data?.Value === null)) return;\r\n setCheckValuesValidity(true);\r\n\r\n }\r\n const checkUnitVisible = (data: KpiChart) => {\r\n setVisibilityUnit(false);\r\n\r\n if (!widget?.current?.TimeOverTime || data?.ComparisonValue == 0 || data?.ComparisonValue === null) return;\r\n setVisibilityUnit(true);\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '60px', height: '60px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"dl-kpi-same-line\"}>\r\n <div className=\"dl-kpi-value dl-kpi-textTrimming\">{data?.Value}</div>\r\n <div className=\"dl-kpi-unit\">{data?.Value != 0 && data?.Unit}</div>\r\n {checkValuesValidity ?\r\n <div className={\"dl-kpi-same-line dl-kpi-ratio\"}>\r\n <div className=\"dl-kpi-margin\">{arrowColorDirection}</div>\r\n <div>{data?.Ratio} %</div>\r\n </div>\r\n : null}\r\n </div>\r\n \r\n\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 </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 { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ChartInfo, getSeriesPositionColor } from \"./FusionChartObjectBuilder\";\r\n\r\n\r\nexport function getCategoriesBasedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[]): any {\r\n if (!seriesMeasures || !seriesMeasures[0]) return {};\r\n return {\r\n chart: chartInfo,\r\n categories: buildCategories(seriesMeasures),\r\n dataset: buildDataSet(seriesMeasures)\r\n }\r\n}\r\n\r\n\r\nexport function getSimpleDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[]): any {\r\n if (!seriesMeasures || !seriesMeasures[0]) return {};\r\n return {\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\r\n data = values[0].SeriesMeasureVulues.map((e, index) => {\r\n let item = {\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 color :getSeriesPositionColor(index + 1)\r\n }\r\n return item;\r\n });\r\n return data;\r\n}\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 let seriesPosition = 1;\r\n\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, color: getSeriesPositionColor(seriesPosition) });\r\n seriesPosition++;\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}","export const mainYellowColor = \"#F6CF33\"\r\nexport const mainRedColor = \"#EE5F77\"\r\nexport const mainGreenColor = \"#4AC76F\"\r\nexport const mainTurquoiseColor = \"#32C7C7\"\r\nexport const mainBlueColor = \"#369CFB\"\r\nexport const mainPurpleColor = \"#935BE0\"\r\nexport const mainOrangeColor = \"#FAAD14\"\r\n\r\nexport const lightYellowColor = \"#FBE799\"\r\nexport const lightRedColor = \"#F7AFBB\"\r\nexport const lightGreenColor = \"#A4E3B7\"\r\nexport const lightTurquoiseColor = \"#99E3E3\"\r\nexport const lightBlueColor = \"#9BCDFD\"\r\nexport const lightPurpleColor = \"#C9ADF0\"\r\nexport const lightOrangeColor = \"#FDD689\"\r\n\r\nexport const grey1Color = \"#F6F6F6\"\r\nexport const grey2Color = \"#F0F0F0\"\r\nexport const grey3Color = \"#D9D9D9\"\r\nexport const grey4Color = \"#A4A4A4\"","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { getCategoriesBasedDataSource, getSimpleDataSource } from \"./FusionChartDataSoruceBuilder\";\r\nimport { mainBlueColor, mainGreenColor, mainOrangeColor, mainPurpleColor, mainRedColor, mainTurquoiseColor, mainYellowColor } from \"./FusionColors\";\r\n\r\nconst defautFontSize = \"11\";\r\nconst defautFont = \"Manrope\";\r\n\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n handelNullLabels(seriesMeasures);\r\n switch (widget?.TypeCode) {\r\n case 'bar':\r\n return getBarObject(seriesMeasures, widget);\r\n case 'line':\r\n return getLineObject(seriesMeasures, widget);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, widget);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, widget);\r\n default:\r\n return {};\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[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"scrollbar2d\";\r\n\r\n let chartInfo = getDefaultChartInfo();\r\n chartInfo.scrollHeight = \"5\";\r\n chartInfo.scrollWidth = \"5\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = \"1\";\r\n chartInfo.showLegend = seriesMeasures?.length > 1 ? \"1\" : \"0\";\r\n chartInfo.legendItemFont = defautFont;\r\n chartInfo.legendItemFontSize = defautFontSize;\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"7\";\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"msspline\";\r\n\r\n let chartInfo = getDefaultChartInfo();\r\n chartInfo.scrollHeight = \"5\";\r\n chartInfo.scrollWidth = \"5\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = \"1\";\r\n chartInfo.showLegend = seriesMeasures?.length > 1 ? \"1\" : \"0\";\r\n chartInfo.legendItemFont = defautFont;\r\n chartInfo.legendItemFontSize = defautFontSize;\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"7\";\r\n\r\n\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"doughnut2d\";\r\n\r\n let chartInfo = getDefaultChartInfo();\r\n chartInfo.showPercentValues = \"0\";\r\n chartInfo.showValues = \"0\";\r\n chartInfo.showLegend = \"0\";\r\n chartInfo.legendCaptionFontSize = defautFontSize;\r\n chartInfo.legendCaptionFont = defautFont;\r\n\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"pie2d\";\r\n\r\n let chartInfo = getDefaultChartInfo();\r\n chartInfo.showPercentValues = \"0\";\r\n chartInfo.showValues = \"0\";\r\n chartInfo.showLegend = \"0\";\r\n chartInfo.legendCaptionFontSize = defautFontSize;\r\n chartInfo.legendCaptionFont = defautFont;\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getDefaultChartobject(): 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 return chart;\r\n}\r\n\r\nfunction getDefaultChartInfo(): ChartInfo {\r\n let chart = {} as ChartInfo;\r\n chart.theme = \"fusion\";\r\n chart.baseFont = defautFont;\r\n chart.baseFontSize = defautFontSize;\r\n chart.enableSlicing = \"0\";\r\n chart.enableRotation = \"0\";\r\n chart.chartLeftMargin = \"20\";\r\n chart.chartTopMargin = \"20\";\r\n chart.chartRightMargin = \"20\";\r\n chart.chartBottomMargin = \"20\";\r\n //chart.plottooltext = getTooltip();\r\n return chart;\r\n}\r\n\r\nexport interface ChartInfo {\r\n theme: string;\r\n scrollHeight: string;\r\n scrollWidth: string;\r\n scrollPadding: string;\r\n flatScrollBars: string;\r\n enableSlicing: string;\r\n chartLeftMargin: string;\r\n chartTopMargin: string;\r\n chartRightMargin: string;\r\n chartBottomMargin: string;\r\n baseFont: string;\r\n baseFontSize: string;\r\n showPercentValues: string;\r\n showValues: string;\r\n showLegend: string;\r\n lineColor: string;\r\n vDivLineDashed: string;\r\n vDivLineDashLen: string;\r\n divLineDashed: string;\r\n divLineDashLen: string;\r\n enableRotation: string;\r\n legendItemFont: string;\r\n legendItemFontSize: string;\r\n legendCaptionFont: string;\r\n legendCaptionFontSize: string;\r\n labelFont: string;\r\n labelFontSize: string;\r\n plottooltext: string;\r\n}\r\n\r\nexport function getTooltip(): string {\r\n return `\r\n <div style>\r\n \r\n </div>\r\n `;\r\n}\r\n\r\n\r\nexport function getSeriesPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return mainBlueColor;\r\n case 2: return mainGreenColor;\r\n case 3: return mainYellowColor;\r\n case 4: return mainTurquoiseColor;\r\n case 5: return mainPurpleColor;\r\n case 6: return mainOrangeColor;\r\n case 7: return mainRedColor;\r\n default: return null;\r\n }\r\n}\r\n\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// lineColor = \"#369CFB,#fc0345\"; to make same line multi gradient color","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 { 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 setTimeout(function () {\r\n RefreshData();\r\n }, 500);\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 dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n const chart = BuildFusionChartObject(result.data, widget.current!);\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, { useEffect, useRef, useState } 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\n\r\nimport { Tooltip } from 'primereact/tooltip';\r\nimport FusionChart from \"./ChartsComponents/FusionCharts/FusionChart\";\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 const widget = useRef<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const editWidget = () => {\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e?.key != widget.current?.key) return;\r\n setIsLoading(true);\r\n widget.current = { ...e };\r\n setIsLoading(false);\r\n })\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={widget.current?.Title} data-pr-position=\"top\" className=\"h-tool-tip\">{widget.current?.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 <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\"> {GetChartComponent()} </div>\r\n </div>\r\n );\r\n\r\n function GetChartComponent(): React.ReactNode {\r\n if (isLoading || !widget.current?.TypeCode) return null;\r\n if (widget.current?.TypeCode == \"kpi\") return <CustomChart dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />;\r\n return <FusionChart dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\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 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)localStorage.setItem(\"token\", props?.token);\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","data","setData","arrowColorDirection","setArrowColorDirection","checkValuesValidity","setCheckValuesValidity","checkVisibleUnit","setVisibilityUnit","useEffect","current","customChartProps","setTimeout","RefreshData","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","getCategoriesBasedDataSource","chartInfo","seriesMeasures","chart","categories","buildCategories","dataset","buildDataSet","getSimpleDataSource","buildDataSource","values","SeriesMeasureVulues","map","e","index","item","value","label","getTrimedLabelText","Label","id","GroupById","tooltext","color","getSeriesPositionColor","dataSet","seriesPosition","forEach","seriesMeasure","datas","push","seriesname","Name","category","mainYellowColor","mainRedColor","mainGreenColor","mainTurquoiseColor","mainBlueColor","mainPurpleColor","mainOrangeColor","defautFontSize","defautFont","BuildFusionChartObject","handelNullLabels","getBarObject","getLineObject","getPieObject","getDonutObject","element","getDefaultChartobject","type","getDefaultChartInfo","scrollHeight","scrollWidth","scrollPadding","flatScrollBars","showPercentValues","showLegend","legendItemFont","legendItemFontSize","divLineDashed","divLineDashLen","dataSource","showValues","legendCaptionFontSize","legendCaptionFont","labelFontSize","labelFont","dataFormat","theme","baseFont","baseFontSize","enableSlicing","enableRotation","chartLeftMargin","chartTopMargin","chartRightMargin","chartBottomMargin","position","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","key","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","isLoading","setIsLoading","editWidget","hide","editBtnClicked","dataBinding","onEditWidget","subscribe","el","cursor","isInEditMode","Tooltip","target","Title","Button","icon","toggle","OverlayPanel","deleteBtnClicked","GetChartComponent","widgetRef","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","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;;ACCA,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;;EACA,IAAMT,MAAM,GAAGU,YAAM,EAArB;;EAEA,iBAAwBL,cAAQ,EAAhC;MAAOM,IAAP;MAAaC,OAAb;;EACA,iBAAsDP,cAAQ,EAA9D;MAAOQ,mBAAP;MAA4BC,sBAA5B;;EACA,iBAAsDT,cAAQ,CAAU,KAAV,CAA9D;MAAOU,mBAAP;MAA4BC,sBAA5B;;EACA,iBAA8CX,cAAQ,CAAU,KAAV,CAAtD;MAAOY,AAAkBC,iBAAzB;EAGAC,eAAS,CAAC;IACNnB,MAAM,CAACoB,OAAP,GAAiBhB,KAAK,CAACiB,gBAAN,CAAuBrB,MAAxC;IACAO,aAAa,CAAC,KAAD,CAAb;IACAe,UAAU,CAAC;MACPC,WAAW;KADL,EAEP,GAFO,CAAV;GAHK,EAMN,EANM,CAAT;;EASA,IAAMA,WAAW,GAAG,SAAdA,WAAc;IAChB,IAAIC,yBAAyB,GAAG,IAAI3B,yBAAJ,EAAhC;;IACA,IAAI4B,UAAU,gBAAazB,MAAM,CAACoB,OAApB,CAAd;;IACAK,UAAU,CAACC,QAAX,GAAsBC,SAAtB;IACAH,yBAAyB,CAACtB,UAA1B,CAAqCuB,UAArC,EAAkEG,IAAlE,CAAuE,UAAAC,MAAM;MACzEjB,OAAO,CAACiB,MAAM,CAAClB,IAAR,CAAP;MACAJ,aAAa,CAAC,IAAD,CAAb;MACAuB,oBAAoB,CAACD,MAAM,CAAClB,IAAR,CAApB;MACAoB,WAAW,CAACF,MAAM,CAAClB,IAAR,CAAX;MACAqB,gBAAgB,CAACH,MAAM,CAAClB,IAAR,CAAhB;KALJ,EAMG,UAAAH,KAAK;;;MACJyB,OAAO,CAACC,GAAR,CAAY,OAAZ,EAAqB1B,KAArB;MACA,IAAIA,KAAJ,aAAIA,KAAJ,kCAAIA,KAAK,CAAE2B,QAAX,oEAAI,gBAAiBxB,IAArB,iDAAI,qBAAuByB,YAA3B,EAAyC3B,QAAQ,CAACD,KAAD,aAACA,KAAD,2CAACA,KAAK,CAAE2B,QAAR,8EAAC,iBAAiBxB,IAAlB,0DAAC,sBAAuByB,YAAxB,CAAR,CAAzC,KACK3B,QAAQ,CAACD,KAAK,CAAC6B,OAAP,CAAR;MACL9B,aAAa,CAAC,IAAD,CAAb;KAVJ;GAJJ;;EAmBA,IAAM+B,QAAQ,GAAG,SAAXA,QAAW;;;IACb,IAAIC,cAAJ;IACA,IAAIvC,MAAJ,aAAIA,MAAJ,kCAAIA,MAAM,CAAEoB,OAAZ,4CAAI,gBAAiBoB,cAArB,EAAqCD,cAAc,GAAGvC,MAAH,aAAGA,MAAH,2CAAGA,MAAM,CAAEoB,OAAX,8EAAG,iBAAiBoB,cAAjB,CAAgC,CAAhC,CAAH,0DAAG,sBAAoCC,cAArD;IACrCrC,KAAK,CAACiB,gBAAN,CAAuBqB,iBAAvB,CAAyC;MACrCD,cAAc,EAAEF,cADqB;MAErCI,MAAM,EAAE3C,MAAM,CAACoB;KAFnB;GAHJ;;EASA,IAAMU,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACnB,IAAD;;;IACzB,IAAI,EAACX,MAAD,aAACA,MAAD,mCAACA,MAAM,CAAEoB,OAAT,6CAAC,iBAAiBwB,YAAlB,CAAJ,EAAoC;IAEpC,IAAIC,KAAK,GAAGlC,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEmC,KAAlB;IACA,IAAI,CAACD,KAAL,EAAY;IAEZ,IAAIA,KAAK,IAAI,CAAb,EAAgB/B,sBAAsB,CAACiC,4BAAA,OAAA;MAAMC,SAAS,EAAE;KAAjB,CAAD,CAAtB,CAAhB,KACK,IAAIH,KAAK,GAAG,CAAZ,EAAe/B,sBAAsB,CAACiC,4BAAA,OAAA;MAAMC,SAAS,EAAE;KAAjB,CAAD,CAAtB;GAPxB;;EAUA,IAAMjB,WAAW,GAAG,SAAdA,WAAc,CAACpB,IAAD;;;IAChBK,sBAAsB,CAAC,KAAD,CAAtB;IAEA,IAAI,EAAChB,MAAD,aAACA,MAAD,mCAACA,MAAM,CAAEoB,OAAT,6CAAC,iBAAiBwB,YAAlB,CAAJ,EAAoC;IACpC,IAAI5C,MAAM,SAAN,IAAAA,MAAM,WAAN,wBAAAA,MAAM,CAAEoB,OAAR,8DAAiBwB,YAAjB,KAAkC,CAAAjC,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEsC,eAAN,MAA0B,CAA1B,IAA+B,CAAAtC,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEsC,eAAN,MAA0B,IAA3F,MAAqG,CAAAtC,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEuC,KAAN,MAAgB,CAAhB,IAAqB,CAAAvC,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEuC,KAAN,MAAgB,IAA1I,CAAJ,EAAqJ;IACrJlC,sBAAsB,CAAC,IAAD,CAAtB;GALJ;;EAQA,IAAMgB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACrB,IAAD;;;IACrBO,iBAAiB,CAAC,KAAD,CAAjB;IAEA,IAAI,EAAClB,MAAD,aAACA,MAAD,mCAACA,MAAM,CAAEoB,OAAT,6CAAC,iBAAiBwB,YAAlB,KAAkC,CAAAjC,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEsC,eAAN,KAAyB,CAA3D,IAAgE,CAAAtC,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEsC,eAAN,MAA0B,IAA9F,EAAoG;IACpG/B,iBAAiB,CAAC,IAAD,CAAjB;GAJJ;;EAOA,OACI,CAACZ,UAAD,GACIyC,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,CAAChD,KAAD,GACIuC,4BAAA,MAAA;IAAKC,SAAS,EAAE;IAAgBS,OAAO,EAAEnB;GAAzC,EACIS,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EAAmDrC,IAAnD,aAAmDA,IAAnD,uBAAmDA,IAAI,CAAEuC,KAAzD,CADJ,EAEKH,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EAA8B,CAAArC,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEuC,KAAN,KAAe,CAAf,KAAoBvC,IAApB,aAAoBA,IAApB,uBAAoBA,IAAI,CAAE+C,IAA1B,CAA9B,CAFL,EAGM3C,mBAAmB,GACbgC,4BAAA,MAAA;IAAKC,SAAS,EAAE;GAAhB,EACID,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EAAgCnC,mBAAhC,CADJ,EAEIkC,4BAAA,MAAA,MAAA,EAAMpC,IAAN,aAAMA,IAAN,uBAAMA,IAAI,CAAEmC,KAAZ,MAAA,CAFJ,CADa,GAKX,IARd,CADJ,CADJ,GAiBMC,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,EAAkCxC,KAAlC,CAFJ,CADF,CAvBd;AA+BH,CAxGD;;ACEA,IAAMoD,WAAW,GAAG,SAAdA,WAAc,CAACxD,KAAD;EAChB,IAAMyD,OAAO,GAAG,SAAVA,OAAU;;;IACZ,yBAAQzD,KAAK,CAACJ,MAAd,kDAAQ,cAAc8D,QAAtB;MACI,KAAK,KAAL;QAAY,OAAOf,4BAAA,CAAC5C,QAAD;UAAUkB,gBAAgB,EAAEjB;SAA5B,CAAP;;MACZ;QAAS,OAAO2C,4BAAA,MAAA,MAAA,gBAAA,CAAP;;GAHjB;;EAMA,OACIA,4BAAA,MAAA;IAAKK,KAAK,EAAE;MAAEE,MAAM,EAAE;;GAAtB,EAAiCO,OAAO,EAAxC,CADJ;AAGH,CAVD;;SCTgBE,6BAA6BC,WAAsBC;EAC/D,IAAI,CAACA,cAAD,IAAmB,CAACA,cAAc,CAAC,CAAD,CAAtC,EAA2C,OAAO,EAAP;EAC3C,OAAO;IACHC,KAAK,EAAEF,SADJ;IAEHG,UAAU,EAAEC,eAAe,CAACH,cAAD,CAFxB;IAGHI,OAAO,EAAEC,YAAY,CAACL,cAAD;GAHzB;AAKH;AAGD,SAAgBM,oBAAoBP,WAAsBC;EACtD,IAAI,CAACA,cAAD,IAAmB,CAACA,cAAc,CAAC,CAAD,CAAtC,EAA2C,OAAO,EAAP;EAC3C,OAAO;IACHC,KAAK,EAAEF,SADJ;IAEHrD,IAAI,EAAE6D,eAAe,CAACP,cAAD;GAFzB;AAIH;;AAED,SAASO,eAAT,CAAyBC,MAAzB;EACI,IAAI9D,IAAI,GAAU,EAAlB;EACA,IAAI,CAAC8D,MAAD,IAAW,CAACA,MAAM,CAAC,CAAD,CAAtB,EAA2B,OAAO9D,IAAP;EAE3BA,IAAI,GAAG8D,MAAM,CAAC,CAAD,CAAN,CAAUC,mBAAV,CAA8BC,GAA9B,CAAkC,UAACC,CAAD,EAAIC,KAAJ;IACrC,IAAIC,IAAI,GAAG;MACPC,KAAK,EAAEH,CAAC,CAAC1B,KADF;MAEP8B,KAAK,EAAEC,kBAAkB,CAACL,CAAC,CAACM,KAAH,CAFlB;MAGPC,EAAE,EAAE;QAAEC,SAAS,EAAER,CAAC,CAACQ,SAAf;QAA0B3C,cAAc,EAAEgC,MAAM,CAAC,CAAD,CAAN,CAAUhC;OAHjD;MAIP4C,QAAQ,EAAET,CAAC,CAACM,KAAF,GAAU,eAAV,GAA4B,iBAJ/B;MAKPI,KAAK,EAAEC,sBAAsB,CAACV,KAAK,GAAG,CAAT;KALjC;IAOA,OAAOC,IAAP;GARG,CAAP;EAUA,OAAOnE,IAAP;AACH;;AAGD,SAASsE,kBAAT,CAA4BD,KAA5B;EACI,IAAI,CAACA,KAAD,IAAUA,KAAK,CAACtH,MAAN,IAAgB,EAA9B,EAAkC,OAAOsH,KAAP;EAClC,OAAOA,KAAK,CAACxH,SAAN,CAAgB,CAAhB,EAAmB,EAAnB,IAAyB,KAAhC;AACH;;AAED,SAAS8G,YAAT,CAAsBL,cAAtB;EACI,IAAIuB,OAAO,GAAU,EAArB;EACA,IAAIC,cAAc,GAAG,CAArB;EAEAxB,cAAc,CAACyB,OAAf,CAAuB,UAAAC,aAAa;IAChC,IAAIC,KAAK,GAAGD,aAAa,CAACjB,mBAAd,CAAkCC,GAAlC,CAAsC,UAAAC,CAAC;MAC/C,OAAO;QAAEG,KAAK,EAAEH,CAAC,CAAC1B,KAAX;QAAkBiC,EAAE,EAAE;UAAEC,SAAS,EAAER,CAAC,CAACQ,SAAf;UAA0B3C,cAAc,EAAEkD,aAAa,CAAClD;;OAArF;KADQ,CAAZ;IAGA+C,OAAO,CAACK,IAAR,CAAa;MAAElF,IAAI,EAAEiF,KAAR;MAAeE,UAAU,EAAEH,aAAa,CAACI,IAAzC;MAA+CT,KAAK,EAAEC,sBAAsB,CAACE,cAAD;KAAzF;IACAA,cAAc;GALlB;EAOA,OAAOD,OAAP;AACH;;AAED,SAASpB,eAAT,CAAyBH,cAAzB;EACI,IAAIE,UAAU,GAAGF,cAAc,CAAC,CAAD,CAAd,CAAkBS,mBAAlB,CAAsCC,GAAtC,CAA0C,UAACC,CAAD;IACvD,OAAO;MACHI,KAAK,EAAEJ,CAAC,CAACM;KADb;GADa,CAAjB;EAKA,IAAIrD,MAAM,GAAU,EAApB;EACAA,MAAM,CAACgE,IAAP,CAAY;IAAEG,QAAQ,EAAE7B;GAAxB;EACA,OAAOtC,MAAP;AACH;;ACpEM,IAAMoE,eAAe,GAAG,SAAxB;AACP,AAAO,IAAMC,YAAY,GAAG,SAArB;AACP,AAAO,IAAMC,cAAc,GAAG,SAAvB;AACP,AAAO,IAAMC,kBAAkB,GAAG,SAA3B;AACP,AAAO,IAAMC,aAAa,GAAG,SAAtB;AACP,AAAO,IAAMC,eAAe,GAAG,SAAxB;AACP,AAAO,IAAMC,eAAe,GAAG,SAAxB;;ACAP,IAAMC,cAAc,GAAG,IAAvB;AACA,IAAMC,UAAU,GAAG,SAAnB;AAGA,SAAgBC,uBAAuBzC,gBAAiCjE;EACpE2G,gBAAgB,CAAC1C,cAAD,CAAhB;;EACA,QAAQjE,MAAR,aAAQA,MAAR,uBAAQA,MAAM,CAAE8D,QAAhB;IACI,KAAK,KAAL;MACI,OAAO8C,YAAY,CAAC3C,cAAD,AAAA,CAAnB;;IACJ,KAAK,MAAL;MACI,OAAO4C,aAAa,CAAC5C,cAAD,AAAA,CAApB;;IACJ,KAAK,KAAL;MACI,OAAO6C,YAAY,CAAC7C,cAAD,AAAA,CAAnB;;IACJ,KAAK,OAAL;MACI,OAAO8C,cAAc,CAAC9C,cAAD,AAAA,CAArB;;IACJ;MACI,OAAO,EAAP;;AAEX;;AAED,SAAS0C,gBAAT,CAA0B1C,cAA1B;EACIA,cAAc,CAACyB,OAAf,CAAuB,UAAAsB,OAAO;IAC1BA,OAAO,CAACtC,mBAAR,CAA4BgB,OAA5B,CAAoC,UAAAX,KAAK;MACrC,IAAI,CAACA,KAAK,CAACG,KAAP,IAAgBH,KAAK,CAACG,KAAN,IAAe,EAAnC,EACIH,KAAK,CAACG,KAAN,GAAc,aAAd;KAFR;GADJ;AAMH;;AAED,SAAS0B,YAAT,CAAsB3C,cAAtB,EAAuDjE,MAAvD;EACI,IAAIkE,KAAK,GAAG+C,qBAAqB,EAAjC;EACA/C,KAAK,CAACgD,IAAN,GAAa,aAAb;EAEA,IAAIlD,SAAS,GAAGmD,mBAAmB,EAAnC;EACAnD,SAAS,CAACoD,YAAV,GAAyB,GAAzB;EACApD,SAAS,CAACqD,WAAV,GAAwB,GAAxB;EACArD,SAAS,CAACsD,aAAV,GAA0B,GAA1B;EACAtD,SAAS,CAACuD,cAAV,GAA2B,GAA3B;EACAvD,SAAS,CAACwD,iBAAV,GAA8B,GAA9B;EACAxD,SAAS,CAACyD,UAAV,GAAuB,CAAAxD,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAEvG,MAAhB,IAAyB,CAAzB,GAA6B,GAA7B,GAAmC,GAA1D;EACAsG,SAAS,CAAC0D,cAAV,GAA2BjB,UAA3B;EACAzC,SAAS,CAAC2D,kBAAV,GAA+BnB,cAA/B;EACAxC,SAAS,CAAC4D,aAAV,GAA0B,GAA1B;EACA5D,SAAS,CAAC6D,cAAV,GAA2B,GAA3B;EAEA3D,KAAK,CAAC4D,UAAN,GAAmB/D,4BAA4B,CAACC,SAAD,EAAYC,cAAZ,CAA/C;EACA,OAAOC,KAAP;AACH;;AAED,SAAS2C,aAAT,CAAuB5C,cAAvB,EAAwDjE,MAAxD;EACI,IAAIkE,KAAK,GAAG+C,qBAAqB,EAAjC;EACA/C,KAAK,CAACgD,IAAN,GAAa,UAAb;EAEA,IAAIlD,SAAS,GAAGmD,mBAAmB,EAAnC;EACAnD,SAAS,CAACoD,YAAV,GAAyB,GAAzB;EACApD,SAAS,CAACqD,WAAV,GAAwB,GAAxB;EACArD,SAAS,CAACsD,aAAV,GAA0B,GAA1B;EACAtD,SAAS,CAACuD,cAAV,GAA2B,GAA3B;EACAvD,SAAS,CAACwD,iBAAV,GAA8B,GAA9B;EACAxD,SAAS,CAACyD,UAAV,GAAuB,CAAAxD,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAEvG,MAAhB,IAAyB,CAAzB,GAA6B,GAA7B,GAAmC,GAA1D;EACAsG,SAAS,CAAC0D,cAAV,GAA2BjB,UAA3B;EACAzC,SAAS,CAAC2D,kBAAV,GAA+BnB,cAA/B;EACAxC,SAAS,CAAC4D,aAAV,GAA0B,GAA1B;EACA5D,SAAS,CAAC6D,cAAV,GAA2B,GAA3B;EAIA3D,KAAK,CAAC4D,UAAN,GAAmB/D,4BAA4B,CAACC,SAAD,EAAYC,cAAZ,CAA/C;EACA,OAAOC,KAAP;AACH;;AAED,SAAS6C,cAAT,CAAwB9C,cAAxB,EAAyDjE,MAAzD;EACI,IAAIkE,KAAK,GAAG+C,qBAAqB,EAAjC;EACA/C,KAAK,CAACgD,IAAN,GAAa,YAAb;EAEA,IAAIlD,SAAS,GAAGmD,mBAAmB,EAAnC;EACAnD,SAAS,CAACwD,iBAAV,GAA8B,GAA9B;EACAxD,SAAS,CAAC+D,UAAV,GAAuB,GAAvB;EACA/D,SAAS,CAACyD,UAAV,GAAuB,GAAvB;EACAzD,SAAS,CAACgE,qBAAV,GAAkCxB,cAAlC;EACAxC,SAAS,CAACiE,iBAAV,GAA8BxB,UAA9B;EAEAvC,KAAK,CAAC4D,UAAN,GAAmBvD,mBAAmB,CAACP,SAAD,EAAYC,cAAZ,CAAtC;EACA,OAAOC,KAAP;AAEH;;AAED,SAAS4C,YAAT,CAAsB7C,cAAtB,EAAuDjE,MAAvD;EACI,IAAIkE,KAAK,GAAG+C,qBAAqB,EAAjC;EACA/C,KAAK,CAACgD,IAAN,GAAa,OAAb;EAEA,IAAIlD,SAAS,GAAGmD,mBAAmB,EAAnC;EACAnD,SAAS,CAACwD,iBAAV,GAA8B,GAA9B;EACAxD,SAAS,CAAC+D,UAAV,GAAuB,GAAvB;EACA/D,SAAS,CAACyD,UAAV,GAAuB,GAAvB;EACAzD,SAAS,CAACgE,qBAAV,GAAkCxB,cAAlC;EACAxC,SAAS,CAACiE,iBAAV,GAA8BxB,UAA9B;EACAzC,SAAS,CAACkE,aAAV,GAA0B1B,cAA1B;EACAxC,SAAS,CAACmE,SAAV,GAAsB1B,UAAtB;EAEAvC,KAAK,CAAC4D,UAAN,GAAmBvD,mBAAmB,CAACP,SAAD,EAAYC,cAAZ,CAAtC;EACA,OAAOC,KAAP;AACH;;AAED,SAAS+C,qBAAT;EACI,IAAI/C,KAAK,GAAG,EAAZ;EACAA,KAAK,CAACgD,IAAN,GAAa,UAAb;EACAhD,KAAK,CAACb,KAAN,GAAc,MAAd;EACAa,KAAK,CAACZ,MAAN,GAAe,MAAf;EACAY,KAAK,CAACkE,UAAN,GAAmB,MAAnB;EACA,OAAOlE,KAAP;AACH;;AAED,SAASiD,mBAAT;EACI,IAAIjD,KAAK,GAAG,EAAZ;EACAA,KAAK,CAACmE,KAAN,GAAc,QAAd;EACAnE,KAAK,CAACoE,QAAN,GAAiB7B,UAAjB;EACAvC,KAAK,CAACqE,YAAN,GAAqB/B,cAArB;EACAtC,KAAK,CAACsE,aAAN,GAAsB,GAAtB;EACAtE,KAAK,CAACuE,cAAN,GAAuB,GAAvB;EACAvE,KAAK,CAACwE,eAAN,GAAwB,IAAxB;EACAxE,KAAK,CAACyE,cAAN,GAAuB,IAAvB;EACAzE,KAAK,CAAC0E,gBAAN,GAAyB,IAAzB;EACA1E,KAAK,CAAC2E,iBAAN,GAA0B,IAA1B;EAEA,OAAO3E,KAAP;AACH;SA0CeqB,uBAAuBuD;EACnC,QAAQA,QAAR;IACI,KAAK,CAAL;MAAQ,OAAOzC,aAAP;;IACR,KAAK,CAAL;MAAQ,OAAOF,cAAP;;IACR,KAAK,CAAL;MAAQ,OAAOF,eAAP;;IACR,KAAK,CAAL;MAAQ,OAAOG,kBAAP;;IACR,KAAK,CAAL;MAAQ,OAAOE,eAAP;;IACR,KAAK,CAAL;MAAQ,OAAOC,eAAP;;IACR,KAAK,CAAL;MAAQ,OAAOL,YAAP;;IACR;MAAS,OAAO,IAAP;;AAEhB;;AC3KD6C,OAAO,CAACC,MAAR,CAAeC,YAAf,EAA6BC,MAA7B,EAAqCC,WAArC;AAEAF,YAAY,CAACG,OAAb,CAAqB,SAArB,EAAgC;EAC5BC,GAAG,EAAE,kOADuB;EAE5BC,WAAW,EAAE;AAFe,CAAhC;;AAWA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACnJ,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;MAAOmJ,IAAP;MAAaC,OAAb;;EACA,iBAA4BpJ,cAAQ,CAAM,EAAN,CAApC;MAAOqJ,MAAP;MAAeC,SAAf;;EACA,IAAMxE,EAAE,GAAG,CAACyE,IAAI,CAACC,MAAL,KAAgB,CAAjB,EAAoBC,QAApB,CAA6B,EAA7B,EAAiCtM,SAAjC,CAA2C,CAA3C,CAAX;;EAEA,iBAAsC6C,cAAQ,EAA9C;MAAO0J,WAAP;MAAoBC,cAApB;;EACA,iBAAwC3J,cAAQ,EAAhD;MAAO4J,YAAP;MAAqBC,eAArB;;EAEA/I,eAAS,CAAC;IACNnB,MAAM,CAACoB,OAAP,GAAiBhB,KAAK,CAACJ,MAAvB;IACAsB,UAAU,CAAC;MACPC,WAAW;KADL,EAEP,GAFO,CAAV;GAFK,EAKN,EALM,CAAT;;EAOA,IAAMA,WAAW,GAAG,SAAdA,WAAc;IAChB,IAAIC,yBAAyB,GAAG,IAAI3B,yBAAJ,EAAhC;;IACA,IAAI4B,UAAU,gBAAazB,MAAM,CAACoB,OAApB,CAAd;;IACAK,UAAU,CAACC,QAAX,GAAsBC,SAAtB;IACAH,yBAAyB,CAACzB,OAA1B,CAAkC0B,UAAlC,EAA+DG,IAA/D,CAAoE,UAAAC,MAAM;MACtE,IAAMqC,KAAK,GAAGwC,sBAAsB,CAAC7E,MAAM,CAAClB,IAAR,EAAcX,MAAM,CAACoB,OAArB,CAApC;MACAqI,OAAO,CAACvF,KAAD,CAAP;MACA3D,aAAa,CAAC,IAAD,CAAb;MACA,IAAI0J,YAAY,IAAIF,WAAhB,IAA+BL,MAAnC,EAA2CA,MAAM,CAACS,QAAP,CAAgBJ,WAAhB,EAA6BE,YAA7B;KAJ/C,EAKG,UAAAzJ,KAAK;;;MACJyB,OAAO,CAACC,GAAR,CAAY,OAAZ,EAAqB1B,KAArB;MACA,IAAIA,KAAJ,aAAIA,KAAJ,kCAAIA,KAAK,CAAE2B,QAAX,oEAAI,gBAAiBxB,IAArB,iDAAI,qBAAuByB,YAA3B,EAAyC3B,QAAQ,CAACD,KAAD,aAACA,KAAD,2CAACA,KAAK,CAAE2B,QAAR,8EAAC,iBAAiBxB,IAAlB,0DAAC,sBAAuByB,YAAxB,CAAR,CAAzC,KACK3B,QAAQ,CAACD,KAAK,CAAC6B,OAAP,CAAR;MACL9B,aAAa,CAAC,IAAD,CAAb;KATJ;GAJJ;;EA0BA,IAAM6J,aAAa,GAAG,SAAhBA,aAAgB,CAACC,QAAD,EAAgBC,OAAhB;IAClBlK,KAAK,CAACsC,iBAAN,CAAwB;MACpB0C,SAAS,EAAEkF,OAAO,CAACnF,EAAR,CAAWoF,SADF;MAEpB9H,cAAc,EAAE6H,OAAO,CAACnF,EAAR,CAAWqF,cAFP;MAGpB7H,MAAM,EAAE3C,MAAM,CAACoB;KAHnB;GADJ;;EAQA,IAAMqJ,cAAc,GAAG,SAAjBA,cAAiB,CAACvG,KAAD;IACnByF,SAAS,CAACzF,KAAD,CAAT;GADJ;;EAIA,yBAAgBwG,iBAAiB,CAAiB;IAC9CC,QAAQ,EAAE;UAAGtH,aAAAA;UAAOC,cAAAA;MAChB0G,cAAc,CAAC3G,KAAD,CAAd;MACA6G,eAAe,CAAC5G,MAAD,CAAf;MACAoG,MAAM,CAACS,QAAP,CAAgB9G,KAAhB,EAAuBC,MAAvB;;GAJyB,CAAjC;MAAQsH,GAAR,sBAAQA,GAAR;;EAQA,OACI,CAACtK,UAAD,GACIyC,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,CAAChD,KAAD,GACIuC,4BAAA,MAAA;IAAKC,SAAS,EAAE;IAAmB4H,GAAG,EAAEA;IAAKzF,EAAE,EAAEA;GAAjD,EAAqDpC,4BAAA,CAACgG,OAAD,oBAAaS;6BAA6BY;IAAeS,QAAQ,EAAEJ;IAAnE,CAArD,CADJ,GAEM1H,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,EAAkCxC,KAAlC,CAFJ,CADF,CARd;AAeH,CAjFD;;ACHA,IAAMsK,UAAU,GAAG,SAAbA,UAAa,CAAC1K,KAAD,EAAyB2K,KAAzB;;;EACjB,IAAMC,aAAa,GAAGtK,YAAM,CAAe,IAAf,CAA5B;EACA,IAAMV,MAAM,GAAGU,YAAM,EAArB;;EACA,gBAAkCL,cAAQ,CAAC,KAAD,CAA1C;MAAO4K,SAAP;MAAkBC,YAAlB;;EAEA,IAAMC,UAAU,GAAG,SAAbA,UAAa;;;IACjB,yBAAAH,aAAa,CAAC5J,OAAd,gFAAuBgK,IAAvB;IACAhL,KAAK,CAACiL,cAAN,CAAqBrL,MAAM,CAACoB,OAA5B;GAFF;;EAKAD,eAAS,CAAC;;;IACRnB,MAAM,CAACoB,OAAP,GAAiBhB,KAAK,CAACJ,MAAvB;IACA,sBAAAI,KAAK,CAACkL,WAAN,0EAAmBC,YAAnB,CAAgCC,SAAhC,CAA0C,UAAA5G,CAAC;;;MACzC,IAAI,CAAAA,CAAC,SAAD,IAAAA,CAAC,WAAD,YAAAA,CAAC,CAAEyE,GAAH,yBAAUrJ,MAAM,CAACoB,OAAjB,oDAAU,gBAAgBiI,GAA1B,CAAJ,EAAmC;MACnC6B,YAAY,CAAC,IAAD,CAAZ;MACAlL,MAAM,CAACoB,OAAP,gBAAsBwD,CAAtB;MACAsG,YAAY,CAAC,KAAD,CAAZ;KAJF;GAFO,EAQN,EARM,CAAT;EAWA,OACEnI,4BAAA,MAAA;IAAKC,SAAS,EAAC;IAAQqG,GAAG,EAAEjJ,KAAK,CAACqL,EAAN,CAASpM;IAAG+D,KAAK,EAAE;MAAEsI,MAAM,EAAEtL,KAAK,CAACuL,YAAN,GAAqB,MAArB,GAA8B;;GAAvF,EACE5I,4BAAA,SAAA,MAAA,EACEA,4BAAA,CAAC6I,eAAD;IAASC,MAAM,EAAC;GAAhB,CADF,EAEE9I,4BAAA,KAAA;2CAAqB/C,MAAM,CAACoB,4DAAP,iBAAgB0K;wBAAwB;IAAM9I,SAAS,EAAC;GAA7E,sBAA2FhD,MAAM,CAACoB,OAAlG,qDAA2F,iBAAgB0K,KAA3G,CAFF,EAII1L,KAAK,CAACuL,YAAN,GACE5I,4BAAA,CAACgJ,aAAD;IACEC,IAAI,EAAC;IACLhJ,SAAS,EAAC;IACVS,OAAO,EAAE,iBAACmB,CAAD;MAAA;;MAAA,iCAAOoG,aAAa,CAAC5J,OAArB,2DAAO,uBAAuB6K,MAAvB,CAA8BrH,CAA9B,CAAP;;IACTxB,KAAK,EAAE;MAAEkC,KAAK,EAAE;;GAJlB,CADF,GAOI,IAXR,EAcEvC,4BAAA,CAACmJ,yBAAD;IAActB,GAAG,EAAEI;IAAehI,SAAS,EAAC;GAA5C,EACED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,4BAAA,MAAA;IAAKU,OAAO,EAAE0H;GAAd,UAAA,CADF,EAEEpI,4BAAA,MAAA;IAAKU,OAAO,EAAE;MAAA;;MAAA,OAAMrD,KAAK,CAAC+L,gBAAN,kBAAuB/L,KAAK,CAACJ,MAA7B,kDAAuB,cAAcqJ,GAArC,CAAN;;GAAd,UAAA,CAFF,CADF,CAdF,CADF,EAsBEtG,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,CAtBF,EAuBED,4BAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,KAAA,EAAuCoJ,iBAAiB,EAAxD,KAAA,CAvBF,CADF;;EA4BA,SAASA,iBAAT;;;IACE,IAAInB,SAAS,IAAI,sBAACjL,MAAM,CAACoB,OAAR,6CAAC,iBAAgB0C,QAAjB,CAAjB,EAA4C,OAAO,IAAP;IAC5C,IAAI,qBAAA9D,MAAM,CAACoB,OAAP,sEAAgB0C,QAAhB,KAA4B,KAAhC,EAAuC,OAAOf,4BAAA,CAACa,WAAD;MAAa0H,WAAW,EAAElL,KAAK,CAACkL;MAAatL,MAAM,EAAEA,MAAM,CAACoB;MAASiL,SAAS,EAAEjM,KAAK,CAACiM;MAAW3J,iBAAiB,EAAEtC,KAAK,CAACsC;KAA1H,CAAP;IACvC,OAAOK,4BAAA,CAACwG,WAAD;MAAa+B,WAAW,EAAElL,KAAK,CAACkL;MAAatL,MAAM,EAAEA,MAAM,CAACoB;MAASiL,SAAS,EAAEjM,KAAK,CAACiM;MAAW3J,iBAAiB,EAAEtC,KAAK,CAACsC;KAA1H,CAAP;;AAEH,CAtDD;;SCxBgB4J,UAAWC;EACvB,OAAO5M,IAAI,CAAC6M,KAAL,CAAW7M,IAAI,CAACC,SAAL,CAAe2M,GAAf,CAAX,CAAP;AACH;;ACaD,IAAME,yBAAyB,GAAGC,6BAAa,CAACC,0BAAD,CAA/C;;AAUA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACxM,KAAD;EACxB,IAAMyM,OAAO,GAAGC,KAAK,CAAClP,IAAN,CAAW;IAAEF,MAAM,EAAE;GAArB,EAA2BqP,IAA3B,CAAgC,IAAhC,CAAhB;EACA,IAAMC,2BAA2B,GAAG,EAApC;;EACA,gBAA8B3M,cAAQ,CAAU;IAAE4M,EAAE,EAAE;GAAhB,CAAtC;MAAOC,OAAP;MAAgBC,UAAhB;;EACA,iBAAwD9M,cAAQ,CAACyM,KAAK,CAAClP,IAAN,CAAW;IAAEF,MAAM,EAAEsP;GAArB,EAAoDD,IAApD,CAAyD,IAAzD,CAAD,CAAhE;MAAOK,oBAAP;MAA6BC,uBAA7B;;EACA,iBAAoChN,cAAQ,CAA4BsB,SAA5B,CAA5C;MAAO2L,UAAP;;EACA,iBAAwCjN,cAAQ,CAAC,KAAD,CAAhD;MAAOsL,YAAP;MAAqB4B,eAArB;;EACA,IAAMC,oBAAoB,GAAG9M,YAAM,CAAiC,EAAjC,CAAnC;;EACA,iBAA8BL,cAAQ,CAA0B;IAAE4M,EAAE,EAAE;GAAhC,CAAtC;MAAOQ,OAAP;MAAgBC,UAAhB;;EACA,IAAMC,mBAAmB,GAAGjN,YAAM,CAAM,IAAN,CAAlC;EACA,IAAMkN,OAAO,GAAGlN,YAAM,CAAU,KAAV,CAAtB;EAEAS,eAAS,CAAC;IACR0M,UAAU,CAACzN,KAAK,CAAC0N,aAAP,CAAV;GADO,EAEN,CAAC1N,KAAK,CAAC0N,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,IAAlBnI,IAAkB;MAC3B0I,oBAAoB,CAACpM,OAArB,CAA6B0D,IAAI,CAACuE,GAAlC,IAAyCvE,IAAzC;;GAFJ;;EAKA,IAAMoJ,YAAY,GAAG,SAAfA,YAAe,CAACH,gBAAD;IACnB,IAAIE,MAAM,GAAQ;MAAEhB,EAAE,EAAE;KAAxB;IACAc,gBAAgB,CAACd,EAAjB,CAAoBtI,GAApB,CAAwB,UAAA0J,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAN;KAAzB,EAAiD5I,OAAjD,CAAyD,UAAAd,CAAC;MACxDqJ,MAAM,CAAChB,EAAP,CAAUpH,IAAV,CAAejB,CAAf;KADF;IAGA,OAAOqJ,MAAP;GALF;;EAQA9M,eAAS,CAAC;IACRoM,eAAe,CAACnN,KAAK,CAACmO,QAAP,CAAf;GADO,EAEN,CAACnO,KAAK,CAACmO,QAAP,CAFM,CAAT;;EAIA,SAASC,cAAT,CAAwBP,MAAxB,EAAqCQ,cAArC;IAEEC,YAAY,CAACD,cAAD,CAAZ;IACAtB,UAAU,CAACsB,cAAD,CAAV;IACAL,2BAA2B,CAACK,cAAD,CAA3B;;IACA,IAAIb,OAAO,CAACxM,OAAR,IAAmB,KAAvB,EAA8B;MAC5BwM,OAAO,CAACxM,OAAR,GAAkB,IAAlB;MACA;;;IAEFhB,KAAK,CAACoO,cAAN,CAAqBC,cAArB;;;EAGF,SAASC,YAAT,CAAsBD,cAAtB;IACE,sDAAmBA,cAAc,CAACxB,EAAlC,2CAAsC;MAAA,IAA3BnI,IAA2B;;MACpC,IAAI0I,oBAAoB,CAACpM,OAArB,CAA6B0D,IAAI,CAACzF,CAAlC,CAAJ,EAA0C;QACxCmO,oBAAoB,CAACpM,OAArB,CAA6B0D,IAAI,CAACzF,CAAlC,EAAqCiP,MAArC,GAA8CxJ,IAA9C;;;;;EAKN,SAAS6J,WAAT,CAAqBxJ,EAArB;IACE,IAAIyJ,UAAU,GAAG;MAAE3B,EAAE,EAAEC,OAAO,CAACD,EAAR,CAAW4B,MAAX,CAAkB,UAAAjK,CAAC;QAAA,OAAIA,CAAC,CAACvF,CAAF,IAAO8F,EAAX;OAAnB;KAAvB;IACAgI,UAAU,CAACyB,UAAD,CAAV;IACA,IAAIE,UAAU,GAAG;MAAE7B,EAAE,EAAEQ,OAAO,CAACR,EAAR,CAAW4B,MAAX,CAAkB,UAAAjK,CAAC;QAAA,OAAIA,CAAC,CAACyE,GAAF,IAASlE,EAAb;OAAnB;KAAvB;IACAgJ,oBAAoB,CAACW,UAAD,CAApB;IACApB,UAAU,CAACoB,UAAD,CAAV;IACA1O,KAAK,CAACoO,cAAN,CAAqBI,UAArB;;;EAGF,SAASzD,UAAT,CAAoBnL,MAApB;IACEA,MAAM,CAAC+O,WAAP,GAAqB,QAArB;IACA3O,KAAK,CAAC4O,cAAN,CAAqBhP,MAArB;;;EAGF,SAASoO,2BAAT,CAAqClB,OAArC;IACE,IAAI,CAACA,OAAL,EACE;IACF,IAAI+B,GAAG,GAAGjC,2BAAV;;IACA,sDAAqBE,OAAO,CAAC,IAAD,CAA5B,2CAAoC;MAAA,IAAzBe,MAAyB;MAClC,IAAIA,MAAM,CAACiB,CAAP,GAAWjB,MAAM,CAACkB,CAAlB,GAAsBF,GAA1B,EACEA,GAAG,GAAGhB,MAAM,CAACiB,CAAP,GAAWjB,MAAM,CAACkB,CAAxB;;;IAGJ,IAAIC,kBAAkB,GAAGH,GAAG,GAAG,CAA/B;IACAG,kBAAkB,GAAGA,kBAAkB,GAAGpC,2BAArB,GAAmDA,2BAAnD,GAAiFoC,kBAAtG;IACA/B,uBAAuB,CAACP,KAAK,CAAClP,IAAN,CAAW;MAAEF,MAAM,EAAE0R;KAArB,EAA2CrC,IAA3C,CAAgD,IAAhD,CAAD,CAAvB;;;EAEF,OAAQhK,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,EACG2I,YAAY,GAAGyB,oBAAoB,CAACzI,GAArB,CAAyB,UAACC,CAAD,EAAIvF,CAAJ;IAAA,OACvCwN,OAAO,CAAClI,GAAR,CAAY,UAACC,CAAD,EAAIvF,CAAJ;MAAA,OACV0D,4BAAA,MAAA;QAAKsG,GAAG,EAAEhK;QACR+D,KAAK,EAAE;UACLE,MAAM,EAAE+L,eAAe,CAACC;;OAF5B,CADU;KAAZ,CADuC;GAAzB,CAAH,GAST,IAVN,CADF,EAeEvM,4BAAA,CAAC0J,yBAAD;IAA2B7B,GAAG,EAAE+C;KAC1B0B;IACJnC,OAAO,EAAEA;IACTqC,WAAW,EAAC;IACZC,WAAW,EAAE7D;IACb8D,WAAW,EAAE9D;IACb+D,aAAa,EAAE;IACflB,cAAc,EAAEA;IAPlB,EASGf,OAAO,CAACR,EAAR,CAAWtI,GAAX,CAAe,UAAC3E,MAAD;IAAA;;IAAA,OAEd+C,4BAAA,MAAA;MAAKsG,GAAG,oBAAErJ,MAAM,CAACsO,MAAT,mDAAE,eAAejP;KAAzB,EACE0D,4BAAA,CAAC+H,UAAD;MACEa,YAAY,EAAEA;MACdtC,GAAG,qBAAErJ,MAAM,CAACsO,MAAT,oDAAE,gBAAejP;MACpBW,MAAM,EAAEA;MACRqM,SAAS,EAAEmB,oBAAoB,CAACpM,OAArB,CAA6BpB,MAAM,CAACqJ,GAApC;MACXoC,EAAE,EAAEzL;MACJsL,WAAW,EAAElL,KAAK,CAACkL;MACnBgC,UAAU,EAAEA;MACZjC,cAAc,EAAEF;MAChBgB,gBAAgB,EAAEwC;MAClBjM,iBAAiB,EAAEtC,KAAK,CAACsC;KAV3B,CADF,CAFc;GAAf,CATH,CAfF,CADF,CADF,CADM,CAAR;AAmDD,CA3ID;;AA6IA,AAAO,IAAM2M,eAAe,GAAG;EAC7BC,SAAS,EAAE,EADkB;EAE7BtM,SAAS,EAAE,QAFkB;EAG7B2M,IAAI,EAAE;IAAE1C,EAAE,EAAE,EAAN;IAAU2C,EAAE,EAAE,CAAd;IAAiBC,EAAE,EAAE,CAArB;IAAwBC,EAAE,EAAE,CAA5B;IAA+BC,GAAG,EAAE;GAHb;EAI7BC,gBAAgB,EAAE;AAJW,CAAxB;;AClJP,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAC7P,KAAD;;;EAChB,IAAM0N,aAAa,GAAGpN,YAAM,CAA0B;IAAEuM,EAAE,EAAE;GAAhC,CAA5B;;EACA,gBAAoD5M,cAAQ,CAA0B;IAAE4M,EAAE,EAAE;GAAhC,CAA5D;MAAOiD,kBAAP;MAA2BC,qBAA3B;;EACA,iBAAwC9P,cAAQ,CAAU,KAAV,CAAhD;MAAOsL,YAAP;MAAqByE,eAArB;;EAEAjP,eAAS,CAAC;IACRf,KAAK,CAACkL,WAAN,CAAkB+E,YAAlB,CAA+B7E,SAA/B,CAAyC,UAAA0B,OAAO;MAC9CY,aAAa,CAAC1M,OAAd,GAAwB8L,OAAxB;MACAiD,qBAAqB,CAAC7D,SAAS,CAACwB,aAAa,CAAC1M,OAAf,CAAV,CAArB;KAFF;IAIAhB,KAAK,CAACkL,WAAN,CAAkBgF,cAAlB,CAAiC9E,SAAjC,CAA2C,UAAA5G,CAAC;MAC1CwL,eAAe,CAACxL,CAAD,CAAf;KADF;IAGAxE,KAAK,CAACkL,WAAN,CAAkBiF,WAAlB,CAA8B/E,SAA9B,CAAwC,UAAA6C,CAAC;MACvCP,aAAa,CAAC1M,OAAd,CAAsB6L,EAAtB,CAAyBpH,IAAzB,CAA8BwI,CAA9B;MACA8B,qBAAqB,CAAC7D,SAAS,CAACwB,aAAa,CAAC1M,OAAf,CAAV,CAArB;KAFF;GARO,EAYN,EAZM,CAAT;EAkBA,IAAI,CAAAhB,KAAK,SAAL,IAAAA,KAAK,WAAL,4BAAAA,KAAK,CAAE9B,KAAP,8DAAcZ,MAAd,IAAuB,CAA3B,EAA6BsB,YAAY,CAACwR,OAAb,CAAqB,OAArB,EAA8BpQ,KAA9B,aAA8BA,KAA9B,uBAA8BA,KAAK,CAAE9B,KAArC;;EAE7B,IAAMmS,aAAa,GAAG,SAAhBA,aAAgB,CAACvD,OAAD;IACpB,IAAIwD,UAAU,GAA8B,EAA5C;IACA3S,MAAM,CAACD,IAAP,CAAYoP,OAAZ,EAAqBxH,OAArB,CAA6B,UAAAiL,QAAQ;MACnC,IAAIzD,OAAO,CAACyD,QAAD,CAAP,CAAkBjT,MAAlB,GAA2B,CAA/B,EAAkC;QAChCwP,OAAO,CAACyD,QAAD,CAAP,CAAkBhM,GAAlB,CAAsB,UAAAsJ,MAAM;UAC1ByC,UAAU,CAACzC,MAAM,CAAC5O,CAAR,CAAV,GAAuB4O,MAAvB;SADF;QAGA;;KALJ;IAQA,IAAI2C,gBAAgB,GAAoB,EAAxC;IACA9C,aAAa,CAAC1M,OAAd,CAAsB6L,EAAtB,CAAyBvH,OAAzB,CAAiC,UAAA1F,MAAM;MACrC,IAAI0Q,UAAU,CAAC1Q,MAAM,CAACqJ,GAAR,CAAd,EAA4B;QAC1BrJ,MAAM,CAAC6Q,cAAP,GAA2BH,UAAU,CAAC1Q,MAAM,CAACqJ,GAAR,CAAV,CAAuByH,CAAlD,SAAuDJ,UAAU,CAAC1Q,MAAM,CAACqJ,GAAR,CAAV,CAAuB6F,CAA9E;QACAlP,MAAM,CAAC+Q,WAAP,GAAwBL,UAAU,CAAC1Q,MAAM,CAACqJ,GAAR,CAAV,CAAuBgF,CAA/C,SAAoDqC,UAAU,CAAC1Q,MAAM,CAACqJ,GAAR,CAAV,CAAuB8F,CAA3E;QACAnP,MAAM,CAACsO,MAAP,GAAgBoC,UAAU,CAAC1Q,MAAM,CAACqJ,GAAR,CAA1B;QACAuH,gBAAgB,CAAC/K,IAAjB,CAAsB7F,MAAtB;;KALJ;IASA8N,aAAa,CAAC1M,OAAd,GAAwB;MAAE6L,EAAE,EAAE2D;KAA9B;IACAxQ,KAAK,CAAC4Q,eAAN,CAAsBlD,aAAa,CAAC1M,OAApC;GArBF;;EA0BA,OACE2B,mBAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,mBAAA,MAAA;IAAKC,SAAS,EAAC;GAAf,EACED,mBAAA,CAAC6J,iBAAD;IAAmBlK,iBAAiB,EAAEtC,KAAK,CAACsC;IAAmBoL,aAAa,EAAEoC;IAAoB5E,WAAW,EAAElL,KAAK,CAACkL;IAAaiD,QAAQ,EAAE5C;IAAc6C,cAAc,EAAEiC;IAAezB,cAAc,EAAE,wBAAChP,MAAD;MAAA,OAA2BI,KAAK,CAAC4O,cAAN,CAAqBhP,MAArB,CAA3B;;GAAzM,CADF,CADF,CADF;AAQD,CA3DD;;;;"}
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/FusionCharts/FusionChartDataSoruceBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionColors.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/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 { KpiChart } from \"../../../../types/KpiChart\";\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 const widget = useRef<ReactWidgetPM>();\r\n\r\n const [data, setData] = useState<KpiChart>();\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 = \"\";\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n setDataLoaded(false);\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 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 (widget?.current?.WidgetMeasures) measureFieldId = widget?.current?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current\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 setCheckValuesValidity(false);\r\n\r\n if (!widget?.current?.TimeOverTime) return;\r\n if (widget?.current?.TimeOverTime && (data?.ComparisonValue === 0 || data?.ComparisonValue === null) && (data?.Value === 0 || data?.Value === null)) return;\r\n setCheckValuesValidity(true);\r\n\r\n }\r\n const checkUnitVisible = (data: KpiChart) => {\r\n setVisibilityUnit(false);\r\n\r\n if (!widget?.current?.TimeOverTime || data?.ComparisonValue == 0 || data?.ComparisonValue === null) return;\r\n setVisibilityUnit(true);\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '60px', height: '60px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"dl-kpi-same-line\"}>\r\n <div className=\"dl-kpi-value dl-kpi-textTrimming\">{data?.Value}</div>\r\n <div className=\"dl-kpi-unit\">{data?.Value != 0 && data?.Unit}</div>\r\n {checkValuesValidity ?\r\n <div className={\"dl-kpi-same-line dl-kpi-ratio\"}>\r\n <div className=\"dl-kpi-margin\">{arrowColorDirection}</div>\r\n <div>{data?.Ratio} %</div>\r\n </div>\r\n : null}\r\n </div>\r\n \r\n\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 </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 { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ChartInfo, getSeriesPositionColor } from \"./FusionChartObjectBuilder\";\r\n\r\n\r\nexport function getCategoriesBasedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[]): any {\r\n if (!seriesMeasures || !seriesMeasures[0]) return {};\r\n return {\r\n chart: chartInfo,\r\n categories: buildCategories(seriesMeasures),\r\n dataset: buildDataSet(seriesMeasures)\r\n }\r\n}\r\n\r\n\r\nexport function getSimpleDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[]): any {\r\n if (!seriesMeasures || !seriesMeasures[0]) return {};\r\n return {\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\r\n data = values[0].SeriesMeasureVulues.map((e, index) => {\r\n let item = {\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 color :getSeriesPositionColor(index + 1)\r\n }\r\n return item;\r\n });\r\n return data;\r\n}\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 let seriesPosition = 1;\r\n\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, color: getSeriesPositionColor(seriesPosition) });\r\n seriesPosition++;\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}","export const mainYellowColor = \"#F6CF33\"\r\nexport const mainRedColor = \"#EE5F77\"\r\nexport const mainGreenColor = \"#4AC76F\"\r\nexport const mainTurquoiseColor = \"#32C7C7\"\r\nexport const mainBlueColor = \"#369CFB\"\r\nexport const mainPurpleColor = \"#935BE0\"\r\nexport const mainOrangeColor = \"#FAAD14\"\r\n\r\nexport const lightYellowColor = \"#FBE799\"\r\nexport const lightRedColor = \"#F7AFBB\"\r\nexport const lightGreenColor = \"#A4E3B7\"\r\nexport const lightTurquoiseColor = \"#99E3E3\"\r\nexport const lightBlueColor = \"#9BCDFD\"\r\nexport const lightPurpleColor = \"#C9ADF0\"\r\nexport const lightOrangeColor = \"#FDD689\"\r\n\r\nexport const grey1Color = \"#F6F6F6\"\r\nexport const grey2Color = \"#F0F0F0\"\r\nexport const grey3Color = \"#D9D9D9\"\r\nexport const grey4Color = \"#A4A4A4\"","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { getCategoriesBasedDataSource, getSimpleDataSource } from \"./FusionChartDataSoruceBuilder\";\r\nimport { mainBlueColor, mainGreenColor, mainOrangeColor, mainPurpleColor, mainRedColor, mainTurquoiseColor, mainYellowColor } from \"./FusionColors\";\r\n\r\nconst defautFontSize = \"11\";\r\nconst defautFont = \"Manrope\";\r\n\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n handelNullLabels(seriesMeasures);\r\n switch (widget?.TypeCode) {\r\n case 'bar':\r\n return getBarObject(seriesMeasures, widget);\r\n case 'line':\r\n return getLineObject(seriesMeasures, widget);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, widget);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, widget);\r\n case 'column':\r\n return getColumnObject(seriesMeasures, widget);\r\n default:\r\n return {};\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[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"scrollbar2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollHeight = \"5\";\r\n chartInfo.scrollWidth = \"5\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = \"1\";\r\n chartInfo.showLegend = seriesMeasures?.length > 1 ? \"1\" : \"0\";\r\n chartInfo.legendItemFont = defautFont;\r\n chartInfo.legendItemFontSize = defautFontSize;\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"7\";\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"msspline\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollHeight = \"5\";\r\n chartInfo.scrollWidth = \"5\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = \"1\";\r\n chartInfo.showLegend = seriesMeasures?.length > 1 ? \"1\" : \"0\";\r\n chartInfo.legendItemFont = defautFont;\r\n chartInfo.legendItemFontSize = defautFontSize;\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"7\";\r\n\r\n\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"doughnut2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.showPercentValues = \"0\";\r\n chartInfo.showValues = \"0\";\r\n chartInfo.showLegend = \"0\";\r\n chartInfo.legendCaptionFontSize = defautFontSize;\r\n chartInfo.legendCaptionFont = defautFont;\r\n\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"pie2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.showPercentValues = \"0\";\r\n chartInfo.showValues = \"0\";\r\n chartInfo.showLegend = \"0\";\r\n chartInfo.legendCaptionFontSize = defautFontSize;\r\n chartInfo.legendCaptionFont = defautFont;\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"scrollcolumn2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollHeight = \"5\";\r\n chartInfo.scrollWidth = \"5\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = \"1\";\r\n chartInfo.showLegend = seriesMeasures?.length > 1 ? \"1\" : \"0\";\r\n chartInfo.legendItemFont = defautFont;\r\n chartInfo.legendItemFontSize = defautFontSize;\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"7\";\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\n\r\nfunction getDefaultChartobject(): 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 return chart;\r\n}\r\n\r\nfunction getDefaultChartInfo(widget: ReactWidgetPM): ChartInfo {\r\n let chart = {} as ChartInfo;\r\n chart.theme = \"fusion\";\r\n chart.baseFont = defautFont;\r\n chart.baseFontSize = defautFontSize;\r\n chart.enableSlicing = \"0\";\r\n chart.enableRotation = \"0\";\r\n chart.chartLeftMargin = \"20\";\r\n chart.chartTopMargin = \"20\";\r\n chart.chartRightMargin = \"20\";\r\n chart.chartBottomMargin = \"20\";\r\n\r\n chart.toolTipBgColor = \"#FFFFFF\";\r\n chart.showToolTipShadow = \"1\";\r\n chart.plottooltext = getTooltip(widget);\r\n return chart;\r\n}\r\n\r\nexport interface ChartInfo {\r\n theme: string;\r\n scrollHeight: string;\r\n scrollWidth: string;\r\n scrollPadding: string;\r\n flatScrollBars: string;\r\n enableSlicing: string;\r\n chartLeftMargin: string;\r\n chartTopMargin: string;\r\n chartRightMargin: string;\r\n chartBottomMargin: string;\r\n baseFont: string;\r\n baseFontSize: string;\r\n showPercentValues: string;\r\n showValues: string;\r\n showLegend: string;\r\n lineColor: string;\r\n vDivLineDashed: string;\r\n vDivLineDashLen: string;\r\n divLineDashed: string;\r\n divLineDashLen: string;\r\n enableRotation: string;\r\n legendItemFont: string;\r\n legendItemFontSize: string;\r\n legendCaptionFont: string;\r\n legendCaptionFontSize: string;\r\n labelFont: string;\r\n labelFontSize: string;\r\n toolTipBorderColor: string;\r\n toolTipBgAlpha: string;\r\n showToolTipShadow: string;\r\n toolTipBgColor: string;\r\n plottooltext: string;\r\n}\r\n\r\nexport function getTooltip(widget: ReactWidgetPM): string {\r\n return `\r\n <div style=\"min-width: 108px;\">\r\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\r\n <span style=\"margin: 0; height: 10px; width: 10px; background-color: #369CFB; border-radius: 50%; display: inline-block;\"></span>\r\n <p style=\" margin: 0; margin-left: 4px;font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232; flex: none; order: 1;flex-grow: 0;\">$label</p>\r\n </div>\r\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\r\n <div style=\"display: flex;align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;font-family: 'Manrope';font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;flex: none;order: 0;flex-grow: 0;\">Count:</p>\r\n <p style=\"margin: 0;margin-left: 6px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #323232;flex: none; order: 1;flex-grow: 0;\">$dataValue</p>\r\n ` + getTooltipPercentage(widget) +\r\n ` </div>\r\n </div>\r\n `;\r\n}\r\n\r\nexport function getTooltipPercentage(widget: ReactWidgetPM): string {\r\n if (widget.TypeCode != \"donut\" && widget.TypeCode != \"pie\") return \"\";\r\n return `\r\n <p style=\"margin: 0;margin-left: 2px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;flex: none; order: 1;flex-grow: 0;\">($percentValue)</p>\r\n `;\r\n}\r\n\r\n\r\nexport function getSeriesPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return mainBlueColor;\r\n case 2: return mainGreenColor;\r\n case 3: return mainYellowColor;\r\n case 4: return mainTurquoiseColor;\r\n case 5: return mainPurpleColor;\r\n case 6: return mainOrangeColor;\r\n case 7: return mainRedColor;\r\n default: return null;\r\n }\r\n}\r\n\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// lineColor = \"#369CFB,#fc0345\"; to make same line multi gradient color","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 { 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 setTimeout(function () {\r\n RefreshData();\r\n }, 500);\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 dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n const chart = BuildFusionChartObject(result.data, widget.current!);\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, { useEffect, useRef, useState } 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\n\r\nimport { Tooltip } from 'primereact/tooltip';\r\nimport FusionChart from \"./ChartsComponents/FusionCharts/FusionChart\";\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 const widget = useRef<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const editWidget = () => {\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e?.key != widget.current?.key) return;\r\n setIsLoading(true);\r\n widget.current = { ...e };\r\n setIsLoading(false);\r\n })\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={widget.current?.Title} data-pr-position=\"top\" className=\"h-tool-tip\">{widget.current?.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 <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\"> {GetChartComponent()} </div>\r\n </div>\r\n );\r\n\r\n function GetChartComponent(): React.ReactNode {\r\n if (isLoading || !widget.current?.TypeCode) return null;\r\n if (widget.current?.TypeCode == \"kpi\") return <CustomChart dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />;\r\n return <FusionChart dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\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 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)localStorage.setItem(\"token\", props?.token);\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","data","setData","arrowColorDirection","setArrowColorDirection","checkValuesValidity","setCheckValuesValidity","checkVisibleUnit","setVisibilityUnit","useEffect","current","customChartProps","setTimeout","RefreshData","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","getCategoriesBasedDataSource","chartInfo","seriesMeasures","chart","categories","buildCategories","dataset","buildDataSet","getSimpleDataSource","buildDataSource","values","SeriesMeasureVulues","map","e","index","item","value","label","getTrimedLabelText","Label","id","GroupById","color","getSeriesPositionColor","dataSet","seriesPosition","forEach","seriesMeasure","datas","push","seriesname","Name","category","mainYellowColor","mainRedColor","mainGreenColor","mainTurquoiseColor","mainBlueColor","mainPurpleColor","mainOrangeColor","defautFontSize","defautFont","BuildFusionChartObject","handelNullLabels","getBarObject","getLineObject","getPieObject","getDonutObject","getColumnObject","element","getDefaultChartobject","type","getDefaultChartInfo","scrollHeight","scrollWidth","scrollPadding","flatScrollBars","showPercentValues","showLegend","legendItemFont","legendItemFontSize","divLineDashed","divLineDashLen","dataSource","showValues","legendCaptionFontSize","legendCaptionFont","labelFontSize","labelFont","dataFormat","theme","baseFont","baseFontSize","enableSlicing","enableRotation","chartLeftMargin","chartTopMargin","chartRightMargin","chartBottomMargin","toolTipBgColor","showToolTipShadow","plottooltext","getTooltip","getTooltipPercentage","position","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","key","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","isLoading","setIsLoading","editWidget","hide","editBtnClicked","dataBinding","onEditWidget","subscribe","el","cursor","isInEditMode","Tooltip","target","Title","Button","icon","toggle","OverlayPanel","deleteBtnClicked","GetChartComponent","widgetRef","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","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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"}
@@ -376,7 +376,6 @@ function buildDataSource(values) {
376
376
  GroupById: e.GroupById,
377
377
  MeasureFieldId: values[0].MeasureFieldId
378
378
  },
379
- tooltext: e.Label + ' ,$dataValue ' + ', $percentValue',
380
379
  color: getSeriesPositionColor(index + 1)
381
380
  };
382
381
  return item;
@@ -440,16 +439,19 @@ function BuildFusionChartObject(seriesMeasures, widget) {
440
439
 
441
440
  switch (widget === null || widget === void 0 ? void 0 : widget.TypeCode) {
442
441
  case 'bar':
443
- return getBarObject(seriesMeasures);
442
+ return getBarObject(seriesMeasures, widget);
444
443
 
445
444
  case 'line':
446
- return getLineObject(seriesMeasures);
445
+ return getLineObject(seriesMeasures, widget);
447
446
 
448
447
  case 'pie':
449
- return getPieObject(seriesMeasures);
448
+ return getPieObject(seriesMeasures, widget);
450
449
 
451
450
  case 'donut':
452
- return getDonutObject(seriesMeasures);
451
+ return getDonutObject(seriesMeasures, widget);
452
+
453
+ case 'column':
454
+ return getColumnObject(seriesMeasures, widget);
453
455
 
454
456
  default:
455
457
  return {};
@@ -467,7 +469,7 @@ function handelNullLabels(seriesMeasures) {
467
469
  function getBarObject(seriesMeasures, widget) {
468
470
  var chart = getDefaultChartobject();
469
471
  chart.type = "scrollbar2d";
470
- var chartInfo = getDefaultChartInfo();
472
+ var chartInfo = getDefaultChartInfo(widget);
471
473
  chartInfo.scrollHeight = "5";
472
474
  chartInfo.scrollWidth = "5";
473
475
  chartInfo.scrollPadding = "8";
@@ -485,7 +487,7 @@ function getBarObject(seriesMeasures, widget) {
485
487
  function getLineObject(seriesMeasures, widget) {
486
488
  var chart = getDefaultChartobject();
487
489
  chart.type = "msspline";
488
- var chartInfo = getDefaultChartInfo();
490
+ var chartInfo = getDefaultChartInfo(widget);
489
491
  chartInfo.scrollHeight = "5";
490
492
  chartInfo.scrollWidth = "5";
491
493
  chartInfo.scrollPadding = "8";
@@ -503,7 +505,7 @@ function getLineObject(seriesMeasures, widget) {
503
505
  function getDonutObject(seriesMeasures, widget) {
504
506
  var chart = getDefaultChartobject();
505
507
  chart.type = "doughnut2d";
506
- var chartInfo = getDefaultChartInfo();
508
+ var chartInfo = getDefaultChartInfo(widget);
507
509
  chartInfo.showPercentValues = "0";
508
510
  chartInfo.showValues = "0";
509
511
  chartInfo.showLegend = "0";
@@ -516,7 +518,7 @@ function getDonutObject(seriesMeasures, widget) {
516
518
  function getPieObject(seriesMeasures, widget) {
517
519
  var chart = getDefaultChartobject();
518
520
  chart.type = "pie2d";
519
- var chartInfo = getDefaultChartInfo();
521
+ var chartInfo = getDefaultChartInfo(widget);
520
522
  chartInfo.showPercentValues = "0";
521
523
  chartInfo.showValues = "0";
522
524
  chartInfo.showLegend = "0";
@@ -528,6 +530,24 @@ function getPieObject(seriesMeasures, widget) {
528
530
  return chart;
529
531
  }
530
532
 
533
+ function getColumnObject(seriesMeasures, widget) {
534
+ var chart = getDefaultChartobject();
535
+ chart.type = "scrollcolumn2d";
536
+ var chartInfo = getDefaultChartInfo(widget);
537
+ chartInfo.scrollHeight = "5";
538
+ chartInfo.scrollWidth = "5";
539
+ chartInfo.scrollPadding = "8";
540
+ chartInfo.flatScrollBars = "1";
541
+ chartInfo.showPercentValues = "1";
542
+ chartInfo.showLegend = (seriesMeasures === null || seriesMeasures === void 0 ? void 0 : seriesMeasures.length) > 1 ? "1" : "0";
543
+ chartInfo.legendItemFont = defautFont;
544
+ chartInfo.legendItemFontSize = defautFontSize;
545
+ chartInfo.divLineDashed = "1";
546
+ chartInfo.divLineDashLen = "7";
547
+ chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);
548
+ return chart;
549
+ }
550
+
531
551
  function getDefaultChartobject() {
532
552
  var chart = {};
533
553
  chart.type = "column2d";
@@ -537,7 +557,7 @@ function getDefaultChartobject() {
537
557
  return chart;
538
558
  }
539
559
 
540
- function getDefaultChartInfo() {
560
+ function getDefaultChartInfo(widget) {
541
561
  var chart = {};
542
562
  chart.theme = "fusion";
543
563
  chart.baseFont = defautFont;
@@ -548,8 +568,19 @@ function getDefaultChartInfo() {
548
568
  chart.chartTopMargin = "20";
549
569
  chart.chartRightMargin = "20";
550
570
  chart.chartBottomMargin = "20";
571
+ chart.toolTipBgColor = "#FFFFFF";
572
+ chart.showToolTipShadow = "1";
573
+ chart.plottooltext = getTooltip(widget);
551
574
  return chart;
552
575
  }
576
+
577
+ function getTooltip(widget) {
578
+ return "\n <div style=\"min-width: 108px;\">\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\n <span style=\"margin: 0; height: 10px; width: 10px; background-color: #369CFB; border-radius: 50%; display: inline-block;\"></span>\n <p style=\" margin: 0; margin-left: 4px;font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232; flex: none; order: 1;flex-grow: 0;\">$label</p>\n </div>\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\n <div style=\"display: flex;align-items: center;margin:0;margin-top: 6px;\">\n <p style=\"margin: 0;font-family: 'Manrope';font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;flex: none;order: 0;flex-grow: 0;\">Count:</p>\n <p style=\"margin: 0;margin-left: 6px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #323232;flex: none; order: 1;flex-grow: 0;\">$dataValue</p>\n " + getTooltipPercentage(widget) + " </div>\n </div>\n ";
579
+ }
580
+ function getTooltipPercentage(widget) {
581
+ if (widget.TypeCode != "donut" && widget.TypeCode != "pie") return "";
582
+ return "\n <p style=\"margin: 0;margin-left: 2px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;flex: none; order: 1;flex-grow: 0;\">($percentValue)</p>\n ";
583
+ }
553
584
  function getSeriesPositionColor(position) {
554
585
  switch (position) {
555
586
  case 1:
@@ -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/FusionCharts/FusionChartDataSoruceBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionColors.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/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 { KpiChart } from \"../../../../types/KpiChart\";\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 const widget = useRef<ReactWidgetPM>();\r\n\r\n const [data, setData] = useState<KpiChart>();\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 = \"\";\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n setDataLoaded(false);\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 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 (widget?.current?.WidgetMeasures) measureFieldId = widget?.current?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current\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 setCheckValuesValidity(false);\r\n\r\n if (!widget?.current?.TimeOverTime) return;\r\n if (widget?.current?.TimeOverTime && (data?.ComparisonValue === 0 || data?.ComparisonValue === null) && (data?.Value === 0 || data?.Value === null)) return;\r\n setCheckValuesValidity(true);\r\n\r\n }\r\n const checkUnitVisible = (data: KpiChart) => {\r\n setVisibilityUnit(false);\r\n\r\n if (!widget?.current?.TimeOverTime || data?.ComparisonValue == 0 || data?.ComparisonValue === null) return;\r\n setVisibilityUnit(true);\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '60px', height: '60px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"dl-kpi-same-line\"}>\r\n <div className=\"dl-kpi-value dl-kpi-textTrimming\">{data?.Value}</div>\r\n <div className=\"dl-kpi-unit\">{data?.Value != 0 && data?.Unit}</div>\r\n {checkValuesValidity ?\r\n <div className={\"dl-kpi-same-line dl-kpi-ratio\"}>\r\n <div className=\"dl-kpi-margin\">{arrowColorDirection}</div>\r\n <div>{data?.Ratio} %</div>\r\n </div>\r\n : null}\r\n </div>\r\n \r\n\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 </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 { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ChartInfo, getSeriesPositionColor } from \"./FusionChartObjectBuilder\";\r\n\r\n\r\nexport function getCategoriesBasedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[]): any {\r\n if (!seriesMeasures || !seriesMeasures[0]) return {};\r\n return {\r\n chart: chartInfo,\r\n categories: buildCategories(seriesMeasures),\r\n dataset: buildDataSet(seriesMeasures)\r\n }\r\n}\r\n\r\n\r\nexport function getSimpleDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[]): any {\r\n if (!seriesMeasures || !seriesMeasures[0]) return {};\r\n return {\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\r\n data = values[0].SeriesMeasureVulues.map((e, index) => {\r\n let item = {\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 color :getSeriesPositionColor(index + 1)\r\n }\r\n return item;\r\n });\r\n return data;\r\n}\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 let seriesPosition = 1;\r\n\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, color: getSeriesPositionColor(seriesPosition) });\r\n seriesPosition++;\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}","export const mainYellowColor = \"#F6CF33\"\r\nexport const mainRedColor = \"#EE5F77\"\r\nexport const mainGreenColor = \"#4AC76F\"\r\nexport const mainTurquoiseColor = \"#32C7C7\"\r\nexport const mainBlueColor = \"#369CFB\"\r\nexport const mainPurpleColor = \"#935BE0\"\r\nexport const mainOrangeColor = \"#FAAD14\"\r\n\r\nexport const lightYellowColor = \"#FBE799\"\r\nexport const lightRedColor = \"#F7AFBB\"\r\nexport const lightGreenColor = \"#A4E3B7\"\r\nexport const lightTurquoiseColor = \"#99E3E3\"\r\nexport const lightBlueColor = \"#9BCDFD\"\r\nexport const lightPurpleColor = \"#C9ADF0\"\r\nexport const lightOrangeColor = \"#FDD689\"\r\n\r\nexport const grey1Color = \"#F6F6F6\"\r\nexport const grey2Color = \"#F0F0F0\"\r\nexport const grey3Color = \"#D9D9D9\"\r\nexport const grey4Color = \"#A4A4A4\"","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { getCategoriesBasedDataSource, getSimpleDataSource } from \"./FusionChartDataSoruceBuilder\";\r\nimport { mainBlueColor, mainGreenColor, mainOrangeColor, mainPurpleColor, mainRedColor, mainTurquoiseColor, mainYellowColor } from \"./FusionColors\";\r\n\r\nconst defautFontSize = \"11\";\r\nconst defautFont = \"Manrope\";\r\n\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n handelNullLabels(seriesMeasures);\r\n switch (widget?.TypeCode) {\r\n case 'bar':\r\n return getBarObject(seriesMeasures, widget);\r\n case 'line':\r\n return getLineObject(seriesMeasures, widget);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, widget);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, widget);\r\n default:\r\n return {};\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[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"scrollbar2d\";\r\n\r\n let chartInfo = getDefaultChartInfo();\r\n chartInfo.scrollHeight = \"5\";\r\n chartInfo.scrollWidth = \"5\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = \"1\";\r\n chartInfo.showLegend = seriesMeasures?.length > 1 ? \"1\" : \"0\";\r\n chartInfo.legendItemFont = defautFont;\r\n chartInfo.legendItemFontSize = defautFontSize;\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"7\";\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"msspline\";\r\n\r\n let chartInfo = getDefaultChartInfo();\r\n chartInfo.scrollHeight = \"5\";\r\n chartInfo.scrollWidth = \"5\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = \"1\";\r\n chartInfo.showLegend = seriesMeasures?.length > 1 ? \"1\" : \"0\";\r\n chartInfo.legendItemFont = defautFont;\r\n chartInfo.legendItemFontSize = defautFontSize;\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"7\";\r\n\r\n\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"doughnut2d\";\r\n\r\n let chartInfo = getDefaultChartInfo();\r\n chartInfo.showPercentValues = \"0\";\r\n chartInfo.showValues = \"0\";\r\n chartInfo.showLegend = \"0\";\r\n chartInfo.legendCaptionFontSize = defautFontSize;\r\n chartInfo.legendCaptionFont = defautFont;\r\n\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"pie2d\";\r\n\r\n let chartInfo = getDefaultChartInfo();\r\n chartInfo.showPercentValues = \"0\";\r\n chartInfo.showValues = \"0\";\r\n chartInfo.showLegend = \"0\";\r\n chartInfo.legendCaptionFontSize = defautFontSize;\r\n chartInfo.legendCaptionFont = defautFont;\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getDefaultChartobject(): 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 return chart;\r\n}\r\n\r\nfunction getDefaultChartInfo(): ChartInfo {\r\n let chart = {} as ChartInfo;\r\n chart.theme = \"fusion\";\r\n chart.baseFont = defautFont;\r\n chart.baseFontSize = defautFontSize;\r\n chart.enableSlicing = \"0\";\r\n chart.enableRotation = \"0\";\r\n chart.chartLeftMargin = \"20\";\r\n chart.chartTopMargin = \"20\";\r\n chart.chartRightMargin = \"20\";\r\n chart.chartBottomMargin = \"20\";\r\n //chart.plottooltext = getTooltip();\r\n return chart;\r\n}\r\n\r\nexport interface ChartInfo {\r\n theme: string;\r\n scrollHeight: string;\r\n scrollWidth: string;\r\n scrollPadding: string;\r\n flatScrollBars: string;\r\n enableSlicing: string;\r\n chartLeftMargin: string;\r\n chartTopMargin: string;\r\n chartRightMargin: string;\r\n chartBottomMargin: string;\r\n baseFont: string;\r\n baseFontSize: string;\r\n showPercentValues: string;\r\n showValues: string;\r\n showLegend: string;\r\n lineColor: string;\r\n vDivLineDashed: string;\r\n vDivLineDashLen: string;\r\n divLineDashed: string;\r\n divLineDashLen: string;\r\n enableRotation: string;\r\n legendItemFont: string;\r\n legendItemFontSize: string;\r\n legendCaptionFont: string;\r\n legendCaptionFontSize: string;\r\n labelFont: string;\r\n labelFontSize: string;\r\n plottooltext: string;\r\n}\r\n\r\nexport function getTooltip(): string {\r\n return `\r\n <div style>\r\n \r\n </div>\r\n `;\r\n}\r\n\r\n\r\nexport function getSeriesPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return mainBlueColor;\r\n case 2: return mainGreenColor;\r\n case 3: return mainYellowColor;\r\n case 4: return mainTurquoiseColor;\r\n case 5: return mainPurpleColor;\r\n case 6: return mainOrangeColor;\r\n case 7: return mainRedColor;\r\n default: return null;\r\n }\r\n}\r\n\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// lineColor = \"#369CFB,#fc0345\"; to make same line multi gradient color","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 { 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 setTimeout(function () {\r\n RefreshData();\r\n }, 500);\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 dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n const chart = BuildFusionChartObject(result.data, widget.current!);\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, { useEffect, useRef, useState } 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\n\r\nimport { Tooltip } from 'primereact/tooltip';\r\nimport FusionChart from \"./ChartsComponents/FusionCharts/FusionChart\";\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 const widget = useRef<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const editWidget = () => {\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e?.key != widget.current?.key) return;\r\n setIsLoading(true);\r\n widget.current = { ...e };\r\n setIsLoading(false);\r\n })\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={widget.current?.Title} data-pr-position=\"top\" className=\"h-tool-tip\">{widget.current?.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 <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\"> {GetChartComponent()} </div>\r\n </div>\r\n );\r\n\r\n function GetChartComponent(): React.ReactNode {\r\n if (isLoading || !widget.current?.TypeCode) return null;\r\n if (widget.current?.TypeCode == \"kpi\") return <CustomChart dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />;\r\n return <FusionChart dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\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 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)localStorage.setItem(\"token\", props?.token);\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","data","setData","arrowColorDirection","setArrowColorDirection","checkValuesValidity","setCheckValuesValidity","checkVisibleUnit","setVisibilityUnit","useEffect","current","customChartProps","setTimeout","RefreshData","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","getCategoriesBasedDataSource","chartInfo","seriesMeasures","chart","categories","buildCategories","dataset","buildDataSet","getSimpleDataSource","buildDataSource","values","SeriesMeasureVulues","map","e","index","item","value","label","getTrimedLabelText","Label","id","GroupById","tooltext","color","getSeriesPositionColor","dataSet","seriesPosition","forEach","seriesMeasure","datas","push","seriesname","Name","category","mainYellowColor","mainRedColor","mainGreenColor","mainTurquoiseColor","mainBlueColor","mainPurpleColor","mainOrangeColor","defautFontSize","defautFont","BuildFusionChartObject","handelNullLabels","getBarObject","getLineObject","getPieObject","getDonutObject","element","getDefaultChartobject","type","getDefaultChartInfo","scrollHeight","scrollWidth","scrollPadding","flatScrollBars","showPercentValues","showLegend","legendItemFont","legendItemFontSize","divLineDashed","divLineDashLen","dataSource","showValues","legendCaptionFontSize","legendCaptionFont","labelFontSize","labelFont","dataFormat","theme","baseFont","baseFontSize","enableSlicing","enableRotation","chartLeftMargin","chartTopMargin","chartRightMargin","chartBottomMargin","position","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","key","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","isLoading","setIsLoading","editWidget","hide","editBtnClicked","dataBinding","onEditWidget","subscribe","el","cursor","isInEditMode","Tooltip","target","Title","Button","icon","toggle","OverlayPanel","deleteBtnClicked","GetChartComponent","widgetRef","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","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/FusionCharts/FusionChartDataSoruceBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionColors.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/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 { KpiChart } from \"../../../../types/KpiChart\";\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 const widget = useRef<ReactWidgetPM>();\r\n\r\n const [data, setData] = useState<KpiChart>();\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 = \"\";\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n setDataLoaded(false);\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 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 (widget?.current?.WidgetMeasures) measureFieldId = widget?.current?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current\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 setCheckValuesValidity(false);\r\n\r\n if (!widget?.current?.TimeOverTime) return;\r\n if (widget?.current?.TimeOverTime && (data?.ComparisonValue === 0 || data?.ComparisonValue === null) && (data?.Value === 0 || data?.Value === null)) return;\r\n setCheckValuesValidity(true);\r\n\r\n }\r\n const checkUnitVisible = (data: KpiChart) => {\r\n setVisibilityUnit(false);\r\n\r\n if (!widget?.current?.TimeOverTime || data?.ComparisonValue == 0 || data?.ComparisonValue === null) return;\r\n setVisibilityUnit(true);\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '60px', height: '60px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"dl-kpi-same-line\"}>\r\n <div className=\"dl-kpi-value dl-kpi-textTrimming\">{data?.Value}</div>\r\n <div className=\"dl-kpi-unit\">{data?.Value != 0 && data?.Unit}</div>\r\n {checkValuesValidity ?\r\n <div className={\"dl-kpi-same-line dl-kpi-ratio\"}>\r\n <div className=\"dl-kpi-margin\">{arrowColorDirection}</div>\r\n <div>{data?.Ratio} %</div>\r\n </div>\r\n : null}\r\n </div>\r\n \r\n\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 </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 { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ChartInfo, getSeriesPositionColor } from \"./FusionChartObjectBuilder\";\r\n\r\n\r\nexport function getCategoriesBasedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[]): any {\r\n if (!seriesMeasures || !seriesMeasures[0]) return {};\r\n return {\r\n chart: chartInfo,\r\n categories: buildCategories(seriesMeasures),\r\n dataset: buildDataSet(seriesMeasures)\r\n }\r\n}\r\n\r\n\r\nexport function getSimpleDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[]): any {\r\n if (!seriesMeasures || !seriesMeasures[0]) return {};\r\n return {\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\r\n data = values[0].SeriesMeasureVulues.map((e, index) => {\r\n let item = {\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 color :getSeriesPositionColor(index + 1)\r\n }\r\n return item;\r\n });\r\n return data;\r\n}\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 let seriesPosition = 1;\r\n\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, color: getSeriesPositionColor(seriesPosition) });\r\n seriesPosition++;\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}","export const mainYellowColor = \"#F6CF33\"\r\nexport const mainRedColor = \"#EE5F77\"\r\nexport const mainGreenColor = \"#4AC76F\"\r\nexport const mainTurquoiseColor = \"#32C7C7\"\r\nexport const mainBlueColor = \"#369CFB\"\r\nexport const mainPurpleColor = \"#935BE0\"\r\nexport const mainOrangeColor = \"#FAAD14\"\r\n\r\nexport const lightYellowColor = \"#FBE799\"\r\nexport const lightRedColor = \"#F7AFBB\"\r\nexport const lightGreenColor = \"#A4E3B7\"\r\nexport const lightTurquoiseColor = \"#99E3E3\"\r\nexport const lightBlueColor = \"#9BCDFD\"\r\nexport const lightPurpleColor = \"#C9ADF0\"\r\nexport const lightOrangeColor = \"#FDD689\"\r\n\r\nexport const grey1Color = \"#F6F6F6\"\r\nexport const grey2Color = \"#F0F0F0\"\r\nexport const grey3Color = \"#D9D9D9\"\r\nexport const grey4Color = \"#A4A4A4\"","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { getCategoriesBasedDataSource, getSimpleDataSource } from \"./FusionChartDataSoruceBuilder\";\r\nimport { mainBlueColor, mainGreenColor, mainOrangeColor, mainPurpleColor, mainRedColor, mainTurquoiseColor, mainYellowColor } from \"./FusionColors\";\r\n\r\nconst defautFontSize = \"11\";\r\nconst defautFont = \"Manrope\";\r\n\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n handelNullLabels(seriesMeasures);\r\n switch (widget?.TypeCode) {\r\n case 'bar':\r\n return getBarObject(seriesMeasures, widget);\r\n case 'line':\r\n return getLineObject(seriesMeasures, widget);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, widget);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, widget);\r\n case 'column':\r\n return getColumnObject(seriesMeasures, widget);\r\n default:\r\n return {};\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[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"scrollbar2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollHeight = \"5\";\r\n chartInfo.scrollWidth = \"5\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = \"1\";\r\n chartInfo.showLegend = seriesMeasures?.length > 1 ? \"1\" : \"0\";\r\n chartInfo.legendItemFont = defautFont;\r\n chartInfo.legendItemFontSize = defautFontSize;\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"7\";\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"msspline\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollHeight = \"5\";\r\n chartInfo.scrollWidth = \"5\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = \"1\";\r\n chartInfo.showLegend = seriesMeasures?.length > 1 ? \"1\" : \"0\";\r\n chartInfo.legendItemFont = defautFont;\r\n chartInfo.legendItemFontSize = defautFontSize;\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"7\";\r\n\r\n\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"doughnut2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.showPercentValues = \"0\";\r\n chartInfo.showValues = \"0\";\r\n chartInfo.showLegend = \"0\";\r\n chartInfo.legendCaptionFontSize = defautFontSize;\r\n chartInfo.legendCaptionFont = defautFont;\r\n\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"pie2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.showPercentValues = \"0\";\r\n chartInfo.showValues = \"0\";\r\n chartInfo.showLegend = \"0\";\r\n chartInfo.legendCaptionFontSize = defautFontSize;\r\n chartInfo.legendCaptionFont = defautFont;\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\nfunction getColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"scrollcolumn2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollHeight = \"5\";\r\n chartInfo.scrollWidth = \"5\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = \"1\";\r\n chartInfo.showLegend = seriesMeasures?.length > 1 ? \"1\" : \"0\";\r\n chartInfo.legendItemFont = defautFont;\r\n chartInfo.legendItemFontSize = defautFontSize;\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"7\";\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures);\r\n return chart;\r\n}\r\n\r\n\r\nfunction getDefaultChartobject(): 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 return chart;\r\n}\r\n\r\nfunction getDefaultChartInfo(widget: ReactWidgetPM): ChartInfo {\r\n let chart = {} as ChartInfo;\r\n chart.theme = \"fusion\";\r\n chart.baseFont = defautFont;\r\n chart.baseFontSize = defautFontSize;\r\n chart.enableSlicing = \"0\";\r\n chart.enableRotation = \"0\";\r\n chart.chartLeftMargin = \"20\";\r\n chart.chartTopMargin = \"20\";\r\n chart.chartRightMargin = \"20\";\r\n chart.chartBottomMargin = \"20\";\r\n\r\n chart.toolTipBgColor = \"#FFFFFF\";\r\n chart.showToolTipShadow = \"1\";\r\n chart.plottooltext = getTooltip(widget);\r\n return chart;\r\n}\r\n\r\nexport interface ChartInfo {\r\n theme: string;\r\n scrollHeight: string;\r\n scrollWidth: string;\r\n scrollPadding: string;\r\n flatScrollBars: string;\r\n enableSlicing: string;\r\n chartLeftMargin: string;\r\n chartTopMargin: string;\r\n chartRightMargin: string;\r\n chartBottomMargin: string;\r\n baseFont: string;\r\n baseFontSize: string;\r\n showPercentValues: string;\r\n showValues: string;\r\n showLegend: string;\r\n lineColor: string;\r\n vDivLineDashed: string;\r\n vDivLineDashLen: string;\r\n divLineDashed: string;\r\n divLineDashLen: string;\r\n enableRotation: string;\r\n legendItemFont: string;\r\n legendItemFontSize: string;\r\n legendCaptionFont: string;\r\n legendCaptionFontSize: string;\r\n labelFont: string;\r\n labelFontSize: string;\r\n toolTipBorderColor: string;\r\n toolTipBgAlpha: string;\r\n showToolTipShadow: string;\r\n toolTipBgColor: string;\r\n plottooltext: string;\r\n}\r\n\r\nexport function getTooltip(widget: ReactWidgetPM): string {\r\n return `\r\n <div style=\"min-width: 108px;\">\r\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\r\n <span style=\"margin: 0; height: 10px; width: 10px; background-color: #369CFB; border-radius: 50%; display: inline-block;\"></span>\r\n <p style=\" margin: 0; margin-left: 4px;font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232; flex: none; order: 1;flex-grow: 0;\">$label</p>\r\n </div>\r\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\r\n <div style=\"display: flex;align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;font-family: 'Manrope';font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;flex: none;order: 0;flex-grow: 0;\">Count:</p>\r\n <p style=\"margin: 0;margin-left: 6px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #323232;flex: none; order: 1;flex-grow: 0;\">$dataValue</p>\r\n ` + getTooltipPercentage(widget) +\r\n ` </div>\r\n </div>\r\n `;\r\n}\r\n\r\nexport function getTooltipPercentage(widget: ReactWidgetPM): string {\r\n if (widget.TypeCode != \"donut\" && widget.TypeCode != \"pie\") return \"\";\r\n return `\r\n <p style=\"margin: 0;margin-left: 2px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;flex: none; order: 1;flex-grow: 0;\">($percentValue)</p>\r\n `;\r\n}\r\n\r\n\r\nexport function getSeriesPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return mainBlueColor;\r\n case 2: return mainGreenColor;\r\n case 3: return mainYellowColor;\r\n case 4: return mainTurquoiseColor;\r\n case 5: return mainPurpleColor;\r\n case 6: return mainOrangeColor;\r\n case 7: return mainRedColor;\r\n default: return null;\r\n }\r\n}\r\n\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// lineColor = \"#369CFB,#fc0345\"; to make same line multi gradient color","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 { 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 setTimeout(function () {\r\n RefreshData();\r\n }, 500);\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 dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n const chart = BuildFusionChartObject(result.data, widget.current!);\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, { useEffect, useRef, useState } 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\n\r\nimport { Tooltip } from 'primereact/tooltip';\r\nimport FusionChart from \"./ChartsComponents/FusionCharts/FusionChart\";\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 const widget = useRef<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const editWidget = () => {\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e?.key != widget.current?.key) return;\r\n setIsLoading(true);\r\n widget.current = { ...e };\r\n setIsLoading(false);\r\n })\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={widget.current?.Title} data-pr-position=\"top\" className=\"h-tool-tip\">{widget.current?.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 <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\"> {GetChartComponent()} </div>\r\n </div>\r\n );\r\n\r\n function GetChartComponent(): React.ReactNode {\r\n if (isLoading || !widget.current?.TypeCode) return null;\r\n if (widget.current?.TypeCode == \"kpi\") return <CustomChart dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />;\r\n return <FusionChart dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\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 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)localStorage.setItem(\"token\", props?.token);\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","data","setData","arrowColorDirection","setArrowColorDirection","checkValuesValidity","setCheckValuesValidity","checkVisibleUnit","setVisibilityUnit","useEffect","current","customChartProps","setTimeout","RefreshData","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","getCategoriesBasedDataSource","chartInfo","seriesMeasures","chart","categories","buildCategories","dataset","buildDataSet","getSimpleDataSource","buildDataSource","values","SeriesMeasureVulues","map","e","index","item","value","label","getTrimedLabelText","Label","id","GroupById","color","getSeriesPositionColor","dataSet","seriesPosition","forEach","seriesMeasure","datas","push","seriesname","Name","category","mainYellowColor","mainRedColor","mainGreenColor","mainTurquoiseColor","mainBlueColor","mainPurpleColor","mainOrangeColor","defautFontSize","defautFont","BuildFusionChartObject","handelNullLabels","getBarObject","getLineObject","getPieObject","getDonutObject","getColumnObject","element","getDefaultChartobject","type","getDefaultChartInfo","scrollHeight","scrollWidth","scrollPadding","flatScrollBars","showPercentValues","showLegend","legendItemFont","legendItemFontSize","divLineDashed","divLineDashLen","dataSource","showValues","legendCaptionFontSize","legendCaptionFont","labelFontSize","labelFont","dataFormat","theme","baseFont","baseFontSize","enableSlicing","enableRotation","chartLeftMargin","chartTopMargin","chartRightMargin","chartBottomMargin","toolTipBgColor","showToolTipShadow","plottooltext","getTooltip","getTooltipPercentage","position","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","key","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","isLoading","setIsLoading","editWidget","hide","editBtnClicked","dataBinding","onEditWidget","subscribe","el","cursor","isInEditMode","Tooltip","target","Title","Button","icon","toggle","OverlayPanel","deleteBtnClicked","GetChartComponent","widgetRef","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","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "logitude-dashboard-library",
3
- "version": "1.4.6",
3
+ "version": "1.4.7",
4
4
  "description": "Made with create-react-library",
5
5
  "author": "logitude",
6
6
  "license": "MIT",