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.mjs
CHANGED
|
@@ -224,7 +224,7 @@ var isNumber = (str) => {
|
|
|
224
224
|
return /^\d+$/.test(str);
|
|
225
225
|
};
|
|
226
226
|
|
|
227
|
-
// src/Constants/
|
|
227
|
+
// src/Constants/visualizationConstants.ts
|
|
228
228
|
var TABLE_TYPES = [
|
|
229
229
|
"pivot_table",
|
|
230
230
|
"pivot_column",
|
|
@@ -336,1093 +336,1413 @@ var AGG_TYPES = [
|
|
|
336
336
|
var MAX_LEGEND_LABELS = 22;
|
|
337
337
|
var MIN_HISTOGRAM_SAMPLE = 20;
|
|
338
338
|
|
|
339
|
-
// src/
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
PrecisionTypes2["HOUR"] = "HOUR";
|
|
354
|
-
PrecisionTypes2["MINUTE"] = "MINUTE";
|
|
355
|
-
return PrecisionTypes2;
|
|
356
|
-
})(PrecisionTypes || {});
|
|
357
|
-
var NumberColumnTypes = /* @__PURE__ */ ((NumberColumnTypes2) => {
|
|
358
|
-
NumberColumnTypes2["CURRENCY"] = "DOLLAR_AMT";
|
|
359
|
-
NumberColumnTypes2["QUANTITY"] = "QUANTITY";
|
|
360
|
-
NumberColumnTypes2["RATIO"] = "RATIO";
|
|
361
|
-
NumberColumnTypes2["PERCENT"] = "PERCENT";
|
|
362
|
-
return NumberColumnTypes2;
|
|
363
|
-
})(NumberColumnTypes || {});
|
|
364
|
-
var NumberColumnTypeDisplayNames = /* @__PURE__ */ ((NumberColumnTypeDisplayNames2) => {
|
|
365
|
-
NumberColumnTypeDisplayNames2["DOLLAR_AMT"] = "Currency";
|
|
366
|
-
NumberColumnTypeDisplayNames2["QUANTITY"] = "Quantity";
|
|
367
|
-
NumberColumnTypeDisplayNames2["RATIO"] = "Ratio";
|
|
368
|
-
NumberColumnTypeDisplayNames2["PERCENT"] = "Percent";
|
|
369
|
-
return NumberColumnTypeDisplayNames2;
|
|
370
|
-
})(NumberColumnTypeDisplayNames || {});
|
|
371
|
-
|
|
372
|
-
// src/Constants/defaults.ts
|
|
373
|
-
var authenticationDefault = {
|
|
374
|
-
token: void 0,
|
|
375
|
-
apiKey: void 0,
|
|
376
|
-
domain: void 0,
|
|
377
|
-
dprKey: void 0,
|
|
378
|
-
dprDomain: void 0
|
|
379
|
-
};
|
|
380
|
-
var dataFormattingDefault = {
|
|
381
|
-
timestampFormat: "ISO8601" /* iso8601 */,
|
|
382
|
-
currencyCode: "USD",
|
|
383
|
-
languageCode: "en-US",
|
|
384
|
-
currencyDecimals: 2,
|
|
385
|
-
quantityDecimals: 2,
|
|
386
|
-
ratioDecimals: 4,
|
|
387
|
-
comparisonDisplay: "PERCENT",
|
|
388
|
-
monthYearFormat: "MMMM YYYY",
|
|
389
|
-
dayMonthYearFormat: "ll"
|
|
390
|
-
};
|
|
391
|
-
var autoQLConfigDefault = {
|
|
392
|
-
debug: false,
|
|
393
|
-
test: false,
|
|
394
|
-
enableAutocomplete: true,
|
|
395
|
-
enableQueryInterpretation: true,
|
|
396
|
-
enableQueryValidation: true,
|
|
397
|
-
enableQuerySuggestions: true,
|
|
398
|
-
enableColumnVisibilityManager: true,
|
|
399
|
-
enableDrilldowns: true,
|
|
400
|
-
enableNotifications: false,
|
|
401
|
-
enableCSVDownload: true,
|
|
402
|
-
enableReportProblem: true
|
|
403
|
-
};
|
|
404
|
-
var dataConfigDefault = {
|
|
405
|
-
stringColumnIndices: [],
|
|
406
|
-
numberColumnIndices: [],
|
|
407
|
-
stringColumnIndex: 0,
|
|
408
|
-
legendColumnIndex: void 0,
|
|
409
|
-
numberColumnIndex: 1
|
|
410
|
-
};
|
|
411
|
-
var getAuthentication = (prop = {}) => {
|
|
412
|
-
return {
|
|
413
|
-
...authenticationDefault,
|
|
414
|
-
...prop
|
|
415
|
-
};
|
|
416
|
-
};
|
|
417
|
-
var getDataFormatting = (prop = {}) => {
|
|
418
|
-
return {
|
|
419
|
-
...dataFormattingDefault,
|
|
420
|
-
...prop
|
|
421
|
-
};
|
|
339
|
+
// src/HelperFns/arrayHelpers.ts
|
|
340
|
+
import isEqual from "lodash.isequal";
|
|
341
|
+
var invertArray = (array) => {
|
|
342
|
+
const numRows = array.length;
|
|
343
|
+
const numColumns = array[0].length;
|
|
344
|
+
const invertedArray = [];
|
|
345
|
+
for (let i = 0; i < numColumns; i++) {
|
|
346
|
+
invertedArray[i] = [];
|
|
347
|
+
for (let j = 0; j < numRows; j++) {
|
|
348
|
+
if (array[j][i])
|
|
349
|
+
invertedArray[i][j] = array[j][i];
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
return invertedArray;
|
|
422
353
|
};
|
|
423
|
-
var
|
|
424
|
-
return
|
|
425
|
-
...autoQLConfigDefault,
|
|
426
|
-
...prop
|
|
427
|
-
};
|
|
354
|
+
var functionsEqual = (a, b) => {
|
|
355
|
+
return (a == null ? void 0 : a.toString()) == (b == null ? void 0 : b.toString());
|
|
428
356
|
};
|
|
429
|
-
var
|
|
430
|
-
return
|
|
431
|
-
...dataConfigDefault,
|
|
432
|
-
...prop
|
|
433
|
-
};
|
|
357
|
+
var isObject = (obj) => {
|
|
358
|
+
return typeof obj === "object" && !Array.isArray(obj) && obj !== null && obj !== void 0;
|
|
434
359
|
};
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
return void 0;
|
|
360
|
+
var deepEqual = (objA, objB) => {
|
|
361
|
+
const lodashIsEqual = isEqual(objA, objB);
|
|
362
|
+
if (lodashIsEqual) {
|
|
363
|
+
return true;
|
|
440
364
|
}
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
case "MINUTE": {
|
|
456
|
-
const dayjsTime = dayjsWithPlugins_default.utc(value, "THH:mm:ss.SSSZ").utc();
|
|
457
|
-
if (dayjsTime.isValid()) {
|
|
458
|
-
formattedValue = dayjsTime.format("h:mmA");
|
|
459
|
-
}
|
|
460
|
-
break;
|
|
461
|
-
}
|
|
462
|
-
case "MONTH": {
|
|
463
|
-
formattedValue = value;
|
|
464
|
-
break;
|
|
465
|
-
}
|
|
466
|
-
default: {
|
|
467
|
-
formattedValue = value;
|
|
468
|
-
break;
|
|
365
|
+
const objAIsObject = isObject(objA);
|
|
366
|
+
const objBIsObject = isObject(objB);
|
|
367
|
+
if (!objAIsObject || !objBIsObject) {
|
|
368
|
+
return lodashIsEqual;
|
|
369
|
+
}
|
|
370
|
+
const keysA = Object.keys(objA);
|
|
371
|
+
const keysB = Object.keys(objB);
|
|
372
|
+
if (keysA.length !== keysB.length) {
|
|
373
|
+
return false;
|
|
374
|
+
}
|
|
375
|
+
for (let i = 0; i < keysA.length; i++) {
|
|
376
|
+
if (typeof objA[keysA[i]] === "function" && typeof objB[keysA[i]] === "function") {
|
|
377
|
+
if (!functionsEqual(objA[keysA[i]], objB[keysA[i]])) {
|
|
378
|
+
return false;
|
|
469
379
|
}
|
|
380
|
+
} else if (!Object.hasOwnProperty.call(objB, keysA[i]) || !isEqual(objA[keysA[i]], objB[keysA[i]])) {
|
|
381
|
+
return false;
|
|
470
382
|
}
|
|
471
|
-
return formattedValue;
|
|
472
|
-
} catch (error) {
|
|
473
|
-
console.error(error);
|
|
474
|
-
return value;
|
|
475
383
|
}
|
|
384
|
+
return true;
|
|
476
385
|
};
|
|
477
|
-
var
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
if ((
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
const dayJSObj = dayjsWithPlugins_default.utc(value).utc();
|
|
495
|
-
if (!dayJSObj.isValid()) {
|
|
496
|
-
return value;
|
|
497
|
-
}
|
|
498
|
-
let date = value;
|
|
499
|
-
if (day) {
|
|
500
|
-
date = dayJSObj.format(dayMonthYearFormat);
|
|
501
|
-
} else if (month) {
|
|
502
|
-
date = dayJSObj.format(monthYearFormat);
|
|
503
|
-
} else if (week) {
|
|
504
|
-
} else if (year) {
|
|
505
|
-
date = year;
|
|
386
|
+
var difference = (objA, objB) => {
|
|
387
|
+
const diff = [];
|
|
388
|
+
Object.keys(Object.assign({}, objA, objB)).forEach((key) => {
|
|
389
|
+
if (typeof objA[key] === "function" && typeof objB[key] === "function") {
|
|
390
|
+
if (!functionsEqual(objA[key], objB[key])) {
|
|
391
|
+
diff.push({
|
|
392
|
+
key,
|
|
393
|
+
objA: objA[key],
|
|
394
|
+
objB: objB[key]
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
} else if (!Object.is(objA[key], objB[key])) {
|
|
398
|
+
diff.push({
|
|
399
|
+
key,
|
|
400
|
+
objA: objA[key],
|
|
401
|
+
objB: objB[key]
|
|
402
|
+
});
|
|
506
403
|
}
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
return value;
|
|
404
|
+
});
|
|
405
|
+
return diff;
|
|
510
406
|
};
|
|
511
|
-
var
|
|
512
|
-
|
|
513
|
-
|
|
407
|
+
var rotateArray = (array, n) => {
|
|
408
|
+
const rotated = [...array];
|
|
409
|
+
n = n % array.length;
|
|
410
|
+
if (n < 0)
|
|
411
|
+
n = array.length + n;
|
|
412
|
+
for (let i = 0; i < n; i++) {
|
|
413
|
+
rotated.unshift(rotated.pop());
|
|
514
414
|
}
|
|
515
|
-
return
|
|
415
|
+
return rotated;
|
|
516
416
|
};
|
|
517
|
-
var
|
|
518
|
-
|
|
519
|
-
return element;
|
|
520
|
-
}
|
|
521
|
-
if (column.precision) {
|
|
522
|
-
return formatStringDateWithPrecision(element, column);
|
|
523
|
-
}
|
|
524
|
-
return formatStringDate(element, config);
|
|
417
|
+
var onlyUnique = (value, index, self) => {
|
|
418
|
+
return self.indexOf(value) === index;
|
|
525
419
|
};
|
|
526
|
-
var
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
420
|
+
var makeEmptyArray = (w, h, value = "") => {
|
|
421
|
+
var arr = [];
|
|
422
|
+
for (let i = 0; i < h; i++) {
|
|
423
|
+
arr[i] = [];
|
|
424
|
+
for (let j = 0; j < w; j++) {
|
|
425
|
+
arr[i][j] = value;
|
|
426
|
+
}
|
|
532
427
|
}
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
428
|
+
return arr;
|
|
429
|
+
};
|
|
430
|
+
|
|
431
|
+
// src/HelperFns/displayTypeHelpers.ts
|
|
432
|
+
var isChartType = (type) => CHART_TYPES.includes(type);
|
|
433
|
+
var isTableType = (type) => TABLE_TYPES.includes(type);
|
|
434
|
+
var isDisplayTypeValid = (response, displayType, dataLength, pivotDataLength, columns, isDataLimited) => {
|
|
435
|
+
var _a, _b;
|
|
436
|
+
const supportedDisplayTypes = getSupportedDisplayTypes({
|
|
437
|
+
response,
|
|
438
|
+
columns: columns ?? ((_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.columns),
|
|
439
|
+
dataLength,
|
|
440
|
+
pivotDataLength,
|
|
441
|
+
isDataLimited
|
|
442
|
+
});
|
|
443
|
+
const isValid = displayType && supportedDisplayTypes.includes(displayType);
|
|
444
|
+
return isValid;
|
|
445
|
+
};
|
|
446
|
+
var shouldPlotMultiSeries = (columns) => {
|
|
447
|
+
if (isAggregation(columns)) {
|
|
448
|
+
return false;
|
|
538
449
|
}
|
|
539
|
-
|
|
450
|
+
const multiSeriesIndex = columns.findIndex((col) => col.multi_series === true);
|
|
451
|
+
return multiSeriesIndex >= 0;
|
|
452
|
+
};
|
|
453
|
+
var supportsPieChart = (columns, chartData) => {
|
|
454
|
+
if (shouldPlotMultiSeries(columns)) {
|
|
455
|
+
return false;
|
|
456
|
+
}
|
|
457
|
+
if (chartData) {
|
|
458
|
+
return chartData.length < 7;
|
|
459
|
+
}
|
|
460
|
+
return true;
|
|
461
|
+
};
|
|
462
|
+
var supports2DCharts = (columns, dataLength) => {
|
|
463
|
+
if (dataLength <= 1) {
|
|
464
|
+
return false;
|
|
465
|
+
}
|
|
466
|
+
const { amountOfNumberColumns, amountOfStringColumns } = getColumnTypeAmounts(columns);
|
|
467
|
+
return amountOfNumberColumns > 0 && amountOfStringColumns > 0;
|
|
468
|
+
};
|
|
469
|
+
var supportsRegularPivotTable = (columns, dataLength, data) => {
|
|
470
|
+
var _a, _b;
|
|
471
|
+
if (dataLength <= 1) {
|
|
472
|
+
return false;
|
|
473
|
+
}
|
|
474
|
+
const groupbyColumns = getGroupableColumns(columns);
|
|
475
|
+
const hasTwoGroupables = (groupbyColumns == null ? void 0 : groupbyColumns.length) === 2;
|
|
476
|
+
if (!hasTwoGroupables) {
|
|
477
|
+
return false;
|
|
478
|
+
}
|
|
479
|
+
const visibleColumns = getVisibleColumns(columns);
|
|
480
|
+
const groupbyColumn1 = columns[groupbyColumns[0]];
|
|
481
|
+
const groupbyColumn2 = columns[groupbyColumns[1]];
|
|
482
|
+
if (!groupbyColumn1.is_visible || !groupbyColumn2.is_visible || !((visibleColumns == null ? void 0 : visibleColumns.length) >= 3)) {
|
|
483
|
+
return false;
|
|
484
|
+
}
|
|
485
|
+
const column1Data = (data == null ? void 0 : data.map((row) => {
|
|
486
|
+
return row[groupbyColumns[0]];
|
|
487
|
+
})) ?? [];
|
|
488
|
+
const column2Data = (data == null ? void 0 : data.map((row) => {
|
|
489
|
+
return row[groupbyColumns[1]];
|
|
490
|
+
})) ?? [];
|
|
491
|
+
const uniqueData1Length = ((_a = column1Data == null ? void 0 : column1Data.filter(onlyUnique)) == null ? void 0 : _a.length) ?? 0;
|
|
492
|
+
const uniqueData2Length = ((_b = column2Data == null ? void 0 : column2Data.filter(onlyUnique)) == null ? void 0 : _b.length) ?? 0;
|
|
493
|
+
if (uniqueData1Length > MAX_LEGEND_LABELS && uniqueData2Length > MAX_LEGEND_LABELS) {
|
|
494
|
+
console.debug(
|
|
495
|
+
`Info: Pivot table will not be supported since there are too many unique fields. The calculated dimensions would be: ${uniqueData1Length} x ${uniqueData2Length}`
|
|
496
|
+
);
|
|
497
|
+
return false;
|
|
498
|
+
}
|
|
499
|
+
return true;
|
|
500
|
+
};
|
|
501
|
+
var supportsDatePivotTable = (columns) => {
|
|
502
|
+
var _a;
|
|
503
|
+
const dateColumnIndex = columns.findIndex((col) => col.type === "DATE" || col.type === "DATE_STRING");
|
|
504
|
+
const dateColumn = columns[dateColumnIndex];
|
|
505
|
+
return dateColumn && ((_a = dateColumn == null ? void 0 : dateColumn.display_name) == null ? void 0 : _a.toLowerCase().includes("month")) && (columns == null ? void 0 : columns.length) === 2;
|
|
506
|
+
};
|
|
507
|
+
var isSingleValueResponse = (response) => {
|
|
508
|
+
var _a, _b, _c, _d, _e, _f;
|
|
509
|
+
if (!response) {
|
|
510
|
+
return false;
|
|
511
|
+
}
|
|
512
|
+
const rows = (_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.rows;
|
|
513
|
+
const columns = (_d = (_c = response == null ? void 0 : response.data) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
|
|
514
|
+
const referenceID = (_e = response == null ? void 0 : response.data) == null ? void 0 : _e.reference_id;
|
|
515
|
+
const hasNoData = rows && !(rows == null ? void 0 : rows.length);
|
|
516
|
+
const hasOneColumn = (columns == null ? void 0 : columns.length) === 1;
|
|
517
|
+
if (hasNoData && hasOneColumn && referenceID === "1.1.211") {
|
|
518
|
+
return true;
|
|
519
|
+
}
|
|
520
|
+
const oneRowAndColumn = (rows == null ? void 0 : rows.length) === 1 && ((_f = rows[0]) == null ? void 0 : _f.length) === 1;
|
|
521
|
+
if (oneRowAndColumn) {
|
|
522
|
+
return true;
|
|
523
|
+
}
|
|
524
|
+
return false;
|
|
525
|
+
};
|
|
526
|
+
var getSupportedDisplayTypes = ({
|
|
527
|
+
response,
|
|
528
|
+
columns,
|
|
529
|
+
dataLength,
|
|
530
|
+
pivotDataLength,
|
|
531
|
+
isDataLimited
|
|
532
|
+
} = {}) => {
|
|
533
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
540
534
|
try {
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
535
|
+
if (!((_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.display_type)) {
|
|
536
|
+
return [];
|
|
537
|
+
}
|
|
538
|
+
const displayType = response.data.data.display_type;
|
|
539
|
+
if (displayType === "suggestion" || displayType === "help" || displayType === "html") {
|
|
540
|
+
return [displayType];
|
|
541
|
+
}
|
|
542
|
+
const rows = ((_d = (_c = response == null ? void 0 : response.data) == null ? void 0 : _c.data) == null ? void 0 : _d.rows) ?? [];
|
|
543
|
+
const allColumns = columns || ((_f = (_e = response == null ? void 0 : response.data) == null ? void 0 : _e.data) == null ? void 0 : _f.columns);
|
|
544
|
+
const visibleColumns = getVisibleColumns(allColumns);
|
|
545
|
+
if (!(visibleColumns == null ? void 0 : visibleColumns.length)) {
|
|
546
|
+
return ["text"];
|
|
547
|
+
}
|
|
548
|
+
if (isSingleValueResponse(response)) {
|
|
549
|
+
return ["single-value"];
|
|
550
|
+
}
|
|
551
|
+
if (!(rows == null ? void 0 : rows.length)) {
|
|
552
|
+
return ["table"];
|
|
553
|
+
}
|
|
554
|
+
const maxRowsForPieChart = 10;
|
|
555
|
+
const numRows = dataLength ?? rows.length;
|
|
556
|
+
let pivotDataHasLength = true;
|
|
557
|
+
const pivotDataLengthProvided = pivotDataLength !== void 0 && pivotDataLength !== null;
|
|
558
|
+
if (pivotDataLengthProvided) {
|
|
559
|
+
pivotDataHasLength = !!pivotDataLength;
|
|
560
|
+
}
|
|
561
|
+
if (supportsRegularPivotTable(visibleColumns, numRows, (_h = (_g = response == null ? void 0 : response.data) == null ? void 0 : _g.data) == null ? void 0 : _h.rows)) {
|
|
562
|
+
const supportedDisplayTypes = ["table"];
|
|
563
|
+
if (!isDataLimited) {
|
|
564
|
+
supportedDisplayTypes.push("pivot_table");
|
|
552
565
|
}
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
566
|
+
if (
|
|
567
|
+
// Comment out for now so chart row count doesnt change display type
|
|
568
|
+
// numRows <= maxRowsForPivot &&
|
|
569
|
+
pivotDataHasLength
|
|
570
|
+
) {
|
|
571
|
+
supportedDisplayTypes.push("stacked_column", "stacked_bar", "column", "bar", "bubble", "heatmap");
|
|
572
|
+
if (hasDateColumn(visibleColumns)) {
|
|
573
|
+
supportedDisplayTypes.push("stacked_line", "line");
|
|
574
|
+
}
|
|
556
575
|
}
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
576
|
+
return supportedDisplayTypes;
|
|
577
|
+
} else if (supports2DCharts(visibleColumns, numRows)) {
|
|
578
|
+
const supportedDisplayTypes = ["table", "column", "bar"];
|
|
579
|
+
if (numRows > MIN_HISTOGRAM_SAMPLE) {
|
|
580
|
+
supportedDisplayTypes.push("histogram");
|
|
562
581
|
}
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
break;
|
|
582
|
+
if (hasDateColumn(visibleColumns)) {
|
|
583
|
+
supportedDisplayTypes.push("line");
|
|
566
584
|
}
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
break;
|
|
585
|
+
if (numRows > 1 && numRows <= maxRowsForPieChart) {
|
|
586
|
+
supportedDisplayTypes.push("pie");
|
|
570
587
|
}
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
588
|
+
const { amountOfNumberColumns } = getColumnTypeAmounts(visibleColumns);
|
|
589
|
+
if (amountOfNumberColumns > 1) {
|
|
590
|
+
supportedDisplayTypes.push("column_line");
|
|
591
|
+
supportedDisplayTypes.push("scatterplot");
|
|
574
592
|
}
|
|
575
|
-
|
|
576
|
-
|
|
593
|
+
if (!isDataLimited && supportsDatePivotTable(visibleColumns)) {
|
|
594
|
+
const dateColumnIndex = visibleColumns.findIndex((col) => col.type === "DATE" || col.type === "DATE_STRING");
|
|
595
|
+
const dateColumn = visibleColumns[dateColumnIndex];
|
|
596
|
+
const data = (_j = (_i = response == null ? void 0 : response.data) == null ? void 0 : _i.data) == null ? void 0 : _j.rows;
|
|
597
|
+
const uniqueYears = [];
|
|
598
|
+
data.forEach((row) => {
|
|
599
|
+
const year = formatElement({
|
|
600
|
+
element: row[dateColumnIndex],
|
|
601
|
+
column: dateColumn,
|
|
602
|
+
config: getDataFormatting({ monthYearFormat: "YYYY", dayMonthYearFormat: "YYYY" })
|
|
603
|
+
});
|
|
604
|
+
if (!uniqueYears.includes(year)) {
|
|
605
|
+
uniqueYears.push(year);
|
|
606
|
+
}
|
|
607
|
+
});
|
|
608
|
+
if (uniqueYears.length > 1) {
|
|
609
|
+
supportedDisplayTypes.push("pivot_table");
|
|
610
|
+
}
|
|
577
611
|
}
|
|
612
|
+
return supportedDisplayTypes;
|
|
578
613
|
}
|
|
579
|
-
return
|
|
614
|
+
return ["table"];
|
|
580
615
|
} catch (error) {
|
|
581
616
|
console.error(error);
|
|
617
|
+
return ["table"];
|
|
582
618
|
}
|
|
583
619
|
};
|
|
584
|
-
var
|
|
585
|
-
|
|
586
|
-
|
|
620
|
+
var getFirstChartDisplayType = (supportedDisplayTypes, fallback) => {
|
|
621
|
+
const chartType = supportedDisplayTypes.find((displayType) => isChartType(displayType));
|
|
622
|
+
if (chartType) {
|
|
623
|
+
return chartType;
|
|
587
624
|
}
|
|
588
|
-
|
|
589
|
-
|
|
625
|
+
return fallback;
|
|
626
|
+
};
|
|
627
|
+
var getDefaultDisplayType = (response, defaultToChart, columns, dataLength, pivotDataLength, preferredDisplayType, isDataLimited = false) => {
|
|
628
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
629
|
+
const supportedDisplayTypes = getSupportedDisplayTypes({
|
|
630
|
+
response,
|
|
631
|
+
columns: columns ?? ((_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.columns),
|
|
632
|
+
dataLength,
|
|
633
|
+
pivotDataLength,
|
|
634
|
+
isDataLimited
|
|
635
|
+
});
|
|
636
|
+
if (preferredDisplayType && supportedDisplayTypes.includes(preferredDisplayType)) {
|
|
637
|
+
return preferredDisplayType;
|
|
590
638
|
}
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
const monthYear = monthYearFormat;
|
|
595
|
-
const dayMonthYear = dayMonthYearFormat;
|
|
596
|
-
const title = col.title;
|
|
597
|
-
let dayJSObj;
|
|
598
|
-
if (isNaN(parseFloat(value))) {
|
|
599
|
-
dayJSObj = dayjsWithPlugins_default.utc(value).utc();
|
|
600
|
-
} else {
|
|
601
|
-
dayJSObj = dayjsWithPlugins_default.unix(value).utc();
|
|
602
|
-
}
|
|
603
|
-
if (!dayJSObj.isValid()) {
|
|
604
|
-
return value;
|
|
605
|
-
}
|
|
606
|
-
let date = dayJSObj.format(dayMonthYear);
|
|
607
|
-
if (isNaN(parseFloat(value))) {
|
|
608
|
-
if (title && title.toLowerCase().includes("year")) {
|
|
609
|
-
date = dayJSObj.format(year);
|
|
610
|
-
} else if (title && title.toLowerCase().includes("month")) {
|
|
611
|
-
date = dayJSObj.format(monthYear);
|
|
612
|
-
}
|
|
613
|
-
date = dayJSObj.format(dayMonthYear);
|
|
614
|
-
} else if (title && title.toLowerCase().includes("year")) {
|
|
615
|
-
date = dayJSObj.format(year);
|
|
616
|
-
} else if (title && title.toLowerCase().includes("month")) {
|
|
617
|
-
date = dayJSObj.format(monthYear);
|
|
618
|
-
}
|
|
619
|
-
return date;
|
|
620
|
-
} catch (error) {
|
|
621
|
-
console.error(error);
|
|
622
|
-
return value;
|
|
639
|
+
const responseDisplayType = (_d = (_c = response == null ? void 0 : response.data) == null ? void 0 : _c.data) == null ? void 0 : _d.display_type;
|
|
640
|
+
if (supportedDisplayTypes.includes(preferredDisplayType)) {
|
|
641
|
+
return preferredDisplayType;
|
|
623
642
|
}
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
let dowStyle = col.dow_style;
|
|
627
|
-
if (!dowStyle) {
|
|
628
|
-
dowStyle = "NUM_1_MON";
|
|
643
|
+
if (responseDisplayType === "suggestion" || responseDisplayType === "help" || responseDisplayType === "html") {
|
|
644
|
+
return responseDisplayType;
|
|
629
645
|
}
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
switch (dowStyle) {
|
|
633
|
-
case "NUM_1_MON": {
|
|
634
|
-
const weekdays = WEEKDAY_NAMES_MON;
|
|
635
|
-
const index = weekdayNumber - 1;
|
|
636
|
-
if (index >= 0) {
|
|
637
|
-
formattedValue = weekdays[index];
|
|
638
|
-
} else {
|
|
639
|
-
console.warn(`dow style is NUM_1_MON but the value could not be converted to a number: ${value}`);
|
|
640
|
-
}
|
|
641
|
-
break;
|
|
642
|
-
}
|
|
643
|
-
case "NUM_1_SUN": {
|
|
644
|
-
const weekdays = WEEKDAY_NAMES_SUN;
|
|
645
|
-
const index = weekdayNumber - 1;
|
|
646
|
-
if (index >= 0) {
|
|
647
|
-
formattedValue = weekdays[index];
|
|
648
|
-
} else {
|
|
649
|
-
console.warn(`dow style is NUM_1_SUN but the value could not be converted to a number: ${value}`);
|
|
650
|
-
}
|
|
651
|
-
break;
|
|
652
|
-
}
|
|
653
|
-
case "NUM_0_MON": {
|
|
654
|
-
const weekdays = WEEKDAY_NAMES_MON;
|
|
655
|
-
if (weekdayNumber >= 0) {
|
|
656
|
-
formattedValue = weekdays[weekdayNumber];
|
|
657
|
-
} else {
|
|
658
|
-
console.warn(`dow style is NUM_0_MON but the value could not be converted to a number: ${value}`);
|
|
659
|
-
}
|
|
660
|
-
break;
|
|
661
|
-
}
|
|
662
|
-
case "NUM_0_SUN": {
|
|
663
|
-
const weekdays = WEEKDAY_NAMES_SUN;
|
|
664
|
-
if (weekdayNumber >= 0) {
|
|
665
|
-
formattedValue = weekdays[weekdayNumber];
|
|
666
|
-
} else {
|
|
667
|
-
console.warn(`dow style is NUM_0_SUN but the value could not be converted to a number: ${value}`);
|
|
668
|
-
}
|
|
669
|
-
break;
|
|
670
|
-
}
|
|
671
|
-
case "ALPHA_MON":
|
|
672
|
-
case "ALPHA_SUN": {
|
|
673
|
-
const weekday = WEEKDAY_NAMES_MON.find((weekday2) => weekday2.toLowerCase().includes(value.trim().toLowerCase()));
|
|
674
|
-
if (weekday) {
|
|
675
|
-
formattedValue = weekday;
|
|
676
|
-
} else {
|
|
677
|
-
console.warn(`dow style is ALPHA but the value could not be matched to a weekday name: ${value}`);
|
|
678
|
-
}
|
|
679
|
-
break;
|
|
680
|
-
}
|
|
681
|
-
default: {
|
|
682
|
-
console.warn(`could not format dow value. dow_style was not recognized: ${col.dow_style}`);
|
|
683
|
-
break;
|
|
684
|
-
}
|
|
646
|
+
if (supportedDisplayTypes.length === 1) {
|
|
647
|
+
return supportedDisplayTypes[0];
|
|
685
648
|
}
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
const aDateYear = a.substring(0, 4);
|
|
691
|
-
const bDateYear = b.substring(0, 4);
|
|
692
|
-
if (aDateYear !== bDateYear) {
|
|
693
|
-
return aDateYear - bDateYear;
|
|
694
|
-
} else {
|
|
695
|
-
const aDateWeek = a.substring(6, 8);
|
|
696
|
-
const bDateWeek = b.substring(6, 8);
|
|
697
|
-
return aDateWeek - bDateWeek;
|
|
698
|
-
}
|
|
699
|
-
} else if (WEEKDAY_NAMES_MON.includes(a.trim())) {
|
|
700
|
-
const aDayIndex = WEEKDAY_NAMES_MON.findIndex((d) => d.toLowerCase().includes(a.trim().toLowerCase()));
|
|
701
|
-
const bDayIndex = WEEKDAY_NAMES_MON.findIndex((d) => d.toLowerCase().includes(b.trim().toLowerCase()));
|
|
702
|
-
let sortValue = a - b;
|
|
703
|
-
if (aDayIndex >= 0 && bDayIndex >= 0) {
|
|
704
|
-
sortValue = aDayIndex - bDayIndex;
|
|
705
|
-
}
|
|
706
|
-
return sortValue;
|
|
707
|
-
} else if (MONTH_NAMES.includes(a.trim())) {
|
|
708
|
-
const aMonthIndex = MONTH_NAMES.findIndex((m) => m === a.trim());
|
|
709
|
-
const bMonthIndex = MONTH_NAMES.findIndex((m) => m === b.trim());
|
|
710
|
-
if (aMonthIndex >= 0 && bMonthIndex >= 0) {
|
|
711
|
-
return bMonthIndex - aMonthIndex;
|
|
649
|
+
if (supportedDisplayTypes.includes("pivot_table")) {
|
|
650
|
+
let displayType = "pivot_table";
|
|
651
|
+
if (defaultToChart) {
|
|
652
|
+
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";
|
|
712
653
|
}
|
|
713
|
-
return
|
|
714
|
-
}
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
if (aYear === bYear) {
|
|
720
|
-
return aSeasonIndex - bSeasonIndex;
|
|
654
|
+
return displayType;
|
|
655
|
+
}
|
|
656
|
+
if (!responseDisplayType && hasData(response) || responseDisplayType === "data") {
|
|
657
|
+
let displayType = "table";
|
|
658
|
+
if (defaultToChart) {
|
|
659
|
+
displayType = isAggregation((_h = (_g = response == null ? void 0 : response.data) == null ? void 0 : _g.data) == null ? void 0 : _h.columns) ? getFirstChartDisplayType(supportedDisplayTypes, "table") : "table";
|
|
721
660
|
}
|
|
722
|
-
return
|
|
661
|
+
return displayType;
|
|
723
662
|
}
|
|
724
|
-
return
|
|
663
|
+
return "text";
|
|
725
664
|
};
|
|
726
|
-
var
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
const aTrimmed = a.trim();
|
|
731
|
-
const bTrimmed = b.trim();
|
|
732
|
-
switch (col.precision) {
|
|
733
|
-
case "DOW": {
|
|
734
|
-
const dowStyle = col.dow_style ?? "ALPHA_MON";
|
|
735
|
-
let aIndex = WEEKDAY_NAMES_MON.findIndex((dow) => dow.toLowerCase().includes(aTrimmed.toLowerCase()));
|
|
736
|
-
let bIndex = WEEKDAY_NAMES_MON.findIndex((dow) => dow.toLowerCase().includes(bTrimmed.toLowerCase()));
|
|
737
|
-
if (dowStyle === "ALPHA_SUN") {
|
|
738
|
-
aIndex = WEEKDAY_NAMES_SUN.findIndex((dow) => dow.toLowerCase().includes(aTrimmed.toLowerCase()));
|
|
739
|
-
bIndex = WEEKDAY_NAMES_SUN.findIndex((dow) => dow.toLowerCase().includes(bTrimmed.toLowerCase()));
|
|
740
|
-
}
|
|
741
|
-
return aIndex - bIndex;
|
|
742
|
-
}
|
|
743
|
-
case "HOUR":
|
|
744
|
-
case "MINUTE": {
|
|
745
|
-
const aDayjsTime = dayjsWithPlugins_default.utc(aTrimmed, "THH:mm:ss.SSSZ").utc();
|
|
746
|
-
const bDayjsTime = dayjsWithPlugins_default.utc(bTrimmed, "THH:mm:ss.SSSZ").utc();
|
|
747
|
-
return aDayjsTime.unix() - bDayjsTime.unix();
|
|
748
|
-
}
|
|
749
|
-
case "MONTH": {
|
|
750
|
-
MONTH_NAMES;
|
|
751
|
-
const aMonthIndex = MONTH_NAMES.findIndex((m) => m.toLowerCase() === aTrimmed.toLowerCase());
|
|
752
|
-
const bMonthIndex = MONTH_NAMES.findIndex((m) => m.toLowerCase() === bTrimmed.toLowerCase());
|
|
753
|
-
return aMonthIndex - bMonthIndex;
|
|
754
|
-
}
|
|
755
|
-
default: {
|
|
756
|
-
return dateStringSortFnWithoutPrecision(aTrimmed, bTrimmed);
|
|
757
|
-
}
|
|
665
|
+
var hasData = (response) => {
|
|
666
|
+
var _a, _b, _c;
|
|
667
|
+
if (!response) {
|
|
668
|
+
return false;
|
|
758
669
|
}
|
|
670
|
+
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;
|
|
759
671
|
};
|
|
760
|
-
|
|
672
|
+
|
|
673
|
+
// src/HelperFns/dataAlertHelpers.ts
|
|
674
|
+
var getDayLocalStartDate = ({ timeObj, timezone: timezone2, daysToAdd = 0 }) => {
|
|
761
675
|
try {
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
} else if (a && !b || !col) {
|
|
767
|
-
return -1;
|
|
768
|
-
}
|
|
769
|
-
let aDate = Number(a);
|
|
770
|
-
let bDate = Number(b);
|
|
771
|
-
let sortValue = aDate - bDate;
|
|
772
|
-
if (isNaN(aDate) || isNaN(bDate)) {
|
|
773
|
-
if (col.type === "DATE_STRING") {
|
|
774
|
-
sortValue = dateStringSortFn(a, b, col);
|
|
775
|
-
} else {
|
|
776
|
-
sortValue = dayjsWithPlugins_default.utc(a).unix() - dayjsWithPlugins_default.utc(b).unix();
|
|
777
|
-
}
|
|
778
|
-
}
|
|
779
|
-
if (isTable && col.precision === "DOW") {
|
|
780
|
-
sortValue = -1 * sortValue;
|
|
676
|
+
const now = dayjsWithPlugins_default().tz(timezone2);
|
|
677
|
+
let nextCycle = now.startOf("minute").set("hour", timeObj.hour24).set("minute", timeObj.minute);
|
|
678
|
+
if (nextCycle.valueOf() < now.valueOf()) {
|
|
679
|
+
nextCycle = nextCycle.add(1, "day");
|
|
781
680
|
}
|
|
782
|
-
|
|
681
|
+
const nextCycleFormatted = nextCycle.add(daysToAdd, "days").format("YYYY-MM-DD[T]HH:mm:00");
|
|
682
|
+
return nextCycleFormatted;
|
|
783
683
|
} catch (error) {
|
|
784
684
|
console.error(error);
|
|
785
|
-
return
|
|
685
|
+
return;
|
|
786
686
|
}
|
|
787
687
|
};
|
|
788
|
-
var
|
|
688
|
+
var getWeekLocalStartDate = ({ weekDay, timeObj, timezone: timezone2 }) => {
|
|
789
689
|
try {
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
const
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
(a, b) => multiplier * dateSortFn(a[dateColumnIndex], b[dateColumnIndex], dateColumn, isTable)
|
|
799
|
-
);
|
|
800
|
-
return sortedData;
|
|
801
|
-
}
|
|
690
|
+
const now = dayjsWithPlugins_default().tz(timezone2);
|
|
691
|
+
const weekdayNumber = WEEKDAY_NAMES_SUN.findIndex((day) => weekDay.toLowerCase() === day.toLowerCase());
|
|
692
|
+
const nextWeekday = now.day(weekdayNumber).startOf("minute");
|
|
693
|
+
const nextWeekdayWithTime = nextWeekday.hour(timeObj.hour24).minute(timeObj.minute);
|
|
694
|
+
if (nextWeekdayWithTime.valueOf() < now.valueOf()) {
|
|
695
|
+
return nextWeekdayWithTime.add(1, "week").format("YYYY-MM-DD[T]HH:mm:00");
|
|
696
|
+
}
|
|
697
|
+
return nextWeekdayWithTime.format("YYYY-MM-DD[T]HH:mm:00");
|
|
802
698
|
} catch (error) {
|
|
803
699
|
console.error(error);
|
|
700
|
+
return;
|
|
804
701
|
}
|
|
805
|
-
return data;
|
|
806
702
|
};
|
|
807
|
-
var
|
|
808
|
-
element,
|
|
809
|
-
column,
|
|
810
|
-
config = dataFormattingDefault,
|
|
811
|
-
htmlElement,
|
|
812
|
-
isChart = false
|
|
813
|
-
}) => {
|
|
703
|
+
var getMonthLocalStartDate = ({ monthDay, timeObj, timezone: timezone2 }) => {
|
|
814
704
|
try {
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
}
|
|
826
|
-
case "DOLLAR_AMT": {
|
|
827
|
-
const elementNumber = parseFloat(`${element}`);
|
|
828
|
-
if (!isNaN(elementNumber)) {
|
|
829
|
-
const currency = currencyCode || "USD";
|
|
830
|
-
const validatedCurrencyDecimals = currencyDecimals || currencyDecimals === 0 ? currencyDecimals : void 0;
|
|
831
|
-
try {
|
|
832
|
-
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
833
|
-
style: "currency",
|
|
834
|
-
currency: `${currency}`,
|
|
835
|
-
minimumFractionDigits: validatedCurrencyDecimals,
|
|
836
|
-
maximumFractionDigits: validatedCurrencyDecimals
|
|
837
|
-
}).format(elementNumber);
|
|
838
|
-
} catch (error) {
|
|
839
|
-
console.error(error);
|
|
840
|
-
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
841
|
-
style: "currency",
|
|
842
|
-
currency: "USD",
|
|
843
|
-
minimumFractionDigits: validatedCurrencyDecimals,
|
|
844
|
-
maximumFractionDigits: validatedCurrencyDecimals
|
|
845
|
-
}).format(elementNumber);
|
|
846
|
-
}
|
|
847
|
-
}
|
|
848
|
-
break;
|
|
849
|
-
}
|
|
850
|
-
case "QUANTITY": {
|
|
851
|
-
const validatedQuantityDecimals = !isNaN(quantityDecimals) ? quantityDecimals : 2;
|
|
852
|
-
const elementNumber = parseFloat(`${element}`);
|
|
853
|
-
if (!isNaN(elementNumber)) {
|
|
854
|
-
const numDecimals = elementNumber % 1 !== 0 ? validatedQuantityDecimals : 0;
|
|
855
|
-
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
856
|
-
minimumFractionDigits: numDecimals,
|
|
857
|
-
maximumFractionDigits: numDecimals
|
|
858
|
-
}).format(elementNumber);
|
|
859
|
-
}
|
|
860
|
-
break;
|
|
861
|
-
}
|
|
862
|
-
case "DATE": {
|
|
863
|
-
formattedElement = formatDateType(element, column, config);
|
|
864
|
-
break;
|
|
865
|
-
}
|
|
866
|
-
case "DATE_STRING": {
|
|
867
|
-
formattedElement = formatDateStringType(element, column, config);
|
|
868
|
-
break;
|
|
869
|
-
}
|
|
870
|
-
case "RATIO": {
|
|
871
|
-
const numDecimals = !isNaN(ratioDecimals) ? ratioDecimals : 4;
|
|
872
|
-
const elementNumber = parseFloat(`${element}`);
|
|
873
|
-
if (!isNaN(elementNumber)) {
|
|
874
|
-
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
875
|
-
minimumFractionDigits: numDecimals,
|
|
876
|
-
maximumFractionDigits: numDecimals
|
|
877
|
-
}).format(elementNumber);
|
|
878
|
-
}
|
|
879
|
-
break;
|
|
880
|
-
}
|
|
881
|
-
case "PERCENT": {
|
|
882
|
-
const elementNumber = parseFloat(`${element}`);
|
|
883
|
-
if (!isNaN(elementNumber)) {
|
|
884
|
-
const p = elementNumber / 100;
|
|
885
|
-
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
886
|
-
style: "percent",
|
|
887
|
-
minimumFractionDigits: 2,
|
|
888
|
-
maximumFractionDigits: 2
|
|
889
|
-
}).format(p);
|
|
890
|
-
if (htmlElement) {
|
|
891
|
-
if (elementNumber < 0) {
|
|
892
|
-
htmlElement.classList.add("comparison-value-negative");
|
|
893
|
-
} else if (elementNumber > 0) {
|
|
894
|
-
htmlElement.classList.add("comparison-value-positive");
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
break;
|
|
899
|
-
}
|
|
900
|
-
default: {
|
|
901
|
-
break;
|
|
902
|
-
}
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
|
-
return formattedElement;
|
|
705
|
+
const now = dayjsWithPlugins_default().tz(timezone2);
|
|
706
|
+
let nextMonthStr;
|
|
707
|
+
if (monthDay === "LAST") {
|
|
708
|
+
nextMonthStr = now.endOf("month").startOf("day").format("ll HH:mm");
|
|
709
|
+
} else if (monthDay === "FIRST") {
|
|
710
|
+
nextMonthStr = now.add(1, "month").startOf("month").format("ll HH:mm");
|
|
711
|
+
}
|
|
712
|
+
const nextMonth = dayjsWithPlugins_default.tz(nextMonthStr, timezone2);
|
|
713
|
+
const nextMonthWithTime = nextMonth.hour(timeObj.hour24).minute(timeObj.minute);
|
|
714
|
+
return nextMonthWithTime.format("YYYY-MM-DD[T]HH:mm:00");
|
|
906
715
|
} catch (error) {
|
|
907
716
|
console.error(error);
|
|
908
|
-
return
|
|
717
|
+
return;
|
|
909
718
|
}
|
|
910
719
|
};
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
720
|
+
|
|
721
|
+
// src/Constants/dataAlertConstants.ts
|
|
722
|
+
var CUSTOM_TYPE = "CUSTOM";
|
|
723
|
+
var PROJECT_TYPE = "PROJECT";
|
|
724
|
+
var PERIODIC_TYPE = "PERIODIC";
|
|
725
|
+
var CONTINUOUS_TYPE = "CONTINUOUS";
|
|
726
|
+
var SCHEDULED_TYPE = "SCHEDULED";
|
|
727
|
+
var COMPARE_TYPE = "COMPARE";
|
|
728
|
+
var EXISTS_TYPE = "EXISTS";
|
|
729
|
+
var NUMBER_TERM_TYPE = "CONSTANT";
|
|
730
|
+
var QUERY_TERM_TYPE = "QUERY";
|
|
731
|
+
var GROUP_TERM_TYPE = "GROUP";
|
|
732
|
+
var DEFAULT_EVALUATION_FREQUENCY = 5;
|
|
733
|
+
var DATA_ALERT_STATUSES = {
|
|
734
|
+
ACTIVE: "ACTIVE",
|
|
735
|
+
// currently running
|
|
736
|
+
RETRY: "RETRY",
|
|
737
|
+
// currently being retried because of an error, no action required yet
|
|
738
|
+
WAITING: "WAITING",
|
|
739
|
+
// active but triggered already and waiting for the reset period to end
|
|
740
|
+
INACTIVE: "INACTIVE",
|
|
741
|
+
// either not running OR it is a prototype (can not be run)
|
|
742
|
+
EVALUATION_ERROR: "EVALUATION_ERROR",
|
|
743
|
+
// expression evaluation resulted in an error
|
|
744
|
+
DATA_RETURN_ERROR: "DATA_RETURN_ERROR",
|
|
745
|
+
// expression evaluation was successful, but data return query failed
|
|
746
|
+
GENERAL_ERROR: "GENERAL_ERROR"
|
|
747
|
+
// every thing else that doesnt fall into a category above
|
|
748
|
+
};
|
|
749
|
+
var DATA_ALERT_ENABLED_STATUSES = [
|
|
750
|
+
DATA_ALERT_STATUSES.ACTIVE,
|
|
751
|
+
DATA_ALERT_STATUSES.RETRY,
|
|
752
|
+
DATA_ALERT_STATUSES.WAITING
|
|
753
|
+
];
|
|
754
|
+
var DATA_ALERT_OPERATORS = {
|
|
755
|
+
GREATER_THAN: {
|
|
756
|
+
displayName: `
|
|
757
|
+
<span>
|
|
758
|
+
Is <strong>greater</strong> than
|
|
759
|
+
</span>
|
|
760
|
+
`,
|
|
761
|
+
symbol: ">",
|
|
762
|
+
conditionText: "exceeds",
|
|
763
|
+
conditionTextPast: "exceeded"
|
|
764
|
+
},
|
|
765
|
+
GREATER_THAN_EQUAL_TO: {
|
|
766
|
+
displayName: `
|
|
767
|
+
<span>
|
|
768
|
+
Is <strong>greater</strong> than <strong>or equal</strong> to
|
|
769
|
+
</span>
|
|
770
|
+
`,
|
|
771
|
+
symbol: ">=",
|
|
772
|
+
conditionText: "is equal to or exceeds",
|
|
773
|
+
conditionTextPast: "was equal to or exceeded"
|
|
774
|
+
},
|
|
775
|
+
LESS_THAN: {
|
|
776
|
+
displayName: `
|
|
777
|
+
<span>
|
|
778
|
+
Is <strong>less</strong> than
|
|
779
|
+
</span>
|
|
780
|
+
`,
|
|
781
|
+
symbol: "<",
|
|
782
|
+
conditionText: "falls below",
|
|
783
|
+
conditionTextPast: "fell below"
|
|
784
|
+
},
|
|
785
|
+
LESS_THAN_EQUAL_TO: {
|
|
786
|
+
displayName: `
|
|
787
|
+
<span>
|
|
788
|
+
Is <strong>less</strong> than <strong>or equal</strong> to
|
|
789
|
+
</span>
|
|
790
|
+
`,
|
|
791
|
+
symbol: "<=",
|
|
792
|
+
conditionText: "is equal to or falls below",
|
|
793
|
+
conditionTextPast: "was equal to or fell below"
|
|
794
|
+
},
|
|
795
|
+
EQUAL_TO: {
|
|
796
|
+
displayName: `
|
|
797
|
+
<span>
|
|
798
|
+
Is <strong>equal</strong> to
|
|
799
|
+
</span>
|
|
800
|
+
`,
|
|
801
|
+
symbol: "=",
|
|
802
|
+
conditionText: "equals",
|
|
803
|
+
conditionTextPast: "was equal to"
|
|
804
|
+
}
|
|
805
|
+
/* Not using this for now. Uncomment to enable later if desired
|
|
806
|
+
NOT_EQUAL_TO: {
|
|
807
|
+
displayName: (
|
|
808
|
+
<span>
|
|
809
|
+
Is <strong>not equal</strong> to
|
|
810
|
+
</span>
|
|
811
|
+
),
|
|
812
|
+
symbol: '!=',
|
|
813
|
+
conditionText: 'does not equal',
|
|
814
|
+
conditionTextPast: 'was not equal to',
|
|
815
|
+
}, */
|
|
816
|
+
/* These are additions term condition values
|
|
817
|
+
They can be used to create more complex condition groups
|
|
818
|
+
EXISTS: {},
|
|
819
|
+
NOT_EXISTS: {},
|
|
820
|
+
AND: {},
|
|
821
|
+
OR: {},
|
|
822
|
+
TERMINATOR: {} */
|
|
823
|
+
};
|
|
824
|
+
var DATA_ALERT_CONDITION_TYPES = {
|
|
825
|
+
[COMPARE_TYPE]: {
|
|
826
|
+
displayName: "When a specific condition is met"
|
|
827
|
+
},
|
|
828
|
+
[EXISTS_TYPE]: {
|
|
829
|
+
displayName: "If new data is detected"
|
|
931
830
|
}
|
|
932
|
-
return { minimumFractionDigits, maximumFractionDigits, notation };
|
|
933
831
|
};
|
|
934
|
-
var
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
832
|
+
var DATA_ALERT_FREQUENCY_TYPE_OPTIONS = {
|
|
833
|
+
[SCHEDULED_TYPE]: {
|
|
834
|
+
label: "at the following times:",
|
|
835
|
+
listLabel: "at the following times"
|
|
836
|
+
},
|
|
837
|
+
[CONTINUOUS_TYPE]: {
|
|
838
|
+
label: "right away.",
|
|
839
|
+
listLabel: "right away"
|
|
840
|
+
}
|
|
841
|
+
};
|
|
842
|
+
var SCHEDULE_INTERVAL_OPTIONS = {
|
|
843
|
+
DAY: {
|
|
844
|
+
displayName: `
|
|
845
|
+
<span>
|
|
846
|
+
Every <strong>day</strong>
|
|
847
|
+
</span>
|
|
848
|
+
`,
|
|
849
|
+
getLocalStartDate: getDayLocalStartDate
|
|
850
|
+
},
|
|
851
|
+
WEEK: {
|
|
852
|
+
displayName: `
|
|
853
|
+
<span>
|
|
854
|
+
Every <strong>week</strong>
|
|
855
|
+
</span>
|
|
856
|
+
`,
|
|
857
|
+
getLocalStartDate: getWeekLocalStartDate
|
|
858
|
+
},
|
|
859
|
+
MONTH: {
|
|
860
|
+
displayName: `
|
|
861
|
+
<span>
|
|
862
|
+
Every <strong>month</strong>
|
|
863
|
+
</span>
|
|
864
|
+
`,
|
|
865
|
+
getLocalStartDate: getMonthLocalStartDate
|
|
866
|
+
}
|
|
867
|
+
// Not supporting for now
|
|
868
|
+
// YEAR: {
|
|
869
|
+
// displayName: (
|
|
870
|
+
// <span>
|
|
871
|
+
// Every <strong>year</strong>
|
|
872
|
+
// </span>
|
|
873
|
+
// ),
|
|
874
|
+
// displayText: 'Scheduled yearly',
|
|
875
|
+
// },
|
|
876
|
+
};
|
|
877
|
+
var SCHEDULE_FREQUENCY_OPTIONS = {
|
|
878
|
+
DAY: {
|
|
879
|
+
displayText: "Scheduled daily"
|
|
880
|
+
},
|
|
881
|
+
WEEK: {
|
|
882
|
+
displayText: "Scheduled weekly"
|
|
883
|
+
},
|
|
884
|
+
MONTH: {
|
|
885
|
+
displayText: "Scheduled for the 1st of every month"
|
|
886
|
+
},
|
|
887
|
+
MONTH_LAST_DAY: {
|
|
888
|
+
displayText: "Scheduled for the end of every month"
|
|
889
|
+
},
|
|
890
|
+
YEAR: {
|
|
891
|
+
displayText: "Scheduled yearly"
|
|
892
|
+
}
|
|
893
|
+
};
|
|
894
|
+
var RESET_PERIOD_OPTIONS = {
|
|
895
|
+
DAY: {
|
|
896
|
+
displayName: `
|
|
897
|
+
<span>
|
|
898
|
+
At most <strong>once a day</strong>
|
|
899
|
+
</span>
|
|
900
|
+
`,
|
|
901
|
+
displayText: "At most once a day"
|
|
902
|
+
},
|
|
903
|
+
WEEK: {
|
|
904
|
+
displayName: `
|
|
905
|
+
<span>
|
|
906
|
+
At most <strong>once a week</strong>
|
|
907
|
+
</span>
|
|
908
|
+
`,
|
|
909
|
+
displayText: "At most once a week"
|
|
910
|
+
},
|
|
911
|
+
MONTH: {
|
|
912
|
+
displayName: `
|
|
913
|
+
<span>
|
|
914
|
+
At most <strong>once a month</strong>
|
|
915
|
+
</span>
|
|
916
|
+
`,
|
|
917
|
+
displayText: "At most once a month"
|
|
918
|
+
},
|
|
919
|
+
// Not supporting for now
|
|
920
|
+
// YEAR: {
|
|
921
|
+
// displayName: (
|
|
922
|
+
// <span>
|
|
923
|
+
// At most <strong>once a year</strong>
|
|
924
|
+
// </span>
|
|
925
|
+
// ),
|
|
926
|
+
// displayText: 'At most once a year'
|
|
927
|
+
// },
|
|
928
|
+
NONE: {
|
|
929
|
+
displayName: `
|
|
930
|
+
<span>
|
|
931
|
+
<strong>Every time</strong> new data is detected
|
|
932
|
+
</span>
|
|
933
|
+
`,
|
|
934
|
+
displayText: "Continuous"
|
|
935
|
+
}
|
|
936
|
+
};
|
|
937
|
+
var MONTH_DAY_SELECT_OPTIONS = {
|
|
938
|
+
FIRST: `
|
|
939
|
+
<span>
|
|
940
|
+
on the <strong>first day</strong>
|
|
941
|
+
</span>
|
|
942
|
+
`,
|
|
943
|
+
LAST: `
|
|
944
|
+
<span>
|
|
945
|
+
on the <strong>last day</strong>
|
|
946
|
+
</span>
|
|
947
|
+
`
|
|
948
|
+
};
|
|
949
|
+
var EVALUATION_FREQUENCY_OPTIONS = {
|
|
950
|
+
1: {
|
|
951
|
+
value: 1,
|
|
952
|
+
label: "1 min"
|
|
953
|
+
},
|
|
954
|
+
2: {
|
|
955
|
+
value: 2,
|
|
956
|
+
label: "2 mins"
|
|
957
|
+
},
|
|
958
|
+
3: {
|
|
959
|
+
value: 3,
|
|
960
|
+
label: "3 mins"
|
|
961
|
+
},
|
|
962
|
+
5: {
|
|
963
|
+
value: 5,
|
|
964
|
+
label: "5 mins",
|
|
965
|
+
listLabel: `
|
|
966
|
+
<span>
|
|
967
|
+
5 mins <em>(Recommended)</em>
|
|
968
|
+
</span>
|
|
969
|
+
`
|
|
970
|
+
},
|
|
971
|
+
10: {
|
|
972
|
+
value: 10,
|
|
973
|
+
label: "10 mins"
|
|
974
|
+
},
|
|
975
|
+
30: {
|
|
976
|
+
value: 30,
|
|
977
|
+
label: "30 mins"
|
|
978
|
+
},
|
|
979
|
+
60: {
|
|
980
|
+
value: 60,
|
|
981
|
+
label: "60 mins"
|
|
947
982
|
}
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
983
|
+
};
|
|
984
|
+
|
|
985
|
+
// src/Constants/queryConstants.ts
|
|
986
|
+
var DEFAULT_SOURCE = "widgets";
|
|
987
|
+
|
|
988
|
+
// src/Constants/enums.ts
|
|
989
|
+
var TimestampFormats = /* @__PURE__ */ ((TimestampFormats2) => {
|
|
990
|
+
TimestampFormats2["epoch"] = "EPOCH";
|
|
991
|
+
TimestampFormats2["iso8601"] = "ISO8601";
|
|
992
|
+
return TimestampFormats2;
|
|
993
|
+
})(TimestampFormats || {});
|
|
994
|
+
var PrecisionTypes = /* @__PURE__ */ ((PrecisionTypes2) => {
|
|
995
|
+
PrecisionTypes2["DAY"] = "DAY";
|
|
996
|
+
PrecisionTypes2["MONTH"] = "MONTH";
|
|
997
|
+
PrecisionTypes2["YEAR"] = "YEAR";
|
|
998
|
+
PrecisionTypes2["WEEK"] = "WEEK";
|
|
999
|
+
PrecisionTypes2["QUARTER"] = "QUARTER";
|
|
1000
|
+
PrecisionTypes2["DATE_HOUR"] = "DATE_HOUR";
|
|
1001
|
+
PrecisionTypes2["DATE_MINUTE"] = "DATE_MINUTE";
|
|
1002
|
+
PrecisionTypes2["HOUR"] = "HOUR";
|
|
1003
|
+
PrecisionTypes2["MINUTE"] = "MINUTE";
|
|
1004
|
+
return PrecisionTypes2;
|
|
1005
|
+
})(PrecisionTypes || {});
|
|
1006
|
+
var NumberColumnTypes = /* @__PURE__ */ ((NumberColumnTypes2) => {
|
|
1007
|
+
NumberColumnTypes2["CURRENCY"] = "DOLLAR_AMT";
|
|
1008
|
+
NumberColumnTypes2["QUANTITY"] = "QUANTITY";
|
|
1009
|
+
NumberColumnTypes2["RATIO"] = "RATIO";
|
|
1010
|
+
NumberColumnTypes2["PERCENT"] = "PERCENT";
|
|
1011
|
+
return NumberColumnTypes2;
|
|
1012
|
+
})(NumberColumnTypes || {});
|
|
1013
|
+
var NumberColumnTypeDisplayNames = /* @__PURE__ */ ((NumberColumnTypeDisplayNames2) => {
|
|
1014
|
+
NumberColumnTypeDisplayNames2["DOLLAR_AMT"] = "Currency";
|
|
1015
|
+
NumberColumnTypeDisplayNames2["QUANTITY"] = "Quantity";
|
|
1016
|
+
NumberColumnTypeDisplayNames2["RATIO"] = "Ratio";
|
|
1017
|
+
NumberColumnTypeDisplayNames2["PERCENT"] = "Percent";
|
|
1018
|
+
return NumberColumnTypeDisplayNames2;
|
|
1019
|
+
})(NumberColumnTypeDisplayNames || {});
|
|
1020
|
+
var DataExplorerTypes = /* @__PURE__ */ ((DataExplorerTypes2) => {
|
|
1021
|
+
DataExplorerTypes2["SUBJECT_TYPE"] = "subject";
|
|
1022
|
+
DataExplorerTypes2["VL_TYPE"] = "VL";
|
|
1023
|
+
return DataExplorerTypes2;
|
|
1024
|
+
})(DataExplorerTypes || {});
|
|
1025
|
+
|
|
1026
|
+
// src/Constants/defaults.ts
|
|
1027
|
+
var authenticationDefault = {
|
|
1028
|
+
token: void 0,
|
|
1029
|
+
apiKey: void 0,
|
|
1030
|
+
domain: void 0,
|
|
1031
|
+
dprKey: void 0,
|
|
1032
|
+
dprDomain: void 0
|
|
1033
|
+
};
|
|
1034
|
+
var dataFormattingDefault = {
|
|
1035
|
+
timestampFormat: "ISO8601" /* iso8601 */,
|
|
1036
|
+
currencyCode: "USD",
|
|
1037
|
+
languageCode: "en-US",
|
|
1038
|
+
currencyDecimals: 2,
|
|
1039
|
+
quantityDecimals: 2,
|
|
1040
|
+
ratioDecimals: 4,
|
|
1041
|
+
comparisonDisplay: "PERCENT",
|
|
1042
|
+
monthYearFormat: "MMMM YYYY",
|
|
1043
|
+
dayMonthYearFormat: "ll"
|
|
1044
|
+
};
|
|
1045
|
+
var autoQLConfigDefault = {
|
|
1046
|
+
debug: false,
|
|
1047
|
+
test: false,
|
|
1048
|
+
enableAutocomplete: true,
|
|
1049
|
+
enableQueryInterpretation: true,
|
|
1050
|
+
enableQueryValidation: true,
|
|
1051
|
+
enableQuerySuggestions: true,
|
|
1052
|
+
enableColumnVisibilityManager: true,
|
|
1053
|
+
enableDrilldowns: true,
|
|
1054
|
+
enableNotifications: false,
|
|
1055
|
+
enableCSVDownload: true,
|
|
1056
|
+
enableReportProblem: true
|
|
1057
|
+
};
|
|
1058
|
+
var dataConfigDefault = {
|
|
1059
|
+
stringColumnIndices: [],
|
|
1060
|
+
numberColumnIndices: [],
|
|
1061
|
+
stringColumnIndex: 0,
|
|
1062
|
+
legendColumnIndex: void 0,
|
|
1063
|
+
numberColumnIndex: 1
|
|
1064
|
+
};
|
|
1065
|
+
var getAuthentication = (prop = {}) => {
|
|
1066
|
+
return {
|
|
1067
|
+
...authenticationDefault,
|
|
1068
|
+
...prop
|
|
1069
|
+
};
|
|
1070
|
+
};
|
|
1071
|
+
var getDataFormatting = (prop = {}) => {
|
|
1072
|
+
return {
|
|
1073
|
+
...dataFormattingDefault,
|
|
1074
|
+
...prop
|
|
1075
|
+
};
|
|
1076
|
+
};
|
|
1077
|
+
var getAutoQLConfig = (prop = {}) => {
|
|
1078
|
+
return {
|
|
1079
|
+
...autoQLConfigDefault,
|
|
1080
|
+
...prop
|
|
1081
|
+
};
|
|
1082
|
+
};
|
|
1083
|
+
var getDataConfig = (prop = {}) => {
|
|
1084
|
+
return {
|
|
1085
|
+
...dataConfigDefault,
|
|
1086
|
+
...prop
|
|
1087
|
+
};
|
|
1088
|
+
};
|
|
1089
|
+
|
|
1090
|
+
// src/HelperFns/dataFormattingHelpers.ts
|
|
1091
|
+
var formatStringDateWithPrecision = (value, col) => {
|
|
1092
|
+
if (!value) {
|
|
1093
|
+
return void 0;
|
|
953
1094
|
}
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
column: column ?? (scale == null ? void 0 : scale.column),
|
|
960
|
-
config: dataFormatting,
|
|
961
|
-
isChart: true
|
|
962
|
-
});
|
|
963
|
-
} else {
|
|
964
|
-
switch (type) {
|
|
965
|
-
case "STRING": {
|
|
1095
|
+
let formattedValue = value;
|
|
1096
|
+
try {
|
|
1097
|
+
switch (col.precision) {
|
|
1098
|
+
case "DOW": {
|
|
1099
|
+
formattedValue = formatDOW(value, col);
|
|
966
1100
|
break;
|
|
967
1101
|
}
|
|
968
|
-
case "
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
const currencyConfig = {
|
|
973
|
-
style,
|
|
974
|
-
minimumFractionDigits,
|
|
975
|
-
maximumFractionDigits,
|
|
976
|
-
notation
|
|
977
|
-
};
|
|
978
|
-
try {
|
|
979
|
-
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
980
|
-
...currencyConfig,
|
|
981
|
-
currency
|
|
982
|
-
}).format(d);
|
|
983
|
-
} catch (error) {
|
|
984
|
-
console.error(error);
|
|
985
|
-
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
986
|
-
...currencyConfig,
|
|
987
|
-
currency: "USD"
|
|
988
|
-
}).format(d);
|
|
989
|
-
}
|
|
1102
|
+
case "HOUR": {
|
|
1103
|
+
const dayjsTime = dayjsWithPlugins_default.utc(value, "THH:mm:ss.SSSZ").utc();
|
|
1104
|
+
if (dayjsTime.isValid()) {
|
|
1105
|
+
formattedValue = dayjsTime.format("h:00A");
|
|
990
1106
|
}
|
|
991
1107
|
break;
|
|
992
1108
|
}
|
|
993
|
-
case "
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
maximumFractionDigits,
|
|
998
|
-
notation
|
|
999
|
-
}).format(d);
|
|
1109
|
+
case "MINUTE": {
|
|
1110
|
+
const dayjsTime = dayjsWithPlugins_default.utc(value, "THH:mm:ss.SSSZ").utc();
|
|
1111
|
+
if (dayjsTime.isValid()) {
|
|
1112
|
+
formattedValue = dayjsTime.format("h:mmA");
|
|
1000
1113
|
}
|
|
1001
1114
|
break;
|
|
1002
1115
|
}
|
|
1003
|
-
case "
|
|
1004
|
-
|
|
1005
|
-
break;
|
|
1006
|
-
}
|
|
1007
|
-
case "DATE_STRING": {
|
|
1008
|
-
formattedLabel = formatDateStringType(d, col, config);
|
|
1009
|
-
break;
|
|
1010
|
-
}
|
|
1011
|
-
case "PERCENT": {
|
|
1012
|
-
if (Number(d) || Number(d) === 0) {
|
|
1013
|
-
const p = Number(d) / 100;
|
|
1014
|
-
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1015
|
-
style: "percent",
|
|
1016
|
-
minimumFractionDigits: 1,
|
|
1017
|
-
maximumFractionDigits: 1
|
|
1018
|
-
}).format(p);
|
|
1019
|
-
}
|
|
1116
|
+
case "MONTH": {
|
|
1117
|
+
formattedValue = value;
|
|
1020
1118
|
break;
|
|
1021
1119
|
}
|
|
1022
1120
|
default: {
|
|
1121
|
+
formattedValue = value;
|
|
1023
1122
|
break;
|
|
1024
1123
|
}
|
|
1025
1124
|
}
|
|
1026
|
-
|
|
1027
|
-
const fullWidthLabel = formattedLabel;
|
|
1028
|
-
if (typeof formattedLabel === "string" && maxLabelWidth && formattedLabel.length > maxLabelWidth) {
|
|
1029
|
-
formattedLabel = `${formattedLabel.substring(0, maxLabelWidth)}...`;
|
|
1030
|
-
}
|
|
1031
|
-
return { fullWidthLabel, formattedLabel };
|
|
1032
|
-
};
|
|
1033
|
-
var getCurrencySymbol = (dataFormatting = dataFormattingDefault) => {
|
|
1034
|
-
var _a;
|
|
1035
|
-
try {
|
|
1036
|
-
const { currencyCode, languageCode } = getDataFormatting(dataFormatting);
|
|
1037
|
-
const formattedParts = new Intl.NumberFormat(languageCode, {
|
|
1038
|
-
style: "currency",
|
|
1039
|
-
currency: currencyCode
|
|
1040
|
-
}).formatToParts(0);
|
|
1041
|
-
const symbol = (_a = formattedParts.find((part) => (part == null ? void 0 : part.type) === "currency")) == null ? void 0 : _a.value;
|
|
1042
|
-
return symbol;
|
|
1125
|
+
return formattedValue;
|
|
1043
1126
|
} catch (error) {
|
|
1044
1127
|
console.error(error);
|
|
1045
|
-
return;
|
|
1128
|
+
return value;
|
|
1046
1129
|
}
|
|
1047
1130
|
};
|
|
1048
|
-
var
|
|
1131
|
+
var formatStringDate = (value, config = dataFormattingDefault) => {
|
|
1132
|
+
var _a;
|
|
1049
1133
|
if (!value) {
|
|
1050
1134
|
return void 0;
|
|
1051
1135
|
}
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
return void 0;
|
|
1063
|
-
}
|
|
1064
|
-
default: {
|
|
1065
|
-
return void 0;
|
|
1066
|
-
}
|
|
1067
|
-
}
|
|
1068
|
-
} catch (error) {
|
|
1069
|
-
console.error(error);
|
|
1070
|
-
return void 0;
|
|
1071
|
-
}
|
|
1072
|
-
};
|
|
1073
|
-
var getDayJSObj = ({ value, column }) => {
|
|
1074
|
-
if (column.type === "DATE_STRING") {
|
|
1075
|
-
return getDayjsObjForStringType(value, column);
|
|
1076
|
-
}
|
|
1077
|
-
if (isNumber(value)) {
|
|
1078
|
-
return dayjsWithPlugins_default.unix(value).utc();
|
|
1079
|
-
}
|
|
1080
|
-
return dayjsWithPlugins_default.utc(value).utc();
|
|
1081
|
-
};
|
|
1082
|
-
var getEpochFromDate = (date, precision, precisionFrame) => {
|
|
1083
|
-
if (date == null ? void 0 : date.getTime) {
|
|
1084
|
-
if (precision && precisionFrame === "start") {
|
|
1085
|
-
return dayjsWithPlugins_default(date).utc().startOf(precision).valueOf();
|
|
1086
|
-
} else if (precision && precisionFrame === "end") {
|
|
1087
|
-
return dayjsWithPlugins_default(date).utc().endOf(precision).valueOf();
|
|
1088
|
-
}
|
|
1089
|
-
return date.getTime();
|
|
1090
|
-
}
|
|
1091
|
-
return;
|
|
1092
|
-
};
|
|
1093
|
-
|
|
1094
|
-
// src/HelperFns/arrayHelpers.ts
|
|
1095
|
-
import isEqual from "lodash.isequal";
|
|
1096
|
-
var invertArray = (array) => {
|
|
1097
|
-
const numRows = array.length;
|
|
1098
|
-
const numColumns = array[0].length;
|
|
1099
|
-
const invertedArray = [];
|
|
1100
|
-
for (let i = 0; i < numColumns; i++) {
|
|
1101
|
-
invertedArray[i] = [];
|
|
1102
|
-
for (let j = 0; j < numRows; j++) {
|
|
1103
|
-
if (array[j][i])
|
|
1104
|
-
invertedArray[i][j] = array[j][i];
|
|
1136
|
+
if (value && typeof value === "string") {
|
|
1137
|
+
const dateArray = value.split("-");
|
|
1138
|
+
const year = dateArray == null ? void 0 : dateArray[0];
|
|
1139
|
+
const day = dateArray == null ? void 0 : dateArray[2];
|
|
1140
|
+
let month;
|
|
1141
|
+
let week;
|
|
1142
|
+
if ((_a = dateArray == null ? void 0 : dateArray[1]) == null ? void 0 : _a.includes("W")) {
|
|
1143
|
+
week = dateArray == null ? void 0 : dateArray[1];
|
|
1144
|
+
} else {
|
|
1145
|
+
month = dateArray == null ? void 0 : dateArray[1];
|
|
1105
1146
|
}
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
return (a == null ? void 0 : a.toString()) == (b == null ? void 0 : b.toString());
|
|
1111
|
-
};
|
|
1112
|
-
var isObject = (obj) => {
|
|
1113
|
-
return typeof obj === "object" && !Array.isArray(obj) && obj !== null && obj !== void 0;
|
|
1114
|
-
};
|
|
1115
|
-
var deepEqual = (objA, objB) => {
|
|
1116
|
-
const lodashIsEqual = isEqual(objA, objB);
|
|
1117
|
-
if (lodashIsEqual) {
|
|
1118
|
-
return true;
|
|
1119
|
-
}
|
|
1120
|
-
const objAIsObject = isObject(objA);
|
|
1121
|
-
const objBIsObject = isObject(objB);
|
|
1122
|
-
if (!objAIsObject || !objBIsObject) {
|
|
1123
|
-
return lodashIsEqual;
|
|
1124
|
-
}
|
|
1125
|
-
const keysA = Object.keys(objA);
|
|
1126
|
-
const keysB = Object.keys(objB);
|
|
1127
|
-
if (keysA.length !== keysB.length) {
|
|
1128
|
-
return false;
|
|
1129
|
-
}
|
|
1130
|
-
for (let i = 0; i < keysA.length; i++) {
|
|
1131
|
-
if (typeof objA[keysA[i]] === "function" && typeof objB[keysA[i]] === "function") {
|
|
1132
|
-
if (!functionsEqual(objA[keysA[i]], objB[keysA[i]])) {
|
|
1133
|
-
return false;
|
|
1134
|
-
}
|
|
1135
|
-
} else if (!Object.hasOwnProperty.call(objB, keysA[i]) || !isEqual(objA[keysA[i]], objB[keysA[i]])) {
|
|
1136
|
-
return false;
|
|
1147
|
+
const { monthYearFormat, dayMonthYearFormat } = getDataFormatting(config);
|
|
1148
|
+
const dayJSObj = dayjsWithPlugins_default.utc(value).utc();
|
|
1149
|
+
if (!dayJSObj.isValid()) {
|
|
1150
|
+
return value;
|
|
1137
1151
|
}
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
if (
|
|
1145
|
-
|
|
1146
|
-
diff.push({
|
|
1147
|
-
key,
|
|
1148
|
-
objA: objA[key],
|
|
1149
|
-
objB: objB[key]
|
|
1150
|
-
});
|
|
1151
|
-
}
|
|
1152
|
-
} else if (!Object.is(objA[key], objB[key])) {
|
|
1153
|
-
diff.push({
|
|
1154
|
-
key,
|
|
1155
|
-
objA: objA[key],
|
|
1156
|
-
objB: objB[key]
|
|
1157
|
-
});
|
|
1152
|
+
let date = value;
|
|
1153
|
+
if (day) {
|
|
1154
|
+
date = dayJSObj.format(dayMonthYearFormat);
|
|
1155
|
+
} else if (month) {
|
|
1156
|
+
date = dayJSObj.format(monthYearFormat);
|
|
1157
|
+
} else if (week) {
|
|
1158
|
+
} else if (year) {
|
|
1159
|
+
date = year;
|
|
1158
1160
|
}
|
|
1159
|
-
|
|
1160
|
-
return diff;
|
|
1161
|
-
};
|
|
1162
|
-
var rotateArray = (array, n) => {
|
|
1163
|
-
const rotated = [...array];
|
|
1164
|
-
n = n % array.length;
|
|
1165
|
-
if (n < 0)
|
|
1166
|
-
n = array.length + n;
|
|
1167
|
-
for (let i = 0; i < n; i++) {
|
|
1168
|
-
rotated.unshift(rotated.pop());
|
|
1161
|
+
return date;
|
|
1169
1162
|
}
|
|
1170
|
-
return
|
|
1171
|
-
};
|
|
1172
|
-
var onlyUnique = (value, index, self) => {
|
|
1173
|
-
return self.indexOf(value) === index;
|
|
1163
|
+
return value;
|
|
1174
1164
|
};
|
|
1175
|
-
var
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
arr[i] = [];
|
|
1179
|
-
for (let j = 0; j < w; j++) {
|
|
1180
|
-
arr[i][j] = value;
|
|
1181
|
-
}
|
|
1165
|
+
var formatDateType = (element, column, config = dataFormattingDefault) => {
|
|
1166
|
+
if (isNumber(element)) {
|
|
1167
|
+
return formatEpochDate(element, column, config);
|
|
1182
1168
|
}
|
|
1183
|
-
return
|
|
1184
|
-
};
|
|
1185
|
-
|
|
1186
|
-
// src/HelperFns/displayTypeHelpers.ts
|
|
1187
|
-
var isChartType = (type) => CHART_TYPES.includes(type);
|
|
1188
|
-
var isTableType = (type) => TABLE_TYPES.includes(type);
|
|
1189
|
-
var isDisplayTypeValid = (response, displayType, dataLength, pivotDataLength, columns, isDataLimited) => {
|
|
1190
|
-
var _a, _b;
|
|
1191
|
-
const supportedDisplayTypes = getSupportedDisplayTypes({
|
|
1192
|
-
response,
|
|
1193
|
-
columns: columns ?? ((_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.columns),
|
|
1194
|
-
dataLength,
|
|
1195
|
-
pivotDataLength,
|
|
1196
|
-
isDataLimited
|
|
1197
|
-
});
|
|
1198
|
-
const isValid = displayType && supportedDisplayTypes.includes(displayType);
|
|
1199
|
-
return isValid;
|
|
1169
|
+
return formatISODateWithPrecision(element, column, config);
|
|
1200
1170
|
};
|
|
1201
|
-
var
|
|
1202
|
-
if (
|
|
1203
|
-
return
|
|
1171
|
+
var formatDateStringType = (element, column, config = dataFormattingDefault) => {
|
|
1172
|
+
if (!column) {
|
|
1173
|
+
return element;
|
|
1204
1174
|
}
|
|
1205
|
-
|
|
1206
|
-
|
|
1175
|
+
if (column.precision) {
|
|
1176
|
+
return formatStringDateWithPrecision(element, column);
|
|
1177
|
+
}
|
|
1178
|
+
return formatStringDate(element, config);
|
|
1207
1179
|
};
|
|
1208
|
-
var
|
|
1209
|
-
if (
|
|
1210
|
-
return
|
|
1180
|
+
var formatISODateWithPrecision = (value, col, config = dataFormattingDefault) => {
|
|
1181
|
+
if (!value) {
|
|
1182
|
+
return void 0;
|
|
1211
1183
|
}
|
|
1212
|
-
if (
|
|
1213
|
-
return
|
|
1184
|
+
if (!col) {
|
|
1185
|
+
return value;
|
|
1214
1186
|
}
|
|
1215
|
-
|
|
1216
|
-
};
|
|
1217
|
-
|
|
1218
|
-
if (
|
|
1219
|
-
return
|
|
1187
|
+
const precision = col.precision;
|
|
1188
|
+
const { dayMonthYearFormat, monthYearFormat } = getDataFormatting(config);
|
|
1189
|
+
const dateDayJS = dayjsWithPlugins_default.utc(value).utc();
|
|
1190
|
+
if (!dateDayJS.isValid()) {
|
|
1191
|
+
return value;
|
|
1220
1192
|
}
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1193
|
+
let date = dateDayJS.format(dayMonthYearFormat);
|
|
1194
|
+
try {
|
|
1195
|
+
switch (precision) {
|
|
1196
|
+
case "DAY" /* DAY */: {
|
|
1197
|
+
break;
|
|
1198
|
+
}
|
|
1199
|
+
case "WEEK" /* WEEK */: {
|
|
1200
|
+
const dateJSStart = dateDayJS.startOf("week").format("MMM D");
|
|
1201
|
+
const dateJSEnd = dateDayJS.endOf("week").format("MMM D");
|
|
1202
|
+
const week = dateDayJS.week();
|
|
1203
|
+
const year = dateDayJS.format("YYYY");
|
|
1204
|
+
date = `${dateJSStart} - ${dateJSEnd}, ${year} (Week ${week})`;
|
|
1205
|
+
break;
|
|
1206
|
+
}
|
|
1207
|
+
case "MONTH" /* MONTH */: {
|
|
1208
|
+
date = dateDayJS.format(monthYearFormat);
|
|
1209
|
+
break;
|
|
1210
|
+
}
|
|
1211
|
+
case "QUARTER" /* QUARTER */: {
|
|
1212
|
+
const quarter = dateDayJS.quarter();
|
|
1213
|
+
const year = dateDayJS.format("YYYY");
|
|
1214
|
+
date = `${year}-Q${quarter}`;
|
|
1215
|
+
break;
|
|
1216
|
+
}
|
|
1217
|
+
case "YEAR" /* YEAR */: {
|
|
1218
|
+
date = dateDayJS.format("YYYY");
|
|
1219
|
+
break;
|
|
1220
|
+
}
|
|
1221
|
+
case "DATE_HOUR" /* DATE_HOUR */: {
|
|
1222
|
+
date = dateDayJS.format(`${dayMonthYearFormat} h:00A`);
|
|
1223
|
+
break;
|
|
1224
|
+
}
|
|
1225
|
+
case "DATE_MINUTE" /* DATE_MINUTE */: {
|
|
1226
|
+
date = dateDayJS.format(`${dayMonthYearFormat} h:mmA`);
|
|
1227
|
+
break;
|
|
1228
|
+
}
|
|
1229
|
+
default: {
|
|
1230
|
+
break;
|
|
1231
|
+
}
|
|
1232
|
+
}
|
|
1233
|
+
return date;
|
|
1234
|
+
} catch (error) {
|
|
1235
|
+
console.error(error);
|
|
1228
1236
|
}
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
if (!
|
|
1232
|
-
return
|
|
1237
|
+
};
|
|
1238
|
+
var formatEpochDate = (value, col, config = dataFormattingDefault) => {
|
|
1239
|
+
if (!value) {
|
|
1240
|
+
return void 0;
|
|
1233
1241
|
}
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
const groupbyColumn2 = columns[groupbyColumns[1]];
|
|
1237
|
-
if (!groupbyColumn1.is_visible || !groupbyColumn2.is_visible || !((visibleColumns == null ? void 0 : visibleColumns.length) >= 3)) {
|
|
1238
|
-
return false;
|
|
1242
|
+
if (!col) {
|
|
1243
|
+
return value;
|
|
1239
1244
|
}
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1245
|
+
try {
|
|
1246
|
+
const { monthYearFormat, dayMonthYearFormat } = getDataFormatting(config);
|
|
1247
|
+
const year = "YYYY";
|
|
1248
|
+
const monthYear = monthYearFormat;
|
|
1249
|
+
const dayMonthYear = dayMonthYearFormat;
|
|
1250
|
+
const title = col.title;
|
|
1251
|
+
let dayJSObj;
|
|
1252
|
+
if (isNaN(parseFloat(value))) {
|
|
1253
|
+
dayJSObj = dayjsWithPlugins_default.utc(value).utc();
|
|
1254
|
+
} else {
|
|
1255
|
+
dayJSObj = dayjsWithPlugins_default.unix(value).utc();
|
|
1256
|
+
}
|
|
1257
|
+
if (!dayJSObj.isValid()) {
|
|
1258
|
+
return value;
|
|
1259
|
+
}
|
|
1260
|
+
let date = dayJSObj.format(dayMonthYear);
|
|
1261
|
+
if (isNaN(parseFloat(value))) {
|
|
1262
|
+
if (title && title.toLowerCase().includes("year")) {
|
|
1263
|
+
date = dayJSObj.format(year);
|
|
1264
|
+
} else if (title && title.toLowerCase().includes("month")) {
|
|
1265
|
+
date = dayJSObj.format(monthYear);
|
|
1266
|
+
}
|
|
1267
|
+
date = dayJSObj.format(dayMonthYear);
|
|
1268
|
+
} else if (title && title.toLowerCase().includes("year")) {
|
|
1269
|
+
date = dayJSObj.format(year);
|
|
1270
|
+
} else if (title && title.toLowerCase().includes("month")) {
|
|
1271
|
+
date = dayJSObj.format(monthYear);
|
|
1272
|
+
}
|
|
1273
|
+
return date;
|
|
1274
|
+
} catch (error) {
|
|
1275
|
+
console.error(error);
|
|
1276
|
+
return value;
|
|
1253
1277
|
}
|
|
1254
|
-
return true;
|
|
1255
1278
|
};
|
|
1256
|
-
var
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1279
|
+
var formatDOW = (value, col) => {
|
|
1280
|
+
let dowStyle = col.dow_style;
|
|
1281
|
+
if (!dowStyle) {
|
|
1282
|
+
dowStyle = "NUM_1_MON";
|
|
1283
|
+
}
|
|
1284
|
+
let formattedValue = value;
|
|
1285
|
+
let weekdayNumber = Number(value);
|
|
1286
|
+
switch (dowStyle) {
|
|
1287
|
+
case "NUM_1_MON": {
|
|
1288
|
+
const weekdays = WEEKDAY_NAMES_MON;
|
|
1289
|
+
const index = weekdayNumber - 1;
|
|
1290
|
+
if (index >= 0) {
|
|
1291
|
+
formattedValue = weekdays[index];
|
|
1292
|
+
} else {
|
|
1293
|
+
console.warn(`dow style is NUM_1_MON but the value could not be converted to a number: ${value}`);
|
|
1294
|
+
}
|
|
1295
|
+
break;
|
|
1296
|
+
}
|
|
1297
|
+
case "NUM_1_SUN": {
|
|
1298
|
+
const weekdays = WEEKDAY_NAMES_SUN;
|
|
1299
|
+
const index = weekdayNumber - 1;
|
|
1300
|
+
if (index >= 0) {
|
|
1301
|
+
formattedValue = weekdays[index];
|
|
1302
|
+
} else {
|
|
1303
|
+
console.warn(`dow style is NUM_1_SUN but the value could not be converted to a number: ${value}`);
|
|
1304
|
+
}
|
|
1305
|
+
break;
|
|
1306
|
+
}
|
|
1307
|
+
case "NUM_0_MON": {
|
|
1308
|
+
const weekdays = WEEKDAY_NAMES_MON;
|
|
1309
|
+
if (weekdayNumber >= 0) {
|
|
1310
|
+
formattedValue = weekdays[weekdayNumber];
|
|
1311
|
+
} else {
|
|
1312
|
+
console.warn(`dow style is NUM_0_MON but the value could not be converted to a number: ${value}`);
|
|
1313
|
+
}
|
|
1314
|
+
break;
|
|
1315
|
+
}
|
|
1316
|
+
case "NUM_0_SUN": {
|
|
1317
|
+
const weekdays = WEEKDAY_NAMES_SUN;
|
|
1318
|
+
if (weekdayNumber >= 0) {
|
|
1319
|
+
formattedValue = weekdays[weekdayNumber];
|
|
1320
|
+
} else {
|
|
1321
|
+
console.warn(`dow style is NUM_0_SUN but the value could not be converted to a number: ${value}`);
|
|
1322
|
+
}
|
|
1323
|
+
break;
|
|
1324
|
+
}
|
|
1325
|
+
case "ALPHA_MON":
|
|
1326
|
+
case "ALPHA_SUN": {
|
|
1327
|
+
const weekday = WEEKDAY_NAMES_MON.find((weekday2) => weekday2.toLowerCase().includes(value.trim().toLowerCase()));
|
|
1328
|
+
if (weekday) {
|
|
1329
|
+
formattedValue = weekday;
|
|
1330
|
+
} else {
|
|
1331
|
+
console.warn(`dow style is ALPHA but the value could not be matched to a weekday name: ${value}`);
|
|
1332
|
+
}
|
|
1333
|
+
break;
|
|
1334
|
+
}
|
|
1335
|
+
default: {
|
|
1336
|
+
console.warn(`could not format dow value. dow_style was not recognized: ${col.dow_style}`);
|
|
1337
|
+
break;
|
|
1338
|
+
}
|
|
1339
|
+
}
|
|
1340
|
+
return formattedValue;
|
|
1261
1341
|
};
|
|
1262
|
-
var
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1342
|
+
var dateStringSortFnWithoutPrecision = (a, b) => {
|
|
1343
|
+
if (a.includes("-W")) {
|
|
1344
|
+
const aDateYear = a.substring(0, 4);
|
|
1345
|
+
const bDateYear = b.substring(0, 4);
|
|
1346
|
+
if (aDateYear !== bDateYear) {
|
|
1347
|
+
return aDateYear - bDateYear;
|
|
1348
|
+
} else {
|
|
1349
|
+
const aDateWeek = a.substring(6, 8);
|
|
1350
|
+
const bDateWeek = b.substring(6, 8);
|
|
1351
|
+
return aDateWeek - bDateWeek;
|
|
1352
|
+
}
|
|
1353
|
+
} else if (WEEKDAY_NAMES_MON.includes(a.trim())) {
|
|
1354
|
+
const aDayIndex = WEEKDAY_NAMES_MON.findIndex((d) => d.toLowerCase().includes(a.trim().toLowerCase()));
|
|
1355
|
+
const bDayIndex = WEEKDAY_NAMES_MON.findIndex((d) => d.toLowerCase().includes(b.trim().toLowerCase()));
|
|
1356
|
+
let sortValue = a - b;
|
|
1357
|
+
if (aDayIndex >= 0 && bDayIndex >= 0) {
|
|
1358
|
+
sortValue = aDayIndex - bDayIndex;
|
|
1359
|
+
}
|
|
1360
|
+
return sortValue;
|
|
1361
|
+
} else if (MONTH_NAMES.includes(a.trim())) {
|
|
1362
|
+
const aMonthIndex = MONTH_NAMES.findIndex((m) => m === a.trim());
|
|
1363
|
+
const bMonthIndex = MONTH_NAMES.findIndex((m) => m === b.trim());
|
|
1364
|
+
if (aMonthIndex >= 0 && bMonthIndex >= 0) {
|
|
1365
|
+
return bMonthIndex - aMonthIndex;
|
|
1366
|
+
}
|
|
1367
|
+
return a - b;
|
|
1368
|
+
} else if (SEASON_NAMES.includes(a.substr(0, 2))) {
|
|
1369
|
+
const aSeasonIndex = SEASON_NAMES.findIndex((s) => s === a.substr(0, 2));
|
|
1370
|
+
const bSeasonIndex = SEASON_NAMES.findIndex((s) => s === b.substr(0, 2));
|
|
1371
|
+
const aYear = Number(a.substr(2));
|
|
1372
|
+
const bYear = Number(b.substr(2));
|
|
1373
|
+
if (aYear === bYear) {
|
|
1374
|
+
return aSeasonIndex - bSeasonIndex;
|
|
1375
|
+
}
|
|
1376
|
+
return aYear - bYear;
|
|
1266
1377
|
}
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
if (hasNoData && hasOneColumn && referenceID === "1.1.211") {
|
|
1273
|
-
return true;
|
|
1378
|
+
return a - b;
|
|
1379
|
+
};
|
|
1380
|
+
var dateStringSortFn = (a, b, col) => {
|
|
1381
|
+
if (typeof a !== "string" || typeof b !== "string" || !col) {
|
|
1382
|
+
return a - b;
|
|
1274
1383
|
}
|
|
1275
|
-
const
|
|
1276
|
-
|
|
1277
|
-
|
|
1384
|
+
const aTrimmed = a.trim();
|
|
1385
|
+
const bTrimmed = b.trim();
|
|
1386
|
+
switch (col.precision) {
|
|
1387
|
+
case "DOW": {
|
|
1388
|
+
const dowStyle = col.dow_style ?? "ALPHA_MON";
|
|
1389
|
+
let aIndex = WEEKDAY_NAMES_MON.findIndex((dow) => dow.toLowerCase().includes(aTrimmed.toLowerCase()));
|
|
1390
|
+
let bIndex = WEEKDAY_NAMES_MON.findIndex((dow) => dow.toLowerCase().includes(bTrimmed.toLowerCase()));
|
|
1391
|
+
if (dowStyle === "ALPHA_SUN") {
|
|
1392
|
+
aIndex = WEEKDAY_NAMES_SUN.findIndex((dow) => dow.toLowerCase().includes(aTrimmed.toLowerCase()));
|
|
1393
|
+
bIndex = WEEKDAY_NAMES_SUN.findIndex((dow) => dow.toLowerCase().includes(bTrimmed.toLowerCase()));
|
|
1394
|
+
}
|
|
1395
|
+
return aIndex - bIndex;
|
|
1396
|
+
}
|
|
1397
|
+
case "HOUR":
|
|
1398
|
+
case "MINUTE": {
|
|
1399
|
+
const aDayjsTime = dayjsWithPlugins_default.utc(aTrimmed, "THH:mm:ss.SSSZ").utc();
|
|
1400
|
+
const bDayjsTime = dayjsWithPlugins_default.utc(bTrimmed, "THH:mm:ss.SSSZ").utc();
|
|
1401
|
+
return aDayjsTime.unix() - bDayjsTime.unix();
|
|
1402
|
+
}
|
|
1403
|
+
case "MONTH": {
|
|
1404
|
+
MONTH_NAMES;
|
|
1405
|
+
const aMonthIndex = MONTH_NAMES.findIndex((m) => m.toLowerCase() === aTrimmed.toLowerCase());
|
|
1406
|
+
const bMonthIndex = MONTH_NAMES.findIndex((m) => m.toLowerCase() === bTrimmed.toLowerCase());
|
|
1407
|
+
return aMonthIndex - bMonthIndex;
|
|
1408
|
+
}
|
|
1409
|
+
default: {
|
|
1410
|
+
return dateStringSortFnWithoutPrecision(aTrimmed, bTrimmed);
|
|
1411
|
+
}
|
|
1278
1412
|
}
|
|
1279
|
-
return false;
|
|
1280
1413
|
};
|
|
1281
|
-
var
|
|
1282
|
-
response,
|
|
1283
|
-
columns,
|
|
1284
|
-
dataLength,
|
|
1285
|
-
pivotDataLength,
|
|
1286
|
-
isDataLimited
|
|
1287
|
-
} = {}) => {
|
|
1288
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
1414
|
+
var dateSortFn = (a, b, col, isTable) => {
|
|
1289
1415
|
try {
|
|
1290
|
-
if (!
|
|
1291
|
-
return
|
|
1416
|
+
if (!a && !b) {
|
|
1417
|
+
return 0;
|
|
1418
|
+
} else if (!a && b) {
|
|
1419
|
+
return 1;
|
|
1420
|
+
} else if (a && !b || !col) {
|
|
1421
|
+
return -1;
|
|
1292
1422
|
}
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1423
|
+
let aDate = Number(a);
|
|
1424
|
+
let bDate = Number(b);
|
|
1425
|
+
let sortValue = aDate - bDate;
|
|
1426
|
+
if (isNaN(aDate) || isNaN(bDate)) {
|
|
1427
|
+
if (col.type === "DATE_STRING") {
|
|
1428
|
+
sortValue = dateStringSortFn(a, b, col);
|
|
1429
|
+
} else {
|
|
1430
|
+
sortValue = dayjsWithPlugins_default.utc(a).unix() - dayjsWithPlugins_default.utc(b).unix();
|
|
1431
|
+
}
|
|
1296
1432
|
}
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
const visibleColumns = getVisibleColumns(allColumns);
|
|
1300
|
-
if (!(visibleColumns == null ? void 0 : visibleColumns.length)) {
|
|
1301
|
-
return ["text"];
|
|
1433
|
+
if (isTable && col.precision === "DOW") {
|
|
1434
|
+
sortValue = -1 * sortValue;
|
|
1302
1435
|
}
|
|
1303
|
-
|
|
1304
|
-
|
|
1436
|
+
return sortValue;
|
|
1437
|
+
} catch (error) {
|
|
1438
|
+
console.error(error);
|
|
1439
|
+
return -1;
|
|
1440
|
+
}
|
|
1441
|
+
};
|
|
1442
|
+
var sortDataByDate = (data, tableColumns, sortDirection = "desc", isTable) => {
|
|
1443
|
+
try {
|
|
1444
|
+
if (!data || typeof data !== "object") {
|
|
1445
|
+
throw new Error("Could not sort data by date - no data supplied");
|
|
1305
1446
|
}
|
|
1306
|
-
|
|
1307
|
-
|
|
1447
|
+
const dateColumnIndex = getDateColumnIndex(tableColumns);
|
|
1448
|
+
const dateColumn = tableColumns[dateColumnIndex];
|
|
1449
|
+
if (dateColumnIndex >= 0) {
|
|
1450
|
+
let multiplier = sortDirection === "desc" ? -1 : 1;
|
|
1451
|
+
const sortedData = [...data].sort(
|
|
1452
|
+
(a, b) => multiplier * dateSortFn(a[dateColumnIndex], b[dateColumnIndex], dateColumn, isTable)
|
|
1453
|
+
);
|
|
1454
|
+
return sortedData;
|
|
1308
1455
|
}
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1456
|
+
} catch (error) {
|
|
1457
|
+
console.error(error);
|
|
1458
|
+
}
|
|
1459
|
+
return data;
|
|
1460
|
+
};
|
|
1461
|
+
var formatElement = ({
|
|
1462
|
+
element,
|
|
1463
|
+
column,
|
|
1464
|
+
config = dataFormattingDefault,
|
|
1465
|
+
htmlElement,
|
|
1466
|
+
isChart = false
|
|
1467
|
+
}) => {
|
|
1468
|
+
try {
|
|
1469
|
+
let formattedElement = element;
|
|
1470
|
+
const { currencyCode, languageCode, currencyDecimals, quantityDecimals, ratioDecimals } = getDataFormatting(config);
|
|
1471
|
+
let type = column == null ? void 0 : column.type;
|
|
1472
|
+
if (isChart && ["count", "deviation", "variance"].includes(column == null ? void 0 : column.aggType)) {
|
|
1473
|
+
type = "QUANTITY";
|
|
1474
|
+
}
|
|
1475
|
+
if (column) {
|
|
1476
|
+
switch (type) {
|
|
1477
|
+
case "STRING": {
|
|
1478
|
+
break;
|
|
1479
|
+
}
|
|
1480
|
+
case "DOLLAR_AMT": {
|
|
1481
|
+
const elementNumber = parseFloat(`${element}`);
|
|
1482
|
+
if (!isNaN(elementNumber)) {
|
|
1483
|
+
const currency = currencyCode || "USD";
|
|
1484
|
+
const validatedCurrencyDecimals = currencyDecimals || currencyDecimals === 0 ? currencyDecimals : void 0;
|
|
1485
|
+
try {
|
|
1486
|
+
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1487
|
+
style: "currency",
|
|
1488
|
+
currency: `${currency}`,
|
|
1489
|
+
minimumFractionDigits: validatedCurrencyDecimals,
|
|
1490
|
+
maximumFractionDigits: validatedCurrencyDecimals
|
|
1491
|
+
}).format(elementNumber);
|
|
1492
|
+
} catch (error) {
|
|
1493
|
+
console.error(error);
|
|
1494
|
+
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1495
|
+
style: "currency",
|
|
1496
|
+
currency: "USD",
|
|
1497
|
+
minimumFractionDigits: validatedCurrencyDecimals,
|
|
1498
|
+
maximumFractionDigits: validatedCurrencyDecimals
|
|
1499
|
+
}).format(elementNumber);
|
|
1500
|
+
}
|
|
1501
|
+
}
|
|
1502
|
+
break;
|
|
1503
|
+
}
|
|
1504
|
+
case "QUANTITY": {
|
|
1505
|
+
const validatedQuantityDecimals = !isNaN(quantityDecimals) ? quantityDecimals : 2;
|
|
1506
|
+
const elementNumber = parseFloat(`${element}`);
|
|
1507
|
+
if (!isNaN(elementNumber)) {
|
|
1508
|
+
const numDecimals = elementNumber % 1 !== 0 ? validatedQuantityDecimals : 0;
|
|
1509
|
+
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1510
|
+
minimumFractionDigits: numDecimals,
|
|
1511
|
+
maximumFractionDigits: numDecimals
|
|
1512
|
+
}).format(elementNumber);
|
|
1513
|
+
}
|
|
1514
|
+
break;
|
|
1515
|
+
}
|
|
1516
|
+
case "DATE": {
|
|
1517
|
+
formattedElement = formatDateType(element, column, config);
|
|
1518
|
+
break;
|
|
1519
|
+
}
|
|
1520
|
+
case "DATE_STRING": {
|
|
1521
|
+
formattedElement = formatDateStringType(element, column, config);
|
|
1522
|
+
break;
|
|
1523
|
+
}
|
|
1524
|
+
case "RATIO": {
|
|
1525
|
+
const numDecimals = !isNaN(ratioDecimals) ? ratioDecimals : 4;
|
|
1526
|
+
const elementNumber = parseFloat(`${element}`);
|
|
1527
|
+
if (!isNaN(elementNumber)) {
|
|
1528
|
+
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1529
|
+
minimumFractionDigits: numDecimals,
|
|
1530
|
+
maximumFractionDigits: numDecimals
|
|
1531
|
+
}).format(elementNumber);
|
|
1532
|
+
}
|
|
1533
|
+
break;
|
|
1534
|
+
}
|
|
1535
|
+
case "PERCENT": {
|
|
1536
|
+
const elementNumber = parseFloat(`${element}`);
|
|
1537
|
+
if (!isNaN(elementNumber)) {
|
|
1538
|
+
const p = elementNumber / 100;
|
|
1539
|
+
formattedElement = new Intl.NumberFormat(languageCode, {
|
|
1540
|
+
style: "percent",
|
|
1541
|
+
minimumFractionDigits: 2,
|
|
1542
|
+
maximumFractionDigits: 2
|
|
1543
|
+
}).format(p);
|
|
1544
|
+
if (htmlElement) {
|
|
1545
|
+
if (elementNumber < 0) {
|
|
1546
|
+
htmlElement.classList.add("comparison-value-negative");
|
|
1547
|
+
} else if (elementNumber > 0) {
|
|
1548
|
+
htmlElement.classList.add("comparison-value-positive");
|
|
1549
|
+
}
|
|
1550
|
+
}
|
|
1551
|
+
}
|
|
1552
|
+
break;
|
|
1553
|
+
}
|
|
1554
|
+
default: {
|
|
1555
|
+
break;
|
|
1556
|
+
}
|
|
1557
|
+
}
|
|
1558
|
+
}
|
|
1559
|
+
return formattedElement;
|
|
1560
|
+
} catch (error) {
|
|
1561
|
+
console.error(error);
|
|
1562
|
+
return element;
|
|
1563
|
+
}
|
|
1564
|
+
};
|
|
1565
|
+
var getNumberFormatConfig = (d, scale) => {
|
|
1566
|
+
var _a, _b;
|
|
1567
|
+
let minimumFractionDigits = 0;
|
|
1568
|
+
let maximumFractionDigits = 0;
|
|
1569
|
+
let notation;
|
|
1570
|
+
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]);
|
|
1571
|
+
const smallDomain = domainRange && domainRange < 10;
|
|
1572
|
+
const absValue = Math.abs(d);
|
|
1573
|
+
if (smallDomain) {
|
|
1574
|
+
minimumFractionDigits = 2;
|
|
1575
|
+
maximumFractionDigits = 2;
|
|
1576
|
+
} else if (absValue >= 1e3) {
|
|
1577
|
+
notation = "compact";
|
|
1578
|
+
if (absValue > 1e9) {
|
|
1579
|
+
maximumFractionDigits = 3;
|
|
1580
|
+
} else if (absValue > 1e6) {
|
|
1581
|
+
maximumFractionDigits = 2;
|
|
1582
|
+
} else if (absValue > 1e3) {
|
|
1583
|
+
maximumFractionDigits = 1;
|
|
1315
1584
|
}
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1585
|
+
}
|
|
1586
|
+
return { minimumFractionDigits, maximumFractionDigits, notation };
|
|
1587
|
+
};
|
|
1588
|
+
var formatChartLabel = ({ d, scale, column, dataFormatting, maxLabelWidth }) => {
|
|
1589
|
+
if (d === null) {
|
|
1590
|
+
return {
|
|
1591
|
+
fullWidthLabel: "Untitled Category",
|
|
1592
|
+
formattedLabel: "Untitled Category"
|
|
1593
|
+
};
|
|
1594
|
+
}
|
|
1595
|
+
const col = column ?? (scale == null ? void 0 : scale.column);
|
|
1596
|
+
if (!col || !col.type) {
|
|
1597
|
+
return {
|
|
1598
|
+
fullWidthLabel: d,
|
|
1599
|
+
formattedLabel: d
|
|
1600
|
+
};
|
|
1601
|
+
}
|
|
1602
|
+
const config = (scale == null ? void 0 : scale.dataFormatting) ?? dataFormatting;
|
|
1603
|
+
const { currencyCode, languageCode } = config;
|
|
1604
|
+
let type = col.type;
|
|
1605
|
+
if ((scale == null ? void 0 : scale.units) === "none") {
|
|
1606
|
+
type = "QUANTITY";
|
|
1607
|
+
}
|
|
1608
|
+
const { minimumFractionDigits, maximumFractionDigits, notation } = getNumberFormatConfig(d, scale);
|
|
1609
|
+
let formattedLabel = d;
|
|
1610
|
+
if (scale == null ? void 0 : scale.showLabelDecimals) {
|
|
1611
|
+
formattedLabel = formatElement({
|
|
1612
|
+
element: d,
|
|
1613
|
+
column: column ?? (scale == null ? void 0 : scale.column),
|
|
1614
|
+
config: dataFormatting,
|
|
1615
|
+
isChart: true
|
|
1616
|
+
});
|
|
1617
|
+
} else {
|
|
1618
|
+
switch (type) {
|
|
1619
|
+
case "STRING": {
|
|
1620
|
+
break;
|
|
1320
1621
|
}
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1622
|
+
case "DOLLAR_AMT": {
|
|
1623
|
+
if (Number(d) || Number(d) === 0) {
|
|
1624
|
+
const style = "currency";
|
|
1625
|
+
const currency = currencyCode || "USD";
|
|
1626
|
+
const currencyConfig = {
|
|
1627
|
+
style,
|
|
1628
|
+
minimumFractionDigits,
|
|
1629
|
+
maximumFractionDigits,
|
|
1630
|
+
notation
|
|
1631
|
+
};
|
|
1632
|
+
try {
|
|
1633
|
+
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1634
|
+
...currencyConfig,
|
|
1635
|
+
currency
|
|
1636
|
+
}).format(d);
|
|
1637
|
+
} catch (error) {
|
|
1638
|
+
console.error(error);
|
|
1639
|
+
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1640
|
+
...currencyConfig,
|
|
1641
|
+
currency: "USD"
|
|
1642
|
+
}).format(d);
|
|
1643
|
+
}
|
|
1329
1644
|
}
|
|
1645
|
+
break;
|
|
1330
1646
|
}
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1647
|
+
case "QUANTITY": {
|
|
1648
|
+
if (!isNaN(parseFloat(d))) {
|
|
1649
|
+
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1650
|
+
minimumFractionDigits,
|
|
1651
|
+
maximumFractionDigits,
|
|
1652
|
+
notation
|
|
1653
|
+
}).format(d);
|
|
1654
|
+
}
|
|
1655
|
+
break;
|
|
1339
1656
|
}
|
|
1340
|
-
|
|
1341
|
-
|
|
1657
|
+
case "DATE": {
|
|
1658
|
+
formattedLabel = formatDateType(d, col, config);
|
|
1659
|
+
break;
|
|
1342
1660
|
}
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
supportedDisplayTypes.push("scatterplot");
|
|
1661
|
+
case "DATE_STRING": {
|
|
1662
|
+
formattedLabel = formatDateStringType(d, col, config);
|
|
1663
|
+
break;
|
|
1347
1664
|
}
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
column: dateColumn,
|
|
1357
|
-
config: getDataFormatting({ monthYearFormat: "YYYY", dayMonthYearFormat: "YYYY" })
|
|
1358
|
-
});
|
|
1359
|
-
if (!uniqueYears.includes(year)) {
|
|
1360
|
-
uniqueYears.push(year);
|
|
1361
|
-
}
|
|
1362
|
-
});
|
|
1363
|
-
if (uniqueYears.length > 1) {
|
|
1364
|
-
supportedDisplayTypes.push("pivot_table");
|
|
1665
|
+
case "PERCENT": {
|
|
1666
|
+
if (Number(d) || Number(d) === 0) {
|
|
1667
|
+
const p = Number(d) / 100;
|
|
1668
|
+
formattedLabel = new Intl.NumberFormat(languageCode, {
|
|
1669
|
+
style: "percent",
|
|
1670
|
+
minimumFractionDigits: 1,
|
|
1671
|
+
maximumFractionDigits: 1
|
|
1672
|
+
}).format(p);
|
|
1365
1673
|
}
|
|
1674
|
+
break;
|
|
1675
|
+
}
|
|
1676
|
+
default: {
|
|
1677
|
+
break;
|
|
1366
1678
|
}
|
|
1367
|
-
return supportedDisplayTypes;
|
|
1368
1679
|
}
|
|
1369
|
-
return ["table"];
|
|
1370
|
-
} catch (error) {
|
|
1371
|
-
console.error(error);
|
|
1372
|
-
return ["table"];
|
|
1373
1680
|
}
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
if (chartType) {
|
|
1378
|
-
return chartType;
|
|
1681
|
+
const fullWidthLabel = formattedLabel;
|
|
1682
|
+
if (typeof formattedLabel === "string" && maxLabelWidth && formattedLabel.length > maxLabelWidth) {
|
|
1683
|
+
formattedLabel = `${formattedLabel.substring(0, maxLabelWidth)}...`;
|
|
1379
1684
|
}
|
|
1380
|
-
return
|
|
1685
|
+
return { fullWidthLabel, formattedLabel };
|
|
1381
1686
|
};
|
|
1382
|
-
var
|
|
1383
|
-
var _a
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
if (supportedDisplayTypes.includes(preferredDisplayType)) {
|
|
1396
|
-
return preferredDisplayType;
|
|
1397
|
-
}
|
|
1398
|
-
if (responseDisplayType === "suggestion" || responseDisplayType === "help" || responseDisplayType === "html") {
|
|
1399
|
-
return responseDisplayType;
|
|
1687
|
+
var getCurrencySymbol = (dataFormatting = dataFormattingDefault) => {
|
|
1688
|
+
var _a;
|
|
1689
|
+
try {
|
|
1690
|
+
const { currencyCode, languageCode } = getDataFormatting(dataFormatting);
|
|
1691
|
+
const formattedParts = new Intl.NumberFormat(languageCode, {
|
|
1692
|
+
style: "currency",
|
|
1693
|
+
currency: currencyCode
|
|
1694
|
+
}).formatToParts(0);
|
|
1695
|
+
const symbol = (_a = formattedParts.find((part) => (part == null ? void 0 : part.type) === "currency")) == null ? void 0 : _a.value;
|
|
1696
|
+
return symbol;
|
|
1697
|
+
} catch (error) {
|
|
1698
|
+
console.error(error);
|
|
1699
|
+
return;
|
|
1400
1700
|
}
|
|
1401
|
-
|
|
1402
|
-
|
|
1701
|
+
};
|
|
1702
|
+
var getDayjsObjForStringType = (value, col) => {
|
|
1703
|
+
if (!value) {
|
|
1704
|
+
return void 0;
|
|
1403
1705
|
}
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1706
|
+
try {
|
|
1707
|
+
switch (col.precision) {
|
|
1708
|
+
case "DOW": {
|
|
1709
|
+
return void 0;
|
|
1710
|
+
}
|
|
1711
|
+
case "HOUR":
|
|
1712
|
+
case "MINUTE": {
|
|
1713
|
+
return dayjsWithPlugins_default.utc(value, "THH:mm:ss.SSSZ").utc();
|
|
1714
|
+
}
|
|
1715
|
+
case "MONTH": {
|
|
1716
|
+
return void 0;
|
|
1717
|
+
}
|
|
1718
|
+
default: {
|
|
1719
|
+
return void 0;
|
|
1720
|
+
}
|
|
1408
1721
|
}
|
|
1409
|
-
|
|
1722
|
+
} catch (error) {
|
|
1723
|
+
console.error(error);
|
|
1724
|
+
return void 0;
|
|
1410
1725
|
}
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
}
|
|
1416
|
-
return displayType;
|
|
1726
|
+
};
|
|
1727
|
+
var getDayJSObj = ({ value, column }) => {
|
|
1728
|
+
if (column.type === "DATE_STRING") {
|
|
1729
|
+
return getDayjsObjForStringType(value, column);
|
|
1417
1730
|
}
|
|
1418
|
-
|
|
1731
|
+
if (isNumber(value)) {
|
|
1732
|
+
return dayjsWithPlugins_default.unix(value).utc();
|
|
1733
|
+
}
|
|
1734
|
+
return dayjsWithPlugins_default.utc(value).utc();
|
|
1419
1735
|
};
|
|
1420
|
-
var
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1736
|
+
var getEpochFromDate = (date, precision, precisionFrame) => {
|
|
1737
|
+
if (date == null ? void 0 : date.getTime) {
|
|
1738
|
+
if (precision && precisionFrame === "start") {
|
|
1739
|
+
return dayjsWithPlugins_default(date).utc().startOf(precision).valueOf();
|
|
1740
|
+
} else if (precision && precisionFrame === "end") {
|
|
1741
|
+
return dayjsWithPlugins_default(date).utc().endOf(precision).valueOf();
|
|
1742
|
+
}
|
|
1743
|
+
return date.getTime();
|
|
1424
1744
|
}
|
|
1425
|
-
return
|
|
1745
|
+
return;
|
|
1426
1746
|
};
|
|
1427
1747
|
|
|
1428
1748
|
// src/HelperFns/domHelpers.ts
|
|
@@ -2281,7 +2601,8 @@ var getLinearScale = ({
|
|
|
2281
2601
|
const config = getDataFormatting(dataFormatting);
|
|
2282
2602
|
const colIndices = columnIndices ?? [columnIndex];
|
|
2283
2603
|
const scaleRange = range ?? getRangeForAxis({ axis, height, width });
|
|
2284
|
-
const axisColumns = (colIndices == null ? void 0 : colIndices.map((index) => columns[index])) ?? [];
|
|
2604
|
+
const axisColumns = (colIndices == null ? void 0 : colIndices.map((index) => columns == null ? void 0 : columns[index])) ?? [];
|
|
2605
|
+
console.log({ axisColumns });
|
|
2285
2606
|
const axisTitle = title ?? getLinearAxisTitle({
|
|
2286
2607
|
numberColumns: axisColumns,
|
|
2287
2608
|
aggregated
|
|
@@ -2291,7 +2612,7 @@ var getLinearScale = ({
|
|
|
2291
2612
|
scale.minValue = domainFinal[0];
|
|
2292
2613
|
scale.maxValue = domainFinal[1];
|
|
2293
2614
|
scale.columnIndex = columnIndex;
|
|
2294
|
-
scale.column = columns[columnIndex];
|
|
2615
|
+
scale.column = columns == null ? void 0 : columns[columnIndex];
|
|
2295
2616
|
scale.fields = axisColumns;
|
|
2296
2617
|
scale.dataFormatting = config;
|
|
2297
2618
|
scale.hasDropdown = hasDropdown ?? enableAxisDropdown;
|
|
@@ -2620,26 +2941,61 @@ var mergeBboxes = (boundingBoxes) => {
|
|
|
2620
2941
|
return void 0;
|
|
2621
2942
|
}
|
|
2622
2943
|
};
|
|
2944
|
+
|
|
2945
|
+
// src/errorMessages.ts
|
|
2946
|
+
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.";
|
|
2947
|
+
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.";
|
|
2948
|
+
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.";
|
|
2949
|
+
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.";
|
|
2950
|
+
var REQUEST_CANCELLED_ERROR = "Request cancelled";
|
|
2623
2951
|
export {
|
|
2624
2952
|
AGG_TYPES,
|
|
2625
2953
|
CHART_TYPES,
|
|
2954
|
+
COMPARE_TYPE,
|
|
2955
|
+
CONTINUOUS_TYPE,
|
|
2956
|
+
CUSTOM_TYPE,
|
|
2957
|
+
DATA_ALERT_CONDITION_TYPES,
|
|
2958
|
+
DATA_ALERT_ENABLED_STATUSES,
|
|
2959
|
+
DATA_ALERT_FREQUENCY_TYPE_OPTIONS,
|
|
2960
|
+
DATA_ALERT_OPERATORS,
|
|
2961
|
+
DATA_ALERT_STATUSES,
|
|
2626
2962
|
DATE_ONLY_CHART_TYPES,
|
|
2627
2963
|
DAYJS_PRECISION_FORMATS,
|
|
2628
2964
|
DEFAULT_AGG_TYPE,
|
|
2629
2965
|
DEFAULT_DATA_PAGE_SIZE,
|
|
2966
|
+
DEFAULT_EVALUATION_FREQUENCY,
|
|
2967
|
+
DEFAULT_SOURCE,
|
|
2630
2968
|
DOUBLE_AXIS_CHART_TYPES,
|
|
2631
2969
|
DOW_STYLES,
|
|
2970
|
+
DataExplorerTypes,
|
|
2632
2971
|
DateUTC,
|
|
2972
|
+
EVALUATION_FREQUENCY_OPTIONS,
|
|
2973
|
+
EXISTS_TYPE,
|
|
2974
|
+
GENERAL_ERROR,
|
|
2975
|
+
GENERAL_HTML_ERROR,
|
|
2976
|
+
GENERAL_QUERY_ERROR,
|
|
2977
|
+
GROUP_TERM_TYPE,
|
|
2633
2978
|
MAX_DATA_PAGE_SIZE,
|
|
2634
2979
|
MAX_LEGEND_LABELS,
|
|
2635
2980
|
MIN_HISTOGRAM_SAMPLE,
|
|
2981
|
+
MONTH_DAY_SELECT_OPTIONS,
|
|
2636
2982
|
MONTH_NAMES,
|
|
2983
|
+
NUMBER_TERM_TYPE,
|
|
2637
2984
|
NumberColumnTypeDisplayNames,
|
|
2638
2985
|
NumberColumnTypes,
|
|
2986
|
+
PERIODIC_TYPE,
|
|
2987
|
+
PROJECT_TYPE,
|
|
2639
2988
|
PrecisionTypes,
|
|
2989
|
+
QUERY_TERM_TYPE,
|
|
2990
|
+
REQUEST_CANCELLED_ERROR,
|
|
2991
|
+
RESET_PERIOD_OPTIONS,
|
|
2992
|
+
SCHEDULED_TYPE,
|
|
2993
|
+
SCHEDULE_FREQUENCY_OPTIONS,
|
|
2994
|
+
SCHEDULE_INTERVAL_OPTIONS,
|
|
2640
2995
|
SEASON_NAMES,
|
|
2641
2996
|
TABLE_TYPES,
|
|
2642
2997
|
TimestampFormats,
|
|
2998
|
+
UNAUTHENTICATED_ERROR,
|
|
2643
2999
|
WEEKDAY_NAMES_MON,
|
|
2644
3000
|
WEEKDAY_NAMES_SUN,
|
|
2645
3001
|
animateInputText,
|