autoql-fe-utils 1.11.18 → 1.11.19
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.mts +13 -4
- package/dist/index.d.ts +13 -4
- package/dist/index.global.js +120 -11
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +122 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +121 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1179,6 +1179,7 @@ __export(index_exports, {
|
|
|
1179
1179
|
supportsNetworkGraph: () => supportsNetworkGraph,
|
|
1180
1180
|
supportsPieChart: () => supportsPieChart,
|
|
1181
1181
|
supportsRegularPivotTable: () => supportsRegularPivotTable,
|
|
1182
|
+
supportsSankey: () => supportsSankey,
|
|
1182
1183
|
svgPathD: () => svgPathD,
|
|
1183
1184
|
svgToPng: () => svgToPng,
|
|
1184
1185
|
titlelizeString: () => titlelizeString,
|
|
@@ -1360,6 +1361,7 @@ var DisplayTypes = /* @__PURE__ */ ((DisplayTypes2) => {
|
|
|
1360
1361
|
DisplayTypes2["SCATTERPLOT"] = "scatterplot";
|
|
1361
1362
|
DisplayTypes2["COLUMN_LINE"] = "column_line";
|
|
1362
1363
|
DisplayTypes2["NETWORK_GRAPH"] = "network_graph";
|
|
1364
|
+
DisplayTypes2["SANKEY"] = "sankey";
|
|
1363
1365
|
return DisplayTypes2;
|
|
1364
1366
|
})(DisplayTypes || {});
|
|
1365
1367
|
var QueryErrorTypes = /* @__PURE__ */ ((QueryErrorTypes2) => {
|
|
@@ -1561,7 +1563,8 @@ var CHART_TYPES = [
|
|
|
1561
1563
|
"column_line" /* COLUMN_LINE */,
|
|
1562
1564
|
"histogram" /* HISTOGRAM */,
|
|
1563
1565
|
"scatterplot" /* SCATTERPLOT */,
|
|
1564
|
-
"network_graph" /* NETWORK_GRAPH
|
|
1566
|
+
"network_graph" /* NETWORK_GRAPH */,
|
|
1567
|
+
"sankey" /* SANKEY */
|
|
1565
1568
|
];
|
|
1566
1569
|
var CHARTS_WITHOUT_LEGENDS = [
|
|
1567
1570
|
"pie" /* PIE */,
|
|
@@ -1569,16 +1572,18 @@ var CHARTS_WITHOUT_LEGENDS = [
|
|
|
1569
1572
|
"bubble" /* BUBBLE */,
|
|
1570
1573
|
"scatterplot" /* SCATTERPLOT */,
|
|
1571
1574
|
"histogram" /* HISTOGRAM */,
|
|
1572
|
-
"network_graph" /* NETWORK_GRAPH
|
|
1575
|
+
"network_graph" /* NETWORK_GRAPH */,
|
|
1576
|
+
"sankey" /* SANKEY */
|
|
1573
1577
|
];
|
|
1574
1578
|
var CHARTS_WITHOUT_AGGREGATED_DATA = [
|
|
1575
1579
|
"histogram" /* HISTOGRAM */,
|
|
1576
1580
|
"scatterplot" /* SCATTERPLOT */,
|
|
1577
|
-
"network_graph" /* NETWORK_GRAPH
|
|
1581
|
+
"network_graph" /* NETWORK_GRAPH */,
|
|
1582
|
+
"sankey" /* SANKEY */
|
|
1578
1583
|
];
|
|
1579
1584
|
var DATE_ONLY_CHART_TYPES = ["line" /* LINE */, "stacked_line" /* STACKED_LINE */];
|
|
1580
1585
|
var DOUBLE_AXIS_CHART_TYPES = ["column_line" /* COLUMN_LINE */];
|
|
1581
|
-
var CHARTS_WITHOUT_AXES = ["pie" /* PIE */, "network_graph" /* NETWORK_GRAPH */];
|
|
1586
|
+
var CHARTS_WITHOUT_AXES = ["pie" /* PIE */, "network_graph" /* NETWORK_GRAPH */, "sankey" /* SANKEY */];
|
|
1582
1587
|
var DEFAULT_CHART_CONFIG = {
|
|
1583
1588
|
isScaled: false
|
|
1584
1589
|
};
|
|
@@ -2684,18 +2689,33 @@ var getUniqueYearsForColumn = (data, columns, index) => {
|
|
|
2684
2689
|
return uniqueYears;
|
|
2685
2690
|
};
|
|
2686
2691
|
var supportsNetworkGraph = (data, columns) => {
|
|
2687
|
-
|
|
2688
|
-
|
|
2692
|
+
var _a2, _b2;
|
|
2693
|
+
const logUnsupportedReason = (message) => {
|
|
2694
|
+
console.warn(`[supportsNetworkGraph] ${message}`);
|
|
2695
|
+
};
|
|
2696
|
+
if (!data || data.length < 2) {
|
|
2697
|
+
logUnsupportedReason(`Insufficient rows (${(_a2 = data == null ? void 0 : data.length) != null ? _a2 : 0}). Need at least 2 rows.`);
|
|
2698
|
+
return false;
|
|
2699
|
+
}
|
|
2700
|
+
if (!columns || columns.length < 2) {
|
|
2701
|
+
logUnsupportedReason(`Insufficient columns (${(_b2 = columns == null ? void 0 : columns.length) != null ? _b2 : 0}). Need at least 2 visible columns.`);
|
|
2702
|
+
return false;
|
|
2703
|
+
}
|
|
2689
2704
|
const networkColumns = findNetworkColumns(columns);
|
|
2690
|
-
if (!networkColumns || networkColumns.sourceColumnIndex === -1 || networkColumns.targetColumnIndex === -1)
|
|
2705
|
+
if (!networkColumns || networkColumns.sourceColumnIndex === -1 || networkColumns.targetColumnIndex === -1) {
|
|
2706
|
+
logUnsupportedReason("Unable to determine source/target columns from provided metadata.");
|
|
2691
2707
|
return false;
|
|
2708
|
+
}
|
|
2692
2709
|
const { sourceColumnIndex, targetColumnIndex } = networkColumns;
|
|
2693
2710
|
const sourceValues = data.map((row) => row[sourceColumnIndex]).filter(Boolean);
|
|
2694
2711
|
const targetValues = data.map((row) => row[targetColumnIndex]).filter(Boolean);
|
|
2695
2712
|
const uniqueSources = new Set(sourceValues);
|
|
2696
2713
|
const uniqueTargets = new Set(targetValues);
|
|
2697
2714
|
const totalUniqueEntities = (/* @__PURE__ */ new Set([...uniqueSources, ...uniqueTargets])).size;
|
|
2698
|
-
if (totalUniqueEntities <
|
|
2715
|
+
if (totalUniqueEntities < 2) {
|
|
2716
|
+
logUnsupportedReason(`Found only ${totalUniqueEntities} unique node(s). Need at least 2.`);
|
|
2717
|
+
return false;
|
|
2718
|
+
}
|
|
2699
2719
|
const sourceCounts = {};
|
|
2700
2720
|
const targetCounts = {};
|
|
2701
2721
|
const relationshipPairs = /* @__PURE__ */ new Set();
|
|
@@ -2709,9 +2729,18 @@ var supportsNetworkGraph = (data, columns) => {
|
|
|
2709
2729
|
}
|
|
2710
2730
|
});
|
|
2711
2731
|
const actualConnections = relationshipPairs.size;
|
|
2712
|
-
if (actualConnections === 0)
|
|
2732
|
+
if (actualConnections === 0) {
|
|
2733
|
+
logUnsupportedReason("No valid source\u2192target connections detected in dataset.");
|
|
2734
|
+
return false;
|
|
2735
|
+
}
|
|
2713
2736
|
const MAX_UNIQUE_ENTITIES = 5e4;
|
|
2714
|
-
|
|
2737
|
+
if (totalUniqueEntities > MAX_UNIQUE_ENTITIES) {
|
|
2738
|
+
logUnsupportedReason(
|
|
2739
|
+
`Too many unique nodes (${totalUniqueEntities}). Limit is ${MAX_UNIQUE_ENTITIES} for performance reasons.`
|
|
2740
|
+
);
|
|
2741
|
+
return false;
|
|
2742
|
+
}
|
|
2743
|
+
return true;
|
|
2715
2744
|
};
|
|
2716
2745
|
var findNetworkColumns = (columns) => {
|
|
2717
2746
|
if (!columns || columns.length < 2) {
|
|
@@ -2788,6 +2817,78 @@ var findNetworkColumns = (columns) => {
|
|
|
2788
2817
|
}
|
|
2789
2818
|
return { sourceColumnIndex, targetColumnIndex, weightColumnIndex };
|
|
2790
2819
|
};
|
|
2820
|
+
var supportsSankey = (rows, columns) => {
|
|
2821
|
+
var _a2, _b2;
|
|
2822
|
+
try {
|
|
2823
|
+
const logUnsupportedReason = (message) => {
|
|
2824
|
+
console.warn(`[supportsSankey] ${message}`);
|
|
2825
|
+
};
|
|
2826
|
+
if (!(rows == null ? void 0 : rows.length) || !(columns == null ? void 0 : columns.length)) {
|
|
2827
|
+
logUnsupportedReason(
|
|
2828
|
+
`Missing required data. rows=${(_a2 = rows == null ? void 0 : rows.length) != null ? _a2 : 0}, columns=${(_b2 = columns == null ? void 0 : columns.length) != null ? _b2 : 0}. Need at least 1 row and 3 columns.`
|
|
2829
|
+
);
|
|
2830
|
+
return false;
|
|
2831
|
+
}
|
|
2832
|
+
const { sourceColumnIndex, targetColumnIndex, weightColumnIndex } = findNetworkColumns(columns);
|
|
2833
|
+
if (sourceColumnIndex === -1 || targetColumnIndex === -1 || weightColumnIndex === -1) {
|
|
2834
|
+
logUnsupportedReason("Unable to determine source, target, and weight columns required for Sankey.");
|
|
2835
|
+
return false;
|
|
2836
|
+
}
|
|
2837
|
+
const uniqueNodes = /* @__PURE__ */ new Set();
|
|
2838
|
+
const uniqueLinks = /* @__PURE__ */ new Set();
|
|
2839
|
+
let skippedRows = 0;
|
|
2840
|
+
const normalizeNodeValue = (value) => {
|
|
2841
|
+
if (value === void 0 || value === null) {
|
|
2842
|
+
return void 0;
|
|
2843
|
+
}
|
|
2844
|
+
const sanitized = `${value}`.trim();
|
|
2845
|
+
return sanitized.length ? sanitized : void 0;
|
|
2846
|
+
};
|
|
2847
|
+
const toFinitePositiveNumber = (value) => {
|
|
2848
|
+
if (typeof value === "number") {
|
|
2849
|
+
return Number.isFinite(value) ? value : NaN;
|
|
2850
|
+
}
|
|
2851
|
+
if (typeof value === "string") {
|
|
2852
|
+
const cleaned = value.replace(/[^0-9.-]/g, "");
|
|
2853
|
+
if (!cleaned.length) {
|
|
2854
|
+
return NaN;
|
|
2855
|
+
}
|
|
2856
|
+
const parsed = Number(cleaned);
|
|
2857
|
+
return Number.isFinite(parsed) ? parsed : NaN;
|
|
2858
|
+
}
|
|
2859
|
+
return NaN;
|
|
2860
|
+
};
|
|
2861
|
+
for (const row of rows) {
|
|
2862
|
+
if (!row) {
|
|
2863
|
+
continue;
|
|
2864
|
+
}
|
|
2865
|
+
const source = normalizeNodeValue(row[sourceColumnIndex]);
|
|
2866
|
+
const target = normalizeNodeValue(row[targetColumnIndex]);
|
|
2867
|
+
if (!source || !target || source === target) {
|
|
2868
|
+
skippedRows += 1;
|
|
2869
|
+
continue;
|
|
2870
|
+
}
|
|
2871
|
+
const weight = toFinitePositiveNumber(row[weightColumnIndex]);
|
|
2872
|
+
if (!Number.isFinite(weight) || weight <= 0) {
|
|
2873
|
+
skippedRows += 1;
|
|
2874
|
+
continue;
|
|
2875
|
+
}
|
|
2876
|
+
uniqueNodes.add(source);
|
|
2877
|
+
uniqueNodes.add(target);
|
|
2878
|
+
uniqueLinks.add(`${source}__${target}`);
|
|
2879
|
+
}
|
|
2880
|
+
if (!uniqueLinks.size || uniqueNodes.size < 2) {
|
|
2881
|
+
logUnsupportedReason(
|
|
2882
|
+
`Insufficient valid flows. uniqueNodes=${uniqueNodes.size}, uniqueLinks=${uniqueLinks.size}, skippedRows=${skippedRows}.`
|
|
2883
|
+
);
|
|
2884
|
+
return false;
|
|
2885
|
+
}
|
|
2886
|
+
return true;
|
|
2887
|
+
} catch (error) {
|
|
2888
|
+
console.error("[supportsSankey] Unexpected error determining support", error);
|
|
2889
|
+
return false;
|
|
2890
|
+
}
|
|
2891
|
+
};
|
|
2791
2892
|
var getSupportedDisplayTypes = ({
|
|
2792
2893
|
response,
|
|
2793
2894
|
columns,
|
|
@@ -2876,6 +2977,9 @@ var getSupportedDisplayTypes = ({
|
|
|
2876
2977
|
if (supportsNetworkGraph(rows, visibleColumns)) {
|
|
2877
2978
|
supportedDisplayTypes.push("network_graph");
|
|
2878
2979
|
}
|
|
2980
|
+
if (supportsSankey(rows, visibleColumns)) {
|
|
2981
|
+
supportedDisplayTypes.push("sankey");
|
|
2982
|
+
}
|
|
2879
2983
|
return supportedDisplayTypes;
|
|
2880
2984
|
} catch (error) {
|
|
2881
2985
|
console.error(error);
|
|
@@ -10857,12 +10961,18 @@ var exportCSV = ({
|
|
|
10857
10961
|
domain,
|
|
10858
10962
|
apiKey,
|
|
10859
10963
|
token,
|
|
10964
|
+
filters,
|
|
10965
|
+
tableFilters,
|
|
10860
10966
|
csvProgressCallback
|
|
10861
10967
|
} = {}) => {
|
|
10862
10968
|
if (!token || !domain || !apiKey) {
|
|
10863
10969
|
return Promise.reject(new Error("Unauthenticated" /* UNAUTHENTICATED */));
|
|
10864
10970
|
}
|
|
10865
10971
|
const url = `${domain}/autoql/api/v1/query/${queryId}/export?key=${apiKey}`;
|
|
10972
|
+
const data = {
|
|
10973
|
+
session_filter_locks: filters,
|
|
10974
|
+
filters: tableFilters
|
|
10975
|
+
};
|
|
10866
10976
|
const config = {
|
|
10867
10977
|
headers: {
|
|
10868
10978
|
Authorization: `Bearer ${token}`
|
|
@@ -10875,7 +10985,7 @@ var exportCSV = ({
|
|
|
10875
10985
|
}
|
|
10876
10986
|
}
|
|
10877
10987
|
};
|
|
10878
|
-
return import_axios.default.post(url,
|
|
10988
|
+
return import_axios.default.post(url, data, config).then((response) => Promise.resolve(response)).catch((error) => Promise.reject(error == null ? void 0 : error.response));
|
|
10879
10989
|
};
|
|
10880
10990
|
var runDrilldown = ({
|
|
10881
10991
|
queryID,
|
|
@@ -13706,6 +13816,7 @@ function color() {
|
|
|
13706
13816
|
supportsNetworkGraph,
|
|
13707
13817
|
supportsPieChart,
|
|
13708
13818
|
supportsRegularPivotTable,
|
|
13819
|
+
supportsSankey,
|
|
13709
13820
|
svgPathD,
|
|
13710
13821
|
svgToPng,
|
|
13711
13822
|
titlelizeString,
|