autoql-fe-utils 1.0.1 → 1.0.2
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.d.ts +181 -1
- package/dist/index.global.js +1305 -977
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +1346 -962
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1318 -962
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -31,23 +31,51 @@ var src_exports = {};
|
|
|
31
31
|
__export(src_exports, {
|
|
32
32
|
AGG_TYPES: () => AGG_TYPES,
|
|
33
33
|
CHART_TYPES: () => CHART_TYPES,
|
|
34
|
+
COMPARE_TYPE: () => COMPARE_TYPE,
|
|
35
|
+
CONTINUOUS_TYPE: () => CONTINUOUS_TYPE,
|
|
36
|
+
CUSTOM_TYPE: () => CUSTOM_TYPE,
|
|
37
|
+
DATA_ALERT_CONDITION_TYPES: () => DATA_ALERT_CONDITION_TYPES,
|
|
38
|
+
DATA_ALERT_ENABLED_STATUSES: () => DATA_ALERT_ENABLED_STATUSES,
|
|
39
|
+
DATA_ALERT_FREQUENCY_TYPE_OPTIONS: () => DATA_ALERT_FREQUENCY_TYPE_OPTIONS,
|
|
40
|
+
DATA_ALERT_OPERATORS: () => DATA_ALERT_OPERATORS,
|
|
41
|
+
DATA_ALERT_STATUSES: () => DATA_ALERT_STATUSES,
|
|
34
42
|
DATE_ONLY_CHART_TYPES: () => DATE_ONLY_CHART_TYPES,
|
|
35
43
|
DAYJS_PRECISION_FORMATS: () => DAYJS_PRECISION_FORMATS,
|
|
36
44
|
DEFAULT_AGG_TYPE: () => DEFAULT_AGG_TYPE,
|
|
37
45
|
DEFAULT_DATA_PAGE_SIZE: () => DEFAULT_DATA_PAGE_SIZE,
|
|
46
|
+
DEFAULT_EVALUATION_FREQUENCY: () => DEFAULT_EVALUATION_FREQUENCY,
|
|
47
|
+
DEFAULT_SOURCE: () => DEFAULT_SOURCE,
|
|
38
48
|
DOUBLE_AXIS_CHART_TYPES: () => DOUBLE_AXIS_CHART_TYPES,
|
|
39
49
|
DOW_STYLES: () => DOW_STYLES,
|
|
50
|
+
DataExplorerTypes: () => DataExplorerTypes,
|
|
40
51
|
DateUTC: () => DateUTC,
|
|
52
|
+
EVALUATION_FREQUENCY_OPTIONS: () => EVALUATION_FREQUENCY_OPTIONS,
|
|
53
|
+
EXISTS_TYPE: () => EXISTS_TYPE,
|
|
54
|
+
GENERAL_ERROR: () => GENERAL_ERROR,
|
|
55
|
+
GENERAL_HTML_ERROR: () => GENERAL_HTML_ERROR,
|
|
56
|
+
GENERAL_QUERY_ERROR: () => GENERAL_QUERY_ERROR,
|
|
57
|
+
GROUP_TERM_TYPE: () => GROUP_TERM_TYPE,
|
|
41
58
|
MAX_DATA_PAGE_SIZE: () => MAX_DATA_PAGE_SIZE,
|
|
42
59
|
MAX_LEGEND_LABELS: () => MAX_LEGEND_LABELS,
|
|
43
60
|
MIN_HISTOGRAM_SAMPLE: () => MIN_HISTOGRAM_SAMPLE,
|
|
61
|
+
MONTH_DAY_SELECT_OPTIONS: () => MONTH_DAY_SELECT_OPTIONS,
|
|
44
62
|
MONTH_NAMES: () => MONTH_NAMES,
|
|
63
|
+
NUMBER_TERM_TYPE: () => NUMBER_TERM_TYPE,
|
|
45
64
|
NumberColumnTypeDisplayNames: () => NumberColumnTypeDisplayNames,
|
|
46
65
|
NumberColumnTypes: () => NumberColumnTypes,
|
|
66
|
+
PERIODIC_TYPE: () => PERIODIC_TYPE,
|
|
67
|
+
PROJECT_TYPE: () => PROJECT_TYPE,
|
|
47
68
|
PrecisionTypes: () => PrecisionTypes,
|
|
69
|
+
QUERY_TERM_TYPE: () => QUERY_TERM_TYPE,
|
|
70
|
+
REQUEST_CANCELLED_ERROR: () => REQUEST_CANCELLED_ERROR,
|
|
71
|
+
RESET_PERIOD_OPTIONS: () => RESET_PERIOD_OPTIONS,
|
|
72
|
+
SCHEDULED_TYPE: () => SCHEDULED_TYPE,
|
|
73
|
+
SCHEDULE_FREQUENCY_OPTIONS: () => SCHEDULE_FREQUENCY_OPTIONS,
|
|
74
|
+
SCHEDULE_INTERVAL_OPTIONS: () => SCHEDULE_INTERVAL_OPTIONS,
|
|
48
75
|
SEASON_NAMES: () => SEASON_NAMES,
|
|
49
76
|
TABLE_TYPES: () => TABLE_TYPES,
|
|
50
77
|
TimestampFormats: () => TimestampFormats,
|
|
78
|
+
UNAUTHENTICATED_ERROR: () => UNAUTHENTICATED_ERROR,
|
|
51
79
|
WEEKDAY_NAMES_MON: () => WEEKDAY_NAMES_MON,
|
|
52
80
|
WEEKDAY_NAMES_SUN: () => WEEKDAY_NAMES_SUN,
|
|
53
81
|
animateInputText: () => animateInputText,
|
|
@@ -380,7 +408,7 @@ var isNumber = (str) => {
|
|
|
380
408
|
return /^\d+$/.test(str);
|
|
381
409
|
};
|
|
382
410
|
|
|
383
|
-
// src/Constants/
|
|
411
|
+
// src/Constants/visualizationConstants.ts
|
|
384
412
|
var TABLE_TYPES = [
|
|
385
413
|
"pivot_table",
|
|
386
414
|
"pivot_column",
|
|
@@ -492,1093 +520,1413 @@ var AGG_TYPES = [
|
|
|
492
520
|
var MAX_LEGEND_LABELS = 22;
|
|
493
521
|
var MIN_HISTOGRAM_SAMPLE = 20;
|
|
494
522
|
|
|
495
|
-
// src/
|
|
496
|
-
var
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
PrecisionTypes2["HOUR"] = "HOUR";
|
|
510
|
-
PrecisionTypes2["MINUTE"] = "MINUTE";
|
|
511
|
-
return PrecisionTypes2;
|
|
512
|
-
})(PrecisionTypes || {});
|
|
513
|
-
var NumberColumnTypes = /* @__PURE__ */ ((NumberColumnTypes2) => {
|
|
514
|
-
NumberColumnTypes2["CURRENCY"] = "DOLLAR_AMT";
|
|
515
|
-
NumberColumnTypes2["QUANTITY"] = "QUANTITY";
|
|
516
|
-
NumberColumnTypes2["RATIO"] = "RATIO";
|
|
517
|
-
NumberColumnTypes2["PERCENT"] = "PERCENT";
|
|
518
|
-
return NumberColumnTypes2;
|
|
519
|
-
})(NumberColumnTypes || {});
|
|
520
|
-
var NumberColumnTypeDisplayNames = /* @__PURE__ */ ((NumberColumnTypeDisplayNames2) => {
|
|
521
|
-
NumberColumnTypeDisplayNames2["DOLLAR_AMT"] = "Currency";
|
|
522
|
-
NumberColumnTypeDisplayNames2["QUANTITY"] = "Quantity";
|
|
523
|
-
NumberColumnTypeDisplayNames2["RATIO"] = "Ratio";
|
|
524
|
-
NumberColumnTypeDisplayNames2["PERCENT"] = "Percent";
|
|
525
|
-
return NumberColumnTypeDisplayNames2;
|
|
526
|
-
})(NumberColumnTypeDisplayNames || {});
|
|
527
|
-
|
|
528
|
-
// src/Constants/defaults.ts
|
|
529
|
-
var authenticationDefault = {
|
|
530
|
-
token: void 0,
|
|
531
|
-
apiKey: void 0,
|
|
532
|
-
domain: void 0,
|
|
533
|
-
dprKey: void 0,
|
|
534
|
-
dprDomain: void 0
|
|
535
|
-
};
|
|
536
|
-
var dataFormattingDefault = {
|
|
537
|
-
timestampFormat: "ISO8601" /* iso8601 */,
|
|
538
|
-
currencyCode: "USD",
|
|
539
|
-
languageCode: "en-US",
|
|
540
|
-
currencyDecimals: 2,
|
|
541
|
-
quantityDecimals: 2,
|
|
542
|
-
ratioDecimals: 4,
|
|
543
|
-
comparisonDisplay: "PERCENT",
|
|
544
|
-
monthYearFormat: "MMMM YYYY",
|
|
545
|
-
dayMonthYearFormat: "ll"
|
|
546
|
-
};
|
|
547
|
-
var autoQLConfigDefault = {
|
|
548
|
-
debug: false,
|
|
549
|
-
test: false,
|
|
550
|
-
enableAutocomplete: true,
|
|
551
|
-
enableQueryInterpretation: true,
|
|
552
|
-
enableQueryValidation: true,
|
|
553
|
-
enableQuerySuggestions: true,
|
|
554
|
-
enableColumnVisibilityManager: true,
|
|
555
|
-
enableDrilldowns: true,
|
|
556
|
-
enableNotifications: false,
|
|
557
|
-
enableCSVDownload: true,
|
|
558
|
-
enableReportProblem: true
|
|
559
|
-
};
|
|
560
|
-
var dataConfigDefault = {
|
|
561
|
-
stringColumnIndices: [],
|
|
562
|
-
numberColumnIndices: [],
|
|
563
|
-
stringColumnIndex: 0,
|
|
564
|
-
legendColumnIndex: void 0,
|
|
565
|
-
numberColumnIndex: 1
|
|
566
|
-
};
|
|
567
|
-
var getAuthentication = (prop = {}) => {
|
|
568
|
-
return {
|
|
569
|
-
...authenticationDefault,
|
|
570
|
-
...prop
|
|
571
|
-
};
|
|
572
|
-
};
|
|
573
|
-
var getDataFormatting = (prop = {}) => {
|
|
574
|
-
return {
|
|
575
|
-
...dataFormattingDefault,
|
|
576
|
-
...prop
|
|
577
|
-
};
|
|
523
|
+
// src/HelperFns/arrayHelpers.ts
|
|
524
|
+
var import_lodash = __toESM(require("lodash.isequal"));
|
|
525
|
+
var invertArray = (array) => {
|
|
526
|
+
const numRows = array.length;
|
|
527
|
+
const numColumns = array[0].length;
|
|
528
|
+
const invertedArray = [];
|
|
529
|
+
for (let i = 0; i < numColumns; i++) {
|
|
530
|
+
invertedArray[i] = [];
|
|
531
|
+
for (let j = 0; j < numRows; j++) {
|
|
532
|
+
if (array[j][i])
|
|
533
|
+
invertedArray[i][j] = array[j][i];
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
return invertedArray;
|
|
578
537
|
};
|
|
579
|
-
var
|
|
580
|
-
return
|
|
581
|
-
...autoQLConfigDefault,
|
|
582
|
-
...prop
|
|
583
|
-
};
|
|
538
|
+
var functionsEqual = (a, b) => {
|
|
539
|
+
return (a == null ? void 0 : a.toString()) == (b == null ? void 0 : b.toString());
|
|
584
540
|
};
|
|
585
|
-
var
|
|
586
|
-
return
|
|
587
|
-
...dataConfigDefault,
|
|
588
|
-
...prop
|
|
589
|
-
};
|
|
541
|
+
var isObject = (obj) => {
|
|
542
|
+
return typeof obj === "object" && !Array.isArray(obj) && obj !== null && obj !== void 0;
|
|
590
543
|
};
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
return void 0;
|
|
544
|
+
var deepEqual = (objA, objB) => {
|
|
545
|
+
const lodashIsEqual = (0, import_lodash.default)(objA, objB);
|
|
546
|
+
if (lodashIsEqual) {
|
|
547
|
+
return true;
|
|
596
548
|
}
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
case "MINUTE": {
|
|
612
|
-
const dayjsTime = dayjsWithPlugins_default.utc(value, "THH:mm:ss.SSSZ").utc();
|
|
613
|
-
if (dayjsTime.isValid()) {
|
|
614
|
-
formattedValue = dayjsTime.format("h:mmA");
|
|
615
|
-
}
|
|
616
|
-
break;
|
|
617
|
-
}
|
|
618
|
-
case "MONTH": {
|
|
619
|
-
formattedValue = value;
|
|
620
|
-
break;
|
|
621
|
-
}
|
|
622
|
-
default: {
|
|
623
|
-
formattedValue = value;
|
|
624
|
-
break;
|
|
549
|
+
const objAIsObject = isObject(objA);
|
|
550
|
+
const objBIsObject = isObject(objB);
|
|
551
|
+
if (!objAIsObject || !objBIsObject) {
|
|
552
|
+
return lodashIsEqual;
|
|
553
|
+
}
|
|
554
|
+
const keysA = Object.keys(objA);
|
|
555
|
+
const keysB = Object.keys(objB);
|
|
556
|
+
if (keysA.length !== keysB.length) {
|
|
557
|
+
return false;
|
|
558
|
+
}
|
|
559
|
+
for (let i = 0; i < keysA.length; i++) {
|
|
560
|
+
if (typeof objA[keysA[i]] === "function" && typeof objB[keysA[i]] === "function") {
|
|
561
|
+
if (!functionsEqual(objA[keysA[i]], objB[keysA[i]])) {
|
|
562
|
+
return false;
|
|
625
563
|
}
|
|
564
|
+
} else if (!Object.hasOwnProperty.call(objB, keysA[i]) || !(0, import_lodash.default)(objA[keysA[i]], objB[keysA[i]])) {
|
|
565
|
+
return false;
|
|
626
566
|
}
|
|
627
|
-
return formattedValue;
|
|
628
|
-
} catch (error) {
|
|
629
|
-
console.error(error);
|
|
630
|
-
return value;
|
|
631
567
|
}
|
|
568
|
+
return true;
|
|
632
569
|
};
|
|
633
|
-
var
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
if ((
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
const dayJSObj = dayjsWithPlugins_default.utc(value).utc();
|
|
651
|
-
if (!dayJSObj.isValid()) {
|
|
652
|
-
return value;
|
|
653
|
-
}
|
|
654
|
-
let date = value;
|
|
655
|
-
if (day) {
|
|
656
|
-
date = dayJSObj.format(dayMonthYearFormat);
|
|
657
|
-
} else if (month) {
|
|
658
|
-
date = dayJSObj.format(monthYearFormat);
|
|
659
|
-
} else if (week) {
|
|
660
|
-
} else if (year) {
|
|
661
|
-
date = year;
|
|
570
|
+
var difference = (objA, objB) => {
|
|
571
|
+
const diff = [];
|
|
572
|
+
Object.keys(Object.assign({}, objA, objB)).forEach((key) => {
|
|
573
|
+
if (typeof objA[key] === "function" && typeof objB[key] === "function") {
|
|
574
|
+
if (!functionsEqual(objA[key], objB[key])) {
|
|
575
|
+
diff.push({
|
|
576
|
+
key,
|
|
577
|
+
objA: objA[key],
|
|
578
|
+
objB: objB[key]
|
|
579
|
+
});
|
|
580
|
+
}
|
|
581
|
+
} else if (!Object.is(objA[key], objB[key])) {
|
|
582
|
+
diff.push({
|
|
583
|
+
key,
|
|
584
|
+
objA: objA[key],
|
|
585
|
+
objB: objB[key]
|
|
586
|
+
});
|
|
662
587
|
}
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
return value;
|
|
588
|
+
});
|
|
589
|
+
return diff;
|
|
666
590
|
};
|
|
667
|
-
var
|
|
668
|
-
|
|
669
|
-
|
|
591
|
+
var rotateArray = (array, n) => {
|
|
592
|
+
const rotated = [...array];
|
|
593
|
+
n = n % array.length;
|
|
594
|
+
if (n < 0)
|
|
595
|
+
n = array.length + n;
|
|
596
|
+
for (let i = 0; i < n; i++) {
|
|
597
|
+
rotated.unshift(rotated.pop());
|
|
670
598
|
}
|
|
671
|
-
return
|
|
599
|
+
return rotated;
|
|
672
600
|
};
|
|
673
|
-
var
|
|
674
|
-
|
|
675
|
-
return element;
|
|
676
|
-
}
|
|
677
|
-
if (column.precision) {
|
|
678
|
-
return formatStringDateWithPrecision(element, column);
|
|
679
|
-
}
|
|
680
|
-
return formatStringDate(element, config);
|
|
601
|
+
var onlyUnique = (value, index, self) => {
|
|
602
|
+
return self.indexOf(value) === index;
|
|
681
603
|
};
|
|
682
|
-
var
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
604
|
+
var makeEmptyArray = (w, h, value = "") => {
|
|
605
|
+
var arr = [];
|
|
606
|
+
for (let i = 0; i < h; i++) {
|
|
607
|
+
arr[i] = [];
|
|
608
|
+
for (let j = 0; j < w; j++) {
|
|
609
|
+
arr[i][j] = value;
|
|
610
|
+
}
|
|
688
611
|
}
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
612
|
+
return arr;
|
|
613
|
+
};
|
|
614
|
+
|
|
615
|
+
// src/HelperFns/displayTypeHelpers.ts
|
|
616
|
+
var isChartType = (type) => CHART_TYPES.includes(type);
|
|
617
|
+
var isTableType = (type) => TABLE_TYPES.includes(type);
|
|
618
|
+
var isDisplayTypeValid = (response, displayType, dataLength, pivotDataLength, columns, isDataLimited) => {
|
|
619
|
+
var _a, _b;
|
|
620
|
+
const supportedDisplayTypes = getSupportedDisplayTypes({
|
|
621
|
+
response,
|
|
622
|
+
columns: columns ?? ((_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.columns),
|
|
623
|
+
dataLength,
|
|
624
|
+
pivotDataLength,
|
|
625
|
+
isDataLimited
|
|
626
|
+
});
|
|
627
|
+
const isValid = displayType && supportedDisplayTypes.includes(displayType);
|
|
628
|
+
return isValid;
|
|
629
|
+
};
|
|
630
|
+
var shouldPlotMultiSeries = (columns) => {
|
|
631
|
+
if (isAggregation(columns)) {
|
|
632
|
+
return false;
|
|
694
633
|
}
|
|
695
|
-
|
|
634
|
+
const multiSeriesIndex = columns.findIndex((col) => col.multi_series === true);
|
|
635
|
+
return multiSeriesIndex >= 0;
|
|
636
|
+
};
|
|
637
|
+
var supportsPieChart = (columns, chartData) => {
|
|
638
|
+
if (shouldPlotMultiSeries(columns)) {
|
|
639
|
+
return false;
|
|
640
|
+
}
|
|
641
|
+
if (chartData) {
|
|
642
|
+
return chartData.length < 7;
|
|
643
|
+
}
|
|
644
|
+
return true;
|
|
645
|
+
};
|
|
646
|
+
var supports2DCharts = (columns, dataLength) => {
|
|
647
|
+
if (dataLength <= 1) {
|
|
648
|
+
return false;
|
|
649
|
+
}
|
|
650
|
+
const { amountOfNumberColumns, amountOfStringColumns } = getColumnTypeAmounts(columns);
|
|
651
|
+
return amountOfNumberColumns > 0 && amountOfStringColumns > 0;
|
|
652
|
+
};
|
|
653
|
+
var supportsRegularPivotTable = (columns, dataLength, data) => {
|
|
654
|
+
var _a, _b;
|
|
655
|
+
if (dataLength <= 1) {
|
|
656
|
+
return false;
|
|
657
|
+
}
|
|
658
|
+
const groupbyColumns = getGroupableColumns(columns);
|
|
659
|
+
const hasTwoGroupables = (groupbyColumns == null ? void 0 : groupbyColumns.length) === 2;
|
|
660
|
+
if (!hasTwoGroupables) {
|
|
661
|
+
return false;
|
|
662
|
+
}
|
|
663
|
+
const visibleColumns = getVisibleColumns(columns);
|
|
664
|
+
const groupbyColumn1 = columns[groupbyColumns[0]];
|
|
665
|
+
const groupbyColumn2 = columns[groupbyColumns[1]];
|
|
666
|
+
if (!groupbyColumn1.is_visible || !groupbyColumn2.is_visible || !((visibleColumns == null ? void 0 : visibleColumns.length) >= 3)) {
|
|
667
|
+
return false;
|
|
668
|
+
}
|
|
669
|
+
const column1Data = (data == null ? void 0 : data.map((row) => {
|
|
670
|
+
return row[groupbyColumns[0]];
|
|
671
|
+
})) ?? [];
|
|
672
|
+
const column2Data = (data == null ? void 0 : data.map((row) => {
|
|
673
|
+
return row[groupbyColumns[1]];
|
|
674
|
+
})) ?? [];
|
|
675
|
+
const uniqueData1Length = ((_a = column1Data == null ? void 0 : column1Data.filter(onlyUnique)) == null ? void 0 : _a.length) ?? 0;
|
|
676
|
+
const uniqueData2Length = ((_b = column2Data == null ? void 0 : column2Data.filter(onlyUnique)) == null ? void 0 : _b.length) ?? 0;
|
|
677
|
+
if (uniqueData1Length > MAX_LEGEND_LABELS && uniqueData2Length > MAX_LEGEND_LABELS) {
|
|
678
|
+
console.debug(
|
|
679
|
+
`Info: Pivot table will not be supported since there are too many unique fields. The calculated dimensions would be: ${uniqueData1Length} x ${uniqueData2Length}`
|
|
680
|
+
);
|
|
681
|
+
return false;
|
|
682
|
+
}
|
|
683
|
+
return true;
|
|
684
|
+
};
|
|
685
|
+
var supportsDatePivotTable = (columns) => {
|
|
686
|
+
var _a;
|
|
687
|
+
const dateColumnIndex = columns.findIndex((col) => col.type === "DATE" || col.type === "DATE_STRING");
|
|
688
|
+
const dateColumn = columns[dateColumnIndex];
|
|
689
|
+
return dateColumn && ((_a = dateColumn == null ? void 0 : dateColumn.display_name) == null ? void 0 : _a.toLowerCase().includes("month")) && (columns == null ? void 0 : columns.length) === 2;
|
|
690
|
+
};
|
|
691
|
+
var isSingleValueResponse = (response) => {
|
|
692
|
+
var _a, _b, _c, _d, _e, _f;
|
|
693
|
+
if (!response) {
|
|
694
|
+
return false;
|
|
695
|
+
}
|
|
696
|
+
const rows = (_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.rows;
|
|
697
|
+
const columns = (_d = (_c = response == null ? void 0 : response.data) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
|
|
698
|
+
const referenceID = (_e = response == null ? void 0 : response.data) == null ? void 0 : _e.reference_id;
|
|
699
|
+
const hasNoData = rows && !(rows == null ? void 0 : rows.length);
|
|
700
|
+
const hasOneColumn = (columns == null ? void 0 : columns.length) === 1;
|
|
701
|
+
if (hasNoData && hasOneColumn && referenceID === "1.1.211") {
|
|
702
|
+
return true;
|
|
703
|
+
}
|
|
704
|
+
const oneRowAndColumn = (rows == null ? void 0 : rows.length) === 1 && ((_f = rows[0]) == null ? void 0 : _f.length) === 1;
|
|
705
|
+
if (oneRowAndColumn) {
|
|
706
|
+
return true;
|
|
707
|
+
}
|
|
708
|
+
return false;
|
|
709
|
+
};
|
|
710
|
+
var getSupportedDisplayTypes = ({
|
|
711
|
+
response,
|
|
712
|
+
columns,
|
|
713
|
+
dataLength,
|
|
714
|
+
pivotDataLength,
|
|
715
|
+
isDataLimited
|
|
716
|
+
} = {}) => {
|
|
717
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
696
718
|
try {
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
719
|
+
if (!((_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.display_type)) {
|
|
720
|
+
return [];
|
|
721
|
+
}
|
|
722
|
+
const displayType = response.data.data.display_type;
|
|
723
|
+
if (displayType === "suggestion" || displayType === "help" || displayType === "html") {
|
|
724
|
+
return [displayType];
|
|
725
|
+
}
|
|
726
|
+
const rows = ((_d = (_c = response == null ? void 0 : response.data) == null ? void 0 : _c.data) == null ? void 0 : _d.rows) ?? [];
|
|
727
|
+
const allColumns = columns || ((_f = (_e = response == null ? void 0 : response.data) == null ? void 0 : _e.data) == null ? void 0 : _f.columns);
|
|
728
|
+
const visibleColumns = getVisibleColumns(allColumns);
|
|
729
|
+
if (!(visibleColumns == null ? void 0 : visibleColumns.length)) {
|
|
730
|
+
return ["text"];
|
|
731
|
+
}
|
|
732
|
+
if (isSingleValueResponse(response)) {
|
|
733
|
+
return ["single-value"];
|
|
734
|
+
}
|
|
735
|
+
if (!(rows == null ? void 0 : rows.length)) {
|
|
736
|
+
return ["table"];
|
|
737
|
+
}
|
|
738
|
+
const maxRowsForPieChart = 10;
|
|
739
|
+
const numRows = dataLength ?? rows.length;
|
|
740
|
+
let pivotDataHasLength = true;
|
|
741
|
+
const pivotDataLengthProvided = pivotDataLength !== void 0 && pivotDataLength !== null;
|
|
742
|
+
if (pivotDataLengthProvided) {
|
|
743
|
+
pivotDataHasLength = !!pivotDataLength;
|
|
744
|
+
}
|
|
745
|
+
if (supportsRegularPivotTable(visibleColumns, numRows, (_h = (_g = response == null ? void 0 : response.data) == null ? void 0 : _g.data) == null ? void 0 : _h.rows)) {
|
|
746
|
+
const supportedDisplayTypes = ["table"];
|
|
747
|
+
if (!isDataLimited) {
|
|
748
|
+
supportedDisplayTypes.push("pivot_table");
|
|
708
749
|
}
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
750
|
+
if (
|
|
751
|
+
// Comment out for now so chart row count doesnt change display type
|
|
752
|
+
// numRows <= maxRowsForPivot &&
|
|
753
|
+
pivotDataHasLength
|
|
754
|
+
) {
|
|
755
|
+
supportedDisplayTypes.push("stacked_column", "stacked_bar", "column", "bar", "bubble", "heatmap");
|
|
756
|
+
if (hasDateColumn(visibleColumns)) {
|
|
757
|
+
supportedDisplayTypes.push("stacked_line", "line");
|
|
758
|
+
}
|
|
712
759
|
}
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
760
|
+
return supportedDisplayTypes;
|
|
761
|
+
} else if (supports2DCharts(visibleColumns, numRows)) {
|
|
762
|
+
const supportedDisplayTypes = ["table", "column", "bar"];
|
|
763
|
+
if (numRows > MIN_HISTOGRAM_SAMPLE) {
|
|
764
|
+
supportedDisplayTypes.push("histogram");
|
|
718
765
|
}
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
break;
|
|
766
|
+
if (hasDateColumn(visibleColumns)) {
|
|
767
|
+
supportedDisplayTypes.push("line");
|
|
722
768
|
}
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
break;
|
|
769
|
+
if (numRows > 1 && numRows <= maxRowsForPieChart) {
|
|
770
|
+
supportedDisplayTypes.push("pie");
|
|
726
771
|
}
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
772
|
+
const { amountOfNumberColumns } = getColumnTypeAmounts(visibleColumns);
|
|
773
|
+
if (amountOfNumberColumns > 1) {
|
|
774
|
+
supportedDisplayTypes.push("column_line");
|
|
775
|
+
supportedDisplayTypes.push("scatterplot");
|
|
730
776
|
}
|
|
731
|
-
|
|
732
|
-
|
|
777
|
+
if (!isDataLimited && supportsDatePivotTable(visibleColumns)) {
|
|
778
|
+
const dateColumnIndex = visibleColumns.findIndex((col) => col.type === "DATE" || col.type === "DATE_STRING");
|
|
779
|
+
const dateColumn = visibleColumns[dateColumnIndex];
|
|
780
|
+
const data = (_j = (_i = response == null ? void 0 : response.data) == null ? void 0 : _i.data) == null ? void 0 : _j.rows;
|
|
781
|
+
const uniqueYears = [];
|
|
782
|
+
data.forEach((row) => {
|
|
783
|
+
const year = formatElement({
|
|
784
|
+
element: row[dateColumnIndex],
|
|
785
|
+
column: dateColumn,
|
|
786
|
+
config: getDataFormatting({ monthYearFormat: "YYYY", dayMonthYearFormat: "YYYY" })
|
|
787
|
+
});
|
|
788
|
+
if (!uniqueYears.includes(year)) {
|
|
789
|
+
uniqueYears.push(year);
|
|
790
|
+
}
|
|
791
|
+
});
|
|
792
|
+
if (uniqueYears.length > 1) {
|
|
793
|
+
supportedDisplayTypes.push("pivot_table");
|
|
794
|
+
}
|
|
733
795
|
}
|
|
796
|
+
return supportedDisplayTypes;
|
|
734
797
|
}
|
|
735
|
-
return
|
|
798
|
+
return ["table"];
|
|
736
799
|
} catch (error) {
|
|
737
800
|
console.error(error);
|
|
801
|
+
return ["table"];
|
|
738
802
|
}
|
|
739
803
|
};
|
|
740
|
-
var
|
|
741
|
-
|
|
742
|
-
|
|
804
|
+
var getFirstChartDisplayType = (supportedDisplayTypes, fallback) => {
|
|
805
|
+
const chartType = supportedDisplayTypes.find((displayType) => isChartType(displayType));
|
|
806
|
+
if (chartType) {
|
|
807
|
+
return chartType;
|
|
743
808
|
}
|
|
744
|
-
|
|
745
|
-
|
|
809
|
+
return fallback;
|
|
810
|
+
};
|
|
811
|
+
var getDefaultDisplayType = (response, defaultToChart, columns, dataLength, pivotDataLength, preferredDisplayType, isDataLimited = false) => {
|
|
812
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
813
|
+
const supportedDisplayTypes = getSupportedDisplayTypes({
|
|
814
|
+
response,
|
|
815
|
+
columns: columns ?? ((_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.columns),
|
|
816
|
+
dataLength,
|
|
817
|
+
pivotDataLength,
|
|
818
|
+
isDataLimited
|
|
819
|
+
});
|
|
820
|
+
if (preferredDisplayType && supportedDisplayTypes.includes(preferredDisplayType)) {
|
|
821
|
+
return preferredDisplayType;
|
|
746
822
|
}
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
const monthYear = monthYearFormat;
|
|
751
|
-
const dayMonthYear = dayMonthYearFormat;
|
|
752
|
-
const title = col.title;
|
|
753
|
-
let dayJSObj;
|
|
754
|
-
if (isNaN(parseFloat(value))) {
|
|
755
|
-
dayJSObj = dayjsWithPlugins_default.utc(value).utc();
|
|
756
|
-
} else {
|
|
757
|
-
dayJSObj = dayjsWithPlugins_default.unix(value).utc();
|
|
758
|
-
}
|
|
759
|
-
if (!dayJSObj.isValid()) {
|
|
760
|
-
return value;
|
|
761
|
-
}
|
|
762
|
-
let date = dayJSObj.format(dayMonthYear);
|
|
763
|
-
if (isNaN(parseFloat(value))) {
|
|
764
|
-
if (title && title.toLowerCase().includes("year")) {
|
|
765
|
-
date = dayJSObj.format(year);
|
|
766
|
-
} else if (title && title.toLowerCase().includes("month")) {
|
|
767
|
-
date = dayJSObj.format(monthYear);
|
|
768
|
-
}
|
|
769
|
-
date = dayJSObj.format(dayMonthYear);
|
|
770
|
-
} else if (title && title.toLowerCase().includes("year")) {
|
|
771
|
-
date = dayJSObj.format(year);
|
|
772
|
-
} else if (title && title.toLowerCase().includes("month")) {
|
|
773
|
-
date = dayJSObj.format(monthYear);
|
|
774
|
-
}
|
|
775
|
-
return date;
|
|
776
|
-
} catch (error) {
|
|
777
|
-
console.error(error);
|
|
778
|
-
return value;
|
|
823
|
+
const responseDisplayType = (_d = (_c = response == null ? void 0 : response.data) == null ? void 0 : _c.data) == null ? void 0 : _d.display_type;
|
|
824
|
+
if (supportedDisplayTypes.includes(preferredDisplayType)) {
|
|
825
|
+
return preferredDisplayType;
|
|
779
826
|
}
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
let dowStyle = col.dow_style;
|
|
783
|
-
if (!dowStyle) {
|
|
784
|
-
dowStyle = "NUM_1_MON";
|
|
827
|
+
if (responseDisplayType === "suggestion" || responseDisplayType === "help" || responseDisplayType === "html") {
|
|
828
|
+
return responseDisplayType;
|
|
785
829
|
}
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
switch (dowStyle) {
|
|
789
|
-
case "NUM_1_MON": {
|
|
790
|
-
const weekdays = WEEKDAY_NAMES_MON;
|
|
791
|
-
const index = weekdayNumber - 1;
|
|
792
|
-
if (index >= 0) {
|
|
793
|
-
formattedValue = weekdays[index];
|
|
794
|
-
} else {
|
|
795
|
-
console.warn(`dow style is NUM_1_MON but the value could not be converted to a number: ${value}`);
|
|
796
|
-
}
|
|
797
|
-
break;
|
|
798
|
-
}
|
|
799
|
-
case "NUM_1_SUN": {
|
|
800
|
-
const weekdays = WEEKDAY_NAMES_SUN;
|
|
801
|
-
const index = weekdayNumber - 1;
|
|
802
|
-
if (index >= 0) {
|
|
803
|
-
formattedValue = weekdays[index];
|
|
804
|
-
} else {
|
|
805
|
-
console.warn(`dow style is NUM_1_SUN but the value could not be converted to a number: ${value}`);
|
|
806
|
-
}
|
|
807
|
-
break;
|
|
808
|
-
}
|
|
809
|
-
case "NUM_0_MON": {
|
|
810
|
-
const weekdays = WEEKDAY_NAMES_MON;
|
|
811
|
-
if (weekdayNumber >= 0) {
|
|
812
|
-
formattedValue = weekdays[weekdayNumber];
|
|
813
|
-
} else {
|
|
814
|
-
console.warn(`dow style is NUM_0_MON but the value could not be converted to a number: ${value}`);
|
|
815
|
-
}
|
|
816
|
-
break;
|
|
817
|
-
}
|
|
818
|
-
case "NUM_0_SUN": {
|
|
819
|
-
const weekdays = WEEKDAY_NAMES_SUN;
|
|
820
|
-
if (weekdayNumber >= 0) {
|
|
821
|
-
formattedValue = weekdays[weekdayNumber];
|
|
822
|
-
} else {
|
|
823
|
-
console.warn(`dow style is NUM_0_SUN but the value could not be converted to a number: ${value}`);
|
|
824
|
-
}
|
|
825
|
-
break;
|
|
826
|
-
}
|
|
827
|
-
case "ALPHA_MON":
|
|
828
|
-
case "ALPHA_SUN": {
|
|
829
|
-
const weekday = WEEKDAY_NAMES_MON.find((weekday2) => weekday2.toLowerCase().includes(value.trim().toLowerCase()));
|
|
830
|
-
if (weekday) {
|
|
831
|
-
formattedValue = weekday;
|
|
832
|
-
} else {
|
|
833
|
-
console.warn(`dow style is ALPHA but the value could not be matched to a weekday name: ${value}`);
|
|
834
|
-
}
|
|
835
|
-
break;
|
|
836
|
-
}
|
|
837
|
-
default: {
|
|
838
|
-
console.warn(`could not format dow value. dow_style was not recognized: ${col.dow_style}`);
|
|
839
|
-
break;
|
|
840
|
-
}
|
|
830
|
+
if (supportedDisplayTypes.length === 1) {
|
|
831
|
+
return supportedDisplayTypes[0];
|
|
841
832
|
}
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
const aDateYear = a.substring(0, 4);
|
|
847
|
-
const bDateYear = b.substring(0, 4);
|
|
848
|
-
if (aDateYear !== bDateYear) {
|
|
849
|
-
return aDateYear - bDateYear;
|
|
850
|
-
} else {
|
|
851
|
-
const aDateWeek = a.substring(6, 8);
|
|
852
|
-
const bDateWeek = b.substring(6, 8);
|
|
853
|
-
return aDateWeek - bDateWeek;
|
|
854
|
-
}
|
|
855
|
-
} else if (WEEKDAY_NAMES_MON.includes(a.trim())) {
|
|
856
|
-
const aDayIndex = WEEKDAY_NAMES_MON.findIndex((d) => d.toLowerCase().includes(a.trim().toLowerCase()));
|
|
857
|
-
const bDayIndex = WEEKDAY_NAMES_MON.findIndex((d) => d.toLowerCase().includes(b.trim().toLowerCase()));
|
|
858
|
-
let sortValue = a - b;
|
|
859
|
-
if (aDayIndex >= 0 && bDayIndex >= 0) {
|
|
860
|
-
sortValue = aDayIndex - bDayIndex;
|
|
861
|
-
}
|
|
862
|
-
return sortValue;
|
|
863
|
-
} else if (MONTH_NAMES.includes(a.trim())) {
|
|
864
|
-
const aMonthIndex = MONTH_NAMES.findIndex((m) => m === a.trim());
|
|
865
|
-
const bMonthIndex = MONTH_NAMES.findIndex((m) => m === b.trim());
|
|
866
|
-
if (aMonthIndex >= 0 && bMonthIndex >= 0) {
|
|
867
|
-
return bMonthIndex - aMonthIndex;
|
|
833
|
+
if (supportedDisplayTypes.includes("pivot_table")) {
|
|
834
|
+
let displayType = "pivot_table";
|
|
835
|
+
if (defaultToChart) {
|
|
836
|
+
displayType = isAggregation((_f = (_e = response == null ? void 0 : response.data) == null ? void 0 : _e.data) == null ? void 0 : _f.columns) ? getFirstChartDisplayType(supportedDisplayTypes, "pivot_table") : "pivot_table";
|
|
868
837
|
}
|
|
869
|
-
return
|
|
870
|
-
}
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
if (aYear === bYear) {
|
|
876
|
-
return aSeasonIndex - bSeasonIndex;
|
|
838
|
+
return displayType;
|
|
839
|
+
}
|
|
840
|
+
if (!responseDisplayType && hasData(response) || responseDisplayType === "data") {
|
|
841
|
+
let displayType = "table";
|
|
842
|
+
if (defaultToChart) {
|
|
843
|
+
displayType = isAggregation((_h = (_g = response == null ? void 0 : response.data) == null ? void 0 : _g.data) == null ? void 0 : _h.columns) ? getFirstChartDisplayType(supportedDisplayTypes, "table") : "table";
|
|
877
844
|
}
|
|
878
|
-
return
|
|
845
|
+
return displayType;
|
|
879
846
|
}
|
|
880
|
-
return
|
|
847
|
+
return "text";
|
|
881
848
|
};
|
|
882
|
-
var
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
const aTrimmed = a.trim();
|
|
887
|
-
const bTrimmed = b.trim();
|
|
888
|
-
switch (col.precision) {
|
|
889
|
-
case "DOW": {
|
|
890
|
-
const dowStyle = col.dow_style ?? "ALPHA_MON";
|
|
891
|
-
let aIndex = WEEKDAY_NAMES_MON.findIndex((dow) => dow.toLowerCase().includes(aTrimmed.toLowerCase()));
|
|
892
|
-
let bIndex = WEEKDAY_NAMES_MON.findIndex((dow) => dow.toLowerCase().includes(bTrimmed.toLowerCase()));
|
|
893
|
-
if (dowStyle === "ALPHA_SUN") {
|
|
894
|
-
aIndex = WEEKDAY_NAMES_SUN.findIndex((dow) => dow.toLowerCase().includes(aTrimmed.toLowerCase()));
|
|
895
|
-
bIndex = WEEKDAY_NAMES_SUN.findIndex((dow) => dow.toLowerCase().includes(bTrimmed.toLowerCase()));
|
|
896
|
-
}
|
|
897
|
-
return aIndex - bIndex;
|
|
898
|
-
}
|
|
899
|
-
case "HOUR":
|
|
900
|
-
case "MINUTE": {
|
|
901
|
-
const aDayjsTime = dayjsWithPlugins_default.utc(aTrimmed, "THH:mm:ss.SSSZ").utc();
|
|
902
|
-
const bDayjsTime = dayjsWithPlugins_default.utc(bTrimmed, "THH:mm:ss.SSSZ").utc();
|
|
903
|
-
return aDayjsTime.unix() - bDayjsTime.unix();
|
|
904
|
-
}
|
|
905
|
-
case "MONTH": {
|
|
906
|
-
MONTH_NAMES;
|
|
907
|
-
const aMonthIndex = MONTH_NAMES.findIndex((m) => m.toLowerCase() === aTrimmed.toLowerCase());
|
|
908
|
-
const bMonthIndex = MONTH_NAMES.findIndex((m) => m.toLowerCase() === bTrimmed.toLowerCase());
|
|
909
|
-
return aMonthIndex - bMonthIndex;
|
|
910
|
-
}
|
|
911
|
-
default: {
|
|
912
|
-
return dateStringSortFnWithoutPrecision(aTrimmed, bTrimmed);
|
|
913
|
-
}
|
|
849
|
+
var hasData = (response) => {
|
|
850
|
+
var _a, _b, _c;
|
|
851
|
+
if (!response) {
|
|
852
|
+
return false;
|
|
914
853
|
}
|
|
854
|
+
return (_c = (_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.rows) == null ? void 0 : _c.length;
|
|
915
855
|
};
|
|
916
|
-
|
|
856
|
+
|
|
857
|
+
// src/HelperFns/dataAlertHelpers.ts
|
|
858
|
+
var getDayLocalStartDate = ({ timeObj, timezone: timezone2, daysToAdd = 0 }) => {
|
|
917
859
|
try {
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
} else if (a && !b || !col) {
|
|
923
|
-
return -1;
|
|
924
|
-
}
|
|
925
|
-
let aDate = Number(a);
|
|
926
|
-
let bDate = Number(b);
|
|
927
|
-
let sortValue = aDate - bDate;
|
|
928
|
-
if (isNaN(aDate) || isNaN(bDate)) {
|
|
929
|
-
if (col.type === "DATE_STRING") {
|
|
930
|
-
sortValue = dateStringSortFn(a, b, col);
|
|
931
|
-
} else {
|
|
932
|
-
sortValue = dayjsWithPlugins_default.utc(a).unix() - dayjsWithPlugins_default.utc(b).unix();
|
|
933
|
-
}
|
|
934
|
-
}
|
|
935
|
-
if (isTable && col.precision === "DOW") {
|
|
936
|
-
sortValue = -1 * sortValue;
|
|
860
|
+
const now = dayjsWithPlugins_default().tz(timezone2);
|
|
861
|
+
let nextCycle = now.startOf("minute").set("hour", timeObj.hour24).set("minute", timeObj.minute);
|
|
862
|
+
if (nextCycle.valueOf() < now.valueOf()) {
|
|
863
|
+
nextCycle = nextCycle.add(1, "day");
|
|
937
864
|
}
|
|
938
|
-
|
|
865
|
+
const nextCycleFormatted = nextCycle.add(daysToAdd, "days").format("YYYY-MM-DD[T]HH:mm:00");
|
|
866
|
+
return nextCycleFormatted;
|
|
939
867
|
} catch (error) {
|
|
940
868
|
console.error(error);
|
|
941
|
-
return
|
|
869
|
+
return;
|
|
942
870
|
}
|
|
943
871
|
};
|
|
944
|
-
var
|
|
872
|
+
var getWeekLocalStartDate = ({ weekDay, timeObj, timezone: timezone2 }) => {
|
|
945
873
|
try {
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
const
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
(a, b) => multiplier * dateSortFn(a[dateColumnIndex], b[dateColumnIndex], dateColumn, isTable)
|
|
955
|
-
);
|
|
956
|
-
return sortedData;
|
|
957
|
-
}
|
|
874
|
+
const now = dayjsWithPlugins_default().tz(timezone2);
|
|
875
|
+
const weekdayNumber = WEEKDAY_NAMES_SUN.findIndex((day) => weekDay.toLowerCase() === day.toLowerCase());
|
|
876
|
+
const nextWeekday = now.day(weekdayNumber).startOf("minute");
|
|
877
|
+
const nextWeekdayWithTime = nextWeekday.hour(timeObj.hour24).minute(timeObj.minute);
|
|
878
|
+
if (nextWeekdayWithTime.valueOf() < now.valueOf()) {
|
|
879
|
+
return nextWeekdayWithTime.add(1, "week").format("YYYY-MM-DD[T]HH:mm:00");
|
|
880
|
+
}
|
|
881
|
+
return nextWeekdayWithTime.format("YYYY-MM-DD[T]HH:mm:00");
|
|
958
882
|
} catch (error) {
|
|
959
883
|
console.error(error);
|
|
884
|
+
return;
|
|
960
885
|
}
|
|
961
|
-
return data;
|
|
962
886
|
};
|
|
963
|
-
var
|
|
964
|
-
element,
|
|
965
|
-
column,
|
|
966
|
-
config = dataFormattingDefault,
|
|
967
|
-
htmlElement,
|
|
968
|
-
isChart = false
|
|
969
|
-
}) => {
|
|
887
|
+
var getMonthLocalStartDate = ({ monthDay, timeObj, timezone: timezone2 }) => {
|
|
970
888
|
try {
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
}
|
|
982
|
-
case "DOLLAR_AMT": {
|
|
983
|
-
const elementNumber = parseFloat(`${element}`);
|
|
984
|
-
if (!isNaN(elementNumber)) {
|
|
985
|
-
const currency = currencyCode || "USD";
|
|
986
|
-
const validatedCurrencyDecimals = currencyDecimals || currencyDecimals === 0 ? currencyDecimals : void 0;
|
|
987
|
-
try {
|
|
988
|
-
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
989
|
-
style: "currency",
|
|
990
|
-
currency: `${currency}`,
|
|
991
|
-
minimumFractionDigits: validatedCurrencyDecimals,
|
|
992
|
-
maximumFractionDigits: validatedCurrencyDecimals
|
|
993
|
-
}).format(elementNumber);
|
|
994
|
-
} catch (error) {
|
|
995
|
-
console.error(error);
|
|
996
|
-
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
997
|
-
style: "currency",
|
|
998
|
-
currency: "USD",
|
|
999
|
-
minimumFractionDigits: validatedCurrencyDecimals,
|
|
1000
|
-
maximumFractionDigits: validatedCurrencyDecimals
|
|
1001
|
-
}).format(elementNumber);
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
break;
|
|
1005
|
-
}
|
|
1006
|
-
case "QUANTITY": {
|
|
1007
|
-
const validatedQuantityDecimals = !isNaN(quantityDecimals) ? quantityDecimals : 2;
|
|
1008
|
-
const elementNumber = parseFloat(`${element}`);
|
|
1009
|
-
if (!isNaN(elementNumber)) {
|
|
1010
|
-
const numDecimals = elementNumber % 1 !== 0 ? validatedQuantityDecimals : 0;
|
|
1011
|
-
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1012
|
-
minimumFractionDigits: numDecimals,
|
|
1013
|
-
maximumFractionDigits: numDecimals
|
|
1014
|
-
}).format(elementNumber);
|
|
1015
|
-
}
|
|
1016
|
-
break;
|
|
1017
|
-
}
|
|
1018
|
-
case "DATE": {
|
|
1019
|
-
formattedElement = formatDateType(element, column, config);
|
|
1020
|
-
break;
|
|
1021
|
-
}
|
|
1022
|
-
case "DATE_STRING": {
|
|
1023
|
-
formattedElement = formatDateStringType(element, column, config);
|
|
1024
|
-
break;
|
|
1025
|
-
}
|
|
1026
|
-
case "RATIO": {
|
|
1027
|
-
const numDecimals = !isNaN(ratioDecimals) ? ratioDecimals : 4;
|
|
1028
|
-
const elementNumber = parseFloat(`${element}`);
|
|
1029
|
-
if (!isNaN(elementNumber)) {
|
|
1030
|
-
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1031
|
-
minimumFractionDigits: numDecimals,
|
|
1032
|
-
maximumFractionDigits: numDecimals
|
|
1033
|
-
}).format(elementNumber);
|
|
1034
|
-
}
|
|
1035
|
-
break;
|
|
1036
|
-
}
|
|
1037
|
-
case "PERCENT": {
|
|
1038
|
-
const elementNumber = parseFloat(`${element}`);
|
|
1039
|
-
if (!isNaN(elementNumber)) {
|
|
1040
|
-
const p = elementNumber / 100;
|
|
1041
|
-
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1042
|
-
style: "percent",
|
|
1043
|
-
minimumFractionDigits: 2,
|
|
1044
|
-
maximumFractionDigits: 2
|
|
1045
|
-
}).format(p);
|
|
1046
|
-
if (htmlElement) {
|
|
1047
|
-
if (elementNumber < 0) {
|
|
1048
|
-
htmlElement.classList.add("comparison-value-negative");
|
|
1049
|
-
} else if (elementNumber > 0) {
|
|
1050
|
-
htmlElement.classList.add("comparison-value-positive");
|
|
1051
|
-
}
|
|
1052
|
-
}
|
|
1053
|
-
}
|
|
1054
|
-
break;
|
|
1055
|
-
}
|
|
1056
|
-
default: {
|
|
1057
|
-
break;
|
|
1058
|
-
}
|
|
1059
|
-
}
|
|
1060
|
-
}
|
|
1061
|
-
return formattedElement;
|
|
889
|
+
const now = dayjsWithPlugins_default().tz(timezone2);
|
|
890
|
+
let nextMonthStr;
|
|
891
|
+
if (monthDay === "LAST") {
|
|
892
|
+
nextMonthStr = now.endOf("month").startOf("day").format("ll HH:mm");
|
|
893
|
+
} else if (monthDay === "FIRST") {
|
|
894
|
+
nextMonthStr = now.add(1, "month").startOf("month").format("ll HH:mm");
|
|
895
|
+
}
|
|
896
|
+
const nextMonth = dayjsWithPlugins_default.tz(nextMonthStr, timezone2);
|
|
897
|
+
const nextMonthWithTime = nextMonth.hour(timeObj.hour24).minute(timeObj.minute);
|
|
898
|
+
return nextMonthWithTime.format("YYYY-MM-DD[T]HH:mm:00");
|
|
1062
899
|
} catch (error) {
|
|
1063
900
|
console.error(error);
|
|
1064
|
-
return
|
|
901
|
+
return;
|
|
1065
902
|
}
|
|
1066
903
|
};
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
904
|
+
|
|
905
|
+
// src/Constants/dataAlertConstants.ts
|
|
906
|
+
var CUSTOM_TYPE = "CUSTOM";
|
|
907
|
+
var PROJECT_TYPE = "PROJECT";
|
|
908
|
+
var PERIODIC_TYPE = "PERIODIC";
|
|
909
|
+
var CONTINUOUS_TYPE = "CONTINUOUS";
|
|
910
|
+
var SCHEDULED_TYPE = "SCHEDULED";
|
|
911
|
+
var COMPARE_TYPE = "COMPARE";
|
|
912
|
+
var EXISTS_TYPE = "EXISTS";
|
|
913
|
+
var NUMBER_TERM_TYPE = "CONSTANT";
|
|
914
|
+
var QUERY_TERM_TYPE = "QUERY";
|
|
915
|
+
var GROUP_TERM_TYPE = "GROUP";
|
|
916
|
+
var DEFAULT_EVALUATION_FREQUENCY = 5;
|
|
917
|
+
var DATA_ALERT_STATUSES = {
|
|
918
|
+
ACTIVE: "ACTIVE",
|
|
919
|
+
// currently running
|
|
920
|
+
RETRY: "RETRY",
|
|
921
|
+
// currently being retried because of an error, no action required yet
|
|
922
|
+
WAITING: "WAITING",
|
|
923
|
+
// active but triggered already and waiting for the reset period to end
|
|
924
|
+
INACTIVE: "INACTIVE",
|
|
925
|
+
// either not running OR it is a prototype (can not be run)
|
|
926
|
+
EVALUATION_ERROR: "EVALUATION_ERROR",
|
|
927
|
+
// expression evaluation resulted in an error
|
|
928
|
+
DATA_RETURN_ERROR: "DATA_RETURN_ERROR",
|
|
929
|
+
// expression evaluation was successful, but data return query failed
|
|
930
|
+
GENERAL_ERROR: "GENERAL_ERROR"
|
|
931
|
+
// every thing else that doesnt fall into a category above
|
|
932
|
+
};
|
|
933
|
+
var DATA_ALERT_ENABLED_STATUSES = [
|
|
934
|
+
DATA_ALERT_STATUSES.ACTIVE,
|
|
935
|
+
DATA_ALERT_STATUSES.RETRY,
|
|
936
|
+
DATA_ALERT_STATUSES.WAITING
|
|
937
|
+
];
|
|
938
|
+
var DATA_ALERT_OPERATORS = {
|
|
939
|
+
GREATER_THAN: {
|
|
940
|
+
displayName: `
|
|
941
|
+
<span>
|
|
942
|
+
Is <strong>greater</strong> than
|
|
943
|
+
</span>
|
|
944
|
+
`,
|
|
945
|
+
symbol: ">",
|
|
946
|
+
conditionText: "exceeds",
|
|
947
|
+
conditionTextPast: "exceeded"
|
|
948
|
+
},
|
|
949
|
+
GREATER_THAN_EQUAL_TO: {
|
|
950
|
+
displayName: `
|
|
951
|
+
<span>
|
|
952
|
+
Is <strong>greater</strong> than <strong>or equal</strong> to
|
|
953
|
+
</span>
|
|
954
|
+
`,
|
|
955
|
+
symbol: ">=",
|
|
956
|
+
conditionText: "is equal to or exceeds",
|
|
957
|
+
conditionTextPast: "was equal to or exceeded"
|
|
958
|
+
},
|
|
959
|
+
LESS_THAN: {
|
|
960
|
+
displayName: `
|
|
961
|
+
<span>
|
|
962
|
+
Is <strong>less</strong> than
|
|
963
|
+
</span>
|
|
964
|
+
`,
|
|
965
|
+
symbol: "<",
|
|
966
|
+
conditionText: "falls below",
|
|
967
|
+
conditionTextPast: "fell below"
|
|
968
|
+
},
|
|
969
|
+
LESS_THAN_EQUAL_TO: {
|
|
970
|
+
displayName: `
|
|
971
|
+
<span>
|
|
972
|
+
Is <strong>less</strong> than <strong>or equal</strong> to
|
|
973
|
+
</span>
|
|
974
|
+
`,
|
|
975
|
+
symbol: "<=",
|
|
976
|
+
conditionText: "is equal to or falls below",
|
|
977
|
+
conditionTextPast: "was equal to or fell below"
|
|
978
|
+
},
|
|
979
|
+
EQUAL_TO: {
|
|
980
|
+
displayName: `
|
|
981
|
+
<span>
|
|
982
|
+
Is <strong>equal</strong> to
|
|
983
|
+
</span>
|
|
984
|
+
`,
|
|
985
|
+
symbol: "=",
|
|
986
|
+
conditionText: "equals",
|
|
987
|
+
conditionTextPast: "was equal to"
|
|
988
|
+
}
|
|
989
|
+
/* Not using this for now. Uncomment to enable later if desired
|
|
990
|
+
NOT_EQUAL_TO: {
|
|
991
|
+
displayName: (
|
|
992
|
+
<span>
|
|
993
|
+
Is <strong>not equal</strong> to
|
|
994
|
+
</span>
|
|
995
|
+
),
|
|
996
|
+
symbol: '!=',
|
|
997
|
+
conditionText: 'does not equal',
|
|
998
|
+
conditionTextPast: 'was not equal to',
|
|
999
|
+
}, */
|
|
1000
|
+
/* These are additions term condition values
|
|
1001
|
+
They can be used to create more complex condition groups
|
|
1002
|
+
EXISTS: {},
|
|
1003
|
+
NOT_EXISTS: {},
|
|
1004
|
+
AND: {},
|
|
1005
|
+
OR: {},
|
|
1006
|
+
TERMINATOR: {} */
|
|
1007
|
+
};
|
|
1008
|
+
var DATA_ALERT_CONDITION_TYPES = {
|
|
1009
|
+
[COMPARE_TYPE]: {
|
|
1010
|
+
displayName: "When a specific condition is met"
|
|
1011
|
+
},
|
|
1012
|
+
[EXISTS_TYPE]: {
|
|
1013
|
+
displayName: "If new data is detected"
|
|
1087
1014
|
}
|
|
1088
|
-
return { minimumFractionDigits, maximumFractionDigits, notation };
|
|
1089
1015
|
};
|
|
1090
|
-
var
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1016
|
+
var DATA_ALERT_FREQUENCY_TYPE_OPTIONS = {
|
|
1017
|
+
[SCHEDULED_TYPE]: {
|
|
1018
|
+
label: "at the following times:",
|
|
1019
|
+
listLabel: "at the following times"
|
|
1020
|
+
},
|
|
1021
|
+
[CONTINUOUS_TYPE]: {
|
|
1022
|
+
label: "right away.",
|
|
1023
|
+
listLabel: "right away"
|
|
1024
|
+
}
|
|
1025
|
+
};
|
|
1026
|
+
var SCHEDULE_INTERVAL_OPTIONS = {
|
|
1027
|
+
DAY: {
|
|
1028
|
+
displayName: `
|
|
1029
|
+
<span>
|
|
1030
|
+
Every <strong>day</strong>
|
|
1031
|
+
</span>
|
|
1032
|
+
`,
|
|
1033
|
+
getLocalStartDate: getDayLocalStartDate
|
|
1034
|
+
},
|
|
1035
|
+
WEEK: {
|
|
1036
|
+
displayName: `
|
|
1037
|
+
<span>
|
|
1038
|
+
Every <strong>week</strong>
|
|
1039
|
+
</span>
|
|
1040
|
+
`,
|
|
1041
|
+
getLocalStartDate: getWeekLocalStartDate
|
|
1042
|
+
},
|
|
1043
|
+
MONTH: {
|
|
1044
|
+
displayName: `
|
|
1045
|
+
<span>
|
|
1046
|
+
Every <strong>month</strong>
|
|
1047
|
+
</span>
|
|
1048
|
+
`,
|
|
1049
|
+
getLocalStartDate: getMonthLocalStartDate
|
|
1050
|
+
}
|
|
1051
|
+
// Not supporting for now
|
|
1052
|
+
// YEAR: {
|
|
1053
|
+
// displayName: (
|
|
1054
|
+
// <span>
|
|
1055
|
+
// Every <strong>year</strong>
|
|
1056
|
+
// </span>
|
|
1057
|
+
// ),
|
|
1058
|
+
// displayText: 'Scheduled yearly',
|
|
1059
|
+
// },
|
|
1060
|
+
};
|
|
1061
|
+
var SCHEDULE_FREQUENCY_OPTIONS = {
|
|
1062
|
+
DAY: {
|
|
1063
|
+
displayText: "Scheduled daily"
|
|
1064
|
+
},
|
|
1065
|
+
WEEK: {
|
|
1066
|
+
displayText: "Scheduled weekly"
|
|
1067
|
+
},
|
|
1068
|
+
MONTH: {
|
|
1069
|
+
displayText: "Scheduled for the 1st of every month"
|
|
1070
|
+
},
|
|
1071
|
+
MONTH_LAST_DAY: {
|
|
1072
|
+
displayText: "Scheduled for the end of every month"
|
|
1073
|
+
},
|
|
1074
|
+
YEAR: {
|
|
1075
|
+
displayText: "Scheduled yearly"
|
|
1076
|
+
}
|
|
1077
|
+
};
|
|
1078
|
+
var RESET_PERIOD_OPTIONS = {
|
|
1079
|
+
DAY: {
|
|
1080
|
+
displayName: `
|
|
1081
|
+
<span>
|
|
1082
|
+
At most <strong>once a day</strong>
|
|
1083
|
+
</span>
|
|
1084
|
+
`,
|
|
1085
|
+
displayText: "At most once a day"
|
|
1086
|
+
},
|
|
1087
|
+
WEEK: {
|
|
1088
|
+
displayName: `
|
|
1089
|
+
<span>
|
|
1090
|
+
At most <strong>once a week</strong>
|
|
1091
|
+
</span>
|
|
1092
|
+
`,
|
|
1093
|
+
displayText: "At most once a week"
|
|
1094
|
+
},
|
|
1095
|
+
MONTH: {
|
|
1096
|
+
displayName: `
|
|
1097
|
+
<span>
|
|
1098
|
+
At most <strong>once a month</strong>
|
|
1099
|
+
</span>
|
|
1100
|
+
`,
|
|
1101
|
+
displayText: "At most once a month"
|
|
1102
|
+
},
|
|
1103
|
+
// Not supporting for now
|
|
1104
|
+
// YEAR: {
|
|
1105
|
+
// displayName: (
|
|
1106
|
+
// <span>
|
|
1107
|
+
// At most <strong>once a year</strong>
|
|
1108
|
+
// </span>
|
|
1109
|
+
// ),
|
|
1110
|
+
// displayText: 'At most once a year'
|
|
1111
|
+
// },
|
|
1112
|
+
NONE: {
|
|
1113
|
+
displayName: `
|
|
1114
|
+
<span>
|
|
1115
|
+
<strong>Every time</strong> new data is detected
|
|
1116
|
+
</span>
|
|
1117
|
+
`,
|
|
1118
|
+
displayText: "Continuous"
|
|
1119
|
+
}
|
|
1120
|
+
};
|
|
1121
|
+
var MONTH_DAY_SELECT_OPTIONS = {
|
|
1122
|
+
FIRST: `
|
|
1123
|
+
<span>
|
|
1124
|
+
on the <strong>first day</strong>
|
|
1125
|
+
</span>
|
|
1126
|
+
`,
|
|
1127
|
+
LAST: `
|
|
1128
|
+
<span>
|
|
1129
|
+
on the <strong>last day</strong>
|
|
1130
|
+
</span>
|
|
1131
|
+
`
|
|
1132
|
+
};
|
|
1133
|
+
var EVALUATION_FREQUENCY_OPTIONS = {
|
|
1134
|
+
1: {
|
|
1135
|
+
value: 1,
|
|
1136
|
+
label: "1 min"
|
|
1137
|
+
},
|
|
1138
|
+
2: {
|
|
1139
|
+
value: 2,
|
|
1140
|
+
label: "2 mins"
|
|
1141
|
+
},
|
|
1142
|
+
3: {
|
|
1143
|
+
value: 3,
|
|
1144
|
+
label: "3 mins"
|
|
1145
|
+
},
|
|
1146
|
+
5: {
|
|
1147
|
+
value: 5,
|
|
1148
|
+
label: "5 mins",
|
|
1149
|
+
listLabel: `
|
|
1150
|
+
<span>
|
|
1151
|
+
5 mins <em>(Recommended)</em>
|
|
1152
|
+
</span>
|
|
1153
|
+
`
|
|
1154
|
+
},
|
|
1155
|
+
10: {
|
|
1156
|
+
value: 10,
|
|
1157
|
+
label: "10 mins"
|
|
1158
|
+
},
|
|
1159
|
+
30: {
|
|
1160
|
+
value: 30,
|
|
1161
|
+
label: "30 mins"
|
|
1162
|
+
},
|
|
1163
|
+
60: {
|
|
1164
|
+
value: 60,
|
|
1165
|
+
label: "60 mins"
|
|
1103
1166
|
}
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1167
|
+
};
|
|
1168
|
+
|
|
1169
|
+
// src/Constants/queryConstants.ts
|
|
1170
|
+
var DEFAULT_SOURCE = "widgets";
|
|
1171
|
+
|
|
1172
|
+
// src/Constants/enums.ts
|
|
1173
|
+
var TimestampFormats = /* @__PURE__ */ ((TimestampFormats2) => {
|
|
1174
|
+
TimestampFormats2["epoch"] = "EPOCH";
|
|
1175
|
+
TimestampFormats2["iso8601"] = "ISO8601";
|
|
1176
|
+
return TimestampFormats2;
|
|
1177
|
+
})(TimestampFormats || {});
|
|
1178
|
+
var PrecisionTypes = /* @__PURE__ */ ((PrecisionTypes2) => {
|
|
1179
|
+
PrecisionTypes2["DAY"] = "DAY";
|
|
1180
|
+
PrecisionTypes2["MONTH"] = "MONTH";
|
|
1181
|
+
PrecisionTypes2["YEAR"] = "YEAR";
|
|
1182
|
+
PrecisionTypes2["WEEK"] = "WEEK";
|
|
1183
|
+
PrecisionTypes2["QUARTER"] = "QUARTER";
|
|
1184
|
+
PrecisionTypes2["DATE_HOUR"] = "DATE_HOUR";
|
|
1185
|
+
PrecisionTypes2["DATE_MINUTE"] = "DATE_MINUTE";
|
|
1186
|
+
PrecisionTypes2["HOUR"] = "HOUR";
|
|
1187
|
+
PrecisionTypes2["MINUTE"] = "MINUTE";
|
|
1188
|
+
return PrecisionTypes2;
|
|
1189
|
+
})(PrecisionTypes || {});
|
|
1190
|
+
var NumberColumnTypes = /* @__PURE__ */ ((NumberColumnTypes2) => {
|
|
1191
|
+
NumberColumnTypes2["CURRENCY"] = "DOLLAR_AMT";
|
|
1192
|
+
NumberColumnTypes2["QUANTITY"] = "QUANTITY";
|
|
1193
|
+
NumberColumnTypes2["RATIO"] = "RATIO";
|
|
1194
|
+
NumberColumnTypes2["PERCENT"] = "PERCENT";
|
|
1195
|
+
return NumberColumnTypes2;
|
|
1196
|
+
})(NumberColumnTypes || {});
|
|
1197
|
+
var NumberColumnTypeDisplayNames = /* @__PURE__ */ ((NumberColumnTypeDisplayNames2) => {
|
|
1198
|
+
NumberColumnTypeDisplayNames2["DOLLAR_AMT"] = "Currency";
|
|
1199
|
+
NumberColumnTypeDisplayNames2["QUANTITY"] = "Quantity";
|
|
1200
|
+
NumberColumnTypeDisplayNames2["RATIO"] = "Ratio";
|
|
1201
|
+
NumberColumnTypeDisplayNames2["PERCENT"] = "Percent";
|
|
1202
|
+
return NumberColumnTypeDisplayNames2;
|
|
1203
|
+
})(NumberColumnTypeDisplayNames || {});
|
|
1204
|
+
var DataExplorerTypes = /* @__PURE__ */ ((DataExplorerTypes2) => {
|
|
1205
|
+
DataExplorerTypes2["SUBJECT_TYPE"] = "subject";
|
|
1206
|
+
DataExplorerTypes2["VL_TYPE"] = "VL";
|
|
1207
|
+
return DataExplorerTypes2;
|
|
1208
|
+
})(DataExplorerTypes || {});
|
|
1209
|
+
|
|
1210
|
+
// src/Constants/defaults.ts
|
|
1211
|
+
var authenticationDefault = {
|
|
1212
|
+
token: void 0,
|
|
1213
|
+
apiKey: void 0,
|
|
1214
|
+
domain: void 0,
|
|
1215
|
+
dprKey: void 0,
|
|
1216
|
+
dprDomain: void 0
|
|
1217
|
+
};
|
|
1218
|
+
var dataFormattingDefault = {
|
|
1219
|
+
timestampFormat: "ISO8601" /* iso8601 */,
|
|
1220
|
+
currencyCode: "USD",
|
|
1221
|
+
languageCode: "en-US",
|
|
1222
|
+
currencyDecimals: 2,
|
|
1223
|
+
quantityDecimals: 2,
|
|
1224
|
+
ratioDecimals: 4,
|
|
1225
|
+
comparisonDisplay: "PERCENT",
|
|
1226
|
+
monthYearFormat: "MMMM YYYY",
|
|
1227
|
+
dayMonthYearFormat: "ll"
|
|
1228
|
+
};
|
|
1229
|
+
var autoQLConfigDefault = {
|
|
1230
|
+
debug: false,
|
|
1231
|
+
test: false,
|
|
1232
|
+
enableAutocomplete: true,
|
|
1233
|
+
enableQueryInterpretation: true,
|
|
1234
|
+
enableQueryValidation: true,
|
|
1235
|
+
enableQuerySuggestions: true,
|
|
1236
|
+
enableColumnVisibilityManager: true,
|
|
1237
|
+
enableDrilldowns: true,
|
|
1238
|
+
enableNotifications: false,
|
|
1239
|
+
enableCSVDownload: true,
|
|
1240
|
+
enableReportProblem: true
|
|
1241
|
+
};
|
|
1242
|
+
var dataConfigDefault = {
|
|
1243
|
+
stringColumnIndices: [],
|
|
1244
|
+
numberColumnIndices: [],
|
|
1245
|
+
stringColumnIndex: 0,
|
|
1246
|
+
legendColumnIndex: void 0,
|
|
1247
|
+
numberColumnIndex: 1
|
|
1248
|
+
};
|
|
1249
|
+
var getAuthentication = (prop = {}) => {
|
|
1250
|
+
return {
|
|
1251
|
+
...authenticationDefault,
|
|
1252
|
+
...prop
|
|
1253
|
+
};
|
|
1254
|
+
};
|
|
1255
|
+
var getDataFormatting = (prop = {}) => {
|
|
1256
|
+
return {
|
|
1257
|
+
...dataFormattingDefault,
|
|
1258
|
+
...prop
|
|
1259
|
+
};
|
|
1260
|
+
};
|
|
1261
|
+
var getAutoQLConfig = (prop = {}) => {
|
|
1262
|
+
return {
|
|
1263
|
+
...autoQLConfigDefault,
|
|
1264
|
+
...prop
|
|
1265
|
+
};
|
|
1266
|
+
};
|
|
1267
|
+
var getDataConfig = (prop = {}) => {
|
|
1268
|
+
return {
|
|
1269
|
+
...dataConfigDefault,
|
|
1270
|
+
...prop
|
|
1271
|
+
};
|
|
1272
|
+
};
|
|
1273
|
+
|
|
1274
|
+
// src/HelperFns/dataFormattingHelpers.ts
|
|
1275
|
+
var formatStringDateWithPrecision = (value, col) => {
|
|
1276
|
+
if (!value) {
|
|
1277
|
+
return void 0;
|
|
1109
1278
|
}
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
column: column ?? (scale == null ? void 0 : scale.column),
|
|
1116
|
-
config: dataFormatting,
|
|
1117
|
-
isChart: true
|
|
1118
|
-
});
|
|
1119
|
-
} else {
|
|
1120
|
-
switch (type) {
|
|
1121
|
-
case "STRING": {
|
|
1279
|
+
let formattedValue = value;
|
|
1280
|
+
try {
|
|
1281
|
+
switch (col.precision) {
|
|
1282
|
+
case "DOW": {
|
|
1283
|
+
formattedValue = formatDOW(value, col);
|
|
1122
1284
|
break;
|
|
1123
1285
|
}
|
|
1124
|
-
case "
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
const currencyConfig = {
|
|
1129
|
-
style,
|
|
1130
|
-
minimumFractionDigits,
|
|
1131
|
-
maximumFractionDigits,
|
|
1132
|
-
notation
|
|
1133
|
-
};
|
|
1134
|
-
try {
|
|
1135
|
-
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1136
|
-
...currencyConfig,
|
|
1137
|
-
currency
|
|
1138
|
-
}).format(d);
|
|
1139
|
-
} catch (error) {
|
|
1140
|
-
console.error(error);
|
|
1141
|
-
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1142
|
-
...currencyConfig,
|
|
1143
|
-
currency: "USD"
|
|
1144
|
-
}).format(d);
|
|
1145
|
-
}
|
|
1286
|
+
case "HOUR": {
|
|
1287
|
+
const dayjsTime = dayjsWithPlugins_default.utc(value, "THH:mm:ss.SSSZ").utc();
|
|
1288
|
+
if (dayjsTime.isValid()) {
|
|
1289
|
+
formattedValue = dayjsTime.format("h:00A");
|
|
1146
1290
|
}
|
|
1147
1291
|
break;
|
|
1148
1292
|
}
|
|
1149
|
-
case "
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
maximumFractionDigits,
|
|
1154
|
-
notation
|
|
1155
|
-
}).format(d);
|
|
1293
|
+
case "MINUTE": {
|
|
1294
|
+
const dayjsTime = dayjsWithPlugins_default.utc(value, "THH:mm:ss.SSSZ").utc();
|
|
1295
|
+
if (dayjsTime.isValid()) {
|
|
1296
|
+
formattedValue = dayjsTime.format("h:mmA");
|
|
1156
1297
|
}
|
|
1157
1298
|
break;
|
|
1158
1299
|
}
|
|
1159
|
-
case "
|
|
1160
|
-
|
|
1161
|
-
break;
|
|
1162
|
-
}
|
|
1163
|
-
case "DATE_STRING": {
|
|
1164
|
-
formattedLabel = formatDateStringType(d, col, config);
|
|
1165
|
-
break;
|
|
1166
|
-
}
|
|
1167
|
-
case "PERCENT": {
|
|
1168
|
-
if (Number(d) || Number(d) === 0) {
|
|
1169
|
-
const p = Number(d) / 100;
|
|
1170
|
-
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1171
|
-
style: "percent",
|
|
1172
|
-
minimumFractionDigits: 1,
|
|
1173
|
-
maximumFractionDigits: 1
|
|
1174
|
-
}).format(p);
|
|
1175
|
-
}
|
|
1300
|
+
case "MONTH": {
|
|
1301
|
+
formattedValue = value;
|
|
1176
1302
|
break;
|
|
1177
1303
|
}
|
|
1178
1304
|
default: {
|
|
1305
|
+
formattedValue = value;
|
|
1179
1306
|
break;
|
|
1180
1307
|
}
|
|
1181
1308
|
}
|
|
1182
|
-
|
|
1183
|
-
const fullWidthLabel = formattedLabel;
|
|
1184
|
-
if (typeof formattedLabel === "string" && maxLabelWidth && formattedLabel.length > maxLabelWidth) {
|
|
1185
|
-
formattedLabel = `${formattedLabel.substring(0, maxLabelWidth)}...`;
|
|
1186
|
-
}
|
|
1187
|
-
return { fullWidthLabel, formattedLabel };
|
|
1188
|
-
};
|
|
1189
|
-
var getCurrencySymbol = (dataFormatting = dataFormattingDefault) => {
|
|
1190
|
-
var _a;
|
|
1191
|
-
try {
|
|
1192
|
-
const { currencyCode, languageCode } = getDataFormatting(dataFormatting);
|
|
1193
|
-
const formattedParts = new Intl.NumberFormat(languageCode, {
|
|
1194
|
-
style: "currency",
|
|
1195
|
-
currency: currencyCode
|
|
1196
|
-
}).formatToParts(0);
|
|
1197
|
-
const symbol = (_a = formattedParts.find((part) => (part == null ? void 0 : part.type) === "currency")) == null ? void 0 : _a.value;
|
|
1198
|
-
return symbol;
|
|
1309
|
+
return formattedValue;
|
|
1199
1310
|
} catch (error) {
|
|
1200
1311
|
console.error(error);
|
|
1201
|
-
return;
|
|
1312
|
+
return value;
|
|
1202
1313
|
}
|
|
1203
1314
|
};
|
|
1204
|
-
var
|
|
1315
|
+
var formatStringDate = (value, config = dataFormattingDefault) => {
|
|
1316
|
+
var _a;
|
|
1205
1317
|
if (!value) {
|
|
1206
1318
|
return void 0;
|
|
1207
1319
|
}
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
return void 0;
|
|
1219
|
-
}
|
|
1220
|
-
default: {
|
|
1221
|
-
return void 0;
|
|
1222
|
-
}
|
|
1223
|
-
}
|
|
1224
|
-
} catch (error) {
|
|
1225
|
-
console.error(error);
|
|
1226
|
-
return void 0;
|
|
1227
|
-
}
|
|
1228
|
-
};
|
|
1229
|
-
var getDayJSObj = ({ value, column }) => {
|
|
1230
|
-
if (column.type === "DATE_STRING") {
|
|
1231
|
-
return getDayjsObjForStringType(value, column);
|
|
1232
|
-
}
|
|
1233
|
-
if (isNumber(value)) {
|
|
1234
|
-
return dayjsWithPlugins_default.unix(value).utc();
|
|
1235
|
-
}
|
|
1236
|
-
return dayjsWithPlugins_default.utc(value).utc();
|
|
1237
|
-
};
|
|
1238
|
-
var getEpochFromDate = (date, precision, precisionFrame) => {
|
|
1239
|
-
if (date == null ? void 0 : date.getTime) {
|
|
1240
|
-
if (precision && precisionFrame === "start") {
|
|
1241
|
-
return dayjsWithPlugins_default(date).utc().startOf(precision).valueOf();
|
|
1242
|
-
} else if (precision && precisionFrame === "end") {
|
|
1243
|
-
return dayjsWithPlugins_default(date).utc().endOf(precision).valueOf();
|
|
1244
|
-
}
|
|
1245
|
-
return date.getTime();
|
|
1246
|
-
}
|
|
1247
|
-
return;
|
|
1248
|
-
};
|
|
1249
|
-
|
|
1250
|
-
// src/HelperFns/arrayHelpers.ts
|
|
1251
|
-
var import_lodash = __toESM(require("lodash.isequal"));
|
|
1252
|
-
var invertArray = (array) => {
|
|
1253
|
-
const numRows = array.length;
|
|
1254
|
-
const numColumns = array[0].length;
|
|
1255
|
-
const invertedArray = [];
|
|
1256
|
-
for (let i = 0; i < numColumns; i++) {
|
|
1257
|
-
invertedArray[i] = [];
|
|
1258
|
-
for (let j = 0; j < numRows; j++) {
|
|
1259
|
-
if (array[j][i])
|
|
1260
|
-
invertedArray[i][j] = array[j][i];
|
|
1320
|
+
if (value && typeof value === "string") {
|
|
1321
|
+
const dateArray = value.split("-");
|
|
1322
|
+
const year = dateArray == null ? void 0 : dateArray[0];
|
|
1323
|
+
const day = dateArray == null ? void 0 : dateArray[2];
|
|
1324
|
+
let month;
|
|
1325
|
+
let week;
|
|
1326
|
+
if ((_a = dateArray == null ? void 0 : dateArray[1]) == null ? void 0 : _a.includes("W")) {
|
|
1327
|
+
week = dateArray == null ? void 0 : dateArray[1];
|
|
1328
|
+
} else {
|
|
1329
|
+
month = dateArray == null ? void 0 : dateArray[1];
|
|
1261
1330
|
}
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
return (a == null ? void 0 : a.toString()) == (b == null ? void 0 : b.toString());
|
|
1267
|
-
};
|
|
1268
|
-
var isObject = (obj) => {
|
|
1269
|
-
return typeof obj === "object" && !Array.isArray(obj) && obj !== null && obj !== void 0;
|
|
1270
|
-
};
|
|
1271
|
-
var deepEqual = (objA, objB) => {
|
|
1272
|
-
const lodashIsEqual = (0, import_lodash.default)(objA, objB);
|
|
1273
|
-
if (lodashIsEqual) {
|
|
1274
|
-
return true;
|
|
1275
|
-
}
|
|
1276
|
-
const objAIsObject = isObject(objA);
|
|
1277
|
-
const objBIsObject = isObject(objB);
|
|
1278
|
-
if (!objAIsObject || !objBIsObject) {
|
|
1279
|
-
return lodashIsEqual;
|
|
1280
|
-
}
|
|
1281
|
-
const keysA = Object.keys(objA);
|
|
1282
|
-
const keysB = Object.keys(objB);
|
|
1283
|
-
if (keysA.length !== keysB.length) {
|
|
1284
|
-
return false;
|
|
1285
|
-
}
|
|
1286
|
-
for (let i = 0; i < keysA.length; i++) {
|
|
1287
|
-
if (typeof objA[keysA[i]] === "function" && typeof objB[keysA[i]] === "function") {
|
|
1288
|
-
if (!functionsEqual(objA[keysA[i]], objB[keysA[i]])) {
|
|
1289
|
-
return false;
|
|
1290
|
-
}
|
|
1291
|
-
} else if (!Object.hasOwnProperty.call(objB, keysA[i]) || !(0, import_lodash.default)(objA[keysA[i]], objB[keysA[i]])) {
|
|
1292
|
-
return false;
|
|
1331
|
+
const { monthYearFormat, dayMonthYearFormat } = getDataFormatting(config);
|
|
1332
|
+
const dayJSObj = dayjsWithPlugins_default.utc(value).utc();
|
|
1333
|
+
if (!dayJSObj.isValid()) {
|
|
1334
|
+
return value;
|
|
1293
1335
|
}
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
if (
|
|
1301
|
-
|
|
1302
|
-
diff.push({
|
|
1303
|
-
key,
|
|
1304
|
-
objA: objA[key],
|
|
1305
|
-
objB: objB[key]
|
|
1306
|
-
});
|
|
1307
|
-
}
|
|
1308
|
-
} else if (!Object.is(objA[key], objB[key])) {
|
|
1309
|
-
diff.push({
|
|
1310
|
-
key,
|
|
1311
|
-
objA: objA[key],
|
|
1312
|
-
objB: objB[key]
|
|
1313
|
-
});
|
|
1336
|
+
let date = value;
|
|
1337
|
+
if (day) {
|
|
1338
|
+
date = dayJSObj.format(dayMonthYearFormat);
|
|
1339
|
+
} else if (month) {
|
|
1340
|
+
date = dayJSObj.format(monthYearFormat);
|
|
1341
|
+
} else if (week) {
|
|
1342
|
+
} else if (year) {
|
|
1343
|
+
date = year;
|
|
1314
1344
|
}
|
|
1315
|
-
|
|
1316
|
-
return diff;
|
|
1317
|
-
};
|
|
1318
|
-
var rotateArray = (array, n) => {
|
|
1319
|
-
const rotated = [...array];
|
|
1320
|
-
n = n % array.length;
|
|
1321
|
-
if (n < 0)
|
|
1322
|
-
n = array.length + n;
|
|
1323
|
-
for (let i = 0; i < n; i++) {
|
|
1324
|
-
rotated.unshift(rotated.pop());
|
|
1345
|
+
return date;
|
|
1325
1346
|
}
|
|
1326
|
-
return
|
|
1327
|
-
};
|
|
1328
|
-
var onlyUnique = (value, index, self) => {
|
|
1329
|
-
return self.indexOf(value) === index;
|
|
1347
|
+
return value;
|
|
1330
1348
|
};
|
|
1331
|
-
var
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
arr[i] = [];
|
|
1335
|
-
for (let j = 0; j < w; j++) {
|
|
1336
|
-
arr[i][j] = value;
|
|
1337
|
-
}
|
|
1349
|
+
var formatDateType = (element, column, config = dataFormattingDefault) => {
|
|
1350
|
+
if (isNumber(element)) {
|
|
1351
|
+
return formatEpochDate(element, column, config);
|
|
1338
1352
|
}
|
|
1339
|
-
return
|
|
1340
|
-
};
|
|
1341
|
-
|
|
1342
|
-
// src/HelperFns/displayTypeHelpers.ts
|
|
1343
|
-
var isChartType = (type) => CHART_TYPES.includes(type);
|
|
1344
|
-
var isTableType = (type) => TABLE_TYPES.includes(type);
|
|
1345
|
-
var isDisplayTypeValid = (response, displayType, dataLength, pivotDataLength, columns, isDataLimited) => {
|
|
1346
|
-
var _a, _b;
|
|
1347
|
-
const supportedDisplayTypes = getSupportedDisplayTypes({
|
|
1348
|
-
response,
|
|
1349
|
-
columns: columns ?? ((_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.columns),
|
|
1350
|
-
dataLength,
|
|
1351
|
-
pivotDataLength,
|
|
1352
|
-
isDataLimited
|
|
1353
|
-
});
|
|
1354
|
-
const isValid = displayType && supportedDisplayTypes.includes(displayType);
|
|
1355
|
-
return isValid;
|
|
1353
|
+
return formatISODateWithPrecision(element, column, config);
|
|
1356
1354
|
};
|
|
1357
|
-
var
|
|
1358
|
-
if (
|
|
1359
|
-
return
|
|
1355
|
+
var formatDateStringType = (element, column, config = dataFormattingDefault) => {
|
|
1356
|
+
if (!column) {
|
|
1357
|
+
return element;
|
|
1360
1358
|
}
|
|
1361
|
-
|
|
1362
|
-
|
|
1359
|
+
if (column.precision) {
|
|
1360
|
+
return formatStringDateWithPrecision(element, column);
|
|
1361
|
+
}
|
|
1362
|
+
return formatStringDate(element, config);
|
|
1363
1363
|
};
|
|
1364
|
-
var
|
|
1365
|
-
if (
|
|
1366
|
-
return
|
|
1364
|
+
var formatISODateWithPrecision = (value, col, config = dataFormattingDefault) => {
|
|
1365
|
+
if (!value) {
|
|
1366
|
+
return void 0;
|
|
1367
1367
|
}
|
|
1368
|
-
if (
|
|
1369
|
-
return
|
|
1368
|
+
if (!col) {
|
|
1369
|
+
return value;
|
|
1370
1370
|
}
|
|
1371
|
-
|
|
1372
|
-
};
|
|
1373
|
-
|
|
1374
|
-
if (
|
|
1375
|
-
return
|
|
1371
|
+
const precision = col.precision;
|
|
1372
|
+
const { dayMonthYearFormat, monthYearFormat } = getDataFormatting(config);
|
|
1373
|
+
const dateDayJS = dayjsWithPlugins_default.utc(value).utc();
|
|
1374
|
+
if (!dateDayJS.isValid()) {
|
|
1375
|
+
return value;
|
|
1376
1376
|
}
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1377
|
+
let date = dateDayJS.format(dayMonthYearFormat);
|
|
1378
|
+
try {
|
|
1379
|
+
switch (precision) {
|
|
1380
|
+
case "DAY" /* DAY */: {
|
|
1381
|
+
break;
|
|
1382
|
+
}
|
|
1383
|
+
case "WEEK" /* WEEK */: {
|
|
1384
|
+
const dateJSStart = dateDayJS.startOf("week").format("MMM D");
|
|
1385
|
+
const dateJSEnd = dateDayJS.endOf("week").format("MMM D");
|
|
1386
|
+
const week = dateDayJS.week();
|
|
1387
|
+
const year = dateDayJS.format("YYYY");
|
|
1388
|
+
date = `${dateJSStart} - ${dateJSEnd}, ${year} (Week ${week})`;
|
|
1389
|
+
break;
|
|
1390
|
+
}
|
|
1391
|
+
case "MONTH" /* MONTH */: {
|
|
1392
|
+
date = dateDayJS.format(monthYearFormat);
|
|
1393
|
+
break;
|
|
1394
|
+
}
|
|
1395
|
+
case "QUARTER" /* QUARTER */: {
|
|
1396
|
+
const quarter = dateDayJS.quarter();
|
|
1397
|
+
const year = dateDayJS.format("YYYY");
|
|
1398
|
+
date = `${year}-Q${quarter}`;
|
|
1399
|
+
break;
|
|
1400
|
+
}
|
|
1401
|
+
case "YEAR" /* YEAR */: {
|
|
1402
|
+
date = dateDayJS.format("YYYY");
|
|
1403
|
+
break;
|
|
1404
|
+
}
|
|
1405
|
+
case "DATE_HOUR" /* DATE_HOUR */: {
|
|
1406
|
+
date = dateDayJS.format(`${dayMonthYearFormat} h:00A`);
|
|
1407
|
+
break;
|
|
1408
|
+
}
|
|
1409
|
+
case "DATE_MINUTE" /* DATE_MINUTE */: {
|
|
1410
|
+
date = dateDayJS.format(`${dayMonthYearFormat} h:mmA`);
|
|
1411
|
+
break;
|
|
1412
|
+
}
|
|
1413
|
+
default: {
|
|
1414
|
+
break;
|
|
1415
|
+
}
|
|
1416
|
+
}
|
|
1417
|
+
return date;
|
|
1418
|
+
} catch (error) {
|
|
1419
|
+
console.error(error);
|
|
1384
1420
|
}
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
if (!
|
|
1388
|
-
return
|
|
1421
|
+
};
|
|
1422
|
+
var formatEpochDate = (value, col, config = dataFormattingDefault) => {
|
|
1423
|
+
if (!value) {
|
|
1424
|
+
return void 0;
|
|
1389
1425
|
}
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
const groupbyColumn2 = columns[groupbyColumns[1]];
|
|
1393
|
-
if (!groupbyColumn1.is_visible || !groupbyColumn2.is_visible || !((visibleColumns == null ? void 0 : visibleColumns.length) >= 3)) {
|
|
1394
|
-
return false;
|
|
1426
|
+
if (!col) {
|
|
1427
|
+
return value;
|
|
1395
1428
|
}
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1429
|
+
try {
|
|
1430
|
+
const { monthYearFormat, dayMonthYearFormat } = getDataFormatting(config);
|
|
1431
|
+
const year = "YYYY";
|
|
1432
|
+
const monthYear = monthYearFormat;
|
|
1433
|
+
const dayMonthYear = dayMonthYearFormat;
|
|
1434
|
+
const title = col.title;
|
|
1435
|
+
let dayJSObj;
|
|
1436
|
+
if (isNaN(parseFloat(value))) {
|
|
1437
|
+
dayJSObj = dayjsWithPlugins_default.utc(value).utc();
|
|
1438
|
+
} else {
|
|
1439
|
+
dayJSObj = dayjsWithPlugins_default.unix(value).utc();
|
|
1440
|
+
}
|
|
1441
|
+
if (!dayJSObj.isValid()) {
|
|
1442
|
+
return value;
|
|
1443
|
+
}
|
|
1444
|
+
let date = dayJSObj.format(dayMonthYear);
|
|
1445
|
+
if (isNaN(parseFloat(value))) {
|
|
1446
|
+
if (title && title.toLowerCase().includes("year")) {
|
|
1447
|
+
date = dayJSObj.format(year);
|
|
1448
|
+
} else if (title && title.toLowerCase().includes("month")) {
|
|
1449
|
+
date = dayJSObj.format(monthYear);
|
|
1450
|
+
}
|
|
1451
|
+
date = dayJSObj.format(dayMonthYear);
|
|
1452
|
+
} else if (title && title.toLowerCase().includes("year")) {
|
|
1453
|
+
date = dayJSObj.format(year);
|
|
1454
|
+
} else if (title && title.toLowerCase().includes("month")) {
|
|
1455
|
+
date = dayJSObj.format(monthYear);
|
|
1456
|
+
}
|
|
1457
|
+
return date;
|
|
1458
|
+
} catch (error) {
|
|
1459
|
+
console.error(error);
|
|
1460
|
+
return value;
|
|
1409
1461
|
}
|
|
1410
|
-
return true;
|
|
1411
1462
|
};
|
|
1412
|
-
var
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1463
|
+
var formatDOW = (value, col) => {
|
|
1464
|
+
let dowStyle = col.dow_style;
|
|
1465
|
+
if (!dowStyle) {
|
|
1466
|
+
dowStyle = "NUM_1_MON";
|
|
1467
|
+
}
|
|
1468
|
+
let formattedValue = value;
|
|
1469
|
+
let weekdayNumber = Number(value);
|
|
1470
|
+
switch (dowStyle) {
|
|
1471
|
+
case "NUM_1_MON": {
|
|
1472
|
+
const weekdays = WEEKDAY_NAMES_MON;
|
|
1473
|
+
const index = weekdayNumber - 1;
|
|
1474
|
+
if (index >= 0) {
|
|
1475
|
+
formattedValue = weekdays[index];
|
|
1476
|
+
} else {
|
|
1477
|
+
console.warn(`dow style is NUM_1_MON but the value could not be converted to a number: ${value}`);
|
|
1478
|
+
}
|
|
1479
|
+
break;
|
|
1480
|
+
}
|
|
1481
|
+
case "NUM_1_SUN": {
|
|
1482
|
+
const weekdays = WEEKDAY_NAMES_SUN;
|
|
1483
|
+
const index = weekdayNumber - 1;
|
|
1484
|
+
if (index >= 0) {
|
|
1485
|
+
formattedValue = weekdays[index];
|
|
1486
|
+
} else {
|
|
1487
|
+
console.warn(`dow style is NUM_1_SUN but the value could not be converted to a number: ${value}`);
|
|
1488
|
+
}
|
|
1489
|
+
break;
|
|
1490
|
+
}
|
|
1491
|
+
case "NUM_0_MON": {
|
|
1492
|
+
const weekdays = WEEKDAY_NAMES_MON;
|
|
1493
|
+
if (weekdayNumber >= 0) {
|
|
1494
|
+
formattedValue = weekdays[weekdayNumber];
|
|
1495
|
+
} else {
|
|
1496
|
+
console.warn(`dow style is NUM_0_MON but the value could not be converted to a number: ${value}`);
|
|
1497
|
+
}
|
|
1498
|
+
break;
|
|
1499
|
+
}
|
|
1500
|
+
case "NUM_0_SUN": {
|
|
1501
|
+
const weekdays = WEEKDAY_NAMES_SUN;
|
|
1502
|
+
if (weekdayNumber >= 0) {
|
|
1503
|
+
formattedValue = weekdays[weekdayNumber];
|
|
1504
|
+
} else {
|
|
1505
|
+
console.warn(`dow style is NUM_0_SUN but the value could not be converted to a number: ${value}`);
|
|
1506
|
+
}
|
|
1507
|
+
break;
|
|
1508
|
+
}
|
|
1509
|
+
case "ALPHA_MON":
|
|
1510
|
+
case "ALPHA_SUN": {
|
|
1511
|
+
const weekday = WEEKDAY_NAMES_MON.find((weekday2) => weekday2.toLowerCase().includes(value.trim().toLowerCase()));
|
|
1512
|
+
if (weekday) {
|
|
1513
|
+
formattedValue = weekday;
|
|
1514
|
+
} else {
|
|
1515
|
+
console.warn(`dow style is ALPHA but the value could not be matched to a weekday name: ${value}`);
|
|
1516
|
+
}
|
|
1517
|
+
break;
|
|
1518
|
+
}
|
|
1519
|
+
default: {
|
|
1520
|
+
console.warn(`could not format dow value. dow_style was not recognized: ${col.dow_style}`);
|
|
1521
|
+
break;
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
return formattedValue;
|
|
1417
1525
|
};
|
|
1418
|
-
var
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1526
|
+
var dateStringSortFnWithoutPrecision = (a, b) => {
|
|
1527
|
+
if (a.includes("-W")) {
|
|
1528
|
+
const aDateYear = a.substring(0, 4);
|
|
1529
|
+
const bDateYear = b.substring(0, 4);
|
|
1530
|
+
if (aDateYear !== bDateYear) {
|
|
1531
|
+
return aDateYear - bDateYear;
|
|
1532
|
+
} else {
|
|
1533
|
+
const aDateWeek = a.substring(6, 8);
|
|
1534
|
+
const bDateWeek = b.substring(6, 8);
|
|
1535
|
+
return aDateWeek - bDateWeek;
|
|
1536
|
+
}
|
|
1537
|
+
} else if (WEEKDAY_NAMES_MON.includes(a.trim())) {
|
|
1538
|
+
const aDayIndex = WEEKDAY_NAMES_MON.findIndex((d) => d.toLowerCase().includes(a.trim().toLowerCase()));
|
|
1539
|
+
const bDayIndex = WEEKDAY_NAMES_MON.findIndex((d) => d.toLowerCase().includes(b.trim().toLowerCase()));
|
|
1540
|
+
let sortValue = a - b;
|
|
1541
|
+
if (aDayIndex >= 0 && bDayIndex >= 0) {
|
|
1542
|
+
sortValue = aDayIndex - bDayIndex;
|
|
1543
|
+
}
|
|
1544
|
+
return sortValue;
|
|
1545
|
+
} else if (MONTH_NAMES.includes(a.trim())) {
|
|
1546
|
+
const aMonthIndex = MONTH_NAMES.findIndex((m) => m === a.trim());
|
|
1547
|
+
const bMonthIndex = MONTH_NAMES.findIndex((m) => m === b.trim());
|
|
1548
|
+
if (aMonthIndex >= 0 && bMonthIndex >= 0) {
|
|
1549
|
+
return bMonthIndex - aMonthIndex;
|
|
1550
|
+
}
|
|
1551
|
+
return a - b;
|
|
1552
|
+
} else if (SEASON_NAMES.includes(a.substr(0, 2))) {
|
|
1553
|
+
const aSeasonIndex = SEASON_NAMES.findIndex((s) => s === a.substr(0, 2));
|
|
1554
|
+
const bSeasonIndex = SEASON_NAMES.findIndex((s) => s === b.substr(0, 2));
|
|
1555
|
+
const aYear = Number(a.substr(2));
|
|
1556
|
+
const bYear = Number(b.substr(2));
|
|
1557
|
+
if (aYear === bYear) {
|
|
1558
|
+
return aSeasonIndex - bSeasonIndex;
|
|
1559
|
+
}
|
|
1560
|
+
return aYear - bYear;
|
|
1422
1561
|
}
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
if (hasNoData && hasOneColumn && referenceID === "1.1.211") {
|
|
1429
|
-
return true;
|
|
1562
|
+
return a - b;
|
|
1563
|
+
};
|
|
1564
|
+
var dateStringSortFn = (a, b, col) => {
|
|
1565
|
+
if (typeof a !== "string" || typeof b !== "string" || !col) {
|
|
1566
|
+
return a - b;
|
|
1430
1567
|
}
|
|
1431
|
-
const
|
|
1432
|
-
|
|
1433
|
-
|
|
1568
|
+
const aTrimmed = a.trim();
|
|
1569
|
+
const bTrimmed = b.trim();
|
|
1570
|
+
switch (col.precision) {
|
|
1571
|
+
case "DOW": {
|
|
1572
|
+
const dowStyle = col.dow_style ?? "ALPHA_MON";
|
|
1573
|
+
let aIndex = WEEKDAY_NAMES_MON.findIndex((dow) => dow.toLowerCase().includes(aTrimmed.toLowerCase()));
|
|
1574
|
+
let bIndex = WEEKDAY_NAMES_MON.findIndex((dow) => dow.toLowerCase().includes(bTrimmed.toLowerCase()));
|
|
1575
|
+
if (dowStyle === "ALPHA_SUN") {
|
|
1576
|
+
aIndex = WEEKDAY_NAMES_SUN.findIndex((dow) => dow.toLowerCase().includes(aTrimmed.toLowerCase()));
|
|
1577
|
+
bIndex = WEEKDAY_NAMES_SUN.findIndex((dow) => dow.toLowerCase().includes(bTrimmed.toLowerCase()));
|
|
1578
|
+
}
|
|
1579
|
+
return aIndex - bIndex;
|
|
1580
|
+
}
|
|
1581
|
+
case "HOUR":
|
|
1582
|
+
case "MINUTE": {
|
|
1583
|
+
const aDayjsTime = dayjsWithPlugins_default.utc(aTrimmed, "THH:mm:ss.SSSZ").utc();
|
|
1584
|
+
const bDayjsTime = dayjsWithPlugins_default.utc(bTrimmed, "THH:mm:ss.SSSZ").utc();
|
|
1585
|
+
return aDayjsTime.unix() - bDayjsTime.unix();
|
|
1586
|
+
}
|
|
1587
|
+
case "MONTH": {
|
|
1588
|
+
MONTH_NAMES;
|
|
1589
|
+
const aMonthIndex = MONTH_NAMES.findIndex((m) => m.toLowerCase() === aTrimmed.toLowerCase());
|
|
1590
|
+
const bMonthIndex = MONTH_NAMES.findIndex((m) => m.toLowerCase() === bTrimmed.toLowerCase());
|
|
1591
|
+
return aMonthIndex - bMonthIndex;
|
|
1592
|
+
}
|
|
1593
|
+
default: {
|
|
1594
|
+
return dateStringSortFnWithoutPrecision(aTrimmed, bTrimmed);
|
|
1595
|
+
}
|
|
1434
1596
|
}
|
|
1435
|
-
return false;
|
|
1436
1597
|
};
|
|
1437
|
-
var
|
|
1438
|
-
response,
|
|
1439
|
-
columns,
|
|
1440
|
-
dataLength,
|
|
1441
|
-
pivotDataLength,
|
|
1442
|
-
isDataLimited
|
|
1443
|
-
} = {}) => {
|
|
1444
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
1598
|
+
var dateSortFn = (a, b, col, isTable) => {
|
|
1445
1599
|
try {
|
|
1446
|
-
if (!
|
|
1447
|
-
return
|
|
1600
|
+
if (!a && !b) {
|
|
1601
|
+
return 0;
|
|
1602
|
+
} else if (!a && b) {
|
|
1603
|
+
return 1;
|
|
1604
|
+
} else if (a && !b || !col) {
|
|
1605
|
+
return -1;
|
|
1448
1606
|
}
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1607
|
+
let aDate = Number(a);
|
|
1608
|
+
let bDate = Number(b);
|
|
1609
|
+
let sortValue = aDate - bDate;
|
|
1610
|
+
if (isNaN(aDate) || isNaN(bDate)) {
|
|
1611
|
+
if (col.type === "DATE_STRING") {
|
|
1612
|
+
sortValue = dateStringSortFn(a, b, col);
|
|
1613
|
+
} else {
|
|
1614
|
+
sortValue = dayjsWithPlugins_default.utc(a).unix() - dayjsWithPlugins_default.utc(b).unix();
|
|
1615
|
+
}
|
|
1452
1616
|
}
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
const visibleColumns = getVisibleColumns(allColumns);
|
|
1456
|
-
if (!(visibleColumns == null ? void 0 : visibleColumns.length)) {
|
|
1457
|
-
return ["text"];
|
|
1617
|
+
if (isTable && col.precision === "DOW") {
|
|
1618
|
+
sortValue = -1 * sortValue;
|
|
1458
1619
|
}
|
|
1459
|
-
|
|
1460
|
-
|
|
1620
|
+
return sortValue;
|
|
1621
|
+
} catch (error) {
|
|
1622
|
+
console.error(error);
|
|
1623
|
+
return -1;
|
|
1624
|
+
}
|
|
1625
|
+
};
|
|
1626
|
+
var sortDataByDate = (data, tableColumns, sortDirection = "desc", isTable) => {
|
|
1627
|
+
try {
|
|
1628
|
+
if (!data || typeof data !== "object") {
|
|
1629
|
+
throw new Error("Could not sort data by date - no data supplied");
|
|
1461
1630
|
}
|
|
1462
|
-
|
|
1463
|
-
|
|
1631
|
+
const dateColumnIndex = getDateColumnIndex(tableColumns);
|
|
1632
|
+
const dateColumn = tableColumns[dateColumnIndex];
|
|
1633
|
+
if (dateColumnIndex >= 0) {
|
|
1634
|
+
let multiplier = sortDirection === "desc" ? -1 : 1;
|
|
1635
|
+
const sortedData = [...data].sort(
|
|
1636
|
+
(a, b) => multiplier * dateSortFn(a[dateColumnIndex], b[dateColumnIndex], dateColumn, isTable)
|
|
1637
|
+
);
|
|
1638
|
+
return sortedData;
|
|
1464
1639
|
}
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1640
|
+
} catch (error) {
|
|
1641
|
+
console.error(error);
|
|
1642
|
+
}
|
|
1643
|
+
return data;
|
|
1644
|
+
};
|
|
1645
|
+
var formatElement = ({
|
|
1646
|
+
element,
|
|
1647
|
+
column,
|
|
1648
|
+
config = dataFormattingDefault,
|
|
1649
|
+
htmlElement,
|
|
1650
|
+
isChart = false
|
|
1651
|
+
}) => {
|
|
1652
|
+
try {
|
|
1653
|
+
let formattedElement = element;
|
|
1654
|
+
const { currencyCode, languageCode, currencyDecimals, quantityDecimals, ratioDecimals } = getDataFormatting(config);
|
|
1655
|
+
let type = column == null ? void 0 : column.type;
|
|
1656
|
+
if (isChart && ["count", "deviation", "variance"].includes(column == null ? void 0 : column.aggType)) {
|
|
1657
|
+
type = "QUANTITY";
|
|
1658
|
+
}
|
|
1659
|
+
if (column) {
|
|
1660
|
+
switch (type) {
|
|
1661
|
+
case "STRING": {
|
|
1662
|
+
break;
|
|
1663
|
+
}
|
|
1664
|
+
case "DOLLAR_AMT": {
|
|
1665
|
+
const elementNumber = parseFloat(`${element}`);
|
|
1666
|
+
if (!isNaN(elementNumber)) {
|
|
1667
|
+
const currency = currencyCode || "USD";
|
|
1668
|
+
const validatedCurrencyDecimals = currencyDecimals || currencyDecimals === 0 ? currencyDecimals : void 0;
|
|
1669
|
+
try {
|
|
1670
|
+
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1671
|
+
style: "currency",
|
|
1672
|
+
currency: `${currency}`,
|
|
1673
|
+
minimumFractionDigits: validatedCurrencyDecimals,
|
|
1674
|
+
maximumFractionDigits: validatedCurrencyDecimals
|
|
1675
|
+
}).format(elementNumber);
|
|
1676
|
+
} catch (error) {
|
|
1677
|
+
console.error(error);
|
|
1678
|
+
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1679
|
+
style: "currency",
|
|
1680
|
+
currency: "USD",
|
|
1681
|
+
minimumFractionDigits: validatedCurrencyDecimals,
|
|
1682
|
+
maximumFractionDigits: validatedCurrencyDecimals
|
|
1683
|
+
}).format(elementNumber);
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
break;
|
|
1687
|
+
}
|
|
1688
|
+
case "QUANTITY": {
|
|
1689
|
+
const validatedQuantityDecimals = !isNaN(quantityDecimals) ? quantityDecimals : 2;
|
|
1690
|
+
const elementNumber = parseFloat(`${element}`);
|
|
1691
|
+
if (!isNaN(elementNumber)) {
|
|
1692
|
+
const numDecimals = elementNumber % 1 !== 0 ? validatedQuantityDecimals : 0;
|
|
1693
|
+
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1694
|
+
minimumFractionDigits: numDecimals,
|
|
1695
|
+
maximumFractionDigits: numDecimals
|
|
1696
|
+
}).format(elementNumber);
|
|
1697
|
+
}
|
|
1698
|
+
break;
|
|
1699
|
+
}
|
|
1700
|
+
case "DATE": {
|
|
1701
|
+
formattedElement = formatDateType(element, column, config);
|
|
1702
|
+
break;
|
|
1703
|
+
}
|
|
1704
|
+
case "DATE_STRING": {
|
|
1705
|
+
formattedElement = formatDateStringType(element, column, config);
|
|
1706
|
+
break;
|
|
1707
|
+
}
|
|
1708
|
+
case "RATIO": {
|
|
1709
|
+
const numDecimals = !isNaN(ratioDecimals) ? ratioDecimals : 4;
|
|
1710
|
+
const elementNumber = parseFloat(`${element}`);
|
|
1711
|
+
if (!isNaN(elementNumber)) {
|
|
1712
|
+
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1713
|
+
minimumFractionDigits: numDecimals,
|
|
1714
|
+
maximumFractionDigits: numDecimals
|
|
1715
|
+
}).format(elementNumber);
|
|
1716
|
+
}
|
|
1717
|
+
break;
|
|
1718
|
+
}
|
|
1719
|
+
case "PERCENT": {
|
|
1720
|
+
const elementNumber = parseFloat(`${element}`);
|
|
1721
|
+
if (!isNaN(elementNumber)) {
|
|
1722
|
+
const p = elementNumber / 100;
|
|
1723
|
+
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1724
|
+
style: "percent",
|
|
1725
|
+
minimumFractionDigits: 2,
|
|
1726
|
+
maximumFractionDigits: 2
|
|
1727
|
+
}).format(p);
|
|
1728
|
+
if (htmlElement) {
|
|
1729
|
+
if (elementNumber < 0) {
|
|
1730
|
+
htmlElement.classList.add("comparison-value-negative");
|
|
1731
|
+
} else if (elementNumber > 0) {
|
|
1732
|
+
htmlElement.classList.add("comparison-value-positive");
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
}
|
|
1736
|
+
break;
|
|
1737
|
+
}
|
|
1738
|
+
default: {
|
|
1739
|
+
break;
|
|
1740
|
+
}
|
|
1741
|
+
}
|
|
1742
|
+
}
|
|
1743
|
+
return formattedElement;
|
|
1744
|
+
} catch (error) {
|
|
1745
|
+
console.error(error);
|
|
1746
|
+
return element;
|
|
1747
|
+
}
|
|
1748
|
+
};
|
|
1749
|
+
var getNumberFormatConfig = (d, scale) => {
|
|
1750
|
+
var _a, _b;
|
|
1751
|
+
let minimumFractionDigits = 0;
|
|
1752
|
+
let maximumFractionDigits = 0;
|
|
1753
|
+
let notation;
|
|
1754
|
+
const domainRange = ((_a = scale == null ? void 0 : scale.domain()) == null ? void 0 : _a[1]) - ((_b = scale == null ? void 0 : scale.domain()) == null ? void 0 : _b[0]);
|
|
1755
|
+
const smallDomain = domainRange && domainRange < 10;
|
|
1756
|
+
const absValue = Math.abs(d);
|
|
1757
|
+
if (smallDomain) {
|
|
1758
|
+
minimumFractionDigits = 2;
|
|
1759
|
+
maximumFractionDigits = 2;
|
|
1760
|
+
} else if (absValue >= 1e3) {
|
|
1761
|
+
notation = "compact";
|
|
1762
|
+
if (absValue > 1e9) {
|
|
1763
|
+
maximumFractionDigits = 3;
|
|
1764
|
+
} else if (absValue > 1e6) {
|
|
1765
|
+
maximumFractionDigits = 2;
|
|
1766
|
+
} else if (absValue > 1e3) {
|
|
1767
|
+
maximumFractionDigits = 1;
|
|
1471
1768
|
}
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1769
|
+
}
|
|
1770
|
+
return { minimumFractionDigits, maximumFractionDigits, notation };
|
|
1771
|
+
};
|
|
1772
|
+
var formatChartLabel = ({ d, scale, column, dataFormatting, maxLabelWidth }) => {
|
|
1773
|
+
if (d === null) {
|
|
1774
|
+
return {
|
|
1775
|
+
fullWidthLabel: "Untitled Category",
|
|
1776
|
+
formattedLabel: "Untitled Category"
|
|
1777
|
+
};
|
|
1778
|
+
}
|
|
1779
|
+
const col = column ?? (scale == null ? void 0 : scale.column);
|
|
1780
|
+
if (!col || !col.type) {
|
|
1781
|
+
return {
|
|
1782
|
+
fullWidthLabel: d,
|
|
1783
|
+
formattedLabel: d
|
|
1784
|
+
};
|
|
1785
|
+
}
|
|
1786
|
+
const config = (scale == null ? void 0 : scale.dataFormatting) ?? dataFormatting;
|
|
1787
|
+
const { currencyCode, languageCode } = config;
|
|
1788
|
+
let type = col.type;
|
|
1789
|
+
if ((scale == null ? void 0 : scale.units) === "none") {
|
|
1790
|
+
type = "QUANTITY";
|
|
1791
|
+
}
|
|
1792
|
+
const { minimumFractionDigits, maximumFractionDigits, notation } = getNumberFormatConfig(d, scale);
|
|
1793
|
+
let formattedLabel = d;
|
|
1794
|
+
if (scale == null ? void 0 : scale.showLabelDecimals) {
|
|
1795
|
+
formattedLabel = formatElement({
|
|
1796
|
+
element: d,
|
|
1797
|
+
column: column ?? (scale == null ? void 0 : scale.column),
|
|
1798
|
+
config: dataFormatting,
|
|
1799
|
+
isChart: true
|
|
1800
|
+
});
|
|
1801
|
+
} else {
|
|
1802
|
+
switch (type) {
|
|
1803
|
+
case "STRING": {
|
|
1804
|
+
break;
|
|
1476
1805
|
}
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1806
|
+
case "DOLLAR_AMT": {
|
|
1807
|
+
if (Number(d) || Number(d) === 0) {
|
|
1808
|
+
const style = "currency";
|
|
1809
|
+
const currency = currencyCode || "USD";
|
|
1810
|
+
const currencyConfig = {
|
|
1811
|
+
style,
|
|
1812
|
+
minimumFractionDigits,
|
|
1813
|
+
maximumFractionDigits,
|
|
1814
|
+
notation
|
|
1815
|
+
};
|
|
1816
|
+
try {
|
|
1817
|
+
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1818
|
+
...currencyConfig,
|
|
1819
|
+
currency
|
|
1820
|
+
}).format(d);
|
|
1821
|
+
} catch (error) {
|
|
1822
|
+
console.error(error);
|
|
1823
|
+
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1824
|
+
...currencyConfig,
|
|
1825
|
+
currency: "USD"
|
|
1826
|
+
}).format(d);
|
|
1827
|
+
}
|
|
1485
1828
|
}
|
|
1829
|
+
break;
|
|
1486
1830
|
}
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1831
|
+
case "QUANTITY": {
|
|
1832
|
+
if (!isNaN(parseFloat(d))) {
|
|
1833
|
+
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1834
|
+
minimumFractionDigits,
|
|
1835
|
+
maximumFractionDigits,
|
|
1836
|
+
notation
|
|
1837
|
+
}).format(d);
|
|
1838
|
+
}
|
|
1839
|
+
break;
|
|
1495
1840
|
}
|
|
1496
|
-
|
|
1497
|
-
|
|
1841
|
+
case "DATE": {
|
|
1842
|
+
formattedLabel = formatDateType(d, col, config);
|
|
1843
|
+
break;
|
|
1498
1844
|
}
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
supportedDisplayTypes.push("scatterplot");
|
|
1845
|
+
case "DATE_STRING": {
|
|
1846
|
+
formattedLabel = formatDateStringType(d, col, config);
|
|
1847
|
+
break;
|
|
1503
1848
|
}
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
column: dateColumn,
|
|
1513
|
-
config: getDataFormatting({ monthYearFormat: "YYYY", dayMonthYearFormat: "YYYY" })
|
|
1514
|
-
});
|
|
1515
|
-
if (!uniqueYears.includes(year)) {
|
|
1516
|
-
uniqueYears.push(year);
|
|
1517
|
-
}
|
|
1518
|
-
});
|
|
1519
|
-
if (uniqueYears.length > 1) {
|
|
1520
|
-
supportedDisplayTypes.push("pivot_table");
|
|
1849
|
+
case "PERCENT": {
|
|
1850
|
+
if (Number(d) || Number(d) === 0) {
|
|
1851
|
+
const p = Number(d) / 100;
|
|
1852
|
+
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1853
|
+
style: "percent",
|
|
1854
|
+
minimumFractionDigits: 1,
|
|
1855
|
+
maximumFractionDigits: 1
|
|
1856
|
+
}).format(p);
|
|
1521
1857
|
}
|
|
1858
|
+
break;
|
|
1859
|
+
}
|
|
1860
|
+
default: {
|
|
1861
|
+
break;
|
|
1522
1862
|
}
|
|
1523
|
-
return supportedDisplayTypes;
|
|
1524
1863
|
}
|
|
1525
|
-
return ["table"];
|
|
1526
|
-
} catch (error) {
|
|
1527
|
-
console.error(error);
|
|
1528
|
-
return ["table"];
|
|
1529
1864
|
}
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
if (chartType) {
|
|
1534
|
-
return chartType;
|
|
1865
|
+
const fullWidthLabel = formattedLabel;
|
|
1866
|
+
if (typeof formattedLabel === "string" && maxLabelWidth && formattedLabel.length > maxLabelWidth) {
|
|
1867
|
+
formattedLabel = `${formattedLabel.substring(0, maxLabelWidth)}...`;
|
|
1535
1868
|
}
|
|
1536
|
-
return
|
|
1869
|
+
return { fullWidthLabel, formattedLabel };
|
|
1537
1870
|
};
|
|
1538
|
-
var
|
|
1539
|
-
var _a
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
if (supportedDisplayTypes.includes(preferredDisplayType)) {
|
|
1552
|
-
return preferredDisplayType;
|
|
1553
|
-
}
|
|
1554
|
-
if (responseDisplayType === "suggestion" || responseDisplayType === "help" || responseDisplayType === "html") {
|
|
1555
|
-
return responseDisplayType;
|
|
1871
|
+
var getCurrencySymbol = (dataFormatting = dataFormattingDefault) => {
|
|
1872
|
+
var _a;
|
|
1873
|
+
try {
|
|
1874
|
+
const { currencyCode, languageCode } = getDataFormatting(dataFormatting);
|
|
1875
|
+
const formattedParts = new Intl.NumberFormat(languageCode, {
|
|
1876
|
+
style: "currency",
|
|
1877
|
+
currency: currencyCode
|
|
1878
|
+
}).formatToParts(0);
|
|
1879
|
+
const symbol = (_a = formattedParts.find((part) => (part == null ? void 0 : part.type) === "currency")) == null ? void 0 : _a.value;
|
|
1880
|
+
return symbol;
|
|
1881
|
+
} catch (error) {
|
|
1882
|
+
console.error(error);
|
|
1883
|
+
return;
|
|
1556
1884
|
}
|
|
1557
|
-
|
|
1558
|
-
|
|
1885
|
+
};
|
|
1886
|
+
var getDayjsObjForStringType = (value, col) => {
|
|
1887
|
+
if (!value) {
|
|
1888
|
+
return void 0;
|
|
1559
1889
|
}
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1890
|
+
try {
|
|
1891
|
+
switch (col.precision) {
|
|
1892
|
+
case "DOW": {
|
|
1893
|
+
return void 0;
|
|
1894
|
+
}
|
|
1895
|
+
case "HOUR":
|
|
1896
|
+
case "MINUTE": {
|
|
1897
|
+
return dayjsWithPlugins_default.utc(value, "THH:mm:ss.SSSZ").utc();
|
|
1898
|
+
}
|
|
1899
|
+
case "MONTH": {
|
|
1900
|
+
return void 0;
|
|
1901
|
+
}
|
|
1902
|
+
default: {
|
|
1903
|
+
return void 0;
|
|
1904
|
+
}
|
|
1564
1905
|
}
|
|
1565
|
-
|
|
1906
|
+
} catch (error) {
|
|
1907
|
+
console.error(error);
|
|
1908
|
+
return void 0;
|
|
1566
1909
|
}
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
}
|
|
1572
|
-
return displayType;
|
|
1910
|
+
};
|
|
1911
|
+
var getDayJSObj = ({ value, column }) => {
|
|
1912
|
+
if (column.type === "DATE_STRING") {
|
|
1913
|
+
return getDayjsObjForStringType(value, column);
|
|
1573
1914
|
}
|
|
1574
|
-
|
|
1915
|
+
if (isNumber(value)) {
|
|
1916
|
+
return dayjsWithPlugins_default.unix(value).utc();
|
|
1917
|
+
}
|
|
1918
|
+
return dayjsWithPlugins_default.utc(value).utc();
|
|
1575
1919
|
};
|
|
1576
|
-
var
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1920
|
+
var getEpochFromDate = (date, precision, precisionFrame) => {
|
|
1921
|
+
if (date == null ? void 0 : date.getTime) {
|
|
1922
|
+
if (precision && precisionFrame === "start") {
|
|
1923
|
+
return dayjsWithPlugins_default(date).utc().startOf(precision).valueOf();
|
|
1924
|
+
} else if (precision && precisionFrame === "end") {
|
|
1925
|
+
return dayjsWithPlugins_default(date).utc().endOf(precision).valueOf();
|
|
1926
|
+
}
|
|
1927
|
+
return date.getTime();
|
|
1580
1928
|
}
|
|
1581
|
-
return
|
|
1929
|
+
return;
|
|
1582
1930
|
};
|
|
1583
1931
|
|
|
1584
1932
|
// src/HelperFns/domHelpers.ts
|
|
@@ -2437,7 +2785,8 @@ var getLinearScale = ({
|
|
|
2437
2785
|
const config = getDataFormatting(dataFormatting);
|
|
2438
2786
|
const colIndices = columnIndices ?? [columnIndex];
|
|
2439
2787
|
const scaleRange = range ?? getRangeForAxis({ axis, height, width });
|
|
2440
|
-
const axisColumns = (colIndices == null ? void 0 : colIndices.map((index) => columns[index])) ?? [];
|
|
2788
|
+
const axisColumns = (colIndices == null ? void 0 : colIndices.map((index) => columns == null ? void 0 : columns[index])) ?? [];
|
|
2789
|
+
console.log({ axisColumns });
|
|
2441
2790
|
const axisTitle = title ?? getLinearAxisTitle({
|
|
2442
2791
|
numberColumns: axisColumns,
|
|
2443
2792
|
aggregated
|
|
@@ -2447,7 +2796,7 @@ var getLinearScale = ({
|
|
|
2447
2796
|
scale.minValue = domainFinal[0];
|
|
2448
2797
|
scale.maxValue = domainFinal[1];
|
|
2449
2798
|
scale.columnIndex = columnIndex;
|
|
2450
|
-
scale.column = columns[columnIndex];
|
|
2799
|
+
scale.column = columns == null ? void 0 : columns[columnIndex];
|
|
2451
2800
|
scale.fields = axisColumns;
|
|
2452
2801
|
scale.dataFormatting = config;
|
|
2453
2802
|
scale.hasDropdown = hasDropdown ?? enableAxisDropdown;
|
|
@@ -2776,27 +3125,62 @@ var mergeBboxes = (boundingBoxes) => {
|
|
|
2776
3125
|
return void 0;
|
|
2777
3126
|
}
|
|
2778
3127
|
};
|
|
3128
|
+
|
|
3129
|
+
// src/errorMessages.ts
|
|
3130
|
+
var GENERAL_ERROR = "Uh oh, Our system is experiencing an unexpected error. We're aware of this issue and are working to fix it as soon as possible.";
|
|
3131
|
+
var GENERAL_QUERY_ERROR = "Internal Service Error: Our system is experiencing an unexpected error. We're aware of this issue and are working to fix it as soon as possible.";
|
|
3132
|
+
var GENERAL_HTML_ERROR = "Internal Service Error: Our system is experiencing an unexpected error. We're aware of this issue and are working to fix it as soon as possible.";
|
|
3133
|
+
var UNAUTHENTICATED_ERROR = "Uh oh.. It looks like you don't have access to this resource. Please double check that all required authentication fields are correct.";
|
|
3134
|
+
var REQUEST_CANCELLED_ERROR = "Request cancelled";
|
|
2779
3135
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2780
3136
|
0 && (module.exports = {
|
|
2781
3137
|
AGG_TYPES,
|
|
2782
3138
|
CHART_TYPES,
|
|
3139
|
+
COMPARE_TYPE,
|
|
3140
|
+
CONTINUOUS_TYPE,
|
|
3141
|
+
CUSTOM_TYPE,
|
|
3142
|
+
DATA_ALERT_CONDITION_TYPES,
|
|
3143
|
+
DATA_ALERT_ENABLED_STATUSES,
|
|
3144
|
+
DATA_ALERT_FREQUENCY_TYPE_OPTIONS,
|
|
3145
|
+
DATA_ALERT_OPERATORS,
|
|
3146
|
+
DATA_ALERT_STATUSES,
|
|
2783
3147
|
DATE_ONLY_CHART_TYPES,
|
|
2784
3148
|
DAYJS_PRECISION_FORMATS,
|
|
2785
3149
|
DEFAULT_AGG_TYPE,
|
|
2786
3150
|
DEFAULT_DATA_PAGE_SIZE,
|
|
3151
|
+
DEFAULT_EVALUATION_FREQUENCY,
|
|
3152
|
+
DEFAULT_SOURCE,
|
|
2787
3153
|
DOUBLE_AXIS_CHART_TYPES,
|
|
2788
3154
|
DOW_STYLES,
|
|
3155
|
+
DataExplorerTypes,
|
|
2789
3156
|
DateUTC,
|
|
3157
|
+
EVALUATION_FREQUENCY_OPTIONS,
|
|
3158
|
+
EXISTS_TYPE,
|
|
3159
|
+
GENERAL_ERROR,
|
|
3160
|
+
GENERAL_HTML_ERROR,
|
|
3161
|
+
GENERAL_QUERY_ERROR,
|
|
3162
|
+
GROUP_TERM_TYPE,
|
|
2790
3163
|
MAX_DATA_PAGE_SIZE,
|
|
2791
3164
|
MAX_LEGEND_LABELS,
|
|
2792
3165
|
MIN_HISTOGRAM_SAMPLE,
|
|
3166
|
+
MONTH_DAY_SELECT_OPTIONS,
|
|
2793
3167
|
MONTH_NAMES,
|
|
3168
|
+
NUMBER_TERM_TYPE,
|
|
2794
3169
|
NumberColumnTypeDisplayNames,
|
|
2795
3170
|
NumberColumnTypes,
|
|
3171
|
+
PERIODIC_TYPE,
|
|
3172
|
+
PROJECT_TYPE,
|
|
2796
3173
|
PrecisionTypes,
|
|
3174
|
+
QUERY_TERM_TYPE,
|
|
3175
|
+
REQUEST_CANCELLED_ERROR,
|
|
3176
|
+
RESET_PERIOD_OPTIONS,
|
|
3177
|
+
SCHEDULED_TYPE,
|
|
3178
|
+
SCHEDULE_FREQUENCY_OPTIONS,
|
|
3179
|
+
SCHEDULE_INTERVAL_OPTIONS,
|
|
2797
3180
|
SEASON_NAMES,
|
|
2798
3181
|
TABLE_TYPES,
|
|
2799
3182
|
TimestampFormats,
|
|
3183
|
+
UNAUTHENTICATED_ERROR,
|
|
2800
3184
|
WEEKDAY_NAMES_MON,
|
|
2801
3185
|
WEEKDAY_NAMES_SUN,
|
|
2802
3186
|
animateInputText,
|