logitude-dashboard-library 3.2.6 → 3.2.8

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.
@@ -2,8 +2,8 @@ import React__default, { createElement, useState, useRef, useEffect, forwardRef,
2
2
  import { WidthProvider, Responsive } from 'react-grid-layout';
3
3
  import { ProgressSpinner } from 'primereact/progressspinner';
4
4
  import axios from 'axios';
5
- import moment from 'moment';
6
5
  import { v4 } from 'uuid';
6
+ import moment from 'moment';
7
7
  import { DataTable } from 'primereact/datatable';
8
8
  import { Column } from 'primereact/column';
9
9
  import ReactFC from 'react-fusioncharts';
@@ -250,70 +250,6 @@ function SvgRedWarning(props) {
250
250
  })));
251
251
  }
252
252
 
253
- var DateGroupCodes = {
254
- Full_Date: 'Full Date',
255
- Month: 'Month',
256
- Quarter: 'Quarter',
257
- Year: 'Year',
258
- Month_Year: 'Month & Year',
259
- Quarter_Year: 'Quarter & Year'
260
- };
261
-
262
- var getDateFormat = function getDateFormat(label, _format) {
263
- if (!label) return label;
264
-
265
- var _date = moment(label);
266
-
267
- if (!_date || !_date.isValid()) return label;
268
- return _date.format(_format);
269
- };
270
-
271
- var getQuarterYearFormat = function getQuarterYearFormat(label) {
272
- if (!label) return label;
273
-
274
- if (label.includes("/")) {
275
- var result = label.split("/");
276
- var quarterVal = result && result[1] ? result[1] : "";
277
- var yearVal = result && result[0] ? result[0] : "";
278
- return quarterVal + " " + yearVal;
279
- }
280
-
281
- return label;
282
- };
283
-
284
- var getLabelFormatByDateGroupType = function getLabelFormatByDateGroupType(label, widget, isSecondGrouping) {
285
- if (isSecondGrouping === void 0) {
286
- isSecondGrouping = false;
287
- }
288
-
289
- if (!widget) return label;
290
- var groupFieldDataType = isSecondGrouping ? widget.SecondaryDateGroupCode : widget.DateGroupCode;
291
- if (!groupFieldDataType) return label;
292
-
293
- switch (groupFieldDataType) {
294
- case DateGroupCodes.Full_Date:
295
- return getDateFormat(label, "DD MMM YYYY");
296
-
297
- case DateGroupCodes.Month:
298
- return getDateFormat(label, "MMM");
299
-
300
- case DateGroupCodes.Quarter:
301
- return label;
302
-
303
- case DateGroupCodes.Year:
304
- return getDateFormat(label, "YYYY");
305
-
306
- case DateGroupCodes.Month_Year:
307
- return getDateFormat(label, "MMM YYYY");
308
-
309
- case DateGroupCodes.Quarter_Year:
310
- return getQuarterYearFormat(label);
311
-
312
- default:
313
- return label;
314
- }
315
- };
316
-
317
253
  var isNullOrUndefined = function isNullOrUndefined(val) {
318
254
  return val == null || val == undefined;
319
255
  };
@@ -323,7 +259,7 @@ var isNullOrUndefinedOrEmpty = function isNullOrUndefinedOrEmpty(val) {
323
259
  };
324
260
 
325
261
  var KpiChart = function KpiChart(props) {
326
- var _widget$current18;
262
+ var _widget$current16;
327
263
 
328
264
  var _useState = useState(true),
329
265
  isLoading = _useState[0],
@@ -434,6 +370,9 @@ var KpiChart = function KpiChart(props) {
434
370
  return React__default.createElement("div", {
435
371
  className: "dl-kpi-ratio-container"
436
372
  }, getArrowComponent(), React__default.createElement("div", {
373
+ style: {
374
+ fontSize: getKPIFormattingPropertyValue("PercentageFontSize", "px")
375
+ },
437
376
  className: 'dl-kpi-ratio-text'
438
377
  }, data === null || data === void 0 ? void 0 : data.Ratio, " %"));
439
378
  }
@@ -477,14 +416,22 @@ var KpiChart = function KpiChart(props) {
477
416
 
478
417
  function getPreviousValueComponent() {
479
418
  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) : "";
419
+ var formatedValue = data ? data.ComparisonLabel : "";
420
+ var comparisonValue = data ? data === null || data === void 0 ? void 0 : data.ComparisonValue : "";
483
421
  return React__default.createElement("div", {
484
422
  className: "dl-kpi-prev-container"
485
423
  }, React__default.createElement("div", {
424
+ style: {
425
+ color: getKPIFormattingPropertyValue("ComparisonValueFontColor"),
426
+ fontSize: getKPIFormattingPropertyValue("ComparisonValueFontSize", "px")
427
+ },
428
+ title: formatedValue,
486
429
  className: "dl-kpi-prev-text"
487
- }, prevtext), (data === null || data === void 0 ? void 0 : data.ComparisonAbbreviationSymbol) && React__default.createElement("div", {
430
+ }, comparisonValue), (data === null || data === void 0 ? void 0 : data.ComparisonAbbreviationSymbol) && React__default.createElement("div", {
431
+ style: {
432
+ color: getKPIFormattingPropertyValue("ComparisonValueFontColor"),
433
+ fontSize: getKPIFormattingPropertyValue("ComparisonValueFontSize", "px")
434
+ },
488
435
  className: "dl-kpi-prev-abbreviationSymbol"
489
436
  }, data === null || data === void 0 ? void 0 : data.ComparisonAbbreviationSymbol));
490
437
  }
@@ -494,6 +441,10 @@ var KpiChart = function KpiChart(props) {
494
441
  className: "dl-kpi-no-data"
495
442
  }, "No data to display.");
496
443
  return React__default.createElement("div", {
444
+ style: {
445
+ color: getKPIFormattingPropertyValue("MainValueFontColor"),
446
+ fontSize: getKPIFormattingPropertyValue("MainValueFontSize", "px")
447
+ },
497
448
  className: "dl-kpi-value dl-kpi-textTrimming"
498
449
  }, data === null || data === void 0 ? void 0 : data.Value);
499
450
  }
@@ -502,19 +453,66 @@ var KpiChart = function KpiChart(props) {
502
453
  return React__default.createElement("div", {
503
454
  className: "dl-kpi-sub-container"
504
455
  }, getValueData(), (data === null || data === void 0 ? void 0 : data.AbbreviationSymbol) && React__default.createElement("div", {
456
+ style: {
457
+ color: getKPIFormattingPropertyValue("MainValueFontColor"),
458
+ fontSize: getKPIFormattingPropertyValue("MainValueFontSize", "px")
459
+ },
505
460
  className: "dl-kpi-abbreviationSymbol"
506
461
  }, data === null || data === void 0 ? void 0 : data.AbbreviationSymbol), widget.current && widget.current.ShowMeasureUnit && (data === null || data === void 0 ? void 0 : data.Unit) && React__default.createElement("div", {
462
+ style: {
463
+ color: getKPIFormattingPropertyValue("MainValueFontColor"),
464
+ fontSize: getKPIFormattingPropertyValue("MainValueFontSize", "px")
465
+ },
507
466
  className: "dl-kpi-unit"
508
467
  }, data === null || data === void 0 ? void 0 : data.Unit), getRatioComponent());
509
468
  }
510
469
 
470
+ var getPeriodLabelByPeriodCode = function getPeriodLabelByPeriodCode(code) {
471
+ if (!isNullOrUndefinedOrEmpty(code)) {
472
+ return code.replaceAll("_", " ");
473
+ }
474
+
475
+ return "";
476
+ };
477
+
478
+ var getLabelFromKPISettings = function getLabelFromKPISettings() {
479
+ if (widget.current && widget.current.KPIComparisonSettings && widget.current.KPIComparisonSettings.length) {
480
+ var kpiSettings = JSON.parse(widget.current.KPIComparisonSettings);
481
+ var PeriodDateFilter = kpiSettings ? kpiSettings.PeriodDateFilter : null;
482
+ return PeriodDateFilter && PeriodDateFilter.DateTimeValueCode ? getPeriodLabelByPeriodCode(PeriodDateFilter.DateTimeValueCode) : "";
483
+ }
484
+
485
+ return "";
486
+ };
487
+
488
+ var getKPIFormattingData = function getKPIFormattingData() {
489
+ var _widget$current14, _widget$current15;
490
+
491
+ return isNullOrUndefinedOrEmpty((_widget$current14 = widget.current) === null || _widget$current14 === void 0 ? void 0 : _widget$current14.KPIFormatSettings) ? {} : JSON.parse((_widget$current15 = widget.current) === null || _widget$current15 === void 0 ? void 0 : _widget$current15.KPIFormatSettings);
492
+ };
493
+
494
+ var getKPIFormattingPropertyValue = function getKPIFormattingPropertyValue(propertyName, unit) {
495
+ if (unit === void 0) {
496
+ unit = "";
497
+ }
498
+
499
+ var kpiFormattingData = getKPIFormattingData();
500
+ return kpiFormattingData && kpiFormattingData[propertyName] ? kpiFormattingData[propertyName] + unit : undefined;
501
+ };
502
+
511
503
  function getLabel() {
512
- var labelFormated = getLabelFormatByDateGroupType(data.Label, widget.current, false);
504
+ var formatedValue = data ? data.Label : "";
505
+ var label = getLabelFromKPISettings();
513
506
  return React__default.createElement("div", {
514
507
  className: "dl-kpi-label-container"
515
508
  }, React__default.createElement("span", {
509
+ style: {
510
+ color: getKPIFormattingPropertyValue("MainPeriodFontColor"),
511
+ fontSize: getKPIFormattingPropertyValue("MainPeriodFontSize", "px")
512
+ },
513
+ title: formatedValue,
516
514
  className: "dl-kpi-label-span dl-kpi-textTrimming"
517
- }, labelFormated));
515
+ }, label));
518
516
  }
519
517
 
520
518
  var getIsKPIHasSmallestHeight = function getIsKPIHasSmallestHeight() {
@@ -524,13 +522,9 @@ var KpiChart = function KpiChart(props) {
524
522
  };
525
523
 
526
524
  var isKPICustomResizeNeeded = function isKPICustomResizeNeeded() {
527
- var _widget$current14, _widget$current15, _widget$current16, _widget$current17;
528
-
529
525
  if (!widget || !widget.current) return;
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;
532
526
  var isKPIHasSmallestHeight = getIsKPIHasSmallestHeight();
533
- return isThereTitle && isThereSubTitle && isKPIHasSmallestHeight;
527
+ return isKPIHasSmallestHeight;
534
528
  };
535
529
 
536
530
  return isLoading || !widget.current ? React__default.createElement("div", {
@@ -545,7 +539,7 @@ var KpiChart = function KpiChart(props) {
545
539
  })) : !error && widget.current ? React__default.createElement("div", {
546
540
  key: triggerId,
547
541
  onClick: kpiClick,
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"
542
+ className: ((_widget$current16 = widget.current) === null || _widget$current16 === void 0 ? void 0 : _widget$current16.Alighnment) == "Left" ? "dl-kpi-container-click db-justify-content-flex-start" : "dl-kpi-container-click"
549
543
  }, React__default.createElement("div", {
550
544
  className: isKPICustomSizeNeeded ? "dl-kpi-container kpi-custom-size" : "dl-kpi-container"
551
545
  }, getLabel(), getValueComponent(), getPreviousValueComponent())) : React__default.createElement("div", {
@@ -661,7 +655,7 @@ var TableChart = function TableChart(props) {
661
655
  var key = field.FieldCode;
662
656
  var valueType = field.DataTypeCode;
663
657
 
664
- var _value = valueType && (valueType == "Date" || valueType == "DateTime") ? getDateTimeValue(item[key]) : valueType == "Boolean" ? getBooleanStringValue(item[key]) : item[key];
658
+ var _value = valueType && valueType == "Boolean" ? getBooleanStringValue(item[key]) : item[key];
665
659
 
666
660
  _tableRow[key] = isNullOrUndefined(_value) ? "" : _value;
667
661
  });
@@ -712,16 +706,19 @@ var TableChart = function TableChart(props) {
712
706
  return field ? field.Id : null;
713
707
  };
714
708
 
715
- var sortTableData = function sortTableData(e) {
716
- setSortField(e.sortField);
717
- setSortOrder(e.sortOrder);
709
+ var sortTableData = function sortTableData(sortedField) {
710
+ setSortField(sortedField);
711
+
712
+ var _sortOrder = sortOrder == 1 ? -1 : sortOrder == -1 ? 1 : 1;
713
+
714
+ setSortOrder(_sortOrder);
718
715
  var _widget = props.customChartProps.widget;
719
716
  var dashboardAnalyticsService = new DashboardAnalyticsService();
720
717
  _widget.onChange = undefined;
721
718
  _widget.PageIndex = 0;
722
719
  _widget.PageSize = 100;
723
- _widget.ScreenSortBy = getSortFieldIdBySortFieldCode(e.sortField);
724
- _widget.ScreenSortDirection = e.sortOrder == 1 ? 'asc' : e.sortOrder == -1 ? 'desc' : null;
720
+ _widget.ScreenSortBy = getSortFieldIdBySortFieldCode(sortedField);
721
+ _widget.ScreenSortDirection = _sortOrder == 1 ? 'asc' : _sortOrder == -1 ? 'desc' : null;
725
722
  _widget.EntityId = !isNullOrUndefinedOrEmpty(_widget.RelatedToEntityId) ? _widget.RelatedToEntityId : _widget.EntityId;
726
723
  setIsTableLoading(true);
727
724
  dashboardAnalyticsService.getTableData(_widget).then(function (res) {
@@ -746,6 +743,47 @@ var TableChart = function TableChart(props) {
746
743
  return false;
747
744
  };
748
745
 
746
+ var cellTemplateBody = function cellTemplateBody(data, column) {
747
+ if (!column || !column.FieldCode) return "";
748
+ return column.DataTypeCode == "DateTime" || column.DataTypeCode == "Date" ? getDateTimeValue(data[column.FieldCode]) : data[column.FieldCode];
749
+ };
750
+
751
+ var headerTemplate = function headerTemplate(column) {
752
+ var sortClassIcon = "";
753
+
754
+ if (sortField != column.FieldCode) {
755
+ return React__default.createElement("div", {
756
+ onClick: function onClick() {
757
+ return sortTableData(column.FieldCode);
758
+ },
759
+ className: "header-content"
760
+ }, React__default.createElement("span", {
761
+ className: "p-column-title"
762
+ }, column.DisplayName), canSort() && React__default.createElement("span", {
763
+ className: "p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt"
764
+ }));
765
+ }
766
+
767
+ if (sortOrder == 1) {
768
+ sortClassIcon = "p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-up-alt";
769
+ } else if (sortOrder == -1) {
770
+ sortClassIcon = "p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-down";
771
+ } else {
772
+ sortClassIcon = "p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt";
773
+ }
774
+
775
+ return React__default.createElement("div", {
776
+ onClick: function onClick() {
777
+ return sortTableData(column.FieldCode);
778
+ },
779
+ className: "header-content"
780
+ }, React__default.createElement("span", {
781
+ className: "p-column-title"
782
+ }, column.DisplayName), canSort() && React__default.createElement("span", {
783
+ className: sortClassIcon
784
+ }));
785
+ };
786
+
749
787
  return isLoading ? React__default.createElement("div", {
750
788
  className: 'dl-full-hight dl-flex-content-center spinner-custome'
751
789
  }, React__default.createElement(ProgressSpinner, {
@@ -768,17 +806,17 @@ var TableChart = function TableChart(props) {
768
806
  className: "dl-tooltiptext"
769
807
  }, error))) : React__default.createElement(DataTable, {
770
808
  loading: isTableLoading,
771
- sortField: sortField,
772
- sortOrder: sortOrder,
773
- onSort: sortTableData,
774
809
  value: tableData,
775
810
  responsiveLayout: "scroll"
776
811
  }, tableColumns.map(function (column, index) {
777
812
  return React__default.createElement(Column, {
778
- sortable: canSort(),
779
813
  key: column.FieldCode + "_" + index,
780
- field: column.FieldCode,
781
- header: column.DisplayName
814
+ header: function header() {
815
+ return headerTemplate(column);
816
+ },
817
+ body: function body(data) {
818
+ return cellTemplateBody(data, column);
819
+ }
782
820
  });
783
821
  }));
784
822
  };
@@ -828,6 +866,70 @@ var CustomChart = function CustomChart(props) {
828
866
  }, project()));
829
867
  };
830
868
 
869
+ var DateGroupCodes = {
870
+ Full_Date: 'Full Date',
871
+ Month: 'Month',
872
+ Quarter: 'Quarter',
873
+ Year: 'Year',
874
+ Month_Year: 'Month & Year',
875
+ Quarter_Year: 'Quarter & Year'
876
+ };
877
+
878
+ var getDateFormat = function getDateFormat(label, _format) {
879
+ if (!label) return label;
880
+
881
+ var _date = moment(label);
882
+
883
+ if (!_date || !_date.isValid()) return label;
884
+ return _date.format(_format);
885
+ };
886
+
887
+ var getQuarterYearFormat = function getQuarterYearFormat(label) {
888
+ if (!label) return label;
889
+
890
+ if (label.includes("/")) {
891
+ var result = label.split("/");
892
+ var quarterVal = result && result[1] ? result[1] : "";
893
+ var yearVal = result && result[0] ? result[0] : "";
894
+ return quarterVal + " " + yearVal;
895
+ }
896
+
897
+ return label;
898
+ };
899
+
900
+ var getLabelFormatByDateGroupType = function getLabelFormatByDateGroupType(label, widget, isSecondGrouping) {
901
+ if (isSecondGrouping === void 0) {
902
+ isSecondGrouping = false;
903
+ }
904
+
905
+ if (!widget) return label;
906
+ var groupFieldDataType = isSecondGrouping ? widget.SecondaryDateGroupCode : widget.DateGroupCode;
907
+ if (!groupFieldDataType) return label;
908
+
909
+ switch (groupFieldDataType) {
910
+ case DateGroupCodes.Full_Date:
911
+ return getDateFormat(label, "DD MMM YYYY");
912
+
913
+ case DateGroupCodes.Month:
914
+ return getDateFormat(label, "MMM");
915
+
916
+ case DateGroupCodes.Quarter:
917
+ return label;
918
+
919
+ case DateGroupCodes.Year:
920
+ return getDateFormat(label, "YYYY");
921
+
922
+ case DateGroupCodes.Month_Year:
923
+ return getDateFormat(label, "MMM YYYY");
924
+
925
+ case DateGroupCodes.Quarter_Year:
926
+ return getQuarterYearFormat(label);
927
+
928
+ default:
929
+ return label;
930
+ }
931
+ };
932
+
831
933
  function buildToolTip(widget, value, seriesName, label, index) {
832
934
  var padding = widget.TypeCode == 'line' && index > 0 ? 'padding-top: 3px' : '';
833
935
  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 ";