logitude-dashboard-library 3.2.1 → 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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) {
@@ -308,7 +319,7 @@ var isNullOrUndefined = function isNullOrUndefined(val) {
308
319
  };
309
320
 
310
321
  var KpiChart = function KpiChart(props) {
311
- var _widget$current17;
322
+ var _widget$current18;
312
323
 
313
324
  var _useState = useState(true),
314
325
  isLoading = _useState[0],
@@ -399,8 +410,22 @@ var KpiChart = function KpiChart(props) {
399
410
  });
400
411
  };
401
412
 
413
+ var isComparisonIndicatorChecked = function isComparisonIndicatorChecked() {
414
+ var _widget$current5;
415
+
416
+ var _kpiSettings = (_widget$current5 = widget.current) === null || _widget$current5 === void 0 ? void 0 : _widget$current5.KPIComparisonSettings;
417
+
418
+ if (_kpiSettings) {
419
+ var _kpiSettingsAsObj = JSON.parse(_kpiSettings);
420
+
421
+ return !isNullOrUndefined(_kpiSettingsAsObj.ComparisonIndicator) ? _kpiSettingsAsObj.ComparisonIndicator : false;
422
+ }
423
+
424
+ return false;
425
+ };
426
+
402
427
  function getRatioComponent() {
403
- if (!(data !== null && data !== void 0 && data.CompareWithPrevious)) return null;
428
+ if (!(data !== null && data !== void 0 && data.CompareWithPrevious) || !isComparisonIndicatorChecked()) return null;
404
429
  return React__default.createElement("div", {
405
430
  className: "dl-kpi-ratio-container"
406
431
  }, getArrowComponent(), React__default.createElement("div", {
@@ -409,7 +434,7 @@ var KpiChart = function KpiChart(props) {
409
434
  }
410
435
 
411
436
  function getArrowComponent() {
412
- var _widget$current5, _widget$current6, _widget$current7, _widget$current8, _widget$current9, _widget$current10, _widget$current11, _widget$current12;
437
+ var _widget$current6, _widget$current7, _widget$current8, _widget$current9, _widget$current10, _widget$current11, _widget$current12, _widget$current13;
413
438
 
414
439
  if (!data) return null;
415
440
  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 +447,22 @@ var KpiChart = function KpiChart(props) {
422
447
  marginTop: "2px"
423
448
  }
424
449
  }));
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", {
450
+ 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
451
  className: "dl-kpi-arrow-container"
427
452
  }, React__default.createElement("span", {
428
453
  className: "dl-kpi-arrow-pic dl-kpi-arrow-up-green"
429
454
  }));
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", {
455
+ 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
456
  className: "dl-kpi-arrow-container"
432
457
  }, React__default.createElement("span", {
433
458
  className: "dl-kpi-arrow-pic dl-kpi-arrow-up-red"
434
459
  }));
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", {
460
+ 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
461
  className: "dl-kpi-arrow-container"
437
462
  }, React__default.createElement("span", {
438
463
  className: "dl-kpi-arrow-pic dl-kpi-arrow-down-red"
439
464
  }));
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", {
465
+ 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
466
  className: "dl-kpi-arrow-container"
442
467
  }, React__default.createElement("span", {
443
468
  className: "dl-kpi-arrow-pic dl-kpi-arrow-down-green"
@@ -446,10 +471,10 @@ var KpiChart = function KpiChart(props) {
446
471
  }
447
472
 
448
473
  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;
474
+ if (isNullOrUndefined(data) || isNullOrUndefined(data === null || data === void 0 ? void 0 : data.ComparisonValue) || isNullOrUndefined(data === null || data === void 0 ? void 0 : data.ComparisonLabel)) return "";
475
+ var labelFormatByDateGroupType = getLabelFormatByDateGroupType(data.ComparisonLabel, widget.current, false);
476
+ var labelFormated = !isNullOrUndefined(labelFormatByDateGroupType) ? labelFormatByDateGroupType : null;
477
+ var prevtext = labelFormated ? labelFormated + ": " + (data === null || data === void 0 ? void 0 : data.ComparisonValue) : "";
453
478
  return React__default.createElement("div", {
454
479
  className: "dl-kpi-prev-container"
455
480
  }, React__default.createElement("div", {
@@ -494,11 +519,11 @@ var KpiChart = function KpiChart(props) {
494
519
  };
495
520
 
496
521
  var isKPICustomResizeNeeded = function isKPICustomResizeNeeded() {
497
- var _widget$current13, _widget$current14, _widget$current15, _widget$current16;
522
+ var _widget$current14, _widget$current15, _widget$current16, _widget$current17;
498
523
 
499
524
  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;
525
+ 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;
526
+ 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
527
  var isKPIHasSmallestHeight = getIsKPIHasSmallestHeight();
503
528
  return isThereTitle && isThereSubTitle && isKPIHasSmallestHeight;
504
529
  };
@@ -515,7 +540,7 @@ var KpiChart = function KpiChart(props) {
515
540
  })) : !error && widget.current ? React__default.createElement("div", {
516
541
  key: triggerId,
517
542
  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"
543
+ 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
544
  }, React__default.createElement("div", {
520
545
  className: isKPICustomSizeNeeded ? "dl-kpi-container kpi-custom-size" : "dl-kpi-container"
521
546
  }, getLabel(), getValueComponent(), getPreviousValueComponent())) : React__default.createElement("div", {
@@ -548,6 +573,10 @@ var TableChart = function TableChart(props) {
548
573
  tableData = _useState4[0],
549
574
  setTableData = _useState4[1];
550
575
 
576
+ var _useState5 = useState([]),
577
+ tableColumns = _useState5[0],
578
+ setTableColumns = _useState5[1];
579
+
551
580
  useEffect(function () {
552
581
  if (props.customChartProps && props.customChartProps.widget) {
553
582
  setWidget(props.customChartProps.widget);
@@ -565,7 +594,7 @@ var TableChart = function TableChart(props) {
565
594
  var dashboardAnalyticsService = new DashboardAnalyticsService();
566
595
  widget.onChange = undefined;
567
596
  widget.PageIndex = 0;
568
- widget.PageSize = 50;
597
+ widget.PageSize = 100;
569
598
  dashboardAnalyticsService.getTableData(widget).then(function (res) {
570
599
  if (res && res.data) {
571
600
  fillTableData(res.data);
@@ -598,56 +627,29 @@ var TableChart = function TableChart(props) {
598
627
  };
599
628
 
600
629
  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
- }
630
+ var tableRecords = [];
612
631
 
613
- tableRecoreds.push(tableRow);
632
+ if (tableData.Fields && tableData.Fields.length) {
633
+ setTableColumns([].concat(tableData.Fields));
634
+ }
614
635
 
615
- if (tableData.Result) {
636
+ if (tableData.Result && tableData.Result.length) {
616
637
  tableData.Result.forEach(function (item) {
617
- var _tableRow = [];
638
+ var _tableRow = _extends({}, item);
639
+
618
640
  tableData.Fields.forEach(function (field) {
619
641
  var key = field.FieldCode;
620
642
  var valueType = field.DataTypeCode;
621
643
 
622
644
  var _value = valueType && (valueType == "Date" || valueType == "DateTime") ? getDateTimeValue(item[key]) : valueType == "Boolean" ? getBooleanStringValue(item[key]) : item[key];
623
645
 
624
- _tableRow.push({
625
- value: _value
626
- });
646
+ _tableRow[key] = isNullOrUndefined(_value) ? "" : _value;
627
647
  });
628
- tableRecoreds.push(_tableRow);
648
+ tableRecords.push(_tableRow);
629
649
  });
630
650
  }
631
651
 
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
- })));
652
+ setTableData([].concat(tableRecords));
651
653
  };
652
654
 
653
655
  return isLoading ? React__default.createElement("div", {
@@ -670,11 +672,20 @@ var TableChart = function TableChart(props) {
670
672
  className: "red-warning-icon"
671
673
  }), React__default.createElement("span", {
672
674
  className: "dl-tooltiptext"
673
- }, error))) : getTableTemplate();
675
+ }, error))) : React__default.createElement(DataTable, {
676
+ value: tableData,
677
+ responsiveLayout: "scroll"
678
+ }, tableColumns.map(function (column, index) {
679
+ return React__default.createElement(Column, {
680
+ key: column.FieldCode + "_" + index,
681
+ field: column.FieldCode,
682
+ header: column.DisplayName
683
+ });
684
+ }));
674
685
  };
675
686
 
676
687
  var CustomChart = function CustomChart(props) {
677
- var _props$widget2;
688
+ var _props$widget2, _props$widget3, _props$widget4;
678
689
 
679
690
  var project = function project() {
680
691
  var _props$widget;
@@ -695,50 +706,16 @@ var CustomChart = function CustomChart(props) {
695
706
  }
696
707
  };
697
708
 
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());
709
+ 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", {
710
+ className: "table-rows-number-indicator"
711
+ }, "Showing the first 100 rows"), React__default.createElement("div", {
712
+ 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"
713
+ }, project()));
701
714
  };
702
715
 
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
716
  function buildToolTip(widget, value, seriesName, label, index) {
740
717
  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 ";
718
+ 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
719
  }
743
720
 
744
721
  function getTooltipPercentage(widget) {
@@ -746,8 +723,9 @@ function getTooltipPercentage(widget) {
746
723
  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
724
  }
748
725
 
749
- function getTooltiplabel(value) {
726
+ function getTooltiplabel(value, seriesMeasure) {
750
727
  if (value) return value;
728
+ if (seriesMeasure && seriesMeasure.Name) return '$label' + " - " + seriesMeasure.Name;
751
729
  return '$label';
752
730
  }
753
731
 
@@ -827,8 +805,7 @@ function buildDataSource(values, widget) {
827
805
  MeasureCode: series.MeasureCode,
828
806
  Formula: series.Formula
829
807
  },
830
- tooltext: buildToolTip(widget, null, series, e.Label, 0),
831
- color: getSeriesPositionColor(index + 1)
808
+ tooltext: buildToolTip(widget, null, series, e.Label, 0)
832
809
  };
833
810
  return item;
834
811
  });
@@ -837,7 +814,6 @@ function buildDataSource(values, widget) {
837
814
 
838
815
  function buildDataSet(seriesMeasures, widget) {
839
816
  var dataSet = [];
840
- var seriesPosition = 1;
841
817
  seriesMeasures.forEach(function (seriesMeasure) {
842
818
  var datas = seriesMeasure.Values.map(function (e, index) {
843
819
  return {
@@ -851,26 +827,22 @@ function buildDataSet(seriesMeasures, widget) {
851
827
  tooltext: buildToolTip(widget, e.Value, seriesMeasure, null, index)
852
828
  };
853
829
  });
854
- var color = getSeriesPositionColor(seriesPosition);
855
830
  dataSet.push({
856
831
  data: datas,
857
832
  seriesname: seriesMeasure.Name,
858
- color: color,
859
- anchorBgColor: color,
833
+ anchorBgColor: "inherit",
860
834
  anchorBorderColor: "#FFFFFF",
861
835
  anchorBorderThickness: "2",
862
- anchorHoverColor: color,
836
+ anchorHoverColor: "inherit",
863
837
  parentyaxis: seriesMeasure.PlotasLineChart && seriesMeasure.PlotonSecondAxis ? 'S' : "P",
864
838
  renderAs: seriesMeasure.PlotasLineChart ? 'line' : "column"
865
839
  });
866
- seriesPosition++;
867
840
  });
868
841
  return dataSet;
869
842
  }
870
843
 
871
844
  function buildStackedDataSet(seriesMeasures, widget) {
872
845
  var dataSet = [];
873
- var seriesPosition = 1;
874
846
  var series = seriesMeasures[0];
875
847
  var uniqueGroups = [];
876
848
  series.Values.forEach(function (element) {
@@ -882,13 +854,10 @@ function buildStackedDataSet(seriesMeasures, widget) {
882
854
  });
883
855
  });
884
856
  uniqueGroups.forEach(function (group) {
885
- var color = getSeriesPositionColor(seriesPosition);
886
857
  dataSet.push({
887
858
  seriesName: group.label,
888
- color: color,
889
859
  data: buildStackedGroupData(group, series, widget)
890
860
  });
891
- seriesPosition++;
892
861
  });
893
862
  var emptylabels = dataSet.filter(function (e) {
894
863
  return e.seriesName == null;
@@ -1248,6 +1217,7 @@ function getDefaultChartInfo(widget) {
1248
1217
  chart.minAngleForValue = "27";
1249
1218
  }
1250
1219
 
1220
+ chart.palettecolors = "#369CFB,#4AC76F,#F6CF33,#32C7C7,#935BE0,#FAAD14,#EE5F77,#5D62B5, #29C3BE, #F2726F, #FFC533, #62B58F, #BC95DF, #67CDF2";
1251
1221
  chart.enableSlicing = "0";
1252
1222
  chart.enableRotation = "0";
1253
1223
  chart.chartTopMargin = "10";
@@ -1256,6 +1226,7 @@ function getDefaultChartInfo(widget) {
1256
1226
  chart.chartRightMargin = "40";
1257
1227
  chart.toolTipBgColor = "#FFFFFF";
1258
1228
  chart.showToolTipShadow = "1";
1229
+ chart.plotHoverEffect = "0";
1259
1230
  chart.scrollHeight = "6";
1260
1231
  chart.scrollWidth = "6";
1261
1232
  chart.plotColorinTooltip = "0";
@@ -1389,6 +1360,78 @@ var FusionChartHelper = /*#__PURE__*/function () {
1389
1360
  return FusionChartHelper;
1390
1361
  }();
1391
1362
 
1363
+ var plotColorsDictionary = {
1364
+ plotColor0: "#369CFB",
1365
+ plotColor1: "#4AC76F",
1366
+ plotColor2: "#F6CF33",
1367
+ plotColor3: "#32C7C7",
1368
+ plotColor4: "#935BE0",
1369
+ plotColor5: "#FAAD14",
1370
+ plotColor6: "#EE5F77",
1371
+ plotColor7: "#5D62B5",
1372
+ plotColor8: "#29C3BE",
1373
+ plotColor9: "#F2726F",
1374
+ plotColor10: "#FFC533",
1375
+ plotColor11: "#62B58F",
1376
+ plotColor12: "#BC95DF",
1377
+ plotColor13: "#67CDF2"
1378
+ };
1379
+
1380
+ var getPlotColorByIndexOrder = function getPlotColorByIndexOrder(index) {
1381
+ var _index = index;
1382
+
1383
+ if (_index >= 14) {
1384
+ _index = _index % 14;
1385
+ }
1386
+
1387
+ switch (_index) {
1388
+ case 0:
1389
+ return plotColorsDictionary.plotColor0;
1390
+
1391
+ case 1:
1392
+ return plotColorsDictionary.plotColor1;
1393
+
1394
+ case 2:
1395
+ return plotColorsDictionary.plotColor2;
1396
+
1397
+ case 3:
1398
+ return plotColorsDictionary.plotColor3;
1399
+
1400
+ case 4:
1401
+ return plotColorsDictionary.plotColor4;
1402
+
1403
+ case 5:
1404
+ return plotColorsDictionary.plotColor5;
1405
+
1406
+ case 6:
1407
+ return plotColorsDictionary.plotColor6;
1408
+
1409
+ case 7:
1410
+ return plotColorsDictionary.plotColor7;
1411
+
1412
+ case 8:
1413
+ return plotColorsDictionary.plotColor8;
1414
+
1415
+ case 9:
1416
+ return plotColorsDictionary.plotColor9;
1417
+
1418
+ case 10:
1419
+ return plotColorsDictionary.plotColor10;
1420
+
1421
+ case 11:
1422
+ return plotColorsDictionary.plotColor11;
1423
+
1424
+ case 12:
1425
+ return plotColorsDictionary.plotColor12;
1426
+
1427
+ case 13:
1428
+ return plotColorsDictionary.plotColor13;
1429
+
1430
+ default:
1431
+ return "#0566c2";
1432
+ }
1433
+ };
1434
+
1392
1435
  ReactFC.fcRoot(FusionCharts, Charts, FusionTheme);
1393
1436
  FusionCharts.options['license']({
1394
1437
  key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',
@@ -1407,27 +1450,35 @@ var FusionChart = forwardRef(function (props, comRef) {
1407
1450
  fusionKey = _useState3[0];
1408
1451
 
1409
1452
  var chartData = useRef(null);
1453
+
1454
+ var _useState4 = useState(null),
1455
+ resizeTimer = _useState4[0],
1456
+ setResizeTimer = _useState4[1];
1457
+
1458
+ var axiosController = useRef(new AbortController());
1410
1459
  var widget = useRef();
1411
1460
 
1412
- var _useState4 = useState({}),
1413
- args = _useState4[0],
1414
- setArgs = _useState4[1];
1461
+ var _useState5 = useState({}),
1462
+ args = _useState5[0],
1463
+ setArgs = _useState5[1];
1415
1464
 
1416
- var _useState5 = useState(),
1417
- fChart = _useState5[0],
1418
- setFchart = _useState5[1];
1465
+ var _useState6 = useState(),
1466
+ fChart = _useState6[0],
1467
+ setFchart = _useState6[1];
1468
+
1469
+ var _useState7 = useState(v4()),
1470
+ chartContainerId = _useState7[0];
1419
1471
 
1420
- var id = (Math.random() + 1).toString(36).substring(7);
1421
1472
  var progressRef = useRef(null);
1422
1473
  var fusionRef = useRef(null);
1423
1474
  var fusionChartHelper = useRef();
1475
+ var isDummyChangesActive = useRef(false);
1424
1476
  useEffect(function () {
1425
1477
  var _props$dataBinding;
1426
1478
 
1479
+ axiosController.current = new AbortController();
1427
1480
  widget.current = props.widget;
1428
- setTimeout(function () {
1429
- RefreshData();
1430
- }, 500);
1481
+ RefreshData();
1431
1482
  (_props$dataBinding = props.dataBinding) === null || _props$dataBinding === void 0 ? void 0 : _props$dataBinding.widgetUpdated.subscribe(function (updatedWidget) {
1432
1483
  var _widget$current;
1433
1484
 
@@ -1437,25 +1488,32 @@ var FusionChart = forwardRef(function (props, comRef) {
1437
1488
  if (chartData && chartData.current) {
1438
1489
  var _data = JSON.parse(JSON.stringify(chartData.current));
1439
1490
 
1491
+ isDummyChangesActive.current = true;
1440
1492
  handleData(_data, true);
1441
1493
  }
1442
1494
  });
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
1495
  window.addEventListener("resize", handleResize);
1455
1496
  return function () {
1456
- return window.removeEventListener("resize", handleResize);
1497
+ var _axiosController$curr;
1498
+
1499
+ window.removeEventListener("resize", handleResize);
1500
+ setDataLoaded(false);
1501
+
1502
+ if (axiosController && axiosController !== null && axiosController !== void 0 && (_axiosController$curr = axiosController.current) !== null && _axiosController$curr !== void 0 && _axiosController$curr.abort) {
1503
+ var _axiosController$curr2;
1504
+
1505
+ axiosController === null || axiosController === void 0 ? void 0 : (_axiosController$curr2 = axiosController.current) === null || _axiosController$curr2 === void 0 ? void 0 : _axiosController$curr2.abort();
1506
+ }
1457
1507
  };
1458
1508
  }, []);
1509
+
1510
+ var handleResize = function handleResize() {
1511
+ clearTimeout(resizeTimer);
1512
+ setResizeTimer(setTimeout(function () {
1513
+ HandleSizeChange();
1514
+ }, 200));
1515
+ };
1516
+
1459
1517
  useImperativeHandle(comRef, function () {
1460
1518
  return {
1461
1519
  onResizeFinish: function onResizeFinish() {
@@ -1494,9 +1552,21 @@ var FusionChart = forwardRef(function (props, comRef) {
1494
1552
  var postWidget = _extends({}, widget.current);
1495
1553
 
1496
1554
  postWidget.onChange = undefined;
1497
- dashboardAnalyticsService.getData(postWidget).then(function (result) {
1555
+ var signal = undefined;
1556
+
1557
+ if (axiosController) {
1558
+ var _axiosController$curr3;
1559
+
1560
+ axiosController === null || axiosController === void 0 ? void 0 : (_axiosController$curr3 = axiosController.current) === null || _axiosController$curr3 === void 0 ? void 0 : _axiosController$curr3.abort();
1561
+ var updatedAxiosController = new AbortController();
1562
+ axiosController.current = updatedAxiosController;
1563
+ signal = updatedAxiosController === null || updatedAxiosController === void 0 ? void 0 : updatedAxiosController.signal;
1564
+ }
1565
+
1566
+ dashboardAnalyticsService.getData(postWidget, signal).then(function (result) {
1498
1567
  handleData(result === null || result === void 0 ? void 0 : result.data);
1499
1568
  chartData.current = result === null || result === void 0 ? void 0 : result.data;
1569
+ setDataLoaded(true);
1500
1570
  }, function (error) {
1501
1571
  var _error$response, _error$response$data, _error$response2, _error$response2$data;
1502
1572
 
@@ -1520,6 +1590,10 @@ var FusionChart = forwardRef(function (props, comRef) {
1520
1590
 
1521
1591
  if (!isDummyChange) {
1522
1592
  setDataLoaded(true);
1593
+ } else {
1594
+ setTimeout(function () {
1595
+ isDummyChangesActive.current = false;
1596
+ }, 100);
1523
1597
  }
1524
1598
  };
1525
1599
 
@@ -1547,6 +1621,46 @@ var FusionChart = forwardRef(function (props, comRef) {
1547
1621
  setFchart(chart);
1548
1622
  };
1549
1623
 
1624
+ var handlePieDonutChartTooltip = function handlePieDonutChartTooltip(chartData) {
1625
+ if (chartData && chartData.data && chartData.data.length) {
1626
+ chartData.data.forEach(function (item, index) {
1627
+ var color = getPlotColorByIndexOrder(index);
1628
+ item.tooltext = item.tooltext.replaceAll("transparent", color);
1629
+ });
1630
+ setArgs(_extends({}, args, {
1631
+ dataSource: chartData
1632
+ }));
1633
+ }
1634
+ };
1635
+
1636
+ var handleOtherChartsTooltip = function handleOtherChartsTooltip(chartData) {
1637
+ if (chartData && chartData.dataset && chartData.dataset.length) {
1638
+ chartData.dataset.forEach(function (el, index) {
1639
+ el.data.forEach(function (item) {
1640
+ var color = getPlotColorByIndexOrder(index);
1641
+ item.tooltext = item.tooltext.replaceAll("transparent", color);
1642
+ });
1643
+ });
1644
+ setArgs(_extends({}, args, {
1645
+ dataSource: chartData
1646
+ }));
1647
+ }
1648
+ };
1649
+
1650
+ var loaded = function loaded(event) {
1651
+ var _widget$current6, _widget$current7;
1652
+
1653
+ if (isDummyChangesActive && isDummyChangesActive.current) return;
1654
+ var chartData = event.sender.args && event.sender.args.dataSource ? event.sender.args.dataSource : null;
1655
+ 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';
1656
+
1657
+ if (isPieOrDonutChart) {
1658
+ handlePieDonutChartTooltip(chartData);
1659
+ } else {
1660
+ handleOtherChartsTooltip(chartData);
1661
+ }
1662
+ };
1663
+
1550
1664
  return !dataLoaded ? React__default.createElement("div", {
1551
1665
  ref: progressRef,
1552
1666
  className: 'dl-full-hight dl-flex-content-center spinner-custome'
@@ -1561,12 +1675,13 @@ var FusionChart = forwardRef(function (props, comRef) {
1561
1675
  className: 'db-fc-parent-container',
1562
1676
  ref: fusionRef
1563
1677
  }, React__default.createElement("div", {
1564
- key: fusionKey,
1565
1678
  className: 'db-fc-container',
1679
+ key: fusionKey,
1566
1680
  ref: ref,
1567
- id: id
1681
+ id: chartContainerId
1568
1682
  }, React__default.createElement(ReactFC, Object.assign({}, args, {
1569
1683
  "fcEvent-dataplotClick": dataplotClick,
1684
+ "fcEvent-loaded": loaded,
1570
1685
  onRender: renderComplete
1571
1686
  })))) : React__default.createElement("div", {
1572
1687
  className: "dl-flex-content-center dl-full-hight",