logitude-dashboard-library 3.2.11 → 3.2.13

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
@@ -5,8 +5,8 @@ var React__default = _interopDefault(React);
5
5
  var reactGridLayout = require('react-grid-layout');
6
6
  var progressspinner = require('primereact/progressspinner');
7
7
  var axios = _interopDefault(require('axios'));
8
- var uuid = require('uuid');
9
8
  var moment = _interopDefault(require('moment'));
9
+ var uuid = require('uuid');
10
10
  var datatable = require('primereact/datatable');
11
11
  var column = require('primereact/column');
12
12
  var ReactFC = _interopDefault(require('react-fusioncharts'));
@@ -15,6 +15,7 @@ var Charts = _interopDefault(require('fusioncharts/fusioncharts.charts'));
15
15
  var FusionTheme = _interopDefault(require('fusioncharts/themes/fusioncharts.theme.fusion'));
16
16
  var useResizeObserver = _interopDefault(require('use-resize-observer'));
17
17
  var Popup = _interopDefault(require('reactjs-popup'));
18
+ var Charts$1 = _interopDefault(require('fusioncharts/fusioncharts.widgets'));
18
19
 
19
20
  function _extends() {
20
21
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -219,6 +220,18 @@ var DashboardAnalyticsService = /*#__PURE__*/function () {
219
220
  return this._ApiServices.post("/api/" + this.controller + "/PostGetTableData", widget);
220
221
  };
221
222
 
223
+ _proto.getGaugeData = function getGaugeData(widget, signal) {
224
+ if (signal === void 0) {
225
+ signal = undefined;
226
+ }
227
+
228
+ return this._ApiServices.post("/api/" + this.controller + "/PostGetGaugeData", widget, signal);
229
+ };
230
+
231
+ _proto.getObjectTableNameByWidgetEntityId = function getObjectTableNameByWidgetEntityId(entityId) {
232
+ return this._ApiServices.get("/api/analyticsfactsmetadatas/getsingle?id=" + entityId);
233
+ };
234
+
222
235
  return DashboardAnalyticsService;
223
236
  }();
224
237
 
@@ -253,6 +266,412 @@ function SvgRedWarning(props) {
253
266
  })));
254
267
  }
255
268
 
269
+ var DateGroupCodes = {
270
+ Full_Date: 'Full Date',
271
+ Month: 'Month',
272
+ Quarter: 'Quarter',
273
+ Year: 'Year',
274
+ Month_Year: 'Month & Year',
275
+ Quarter_Year: 'Quarter & Year'
276
+ };
277
+
278
+ var getDateFormat = function getDateFormat(label, _format) {
279
+ if (!label) return label;
280
+
281
+ var _date = moment(label);
282
+
283
+ if (!_date || !_date.isValid()) return label;
284
+ return _date.format(_format);
285
+ };
286
+
287
+ var getQuarterYearFormat = function getQuarterYearFormat(label) {
288
+ if (!label) return label;
289
+
290
+ if (label.includes("/")) {
291
+ var result = label.split("/");
292
+ var quarterVal = result && result[1] ? result[1] : "";
293
+ var yearVal = result && result[0] ? result[0] : "";
294
+ return quarterVal + " " + yearVal;
295
+ }
296
+
297
+ return label;
298
+ };
299
+
300
+ var getLabelFormatByDateGroupType = function getLabelFormatByDateGroupType(label, widget, isSecondGrouping) {
301
+ if (isSecondGrouping === void 0) {
302
+ isSecondGrouping = false;
303
+ }
304
+
305
+ if (!widget) return label;
306
+ var groupFieldDataType = isSecondGrouping ? widget.SecondaryDateGroupCode : widget.DateGroupCode;
307
+ if (!groupFieldDataType) return label;
308
+
309
+ switch (groupFieldDataType) {
310
+ case DateGroupCodes.Full_Date:
311
+ return getDateFormat(label, "DD MMM YYYY");
312
+
313
+ case DateGroupCodes.Month:
314
+ return getDateFormat(label, "MMM");
315
+
316
+ case DateGroupCodes.Quarter:
317
+ return label;
318
+
319
+ case DateGroupCodes.Year:
320
+ return getDateFormat(label, "YYYY");
321
+
322
+ case DateGroupCodes.Month_Year:
323
+ return getDateFormat(label, "MMM YYYY");
324
+
325
+ case DateGroupCodes.Quarter_Year:
326
+ return getQuarterYearFormat(label);
327
+
328
+ default:
329
+ return label;
330
+ }
331
+ };
332
+
333
+ var getTodayDates = function getTodayDates(format) {
334
+ if (format === void 0) {
335
+ format = "YYYYMMDD000000";
336
+ }
337
+
338
+ var dateValues = [];
339
+ var fromDate = moment().format(format);
340
+ var toDate = moment().format(format);
341
+ dateValues.push(fromDate);
342
+ dateValues.push(toDate);
343
+ return dateValues;
344
+ };
345
+
346
+ var getYesterdayDates = function getYesterdayDates(format) {
347
+ if (format === void 0) {
348
+ format = "YYYYMMDD000000";
349
+ }
350
+
351
+ var dateValues = [];
352
+ var fromDate = moment().subtract(1, 'days').format(format);
353
+ var toDate = moment().subtract(1, 'days').format(format);
354
+ dateValues.push(fromDate);
355
+ dateValues.push(toDate);
356
+ return dateValues;
357
+ };
358
+
359
+ var getTomorrowDates = function getTomorrowDates(format) {
360
+ if (format === void 0) {
361
+ format = "YYYYMMDD000000";
362
+ }
363
+
364
+ var dateValues = [];
365
+ var fromDate = moment().add(1, 'days').format(format);
366
+ var toDate = moment().add(1, 'days').format(format);
367
+ dateValues.push(fromDate);
368
+ dateValues.push(toDate);
369
+ return dateValues;
370
+ };
371
+
372
+ var getCurrentWeekDates = function getCurrentWeekDates(format) {
373
+ if (format === void 0) {
374
+ format = "YYYYMMDD000000";
375
+ }
376
+
377
+ var dateValues = [];
378
+ var fromDate = moment().startOf('week').format(format);
379
+ var toDate = moment().endOf('week').format(format);
380
+ dateValues.push(fromDate);
381
+ dateValues.push(toDate);
382
+ return dateValues;
383
+ };
384
+
385
+ var getCurrentMonthDates = function getCurrentMonthDates(format) {
386
+ if (format === void 0) {
387
+ format = "YYYYMMDD000000";
388
+ }
389
+
390
+ var dateValues = [];
391
+ var fromDate = moment().startOf('month').format(format);
392
+ var toDate = moment().endOf('month').format(format);
393
+ dateValues.push(fromDate);
394
+ dateValues.push(toDate);
395
+ return dateValues;
396
+ };
397
+
398
+ var getPreviousMonthDates = function getPreviousMonthDates(format) {
399
+ if (format === void 0) {
400
+ format = "YYYYMMDD000000";
401
+ }
402
+
403
+ var dateValues = [];
404
+ var fromDate = moment().subtract(1, 'months').startOf('month').format(format);
405
+ var toDate = moment().subtract(1, 'months').endOf('month').format(format);
406
+ dateValues.push(fromDate);
407
+ dateValues.push(toDate);
408
+ return dateValues;
409
+ };
410
+
411
+ var getCurrentMonthToDateDates = function getCurrentMonthToDateDates(format) {
412
+ if (format === void 0) {
413
+ format = "YYYYMMDD000000";
414
+ }
415
+
416
+ var dateValues = [];
417
+ var fromDate = moment().startOf('month').format(format);
418
+ var toDate = moment().format(format);
419
+ dateValues.push(fromDate);
420
+ dateValues.push(toDate);
421
+ return dateValues;
422
+ };
423
+
424
+ var getPreviousMonthToDateDates = function getPreviousMonthToDateDates(format) {
425
+ if (format === void 0) {
426
+ format = "YYYYMMDD000000";
427
+ }
428
+
429
+ var dateValues = [];
430
+ var fromDate = moment().subtract(1, 'months').startOf('month').format(format);
431
+ var toDate = moment().format(format);
432
+ dateValues.push(fromDate);
433
+ dateValues.push(toDate);
434
+ return dateValues;
435
+ };
436
+
437
+ var getCurrentQuarterDates = function getCurrentQuarterDates(format) {
438
+ if (format === void 0) {
439
+ format = "YYYYMMDD000000";
440
+ }
441
+
442
+ var dateValues = [];
443
+ var fromDate = moment().startOf('quarter').format(format);
444
+ var toDate = moment().endOf('quarter').format(format);
445
+ dateValues.push(fromDate);
446
+ dateValues.push(toDate);
447
+ return dateValues;
448
+ };
449
+
450
+ var getCurrentYearDates = function getCurrentYearDates(format) {
451
+ if (format === void 0) {
452
+ format = "YYYYMMDD000000";
453
+ }
454
+
455
+ var dateValues = [];
456
+ var fromDate = moment().startOf('year').format(format);
457
+ var toDate = moment().endOf('year').format(format);
458
+ dateValues.push(fromDate);
459
+ dateValues.push(toDate);
460
+ return dateValues;
461
+ };
462
+
463
+ var getPreviousYearDates = function getPreviousYearDates(format) {
464
+ if (format === void 0) {
465
+ format = "YYYYMMDD000000";
466
+ }
467
+
468
+ var dateValues = [];
469
+ var fromDate = moment().subtract(1, 'years').startOf('year').format(format);
470
+ var toDate = moment().subtract(1, 'years').endOf('year').format(format);
471
+ dateValues.push(fromDate);
472
+ dateValues.push(toDate);
473
+ return dateValues;
474
+ };
475
+
476
+ var getCurrentYearToDateDates = function getCurrentYearToDateDates(format) {
477
+ if (format === void 0) {
478
+ format = "YYYYMMDD000000";
479
+ }
480
+
481
+ var dateValues = [];
482
+ var fromDate = moment().startOf('year').format(format);
483
+ var toDate = moment().format(format);
484
+ dateValues.push(fromDate);
485
+ dateValues.push(toDate);
486
+ return dateValues;
487
+ };
488
+
489
+ var getPreviousYearToDateDates = function getPreviousYearToDateDates(format) {
490
+ if (format === void 0) {
491
+ format = "YYYYMMDD000000";
492
+ }
493
+
494
+ var dateValues = [];
495
+ var fromDate = moment().subtract(1, 'years').startOf('year').format(format);
496
+ var toDate = moment().format(format);
497
+ dateValues.push(fromDate);
498
+ dateValues.push(toDate);
499
+ return dateValues;
500
+ };
501
+
502
+ var getPreviousQuarterDates = function getPreviousQuarterDates(format) {
503
+ if (format === void 0) {
504
+ format = "YYYYMMDD000000";
505
+ }
506
+
507
+ var dateValues = [];
508
+ var fromDate = moment().subtract(1, 'quarters').startOf('quarter').format(format);
509
+ var toDate = moment().subtract(1, 'quarters').endOf('quarter').format(format);
510
+ dateValues.push(fromDate);
511
+ dateValues.push(toDate);
512
+ return dateValues;
513
+ };
514
+
515
+ var getCurrentQuarterToDateDates = function getCurrentQuarterToDateDates(format) {
516
+ if (format === void 0) {
517
+ format = "YYYYMMDD000000";
518
+ }
519
+
520
+ var dateValues = [];
521
+ var fromDate = moment().startOf('quarter').format(format);
522
+ var toDate = moment().format(format);
523
+ dateValues.push(fromDate);
524
+ dateValues.push(toDate);
525
+ return dateValues;
526
+ };
527
+
528
+ var getPreviousQuarterToDateDates = function getPreviousQuarterToDateDates(format) {
529
+ if (format === void 0) {
530
+ format = "YYYYMMDD000000";
531
+ }
532
+
533
+ var dateValues = [];
534
+ var fromDate = moment().subtract(1, 'quarters').startOf('quarter').format(format);
535
+ var toDate = moment().format(format);
536
+ dateValues.push(fromDate);
537
+ dateValues.push(toDate);
538
+ return dateValues;
539
+ };
540
+
541
+ var getLast7DaysDates = function getLast7DaysDates(format) {
542
+ if (format === void 0) {
543
+ format = "YYYYMMDD000000";
544
+ }
545
+
546
+ var dateValues = [];
547
+ var fromDate = moment().subtract(6, 'days').format(format);
548
+ var toDate = moment().format(format);
549
+ dateValues.push(fromDate);
550
+ dateValues.push(toDate);
551
+ return dateValues;
552
+ };
553
+
554
+ var getLast30DaysDates = function getLast30DaysDates(format) {
555
+ if (format === void 0) {
556
+ format = "YYYYMMDD000000";
557
+ }
558
+
559
+ var dateValues = [];
560
+ var fromDate = moment().subtract(29, 'days').format(format);
561
+ var toDate = moment().format(format);
562
+ dateValues.push(fromDate);
563
+ dateValues.push(toDate);
564
+ return dateValues;
565
+ };
566
+
567
+ var getDateRangesByCode = function getDateRangesByCode(code) {
568
+ var result = {
569
+ fromDate: null,
570
+ toDate: null
571
+ };
572
+
573
+ if (!code) {
574
+ return {
575
+ fromDate: getTodayDates()[0],
576
+ toDate: getTodayDates()[1]
577
+ };
578
+ }
579
+
580
+ switch (code) {
581
+ case "Current_Year":
582
+ result.fromDate = getCurrentYearDates()[0];
583
+ result.toDate = getCurrentYearDates()[1];
584
+ break;
585
+
586
+ case "Previous_Year":
587
+ result.fromDate = getPreviousYearDates()[0];
588
+ result.toDate = getPreviousYearDates()[1];
589
+ break;
590
+
591
+ case "Current_Year_To_Date":
592
+ result.fromDate = getCurrentYearToDateDates()[0];
593
+ result.toDate = getCurrentYearToDateDates()[1];
594
+ break;
595
+
596
+ case "Previous_Year_To_Date":
597
+ result.fromDate = getPreviousYearToDateDates()[0];
598
+ result.toDate = getPreviousYearToDateDates()[1];
599
+ break;
600
+
601
+ case "Current_Quarter":
602
+ result.fromDate = getCurrentQuarterDates()[0];
603
+ result.toDate = getCurrentQuarterDates()[1];
604
+ break;
605
+
606
+ case "Previous_Quarter":
607
+ result.fromDate = getPreviousQuarterDates()[0];
608
+ result.toDate = getPreviousQuarterDates()[1];
609
+ break;
610
+
611
+ case "Current_Quarter_To_Date":
612
+ result.fromDate = getCurrentQuarterToDateDates()[0];
613
+ result.toDate = getCurrentQuarterToDateDates()[1];
614
+ break;
615
+
616
+ case "Previous_Quarter_To_Date":
617
+ result.fromDate = getPreviousQuarterToDateDates()[0];
618
+ result.toDate = getPreviousQuarterToDateDates()[1];
619
+ break;
620
+
621
+ case "Current_Month":
622
+ result.fromDate = getCurrentMonthDates()[0];
623
+ result.toDate = getCurrentMonthDates()[1];
624
+ break;
625
+
626
+ case "Previous_Month":
627
+ result.fromDate = getPreviousMonthDates()[0];
628
+ result.toDate = getPreviousMonthDates()[1];
629
+ break;
630
+
631
+ case "Current_Month_To_Date":
632
+ result.fromDate = getCurrentMonthToDateDates()[0];
633
+ result.toDate = getCurrentMonthToDateDates()[1];
634
+ break;
635
+
636
+ case "Previous_Month_To_Date":
637
+ result.fromDate = getPreviousMonthToDateDates()[0];
638
+ result.toDate = getPreviousMonthToDateDates()[1];
639
+ break;
640
+
641
+ case "Today":
642
+ result.fromDate = getTodayDates()[0];
643
+ result.toDate = getTodayDates()[1];
644
+ break;
645
+
646
+ case "Yesterday":
647
+ result.fromDate = getYesterdayDates()[0];
648
+ result.toDate = getYesterdayDates()[1];
649
+ break;
650
+
651
+ case "Tomorrow":
652
+ result.fromDate = getTomorrowDates()[0];
653
+ result.toDate = getTomorrowDates()[1];
654
+ break;
655
+
656
+ case "Last 7 Days":
657
+ result.fromDate = getLast7DaysDates()[0];
658
+ result.toDate = getLast7DaysDates()[1];
659
+ break;
660
+
661
+ case "Last 30 Days":
662
+ result.fromDate = getLast30DaysDates()[0];
663
+ result.toDate = getLast30DaysDates()[1];
664
+ break;
665
+
666
+ case "This Week":
667
+ result.fromDate = getCurrentWeekDates()[0];
668
+ result.toDate = getCurrentWeekDates()[1];
669
+ break;
670
+ }
671
+
672
+ return result;
673
+ };
674
+
256
675
  var isNullOrUndefined = function isNullOrUndefined(val) {
257
676
  return val == null || val == undefined;
258
677
  };
@@ -261,6 +680,39 @@ var isNullOrUndefinedOrEmpty = function isNullOrUndefinedOrEmpty(val) {
261
680
  return val == null || val == undefined || val == "";
262
681
  };
263
682
 
683
+ var getGlobalNumberFormatting = function getGlobalNumberFormatting() {
684
+ var numberFormatCode = Session.NumberFormatCode;
685
+ var numberSeparatorSettings = {
686
+ thousandsSeparator: ",",
687
+ decimalSeparator: "."
688
+ };
689
+ if (isNullOrUndefinedOrEmpty(numberFormatCode)) return numberSeparatorSettings;
690
+
691
+ switch (numberFormatCode) {
692
+ case "CD":
693
+ numberSeparatorSettings.thousandsSeparator = ",";
694
+ numberSeparatorSettings.decimalSeparator = ".";
695
+ break;
696
+
697
+ case "DC":
698
+ numberSeparatorSettings.thousandsSeparator = ".";
699
+ numberSeparatorSettings.decimalSeparator = ",";
700
+ break;
701
+
702
+ case "AD":
703
+ numberSeparatorSettings.thousandsSeparator = "'";
704
+ numberSeparatorSettings.decimalSeparator = ".";
705
+ break;
706
+
707
+ default:
708
+ numberSeparatorSettings.thousandsSeparator = ",";
709
+ numberSeparatorSettings.decimalSeparator = ".";
710
+ break;
711
+ }
712
+
713
+ return numberSeparatorSettings;
714
+ };
715
+
264
716
  var KpiChart = function KpiChart(props) {
265
717
  var _widget$current16;
266
718
 
@@ -312,6 +764,29 @@ var KpiChart = function KpiChart(props) {
312
764
  setIsKPICustomSizeNeeded(_isKPICustomResizeNeeded && !_isPreviewModeActive);
313
765
  };
314
766
 
767
+ var calculateWidgetKPISettingsDates = function calculateWidgetKPISettingsDates() {
768
+ var _updatedWidget = _extends({}, widget.current);
769
+
770
+ if (_updatedWidget && _updatedWidget.KPIComparisonSettings && _updatedWidget.KPIComparisonSettings.length) {
771
+ var kpiSettings = JSON.parse(_updatedWidget.KPIComparisonSettings);
772
+ var isKPISettingsActivated = !isNullOrUndefinedOrEmpty(kpiSettings.PeriodFieldId);
773
+
774
+ if (isKPISettingsActivated) {
775
+ var PeriodDateFilterDates = getDateRangesByCode(kpiSettings.PeriodDateFilter.DateTimeValueCode);
776
+ var ComparePeriodDateFilterDates = kpiSettings.ComparisonPeriodType == 'Manually' ? getDateRangesByCode(kpiSettings.ComparePeriodDateFilter.DateTimeValueCode) : getDateRangesByCode(null);
777
+ kpiSettings.PeriodDateFilter.FieldValue = PeriodDateFilterDates.fromDate;
778
+ kpiSettings.PeriodDateFilter.FieldValue2 = PeriodDateFilterDates.toDate;
779
+ kpiSettings.ComparePeriodDateFilter.FieldValue = ComparePeriodDateFilterDates.fromDate;
780
+ kpiSettings.ComparePeriodDateFilter.FieldValue2 = ComparePeriodDateFilterDates.toDate;
781
+ _updatedWidget.KPIComparisonSettings = JSON.stringify(kpiSettings);
782
+ }
783
+
784
+ return _updatedWidget;
785
+ }
786
+
787
+ return _updatedWidget;
788
+ };
789
+
315
790
  var RefreshData = function RefreshData() {
316
791
  if (Session.Tenant == 0) {
317
792
  var emptyData = {};
@@ -322,11 +797,8 @@ var KpiChart = function KpiChart(props) {
322
797
  }
323
798
 
324
799
  var dashboardAnalyticsService = new DashboardAnalyticsService();
325
-
326
- var postWidget = _extends({}, widget.current);
327
-
800
+ var postWidget = calculateWidgetKPISettingsDates();
328
801
  postWidget.onChange = undefined;
329
- postWidget.EntityId = !isNullOrUndefinedOrEmpty(postWidget.RelatedToEntityId) ? postWidget.RelatedToEntityId : postWidget.EntityId;
330
802
  dashboardAnalyticsService.getKpiData(postWidget).then(function (result) {
331
803
  setData(result.data);
332
804
  setIsLoading(false);
@@ -430,7 +902,7 @@ var KpiChart = function KpiChart(props) {
430
902
  fontSize: getKPIFormattingPropertyValue("ComparisonValueFontSize", "px")
431
903
  },
432
904
  className: "dl-kpi-prev-text"
433
- }, comparisonValue), (data === null || data === void 0 ? void 0 : data.ComparisonAbbreviationSymbol) && React__default.createElement("div", {
905
+ }, "" + comparisonValue + (isPercentageMeasureField() ? "%" : "")), (data === null || data === void 0 ? void 0 : data.ComparisonAbbreviationSymbol) && React__default.createElement("div", {
434
906
  style: {
435
907
  color: getKPIFormattingPropertyValue("ComparisonValueFontColor"),
436
908
  fontSize: getKPIFormattingPropertyValue("ComparisonValueFontSize", "px")
@@ -441,10 +913,14 @@ var KpiChart = function KpiChart(props) {
441
913
  color: getKPIFormattingPropertyValue("ComparisonValueFontColor"),
442
914
  fontSize: getKPIFormattingPropertyValue("ComparisonValueFontSize", "px")
443
915
  },
444
- className: "dl-kpi-unit"
916
+ className: "comparison-value-dl-kpi-unit"
445
917
  }, data === null || data === void 0 ? void 0 : data.Unit));
446
918
  }
447
919
 
920
+ var isPercentageMeasureField = function isPercentageMeasureField() {
921
+ return (widget === null || widget === void 0 ? void 0 : widget.current) && (widget === null || widget === void 0 ? void 0 : widget.current.WidgetMeasures) && (widget === null || widget === void 0 ? void 0 : widget.current.WidgetMeasures[0]) && (widget === null || widget === void 0 ? void 0 : widget.current.WidgetMeasures[0].MeasureFieldDataType) && (widget === null || widget === void 0 ? void 0 : widget.current.WidgetMeasures[0].MeasureFieldDataType) == 'Percentage';
922
+ };
923
+
448
924
  function getValueData() {
449
925
  if ((data === null || data === void 0 ? void 0 : data.Value) == null) return React__default.createElement("div", {
450
926
  className: "dl-kpi-no-data"
@@ -455,7 +931,7 @@ var KpiChart = function KpiChart(props) {
455
931
  fontSize: getKPIFormattingPropertyValue("MainValueFontSize", "px")
456
932
  },
457
933
  className: "dl-kpi-value dl-kpi-textTrimming"
458
- }, data === null || data === void 0 ? void 0 : data.Value);
934
+ }, "" + (data === null || data === void 0 ? void 0 : data.Value) + (isPercentageMeasureField() ? "%" : ""));
459
935
  }
460
936
 
461
937
  function getValueComponent() {
@@ -580,6 +1056,7 @@ var TableChart = function TableChart(props) {
580
1056
  setError = _useState3[1];
581
1057
 
582
1058
  var _useState4 = React.useState(),
1059
+ widget = _useState4[0],
583
1060
  setWidget = _useState4[1];
584
1061
 
585
1062
  var _useState5 = React.useState([]),
@@ -599,13 +1076,45 @@ var TableChart = function TableChart(props) {
599
1076
  setSortOrder = _useState8[1];
600
1077
 
601
1078
  var isDefaultSortOptionsUsed = React.useRef(false);
1079
+ var widgetRefData = React.useRef(null);
1080
+
1081
+ var _useState9 = React.useState(null),
1082
+ objectTableName = _useState9[0],
1083
+ setObjectTableName = _useState9[1];
1084
+
602
1085
  React.useEffect(function () {
1086
+ var _props$customChartPro;
1087
+
603
1088
  if (props.customChartProps && props.customChartProps.widget) {
604
1089
  setWidget(props.customChartProps.widget);
605
- getTableData(props.customChartProps.widget);
1090
+ widgetRefData.current = props.customChartProps.widget;
1091
+ getObjectTableName(props.customChartProps.widget);
606
1092
  }
1093
+
1094
+ (_props$customChartPro = props.customChartProps.dataBinding) === null || _props$customChartPro === void 0 ? void 0 : _props$customChartPro.widgetUpdated.subscribe(function (updatedWidget) {
1095
+ var _widgetRefData$curren;
1096
+
1097
+ if ((updatedWidget === null || updatedWidget === void 0 ? void 0 : updatedWidget.key) != ((_widgetRefData$curren = widgetRefData.current) === null || _widgetRefData$curren === void 0 ? void 0 : _widgetRefData$curren.key)) return;
1098
+ setWidget(_extends({}, updatedWidget));
1099
+ });
607
1100
  }, []);
608
1101
 
1102
+ var getObjectTableName = function getObjectTableName(widget) {
1103
+ var dashboardAnalyticsService = new DashboardAnalyticsService();
1104
+ dashboardAnalyticsService.getObjectTableNameByWidgetEntityId(widget === null || widget === void 0 ? void 0 : widget.EntityId).then(function (res) {
1105
+ if (res && res.data && res.data.ObjectTableName) {
1106
+ setObjectTableName(res.data.ObjectTableName);
1107
+ getTableData(widget);
1108
+ } else {
1109
+ setError("Erorr: No object table name match this widget entity id");
1110
+ setIsLoading(false);
1111
+ }
1112
+ })["catch"](function () {
1113
+ setError("Erorr: No object table name match this widget entity id");
1114
+ setIsLoading(false);
1115
+ });
1116
+ };
1117
+
609
1118
  var getTableData = function getTableData(widget) {
610
1119
  if (Session.Tenant == 0) {
611
1120
  setTableData([]);
@@ -617,7 +1126,6 @@ var TableChart = function TableChart(props) {
617
1126
  widget.onChange = undefined;
618
1127
  widget.PageIndex = 0;
619
1128
  widget.PageSize = 100;
620
- widget.EntityId = !isNullOrUndefinedOrEmpty(widget.RelatedToEntityId) ? widget.RelatedToEntityId : widget.EntityId;
621
1129
  dashboardAnalyticsService.getTableData(widget).then(function (res) {
622
1130
  if (res && res.data) {
623
1131
  fillTableData(res.data);
@@ -633,11 +1141,14 @@ var TableChart = function TableChart(props) {
633
1141
  };
634
1142
 
635
1143
  var getBooleanStringValue = function getBooleanStringValue(value) {
636
- if (isNullOrUndefined(value)) return "";
1144
+ if (isNullOrUndefined(value) || isNullOrUndefined(value.Label)) return "";
637
1145
 
638
- var _value = value + "";
1146
+ var _value = value.Label + "";
639
1147
 
640
- return _value.charAt(0).toUpperCase() + _value.slice(1);
1148
+ return {
1149
+ Label: _value.charAt(0).toUpperCase() + _value.slice(1),
1150
+ Value: _value.charAt(0).toUpperCase() + _value.slice(1)
1151
+ };
641
1152
  };
642
1153
 
643
1154
  var getDateTimeValue = function getDateTimeValue(value) {
@@ -667,7 +1178,7 @@ var TableChart = function TableChart(props) {
667
1178
 
668
1179
  var _value = valueType && valueType == "Boolean" ? getBooleanStringValue(item[key]) : item[key];
669
1180
 
670
- _tableRow[key] = isNullOrUndefined(_value) ? "" : _value;
1181
+ _tableRow[key] = isNullOrUndefined(_value) || isNullOrUndefined(_value.Value) && isNullOrUndefined(_value.Label) ? "" : _value;
671
1182
  });
672
1183
  tableRecords.push(_tableRow);
673
1184
  });
@@ -716,7 +1227,8 @@ var TableChart = function TableChart(props) {
716
1227
  return field ? field.Id : null;
717
1228
  };
718
1229
 
719
- var sortTableData = function sortTableData(sortedField) {
1230
+ var sortTableData = function sortTableData(sortedField, isCalculatedColumn) {
1231
+ if (!canSort()) return;
720
1232
  setSortField(sortedField);
721
1233
 
722
1234
  var _sortOrder = sortOrder == 1 ? -1 : sortOrder == -1 ? 1 : 1;
@@ -729,7 +1241,7 @@ var TableChart = function TableChart(props) {
729
1241
  _widget.PageSize = 100;
730
1242
  _widget.ScreenSortBy = getSortFieldIdBySortFieldCode(sortedField);
731
1243
  _widget.ScreenSortDirection = _sortOrder == 1 ? 'asc' : _sortOrder == -1 ? 'desc' : null;
732
- _widget.EntityId = !isNullOrUndefinedOrEmpty(_widget.RelatedToEntityId) ? _widget.RelatedToEntityId : _widget.EntityId;
1244
+ _widget.ScreenSortByType = isNullOrUndefinedOrEmpty(isCalculatedColumn) ? "Field" : isCalculatedColumn ? "CalculatedColumn" : "Field";
733
1245
  setIsTableLoading(true);
734
1246
  dashboardAnalyticsService.getTableData(_widget).then(function (res) {
735
1247
  if (res && res.data) {
@@ -753,45 +1265,172 @@ var TableChart = function TableChart(props) {
753
1265
  return false;
754
1266
  };
755
1267
 
1268
+ var getTableFormattingData = function getTableFormattingData() {
1269
+ return widget && isNullOrUndefinedOrEmpty(widget.TableFormatSettings) ? {} : JSON.parse(widget === null || widget === void 0 ? void 0 : widget.TableFormatSettings);
1270
+ };
1271
+
1272
+ var getTableFormattingPropertyValue = function getTableFormattingPropertyValue(propertyName, unit) {
1273
+ if (unit === void 0) {
1274
+ unit = "";
1275
+ }
1276
+
1277
+ var tableFormattingData = getTableFormattingData();
1278
+ return tableFormattingData && tableFormattingData[propertyName] ? tableFormattingData[propertyName] + unit : undefined;
1279
+ };
1280
+
1281
+ var getTableConditionalRulesData = function getTableConditionalRulesData() {
1282
+ return widget && isNullOrUndefinedOrEmpty(widget.TableConditionalRules) ? [] : JSON.parse(widget === null || widget === void 0 ? void 0 : widget.TableConditionalRules);
1283
+ };
1284
+
1285
+ var isValueEmpty = function isValueEmpty(val) {
1286
+ return val === null || val === undefined || val === "";
1287
+ };
1288
+
1289
+ var IsValidRule = function IsValidRule(rule, value) {
1290
+ var operator = rule && rule.RuleOperator ? rule.RuleOperator.Code : null;
1291
+ if (!operator) return null;
1292
+ var ruleValue1 = rule.RuleValue1;
1293
+ var ruleValue2 = rule.RuleValue2;
1294
+
1295
+ switch (operator) {
1296
+ case "Equal":
1297
+ return ruleValue1 == value;
1298
+
1299
+ case "NotEqual":
1300
+ return ruleValue1 != value;
1301
+
1302
+ case "Between":
1303
+ return !isValueEmpty(ruleValue1) && !isValueEmpty(ruleValue2) && ruleValue1 <= value && value <= ruleValue2;
1304
+
1305
+ case "GreaterThan":
1306
+ return !isValueEmpty(ruleValue1) && value > ruleValue1;
1307
+
1308
+ case "GreaterThanOrEqual":
1309
+ return !isValueEmpty(ruleValue1) && value >= ruleValue1;
1310
+
1311
+ case "LessThan":
1312
+ return !isValueEmpty(ruleValue1) && value < ruleValue1;
1313
+
1314
+ case "LessThanOrEqual":
1315
+ return !isValueEmpty(ruleValue1) && value <= ruleValue1;
1316
+
1317
+ case "IsEmpty":
1318
+ return isValueEmpty(value);
1319
+
1320
+ case "IsNotEmpty":
1321
+ return !isValueEmpty(value);
1322
+
1323
+ default:
1324
+ return null;
1325
+ }
1326
+ };
1327
+
1328
+ var getCellPropertyByRule = function getCellPropertyByRule(column, cellValue, propertyName, defaultValue) {
1329
+ if (defaultValue === void 0) {
1330
+ defaultValue = null;
1331
+ }
1332
+
1333
+ var tableFormattingData = getTableConditionalRulesData();
1334
+ var columnType = column.IsCalculatedColumn ? "CalculatedColumn" : "Field";
1335
+ var columnData = tableFormattingData.find(function (el) {
1336
+ return el.FieldId == column.Id && el.FieldType == columnType;
1337
+ });
1338
+
1339
+ if (!columnData || !columnData.FieldRules || columnData.FieldRules.length == 0) {
1340
+ return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined;
1341
+ }
1342
+ var firstValidRule = columnData.FieldRules.find(function (rule) {
1343
+ return IsValidRule(rule, cellValue);
1344
+ });
1345
+
1346
+ if (!firstValidRule) {
1347
+ return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined;
1348
+ }
1349
+
1350
+ return !isNullOrUndefinedOrEmpty(firstValidRule[propertyName]) ? firstValidRule[propertyName] : defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined;
1351
+ };
1352
+
1353
+ var getCellFloatAlignment = function getCellFloatAlignment(column) {
1354
+ if (column.DataTypeCode == 'Decimal' || column.DataTypeCode == 'Percentage' || column.DataTypeCode == 'Integer' || column.DataTypeCode == 'Double' || column.DataTypeCode == 'SigDouble') {
1355
+ return "right";
1356
+ }
1357
+
1358
+ return "unset";
1359
+ };
1360
+
1361
+ var isClickableCell = function isClickableCell(fieldCode) {
1362
+ return fieldCode == "ShipmentNumber" && objectTableName == "Shipment" || fieldCode == "InvoiceNumber" && objectTableName == "APInvoice" || fieldCode == "InvoiceNumber" && objectTableName == "ARInvoice" || fieldCode == "ContainerNumber" && objectTableName == "Container" || fieldCode == "QuoteNumber" && objectTableName == "Quote" || fieldCode == "Subject" && objectTableName == "Opportunity" || fieldCode == "EnglishName" && objectTableName == "Customer";
1363
+ };
1364
+
1365
+ var tableCellClicked = function tableCellClicked(data, fieldCode) {
1366
+ if (!data || !data.Id || !data.Id.Label || !isClickableCell(fieldCode) || props.customChartProps.isInEditMode) return;
1367
+ props.customChartProps.onSelectDataPoint({
1368
+ ObjectTableName: objectTableName,
1369
+ TableRowEntityId: data.Id.Label
1370
+ });
1371
+ };
1372
+
756
1373
  var cellTemplateBody = function cellTemplateBody(data, column) {
1374
+ var _data$column$FieldCod, _data$column$FieldCod2, _data$column$FieldCod3, _data$column$FieldCod4, _data$column$FieldCod5, _data$column$FieldCod6, _data$column$FieldCod7;
1375
+
757
1376
  if (!column || !column.FieldCode) return "";
758
- return column.DataTypeCode == "DateTime" || column.DataTypeCode == "Date" ? getDateTimeValue(data[column.FieldCode]) : data[column.FieldCode];
1377
+ return column.DataTypeCode == "DateTime" || column.DataTypeCode == "Date" ? React__default.createElement("span", {
1378
+ title: getDateTimeValue((_data$column$FieldCod = data[column.FieldCode]) === null || _data$column$FieldCod === void 0 ? void 0 : _data$column$FieldCod.Label),
1379
+ className: "table-cell",
1380
+ style: {
1381
+ color: getTableFormattingPropertyValue("TableCellFontColor"),
1382
+ fontSize: getTableFormattingPropertyValue("TableCellFontSize", "px")
1383
+ }
1384
+ }, getDateTimeValue((_data$column$FieldCod2 = data[column.FieldCode]) === null || _data$column$FieldCod2 === void 0 ? void 0 : _data$column$FieldCod2.Label)) : React__default.createElement("span", {
1385
+ onClick: function onClick() {
1386
+ return tableCellClicked(data, column.FieldCode);
1387
+ },
1388
+ title: (_data$column$FieldCod3 = data[column.FieldCode]) === null || _data$column$FieldCod3 === void 0 ? void 0 : _data$column$FieldCod3.Label,
1389
+ className: "table-cell " + (isClickableCell(column.FieldCode) ? 'table-link-cell' : ''),
1390
+ style: {
1391
+ color: getTableFormattingPropertyValue("TableCellFontColor"),
1392
+ backgroundColor: getCellPropertyByRule(column, (_data$column$FieldCod4 = data[column.FieldCode]) === null || _data$column$FieldCod4 === void 0 ? void 0 : _data$column$FieldCod4.Value, 'RuleBackgroundColor'),
1393
+ fontSize: getTableFormattingPropertyValue("TableCellFontSize", "px"),
1394
+ "float": getCellFloatAlignment(column)
1395
+ }
1396
+ }, column.DataTypeCode == "Percentage" ? (_data$column$FieldCod5 = data[column.FieldCode]) !== null && _data$column$FieldCod5 !== void 0 && _data$column$FieldCod5.Label ? ((_data$column$FieldCod6 = data[column.FieldCode]) === null || _data$column$FieldCod6 === void 0 ? void 0 : _data$column$FieldCod6.Label) + "%" : 0 + '%' : (_data$column$FieldCod7 = data[column.FieldCode]) === null || _data$column$FieldCod7 === void 0 ? void 0 : _data$column$FieldCod7.Label);
759
1397
  };
760
1398
 
761
1399
  var headerTemplate = function headerTemplate(column) {
762
- var sortClassIcon = "";
763
1400
 
764
1401
  if (sortField != column.FieldCode) {
765
1402
  return React__default.createElement("div", {
1403
+ style: {
1404
+ backgroundColor: getTableFormattingPropertyValue("TableHeaderBackgroundColor")
1405
+ },
766
1406
  onClick: function onClick() {
767
- return sortTableData(column.FieldCode);
1407
+ return sortTableData(column.FieldCode, column.IsCalculatedColumn);
768
1408
  },
769
1409
  className: "header-content"
770
1410
  }, React__default.createElement("span", {
1411
+ style: {
1412
+ color: getTableFormattingPropertyValue("TableHeaderFontColor"),
1413
+ fontSize: getTableFormattingPropertyValue("TableHeaderFontSize", "px")
1414
+ },
771
1415
  className: "p-column-title"
772
- }, column.DisplayName), canSort() && React__default.createElement("span", {
773
- className: "p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt"
774
- }));
775
- }
776
-
777
- if (sortOrder == 1) {
778
- sortClassIcon = "p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-up-alt";
779
- } else if (sortOrder == -1) {
780
- sortClassIcon = "p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-down";
781
- } else {
782
- sortClassIcon = "p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt";
1416
+ }, column.DisplayName));
783
1417
  }
784
1418
 
785
1419
  return React__default.createElement("div", {
1420
+ style: {
1421
+ backgroundColor: getTableFormattingPropertyValue("TableHeaderBackgroundColor")
1422
+ },
786
1423
  onClick: function onClick() {
787
- return sortTableData(column.FieldCode);
1424
+ return sortTableData(column.FieldCode, column.IsCalculatedColumn);
788
1425
  },
789
1426
  className: "header-content"
790
1427
  }, React__default.createElement("span", {
1428
+ style: {
1429
+ color: getTableFormattingPropertyValue("TableHeaderFontColor"),
1430
+ fontSize: getTableFormattingPropertyValue("TableHeaderFontSize", "px")
1431
+ },
791
1432
  className: "p-column-title"
792
- }, column.DisplayName), canSort() && React__default.createElement("span", {
793
- className: sortClassIcon
794
- }));
1433
+ }, column.DisplayName));
795
1434
  };
796
1435
 
797
1436
  return isLoading ? React__default.createElement("div", {
@@ -829,120 +1468,38 @@ var TableChart = function TableChart(props) {
829
1468
  }
830
1469
  });
831
1470
  }));
832
- };
833
-
834
- var CustomChart = function CustomChart(props) {
835
- var _props$widget2, _props$widget3, _props$widget4;
836
-
837
- var project = function project() {
838
- var _props$widget;
839
-
840
- switch ((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.TypeCode) {
841
- case "kpi":
842
- return React__default.createElement(KpiChart, {
843
- customChartProps: props
844
- });
845
-
846
- case "table":
847
- return React__default.createElement(TableChart, {
848
- customChartProps: props
849
- });
850
-
851
- default:
852
- return React__default.createElement("div", null, "Invalid Type");
853
- }
854
- };
855
-
856
- var drilldownToTableData = function drilldownToTableData() {
857
- props.onSelectDataPoint({
858
- GroupById: undefined,
859
- MeasureFieldId: undefined,
860
- MeasureCode: undefined,
861
- Formula: undefined,
862
- Widget: props.widget,
863
- GroupByIdSec: undefined
864
- });
865
- };
866
-
867
- 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", {
868
- className: "table-hint-container"
869
- }, React__default.createElement("div", {
870
- className: "table-rows-number-indicator"
871
- }, "Showing the first 100 rows"), !props.isInEditMode && !props.isPreviewModeActive && React__default.createElement("div", {
872
- onClick: drilldownToTableData,
873
- className: "show-more-records"
874
- }, "( Show More Records )")), React__default.createElement("div", {
875
- 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"
876
- }, project()));
877
- };
878
-
879
- var DateGroupCodes = {
880
- Full_Date: 'Full Date',
881
- Month: 'Month',
882
- Quarter: 'Quarter',
883
- Year: 'Year',
884
- Month_Year: 'Month & Year',
885
- Quarter_Year: 'Quarter & Year'
886
- };
887
-
888
- var getDateFormat = function getDateFormat(label, _format) {
889
- if (!label) return label;
890
-
891
- var _date = moment(label);
892
-
893
- if (!_date || !_date.isValid()) return label;
894
- return _date.format(_format);
895
- };
896
-
897
- var getQuarterYearFormat = function getQuarterYearFormat(label) {
898
- if (!label) return label;
899
-
900
- if (label.includes("/")) {
901
- var result = label.split("/");
902
- var quarterVal = result && result[1] ? result[1] : "";
903
- var yearVal = result && result[0] ? result[0] : "";
904
- return quarterVal + " " + yearVal;
905
- }
906
-
907
- return label;
908
- };
909
-
910
- var getLabelFormatByDateGroupType = function getLabelFormatByDateGroupType(label, widget, isSecondGrouping) {
911
- if (isSecondGrouping === void 0) {
912
- isSecondGrouping = false;
913
- }
914
-
915
- if (!widget) return label;
916
- var groupFieldDataType = isSecondGrouping ? widget.SecondaryDateGroupCode : widget.DateGroupCode;
917
- if (!groupFieldDataType) return label;
918
-
919
- switch (groupFieldDataType) {
920
- case DateGroupCodes.Full_Date:
921
- return getDateFormat(label, "DD MMM YYYY");
1471
+ };
922
1472
 
923
- case DateGroupCodes.Month:
924
- return getDateFormat(label, "MMM");
1473
+ var CustomChart = function CustomChart(props) {
1474
+ var _props$widget2;
925
1475
 
926
- case DateGroupCodes.Quarter:
927
- return label;
1476
+ var project = function project() {
1477
+ var _props$widget;
928
1478
 
929
- case DateGroupCodes.Year:
930
- return getDateFormat(label, "YYYY");
1479
+ switch ((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.TypeCode) {
1480
+ case "kpi":
1481
+ return React__default.createElement(KpiChart, {
1482
+ customChartProps: props
1483
+ });
931
1484
 
932
- case DateGroupCodes.Month_Year:
933
- return getDateFormat(label, "MMM YYYY");
1485
+ case "table":
1486
+ return React__default.createElement(TableChart, {
1487
+ customChartProps: props
1488
+ });
934
1489
 
935
- case DateGroupCodes.Quarter_Year:
936
- return getQuarterYearFormat(label);
1490
+ default:
1491
+ return React__default.createElement("div", null, "Invalid Type");
1492
+ }
1493
+ };
937
1494
 
938
- default:
939
- return label;
940
- }
1495
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
1496
+ 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"
1497
+ }, project()));
941
1498
  };
942
1499
 
943
1500
  function buildToolTip(widget, value, seriesName, label, index) {
944
1501
  var padding = widget.TypeCode == 'line' && index > 0 ? 'padding-top: 3px' : '';
945
- 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 ";
1502
+ 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, seriesName) + "</p>\n " + getTooltipPercentage(widget) + " </div>\n </div>\n ";
946
1503
  }
947
1504
 
948
1505
  function getTooltipPercentage(widget) {
@@ -956,8 +1513,30 @@ function getTooltiplabel(value, seriesMeasure) {
956
1513
  return '$label';
957
1514
  }
958
1515
 
959
- function getTooltipValue(value) {
960
- if (value) return value;
1516
+ var getFormattedValue = function getFormattedValue(value) {
1517
+ if (isNaN(value)) return value;
1518
+
1519
+ var _numberSeparatorSettings = getGlobalNumberFormatting();
1520
+
1521
+ var _val = value.toLocaleString('en-US');
1522
+
1523
+ if (_val) {
1524
+ var _formattedValue = _val.replaceAll(",", "*");
1525
+
1526
+ _formattedValue = _formattedValue.replaceAll(".", "-");
1527
+ _formattedValue = _formattedValue.replaceAll("*", _numberSeparatorSettings.thousandsSeparator);
1528
+ _formattedValue = _formattedValue.replaceAll("-", _numberSeparatorSettings.decimalSeparator);
1529
+ return _formattedValue;
1530
+ }
1531
+
1532
+ return value;
1533
+ };
1534
+
1535
+ function getTooltipValue(value, seriesMeasure) {
1536
+ if (!isNullOrUndefined(value)) {
1537
+ return seriesMeasure && seriesMeasure.MeasureFieldDataType == 'Percentage' ? getFormattedValue(value) + "%" : getFormattedValue(value);
1538
+ }
1539
+
961
1540
  return '$dataValue';
962
1541
  }
963
1542
 
@@ -1223,6 +1802,42 @@ function BuildFusionChartObject(seriesMeasures, widget) {
1223
1802
  }
1224
1803
  }
1225
1804
 
1805
+ var getWidgetRanges = function getWidgetRanges(widget, value) {
1806
+ var gaugeRanges = widget.GaugeRanges && widget.GaugeRanges.length > 0 ? JSON.parse(widget.GaugeRanges) : null;
1807
+ if (gaugeRanges == null || isNullOrUndefinedOrEmpty(value)) return [];
1808
+
1809
+ if (value < gaugeRanges[0].minValue) {
1810
+ gaugeRanges[0].minValue = value;
1811
+ }
1812
+
1813
+ if (value > gaugeRanges[2].maxValue) {
1814
+ gaugeRanges[2].maxValue = value;
1815
+ }
1816
+
1817
+ return gaugeRanges;
1818
+ };
1819
+
1820
+ var getGaugeObject = function getGaugeObject(data, widget) {
1821
+ var fusionObject = getDefaultChartobject();
1822
+ fusionObject.type = 'angulargauge';
1823
+ var chartInfo = getDefaultChartInfo(widget);
1824
+ chartInfo.manageResize = "1";
1825
+ chartInfo.valueBelowPivot = "1";
1826
+ chartInfo.showValue = "1";
1827
+ fusionObject.dataSource = {
1828
+ "chart": chartInfo,
1829
+ "colorRange": {
1830
+ "color": getWidgetRanges(widget, !isNullOrUndefined(data) && !isNullOrUndefined(data === null || data === void 0 ? void 0 : data.Value) ? data === null || data === void 0 ? void 0 : data.Value : 0)
1831
+ },
1832
+ "dials": {
1833
+ "dial": [{
1834
+ "value": !isNullOrUndefined(data) && !isNullOrUndefined(data === null || data === void 0 ? void 0 : data.Value) ? data === null || data === void 0 ? void 0 : data.Value : 0
1835
+ }]
1836
+ }
1837
+ };
1838
+ return fusionObject;
1839
+ };
1840
+
1226
1841
  function getBarObject(seriesMeasures, widget) {
1227
1842
  var chart = getDefaultChartobject();
1228
1843
  chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? "msbar2d" : "scrollbar2d";
@@ -1359,9 +1974,17 @@ var isGroupByFieldDateTime = function isGroupByFieldDateTime(GroupByFieldDataTyp
1359
1974
  return GroupByFieldDataType == "DateTime" || GroupByFieldDataType == "Date";
1360
1975
  };
1361
1976
 
1977
+ var isFirstMeasureTypePercentage = function isFirstMeasureTypePercentage(widget) {
1978
+ return widget && widget.WidgetMeasures && widget.WidgetMeasures[0] && widget.WidgetMeasures[0].MeasureFieldDataType && widget.WidgetMeasures[0].MeasureFieldDataType == 'Percentage';
1979
+ };
1980
+
1981
+ var isSecondMeasureTypePercentage = function isSecondMeasureTypePercentage(widget) {
1982
+ return widget && widget.WidgetMeasures && widget.WidgetMeasures[1] && widget.WidgetMeasures[1].MeasureFieldDataType && widget.WidgetMeasures[1].MeasureFieldDataType == 'Percentage';
1983
+ };
1984
+
1362
1985
  function getColumnObject(seriesMeasures, widget) {
1363
1986
  var chart = getDefaultChartobject();
1364
- chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? "mscombi2D" : "scrollcombidy2d";
1987
+ chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? "mscombidy2d" : "scrollcombidy2d";
1365
1988
  var chartInfo = getDefaultChartInfo(widget);
1366
1989
  chartInfo.scrollPadding = "8";
1367
1990
  chartInfo.flatScrollBars = "1";
@@ -1445,7 +2068,13 @@ function getDefaultChartInfo(widget) {
1445
2068
  chart.minAngleForValue = "27";
1446
2069
  }
1447
2070
 
1448
- chart.palettecolors = "#369CFB,#4AC76F,#F6CF33,#32C7C7,#935BE0,#FAAD14,#EE5F77,#5D62B5, #29C3BE, #F2726F, #FFC533, #62B58F, #BC95DF, #67CDF2";
2071
+ chart.numberSuffix = isFirstMeasureTypePercentage(widget) ? "%" : null;
2072
+
2073
+ var _numberSeparatorSettings = getGlobalNumberFormatting();
2074
+
2075
+ chart.thousandSeparator = _numberSeparatorSettings.thousandsSeparator;
2076
+ chart.decimalSeparator = _numberSeparatorSettings.decimalSeparator;
2077
+ chart.palettecolors = "#369CFB, #FCAF16, #EE5F77, #4AC76F, #935BE0, #FAD337, #32C7C7, #EB67D0, #3C9957, #FF7D4B, #78A6FF, #35838F, #BAA9F3, #C1DA72, #F0AEAD, #246EAB";
1449
2078
  chart.enableSlicing = "0";
1450
2079
  chart.enableRotation = "0";
1451
2080
  chart.chartTopMargin = "10";
@@ -1458,6 +2087,7 @@ function getDefaultChartInfo(widget) {
1458
2087
  chart.scrollHeight = "6";
1459
2088
  chart.scrollWidth = "6";
1460
2089
  chart.plotColorinTooltip = "0";
2090
+ chart.formatNumberScale = "0";
1461
2091
  return chart;
1462
2092
  }
1463
2093
 
@@ -1515,6 +2145,7 @@ function setDualyAxis(chartInfo, widget, seriesMeasures) {
1515
2145
  chartInfo.showDivLineSecondaryValue = "1";
1516
2146
  chartInfo.pYAxisNameBorderPadding = 0;
1517
2147
  chartInfo.sYAxisNameBorderPadding = 0;
2148
+ chartInfo.sNumberSuffix = isSecondMeasureTypePercentage(widget) ? "%" : null;
1518
2149
  var textLength = Math.max(seriesMeasures[0].Name.length, seriesMeasures[1].Name.length);
1519
2150
  chartInfo.pYAxisName = getTitle((_seriesMeasures$ = seriesMeasures[0]) === null || _seriesMeasures$ === void 0 ? void 0 : _seriesMeasures$.Name, textLength);
1520
2151
  chartInfo.sYAxisname = getTitle((_seriesMeasures$2 = seriesMeasures[1]) === null || _seriesMeasures$2 === void 0 ? void 0 : _seriesMeasures$2.Name, textLength);
@@ -1590,26 +2221,28 @@ var FusionChartHelper = /*#__PURE__*/function () {
1590
2221
 
1591
2222
  var plotColorsDictionary = {
1592
2223
  plotColor0: "#369CFB",
1593
- plotColor1: "#4AC76F",
1594
- plotColor2: "#F6CF33",
1595
- plotColor3: "#32C7C7",
2224
+ plotColor1: "#FCAF16",
2225
+ plotColor2: "#EE5F77",
2226
+ plotColor3: "#4AC76F",
1596
2227
  plotColor4: "#935BE0",
1597
- plotColor5: "#FAAD14",
1598
- plotColor6: "#EE5F77",
1599
- plotColor7: "#5D62B5",
1600
- plotColor8: "#29C3BE",
1601
- plotColor9: "#F2726F",
1602
- plotColor10: "#FFC533",
1603
- plotColor11: "#62B58F",
1604
- plotColor12: "#BC95DF",
1605
- plotColor13: "#67CDF2"
2228
+ plotColor5: "#FAD337",
2229
+ plotColor6: "#32C7C7",
2230
+ plotColor7: "#EB67D0",
2231
+ plotColor8: "#3C9957",
2232
+ plotColor9: "#FF7D4B",
2233
+ plotColor10: "#78A6FF",
2234
+ plotColor11: "#35838F",
2235
+ plotColor12: "#BAA9F3",
2236
+ plotColor13: "#C1DA72",
2237
+ plotColor14: "#F0AEAD",
2238
+ plotColor15: "#246EAB"
1606
2239
  };
1607
2240
 
1608
2241
  var getPlotColorByIndexOrder = function getPlotColorByIndexOrder(index) {
1609
2242
  var _index = index;
1610
2243
 
1611
- if (_index >= 14) {
1612
- _index = _index % 14;
2244
+ if (_index >= 16) {
2245
+ _index = _index % 16;
1613
2246
  }
1614
2247
 
1615
2248
  switch (_index) {
@@ -1655,6 +2288,12 @@ var getPlotColorByIndexOrder = function getPlotColorByIndexOrder(index) {
1655
2288
  case 13:
1656
2289
  return plotColorsDictionary.plotColor13;
1657
2290
 
2291
+ case 14:
2292
+ return plotColorsDictionary.plotColor14;
2293
+
2294
+ case 15:
2295
+ return plotColorsDictionary.plotColor15;
2296
+
1658
2297
  default:
1659
2298
  return "#0566c2";
1660
2299
  }
@@ -1791,7 +2430,6 @@ var FusionChart = React.forwardRef(function (props, comRef) {
1791
2430
  signal = updatedAxiosController === null || updatedAxiosController === void 0 ? void 0 : updatedAxiosController.signal;
1792
2431
  }
1793
2432
 
1794
- postWidget.EntityId = !isNullOrUndefinedOrEmpty(postWidget.RelatedToEntityId) ? postWidget.RelatedToEntityId : postWidget.EntityId;
1795
2433
  dashboardAnalyticsService.getData(postWidget, signal).then(function (result) {
1796
2434
  handleData(result === null || result === void 0 ? void 0 : result.data);
1797
2435
  chartData.current = result === null || result === void 0 ? void 0 : result.data;
@@ -1850,28 +2488,28 @@ var FusionChart = React.forwardRef(function (props, comRef) {
1850
2488
  setFchart(chart);
1851
2489
  };
1852
2490
 
1853
- var handlePieDonutChartTooltip = function handlePieDonutChartTooltip(chartData) {
1854
- if (chartData && chartData.data && chartData.data.length) {
1855
- chartData.data.forEach(function (item, index) {
2491
+ var handlePieDonutChartTooltip = function handlePieDonutChartTooltip(chartDataSource) {
2492
+ if (chartDataSource && chartDataSource.data && chartDataSource.data.length) {
2493
+ chartDataSource.data.forEach(function (item, index) {
1856
2494
  var color = getPlotColorByIndexOrder(index);
1857
2495
  item.tooltext = item.tooltext.replaceAll("transparent", color);
1858
2496
  });
1859
2497
  setArgs(_extends({}, args, {
1860
- dataSource: chartData
2498
+ dataSource: chartDataSource
1861
2499
  }));
1862
2500
  }
1863
2501
  };
1864
2502
 
1865
- var handleOtherChartsTooltip = function handleOtherChartsTooltip(chartData) {
1866
- if (chartData && chartData.dataset && chartData.dataset.length) {
1867
- chartData.dataset.forEach(function (el, index) {
2503
+ var handleOtherChartsTooltip = function handleOtherChartsTooltip(chartDataSource) {
2504
+ if (chartDataSource && chartDataSource.dataset && chartDataSource.dataset.length) {
2505
+ chartDataSource.dataset.forEach(function (el, index) {
1868
2506
  el.data.forEach(function (item) {
1869
2507
  var color = getPlotColorByIndexOrder(index);
1870
2508
  item.tooltext = item.tooltext.replaceAll("transparent", color);
1871
2509
  });
1872
2510
  });
1873
2511
  setArgs(_extends({}, args, {
1874
- dataSource: chartData
2512
+ dataSource: chartDataSource
1875
2513
  }));
1876
2514
  }
1877
2515
  };
@@ -1880,13 +2518,13 @@ var FusionChart = React.forwardRef(function (props, comRef) {
1880
2518
  var _widget$current6, _widget$current7;
1881
2519
 
1882
2520
  if (isDummyChangesActive && isDummyChangesActive.current) return;
1883
- var chartData = event.sender.args && event.sender.args.dataSource ? event.sender.args.dataSource : null;
2521
+ var chartDataSource = event.sender.args && event.sender.args.dataSource ? event.sender.args.dataSource : null;
1884
2522
  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';
1885
2523
 
1886
2524
  if (isPieOrDonutChart) {
1887
- handlePieDonutChartTooltip(chartData);
2525
+ handlePieDonutChartTooltip(chartDataSource);
1888
2526
  } else {
1889
- handleOtherChartsTooltip(chartData);
2527
+ handleOtherChartsTooltip(chartDataSource);
1890
2528
  }
1891
2529
  };
1892
2530
 
@@ -2016,8 +2654,177 @@ function SvgCopyIcon(props) {
2016
2654
  })));
2017
2655
  }
2018
2656
 
2657
+ ReactFC.fcRoot(FusionCharts, Charts$1, FusionTheme);
2658
+ FusionCharts.options['license']({
2659
+ key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',
2660
+ creditLabel: false
2661
+ });
2662
+ var FusionChart$1 = React.forwardRef(function (props, comRef) {
2663
+ var _useState = React.useState(false),
2664
+ dataLoaded = _useState[0],
2665
+ setDataLoaded = _useState[1];
2666
+
2667
+ var _useState2 = React.useState(),
2668
+ error = _useState2[0],
2669
+ setError = _useState2[1];
2670
+
2671
+ var _useState3 = React.useState(uuid.v4()),
2672
+ fusionKey = _useState3[0],
2673
+ setFusionKey = _useState3[1];
2674
+
2675
+ var chartData = React.useRef(null);
2676
+
2677
+ var _useState4 = React.useState(null),
2678
+ resizeTimer = _useState4[0],
2679
+ setResizeTimer = _useState4[1];
2680
+
2681
+ var axiosController = React.useRef(new AbortController());
2682
+ var widget = React.useRef();
2683
+
2684
+ var _useState5 = React.useState({}),
2685
+ args = _useState5[0],
2686
+ setArgs = _useState5[1];
2687
+
2688
+ var _useState6 = React.useState(uuid.v4()),
2689
+ chartContainerId = _useState6[0];
2690
+
2691
+ var progressRef = React.useRef(null);
2692
+ var fusionRef = React.useRef(null);
2693
+ var isDummyChangesActive = React.useRef(false);
2694
+ React.useEffect(function () {
2695
+ var _props$dataBinding;
2696
+
2697
+ axiosController.current = new AbortController();
2698
+ widget.current = props.widget;
2699
+ getChartData();
2700
+ (_props$dataBinding = props.dataBinding) === null || _props$dataBinding === void 0 ? void 0 : _props$dataBinding.widgetUpdated.subscribe(function (updatedWidget) {
2701
+ var _widget$current;
2702
+
2703
+ if ((updatedWidget === null || updatedWidget === void 0 ? void 0 : updatedWidget.key) != ((_widget$current = widget.current) === null || _widget$current === void 0 ? void 0 : _widget$current.key)) return;
2704
+ widget.current = _extends({}, updatedWidget);
2705
+
2706
+ if (chartData && chartData.current) {
2707
+ var _data = JSON.parse(JSON.stringify(chartData.current));
2708
+
2709
+ isDummyChangesActive.current = true;
2710
+ handleData(_data, true);
2711
+ }
2712
+ });
2713
+ window.addEventListener("resize", handleResize);
2714
+ return function () {
2715
+ var _axiosController$curr;
2716
+
2717
+ window.removeEventListener("resize", handleResize);
2718
+ setDataLoaded(false);
2719
+
2720
+ if (axiosController && axiosController !== null && axiosController !== void 0 && (_axiosController$curr = axiosController.current) !== null && _axiosController$curr !== void 0 && _axiosController$curr.abort) {
2721
+ var _axiosController$curr2;
2722
+
2723
+ axiosController === null || axiosController === void 0 ? void 0 : (_axiosController$curr2 = axiosController.current) === null || _axiosController$curr2 === void 0 ? void 0 : _axiosController$curr2.abort();
2724
+ }
2725
+ };
2726
+ }, []);
2727
+
2728
+ var handleResize = function handleResize() {
2729
+ clearTimeout(resizeTimer);
2730
+ setResizeTimer(setTimeout(function () {
2731
+ setFusionKey(uuid.v4());
2732
+ }, 200));
2733
+ };
2734
+
2735
+ React.useImperativeHandle(comRef, function () {
2736
+ return {
2737
+ onResizeFinish: function onResizeFinish() {
2738
+ setFusionKey(uuid.v4());
2739
+ }
2740
+ };
2741
+ });
2742
+
2743
+ var getChartData = function getChartData() {
2744
+ if (Session.Tenant == 0) {
2745
+ handleData(null);
2746
+ return;
2747
+ }
2748
+
2749
+ var dashboardAnalyticsService = new DashboardAnalyticsService();
2750
+
2751
+ var postWidget = _extends({}, widget.current);
2752
+
2753
+ postWidget.onChange = undefined;
2754
+ var signal = undefined;
2755
+
2756
+ if (axiosController) {
2757
+ var _axiosController$curr3;
2758
+
2759
+ axiosController === null || axiosController === void 0 ? void 0 : (_axiosController$curr3 = axiosController.current) === null || _axiosController$curr3 === void 0 ? void 0 : _axiosController$curr3.abort();
2760
+ var updatedAxiosController = new AbortController();
2761
+ axiosController.current = updatedAxiosController;
2762
+ signal = updatedAxiosController === null || updatedAxiosController === void 0 ? void 0 : updatedAxiosController.signal;
2763
+ }
2764
+
2765
+ dashboardAnalyticsService.getGaugeData(postWidget, signal).then(function (result) {
2766
+ handleData(result === null || result === void 0 ? void 0 : result.data);
2767
+ chartData.current = result === null || result === void 0 ? void 0 : result.data;
2768
+ setDataLoaded(true);
2769
+ }, function (error) {
2770
+ var _error$response, _error$response$data, _error$response2, _error$response2$data;
2771
+
2772
+ console.log('error', error);
2773
+ if (error !== null && error !== void 0 && (_error$response = error.response) !== null && _error$response !== void 0 && (_error$response$data = _error$response.data) !== null && _error$response$data !== void 0 && _error$response$data.ErrorMessage) setError(error === null || error === void 0 ? void 0 : (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.ErrorMessage);else setError(error.message);
2774
+ setDataLoaded(true);
2775
+ });
2776
+ };
2777
+
2778
+ var handleData = function handleData(data, isDummyChange) {
2779
+ if (isDummyChange === void 0) {
2780
+ isDummyChange = false;
2781
+ }
2782
+
2783
+ var chart = getGaugeObject(data, widget.current);
2784
+ setArgs(chart);
2785
+
2786
+ if (!isDummyChange) {
2787
+ setDataLoaded(true);
2788
+ } else {
2789
+ setTimeout(function () {
2790
+ isDummyChangesActive.current = false;
2791
+ }, 100);
2792
+ }
2793
+ };
2794
+
2795
+ return !dataLoaded ? React__default.createElement("div", {
2796
+ ref: progressRef,
2797
+ className: 'dl-full-hight dl-flex-content-center spinner-custome'
2798
+ }, React__default.createElement(progressspinner.ProgressSpinner, {
2799
+ style: {
2800
+ width: '40px',
2801
+ height: '40px'
2802
+ },
2803
+ strokeWidth: "4",
2804
+ animationDuration: "2s"
2805
+ })) : !error ? React__default.createElement("div", {
2806
+ className: 'db-fc-parent-container',
2807
+ ref: fusionRef
2808
+ }, React__default.createElement("div", {
2809
+ className: 'db-fc-container',
2810
+ key: fusionKey,
2811
+ id: chartContainerId
2812
+ }, React__default.createElement(ReactFC, Object.assign({}, args)))) : React__default.createElement("div", {
2813
+ className: "dl-flex-content-center dl-full-hight",
2814
+ style: {
2815
+ width: '100%'
2816
+ }
2817
+ }, React__default.createElement("div", {
2818
+ className: "dl-tooltip"
2819
+ }, React__default.createElement(SvgRedWarning, {
2820
+ className: "red-warning-icon"
2821
+ }), React__default.createElement("span", {
2822
+ className: "dl-tooltiptext"
2823
+ }, error)));
2824
+ });
2825
+
2019
2826
  var WidgetCard = React.forwardRef(function (props, comRef) {
2020
- var _widget$current7, _widget$current8, _widget$current9, _widget$current10, _widget$current11, _widget$current12, _widget$current13;
2827
+ var _widget$current12, _widget$current13, _widget$current14;
2021
2828
 
2022
2829
  var widget = React.useRef();
2023
2830
 
@@ -2086,7 +2893,7 @@ var WidgetCard = React.forwardRef(function (props, comRef) {
2086
2893
  };
2087
2894
 
2088
2895
  var GetChartComponent = function GetChartComponent() {
2089
- var _widget$current4, _widget$current5, _widget$current6;
2896
+ var _widget$current4, _widget$current5, _widget$current6, _widget$current7;
2090
2897
 
2091
2898
  if (isLoading || !((_widget$current4 = widget.current) !== null && _widget$current4 !== void 0 && _widget$current4.TypeCode)) return "";
2092
2899
  if (((_widget$current5 = widget.current) === null || _widget$current5 === void 0 ? void 0 : _widget$current5.TypeCode) == "kpi" || ((_widget$current6 = widget.current) === null || _widget$current6 === void 0 ? void 0 : _widget$current6.TypeCode) == "table") return React__default.createElement(CustomChart, {
@@ -2097,6 +2904,13 @@ var WidgetCard = React.forwardRef(function (props, comRef) {
2097
2904
  widgetRef: props.widgetRef,
2098
2905
  onSelectDataPoint: props.onSelectDataPoint
2099
2906
  });
2907
+ if (((_widget$current7 = widget.current) === null || _widget$current7 === void 0 ? void 0 : _widget$current7.TypeCode) == "gauge") return React__default.createElement(FusionChart$1, {
2908
+ ref: fusionChartRef,
2909
+ dataBinding: props.dataBinding,
2910
+ widget: widget.current,
2911
+ widgetRef: props.widgetRef,
2912
+ onSelectDataPoint: props.onSelectDataPoint
2913
+ });
2100
2914
  return React__default.createElement(FusionChart, {
2101
2915
  ref: fusionChartRef,
2102
2916
  dataBinding: props.dataBinding,
@@ -2106,6 +2920,50 @@ var WidgetCard = React.forwardRef(function (props, comRef) {
2106
2920
  });
2107
2921
  };
2108
2922
 
2923
+ var isTableWidget = function isTableWidget() {
2924
+ return widget && widget.current && widget.current.TypeCode == 'table';
2925
+ };
2926
+
2927
+ var getwidgetTitlesContainer = function getwidgetTitlesContainer() {
2928
+ return isTableWidget() ? "widget-table-titles-container" : "widget-titles-container";
2929
+ };
2930
+
2931
+ var drilldownToTableData = function drilldownToTableData() {
2932
+ props.onSelectDataPoint({
2933
+ GroupById: undefined,
2934
+ MeasureFieldId: undefined,
2935
+ MeasureCode: undefined,
2936
+ Formula: undefined,
2937
+ Widget: widget.current,
2938
+ GroupByIdSec: undefined
2939
+ });
2940
+ };
2941
+
2942
+ var isThereTitle = function isThereTitle() {
2943
+ var _widget$current8, _widget$current9;
2944
+
2945
+ return ((_widget$current8 = widget.current) === null || _widget$current8 === void 0 ? void 0 : _widget$current8.Title) && ((_widget$current9 = widget.current) === null || _widget$current9 === void 0 ? void 0 : _widget$current9.Title.length) > 0;
2946
+ };
2947
+
2948
+ var isThereSubtitle = function isThereSubtitle() {
2949
+ var _widget$current10, _widget$current11;
2950
+
2951
+ return ((_widget$current10 = widget.current) === null || _widget$current10 === void 0 ? void 0 : _widget$current10.Subtitle) && ((_widget$current11 = widget.current) === null || _widget$current11 === void 0 ? void 0 : _widget$current11.Subtitle.length) > 0;
2952
+ };
2953
+
2954
+ var tableHintMessage = function tableHintMessage() {
2955
+ return React__default.createElement("span", {
2956
+ className: "table-hint-container " + (isTitleAligmentRight() ? "padding-left-12" : "")
2957
+ }, React__default.createElement("span", null, "Showing the first 100 rows"), !props.isInEditMode && !props.isPreviewModeActive && React__default.createElement(React__default.Fragment, null, React__default.createElement("span", null, "("), React__default.createElement("span", {
2958
+ onClick: drilldownToTableData,
2959
+ className: "show-more-records"
2960
+ }, " Show More Records "), React__default.createElement("span", null, ")")));
2961
+ };
2962
+
2963
+ var isTitleAligmentRight = function isTitleAligmentRight() {
2964
+ return widget && widget.current && widget.current.TitleAlignment && widget.current.TitleAlignment.toLowerCase() == 'right';
2965
+ };
2966
+
2109
2967
  return React__default.createElement("div", {
2110
2968
  className: "dl-panel",
2111
2969
  key: props.el.i
@@ -2113,12 +2971,14 @@ var WidgetCard = React.forwardRef(function (props, comRef) {
2113
2971
  key: triggerId,
2114
2972
  className: "widget-header"
2115
2973
  }, React__default.createElement("div", {
2116
- className: "header-contents"
2117
- }, React__default.createElement("div", {
2974
+ className: "header-contents " + (isTableWidget() ? "border-bottom-light-white" : "")
2975
+ }, isTitleAligmentRight() && isTableWidget() && tableHintMessage(), React__default.createElement("div", {
2118
2976
  style: {
2119
- cursor: props.isInEditMode ? "move" : "default"
2977
+ cursor: props.isInEditMode ? "move" : "default",
2978
+ justifyContent: isTableWidget() ? getCSSPropertyValue(widget === null || widget === void 0 ? void 0 : widget.current, 'TitleAlignment', '', undefined) : undefined,
2979
+ flexDirection: isTitleAligmentRight() ? "row-reverse" : "row"
2120
2980
  },
2121
- className: "widget-titles-container"
2981
+ className: getwidgetTitlesContainer()
2122
2982
  }, React__default.createElement("div", {
2123
2983
  className: "title-container",
2124
2984
  style: {
@@ -2133,7 +2993,7 @@ var WidgetCard = React.forwardRef(function (props, comRef) {
2133
2993
  color: getCSSPropertyValue(widget.current, 'TitleFontColor', ''),
2134
2994
  textAlign: getCSSPropertyValue(widget === null || widget === void 0 ? void 0 : widget.current, 'TitleAlignment', '', undefined)
2135
2995
  }
2136
- }, (_widget$current7 = widget.current) === null || _widget$current7 === void 0 ? void 0 : _widget$current7.Title),
2996
+ }, (_widget$current12 = widget.current) === null || _widget$current12 === void 0 ? void 0 : _widget$current12.Title),
2137
2997
  position: ['top center'],
2138
2998
  arrowStyle: {
2139
2999
  color: '#262626'
@@ -2142,16 +3002,19 @@ var WidgetCard = React.forwardRef(function (props, comRef) {
2142
3002
  on: ['hover', 'focus']
2143
3003
  }, React__default.createElement("span", {
2144
3004
  className: "widget-title-tooltip-text"
2145
- }, (_widget$current8 = widget.current) === null || _widget$current8 === void 0 ? void 0 : _widget$current8.Title))), React__default.createElement("div", {
2146
- className: (_widget$current9 = widget.current) !== null && _widget$current9 !== void 0 && _widget$current9.Subtitle && ((_widget$current10 = widget.current) === null || _widget$current10 === void 0 ? void 0 : _widget$current10.Subtitle.length) > 0 ? "subtitle" : "subtitle margin-top-4",
3005
+ }, (_widget$current13 = widget.current) === null || _widget$current13 === void 0 ? void 0 : _widget$current13.Title))), isTableWidget() && isThereTitle() && isThereSubtitle() && React__default.createElement("div", {
3006
+ className: "titles-vertical-seeparator"
3007
+ }), React__default.createElement("div", {
3008
+ className: isThereSubtitle() ? "subtitle" : "subtitle margin-top-4",
2147
3009
  style: {
2148
3010
  fontSize: getCSSPropertyValue(widget.current, 'SubtitleFontSize', 'px'),
2149
3011
  textAlign: getCSSPropertyValue(widget === null || widget === void 0 ? void 0 : widget.current, 'TitleAlignment', '', undefined),
2150
- color: getCSSPropertyValue(widget.current, 'SubtitleFontColor', '')
3012
+ color: getCSSPropertyValue(widget.current, 'SubtitleFontColor', ''),
3013
+ minWidth: isThereSubtitle() && isTableWidget() ? '5%' : undefined
2151
3014
  }
2152
- }, (_widget$current11 = widget.current) === null || _widget$current11 === void 0 ? void 0 : _widget$current11.Subtitle)), React__default.createElement("div", {
2153
- className: (_widget$current12 = widget.current) !== null && _widget$current12 !== void 0 && _widget$current12.Title && ((_widget$current13 = widget.current) === null || _widget$current13 === void 0 ? void 0 : _widget$current13.Title.length) > 0 ? "widget-options-container" : "widget-options-container margin-top-6"
2154
- }, props.isInEditMode ? React__default.createElement(React__default.Fragment, null, React__default.createElement(SvgEditIcon, {
3015
+ }, (_widget$current14 = widget.current) === null || _widget$current14 === void 0 ? void 0 : _widget$current14.Subtitle)), !isTitleAligmentRight() && isTableWidget() && tableHintMessage(), props.isInEditMode && React__default.createElement("div", {
3016
+ className: isThereTitle() ? "widget-options-container" : "widget-options-container margin-top-6"
3017
+ }, React__default.createElement(SvgEditIcon, {
2155
3018
  onClick: function onClick() {
2156
3019
  return editWidget();
2157
3020
  }
@@ -2165,7 +3028,7 @@ var WidgetCard = React.forwardRef(function (props, comRef) {
2165
3028
 
2166
3029
  return props.deleteBtnClicked((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.key);
2167
3030
  }
2168
- })) : null))), React__default.createElement("div", {
3031
+ })))), React__default.createElement("div", {
2169
3032
  className: "dl-dashboard-widget"
2170
3033
  }, GetChartComponent()));
2171
3034
  });
@@ -2218,11 +3081,13 @@ var DashboardDesigner = function DashboardDesigner(props) {
2218
3081
  React.useEffect(function () {
2219
3082
  var _props$dataBinding;
2220
3083
 
2221
- (_props$dataBinding = props.dataBinding) === null || _props$dataBinding === void 0 ? void 0 : _props$dataBinding.onDeleteWidgetConfirmed.subscribe(function (deleteProps) {
2222
- if (deleteProps) {
2223
- deletePanel(deleteProps);
2224
- }
2225
- });
3084
+ if (props !== null && props !== void 0 && (_props$dataBinding = props.dataBinding) !== null && _props$dataBinding !== void 0 && _props$dataBinding.onDeleteWidgetConfirmed) {
3085
+ props.dataBinding.onDeleteWidgetConfirmed.subscribe(function (deleteProps) {
3086
+ if (deleteProps) {
3087
+ deletePanel(deleteProps);
3088
+ }
3089
+ });
3090
+ }
2226
3091
  }, []);
2227
3092
 
2228
3093
  var FillLayout = function FillLayout(dashboardLayouts) {
@@ -2452,6 +3317,7 @@ var Dashboard = function Dashboard(props) {
2452
3317
  Session.CurrentUserId = props.userId;
2453
3318
  Session.Tenant = props.tenant;
2454
3319
  Session.Token = props === null || props === void 0 ? void 0 : props.token;
3320
+ Session.NumberFormatCode = props === null || props === void 0 ? void 0 : props.numberFormatCode;
2455
3321
  setIsPreviewModeActive(props.isPreviewMode);
2456
3322
  props.dataBinding.onGetLayouts.subscribe(function (layouts) {
2457
3323
  Widgetlayouts.current = layouts;