@quillsql/react 2.16.50 → 2.16.52
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.cjs +114 -437
- package/dist/index.js +255 -573
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -20060,27 +20060,6 @@ function parseData(rows, queryType) {
|
|
|
20060
20060
|
return rows;
|
|
20061
20061
|
}
|
|
20062
20062
|
}
|
|
20063
|
-
function isQuillFetchDebugEnabled() {
|
|
20064
|
-
if (typeof globalThis !== "undefined") {
|
|
20065
|
-
for (const debugFlag of QUILL_FETCH_DEBUG_FLAGS) {
|
|
20066
|
-
if (globalThis?.[debugFlag] === true) {
|
|
20067
|
-
return true;
|
|
20068
|
-
}
|
|
20069
|
-
}
|
|
20070
|
-
}
|
|
20071
|
-
if (typeof process !== "undefined" && typeof process.env !== "undefined") {
|
|
20072
|
-
const envCandidates = [
|
|
20073
|
-
process?.env?.QUILL_DEBUG_USEFORM_HYDRATION,
|
|
20074
|
-
process?.env?.QUILL_DEBUG_USEFORM_FILTERS,
|
|
20075
|
-
process?.env?.QUILL_DEBUG_DATA_FETCHER
|
|
20076
|
-
];
|
|
20077
|
-
return envCandidates.some((candidate) => {
|
|
20078
|
-
const normalized = String(candidate ?? "").trim().toLowerCase();
|
|
20079
|
-
return normalized === "1" || normalized === "true";
|
|
20080
|
-
});
|
|
20081
|
-
}
|
|
20082
|
-
return false;
|
|
20083
|
-
}
|
|
20084
20063
|
async function testSqlViewState(client, referencedTables, getToken) {
|
|
20085
20064
|
let errorMessage = null;
|
|
20086
20065
|
await Promise.all(
|
|
@@ -20566,7 +20545,7 @@ async function fetchRelevantInfoFromState(reportBuilderState, tables, columns, a
|
|
|
20566
20545
|
return { error: error.message };
|
|
20567
20546
|
}
|
|
20568
20547
|
}
|
|
20569
|
-
var
|
|
20548
|
+
var quillFetch, parseFetchResponse;
|
|
20570
20549
|
var init_dataFetcher = __esm({
|
|
20571
20550
|
"src/utils/dataFetcher.tsx"() {
|
|
20572
20551
|
"use strict";
|
|
@@ -20575,16 +20554,6 @@ var init_dataFetcher = __esm({
|
|
|
20575
20554
|
init_tableProcessing();
|
|
20576
20555
|
init_dates();
|
|
20577
20556
|
init_changelogNotify();
|
|
20578
|
-
QUILL_FETCH_DEBUG_FLAGS = [
|
|
20579
|
-
"__QUILL_DEBUG_USEFORM_HYDRATION__",
|
|
20580
|
-
"__QUILL_DEBUG_USEFORM_FILTERS__",
|
|
20581
|
-
"__QUILL_DEBUG_DATA_FETCHER__"
|
|
20582
|
-
];
|
|
20583
|
-
quillFetchDebugSeq = 0;
|
|
20584
|
-
logQuillFetchDebug = (label, payload) => {
|
|
20585
|
-
if (!isQuillFetchDebugEnabled()) return;
|
|
20586
|
-
console.log(`[quillFetch-debug] ${label}`, payload);
|
|
20587
|
-
};
|
|
20588
20557
|
quillFetch = async ({
|
|
20589
20558
|
client,
|
|
20590
20559
|
task,
|
|
@@ -20595,24 +20564,7 @@ var init_dataFetcher = __esm({
|
|
|
20595
20564
|
urlParameters,
|
|
20596
20565
|
getToken
|
|
20597
20566
|
}) => {
|
|
20598
|
-
const debugSeq = ++quillFetchDebugSeq;
|
|
20599
|
-
const debugStart = Date.now();
|
|
20600
|
-
logQuillFetchDebug("request", {
|
|
20601
|
-
seq: debugSeq,
|
|
20602
|
-
task,
|
|
20603
|
-
reportId: metadata?.reportId,
|
|
20604
|
-
dashboardItemId: metadata?.dashboardItemId,
|
|
20605
|
-
hasPivot: Boolean(metadata?.pivot),
|
|
20606
|
-
hasReportBuilderState: Boolean(metadata?.reportBuilderState),
|
|
20607
|
-
filtersLength: Array.isArray(metadata?.filters) ? metadata.filters.length : void 0
|
|
20608
|
-
});
|
|
20609
20567
|
const token = await getToken();
|
|
20610
|
-
logQuillFetchDebug("token-acquired", {
|
|
20611
|
-
seq: debugSeq,
|
|
20612
|
-
task,
|
|
20613
|
-
ms: Date.now() - debugStart,
|
|
20614
|
-
hasToken: Boolean(token)
|
|
20615
|
-
});
|
|
20616
20568
|
const queryString = urlParameters ?? `task=${task}`;
|
|
20617
20569
|
const endpoint = client.queryEndpoint ? `${client.queryEndpoint}?${queryString}` : `${QUILL_SERVER}${QUILL_QUERY_ENDPOINT}?${queryString}`;
|
|
20618
20570
|
try {
|
|
@@ -20644,17 +20596,6 @@ var init_dataFetcher = __esm({
|
|
|
20644
20596
|
if (task !== "fetch-changelog-list" && Array.isArray(normalizedData?.changelogs)) {
|
|
20645
20597
|
notifyChangelogs(normalizedData.changelogs);
|
|
20646
20598
|
}
|
|
20647
|
-
logQuillFetchDebug("response", {
|
|
20648
|
-
seq: debugSeq,
|
|
20649
|
-
task,
|
|
20650
|
-
ms: Date.now() - debugStart,
|
|
20651
|
-
status: result.status,
|
|
20652
|
-
error: result.error,
|
|
20653
|
-
dataError: normalizedData?.error,
|
|
20654
|
-
queryResultRowCounts: Array.isArray(result.queries?.queryResults) ? result.queries.queryResults.map(
|
|
20655
|
-
(qr) => Array.isArray(qr?.rows) ? qr.rows.length : null
|
|
20656
|
-
) : void 0
|
|
20657
|
-
});
|
|
20658
20599
|
return {
|
|
20659
20600
|
data: normalizedData,
|
|
20660
20601
|
queries: result.queries,
|
|
@@ -20663,19 +20604,8 @@ var init_dataFetcher = __esm({
|
|
|
20663
20604
|
};
|
|
20664
20605
|
} catch (e) {
|
|
20665
20606
|
if (e instanceof Error && e.name === "AbortError") {
|
|
20666
|
-
logQuillFetchDebug("aborted", {
|
|
20667
|
-
seq: debugSeq,
|
|
20668
|
-
task,
|
|
20669
|
-
ms: Date.now() - debugStart
|
|
20670
|
-
});
|
|
20671
20607
|
throw e;
|
|
20672
20608
|
}
|
|
20673
|
-
logQuillFetchDebug("threw", {
|
|
20674
|
-
seq: debugSeq,
|
|
20675
|
-
task,
|
|
20676
|
-
ms: Date.now() - debugStart,
|
|
20677
|
-
message: e instanceof Error ? e.message : String(e)
|
|
20678
|
-
});
|
|
20679
20609
|
if (task !== "set-section-order") {
|
|
20680
20610
|
console.error("Failed to fetch:", e);
|
|
20681
20611
|
}
|
|
@@ -21106,7 +21036,7 @@ import {
|
|
|
21106
21036
|
useEffect as useEffect19,
|
|
21107
21037
|
useState as useState26,
|
|
21108
21038
|
useMemo as useMemo19,
|
|
21109
|
-
useRef as
|
|
21039
|
+
useRef as useRef15
|
|
21110
21040
|
} from "react";
|
|
21111
21041
|
|
|
21112
21042
|
// src/Chart.tsx
|
|
@@ -21115,7 +21045,7 @@ import {
|
|
|
21115
21045
|
useEffect as useEffect16,
|
|
21116
21046
|
useContext as useContext17,
|
|
21117
21047
|
useMemo as useMemo16,
|
|
21118
|
-
useRef as
|
|
21048
|
+
useRef as useRef13
|
|
21119
21049
|
} from "react";
|
|
21120
21050
|
|
|
21121
21051
|
// src/utils/csv.ts
|
|
@@ -29272,62 +29202,6 @@ function stableColorIndex(field) {
|
|
|
29272
29202
|
}
|
|
29273
29203
|
return hash;
|
|
29274
29204
|
}
|
|
29275
|
-
function assignStableSeriesColors(fields, colors, knownFields = fields) {
|
|
29276
|
-
const normalize2 = (values) => [
|
|
29277
|
-
...new Set(
|
|
29278
|
-
values.filter((field) => typeof field === "string").map((field) => field.replace("comparison_", ""))
|
|
29279
|
-
)
|
|
29280
|
-
];
|
|
29281
|
-
const uniqueFields = normalize2(fields);
|
|
29282
|
-
const universe = normalize2([...knownFields, ...fields]);
|
|
29283
|
-
const result = /* @__PURE__ */ new Map();
|
|
29284
|
-
if (universe.length === 0) {
|
|
29285
|
-
return result;
|
|
29286
|
-
}
|
|
29287
|
-
if (!colors.length) {
|
|
29288
|
-
for (const field of uniqueFields) {
|
|
29289
|
-
result.set(field, "gray");
|
|
29290
|
-
}
|
|
29291
|
-
return result;
|
|
29292
|
-
}
|
|
29293
|
-
const palette = colors.length >= universe.length ? colors : generateArrayFromColor(colors, universe.length);
|
|
29294
|
-
const ordered = [...universe].sort((a, b) => {
|
|
29295
|
-
const diff = stableColorIndex(a) - stableColorIndex(b);
|
|
29296
|
-
return diff !== 0 ? diff : a.localeCompare(b);
|
|
29297
|
-
});
|
|
29298
|
-
const usedIndices = /* @__PURE__ */ new Set();
|
|
29299
|
-
const deferred = [];
|
|
29300
|
-
const assigned = /* @__PURE__ */ new Map();
|
|
29301
|
-
for (const field of ordered) {
|
|
29302
|
-
const preferred = stableColorIndex(field) % palette.length;
|
|
29303
|
-
if (!usedIndices.has(preferred)) {
|
|
29304
|
-
usedIndices.add(preferred);
|
|
29305
|
-
assigned.set(field, palette[preferred]);
|
|
29306
|
-
} else {
|
|
29307
|
-
deferred.push(field);
|
|
29308
|
-
}
|
|
29309
|
-
}
|
|
29310
|
-
for (const field of deferred) {
|
|
29311
|
-
const preferred = stableColorIndex(field) % palette.length;
|
|
29312
|
-
let found = false;
|
|
29313
|
-
for (let offset = 1; offset < palette.length; offset++) {
|
|
29314
|
-
const idx = (preferred + offset) % palette.length;
|
|
29315
|
-
if (!usedIndices.has(idx)) {
|
|
29316
|
-
usedIndices.add(idx);
|
|
29317
|
-
assigned.set(field, palette[idx]);
|
|
29318
|
-
found = true;
|
|
29319
|
-
break;
|
|
29320
|
-
}
|
|
29321
|
-
}
|
|
29322
|
-
if (!found) {
|
|
29323
|
-
assigned.set(field, palette[preferred]);
|
|
29324
|
-
}
|
|
29325
|
-
}
|
|
29326
|
-
for (const field of uniqueFields) {
|
|
29327
|
-
result.set(field, assigned.get(field));
|
|
29328
|
-
}
|
|
29329
|
-
return result;
|
|
29330
|
-
}
|
|
29331
29205
|
function selectColor(element, colors, index) {
|
|
29332
29206
|
if (!element?.field) return "gray";
|
|
29333
29207
|
const isComparison = element.field.includes("comparison_");
|
|
@@ -34287,7 +34161,7 @@ var CustomBar_default = CustomBar;
|
|
|
34287
34161
|
// src/components/Chart/BarChart.tsx
|
|
34288
34162
|
init_columnProcessing();
|
|
34289
34163
|
init_textProcessing();
|
|
34290
|
-
import { useMemo as useMemo8
|
|
34164
|
+
import { useMemo as useMemo8 } from "react";
|
|
34291
34165
|
import { Fragment as Fragment3, jsx as jsx38, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
34292
34166
|
var CATEGORY_AXIS_WIDTH = 120;
|
|
34293
34167
|
var VALUE_AXIS_WIDTH = 44;
|
|
@@ -34387,21 +34261,6 @@ function BarChart({
|
|
|
34387
34261
|
() => stackedMode ? getStackedDomain(data, yAxisFields, comparison) : getDomain(data, yAxisFields, referenceLines),
|
|
34388
34262
|
[stackedMode, data, yAxisFields, referenceLines, comparison]
|
|
34389
34263
|
);
|
|
34390
|
-
const knownSeriesFieldsRef = useRef6([]);
|
|
34391
|
-
const knownColorsKeyRef = useRef6("");
|
|
34392
|
-
const seriesColorByField = useMemo8(() => {
|
|
34393
|
-
const visibleFields = yAxisFields.filter((field) => comparison || !field.field.startsWith("comparison_")).map((field) => field.field);
|
|
34394
|
-
const colorsKey = colors.join("\0");
|
|
34395
|
-
if (knownColorsKeyRef.current !== colorsKey) {
|
|
34396
|
-
knownSeriesFieldsRef.current = [];
|
|
34397
|
-
knownColorsKeyRef.current = colorsKey;
|
|
34398
|
-
}
|
|
34399
|
-
const knownFields = [
|
|
34400
|
-
.../* @__PURE__ */ new Set([...knownSeriesFieldsRef.current, ...visibleFields])
|
|
34401
|
-
];
|
|
34402
|
-
knownSeriesFieldsRef.current = knownFields;
|
|
34403
|
-
return assignStableSeriesColors(visibleFields, colors, knownFields);
|
|
34404
|
-
}, [yAxisFields, colors, comparison]);
|
|
34405
34264
|
const allowDecimals = useMemo8(
|
|
34406
34265
|
() => getAllowDecimals(data, yAxisFields, referenceLines),
|
|
34407
34266
|
[data, yAxisFields, referenceLines]
|
|
@@ -34664,15 +34523,7 @@ function BarChart({
|
|
|
34664
34523
|
dataKey: elem.field,
|
|
34665
34524
|
stackId: stackedMode ? "same_id" : isStacked ? elem.field.replace("comparison_", "") : void 0,
|
|
34666
34525
|
type: "linear",
|
|
34667
|
-
fill: getCustomColor(elem.field) ?? selectColor(
|
|
34668
|
-
elem,
|
|
34669
|
-
[
|
|
34670
|
-
seriesColorByField.get(
|
|
34671
|
-
elem.field.replace("comparison_", "")
|
|
34672
|
-
) ?? colors[0] ?? "gray"
|
|
34673
|
-
],
|
|
34674
|
-
0
|
|
34675
|
-
),
|
|
34526
|
+
fill: getCustomColor(elem.field) ?? selectColor(elem, colors, stableColorIndex(elem.field)),
|
|
34676
34527
|
isAnimationActive,
|
|
34677
34528
|
shape: customBarShape,
|
|
34678
34529
|
activeBar: customActiveBarShape ?? {
|
|
@@ -34866,7 +34717,7 @@ import { useMemo as useMemo12 } from "react";
|
|
|
34866
34717
|
import {
|
|
34867
34718
|
useContext as useContext9,
|
|
34868
34719
|
useEffect as useEffect10,
|
|
34869
|
-
useRef as
|
|
34720
|
+
useRef as useRef7,
|
|
34870
34721
|
useState as useState12
|
|
34871
34722
|
} from "react";
|
|
34872
34723
|
import {
|
|
@@ -34889,7 +34740,7 @@ import {
|
|
|
34889
34740
|
import {
|
|
34890
34741
|
useContext as useContext8,
|
|
34891
34742
|
useMemo as useMemo9,
|
|
34892
|
-
useRef as
|
|
34743
|
+
useRef as useRef6,
|
|
34893
34744
|
useState as useState11,
|
|
34894
34745
|
useEffect as useEffect9
|
|
34895
34746
|
} from "react";
|
|
@@ -34908,8 +34759,8 @@ function QuillSelectComponent({
|
|
|
34908
34759
|
}) {
|
|
34909
34760
|
const [theme] = useContext8(ThemeContext);
|
|
34910
34761
|
const [showModal, setShowModal] = useState11(false);
|
|
34911
|
-
const modalRef =
|
|
34912
|
-
const buttonRef =
|
|
34762
|
+
const modalRef = useRef6(null);
|
|
34763
|
+
const buttonRef = useRef6(null);
|
|
34913
34764
|
useOnClickOutside_default(
|
|
34914
34765
|
modalRef,
|
|
34915
34766
|
(event) => {
|
|
@@ -34934,7 +34785,7 @@ function QuillSelectComponent({
|
|
|
34934
34785
|
}, [sortedItems]);
|
|
34935
34786
|
const [popoverPosition, setPopoverPosition] = useState11(void 0);
|
|
34936
34787
|
const [z, setZ] = useState11(10);
|
|
34937
|
-
const scrollableParentRef =
|
|
34788
|
+
const scrollableParentRef = useRef6(document.body);
|
|
34938
34789
|
const updatePosition = () => {
|
|
34939
34790
|
if (buttonRef.current) {
|
|
34940
34791
|
requestAnimationFrame(() => {
|
|
@@ -35259,8 +35110,8 @@ function QuillDateRangePicker({
|
|
|
35259
35110
|
);
|
|
35260
35111
|
const [localPreset, setLocalPreset] = useState12(preset);
|
|
35261
35112
|
const [showModal, setShowModal] = useState12(false);
|
|
35262
|
-
const buttonRef =
|
|
35263
|
-
const modalRef =
|
|
35113
|
+
const buttonRef = useRef7(null);
|
|
35114
|
+
const modalRef = useRef7(null);
|
|
35264
35115
|
useEffect10(() => {
|
|
35265
35116
|
setLocalEndDate(dateRange.endDate);
|
|
35266
35117
|
setLocalStartDate(dateRange.startDate);
|
|
@@ -35776,7 +35627,7 @@ import React7, {
|
|
|
35776
35627
|
useContext as useContext10,
|
|
35777
35628
|
useEffect as useEffect11,
|
|
35778
35629
|
useMemo as useMemo10,
|
|
35779
|
-
useRef as
|
|
35630
|
+
useRef as useRef8,
|
|
35780
35631
|
useState as useState13
|
|
35781
35632
|
} from "react";
|
|
35782
35633
|
import { createPortal as createPortal3 } from "react-dom";
|
|
@@ -35796,15 +35647,15 @@ function QuillMultiSelectComponentWithCombo({
|
|
|
35796
35647
|
const [theme] = useContext10(ThemeContext);
|
|
35797
35648
|
const [selectedOptions, setSelectedOptions] = useState13([]);
|
|
35798
35649
|
const [showModal, setShowModal] = useState13(false);
|
|
35799
|
-
const modalRef =
|
|
35800
|
-
const buttonRef =
|
|
35801
|
-
const debounceTimeoutId =
|
|
35650
|
+
const modalRef = useRef8(null);
|
|
35651
|
+
const buttonRef = useRef8(null);
|
|
35652
|
+
const debounceTimeoutId = useRef8(null);
|
|
35802
35653
|
const [searchQuery, setSearchQuery] = React7.useState("");
|
|
35803
35654
|
const [exceedsLimit, setExceedsLimit] = useState13(false);
|
|
35804
35655
|
const [popoverPosition, setPopoverPosition] = useState13(void 0);
|
|
35805
35656
|
const [z, setZ] = useState13(10);
|
|
35806
|
-
const scrollableParentRef =
|
|
35807
|
-
const selectAllRef =
|
|
35657
|
+
const scrollableParentRef = useRef8(document.body);
|
|
35658
|
+
const selectAllRef = useRef8(null);
|
|
35808
35659
|
let CheckboxState;
|
|
35809
35660
|
((CheckboxState2) => {
|
|
35810
35661
|
CheckboxState2[CheckboxState2["SELECTED"] = 0] = "SELECTED";
|
|
@@ -36441,7 +36292,7 @@ var ListboxTextInput = ({
|
|
|
36441
36292
|
import React8, {
|
|
36442
36293
|
useContext as useContext11,
|
|
36443
36294
|
useMemo as useMemo11,
|
|
36444
|
-
useRef as
|
|
36295
|
+
useRef as useRef9,
|
|
36445
36296
|
useState as useState14
|
|
36446
36297
|
} from "react";
|
|
36447
36298
|
import { jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
@@ -36458,8 +36309,8 @@ function QuillSelectComponentWithCombo({
|
|
|
36458
36309
|
}) {
|
|
36459
36310
|
const [theme] = useContext11(ThemeContext);
|
|
36460
36311
|
const [showModal, setShowModal] = useState14(false);
|
|
36461
|
-
const modalRef =
|
|
36462
|
-
const buttonRef =
|
|
36312
|
+
const modalRef = useRef9(null);
|
|
36313
|
+
const buttonRef = useRef9(null);
|
|
36463
36314
|
const [searchQuery, setSearchQuery] = React8.useState("");
|
|
36464
36315
|
const filteredItems = React8.useMemo(() => {
|
|
36465
36316
|
if (searchQuery === "") {
|
|
@@ -37416,7 +37267,7 @@ var MetricDisplay = ({
|
|
|
37416
37267
|
};
|
|
37417
37268
|
|
|
37418
37269
|
// src/components/Dashboard/DataLoader.tsx
|
|
37419
|
-
import { useContext as useContext13, useEffect as useEffect12, useMemo as useMemo13, useRef as
|
|
37270
|
+
import { useContext as useContext13, useEffect as useEffect12, useMemo as useMemo13, useRef as useRef10, useState as useState15 } from "react";
|
|
37420
37271
|
init_paginationProcessing();
|
|
37421
37272
|
init_tableProcessing();
|
|
37422
37273
|
import equal2 from "fast-deep-equal";
|
|
@@ -37556,17 +37407,17 @@ function DataLoader({
|
|
|
37556
37407
|
reportFilters,
|
|
37557
37408
|
dashboardFilters
|
|
37558
37409
|
]);
|
|
37559
|
-
const previousFilters =
|
|
37560
|
-
const previousUserFilters =
|
|
37561
|
-
const previousTenants =
|
|
37562
|
-
const previousCustomFields =
|
|
37410
|
+
const previousFilters = useRef10(filters);
|
|
37411
|
+
const previousUserFilters = useRef10(userFilters);
|
|
37412
|
+
const previousTenants = useRef10(tenants);
|
|
37413
|
+
const previousCustomFields = useRef10(schemaData.customFields);
|
|
37563
37414
|
const [rowCountIsLoading, setRowCountIsLoading] = useState15(false);
|
|
37564
|
-
const rowsRequestId =
|
|
37565
|
-
const rowsAbortController =
|
|
37566
|
-
const rowCountRequestId =
|
|
37567
|
-
const rowCountAbortController =
|
|
37568
|
-
const updateTableRowsRequestId =
|
|
37569
|
-
const updateTableRowsAbortController =
|
|
37415
|
+
const rowsRequestId = useRef10(0);
|
|
37416
|
+
const rowsAbortController = useRef10(null);
|
|
37417
|
+
const rowCountRequestId = useRef10(0);
|
|
37418
|
+
const rowCountAbortController = useRef10(null);
|
|
37419
|
+
const updateTableRowsRequestId = useRef10(0);
|
|
37420
|
+
const updateTableRowsAbortController = useRef10(null);
|
|
37570
37421
|
const fetchRowCount = async (processing) => {
|
|
37571
37422
|
if (!client || !filters) {
|
|
37572
37423
|
if (!rowCountAbortController.current) return;
|
|
@@ -37966,13 +37817,13 @@ var ChartDataLoader = ({
|
|
|
37966
37817
|
const [error, setError] = useState15(void 0);
|
|
37967
37818
|
const [client] = useContext13(ClientContext);
|
|
37968
37819
|
const [schemaData] = useContext13(SchemaDataContext);
|
|
37969
|
-
const previousFilters =
|
|
37970
|
-
const previousUserFilters =
|
|
37971
|
-
const previousDateBucket =
|
|
37972
|
-
const previousTenants =
|
|
37973
|
-
const previousCustomFields =
|
|
37974
|
-
const fetchReportAbortController =
|
|
37975
|
-
const rowsRequestId =
|
|
37820
|
+
const previousFilters = useRef10(filters);
|
|
37821
|
+
const previousUserFilters = useRef10(userFilters);
|
|
37822
|
+
const previousDateBucket = useRef10(dateBucket);
|
|
37823
|
+
const previousTenants = useRef10(tenants);
|
|
37824
|
+
const previousCustomFields = useRef10(schemaData.customFields);
|
|
37825
|
+
const fetchReportAbortController = useRef10(null);
|
|
37826
|
+
const rowsRequestId = useRef10(0);
|
|
37976
37827
|
const chartReport = useMemo13(() => {
|
|
37977
37828
|
const report = dashboardName ? dashboard[item.id] : reports[item.id];
|
|
37978
37829
|
if (!report) {
|
|
@@ -38247,7 +38098,7 @@ var useReportInternal = (reportId) => {
|
|
|
38247
38098
|
import equal3 from "fast-deep-equal";
|
|
38248
38099
|
|
|
38249
38100
|
// src/components/Chart/MapChart.tsx
|
|
38250
|
-
import { useEffect as useEffect13, useMemo as useMemo15, useRef as
|
|
38101
|
+
import { useEffect as useEffect13, useMemo as useMemo15, useRef as useRef11, useState as useState17 } from "react";
|
|
38251
38102
|
init_valueFormatter();
|
|
38252
38103
|
import usStates10m from "us-atlas/states-10m.json";
|
|
38253
38104
|
import worldCountries50m from "world-atlas/countries-50m.json";
|
|
@@ -38861,7 +38712,7 @@ function USMap({
|
|
|
38861
38712
|
containerStyle
|
|
38862
38713
|
}) {
|
|
38863
38714
|
const simpleMaps = useSimpleMapsModule();
|
|
38864
|
-
const containerRef =
|
|
38715
|
+
const containerRef = useRef11(null);
|
|
38865
38716
|
const [hoveredState, setHoveredState] = useState17(
|
|
38866
38717
|
void 0
|
|
38867
38718
|
);
|
|
@@ -39057,7 +38908,7 @@ function WorldMap({
|
|
|
39057
38908
|
containerStyle
|
|
39058
38909
|
}) {
|
|
39059
38910
|
const simpleMaps = useSimpleMapsModule();
|
|
39060
|
-
const containerRef =
|
|
38911
|
+
const containerRef = useRef11(null);
|
|
39061
38912
|
const [hoveredCountry, setHoveredCountry] = useState17(
|
|
39062
38913
|
void 0
|
|
39063
38914
|
);
|
|
@@ -39308,7 +39159,7 @@ function MapLayout({
|
|
|
39308
39159
|
}
|
|
39309
39160
|
|
|
39310
39161
|
// src/components/Chart/GaugeChart.tsx
|
|
39311
|
-
import { useEffect as useEffect14, useRef as
|
|
39162
|
+
import { useEffect as useEffect14, useRef as useRef12, useState as useState18 } from "react";
|
|
39312
39163
|
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
39313
39164
|
function GaugeChart({
|
|
39314
39165
|
data,
|
|
@@ -39340,15 +39191,15 @@ function D3Gauge({
|
|
|
39340
39191
|
colors,
|
|
39341
39192
|
isAnimationActive
|
|
39342
39193
|
}) {
|
|
39343
|
-
const containerRef =
|
|
39344
|
-
const svgRef =
|
|
39345
|
-
const gaugeGroupRef =
|
|
39346
|
-
const needleRef =
|
|
39347
|
-
const needleOutlineRef =
|
|
39348
|
-
const textRef =
|
|
39349
|
-
const animationFrameRef =
|
|
39350
|
-
const previousPercentageRef =
|
|
39351
|
-
const firstMountRef =
|
|
39194
|
+
const containerRef = useRef12(null);
|
|
39195
|
+
const svgRef = useRef12(null);
|
|
39196
|
+
const gaugeGroupRef = useRef12(null);
|
|
39197
|
+
const needleRef = useRef12(null);
|
|
39198
|
+
const needleOutlineRef = useRef12(null);
|
|
39199
|
+
const textRef = useRef12(null);
|
|
39200
|
+
const animationFrameRef = useRef12(null);
|
|
39201
|
+
const previousPercentageRef = useRef12(0);
|
|
39202
|
+
const firstMountRef = useRef12(true);
|
|
39352
39203
|
const startAngle = -(3 * Math.PI) / 4;
|
|
39353
39204
|
const totalAngle = 3 * Math.PI / 2;
|
|
39354
39205
|
const [arc, setArc] = useState18(null);
|
|
@@ -39885,7 +39736,7 @@ function Chart({
|
|
|
39885
39736
|
filters,
|
|
39886
39737
|
dashboardCustomFilters[allReportsById[reportId]?.dashboardName ?? ""]
|
|
39887
39738
|
]);
|
|
39888
|
-
const previousFilters =
|
|
39739
|
+
const previousFilters = useRef13(void 0);
|
|
39889
39740
|
if (!equal3(previousFilters.current, filters)) {
|
|
39890
39741
|
previousFilters.current = filters;
|
|
39891
39742
|
}
|
|
@@ -40944,7 +40795,7 @@ import {
|
|
|
40944
40795
|
useContext as useContext20,
|
|
40945
40796
|
useEffect as useEffect17,
|
|
40946
40797
|
useMemo as useMemo17,
|
|
40947
|
-
useRef as
|
|
40798
|
+
useRef as useRef14,
|
|
40948
40799
|
useState as useState22
|
|
40949
40800
|
} from "react";
|
|
40950
40801
|
init_util();
|
|
@@ -41443,7 +41294,7 @@ var FilterPopoverWrapper = ({
|
|
|
41443
41294
|
const [isOpen, setIsOpen] = useState22(false);
|
|
41444
41295
|
const [uniqueValues, setUniqueValues] = useState22(void 0);
|
|
41445
41296
|
const [uniqueValuesIsLoading, setUniqueValuesIsLoading] = useState22(false);
|
|
41446
|
-
const prevFiltersRef =
|
|
41297
|
+
const prevFiltersRef = useRef14("");
|
|
41447
41298
|
const columnInternals = useMemo17(() => {
|
|
41448
41299
|
if (!tables) {
|
|
41449
41300
|
return null;
|
|
@@ -42702,7 +42553,7 @@ function DashboardLegacy({
|
|
|
42702
42553
|
});
|
|
42703
42554
|
return map;
|
|
42704
42555
|
}, [data?.sections, data?.sectionOrder]);
|
|
42705
|
-
const mounted =
|
|
42556
|
+
const mounted = useRef15(false);
|
|
42706
42557
|
useEffect19(() => {
|
|
42707
42558
|
if (!mounted.current) {
|
|
42708
42559
|
mounted.current = true;
|
|
@@ -42744,16 +42595,16 @@ function DashboardLegacy({
|
|
|
42744
42595
|
) : defaultOptionsV2;
|
|
42745
42596
|
}, [populatedDashboardFilters]);
|
|
42746
42597
|
const [filterValues, setFilterValues] = useState26({});
|
|
42747
|
-
const prevNameRef =
|
|
42748
|
-
const prevFlagsRef =
|
|
42749
|
-
const prevClientRef =
|
|
42750
|
-
const addFilterPopoverButtonRef =
|
|
42751
|
-
const viewFiltersPopoverButtonRef =
|
|
42752
|
-
const previousFilters =
|
|
42598
|
+
const prevNameRef = useRef15(name2);
|
|
42599
|
+
const prevFlagsRef = useRef15(flags);
|
|
42600
|
+
const prevClientRef = useRef15(client?.id ?? "");
|
|
42601
|
+
const addFilterPopoverButtonRef = useRef15(null);
|
|
42602
|
+
const viewFiltersPopoverButtonRef = useRef15(null);
|
|
42603
|
+
const previousFilters = useRef15(filters);
|
|
42753
42604
|
if (!equal4(previousFilters.current, filters)) {
|
|
42754
42605
|
previousFilters.current = filters;
|
|
42755
42606
|
}
|
|
42756
|
-
const isInitialLoadOfDashboardRef =
|
|
42607
|
+
const isInitialLoadOfDashboardRef = useRef15(false);
|
|
42757
42608
|
const referencedTables = useMemo19(() => {
|
|
42758
42609
|
const sections = data?.sections || {};
|
|
42759
42610
|
const tables2 = Object.values(sections).flatMap(
|
|
@@ -42781,7 +42632,7 @@ function DashboardLegacy({
|
|
|
42781
42632
|
prevFlagsRef.current = flags;
|
|
42782
42633
|
});
|
|
42783
42634
|
}, [name2, isClientLoading]);
|
|
42784
|
-
const tenantMounted =
|
|
42635
|
+
const tenantMounted = useRef15(false);
|
|
42785
42636
|
useEffect19(() => {
|
|
42786
42637
|
if (!tenantMounted.current) {
|
|
42787
42638
|
tenantMounted.current = true;
|
|
@@ -44810,7 +44661,7 @@ import {
|
|
|
44810
44661
|
useState as useState33,
|
|
44811
44662
|
useContext as useContext30,
|
|
44812
44663
|
useEffect as useEffect25,
|
|
44813
|
-
useRef as
|
|
44664
|
+
useRef as useRef20,
|
|
44814
44665
|
useMemo as useMemo27,
|
|
44815
44666
|
useCallback as useCallback4
|
|
44816
44667
|
} from "react";
|
|
@@ -44819,7 +44670,7 @@ import MonacoEditor from "@monaco-editor/react";
|
|
|
44819
44670
|
// src/ChartBuilder.tsx
|
|
44820
44671
|
import {
|
|
44821
44672
|
useEffect as useEffect23,
|
|
44822
|
-
useRef as
|
|
44673
|
+
useRef as useRef19,
|
|
44823
44674
|
useState as useState31,
|
|
44824
44675
|
useContext as useContext28,
|
|
44825
44676
|
useMemo as useMemo26,
|
|
@@ -44849,7 +44700,7 @@ import {
|
|
|
44849
44700
|
useMemo as useMemo23,
|
|
44850
44701
|
useState as useState28,
|
|
44851
44702
|
useEffect as useEffect21,
|
|
44852
|
-
useRef as
|
|
44703
|
+
useRef as useRef16
|
|
44853
44704
|
} from "react";
|
|
44854
44705
|
|
|
44855
44706
|
// src/internals/ReportBuilder/PivotList.tsx
|
|
@@ -45324,8 +45175,8 @@ var PivotModal = ({
|
|
|
45324
45175
|
const [schemaData] = useContext25(SchemaDataContext);
|
|
45325
45176
|
const { tenants } = useContext25(TenantContext);
|
|
45326
45177
|
const { eventTracking } = useContext25(EventTrackingContext);
|
|
45327
|
-
const rowFieldRef =
|
|
45328
|
-
const colFieldRef =
|
|
45178
|
+
const rowFieldRef = useRef16(null);
|
|
45179
|
+
const colFieldRef = useRef16(null);
|
|
45329
45180
|
const [pivotCardWidth, setPivotCardWidth] = useState28(420);
|
|
45330
45181
|
const [samplePivotTable, setSamplePivotTable] = useState28(null);
|
|
45331
45182
|
const [hasNoRecommendedPivots, sethasNoRecommendedPivots] = useState28(false);
|
|
@@ -45334,7 +45185,7 @@ var PivotModal = ({
|
|
|
45334
45185
|
const [allowedRowFields, setAllowedRowFields] = useState28([]);
|
|
45335
45186
|
const [allowedValueFields, setAllowedValueFields] = useState28([]);
|
|
45336
45187
|
const [uniqueValues, setUniqueValues] = useState28(initialUniqueValues);
|
|
45337
|
-
const buttonRef =
|
|
45188
|
+
const buttonRef = useRef16(null);
|
|
45338
45189
|
const [dateRanges, setDateRanges] = useState28({});
|
|
45339
45190
|
const [pivotError, setPivotError] = useState28("");
|
|
45340
45191
|
const [limitInput, setLimitInput] = useState28(
|
|
@@ -45353,7 +45204,7 @@ var PivotModal = ({
|
|
|
45353
45204
|
const [popoverPosition, setPopoverPosition] = useState28(
|
|
45354
45205
|
"bottom"
|
|
45355
45206
|
);
|
|
45356
|
-
const popoverRef =
|
|
45207
|
+
const popoverRef = useRef16(null);
|
|
45357
45208
|
const columnsToShow = useMemo23(() => {
|
|
45358
45209
|
return (columns || []).reduce((map, col) => {
|
|
45359
45210
|
map[col.field] = col.format;
|
|
@@ -45682,7 +45533,7 @@ var PivotModal = ({
|
|
|
45682
45533
|
};
|
|
45683
45534
|
fetchPivotTables();
|
|
45684
45535
|
}, [selectedPivotIndex, data, dateRange, createdPivots]);
|
|
45685
|
-
const previousUniqueValuesRef =
|
|
45536
|
+
const previousUniqueValuesRef = useRef16();
|
|
45686
45537
|
useEffect21(() => {
|
|
45687
45538
|
if (!uniqueValuesIsLoading && !equal5(uniqueValues, previousUniqueValuesRef.current)) {
|
|
45688
45539
|
previousUniqueValuesRef.current = uniqueValues;
|
|
@@ -47094,7 +46945,7 @@ import {
|
|
|
47094
46945
|
useEffect as useEffect22,
|
|
47095
46946
|
useContext as useContext26,
|
|
47096
46947
|
useMemo as useMemo24,
|
|
47097
|
-
useRef as
|
|
46948
|
+
useRef as useRef17,
|
|
47098
46949
|
useLayoutEffect as useLayoutEffect3
|
|
47099
46950
|
} from "react";
|
|
47100
46951
|
import { differenceInHours as differenceInHours2 } from "date-fns";
|
|
@@ -47216,7 +47067,7 @@ function InternalChart({
|
|
|
47216
47067
|
const { dashboardConfig } = useContext26(DashboardConfigContext);
|
|
47217
47068
|
const { eventTracking } = useContext26(EventTrackingContext);
|
|
47218
47069
|
const [filtersPopoverOpen, setFiltersPopoverOpen] = useState29(false);
|
|
47219
|
-
const filtersButtonRef =
|
|
47070
|
+
const filtersButtonRef = useRef17(null);
|
|
47220
47071
|
const currentReportFilters = useMemo24(() => {
|
|
47221
47072
|
const dashFilters = dashboardConfig[report?.dashboardName ?? ""]?.config.filters;
|
|
47222
47073
|
if (!dashFilters)
|
|
@@ -47245,8 +47096,8 @@ function InternalChart({
|
|
|
47245
47096
|
) : defaultOptionsV2;
|
|
47246
47097
|
}, [reportDateFilter]);
|
|
47247
47098
|
const [filterValues, setFilterValues] = useState29({});
|
|
47248
|
-
const multiselectDebounceRef =
|
|
47249
|
-
const latestMultiselectValueRef =
|
|
47099
|
+
const multiselectDebounceRef = useRef17({});
|
|
47100
|
+
const latestMultiselectValueRef = useRef17({});
|
|
47250
47101
|
const [lockedFilters, setLockedFilters] = useState29(
|
|
47251
47102
|
{}
|
|
47252
47103
|
);
|
|
@@ -47408,7 +47259,7 @@ function InternalChart({
|
|
|
47408
47259
|
onDashboardFilterChange(filter.label, filterValue);
|
|
47409
47260
|
};
|
|
47410
47261
|
const [filtersExpanded, setFiltersExpanded] = useState29(false);
|
|
47411
|
-
const filtersContainerRef =
|
|
47262
|
+
const filtersContainerRef = useRef17(null);
|
|
47412
47263
|
const [visibleFilters, setVisibleFilters] = useState29([]);
|
|
47413
47264
|
const filtersOverflowing = useMemo24(() => {
|
|
47414
47265
|
return visibleFilters.some((visible) => visible);
|
|
@@ -47674,7 +47525,7 @@ init_dates();
|
|
|
47674
47525
|
import React16, {
|
|
47675
47526
|
useContext as useContext27,
|
|
47676
47527
|
useMemo as useMemo25,
|
|
47677
|
-
useRef as
|
|
47528
|
+
useRef as useRef18,
|
|
47678
47529
|
useState as useState30
|
|
47679
47530
|
} from "react";
|
|
47680
47531
|
import { Fragment as Fragment12, jsx as jsx68, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
@@ -47694,9 +47545,9 @@ function QuillMultiSelectSectionList({
|
|
|
47694
47545
|
}) {
|
|
47695
47546
|
const [theme] = useContext27(ThemeContext);
|
|
47696
47547
|
const [showModal, setShowModal] = useState30(false);
|
|
47697
|
-
const modalRef =
|
|
47698
|
-
const buttonRef =
|
|
47699
|
-
const debounceTimeoutId =
|
|
47548
|
+
const modalRef = useRef18(null);
|
|
47549
|
+
const buttonRef = useRef18(null);
|
|
47550
|
+
const debounceTimeoutId = useRef18(null);
|
|
47700
47551
|
const [searchQuery, setSearchQuery] = React16.useState("");
|
|
47701
47552
|
useOnClickOutside_default(
|
|
47702
47553
|
modalRef,
|
|
@@ -48483,7 +48334,7 @@ function createReportFromForm(formData, report, eventTracking, selectedPivotTabl
|
|
|
48483
48334
|
return newReport;
|
|
48484
48335
|
}
|
|
48485
48336
|
function ChartBuilderWithModal(props) {
|
|
48486
|
-
const parentRef =
|
|
48337
|
+
const parentRef = useRef19(null);
|
|
48487
48338
|
const [modalWidth, setModalWidth] = useState31(200);
|
|
48488
48339
|
const [modalHeight, setModalHeight] = useState31(200);
|
|
48489
48340
|
const { isOpen, setIsOpen, title, isHorizontalView } = props;
|
|
@@ -48650,8 +48501,8 @@ function ChartBuilder({
|
|
|
48650
48501
|
const MIN_FORM_WIDTH = 700;
|
|
48651
48502
|
const [pivotCardWidth, setPivotCardWidth] = useState31(MIN_FORM_WIDTH);
|
|
48652
48503
|
const [formWidth, setFormWidth] = useState31(MIN_FORM_WIDTH);
|
|
48653
|
-
const inputRef =
|
|
48654
|
-
const selectRef =
|
|
48504
|
+
const inputRef = useRef19(null);
|
|
48505
|
+
const selectRef = useRef19(null);
|
|
48655
48506
|
const processColumns = (columns2) => {
|
|
48656
48507
|
if (schemaData.schemaWithCustomFields) {
|
|
48657
48508
|
const newProcessedColumns = columns2?.map((col) => {
|
|
@@ -48710,8 +48561,8 @@ function ChartBuilder({
|
|
|
48710
48561
|
processColumns(report?.columnInternal ?? [])
|
|
48711
48562
|
);
|
|
48712
48563
|
const [currentPage, setCurrentPage] = useState31(0);
|
|
48713
|
-
const parentRef =
|
|
48714
|
-
const deleteRef =
|
|
48564
|
+
const parentRef = useRef19(null);
|
|
48565
|
+
const deleteRef = useRef19(null);
|
|
48715
48566
|
const modalPadding = 20;
|
|
48716
48567
|
const deleteButtonMargin = -12;
|
|
48717
48568
|
const { dashboardFilters } = useContext28(DashboardFiltersContext);
|
|
@@ -48764,7 +48615,7 @@ function ChartBuilder({
|
|
|
48764
48615
|
abortLoadingFilters
|
|
48765
48616
|
} = useContext28(ReportFiltersContext);
|
|
48766
48617
|
const { reportsDispatch } = useContext28(ReportsContext);
|
|
48767
|
-
const initialFilters =
|
|
48618
|
+
const initialFilters = useRef19(reportFilters[report?.id ?? TEMP_REPORT_ID]);
|
|
48768
48619
|
const [reportFiltersLoaded, setReportFiltersLoaded] = useState31(!filtersEnabled);
|
|
48769
48620
|
const hasExistingData = useMemo26(() => {
|
|
48770
48621
|
return report?.rows && report.rows.length > 0 || report?.pivotRows && report.pivotRows.length > 0;
|
|
@@ -49058,7 +48909,7 @@ function ChartBuilder({
|
|
|
49058
48909
|
};
|
|
49059
48910
|
}
|
|
49060
48911
|
};
|
|
49061
|
-
const initializedRef =
|
|
48912
|
+
const initializedRef = useRef19(false);
|
|
49062
48913
|
const getCurrentSection = () => {
|
|
49063
48914
|
let id = report?.id ?? "";
|
|
49064
48915
|
if (id === "" || id === TEMP_REPORT_ID) {
|
|
@@ -49387,7 +49238,7 @@ function ChartBuilder({
|
|
|
49387
49238
|
}));
|
|
49388
49239
|
}
|
|
49389
49240
|
}, [report?.triggerReload, report?.columns, formData.columns.length]);
|
|
49390
|
-
const ranMountQuery =
|
|
49241
|
+
const ranMountQuery = useRef19(false);
|
|
49391
49242
|
useEffect23(() => {
|
|
49392
49243
|
if (runQueryOnMount && reportFiltersLoaded && filtersEnabled && !ranMountQuery.current) {
|
|
49393
49244
|
ranMountQuery.current = true;
|
|
@@ -49624,7 +49475,7 @@ function ChartBuilder({
|
|
|
49624
49475
|
return handleRunQuery(baseProcessing, updatedFilters);
|
|
49625
49476
|
});
|
|
49626
49477
|
};
|
|
49627
|
-
const filtersEnabledRef =
|
|
49478
|
+
const filtersEnabledRef = useRef19(filtersEnabled);
|
|
49628
49479
|
useEffect23(() => {
|
|
49629
49480
|
if (filtersEnabledRef.current !== filtersEnabled) {
|
|
49630
49481
|
filtersEnabledRef.current = filtersEnabled;
|
|
@@ -52629,7 +52480,7 @@ function SQLEditor({
|
|
|
52629
52480
|
}) {
|
|
52630
52481
|
const computedButtonLabel = addToDashboardButtonLabel === "Add to dashboard" ? reportId || report?.id ? "Save changes" : "Add to dashboard" : addToDashboardButtonLabel;
|
|
52631
52482
|
const [sqlPrompt, setSqlPrompt] = useState33("");
|
|
52632
|
-
const sqlPromptFormRef =
|
|
52483
|
+
const sqlPromptFormRef = useRef20(null);
|
|
52633
52484
|
const sqlPromptInputWidth = useResponsiveFirstChildWidth_default(sqlPromptFormRef, {
|
|
52634
52485
|
gap: 12,
|
|
52635
52486
|
initialWidth: 320,
|
|
@@ -52689,7 +52540,7 @@ function SQLEditor({
|
|
|
52689
52540
|
};
|
|
52690
52541
|
return initial;
|
|
52691
52542
|
});
|
|
52692
|
-
const tableRef =
|
|
52543
|
+
const tableRef = useRef20(null);
|
|
52693
52544
|
const [cachedHeight, setCachedHeight] = useState33(0);
|
|
52694
52545
|
const DEFAULT_ROWS_PER_PAGE = 5;
|
|
52695
52546
|
const ROW_HEIGHT = 37;
|
|
@@ -53691,7 +53542,7 @@ var SQLEditorComponent = ({
|
|
|
53691
53542
|
}) => {
|
|
53692
53543
|
const [editorKey, setEditorKey] = useState33(0);
|
|
53693
53544
|
const { eventTracking } = useContext30(EventTrackingContext);
|
|
53694
|
-
const currentProvider =
|
|
53545
|
+
const currentProvider = useRef20(null);
|
|
53695
53546
|
useEffect25(() => {
|
|
53696
53547
|
if (currentProvider.current) {
|
|
53697
53548
|
currentProvider.current.dispose();
|
|
@@ -54163,7 +54014,7 @@ function SchemaItem({
|
|
|
54163
54014
|
import {
|
|
54164
54015
|
useContext as useContext34,
|
|
54165
54016
|
useEffect as useEffect29,
|
|
54166
|
-
useRef as
|
|
54017
|
+
useRef as useRef22,
|
|
54167
54018
|
useState as useState39
|
|
54168
54019
|
} from "react";
|
|
54169
54020
|
init_constants();
|
|
@@ -55699,7 +55550,7 @@ var useReportBuilder = ({
|
|
|
55699
55550
|
init_ReportBuilder();
|
|
55700
55551
|
|
|
55701
55552
|
// src/components/ReportBuilder/AddColumnModal.tsx
|
|
55702
|
-
import { useState as useState35, useRef as
|
|
55553
|
+
import { useState as useState35, useRef as useRef21, useMemo as useMemo29, useEffect as useEffect27, useContext as useContext32 } from "react";
|
|
55703
55554
|
import {
|
|
55704
55555
|
DndContext as DndContext2,
|
|
55705
55556
|
closestCenter as closestCenter2,
|
|
@@ -55740,7 +55591,7 @@ function AddColumnModal({
|
|
|
55740
55591
|
const [theme] = useContext32(ThemeContext);
|
|
55741
55592
|
const [search, setSearch] = useState35("");
|
|
55742
55593
|
const [initialLoad, setInitialLoad] = useState35(true);
|
|
55743
|
-
const textInputContainerRef =
|
|
55594
|
+
const textInputContainerRef = useRef21(null);
|
|
55744
55595
|
const [modalSelectedColumns, setModalSelectedColumns] = useState35(
|
|
55745
55596
|
selectedColumns.map((col) => `${col.table}.${col.field}`)
|
|
55746
55597
|
);
|
|
@@ -58194,8 +58045,8 @@ function ReportBuilder({
|
|
|
58194
58045
|
const [theme] = useContext34(ThemeContext);
|
|
58195
58046
|
const [client] = useContext34(ClientContext);
|
|
58196
58047
|
const { getToken } = useContext34(FetchContext);
|
|
58197
|
-
const parentRef =
|
|
58198
|
-
const askAIFormRef =
|
|
58048
|
+
const parentRef = useRef22(null);
|
|
58049
|
+
const askAIFormRef = useRef22(null);
|
|
58199
58050
|
const [isCopying, setIsCopying] = useState39(false);
|
|
58200
58051
|
const [isChartBuilderOpen, setIsChartBuilderOpen] = useState39(false);
|
|
58201
58052
|
const [isSaveQueryModalOpen, setIsSaveQueryModalOpen] = useState39(false);
|
|
@@ -58702,7 +58553,7 @@ import {
|
|
|
58702
58553
|
useContext as useContext35,
|
|
58703
58554
|
useEffect as useEffect30,
|
|
58704
58555
|
useMemo as useMemo31,
|
|
58705
|
-
useRef as
|
|
58556
|
+
useRef as useRef23,
|
|
58706
58557
|
useState as useState40
|
|
58707
58558
|
} from "react";
|
|
58708
58559
|
import { jsx as jsx86 } from "react/jsx-runtime";
|
|
@@ -58751,7 +58602,7 @@ function ChartEditor({
|
|
|
58751
58602
|
onClickChartElement,
|
|
58752
58603
|
onClickChartError
|
|
58753
58604
|
}) {
|
|
58754
|
-
const parentRef =
|
|
58605
|
+
const parentRef = useRef23(null);
|
|
58755
58606
|
const [modalWidth, setModalWidth] = useState40(200);
|
|
58756
58607
|
const [modalHeight, setModalHeight] = useState40(200);
|
|
58757
58608
|
const { allReportsById } = useAllReports();
|
|
@@ -58929,7 +58780,7 @@ function ChartEditor({
|
|
|
58929
58780
|
}
|
|
58930
58781
|
|
|
58931
58782
|
// src/Chat.tsx
|
|
58932
|
-
import { useContext as useContext37, useEffect as useEffect32, useRef as
|
|
58783
|
+
import { useContext as useContext37, useEffect as useEffect32, useRef as useRef25, useState as useState42 } from "react";
|
|
58933
58784
|
|
|
58934
58785
|
// src/ChatChartCard.tsx
|
|
58935
58786
|
import { useMemo as useMemo33 } from "react";
|
|
@@ -58944,7 +58795,7 @@ import {
|
|
|
58944
58795
|
useLayoutEffect as useLayoutEffect4,
|
|
58945
58796
|
useMemo as useMemo32,
|
|
58946
58797
|
useReducer as useReducer2,
|
|
58947
|
-
useRef as
|
|
58798
|
+
useRef as useRef24,
|
|
58948
58799
|
useState as useState41
|
|
58949
58800
|
} from "react";
|
|
58950
58801
|
import { keepPreviousData, useQuery } from "@tanstack/react-query";
|
|
@@ -60131,6 +59982,37 @@ function useFormReducer(state, action) {
|
|
|
60131
59982
|
}
|
|
60132
59983
|
}
|
|
60133
59984
|
|
|
59985
|
+
// src/utils/pivotDateBuckets.ts
|
|
59986
|
+
import {
|
|
59987
|
+
eachDayOfInterval as eachDayOfInterval3,
|
|
59988
|
+
eachMonthOfInterval as eachMonthOfInterval2,
|
|
59989
|
+
eachWeekOfInterval as eachWeekOfInterval2,
|
|
59990
|
+
eachYearOfInterval as eachYearOfInterval2
|
|
59991
|
+
} from "date-fns";
|
|
59992
|
+
function buildPivotDateBucketStarts(range, bucket) {
|
|
59993
|
+
const min2 = new Date(range.min);
|
|
59994
|
+
const max2 = new Date(range.max);
|
|
59995
|
+
if (Number.isNaN(min2.getTime()) || Number.isNaN(max2.getTime())) return [];
|
|
59996
|
+
const start = min2 <= max2 ? min2 : max2;
|
|
59997
|
+
const end = min2 <= max2 ? max2 : min2;
|
|
59998
|
+
const asLocalCalendarDate = (date) => new Date(
|
|
59999
|
+
date.getUTCFullYear(),
|
|
60000
|
+
date.getUTCMonth(),
|
|
60001
|
+
date.getUTCDate(),
|
|
60002
|
+
12
|
|
60003
|
+
);
|
|
60004
|
+
const interval = {
|
|
60005
|
+
start: asLocalCalendarDate(start),
|
|
60006
|
+
end: asLocalCalendarDate(end)
|
|
60007
|
+
};
|
|
60008
|
+
const dates = bucket === "day" ? eachDayOfInterval3(interval) : bucket === "week" ? eachWeekOfInterval2(interval, { weekStartsOn: 1 }) : bucket === "year" ? eachYearOfInterval2(interval) : eachMonthOfInterval2(interval);
|
|
60009
|
+
return dates.map(
|
|
60010
|
+
(date) => new Date(
|
|
60011
|
+
Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())
|
|
60012
|
+
).toISOString()
|
|
60013
|
+
);
|
|
60014
|
+
}
|
|
60015
|
+
|
|
60134
60016
|
// src/hooks/useForm.queries.ts
|
|
60135
60017
|
var QUERY_KEY_UNDEFINED = "__undefined__";
|
|
60136
60018
|
var QUERY_KEY_FUNCTION = "__function__";
|
|
@@ -60308,70 +60190,6 @@ var AXIS_FORMAT_OPTIONS = [
|
|
|
60308
60190
|
{ value: "MMM_dd_hh:mm_ap_pm", label: "date and time" },
|
|
60309
60191
|
{ value: "hh_ap_pm", label: "hour" }
|
|
60310
60192
|
];
|
|
60311
|
-
var USEFORM_FILTERS_DEBUG_FLAG = "__QUILL_DEBUG_USEFORM_FILTERS__";
|
|
60312
|
-
var USEFORM_REFRESH_DEBUG_FLAG = "__QUILL_DEBUG_USEFORM_REFRESH__";
|
|
60313
|
-
var USEFORM_PIVOT_SHAPE_DEBUG_FLAG = "__QUILL_DEBUG_USEFORM_PIVOT_SHAPE__";
|
|
60314
|
-
var USEFORM_TASK_DEBUG_FLAG = "__QUILL_DEBUG_USEFORM_TASKS__";
|
|
60315
|
-
var isUseFormFiltersDebugEnabled = () => {
|
|
60316
|
-
const globalValue = typeof globalThis !== "undefined" ? globalThis?.[USEFORM_FILTERS_DEBUG_FLAG] : void 0;
|
|
60317
|
-
if (globalValue === true) {
|
|
60318
|
-
return true;
|
|
60319
|
-
}
|
|
60320
|
-
if (typeof process !== "undefined" && typeof process.env !== "undefined") {
|
|
60321
|
-
const envValue = String(
|
|
60322
|
-
process?.env?.QUILL_DEBUG_USEFORM_FILTERS ?? ""
|
|
60323
|
-
).trim().toLowerCase();
|
|
60324
|
-
return envValue === "1" || envValue === "true";
|
|
60325
|
-
}
|
|
60326
|
-
return false;
|
|
60327
|
-
};
|
|
60328
|
-
var isUseFormRefreshDebugEnabled = () => {
|
|
60329
|
-
const globalValue = typeof globalThis !== "undefined" ? globalThis?.[USEFORM_REFRESH_DEBUG_FLAG] : void 0;
|
|
60330
|
-
if (globalValue === true) {
|
|
60331
|
-
return true;
|
|
60332
|
-
}
|
|
60333
|
-
if (typeof process !== "undefined" && typeof process.env !== "undefined") {
|
|
60334
|
-
const envValue = String(
|
|
60335
|
-
process?.env?.QUILL_DEBUG_USEFORM_REFRESH ?? ""
|
|
60336
|
-
).trim().toLowerCase();
|
|
60337
|
-
return envValue === "1" || envValue === "true";
|
|
60338
|
-
}
|
|
60339
|
-
return false;
|
|
60340
|
-
};
|
|
60341
|
-
var isUseFormTaskDebugEnabled = () => {
|
|
60342
|
-
const globalValue = typeof globalThis !== "undefined" ? globalThis?.[USEFORM_TASK_DEBUG_FLAG] : void 0;
|
|
60343
|
-
if (globalValue === true) {
|
|
60344
|
-
return true;
|
|
60345
|
-
}
|
|
60346
|
-
if (typeof process !== "undefined" && typeof process.env !== "undefined") {
|
|
60347
|
-
const envValue = String(
|
|
60348
|
-
process?.env?.QUILL_DEBUG_USEFORM_TASKS ?? ""
|
|
60349
|
-
).trim().toLowerCase();
|
|
60350
|
-
return envValue === "1" || envValue === "true";
|
|
60351
|
-
}
|
|
60352
|
-
return false;
|
|
60353
|
-
};
|
|
60354
|
-
var logUseFormTaskDebug = (label, payload) => {
|
|
60355
|
-
if (!isUseFormTaskDebugEnabled()) return;
|
|
60356
|
-
console.log(`[useReport][task] ${label}`, payload);
|
|
60357
|
-
};
|
|
60358
|
-
var isUseFormPivotShapeDebugEnabled = () => {
|
|
60359
|
-
const globalValue = typeof globalThis !== "undefined" ? globalThis?.[USEFORM_PIVOT_SHAPE_DEBUG_FLAG] : void 0;
|
|
60360
|
-
if (globalValue === true) {
|
|
60361
|
-
return true;
|
|
60362
|
-
}
|
|
60363
|
-
if (typeof process !== "undefined" && typeof process.env !== "undefined") {
|
|
60364
|
-
const envValue = String(
|
|
60365
|
-
process?.env?.QUILL_DEBUG_USEFORM_PIVOT_SHAPE ?? ""
|
|
60366
|
-
).trim().toLowerCase();
|
|
60367
|
-
return envValue === "1" || envValue === "true";
|
|
60368
|
-
}
|
|
60369
|
-
return false;
|
|
60370
|
-
};
|
|
60371
|
-
var logUseFormPivotShapeDebug = (label, payload) => {
|
|
60372
|
-
if (!isUseFormPivotShapeDebugEnabled()) return;
|
|
60373
|
-
console.log(`[useReport][pivot-shape] ${label}`, payload);
|
|
60374
|
-
};
|
|
60375
60193
|
var BOOLEAN_FILTER_VALUE_OPTIONS = [
|
|
60376
60194
|
{ name: "true", label: "True", value: "true" },
|
|
60377
60195
|
{ name: "false", label: "False", value: "false" }
|
|
@@ -61263,30 +61081,24 @@ function shouldUsePivotRowFieldAsXAxis(chartType, pivotRowField, rowColumnFormat
|
|
|
61263
61081
|
function normalizePivotChartForDisplay(chart) {
|
|
61264
61082
|
const swapPivotRowsForChartRows = Boolean(chart?.pivot) && Array.isArray(chart?.pivotRows) && chart.pivotRows.length > 0;
|
|
61265
61083
|
const syntheticAggregationOnlyRows = chart && !swapPivotRowsForChartRows ? buildSyntheticAggregationOnlyDisplayRows(chart) : null;
|
|
61084
|
+
const hasExplicitEmptyGroupedPivot = Boolean(
|
|
61085
|
+
String(chart?.pivot?.rowField ?? "").trim() || String(chart?.pivot?.columnField ?? "").trim()
|
|
61086
|
+
) && Array.isArray(chart?.pivotRows) && chart.pivotRows.length === 0;
|
|
61266
61087
|
const detailRowsAreNotPivotBuckets = Boolean(chart) && !swapPivotRowsForChartRows && !syntheticAggregationOnlyRows && chartDetailRowsMissingPivotRowBucket(chart);
|
|
61267
|
-
logUseFormPivotShapeDebug("normalizePivotChartForDisplay:gate", {
|
|
61268
|
-
hasPivot: Boolean(chart?.pivot),
|
|
61269
|
-
pivotRowField: chart?.pivot?.rowField,
|
|
61270
|
-
pivotRowsIsArray: Array.isArray(chart?.pivotRows),
|
|
61271
|
-
pivotRowsLength: Array.isArray(chart?.pivotRows) ? chart.pivotRows.length : null,
|
|
61272
|
-
incomingChartRowsLength: Array.isArray(chart?.rows) ? chart.rows.length : null,
|
|
61273
|
-
swapPivotRowsForChartRows
|
|
61274
|
-
});
|
|
61275
61088
|
const config = swapPivotRowsForChartRows ? {
|
|
61276
61089
|
...chart,
|
|
61277
61090
|
rows: chart.pivotRows
|
|
61278
61091
|
} : syntheticAggregationOnlyRows ? {
|
|
61279
61092
|
...chart,
|
|
61280
61093
|
rows: syntheticAggregationOnlyRows
|
|
61094
|
+
} : hasExplicitEmptyGroupedPivot ? {
|
|
61095
|
+
...chart,
|
|
61096
|
+
rows: []
|
|
61281
61097
|
} : detailRowsAreNotPivotBuckets ? {
|
|
61282
61098
|
...chart,
|
|
61283
61099
|
rows: []
|
|
61284
61100
|
} : chart;
|
|
61285
61101
|
if (!config) return config;
|
|
61286
|
-
logUseFormPivotShapeDebug("normalizePivotChartForDisplay:postGateRows", {
|
|
61287
|
-
effectiveRowsLength: Array.isArray(config.rows) ? config.rows.length : null,
|
|
61288
|
-
stillUsingDetailRows: Boolean(config.pivot) && !swapPivotRowsForChartRows && Array.isArray(config.rows) && config.rows.length > 0
|
|
61289
|
-
});
|
|
61290
61102
|
if (!config.pivot) return config;
|
|
61291
61103
|
const pivotRowFieldEarly = String(config.pivot?.rowField ?? "").trim();
|
|
61292
61104
|
const rowColumn = (config.pivotColumns ?? config.columns ?? []).find(
|
|
@@ -62326,7 +62138,8 @@ function mergeDisplayAndSourceForTableFormats(args) {
|
|
|
62326
62138
|
effectiveReportBuilderTableNames,
|
|
62327
62139
|
scopedSchemaColumns,
|
|
62328
62140
|
displayColumns,
|
|
62329
|
-
sourceReport
|
|
62141
|
+
sourceReport,
|
|
62142
|
+
includeSelectedSchemaFallback
|
|
62330
62143
|
} = args;
|
|
62331
62144
|
const selectedTableNames = new Set(effectiveReportBuilderTableNames);
|
|
62332
62145
|
const persistedReportColumns = Array.isArray(sourceReport?.columns) && sourceReport.columns.length > 0 ? sourceReport.columns : null;
|
|
@@ -62347,6 +62160,21 @@ function mergeDisplayAndSourceForTableFormats(args) {
|
|
|
62347
62160
|
...tableName ? { table: tableName } : {}
|
|
62348
62161
|
};
|
|
62349
62162
|
}).filter((column) => Boolean(column));
|
|
62163
|
+
const normalizedSchemaColumns = includeSelectedSchemaFallback ? scopedSchemaColumns.filter(
|
|
62164
|
+
(column) => selectedTableNames.has(String(column.table ?? "").trim())
|
|
62165
|
+
).map((column) => {
|
|
62166
|
+
const field = String(column.field ?? "").trim();
|
|
62167
|
+
if (!field) return null;
|
|
62168
|
+
const label = String(column.label ?? "").trim() || field;
|
|
62169
|
+
const format9 = String(column.format ?? "").trim() || "string";
|
|
62170
|
+
const tableName = String(column.table ?? "").trim();
|
|
62171
|
+
return {
|
|
62172
|
+
label,
|
|
62173
|
+
field,
|
|
62174
|
+
format: format9,
|
|
62175
|
+
...tableName ? { table: tableName } : {}
|
|
62176
|
+
};
|
|
62177
|
+
}).filter((column) => Boolean(column)) : [];
|
|
62350
62178
|
const normalizedDisplayColumns = (displayColumns ?? []).map((column) => {
|
|
62351
62179
|
const field = String(column?.field ?? "").trim();
|
|
62352
62180
|
if (!field) return null;
|
|
@@ -62371,7 +62199,10 @@ function mergeDisplayAndSourceForTableFormats(args) {
|
|
|
62371
62199
|
sourceColumnsByKey.set(key, [column]);
|
|
62372
62200
|
}
|
|
62373
62201
|
};
|
|
62374
|
-
for (const sourceColumn of
|
|
62202
|
+
for (const sourceColumn of [
|
|
62203
|
+
...normalizedSourceColumns,
|
|
62204
|
+
...normalizedSchemaColumns
|
|
62205
|
+
]) {
|
|
62375
62206
|
const tableName = String(sourceColumn.table ?? "").trim();
|
|
62376
62207
|
addSourceColumnKey(sourceColumn.field, sourceColumn);
|
|
62377
62208
|
addSourceColumnKey(sourceColumn.label, sourceColumn);
|
|
@@ -62929,9 +62760,6 @@ async function loadViaInMemoryEngines({
|
|
|
62929
62760
|
pivot,
|
|
62930
62761
|
reportBuilderState,
|
|
62931
62762
|
allowReportTaskBootstrap = false,
|
|
62932
|
-
debugSource,
|
|
62933
|
-
debugRunId,
|
|
62934
|
-
debugLoadRequestId,
|
|
62935
62763
|
draftSessionId
|
|
62936
62764
|
}) {
|
|
62937
62765
|
const requestedTask = allowReportTaskBootstrap ? "report" : "item";
|
|
@@ -62941,17 +62769,6 @@ async function loadViaInMemoryEngines({
|
|
|
62941
62769
|
rowsPerRequest: DEFAULT_USE_REPORT_ROWS_PER_REQUEST
|
|
62942
62770
|
}
|
|
62943
62771
|
} : {};
|
|
62944
|
-
logUseFormTaskDebug("dispatch fetchReport", {
|
|
62945
|
-
reportId,
|
|
62946
|
-
task: requestedTask,
|
|
62947
|
-
source: debugSource ?? "unknown",
|
|
62948
|
-
runId: debugRunId ?? null,
|
|
62949
|
-
loadRequestId: debugLoadRequestId ?? null,
|
|
62950
|
-
allowReportTaskBootstrap,
|
|
62951
|
-
filterCount: internalFilters.length,
|
|
62952
|
-
hasPivot: Boolean(pivot),
|
|
62953
|
-
hasReportBuilderState: Boolean(reportBuilderState)
|
|
62954
|
-
});
|
|
62955
62772
|
const { report, error } = await fetchReport({
|
|
62956
62773
|
reportId,
|
|
62957
62774
|
client,
|
|
@@ -63031,9 +62848,6 @@ async function loadViaPivotTemplate({
|
|
|
63031
62848
|
reportBuilderState,
|
|
63032
62849
|
baseReport,
|
|
63033
62850
|
schema,
|
|
63034
|
-
debugSource,
|
|
63035
|
-
debugRunId,
|
|
63036
|
-
debugLoadRequestId,
|
|
63037
62851
|
draftSessionId
|
|
63038
62852
|
}) {
|
|
63039
62853
|
const pivotForTemplate = enrichPivotRowFieldTypeForTemplate(
|
|
@@ -63041,16 +62855,6 @@ async function loadViaPivotTemplate({
|
|
|
63041
62855
|
schema,
|
|
63042
62856
|
baseReport
|
|
63043
62857
|
);
|
|
63044
|
-
logUseFormTaskDebug("dispatch fetchReport", {
|
|
63045
|
-
reportId,
|
|
63046
|
-
task: "pivot-template",
|
|
63047
|
-
source: debugSource ?? "unknown",
|
|
63048
|
-
runId: debugRunId ?? null,
|
|
63049
|
-
loadRequestId: debugLoadRequestId ?? null,
|
|
63050
|
-
filterCount: internalFilters.length,
|
|
63051
|
-
hasPivot: Boolean(pivotForTemplate),
|
|
63052
|
-
hasReportBuilderState: Boolean(reportBuilderState)
|
|
63053
|
-
});
|
|
63054
62858
|
const { report, error } = await fetchPivotTemplateReportForUseForm({
|
|
63055
62859
|
reportId,
|
|
63056
62860
|
client,
|
|
@@ -63278,19 +63082,8 @@ async function loadPivotTemplateInParallelWithReportTask({
|
|
|
63278
63082
|
customFields,
|
|
63279
63083
|
dashboardName,
|
|
63280
63084
|
pivotRefreshOnly = false,
|
|
63281
|
-
debugSource,
|
|
63282
|
-
debugRunId,
|
|
63283
|
-
debugLoadRequestId,
|
|
63284
63085
|
draftSessionId
|
|
63285
63086
|
}) {
|
|
63286
|
-
logUseFormTaskDebug("parallel loader route", {
|
|
63287
|
-
reportId,
|
|
63288
|
-
source: debugSource ?? "unknown",
|
|
63289
|
-
runId: debugRunId ?? null,
|
|
63290
|
-
loadRequestId: debugLoadRequestId ?? null,
|
|
63291
|
-
pivotRefreshOnly,
|
|
63292
|
-
tasks: pivotRefreshOnly ? ["pivot-template"] : ["report", "pivot-template", "report-builder-state"]
|
|
63293
|
-
});
|
|
63294
63087
|
if (pivotRefreshOnly) {
|
|
63295
63088
|
const pivotOnlyResult = await loadViaPivotTemplate({
|
|
63296
63089
|
reportId,
|
|
@@ -63303,9 +63096,6 @@ async function loadPivotTemplateInParallelWithReportTask({
|
|
|
63303
63096
|
reportBuilderState,
|
|
63304
63097
|
baseReport,
|
|
63305
63098
|
schema,
|
|
63306
|
-
debugSource,
|
|
63307
|
-
debugRunId,
|
|
63308
|
-
debugLoadRequestId,
|
|
63309
63099
|
draftSessionId
|
|
63310
63100
|
});
|
|
63311
63101
|
return pivotOnlyResult;
|
|
@@ -63321,9 +63111,6 @@ async function loadPivotTemplateInParallelWithReportTask({
|
|
|
63321
63111
|
pivot,
|
|
63322
63112
|
reportBuilderState,
|
|
63323
63113
|
allowReportTaskBootstrap: true,
|
|
63324
|
-
debugSource,
|
|
63325
|
-
debugRunId,
|
|
63326
|
-
debugLoadRequestId,
|
|
63327
63114
|
draftSessionId
|
|
63328
63115
|
}),
|
|
63329
63116
|
loadViaPivotTemplate({
|
|
@@ -63337,9 +63124,6 @@ async function loadPivotTemplateInParallelWithReportTask({
|
|
|
63337
63124
|
reportBuilderState,
|
|
63338
63125
|
baseReport,
|
|
63339
63126
|
schema,
|
|
63340
|
-
debugSource,
|
|
63341
|
-
debugRunId,
|
|
63342
|
-
debugLoadRequestId,
|
|
63343
63127
|
draftSessionId
|
|
63344
63128
|
}),
|
|
63345
63129
|
fetchReportBuilderStateByReportId({
|
|
@@ -63522,9 +63306,6 @@ async function loadReportForUseForm({
|
|
|
63522
63306
|
customFields,
|
|
63523
63307
|
dashboardName,
|
|
63524
63308
|
useInMemoryEngines,
|
|
63525
|
-
debugSource,
|
|
63526
|
-
debugRunId,
|
|
63527
|
-
debugLoadRequestId,
|
|
63528
63309
|
draftSessionId
|
|
63529
63310
|
}) {
|
|
63530
63311
|
const effectivePivot = pivot ?? initialReportBuilderState?.pivot ?? void 0;
|
|
@@ -63533,18 +63314,6 @@ async function loadReportForUseForm({
|
|
|
63533
63314
|
...initialReportBuilderState,
|
|
63534
63315
|
pivot: effectivePivot ?? initialReportBuilderState.pivot ?? null
|
|
63535
63316
|
} : void 0;
|
|
63536
|
-
logUseFormTaskDebug("resolve loader route", {
|
|
63537
|
-
reportId,
|
|
63538
|
-
source: debugSource ?? "unknown",
|
|
63539
|
-
runId: debugRunId ?? null,
|
|
63540
|
-
loadRequestId: debugLoadRequestId ?? null,
|
|
63541
|
-
hasPivot,
|
|
63542
|
-
hasReportBuilderState: Boolean(reportBuilderStateForLoad),
|
|
63543
|
-
allowReportTaskBootstrap,
|
|
63544
|
-
includeReportBuilderStateInPivotTask,
|
|
63545
|
-
filterCount: internalFilters.length,
|
|
63546
|
-
useInMemoryEngines
|
|
63547
|
-
});
|
|
63548
63317
|
if (hasPivot) {
|
|
63549
63318
|
const pivotResult = await loadPivotTemplateInParallelWithReportTask({
|
|
63550
63319
|
reportId,
|
|
@@ -63560,9 +63329,6 @@ async function loadReportForUseForm({
|
|
|
63560
63329
|
customFields,
|
|
63561
63330
|
dashboardName,
|
|
63562
63331
|
pivotRefreshOnly: includeReportBuilderStateInPivotTask,
|
|
63563
|
-
debugSource,
|
|
63564
|
-
debugRunId,
|
|
63565
|
-
debugLoadRequestId,
|
|
63566
63332
|
draftSessionId
|
|
63567
63333
|
});
|
|
63568
63334
|
const pivotRows = pivotResult.report?.pivotRows;
|
|
@@ -63571,7 +63337,7 @@ async function loadReportForUseForm({
|
|
|
63571
63337
|
const hasRowBucketKey = !rowFieldTrimmed || Array.isArray(pivotRows) && pivotRows.some(
|
|
63572
63338
|
(row) => row && typeof row === "object" && Object.prototype.hasOwnProperty.call(row, rowFieldTrimmed)
|
|
63573
63339
|
);
|
|
63574
|
-
const hasMatchingPivotData = pivotResult.report && !pivotResult.error && Array.isArray(pivotRows) && pivotRows.length
|
|
63340
|
+
const hasMatchingPivotData = pivotResult.report && !pivotResult.error && Array.isArray(pivotRows) && (pivotRows.length === 0 || hasRowBucketKey);
|
|
63575
63341
|
if (hasMatchingPivotData) {
|
|
63576
63342
|
return pivotResult;
|
|
63577
63343
|
}
|
|
@@ -63611,25 +63377,12 @@ async function loadReportForUseForm({
|
|
|
63611
63377
|
schema,
|
|
63612
63378
|
customFields,
|
|
63613
63379
|
dashboardName,
|
|
63614
|
-
debugSource,
|
|
63615
|
-
debugRunId,
|
|
63616
|
-
debugLoadRequestId,
|
|
63617
63380
|
draftSessionId
|
|
63618
63381
|
});
|
|
63619
63382
|
const normalizedBootstrapResult = bootstrapResult.report?.pivot == null ? stripPivotFromResult(bootstrapResult) : bootstrapResult;
|
|
63620
63383
|
return normalizedBootstrapResult;
|
|
63621
63384
|
}
|
|
63622
63385
|
const shouldUseReportTaskForReload = internalFilters.length > 0;
|
|
63623
|
-
const resolvedTask = shouldUseReportTaskForReload ? "report" : "item";
|
|
63624
|
-
logUseFormTaskDebug("non-bootstrap task route", {
|
|
63625
|
-
reportId,
|
|
63626
|
-
task: resolvedTask,
|
|
63627
|
-
source: debugSource ?? "unknown",
|
|
63628
|
-
runId: debugRunId ?? null,
|
|
63629
|
-
loadRequestId: debugLoadRequestId ?? null,
|
|
63630
|
-
reason: shouldUseReportTaskForReload ? "live internal filters are present" : "no live internal filters are present",
|
|
63631
|
-
filterCount: internalFilters.length
|
|
63632
|
-
});
|
|
63633
63386
|
return loadViaInMemoryEngines({
|
|
63634
63387
|
reportId,
|
|
63635
63388
|
client,
|
|
@@ -63638,9 +63391,6 @@ async function loadReportForUseForm({
|
|
|
63638
63391
|
tenants,
|
|
63639
63392
|
flags,
|
|
63640
63393
|
allowReportTaskBootstrap: shouldUseReportTaskForReload,
|
|
63641
|
-
debugSource,
|
|
63642
|
-
debugRunId,
|
|
63643
|
-
debugLoadRequestId,
|
|
63644
63394
|
draftSessionId
|
|
63645
63395
|
});
|
|
63646
63396
|
}
|
|
@@ -63659,18 +63409,12 @@ async function loadReportForUseForm({
|
|
|
63659
63409
|
function generateDraftSessionId() {
|
|
63660
63410
|
return typeof crypto !== "undefined" && typeof crypto.randomUUID === "function" ? crypto.randomUUID() : `draft-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
|
|
63661
63411
|
}
|
|
63662
|
-
var nextUseReportDebugRunId = 0;
|
|
63663
63412
|
function useReport(reportIdArg, options = {}) {
|
|
63664
63413
|
const propReportId = String(reportIdArg ?? "").trim();
|
|
63665
63414
|
const [createdReportId, setCreatedReportId] = useState41(null);
|
|
63666
63415
|
const effectiveReportId = propReportId || createdReportId || "";
|
|
63667
63416
|
const { eventTracking } = useContext36(EventTrackingContext);
|
|
63668
63417
|
const [draftSessionId, setDraftSessionId] = useState41(generateDraftSessionId);
|
|
63669
|
-
const [taskDebugRunId] = useState41(() => {
|
|
63670
|
-
nextUseReportDebugRunId += 1;
|
|
63671
|
-
return nextUseReportDebugRunId;
|
|
63672
|
-
});
|
|
63673
|
-
const taskDebugLoadRequestIdRef = useRef25(0);
|
|
63674
63418
|
const useInMemoryEngines = options.useInMemoryEngines ?? false;
|
|
63675
63419
|
const restrictFieldOptionsToSelectedDatasources = options.restrictFieldOptionsToSelectedDatasources ?? true;
|
|
63676
63420
|
const reportOverride = options.reportOverride ?? null;
|
|
@@ -63679,7 +63423,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
63679
63423
|
options.destinationDashboardName ?? ""
|
|
63680
63424
|
).trim();
|
|
63681
63425
|
const controlledPagination = options.state?.pagination;
|
|
63682
|
-
const initialPaginationRef =
|
|
63426
|
+
const initialPaginationRef = useRef24({
|
|
63683
63427
|
...getDefaultPaginationState(),
|
|
63684
63428
|
...options.initialState?.pagination ?? {}
|
|
63685
63429
|
});
|
|
@@ -63693,15 +63437,15 @@ function useReport(reportIdArg, options = {}) {
|
|
|
63693
63437
|
);
|
|
63694
63438
|
const pagination = controlledPagination ?? internalPagination;
|
|
63695
63439
|
const paginationActive = paginationInteracted || Boolean(controlledPagination);
|
|
63696
|
-
const paginationRef =
|
|
63440
|
+
const paginationRef = useRef24(pagination);
|
|
63697
63441
|
paginationRef.current = pagination;
|
|
63698
|
-
const onPaginationChangeRef =
|
|
63442
|
+
const onPaginationChangeRef = useRef24(options.onPaginationChange);
|
|
63699
63443
|
onPaginationChangeRef.current = options.onPaginationChange;
|
|
63700
|
-
const controlledPaginationRef =
|
|
63444
|
+
const controlledPaginationRef = useRef24(Boolean(controlledPagination));
|
|
63701
63445
|
controlledPaginationRef.current = Boolean(controlledPagination);
|
|
63702
|
-
const autoResetPageIndexRef =
|
|
63446
|
+
const autoResetPageIndexRef = useRef24(true);
|
|
63703
63447
|
autoResetPageIndexRef.current = options.autoResetPageIndex ?? true;
|
|
63704
|
-
const paginationPageCountRef =
|
|
63448
|
+
const paginationPageCountRef = useRef24(-1);
|
|
63705
63449
|
const applyPaginationUpdate = useCallback5(
|
|
63706
63450
|
(updater, { activate = true } = {}) => {
|
|
63707
63451
|
if (activate) {
|
|
@@ -63770,13 +63514,13 @@ function useReport(reportIdArg, options = {}) {
|
|
|
63770
63514
|
() => setPageIndex(paginationPageCountRef.current - 1),
|
|
63771
63515
|
[setPageIndex]
|
|
63772
63516
|
);
|
|
63773
|
-
const chartPivotHydratedFromSourceRef =
|
|
63774
|
-
const lastPivotHydrateCompletedSourceIdRef =
|
|
63775
|
-
const groupRowsBySetViaSetReportRef =
|
|
63776
|
-
const groupColumnsBySetViaSetReportRef =
|
|
63777
|
-
const dateBucketSetViaSetReportRef =
|
|
63778
|
-
const aggregationStateSetViaSetReportRef =
|
|
63779
|
-
const prevReportIdForChartPivotHydrationRef =
|
|
63517
|
+
const chartPivotHydratedFromSourceRef = useRef24(false);
|
|
63518
|
+
const lastPivotHydrateCompletedSourceIdRef = useRef24(null);
|
|
63519
|
+
const groupRowsBySetViaSetReportRef = useRef24(false);
|
|
63520
|
+
const groupColumnsBySetViaSetReportRef = useRef24(false);
|
|
63521
|
+
const dateBucketSetViaSetReportRef = useRef24(false);
|
|
63522
|
+
const aggregationStateSetViaSetReportRef = useRef24(false);
|
|
63523
|
+
const prevReportIdForChartPivotHydrationRef = useRef24(effectiveReportId);
|
|
63780
63524
|
if (prevReportIdForChartPivotHydrationRef.current !== effectiveReportId) {
|
|
63781
63525
|
prevReportIdForChartPivotHydrationRef.current = effectiveReportId;
|
|
63782
63526
|
chartPivotHydratedFromSourceRef.current = false;
|
|
@@ -63790,11 +63534,11 @@ function useReport(reportIdArg, options = {}) {
|
|
|
63790
63534
|
expandReportBuilderColumnsForFlatTable,
|
|
63791
63535
|
setExpandReportBuilderColumnsForFlatTable
|
|
63792
63536
|
] = useState41(false);
|
|
63793
|
-
const prevPivotStateForColumnExpansionRef =
|
|
63537
|
+
const prevPivotStateForColumnExpansionRef = useRef24(null);
|
|
63794
63538
|
const [sourceReport, setSourceReport] = useState41(
|
|
63795
63539
|
null
|
|
63796
63540
|
);
|
|
63797
|
-
const prevSourceReportIdForPivotHydrationRef =
|
|
63541
|
+
const prevSourceReportIdForPivotHydrationRef = useRef24(null);
|
|
63798
63542
|
{
|
|
63799
63543
|
const currentSourceId = sourceReport ? String(
|
|
63800
63544
|
sourceReport.id ?? sourceReport._id ?? ""
|
|
@@ -63809,6 +63553,9 @@ function useReport(reportIdArg, options = {}) {
|
|
|
63809
63553
|
const [preserveSchemaWideOptions, setPreserveSchemaWideOptions] = useState41(false);
|
|
63810
63554
|
const [initialSchemaScopedTableNames, setInitialSchemaScopedTableNames] = useState41(null);
|
|
63811
63555
|
const [tableColumnsEditedSignature, setTableColumnsEditedSignature] = useState41(null);
|
|
63556
|
+
useEffect31(() => {
|
|
63557
|
+
setTableColumnsEditedSignature(null);
|
|
63558
|
+
}, [effectiveReportId]);
|
|
63812
63559
|
const [chartAxisEdits, setChartAxisEdits] = useState41({});
|
|
63813
63560
|
const [chartVisibilityOverrides, setChartVisibilityOverrides] = useState41({});
|
|
63814
63561
|
const [client] = useContext36(ClientContext);
|
|
@@ -63880,12 +63627,10 @@ function useReport(reportIdArg, options = {}) {
|
|
|
63880
63627
|
const dashboardNameForNewReport = useMemo32(() => {
|
|
63881
63628
|
return [clientDefaultDashboardName, destinationDashboardName].map((entry) => String(entry ?? "").trim()).find((entry) => entry.length > 0) ?? "";
|
|
63882
63629
|
}, [clientDefaultDashboardName, destinationDashboardName]);
|
|
63883
|
-
const filterStackRef =
|
|
63630
|
+
const filterStackRef = useRef24(filterStack);
|
|
63884
63631
|
filterStackRef.current = filterStack;
|
|
63885
63632
|
const resolvedGroupRowsBy = decodePivotGroupOptionValue(groupRowsBy);
|
|
63886
63633
|
const resolvedGroupColumnsBy = decodePivotGroupOptionValue(groupColumnsBy);
|
|
63887
|
-
const useFormRefreshDebugEnabled = isUseFormRefreshDebugEnabled();
|
|
63888
|
-
const useFormFiltersDebugEnabled = isUseFormFiltersDebugEnabled();
|
|
63889
63634
|
useEffect31(() => {
|
|
63890
63635
|
if (propReportId) {
|
|
63891
63636
|
setCreatedReportId(null);
|
|
@@ -63895,8 +63640,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
63895
63640
|
setChartAxisEdits({});
|
|
63896
63641
|
setChartVisibilityOverrides({});
|
|
63897
63642
|
}, [effectiveReportId]);
|
|
63898
|
-
const bootstrapReportTaskUsedForReportIdRef =
|
|
63899
|
-
const schemaScopeInitializedForReportIdRef =
|
|
63643
|
+
const bootstrapReportTaskUsedForReportIdRef = useRef24(null);
|
|
63644
|
+
const schemaScopeInitializedForReportIdRef = useRef24(null);
|
|
63900
63645
|
const initializeSchemaScopeForReport = (report) => {
|
|
63901
63646
|
if (!report) return;
|
|
63902
63647
|
if (schemaScopeInitializedForReportIdRef.current === effectiveReportId)
|
|
@@ -63924,8 +63669,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
63924
63669
|
}
|
|
63925
63670
|
return schemaData.schema ?? [];
|
|
63926
63671
|
}, [schemaData.schema, schemaData.schemaWithCustomFields]);
|
|
63927
|
-
const schemaForReportBuilderStateRef =
|
|
63928
|
-
const customFieldsRef =
|
|
63672
|
+
const schemaForReportBuilderStateRef = useRef24(schemaForReportBuilderState);
|
|
63673
|
+
const customFieldsRef = useRef24(schemaData.customFields);
|
|
63929
63674
|
schemaForReportBuilderStateRef.current = schemaForReportBuilderState;
|
|
63930
63675
|
customFieldsRef.current = schemaData.customFields;
|
|
63931
63676
|
const isBoolAggregationField = useCallback5(
|
|
@@ -64434,26 +64179,6 @@ function useReport(reportIdArg, options = {}) {
|
|
|
64434
64179
|
const filterUniqueValuesEnabled = Boolean(
|
|
64435
64180
|
client && client?.queryEndpoint && filterUniqueValuesRequest && filterUniqueValuesRequest.stringColumns.length > 0
|
|
64436
64181
|
);
|
|
64437
|
-
useEffect31(() => {
|
|
64438
|
-
if (!useFormFiltersDebugEnabled) return;
|
|
64439
|
-
const hasClient = Boolean(client);
|
|
64440
|
-
const hasQueryEndpoint = Boolean(client?.queryEndpoint);
|
|
64441
|
-
const hasRequest = Boolean(filterUniqueValuesRequest);
|
|
64442
|
-
const stringColumnsCount = filterUniqueValuesRequest?.stringColumns.length ?? 0;
|
|
64443
|
-
const stringColumnsByTableCount = filterUniqueValuesRequest?.stringColumnsByTable.length ?? 0;
|
|
64444
|
-
const missingReasons = [];
|
|
64445
|
-
if (!hasClient) missingReasons.push("missing-client");
|
|
64446
|
-
if (!hasQueryEndpoint) missingReasons.push("missing-query-endpoint");
|
|
64447
|
-
if (!hasRequest) missingReasons.push("missing-filterUniqueValuesRequest");
|
|
64448
|
-
if (stringColumnsCount === 0) missingReasons.push("no-string-columns");
|
|
64449
|
-
}, [
|
|
64450
|
-
client,
|
|
64451
|
-
filterUniqueValuesEnabled,
|
|
64452
|
-
filterUniqueValuesRequest,
|
|
64453
|
-
filterUniqueValuesRequestHash,
|
|
64454
|
-
effectiveReportId,
|
|
64455
|
-
useFormFiltersDebugEnabled
|
|
64456
|
-
]);
|
|
64457
64182
|
const filterUniqueValuesQuery = useQuery({
|
|
64458
64183
|
queryKey: [
|
|
64459
64184
|
"useReport",
|
|
@@ -64557,22 +64282,6 @@ function useReport(reportIdArg, options = {}) {
|
|
|
64557
64282
|
filterUniqueValuesQuery.data?.uniqueValuesByColumn,
|
|
64558
64283
|
filterUniqueValuesRequest?.stringColumnsByTable
|
|
64559
64284
|
]);
|
|
64560
|
-
useEffect31(() => {
|
|
64561
|
-
if (!useFormFiltersDebugEnabled) return;
|
|
64562
|
-
if (filterUniqueValuesQuery.status !== "success" && filterUniqueValuesQuery.status !== "error") {
|
|
64563
|
-
return;
|
|
64564
|
-
}
|
|
64565
|
-
const uniqueValuesByColumn = filterUniqueValuesQuery.data?.uniqueValuesByColumn ?? {};
|
|
64566
|
-
const uniqueValuesByColumnRecord = uniqueValuesByColumn && typeof uniqueValuesByColumn === "object" ? uniqueValuesByColumn : {};
|
|
64567
|
-
}, [
|
|
64568
|
-
backendUniqueValuesByFieldName,
|
|
64569
|
-
filterUniqueValuesEnabled,
|
|
64570
|
-
filterUniqueValuesQuery.data,
|
|
64571
|
-
filterUniqueValuesQuery.status,
|
|
64572
|
-
filterUniqueValuesRequest,
|
|
64573
|
-
effectiveReportId,
|
|
64574
|
-
useFormFiltersDebugEnabled
|
|
64575
|
-
]);
|
|
64576
64285
|
const filterValueOptionsByFieldName = useMemo32(() => {
|
|
64577
64286
|
const optionsByField = /* @__PURE__ */ new Map();
|
|
64578
64287
|
const selectedMultiselectByField = collectSelectedStringMultiselectValuesByField(queryFilters);
|
|
@@ -64740,8 +64449,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
64740
64449
|
queryBuilderFieldConfigByName,
|
|
64741
64450
|
queryFilters
|
|
64742
64451
|
]);
|
|
64743
|
-
const filterFieldsStableReportIdRef =
|
|
64744
|
-
const filterFieldsStableCacheRef =
|
|
64452
|
+
const filterFieldsStableReportIdRef = useRef24("");
|
|
64453
|
+
const filterFieldsStableCacheRef = useRef24([]);
|
|
64745
64454
|
const filterFields = useMemo32(() => {
|
|
64746
64455
|
const rid = String(effectiveReportId ?? "");
|
|
64747
64456
|
if (filterFieldsStableReportIdRef.current !== rid) {
|
|
@@ -64973,8 +64682,6 @@ function useReport(reportIdArg, options = {}) {
|
|
|
64973
64682
|
clientHash
|
|
64974
64683
|
}),
|
|
64975
64684
|
queryFn: createUseFormQueryFn(async () => {
|
|
64976
|
-
taskDebugLoadRequestIdRef.current += 1;
|
|
64977
|
-
const debugLoadRequestId = taskDebugLoadRequestIdRef.current;
|
|
64978
64685
|
const allowReportTaskBootstrap = !initialReportBuilderState && bootstrapReportTaskUsedForReportIdRef.current !== effectiveReportId;
|
|
64979
64686
|
const loadTargetId = String(effectiveReportId ?? "").trim();
|
|
64980
64687
|
const sourceReportIdentity = String(
|
|
@@ -64998,9 +64705,6 @@ function useReport(reportIdArg, options = {}) {
|
|
|
64998
64705
|
customFields: customFieldsRef.current,
|
|
64999
64706
|
dashboardName: resolvedSourceDashboardName,
|
|
65000
64707
|
useInMemoryEngines,
|
|
65001
|
-
debugSource: "initial-load",
|
|
65002
|
-
debugRunId: taskDebugRunId,
|
|
65003
|
-
debugLoadRequestId,
|
|
65004
64708
|
draftSessionId: draftSessionId || void 0
|
|
65005
64709
|
});
|
|
65006
64710
|
return loadResult;
|
|
@@ -65340,19 +65044,6 @@ function useReport(reportIdArg, options = {}) {
|
|
|
65340
65044
|
resolveCache.set(fieldName, resolved);
|
|
65341
65045
|
return resolved;
|
|
65342
65046
|
}
|
|
65343
|
-
if (isUseFormFiltersDebugEnabled()) {
|
|
65344
|
-
console.error(
|
|
65345
|
-
"[useForm-debug] normalizeQueryBuilderFieldNameForConfig ambiguous",
|
|
65346
|
-
{
|
|
65347
|
-
fieldName,
|
|
65348
|
-
candidateKeys: candidates.map(([key]) => key),
|
|
65349
|
-
preferredTableNames: Array.from(preferredTableNames),
|
|
65350
|
-
primaryTableName,
|
|
65351
|
-
effectiveReportBuilderTableNames,
|
|
65352
|
-
baseReportBuilderTableNames
|
|
65353
|
-
}
|
|
65354
|
-
);
|
|
65355
|
-
}
|
|
65356
65047
|
return fieldName;
|
|
65357
65048
|
};
|
|
65358
65049
|
}, [
|
|
@@ -65630,7 +65321,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
65630
65321
|
() => stableSerializeForQueryKey(effectiveReportBuilderState),
|
|
65631
65322
|
[effectiveReportBuilderState]
|
|
65632
65323
|
);
|
|
65633
|
-
const prevPaginationResetStateHashRef =
|
|
65324
|
+
const prevPaginationResetStateHashRef = useRef24(null);
|
|
65634
65325
|
useEffect31(() => {
|
|
65635
65326
|
const prevHash = prevPaginationResetStateHashRef.current;
|
|
65636
65327
|
prevPaginationResetStateHashRef.current = effectiveReportBuilderStateHash;
|
|
@@ -65744,8 +65435,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
65744
65435
|
}, [
|
|
65745
65436
|
effectiveReportId,
|
|
65746
65437
|
tableRefreshQuery.data,
|
|
65747
|
-
tableRefreshQueryEnabled
|
|
65748
|
-
useFormRefreshDebugEnabled
|
|
65438
|
+
tableRefreshQueryEnabled
|
|
65749
65439
|
]);
|
|
65750
65440
|
const chartTypes = useMemo32(() => {
|
|
65751
65441
|
return getChartTypeOptions2({ pivot: pivotState });
|
|
@@ -66308,7 +65998,6 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66308
65998
|
...sourceReport,
|
|
66309
65999
|
reportBuilderState: effectiveReportBuilderState
|
|
66310
66000
|
};
|
|
66311
|
-
taskDebugLoadRequestIdRef.current += 1;
|
|
66312
66001
|
const pivotRefreshResult = await loadReportForUseForm({
|
|
66313
66002
|
reportId: effectiveReportId,
|
|
66314
66003
|
initialReportBuilderState: effectiveReportBuilderState,
|
|
@@ -66324,9 +66013,6 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66324
66013
|
customFields: schemaData.customFields,
|
|
66325
66014
|
dashboardName: resolvedSourceDashboardName,
|
|
66326
66015
|
useInMemoryEngines,
|
|
66327
|
-
debugSource: "pivot-refresh",
|
|
66328
|
-
debugRunId: taskDebugRunId,
|
|
66329
|
-
debugLoadRequestId: taskDebugLoadRequestIdRef.current,
|
|
66330
66016
|
draftSessionId: draftSessionId || void 0
|
|
66331
66017
|
});
|
|
66332
66018
|
return pivotRefreshResult;
|
|
@@ -66490,8 +66176,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66490
66176
|
pivotTableDataRefreshQuery.data,
|
|
66491
66177
|
pivotTableDataRefreshQuery.status,
|
|
66492
66178
|
pivotTableDataRefreshQueryEnabled,
|
|
66493
|
-
effectiveReportId
|
|
66494
|
-
useFormRefreshDebugEnabled
|
|
66179
|
+
effectiveReportId
|
|
66495
66180
|
]);
|
|
66496
66181
|
useEffect31(() => {
|
|
66497
66182
|
if (!pivotRefreshQueryEnabled) return;
|
|
@@ -66543,8 +66228,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66543
66228
|
pivotRefreshQuery.data,
|
|
66544
66229
|
pivotRefreshQuery.status,
|
|
66545
66230
|
pivotRefreshQueryEnabled,
|
|
66546
|
-
effectiveReportId
|
|
66547
|
-
useFormRefreshDebugEnabled
|
|
66231
|
+
effectiveReportId
|
|
66548
66232
|
]);
|
|
66549
66233
|
const chartData = useMemo32(() => {
|
|
66550
66234
|
if (!sourceReport) return void 0;
|
|
@@ -66552,8 +66236,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66552
66236
|
const chartPivotForDisplay = nextPivot ?? (!chartPivotHydratedFromSourceRef.current ? sourceReport.pivot ?? null : null);
|
|
66553
66237
|
const rowCountForChart = chartPivotForDisplay ? sourceReport.pivotRowCount ?? (Array.isArray(sourceReport.pivotRows) ? sourceReport.pivotRows.length : sourceReport.rowCount) : useInMemoryEngines ? rowsForChart.length : sourceReport.rowCount;
|
|
66554
66238
|
const referencedTablesForChart = effectiveReportBuilderState?.tables.map((table2) => table2.name).filter((name2) => Boolean(name2));
|
|
66555
|
-
const pivotRowsForChart = Array.isArray(sourceReport.pivotRows)
|
|
66556
|
-
const rowCountForChartResolved = chartPivotForDisplay ? pivotRowsForChart
|
|
66239
|
+
const pivotRowsForChart = Array.isArray(sourceReport.pivotRows) ? sourceReport.pivotRows : void 0;
|
|
66240
|
+
const rowCountForChartResolved = chartPivotForDisplay ? Array.isArray(pivotRowsForChart) ? pivotRowsForChart.length : rowCountForChart : rowCountForChart;
|
|
66557
66241
|
const chartDataPayload = {
|
|
66558
66242
|
...sourceReport,
|
|
66559
66243
|
rows: rowsForChart,
|
|
@@ -66564,15 +66248,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66564
66248
|
referencedTables: referencedTablesForChart && referencedTablesForChart.length > 0 ? referencedTablesForChart : sourceReport.referencedTables,
|
|
66565
66249
|
pivotRows: pivotRowsForChart,
|
|
66566
66250
|
pivotColumns: sourceReport.pivotColumns,
|
|
66567
|
-
pivotRowCount: pivotRowsForChart.length
|
|
66251
|
+
pivotRowCount: Array.isArray(pivotRowsForChart) ? pivotRowsForChart.length : sourceReport.pivotRowCount
|
|
66568
66252
|
};
|
|
66569
|
-
logUseFormPivotShapeDebug("chartData:memo", {
|
|
66570
|
-
reportId: sourceReport.id,
|
|
66571
|
-
detailRowsLength: rowsForChart.length,
|
|
66572
|
-
pivotRowsIsArray: Array.isArray(sourceReport.pivotRows),
|
|
66573
|
-
pivotRowsLength: Array.isArray(sourceReport.pivotRows) ? sourceReport.pivotRows.length : null,
|
|
66574
|
-
hasNextPivot: Boolean(nextPivot)
|
|
66575
|
-
});
|
|
66576
66253
|
return chartDataPayload;
|
|
66577
66254
|
}, [
|
|
66578
66255
|
sourceReport,
|
|
@@ -66884,26 +66561,6 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66884
66561
|
xAxisLabel: resolvedXAxisLabel
|
|
66885
66562
|
});
|
|
66886
66563
|
}
|
|
66887
|
-
logUseFormPivotShapeDebug("chart:formatting(yAxis+pivotColumns)", {
|
|
66888
|
-
chartType: baseChart.chartType,
|
|
66889
|
-
pivotRowField: baseChart.pivot?.rowField,
|
|
66890
|
-
xAxisField: resolvedXAxisField,
|
|
66891
|
-
xAxisFormat: resolvedXAxisFormat,
|
|
66892
|
-
yAxisFieldsForDisplay: (resolvedYAxisFieldsForDisplay ?? []).map((y) => ({
|
|
66893
|
-
field: y.field,
|
|
66894
|
-
format: y.format,
|
|
66895
|
-
label: y.label
|
|
66896
|
-
})),
|
|
66897
|
-
pivotColumnsSample: (baseChart.pivotColumns ?? []).slice(0, 12).map((c) => ({
|
|
66898
|
-
field: c.field,
|
|
66899
|
-
format: c.format,
|
|
66900
|
-
label: c.label
|
|
66901
|
-
})),
|
|
66902
|
-
mergedColumnFormatsSample: (columns2 ?? baseChart.columns ?? []).slice(0, 12).map((c) => ({
|
|
66903
|
-
field: c.field,
|
|
66904
|
-
format: c.format
|
|
66905
|
-
}))
|
|
66906
|
-
});
|
|
66907
66564
|
return {
|
|
66908
66565
|
...baseChart,
|
|
66909
66566
|
xAxisField: resolvedXAxisField,
|
|
@@ -66919,6 +66576,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66919
66576
|
resolvedXAxisLabel,
|
|
66920
66577
|
resolvedYAxisFieldsForDisplay
|
|
66921
66578
|
]);
|
|
66579
|
+
const pivotDateFilterRangeCacheRef = useRef24({ key: "", min: null, max: null });
|
|
66922
66580
|
const filterOptions = useMemo32(() => {
|
|
66923
66581
|
const out = [];
|
|
66924
66582
|
for (const [field, values] of filterValueOptionsByFieldName) {
|
|
@@ -66934,25 +66592,43 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66934
66592
|
if (rowField && isDateType(String(pivot?.rowFieldType ?? ""))) {
|
|
66935
66593
|
const field = pivot?.rowFieldTable ? `${pivot.rowFieldTable}.${rowField}` : rowField;
|
|
66936
66594
|
const bucket = dateBucket || pivot?.dateBucket || "month";
|
|
66937
|
-
const
|
|
66595
|
+
const labelsByRaw = /* @__PURE__ */ new Map();
|
|
66596
|
+
const cacheKey = `${String(effectiveReportId ?? "")}\0${field}\0${bucket}`;
|
|
66597
|
+
if (pivotDateFilterRangeCacheRef.current.key !== cacheKey) {
|
|
66598
|
+
pivotDateFilterRangeCacheRef.current = {
|
|
66599
|
+
key: cacheKey,
|
|
66600
|
+
min: null,
|
|
66601
|
+
max: null
|
|
66602
|
+
};
|
|
66603
|
+
}
|
|
66938
66604
|
for (const row of chart?.rows ?? []) {
|
|
66939
66605
|
const record = row;
|
|
66940
66606
|
const raw = record.__quillRawDate;
|
|
66941
66607
|
if (raw == null || raw === "") continue;
|
|
66942
66608
|
const key = String(raw);
|
|
66943
|
-
|
|
66944
|
-
|
|
66609
|
+
const timestamp = new Date(key).getTime();
|
|
66610
|
+
if (Number.isNaN(timestamp)) continue;
|
|
66611
|
+
labelsByRaw.set(key, String(record[rowField] ?? key));
|
|
66612
|
+
const cachedMin = pivotDateFilterRangeCacheRef.current.min;
|
|
66613
|
+
const cachedMax = pivotDateFilterRangeCacheRef.current.max;
|
|
66614
|
+
if (cachedMin == null || timestamp < new Date(cachedMin).getTime()) {
|
|
66615
|
+
pivotDateFilterRangeCacheRef.current.min = key;
|
|
66616
|
+
}
|
|
66617
|
+
if (cachedMax == null || timestamp > new Date(cachedMax).getTime()) {
|
|
66618
|
+
pivotDateFilterRangeCacheRef.current.max = key;
|
|
66945
66619
|
}
|
|
66946
66620
|
}
|
|
66621
|
+
const { min: min2, max: max2 } = pivotDateFilterRangeCacheRef.current;
|
|
66622
|
+
const options2 = min2 && max2 ? buildPivotDateBucketStarts({ min: min2, max: max2 }, bucket).map((value) => ({
|
|
66623
|
+
value,
|
|
66624
|
+
label: labelsByRaw.get(value) ?? getDateString(value, void 0, bucket)
|
|
66625
|
+
})) : [];
|
|
66947
66626
|
out.push({
|
|
66948
66627
|
field,
|
|
66949
66628
|
fieldType: "date",
|
|
66950
66629
|
operator: "inBucket",
|
|
66951
66630
|
dateBucket: bucket,
|
|
66952
|
-
options:
|
|
66953
|
-
value,
|
|
66954
|
-
label: byRaw.get(value) ?? value
|
|
66955
|
-
}))
|
|
66631
|
+
options: options2
|
|
66956
66632
|
});
|
|
66957
66633
|
}
|
|
66958
66634
|
return out;
|
|
@@ -66960,6 +66636,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66960
66636
|
chart?.pivot,
|
|
66961
66637
|
chart?.rows,
|
|
66962
66638
|
dateBucket,
|
|
66639
|
+
effectiveReportId,
|
|
66963
66640
|
filterValueOptionsByFieldName
|
|
66964
66641
|
]);
|
|
66965
66642
|
const chartForUi = useMemo32(() => {
|
|
@@ -67189,19 +66866,21 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67189
66866
|
xAxisOptions,
|
|
67190
66867
|
yAxisOptions
|
|
67191
66868
|
]);
|
|
67192
|
-
const tableFormatCacheRef =
|
|
66869
|
+
const tableFormatCacheRef = useRef24(/* @__PURE__ */ new Map());
|
|
67193
66870
|
const tableFormatMerge = useMemo32(
|
|
67194
66871
|
() => mergeDisplayAndSourceForTableFormats({
|
|
67195
66872
|
effectiveReportBuilderTableNames,
|
|
67196
66873
|
scopedSchemaColumns,
|
|
67197
66874
|
displayColumns,
|
|
67198
|
-
sourceReport
|
|
66875
|
+
sourceReport,
|
|
66876
|
+
includeSelectedSchemaFallback: tableColumnsEditedSignature !== null
|
|
67199
66877
|
}),
|
|
67200
66878
|
[
|
|
67201
66879
|
effectiveReportBuilderTableNames,
|
|
67202
66880
|
scopedSchemaColumns,
|
|
67203
66881
|
displayColumns,
|
|
67204
|
-
sourceReport
|
|
66882
|
+
sourceReport,
|
|
66883
|
+
tableColumnsEditedSignature
|
|
67205
66884
|
]
|
|
67206
66885
|
);
|
|
67207
66886
|
const table = useMemo32(() => {
|
|
@@ -67211,7 +66890,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67211
66890
|
effectiveReportBuilderTableNames,
|
|
67212
66891
|
scopedSchemaColumns,
|
|
67213
66892
|
displayColumns,
|
|
67214
|
-
sourceReport
|
|
66893
|
+
sourceReport,
|
|
66894
|
+
includeSelectedSchemaFallback: tableColumnsEditedSignature !== null
|
|
67215
66895
|
});
|
|
67216
66896
|
const pivotRowFieldForTable = String(
|
|
67217
66897
|
sourceReport?.pivot?.rowField ?? ""
|
|
@@ -67312,6 +66992,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67312
66992
|
resolvedYAxisFieldsForDisplay,
|
|
67313
66993
|
scopedSchemaColumns,
|
|
67314
66994
|
sourceReport,
|
|
66995
|
+
tableColumnsEditedSignature,
|
|
67315
66996
|
pagination,
|
|
67316
66997
|
paginationActive,
|
|
67317
66998
|
paginationPageCount,
|
|
@@ -67564,7 +67245,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67564
67245
|
sourceReport?.columns,
|
|
67565
67246
|
tableFormatMerge
|
|
67566
67247
|
]);
|
|
67567
|
-
const tableColumnSettingsCoalesceRef =
|
|
67248
|
+
const tableColumnSettingsCoalesceRef = useRef24(
|
|
67568
67249
|
/* @__PURE__ */ new Map()
|
|
67569
67250
|
);
|
|
67570
67251
|
useLayoutEffect4(() => {
|
|
@@ -67806,6 +67487,17 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67806
67487
|
};
|
|
67807
67488
|
applyReportChange = (nextState) => {
|
|
67808
67489
|
const effectiveNextState = nextState;
|
|
67490
|
+
const normalizedRequestedDisplayColumns = effectiveNextState.columns === void 0 ? void 0 : normalizeColumnsInput(
|
|
67491
|
+
effectiveNextState.columns,
|
|
67492
|
+
columnIdentifierLookup
|
|
67493
|
+
);
|
|
67494
|
+
const visibleDisplayColumnKeys = new Set(
|
|
67495
|
+
activeTableColumnIds.map((id) => columnIdentifierLookup.get(id)).filter((column) => Boolean(column)).map((column) => toReportBuilderColumnKey(column)).filter(Boolean)
|
|
67496
|
+
);
|
|
67497
|
+
const addedRequestedDisplayColumns = (normalizedRequestedDisplayColumns ?? []).filter((column) => {
|
|
67498
|
+
const key = toReportBuilderColumnKey(column);
|
|
67499
|
+
return Boolean(key) && !visibleDisplayColumnKeys.has(key);
|
|
67500
|
+
});
|
|
67809
67501
|
if (effectiveNextState.showLegend !== void 0) {
|
|
67810
67502
|
setChartVisibilityOverrides((previous) => ({
|
|
67811
67503
|
...previous,
|
|
@@ -67901,7 +67593,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67901
67593
|
dispatchFormRuntime({
|
|
67902
67594
|
type: "APPLY_SET_REPORT",
|
|
67903
67595
|
touchesPivotState: dispatchTouchesPivot,
|
|
67904
|
-
shouldRefreshExpandedTableData: shouldRefreshExpandedTableData || isDatasourceUpdate,
|
|
67596
|
+
shouldRefreshExpandedTableData: shouldRefreshExpandedTableData || isDatasourceUpdate || addedRequestedDisplayColumns.length > 0,
|
|
67905
67597
|
queuePromoteColumnToRow,
|
|
67906
67598
|
updater: (prev) => {
|
|
67907
67599
|
const next = {
|
|
@@ -67967,19 +67659,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67967
67659
|
}
|
|
67968
67660
|
}
|
|
67969
67661
|
if (effectiveNextState.columns !== void 0) {
|
|
67970
|
-
const normalizedDisplayColumns =
|
|
67971
|
-
|
|
67972
|
-
columnIdentifierLookup
|
|
67973
|
-
);
|
|
67974
|
-
const previousDisplayColumnKeys = new Set(
|
|
67975
|
-
next.columns.map((column) => toReportBuilderColumnKey(column)).filter(Boolean)
|
|
67976
|
-
);
|
|
67977
|
-
const addedDisplayColumns = normalizedDisplayColumns.filter(
|
|
67978
|
-
(column) => {
|
|
67979
|
-
const key = toReportBuilderColumnKey(column);
|
|
67980
|
-
return Boolean(key) && !previousDisplayColumnKeys.has(key);
|
|
67981
|
-
}
|
|
67982
|
-
);
|
|
67662
|
+
const normalizedDisplayColumns = normalizedRequestedDisplayColumns ?? [];
|
|
67663
|
+
const addedDisplayColumns = addedRequestedDisplayColumns;
|
|
67983
67664
|
next.columns = normalizedDisplayColumns;
|
|
67984
67665
|
if (addedDisplayColumns.length > 0) {
|
|
67985
67666
|
const queryTableNames = new Set(
|
|
@@ -68382,6 +68063,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
68382
68063
|
} catch (error) {
|
|
68383
68064
|
console.error("[useForm] setFilters swallowed error", {
|
|
68384
68065
|
error: error instanceof Error ? error.message : String(error),
|
|
68066
|
+
stack: error instanceof Error ? error.stack : void 0,
|
|
68385
68067
|
requestedRules: (resolved?.rules ?? []).map((rule) => ({
|
|
68386
68068
|
table: rule?.table,
|
|
68387
68069
|
field: rule?.field,
|
|
@@ -68882,9 +68564,9 @@ function Chat({
|
|
|
68882
68564
|
const [inputError, setInputError] = useState42("");
|
|
68883
68565
|
const [isLoading, setIsLoading] = useState42(false);
|
|
68884
68566
|
const [model, setModel] = useState42("gemini-3-flash-preview");
|
|
68885
|
-
const containerRef =
|
|
68886
|
-
const textareaRef =
|
|
68887
|
-
const abortControllerRef =
|
|
68567
|
+
const containerRef = useRef25(null);
|
|
68568
|
+
const textareaRef = useRef25(null);
|
|
68569
|
+
const abortControllerRef = useRef25(null);
|
|
68888
68570
|
useEffect32(() => {
|
|
68889
68571
|
if (!containerRef.current) {
|
|
68890
68572
|
return;
|
|
@@ -69319,7 +69001,7 @@ function Chat({
|
|
|
69319
69001
|
}
|
|
69320
69002
|
|
|
69321
69003
|
// src/hooks/useReportFilterDraft.ts
|
|
69322
|
-
import { useCallback as useCallback6, useMemo as useMemo34, useRef as
|
|
69004
|
+
import { useCallback as useCallback6, useMemo as useMemo34, useRef as useRef26, useState as useState43 } from "react";
|
|
69323
69005
|
var normalizeOperatorKey = (operator) => String(operator ?? "").trim().toLowerCase().replace(/[_\s]+/g, "");
|
|
69324
69006
|
var defaultFilterRuleValueForOperator = (operator) => {
|
|
69325
69007
|
const key = normalizeOperatorKey(operator);
|
|
@@ -69358,12 +69040,12 @@ function useReportFilterDraft(args) {
|
|
|
69358
69040
|
const committed = queryBuilderFiltersForEditor(
|
|
69359
69041
|
isQueryBuilderDisplayGroup(committedFilters) ? committedFilters : EMPTY_COMMITTED_FILTERS
|
|
69360
69042
|
);
|
|
69361
|
-
const committedRef =
|
|
69043
|
+
const committedRef = useRef26(committed);
|
|
69362
69044
|
committedRef.current = committed;
|
|
69363
|
-
const setFiltersRef =
|
|
69045
|
+
const setFiltersRef = useRef26(setFilters);
|
|
69364
69046
|
setFiltersRef.current = setFilters;
|
|
69365
|
-
const lastNonEmptyFieldsRef =
|
|
69366
|
-
const prevReportIdForFieldsRef =
|
|
69047
|
+
const lastNonEmptyFieldsRef = useRef26([]);
|
|
69048
|
+
const prevReportIdForFieldsRef = useRef26(reportId);
|
|
69367
69049
|
if (prevReportIdForFieldsRef.current !== reportId) {
|
|
69368
69050
|
prevReportIdForFieldsRef.current = reportId;
|
|
69369
69051
|
lastNonEmptyFieldsRef.current = [];
|
|
@@ -69385,7 +69067,7 @@ function useReportFilterDraft(args) {
|
|
|
69385
69067
|
const [draftQuery, setDraftQuery] = useState43(committed);
|
|
69386
69068
|
const [hasUnappliedFilterChanges, setHasUnappliedFilterChanges] = useState43(false);
|
|
69387
69069
|
const draftResetKey = `${reportId}|${committedSignature}|${resetEpoch}`;
|
|
69388
|
-
const prevDraftResetKeyRef =
|
|
69070
|
+
const prevDraftResetKeyRef = useRef26(draftResetKey);
|
|
69389
69071
|
if (prevDraftResetKeyRef.current !== draftResetKey) {
|
|
69390
69072
|
prevDraftResetKeyRef.current = draftResetKey;
|
|
69391
69073
|
setDraftQuery(committed);
|
|
@@ -69478,7 +69160,7 @@ function useReportQueryBuilder(args) {
|
|
|
69478
69160
|
import {
|
|
69479
69161
|
useContext as useContext38,
|
|
69480
69162
|
useLayoutEffect as useLayoutEffect5,
|
|
69481
|
-
useRef as
|
|
69163
|
+
useRef as useRef27,
|
|
69482
69164
|
useState as useState44
|
|
69483
69165
|
} from "react";
|
|
69484
69166
|
import { jsx as jsx89, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
@@ -69579,7 +69261,7 @@ function ReportDetail({
|
|
|
69579
69261
|
const isTableChart = type === "table";
|
|
69580
69262
|
const useDetailTableFromUseForm = isTableChart && !isPivotTableChartConfig(chart);
|
|
69581
69263
|
const showBottomRawTable = !isTableChart;
|
|
69582
|
-
const chartSlotRef =
|
|
69264
|
+
const chartSlotRef = useRef27(null);
|
|
69583
69265
|
const [chartHeightPx, setChartHeightPx] = useState44(360);
|
|
69584
69266
|
useLayoutEffect5(() => {
|
|
69585
69267
|
const el = chartSlotRef.current;
|