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