logitude-dashboard-library 3.2.2 → 3.2.4

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.
@@ -4,6 +4,8 @@ import { ProgressSpinner } from 'primereact/progressspinner';
4
4
  import axios from 'axios';
5
5
  import moment from 'moment';
6
6
  import { v4 } from 'uuid';
7
+ import { DataTable } from 'primereact/datatable';
8
+ import { Column } from 'primereact/column';
7
9
  import ReactFC from 'react-fusioncharts';
8
10
  import FusionCharts from 'fusioncharts';
9
11
  import Charts from 'fusioncharts/fusioncharts.charts';
@@ -137,14 +139,19 @@ var ApiServices = /*#__PURE__*/function () {
137
139
  });
138
140
  };
139
141
 
140
- _proto.post = function post(api, date) {
142
+ _proto.post = function post(api, date, requestSignal) {
143
+ if (requestSignal === void 0) {
144
+ requestSignal = undefined;
145
+ }
146
+
141
147
  var token = this.getTokenFromStorage();
142
148
  var apiURL = "" + this._apiUrl + api;
143
149
  return axios.post(apiURL, date, {
144
150
  headers: {
145
151
  'Content-Type': 'application/json',
146
152
  'Token': token
147
- }
153
+ },
154
+ signal: requestSignal
148
155
  });
149
156
  };
150
157
 
@@ -193,8 +200,12 @@ var DashboardAnalyticsService = /*#__PURE__*/function () {
193
200
 
194
201
  var _proto = DashboardAnalyticsService.prototype;
195
202
 
196
- _proto.getData = function getData(widget) {
197
- return this._ApiServices.post("/api/" + this.controller + "/PostGetDataAnalytic", widget);
203
+ _proto.getData = function getData(widget, signal) {
204
+ if (signal === void 0) {
205
+ signal = undefined;
206
+ }
207
+
208
+ return this._ApiServices.post("/api/" + this.controller + "/PostGetDataAnalytic", widget, signal);
198
209
  };
199
210
 
200
211
  _proto.getKpiData = function getKpiData(widget) {
@@ -307,8 +318,12 @@ var isNullOrUndefined = function isNullOrUndefined(val) {
307
318
  return val == null || val == undefined;
308
319
  };
309
320
 
321
+ var isNullOrUndefinedOrEmpty = function isNullOrUndefinedOrEmpty(val) {
322
+ return val == null || val == undefined || val == "";
323
+ };
324
+
310
325
  var KpiChart = function KpiChart(props) {
311
- var _widget$current17;
326
+ var _widget$current18;
312
327
 
313
328
  var _useState = useState(true),
314
329
  isLoading = _useState[0],
@@ -372,6 +387,7 @@ var KpiChart = function KpiChart(props) {
372
387
  var postWidget = _extends({}, widget.current);
373
388
 
374
389
  postWidget.onChange = undefined;
390
+ postWidget.EntityId = !isNullOrUndefinedOrEmpty(postWidget.RelatedToEntityId) ? postWidget.RelatedToEntityId : postWidget.EntityId;
375
391
  dashboardAnalyticsService.getKpiData(postWidget).then(function (result) {
376
392
  setData(result.data);
377
393
  setIsLoading(false);
@@ -399,8 +415,22 @@ var KpiChart = function KpiChart(props) {
399
415
  });
400
416
  };
401
417
 
418
+ var isComparisonIndicatorChecked = function isComparisonIndicatorChecked() {
419
+ var _widget$current5;
420
+
421
+ var _kpiSettings = (_widget$current5 = widget.current) === null || _widget$current5 === void 0 ? void 0 : _widget$current5.KPIComparisonSettings;
422
+
423
+ if (_kpiSettings) {
424
+ var _kpiSettingsAsObj = JSON.parse(_kpiSettings);
425
+
426
+ return !isNullOrUndefined(_kpiSettingsAsObj.ComparisonIndicator) ? _kpiSettingsAsObj.ComparisonIndicator : false;
427
+ }
428
+
429
+ return false;
430
+ };
431
+
402
432
  function getRatioComponent() {
403
- if (!(data !== null && data !== void 0 && data.CompareWithPrevious)) return null;
433
+ if (!(data !== null && data !== void 0 && data.CompareWithPrevious) || !isComparisonIndicatorChecked()) return null;
404
434
  return React__default.createElement("div", {
405
435
  className: "dl-kpi-ratio-container"
406
436
  }, getArrowComponent(), React__default.createElement("div", {
@@ -409,7 +439,7 @@ var KpiChart = function KpiChart(props) {
409
439
  }
410
440
 
411
441
  function getArrowComponent() {
412
- var _widget$current5, _widget$current6, _widget$current7, _widget$current8, _widget$current9, _widget$current10, _widget$current11, _widget$current12;
442
+ var _widget$current6, _widget$current7, _widget$current8, _widget$current9, _widget$current10, _widget$current11, _widget$current12, _widget$current13;
413
443
 
414
444
  if (!data) return null;
415
445
  if ((data === null || data === void 0 ? void 0 : data.Ratio) == 0 || data.Value == data.ComparisonValue || (data.Value == "0" || data.Value == 0) && (data.ComparisonValue == "0" || data.ComparisonValue == 0)) return React__default.createElement("div", {
@@ -422,22 +452,22 @@ var KpiChart = function KpiChart(props) {
422
452
  marginTop: "2px"
423
453
  }
424
454
  }));
425
- if ((data === null || data === void 0 ? void 0 : data.Ratio) > 1 && (_widget$current5 = widget.current) !== null && _widget$current5 !== void 0 && _widget$current5.Increase && ((_widget$current6 = widget.current) === null || _widget$current6 === void 0 ? void 0 : _widget$current6.Increase) == "Positive") return React__default.createElement("div", {
455
+ if ((data === null || data === void 0 ? void 0 : data.Ratio) > 1 && (_widget$current6 = widget.current) !== null && _widget$current6 !== void 0 && _widget$current6.Increase && ((_widget$current7 = widget.current) === null || _widget$current7 === void 0 ? void 0 : _widget$current7.Increase) == "Positive") return React__default.createElement("div", {
426
456
  className: "dl-kpi-arrow-container"
427
457
  }, React__default.createElement("span", {
428
458
  className: "dl-kpi-arrow-pic dl-kpi-arrow-up-green"
429
459
  }));
430
- if ((data === null || data === void 0 ? void 0 : data.Ratio) > 1 && (_widget$current7 = widget.current) !== null && _widget$current7 !== void 0 && _widget$current7.Increase && ((_widget$current8 = widget.current) === null || _widget$current8 === void 0 ? void 0 : _widget$current8.Increase) == "Negative") return React__default.createElement("div", {
460
+ if ((data === null || data === void 0 ? void 0 : data.Ratio) > 1 && (_widget$current8 = widget.current) !== null && _widget$current8 !== void 0 && _widget$current8.Increase && ((_widget$current9 = widget.current) === null || _widget$current9 === void 0 ? void 0 : _widget$current9.Increase) == "Negative") return React__default.createElement("div", {
431
461
  className: "dl-kpi-arrow-container"
432
462
  }, React__default.createElement("span", {
433
463
  className: "dl-kpi-arrow-pic dl-kpi-arrow-up-red"
434
464
  }));
435
- if ((data === null || data === void 0 ? void 0 : data.Ratio) < 1 && (_widget$current9 = widget.current) !== null && _widget$current9 !== void 0 && _widget$current9.Increase && ((_widget$current10 = widget.current) === null || _widget$current10 === void 0 ? void 0 : _widget$current10.Increase) == "Positive") return React__default.createElement("div", {
465
+ if ((data === null || data === void 0 ? void 0 : data.Ratio) < 1 && (_widget$current10 = widget.current) !== null && _widget$current10 !== void 0 && _widget$current10.Increase && ((_widget$current11 = widget.current) === null || _widget$current11 === void 0 ? void 0 : _widget$current11.Increase) == "Positive") return React__default.createElement("div", {
436
466
  className: "dl-kpi-arrow-container"
437
467
  }, React__default.createElement("span", {
438
468
  className: "dl-kpi-arrow-pic dl-kpi-arrow-down-red"
439
469
  }));
440
- if ((data === null || data === void 0 ? void 0 : data.Ratio) < 1 && (_widget$current11 = widget.current) !== null && _widget$current11 !== void 0 && _widget$current11.Increase && ((_widget$current12 = widget.current) === null || _widget$current12 === void 0 ? void 0 : _widget$current12.Increase) == "Negative") return React__default.createElement("div", {
470
+ if ((data === null || data === void 0 ? void 0 : data.Ratio) < 1 && (_widget$current12 = widget.current) !== null && _widget$current12 !== void 0 && _widget$current12.Increase && ((_widget$current13 = widget.current) === null || _widget$current13 === void 0 ? void 0 : _widget$current13.Increase) == "Negative") return React__default.createElement("div", {
441
471
  className: "dl-kpi-arrow-container"
442
472
  }, React__default.createElement("span", {
443
473
  className: "dl-kpi-arrow-pic dl-kpi-arrow-down-green"
@@ -446,10 +476,10 @@ var KpiChart = function KpiChart(props) {
446
476
  }
447
477
 
448
478
  function getPreviousValueComponent() {
449
- if (!(data !== null && data !== void 0 && data.CompareWithPrevious)) return null;
450
- var prevtext = !(data !== null && data !== void 0 && data.ComparisonValue) ? '' : data === null || data === void 0 ? void 0 : data.ComparisonValue;
451
- var labelFormated = getLabelFormatByDateGroupType(data.ComparisonLabel, widget.current, false);
452
- prevtext = labelFormated + ": " + prevtext;
479
+ if (isNullOrUndefined(data) || isNullOrUndefined(data === null || data === void 0 ? void 0 : data.ComparisonValue) || isNullOrUndefined(data === null || data === void 0 ? void 0 : data.ComparisonLabel)) return "";
480
+ var labelFormatByDateGroupType = getLabelFormatByDateGroupType(data.ComparisonLabel, widget.current, false);
481
+ var labelFormated = !isNullOrUndefined(labelFormatByDateGroupType) ? labelFormatByDateGroupType : null;
482
+ var prevtext = labelFormated ? labelFormated + ": " + (data === null || data === void 0 ? void 0 : data.ComparisonValue) : "";
453
483
  return React__default.createElement("div", {
454
484
  className: "dl-kpi-prev-container"
455
485
  }, React__default.createElement("div", {
@@ -494,11 +524,11 @@ var KpiChart = function KpiChart(props) {
494
524
  };
495
525
 
496
526
  var isKPICustomResizeNeeded = function isKPICustomResizeNeeded() {
497
- var _widget$current13, _widget$current14, _widget$current15, _widget$current16;
527
+ var _widget$current14, _widget$current15, _widget$current16, _widget$current17;
498
528
 
499
529
  if (!widget || !widget.current) return;
500
- var isThereTitle = !isNullOrUndefined((_widget$current13 = widget.current) === null || _widget$current13 === void 0 ? void 0 : _widget$current13.Title) && ((_widget$current14 = widget.current) === null || _widget$current14 === void 0 ? void 0 : _widget$current14.Title.length) > 0;
501
- var isThereSubTitle = !isNullOrUndefined((_widget$current15 = widget.current) === null || _widget$current15 === void 0 ? void 0 : _widget$current15.Subtitle) && ((_widget$current16 = widget.current) === null || _widget$current16 === void 0 ? void 0 : _widget$current16.Subtitle.length) > 0;
530
+ var isThereTitle = !isNullOrUndefined((_widget$current14 = widget.current) === null || _widget$current14 === void 0 ? void 0 : _widget$current14.Title) && ((_widget$current15 = widget.current) === null || _widget$current15 === void 0 ? void 0 : _widget$current15.Title.length) > 0;
531
+ var isThereSubTitle = !isNullOrUndefined((_widget$current16 = widget.current) === null || _widget$current16 === void 0 ? void 0 : _widget$current16.Subtitle) && ((_widget$current17 = widget.current) === null || _widget$current17 === void 0 ? void 0 : _widget$current17.Subtitle.length) > 0;
502
532
  var isKPIHasSmallestHeight = getIsKPIHasSmallestHeight();
503
533
  return isThereTitle && isThereSubTitle && isKPIHasSmallestHeight;
504
534
  };
@@ -515,7 +545,7 @@ var KpiChart = function KpiChart(props) {
515
545
  })) : !error && widget.current ? React__default.createElement("div", {
516
546
  key: triggerId,
517
547
  onClick: kpiClick,
518
- className: ((_widget$current17 = widget.current) === null || _widget$current17 === void 0 ? void 0 : _widget$current17.Alighnment) == "Left" ? "dl-kpi-container-click db-justify-content-flex-start" : "dl-kpi-container-click"
548
+ className: ((_widget$current18 = widget.current) === null || _widget$current18 === void 0 ? void 0 : _widget$current18.Alighnment) == "Left" ? "dl-kpi-container-click db-justify-content-flex-start" : "dl-kpi-container-click"
519
549
  }, React__default.createElement("div", {
520
550
  className: isKPICustomSizeNeeded ? "dl-kpi-container kpi-custom-size" : "dl-kpi-container"
521
551
  }, getLabel(), getValueComponent(), getPreviousValueComponent())) : React__default.createElement("div", {
@@ -548,6 +578,10 @@ var TableChart = function TableChart(props) {
548
578
  tableData = _useState4[0],
549
579
  setTableData = _useState4[1];
550
580
 
581
+ var _useState5 = useState([]),
582
+ tableColumns = _useState5[0],
583
+ setTableColumns = _useState5[1];
584
+
551
585
  useEffect(function () {
552
586
  if (props.customChartProps && props.customChartProps.widget) {
553
587
  setWidget(props.customChartProps.widget);
@@ -565,7 +599,8 @@ var TableChart = function TableChart(props) {
565
599
  var dashboardAnalyticsService = new DashboardAnalyticsService();
566
600
  widget.onChange = undefined;
567
601
  widget.PageIndex = 0;
568
- widget.PageSize = 50;
602
+ widget.PageSize = 100;
603
+ widget.EntityId = !isNullOrUndefinedOrEmpty(widget.RelatedToEntityId) ? widget.RelatedToEntityId : widget.EntityId;
569
604
  dashboardAnalyticsService.getTableData(widget).then(function (res) {
570
605
  if (res && res.data) {
571
606
  fillTableData(res.data);
@@ -598,56 +633,29 @@ var TableChart = function TableChart(props) {
598
633
  };
599
634
 
600
635
  var fillTableData = function fillTableData(tableData) {
601
- var tableRecoreds = [];
602
- var tableRow = [];
603
-
604
- if (tableData.Fields) {
605
- tableData.Fields.forEach(function (item) {
606
- tableRow.push(_extends({}, item, {
607
- value: item.DisplayName ? item.DisplayName : "",
608
- isHeader: true
609
- }));
610
- });
611
- }
636
+ var tableRecords = [];
612
637
 
613
- tableRecoreds.push(tableRow);
638
+ if (tableData.Fields && tableData.Fields.length) {
639
+ setTableColumns([].concat(tableData.Fields));
640
+ }
614
641
 
615
- if (tableData.Result) {
642
+ if (tableData.Result && tableData.Result.length) {
616
643
  tableData.Result.forEach(function (item) {
617
- var _tableRow = [];
644
+ var _tableRow = _extends({}, item);
645
+
618
646
  tableData.Fields.forEach(function (field) {
619
647
  var key = field.FieldCode;
620
648
  var valueType = field.DataTypeCode;
621
649
 
622
650
  var _value = valueType && (valueType == "Date" || valueType == "DateTime") ? getDateTimeValue(item[key]) : valueType == "Boolean" ? getBooleanStringValue(item[key]) : item[key];
623
651
 
624
- _tableRow.push({
625
- value: _value
626
- });
652
+ _tableRow[key] = isNullOrUndefined(_value) ? "" : _value;
627
653
  });
628
- tableRecoreds.push(_tableRow);
654
+ tableRecords.push(_tableRow);
629
655
  });
630
656
  }
631
657
 
632
- setTableData([].concat(tableRecoreds));
633
- };
634
-
635
- var getTableTemplate = function getTableTemplate() {
636
- return tableData.length == 0 ? React__default.createElement("div", {
637
- className: "dl-kpi-no-data margin-auto"
638
- }, "No data to display.") : React__default.createElement("table", null, React__default.createElement("thead", null, React__default.createElement("tr", null, tableData[0].map(function (el) {
639
- return React__default.createElement("th", {
640
- key: el.value
641
- }, !isNullOrUndefined(el.value) ? el.value + "" : '');
642
- }))), React__default.createElement("tbody", null, tableData.map(function (el, index) {
643
- return index == 0 ? null : React__default.createElement("tr", {
644
- key: index
645
- }, el.map(function (item, index2) {
646
- return React__default.createElement("td", {
647
- key: index2 + "_" + el.value
648
- }, !isNullOrUndefined(item.value) ? item.value + "" : '');
649
- }));
650
- })));
658
+ setTableData([].concat(tableRecords));
651
659
  };
652
660
 
653
661
  return isLoading ? React__default.createElement("div", {
@@ -670,11 +678,20 @@ var TableChart = function TableChart(props) {
670
678
  className: "red-warning-icon"
671
679
  }), React__default.createElement("span", {
672
680
  className: "dl-tooltiptext"
673
- }, error))) : getTableTemplate();
681
+ }, error))) : React__default.createElement(DataTable, {
682
+ value: tableData,
683
+ responsiveLayout: "scroll"
684
+ }, tableColumns.map(function (column, index) {
685
+ return React__default.createElement(Column, {
686
+ key: column.FieldCode + "_" + index,
687
+ field: column.FieldCode,
688
+ header: column.DisplayName
689
+ });
690
+ }));
674
691
  };
675
692
 
676
693
  var CustomChart = function CustomChart(props) {
677
- var _props$widget2;
694
+ var _props$widget2, _props$widget3, _props$widget4;
678
695
 
679
696
  var project = function project() {
680
697
  var _props$widget;
@@ -695,50 +712,16 @@ var CustomChart = function CustomChart(props) {
695
712
  }
696
713
  };
697
714
 
698
- return React__default.createElement("div", {
699
- className: props.widget && ((_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.TypeCode) == 'table' ? "dl-custom-chart-container dl-table-chart-container" : "dl-custom-chart-container"
700
- }, project());
715
+ return React__default.createElement(React__default.Fragment, null, ((_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.TypeCode) && ((_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.TypeCode) == 'table' && React__default.createElement("div", {
716
+ className: "table-rows-number-indicator"
717
+ }, "Showing the first 100 rows"), React__default.createElement("div", {
718
+ className: props.widget && ((_props$widget4 = props.widget) === null || _props$widget4 === void 0 ? void 0 : _props$widget4.TypeCode) == 'table' ? "dl-custom-chart-container dl-table-chart-container" : "dl-custom-chart-container"
719
+ }, project()));
701
720
  };
702
721
 
703
- var mainYellowColor = "#F6CF33";
704
- var mainRedColor = "#EE5F77";
705
- var mainGreenColor = "#4AC76F";
706
- var mainTurquoiseColor = "#32C7C7";
707
- var mainBlueColor = "#369CFB";
708
- var mainPurpleColor = "#935BE0";
709
- var mainOrangeColor = "#FAAD14";
710
-
711
- function getSeriesPositionColor(position) {
712
- switch (position) {
713
- case 1:
714
- return mainBlueColor;
715
-
716
- case 2:
717
- return mainGreenColor;
718
-
719
- case 3:
720
- return mainYellowColor;
721
-
722
- case 4:
723
- return mainTurquoiseColor;
724
-
725
- case 5:
726
- return mainPurpleColor;
727
-
728
- case 6:
729
- return mainOrangeColor;
730
-
731
- case 7:
732
- return mainRedColor;
733
-
734
- default:
735
- return null;
736
- }
737
- }
738
-
739
722
  function buildToolTip(widget, value, seriesName, label, index) {
740
723
  var padding = widget.TypeCode == 'line' && index > 0 ? 'padding-top: 3px' : '';
741
- return "\n <div style=\"min-width: 108px;" + padding + "\">\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\n <span style=\"margin: 0; height: 10px; width: 10px; background-color: #A4A4A4; 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;\"> " + getTooltiplabel(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;\"> " + getMeasureType(seriesName) + "</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;\">" + getTooltipValue(value) + "</p>\n " + getTooltipPercentage(widget) + " </div>\n </div>\n ";
724
+ return "\n <div style=\"min-width: 108px;" + padding + "\">\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\n <span style=\"margin: 0; min-height: 10px; min-width: 10px; height: 10px; width: 10px; background-color: transparent; border-radius: 50%; display: inline-block;\"></span>\n <p style=\" margin: 0; margin-left: 4px; white-space: pre-line; font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232;\"> " + getTooltiplabel(label, seriesName) + "</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'; white-space: pre-line; font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;\"> " + getMeasureType(seriesName) + "</p>\n <p style=\"margin: 0;margin-left: 6px; white-space: pre-line; font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #323232;\">" + getTooltipValue(value) + "</p>\n " + getTooltipPercentage(widget) + " </div>\n </div>\n ";
742
725
  }
743
726
 
744
727
  function getTooltipPercentage(widget) {
@@ -746,8 +729,9 @@ function getTooltipPercentage(widget) {
746
729
  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 ";
747
730
  }
748
731
 
749
- function getTooltiplabel(value) {
732
+ function getTooltiplabel(value, seriesMeasure) {
750
733
  if (value) return value;
734
+ if (seriesMeasure && seriesMeasure.Name) return '$label' + " - " + seriesMeasure.Name;
751
735
  return '$label';
752
736
  }
753
737
 
@@ -827,8 +811,7 @@ function buildDataSource(values, widget) {
827
811
  MeasureCode: series.MeasureCode,
828
812
  Formula: series.Formula
829
813
  },
830
- tooltext: buildToolTip(widget, null, series, e.Label, 0),
831
- color: getSeriesPositionColor(index + 1)
814
+ tooltext: buildToolTip(widget, null, series, e.Label, 0)
832
815
  };
833
816
  return item;
834
817
  });
@@ -837,7 +820,6 @@ function buildDataSource(values, widget) {
837
820
 
838
821
  function buildDataSet(seriesMeasures, widget) {
839
822
  var dataSet = [];
840
- var seriesPosition = 1;
841
823
  seriesMeasures.forEach(function (seriesMeasure) {
842
824
  var datas = seriesMeasure.Values.map(function (e, index) {
843
825
  return {
@@ -851,26 +833,22 @@ function buildDataSet(seriesMeasures, widget) {
851
833
  tooltext: buildToolTip(widget, e.Value, seriesMeasure, null, index)
852
834
  };
853
835
  });
854
- var color = getSeriesPositionColor(seriesPosition);
855
836
  dataSet.push({
856
837
  data: datas,
857
838
  seriesname: seriesMeasure.Name,
858
- color: color,
859
- anchorBgColor: color,
839
+ anchorBgColor: "inherit",
860
840
  anchorBorderColor: "#FFFFFF",
861
841
  anchorBorderThickness: "2",
862
- anchorHoverColor: color,
842
+ anchorHoverColor: "inherit",
863
843
  parentyaxis: seriesMeasure.PlotasLineChart && seriesMeasure.PlotonSecondAxis ? 'S' : "P",
864
844
  renderAs: seriesMeasure.PlotasLineChart ? 'line' : "column"
865
845
  });
866
- seriesPosition++;
867
846
  });
868
847
  return dataSet;
869
848
  }
870
849
 
871
850
  function buildStackedDataSet(seriesMeasures, widget) {
872
851
  var dataSet = [];
873
- var seriesPosition = 1;
874
852
  var series = seriesMeasures[0];
875
853
  var uniqueGroups = [];
876
854
  series.Values.forEach(function (element) {
@@ -882,13 +860,10 @@ function buildStackedDataSet(seriesMeasures, widget) {
882
860
  });
883
861
  });
884
862
  uniqueGroups.forEach(function (group) {
885
- var color = getSeriesPositionColor(seriesPosition);
886
863
  dataSet.push({
887
864
  seriesName: group.label,
888
- color: color,
889
865
  data: buildStackedGroupData(group, series, widget)
890
866
  });
891
- seriesPosition++;
892
867
  });
893
868
  var emptylabels = dataSet.filter(function (e) {
894
869
  return e.seriesName == null;
@@ -1248,6 +1223,7 @@ function getDefaultChartInfo(widget) {
1248
1223
  chart.minAngleForValue = "27";
1249
1224
  }
1250
1225
 
1226
+ chart.palettecolors = "#369CFB,#4AC76F,#F6CF33,#32C7C7,#935BE0,#FAAD14,#EE5F77,#5D62B5, #29C3BE, #F2726F, #FFC533, #62B58F, #BC95DF, #67CDF2";
1251
1227
  chart.enableSlicing = "0";
1252
1228
  chart.enableRotation = "0";
1253
1229
  chart.chartTopMargin = "10";
@@ -1256,6 +1232,7 @@ function getDefaultChartInfo(widget) {
1256
1232
  chart.chartRightMargin = "40";
1257
1233
  chart.toolTipBgColor = "#FFFFFF";
1258
1234
  chart.showToolTipShadow = "1";
1235
+ chart.plotHoverEffect = "0";
1259
1236
  chart.scrollHeight = "6";
1260
1237
  chart.scrollWidth = "6";
1261
1238
  chart.plotColorinTooltip = "0";
@@ -1389,6 +1366,78 @@ var FusionChartHelper = /*#__PURE__*/function () {
1389
1366
  return FusionChartHelper;
1390
1367
  }();
1391
1368
 
1369
+ var plotColorsDictionary = {
1370
+ plotColor0: "#369CFB",
1371
+ plotColor1: "#4AC76F",
1372
+ plotColor2: "#F6CF33",
1373
+ plotColor3: "#32C7C7",
1374
+ plotColor4: "#935BE0",
1375
+ plotColor5: "#FAAD14",
1376
+ plotColor6: "#EE5F77",
1377
+ plotColor7: "#5D62B5",
1378
+ plotColor8: "#29C3BE",
1379
+ plotColor9: "#F2726F",
1380
+ plotColor10: "#FFC533",
1381
+ plotColor11: "#62B58F",
1382
+ plotColor12: "#BC95DF",
1383
+ plotColor13: "#67CDF2"
1384
+ };
1385
+
1386
+ var getPlotColorByIndexOrder = function getPlotColorByIndexOrder(index) {
1387
+ var _index = index;
1388
+
1389
+ if (_index >= 14) {
1390
+ _index = _index % 14;
1391
+ }
1392
+
1393
+ switch (_index) {
1394
+ case 0:
1395
+ return plotColorsDictionary.plotColor0;
1396
+
1397
+ case 1:
1398
+ return plotColorsDictionary.plotColor1;
1399
+
1400
+ case 2:
1401
+ return plotColorsDictionary.plotColor2;
1402
+
1403
+ case 3:
1404
+ return plotColorsDictionary.plotColor3;
1405
+
1406
+ case 4:
1407
+ return plotColorsDictionary.plotColor4;
1408
+
1409
+ case 5:
1410
+ return plotColorsDictionary.plotColor5;
1411
+
1412
+ case 6:
1413
+ return plotColorsDictionary.plotColor6;
1414
+
1415
+ case 7:
1416
+ return plotColorsDictionary.plotColor7;
1417
+
1418
+ case 8:
1419
+ return plotColorsDictionary.plotColor8;
1420
+
1421
+ case 9:
1422
+ return plotColorsDictionary.plotColor9;
1423
+
1424
+ case 10:
1425
+ return plotColorsDictionary.plotColor10;
1426
+
1427
+ case 11:
1428
+ return plotColorsDictionary.plotColor11;
1429
+
1430
+ case 12:
1431
+ return plotColorsDictionary.plotColor12;
1432
+
1433
+ case 13:
1434
+ return plotColorsDictionary.plotColor13;
1435
+
1436
+ default:
1437
+ return "#0566c2";
1438
+ }
1439
+ };
1440
+
1392
1441
  ReactFC.fcRoot(FusionCharts, Charts, FusionTheme);
1393
1442
  FusionCharts.options['license']({
1394
1443
  key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',
@@ -1407,27 +1456,35 @@ var FusionChart = forwardRef(function (props, comRef) {
1407
1456
  fusionKey = _useState3[0];
1408
1457
 
1409
1458
  var chartData = useRef(null);
1459
+
1460
+ var _useState4 = useState(null),
1461
+ resizeTimer = _useState4[0],
1462
+ setResizeTimer = _useState4[1];
1463
+
1464
+ var axiosController = useRef(new AbortController());
1410
1465
  var widget = useRef();
1411
1466
 
1412
- var _useState4 = useState({}),
1413
- args = _useState4[0],
1414
- setArgs = _useState4[1];
1467
+ var _useState5 = useState({}),
1468
+ args = _useState5[0],
1469
+ setArgs = _useState5[1];
1470
+
1471
+ var _useState6 = useState(),
1472
+ fChart = _useState6[0],
1473
+ setFchart = _useState6[1];
1415
1474
 
1416
- var _useState5 = useState(),
1417
- fChart = _useState5[0],
1418
- setFchart = _useState5[1];
1475
+ var _useState7 = useState(v4()),
1476
+ chartContainerId = _useState7[0];
1419
1477
 
1420
- var id = (Math.random() + 1).toString(36).substring(7);
1421
1478
  var progressRef = useRef(null);
1422
1479
  var fusionRef = useRef(null);
1423
1480
  var fusionChartHelper = useRef();
1481
+ var isDummyChangesActive = useRef(false);
1424
1482
  useEffect(function () {
1425
1483
  var _props$dataBinding;
1426
1484
 
1485
+ axiosController.current = new AbortController();
1427
1486
  widget.current = props.widget;
1428
- setTimeout(function () {
1429
- RefreshData();
1430
- }, 500);
1487
+ RefreshData();
1431
1488
  (_props$dataBinding = props.dataBinding) === null || _props$dataBinding === void 0 ? void 0 : _props$dataBinding.widgetUpdated.subscribe(function (updatedWidget) {
1432
1489
  var _widget$current;
1433
1490
 
@@ -1437,25 +1494,32 @@ var FusionChart = forwardRef(function (props, comRef) {
1437
1494
  if (chartData && chartData.current) {
1438
1495
  var _data = JSON.parse(JSON.stringify(chartData.current));
1439
1496
 
1497
+ isDummyChangesActive.current = true;
1440
1498
  handleData(_data, true);
1441
1499
  }
1442
1500
  });
1443
- }, []);
1444
- useEffect(function () {
1445
- var timeout;
1446
-
1447
- var handleResize = function handleResize() {
1448
- clearTimeout(timeout);
1449
- timeout = setTimeout(function () {
1450
- HandleSizeChange();
1451
- }, 200);
1452
- };
1453
-
1454
1501
  window.addEventListener("resize", handleResize);
1455
1502
  return function () {
1456
- return window.removeEventListener("resize", handleResize);
1503
+ var _axiosController$curr;
1504
+
1505
+ window.removeEventListener("resize", handleResize);
1506
+ setDataLoaded(false);
1507
+
1508
+ if (axiosController && axiosController !== null && axiosController !== void 0 && (_axiosController$curr = axiosController.current) !== null && _axiosController$curr !== void 0 && _axiosController$curr.abort) {
1509
+ var _axiosController$curr2;
1510
+
1511
+ axiosController === null || axiosController === void 0 ? void 0 : (_axiosController$curr2 = axiosController.current) === null || _axiosController$curr2 === void 0 ? void 0 : _axiosController$curr2.abort();
1512
+ }
1457
1513
  };
1458
1514
  }, []);
1515
+
1516
+ var handleResize = function handleResize() {
1517
+ clearTimeout(resizeTimer);
1518
+ setResizeTimer(setTimeout(function () {
1519
+ HandleSizeChange();
1520
+ }, 200));
1521
+ };
1522
+
1459
1523
  useImperativeHandle(comRef, function () {
1460
1524
  return {
1461
1525
  onResizeFinish: function onResizeFinish() {
@@ -1494,9 +1558,22 @@ var FusionChart = forwardRef(function (props, comRef) {
1494
1558
  var postWidget = _extends({}, widget.current);
1495
1559
 
1496
1560
  postWidget.onChange = undefined;
1497
- dashboardAnalyticsService.getData(postWidget).then(function (result) {
1561
+ var signal = undefined;
1562
+
1563
+ if (axiosController) {
1564
+ var _axiosController$curr3;
1565
+
1566
+ axiosController === null || axiosController === void 0 ? void 0 : (_axiosController$curr3 = axiosController.current) === null || _axiosController$curr3 === void 0 ? void 0 : _axiosController$curr3.abort();
1567
+ var updatedAxiosController = new AbortController();
1568
+ axiosController.current = updatedAxiosController;
1569
+ signal = updatedAxiosController === null || updatedAxiosController === void 0 ? void 0 : updatedAxiosController.signal;
1570
+ }
1571
+
1572
+ postWidget.EntityId = !isNullOrUndefinedOrEmpty(postWidget.RelatedToEntityId) ? postWidget.RelatedToEntityId : postWidget.EntityId;
1573
+ dashboardAnalyticsService.getData(postWidget, signal).then(function (result) {
1498
1574
  handleData(result === null || result === void 0 ? void 0 : result.data);
1499
1575
  chartData.current = result === null || result === void 0 ? void 0 : result.data;
1576
+ setDataLoaded(true);
1500
1577
  }, function (error) {
1501
1578
  var _error$response, _error$response$data, _error$response2, _error$response2$data;
1502
1579
 
@@ -1520,6 +1597,10 @@ var FusionChart = forwardRef(function (props, comRef) {
1520
1597
 
1521
1598
  if (!isDummyChange) {
1522
1599
  setDataLoaded(true);
1600
+ } else {
1601
+ setTimeout(function () {
1602
+ isDummyChangesActive.current = false;
1603
+ }, 100);
1523
1604
  }
1524
1605
  };
1525
1606
 
@@ -1547,6 +1628,46 @@ var FusionChart = forwardRef(function (props, comRef) {
1547
1628
  setFchart(chart);
1548
1629
  };
1549
1630
 
1631
+ var handlePieDonutChartTooltip = function handlePieDonutChartTooltip(chartData) {
1632
+ if (chartData && chartData.data && chartData.data.length) {
1633
+ chartData.data.forEach(function (item, index) {
1634
+ var color = getPlotColorByIndexOrder(index);
1635
+ item.tooltext = item.tooltext.replaceAll("transparent", color);
1636
+ });
1637
+ setArgs(_extends({}, args, {
1638
+ dataSource: chartData
1639
+ }));
1640
+ }
1641
+ };
1642
+
1643
+ var handleOtherChartsTooltip = function handleOtherChartsTooltip(chartData) {
1644
+ if (chartData && chartData.dataset && chartData.dataset.length) {
1645
+ chartData.dataset.forEach(function (el, index) {
1646
+ el.data.forEach(function (item) {
1647
+ var color = getPlotColorByIndexOrder(index);
1648
+ item.tooltext = item.tooltext.replaceAll("transparent", color);
1649
+ });
1650
+ });
1651
+ setArgs(_extends({}, args, {
1652
+ dataSource: chartData
1653
+ }));
1654
+ }
1655
+ };
1656
+
1657
+ var loaded = function loaded(event) {
1658
+ var _widget$current6, _widget$current7;
1659
+
1660
+ if (isDummyChangesActive && isDummyChangesActive.current) return;
1661
+ var chartData = event.sender.args && event.sender.args.dataSource ? event.sender.args.dataSource : null;
1662
+ var isPieOrDonutChart = ((_widget$current6 = widget.current) === null || _widget$current6 === void 0 ? void 0 : _widget$current6.TypeCode) == 'pie' || ((_widget$current7 = widget.current) === null || _widget$current7 === void 0 ? void 0 : _widget$current7.TypeCode) == 'donut';
1663
+
1664
+ if (isPieOrDonutChart) {
1665
+ handlePieDonutChartTooltip(chartData);
1666
+ } else {
1667
+ handleOtherChartsTooltip(chartData);
1668
+ }
1669
+ };
1670
+
1550
1671
  return !dataLoaded ? React__default.createElement("div", {
1551
1672
  ref: progressRef,
1552
1673
  className: 'dl-full-hight dl-flex-content-center spinner-custome'
@@ -1561,12 +1682,13 @@ var FusionChart = forwardRef(function (props, comRef) {
1561
1682
  className: 'db-fc-parent-container',
1562
1683
  ref: fusionRef
1563
1684
  }, React__default.createElement("div", {
1564
- key: fusionKey,
1565
1685
  className: 'db-fc-container',
1686
+ key: fusionKey,
1566
1687
  ref: ref,
1567
- id: id
1688
+ id: chartContainerId
1568
1689
  }, React__default.createElement(ReactFC, Object.assign({}, args, {
1569
1690
  "fcEvent-dataplotClick": dataplotClick,
1691
+ "fcEvent-loaded": loaded,
1570
1692
  onRender: renderComplete
1571
1693
  })))) : React__default.createElement("div", {
1572
1694
  className: "dl-flex-content-center dl-full-hight",