@quillsql/react 2.16.54 → 2.16.55
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 +50 -17
- package/dist/index.d.cts +11 -11
- package/dist/index.d.ts +11 -11
- package/dist/index.js +58 -25
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -60775,7 +60775,7 @@ function buildAggregationLabel(aggregation, report) {
|
|
|
60775
60775
|
return report?.pivot?.columnField ? "Count" : `Count ${snakeAndCamelCaseToTitleCase(tableNames[0] ?? "table")}`;
|
|
60776
60776
|
}
|
|
60777
60777
|
const rawTarget = aggregation.valueField ?? (tableNames.length > 0 ? tableNames.join(", ") : "table");
|
|
60778
|
-
const target =
|
|
60778
|
+
const target = aggregation.valueField && report ? resolveValueFieldDisplayLabel(report, aggregation.valueField) : toTitleCaseLabel(rawTarget);
|
|
60779
60779
|
if (String(aggregationType).toLowerCase() === "percentage") {
|
|
60780
60780
|
const valueField2 = String(
|
|
60781
60781
|
aggregation.valueField2 ?? ""
|
|
@@ -61925,6 +61925,20 @@ function coerceTableColumnFormatToAxisValue(raw) {
|
|
|
61925
61925
|
if (byLabel) return byLabel.value;
|
|
61926
61926
|
return t;
|
|
61927
61927
|
}
|
|
61928
|
+
function resolveTableColumnDefaultFormat({
|
|
61929
|
+
selectedFormat,
|
|
61930
|
+
sourceFormat,
|
|
61931
|
+
isDateColumn,
|
|
61932
|
+
preserveStringFormat = false
|
|
61933
|
+
}) {
|
|
61934
|
+
const explicitFormat = String(selectedFormat ?? "").trim();
|
|
61935
|
+
if (explicitFormat) return explicitFormat;
|
|
61936
|
+
const currentFormat = String(sourceFormat ?? "").trim() || "string";
|
|
61937
|
+
if (isDateColumn && currentFormat === "string" && !preserveStringFormat) {
|
|
61938
|
+
return "MMM_dd_yyyy";
|
|
61939
|
+
}
|
|
61940
|
+
return currentFormat;
|
|
61941
|
+
}
|
|
61928
61942
|
function mergeDisplayAndSourceForTableFormats(args) {
|
|
61929
61943
|
const {
|
|
61930
61944
|
effectiveReportBuilderTableNames,
|
|
@@ -62048,10 +62062,26 @@ function mergeDisplayAndSourceForTableFormats(args) {
|
|
|
62048
62062
|
).trim()}`;
|
|
62049
62063
|
if (!seenKey || seenColumnsByTableAndField.has(seenKey)) continue;
|
|
62050
62064
|
seenColumnsByTableAndField.add(seenKey);
|
|
62065
|
+
const matchedTable = String(
|
|
62066
|
+
selection.table || matchedColumn.table || ""
|
|
62067
|
+
).trim();
|
|
62068
|
+
const schemaColumn = scopedSchemaColumns.find((column) => {
|
|
62069
|
+
const sameField = String(column.field ?? "").trim() === matchedColumn.field;
|
|
62070
|
+
const sameTable = !matchedTable || String(column.table ?? "").trim() === matchedTable;
|
|
62071
|
+
return sameField && sameTable;
|
|
62072
|
+
});
|
|
62073
|
+
const isDateColumn = isDateType(String(schemaColumn?.fieldType ?? "").trim()) || String(schemaColumn?.jsType ?? "").trim().toLowerCase() === "date";
|
|
62074
|
+
const pivotRowField = String(sourceReport?.pivot?.rowField ?? "").trim();
|
|
62075
|
+
const isPivotDateBucketString = isDateColumn && matchedColumn.field === pivotRowField && String(sourceReport?.xAxisFormat ?? "").trim() === "string";
|
|
62051
62076
|
const merged = {
|
|
62052
62077
|
...matchedColumn,
|
|
62053
62078
|
...selection.alias ? { label: selection.alias } : {},
|
|
62054
|
-
|
|
62079
|
+
format: resolveTableColumnDefaultFormat({
|
|
62080
|
+
selectedFormat: selection.format,
|
|
62081
|
+
sourceFormat: matchedColumn.format,
|
|
62082
|
+
isDateColumn,
|
|
62083
|
+
preserveStringFormat: isPivotDateBucketString
|
|
62084
|
+
})
|
|
62055
62085
|
};
|
|
62056
62086
|
selectedColumnsForTable.push(merged);
|
|
62057
62087
|
const id = encodeColumnOptionValue(selection.table, selection.field);
|
|
@@ -62124,6 +62154,7 @@ var CHART_TYPES2 = [
|
|
|
62124
62154
|
"US map",
|
|
62125
62155
|
"World map"
|
|
62126
62156
|
];
|
|
62157
|
+
var DEFAULT_CHART_TYPE = "table";
|
|
62127
62158
|
function getChartTypeOptions2(formData) {
|
|
62128
62159
|
const viableCharts = CHART_TYPES2;
|
|
62129
62160
|
if (formData.pivot && !formData.pivot.rowField) {
|
|
@@ -64749,6 +64780,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
64749
64780
|
effectiveReportId,
|
|
64750
64781
|
chartPivotHydrationEpoch
|
|
64751
64782
|
]);
|
|
64783
|
+
const hasDatePivotRow = Boolean(String(pivotState?.rowField ?? "").trim()) && isDateType(String(pivotState?.rowFieldType ?? ""));
|
|
64752
64784
|
(0, import_react61.useEffect)(() => {
|
|
64753
64785
|
const previous = prevPivotStateForColumnExpansionRef.current;
|
|
64754
64786
|
if (previous && !pivotState) {
|
|
@@ -65232,6 +65264,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
65232
65264
|
const chartTypes = (0, import_react61.useMemo)(() => {
|
|
65233
65265
|
return getChartTypeOptions2({ pivot: pivotState });
|
|
65234
65266
|
}, [pivotState]);
|
|
65267
|
+
const resolvedChartType = chartTypes.find((option) => option.value === chartType)?.value ?? chartTypes.find((option) => option.value === sourceReport?.chartType)?.value ?? chartTypes.find((option) => option.value === DEFAULT_CHART_TYPE)?.value ?? chartTypes[0]?.value ?? DEFAULT_CHART_TYPE;
|
|
65235
65268
|
(0, import_react61.useEffect)(() => {
|
|
65236
65269
|
if (!sourceReport) {
|
|
65237
65270
|
return;
|
|
@@ -66068,7 +66101,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66068
66101
|
const registerOption = (fieldRaw, labelRaw, formatRaw) => {
|
|
66069
66102
|
const field = String(fieldRaw ?? "").trim();
|
|
66070
66103
|
if (!field || optionsByField.has(field)) return;
|
|
66071
|
-
const
|
|
66104
|
+
const rawLabel = String(labelRaw ?? "").trim();
|
|
66105
|
+
const label = !rawLabel || rawLabel === field ? toTitleCaseLabel(field) : rawLabel;
|
|
66072
66106
|
const format9 = toAxisFormat(formatRaw, "string");
|
|
66073
66107
|
optionsByField.set(field, {
|
|
66074
66108
|
value: field,
|
|
@@ -66187,7 +66221,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66187
66221
|
if (!field) return null;
|
|
66188
66222
|
const option = chartAxisOptionByField.get(field);
|
|
66189
66223
|
if (!option) return null;
|
|
66190
|
-
const
|
|
66224
|
+
const rawLabel = String(yAxisFieldRaw?.label ?? "").trim() || option.label;
|
|
66225
|
+
const label = rawLabel === field ? toTitleCaseLabel(field) : rawLabel;
|
|
66191
66226
|
const format9 = toAxisFormat(yAxisFieldRaw?.format, option.format);
|
|
66192
66227
|
return {
|
|
66193
66228
|
field,
|
|
@@ -66290,7 +66325,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66290
66325
|
if (chartAxisEdits.xAxisLabel !== void 0) {
|
|
66291
66326
|
return String(chartAxisEdits.xAxisLabel).trim();
|
|
66292
66327
|
}
|
|
66293
|
-
return defaultXLabel;
|
|
66328
|
+
return !defaultXLabel || defaultXLabel === resolvedXAxisField ? toTitleCaseLabel(resolvedXAxisField) : defaultXLabel;
|
|
66294
66329
|
}, [
|
|
66295
66330
|
chartAxesBaseChart?.xAxisLabel,
|
|
66296
66331
|
chartAxisEdits.xAxisLabel,
|
|
@@ -67723,7 +67758,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67723
67758
|
if (effectiveNextState.limit !== void 0)
|
|
67724
67759
|
next.limit = effectiveNextState.limit;
|
|
67725
67760
|
if (effectiveNextState.chartType !== void 0)
|
|
67726
|
-
next.chartType = effectiveNextState.chartType
|
|
67761
|
+
next.chartType = effectiveNextState.chartType;
|
|
67727
67762
|
const normalizedNext = processPivotState(next, {
|
|
67728
67763
|
nextState: effectiveNextState,
|
|
67729
67764
|
promoteColumnToRow: false,
|
|
@@ -67885,7 +67920,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67885
67920
|
String(effectiveReportBuilderState.tables[0].name)
|
|
67886
67921
|
) : "New report",
|
|
67887
67922
|
// Match chart rendering (`chartData`): form `chartType` wins over stale `sourceReport`.
|
|
67888
|
-
chartType:
|
|
67923
|
+
chartType: resolvedChartType,
|
|
67889
67924
|
dashboardName: dashboardNameForNewReport,
|
|
67890
67925
|
reportBuilderState: effectiveReportBuilderState,
|
|
67891
67926
|
pivot: effectiveReportBuilderState.pivot ?? null,
|
|
@@ -67907,7 +67942,6 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67907
67942
|
});
|
|
67908
67943
|
return resp;
|
|
67909
67944
|
}, [
|
|
67910
|
-
chartType,
|
|
67911
67945
|
client,
|
|
67912
67946
|
dashboardNameForNewReport,
|
|
67913
67947
|
draftSessionId,
|
|
@@ -67918,6 +67952,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67918
67952
|
resolvedXAxisField,
|
|
67919
67953
|
resolvedXAxisFormat,
|
|
67920
67954
|
resolvedXAxisLabel,
|
|
67955
|
+
resolvedChartType,
|
|
67921
67956
|
resolvedYAxisFields,
|
|
67922
67957
|
sourceReport,
|
|
67923
67958
|
setDraftSessionId,
|
|
@@ -67945,7 +67980,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67945
67980
|
groupColumnsBy,
|
|
67946
67981
|
groupColumnsByOptions,
|
|
67947
67982
|
dateBucket,
|
|
67948
|
-
dateBucketOptions: PIVOT_DATE_BUCKET_OPTIONS,
|
|
67983
|
+
dateBucketOptions: hasDatePivotRow ? PIVOT_DATE_BUCKET_OPTIONS : [],
|
|
67949
67984
|
/** Encoded selection per aggregation slot (`'sum:transactions::amount'`, `'count:transactions'`, `''` = placeholder). Update via `setReport({ aggregations: nextStringArray })`. */
|
|
67950
67985
|
aggregations: aggregationValues,
|
|
67951
67986
|
/** Flat aggregation pick list shared by all slots; always contains every non-empty `aggregations` entry. */
|
|
@@ -67953,7 +67988,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67953
67988
|
aggregationDescriptionOptions: cleanedAggregations,
|
|
67954
67989
|
sort: cleanedSort,
|
|
67955
67990
|
sortOptions,
|
|
67956
|
-
chartType,
|
|
67991
|
+
chartType: resolvedChartType,
|
|
67957
67992
|
chartTypeOptions: chartTypes,
|
|
67958
67993
|
/** Selected tabular columns in display order. */
|
|
67959
67994
|
columns: tableColumnValues,
|
|
@@ -68169,7 +68204,7 @@ function ChatChartCard({
|
|
|
68169
68204
|
label: "Chart type",
|
|
68170
68205
|
width: 200,
|
|
68171
68206
|
options: chartTypeOptions,
|
|
68172
|
-
onChange: (e) => setReport({ chartType: e.target.value
|
|
68207
|
+
onChange: (e) => setReport({ chartType: e.target.value })
|
|
68173
68208
|
}
|
|
68174
68209
|
)
|
|
68175
68210
|
]
|
|
@@ -68859,12 +68894,10 @@ function useReportFilterDraft(args) {
|
|
|
68859
68894
|
const [draftQuery, setDraftQuery] = (0, import_react64.useState)(committed);
|
|
68860
68895
|
const [hasUnappliedFilterChanges, setHasUnappliedFilterChanges] = (0, import_react64.useState)(false);
|
|
68861
68896
|
const draftResetKey = `${reportId}|${committedSignature}|${resetEpoch}`;
|
|
68862
|
-
|
|
68863
|
-
|
|
68864
|
-
|
|
68865
|
-
|
|
68866
|
-
if (hasUnappliedFilterChanges) setHasUnappliedFilterChanges(false);
|
|
68867
|
-
}
|
|
68897
|
+
(0, import_react64.useEffect)(() => {
|
|
68898
|
+
setDraftQuery(committedRef.current);
|
|
68899
|
+
setHasUnappliedFilterChanges(false);
|
|
68900
|
+
}, [draftResetKey]);
|
|
68868
68901
|
const filterDraftKey = `${draftResetKey}|${fieldsSignature}`;
|
|
68869
68902
|
const handleQueryChange = (0, import_react64.useCallback)((next) => {
|
|
68870
68903
|
if (!isQueryBuilderDisplayGroup(next)) return;
|
package/dist/index.d.cts
CHANGED
|
@@ -2982,6 +2982,12 @@ type FilterFieldOptions = {
|
|
|
2982
2982
|
type SetFiltersInput = QueryBuilderRuleGroup | ((prev: QueryBuilderRuleGroup) => QueryBuilderRuleGroup);
|
|
2983
2983
|
/** Maps table column format dropdown values to persisted report column `format` (used by `columnActions.update`). */
|
|
2984
2984
|
declare function tableColumnFormatFromUiSelection(raw: string): string;
|
|
2985
|
+
declare const CHART_TYPES: readonly ["column", "stacked", "line", "table", "metric", "gauge", "bar", "pie", "US map", "World map"];
|
|
2986
|
+
type ChartType = (typeof CHART_TYPES)[number];
|
|
2987
|
+
type ChartTypeOption = {
|
|
2988
|
+
label: string;
|
|
2989
|
+
value: ChartType;
|
|
2990
|
+
};
|
|
2985
2991
|
type SetReportChartAxesInput = {
|
|
2986
2992
|
xAxis?: Partial<{
|
|
2987
2993
|
field: string;
|
|
@@ -3023,7 +3029,7 @@ interface SetReportBuilderInput {
|
|
|
3023
3029
|
aggregations?: string[] | AggregationStateItem[] | string;
|
|
3024
3030
|
sort?: ReportBuilderSort[] | string;
|
|
3025
3031
|
limit?: ReportBuilderLimit | null;
|
|
3026
|
-
chartType?:
|
|
3032
|
+
chartType?: ChartType;
|
|
3027
3033
|
/** When set, updates chart legend visibility (same source as `showLegend` from `useReport`). */
|
|
3028
3034
|
showLegend?: boolean;
|
|
3029
3035
|
/** Update the X-axis value returned by `useReport`. */
|
|
@@ -3208,11 +3214,8 @@ declare function useReport(reportIdArg?: string, options?: UseReportOptions): {
|
|
|
3208
3214
|
label: string;
|
|
3209
3215
|
value: string;
|
|
3210
3216
|
}[];
|
|
3211
|
-
chartType:
|
|
3212
|
-
chartTypeOptions:
|
|
3213
|
-
label: string;
|
|
3214
|
-
value: string;
|
|
3215
|
-
}[];
|
|
3217
|
+
chartType: "table" | "column" | "metric" | "gauge" | "stacked" | "line" | "bar" | "pie" | "US map" | "World map";
|
|
3218
|
+
chartTypeOptions: ChartTypeOption[];
|
|
3216
3219
|
/** Selected tabular columns in display order. */
|
|
3217
3220
|
columns: ReportColumnValue[];
|
|
3218
3221
|
/** Pivot table columns only allow label and format changes. */
|
|
@@ -3267,10 +3270,7 @@ declare function useReport(reportIdArg?: string, options?: UseReportOptions): {
|
|
|
3267
3270
|
/** True while `report-builder-unique-values` runs for filter value options (not chart/table load). */
|
|
3268
3271
|
filterUniqueValuesLoading: boolean;
|
|
3269
3272
|
limit: ReportBuilderLimit | null;
|
|
3270
|
-
chartTypes:
|
|
3271
|
-
label: string;
|
|
3272
|
-
value: string;
|
|
3273
|
-
}[];
|
|
3273
|
+
chartTypes: ChartTypeOption[];
|
|
3274
3274
|
columnsOptions: ColumnSelectionOption[];
|
|
3275
3275
|
tableColumnOptions: ColumnSelectionOption[];
|
|
3276
3276
|
setReport: (nextState: SetReportBuilderInput) => void;
|
|
@@ -4452,4 +4452,4 @@ interface ReportTableProps {
|
|
|
4452
4452
|
}
|
|
4453
4453
|
declare const ReportTable: ({ reportBuilder, TableComponent, }: ReportTableProps) => react_jsx_runtime.JSX.Element;
|
|
4454
4454
|
|
|
4455
|
-
export { ALL_TENANTS, AddColumns, AddFilters, AddLimit, AddPivot, AddSort, type AxisFormat$1 as AxisFormat, type BarChartInteraction, type ButtonComponentProps, Calculation, type ChangelogEntry, Chart, ChartDisplay, ChartEditor, type ChartEditorProps, type ChartProps, Chat, type ChatModelId, type ChatProps, type CheckboxComponentProps, type ColorMapType, type Column$1 as Column, type ColumnActions, type ColumnSelectionOption, type ContainerComponentProps, DEFAULT_PAGE_SIZE, DEFAULT_USE_REPORT_ROWS_PER_REQUEST, Dashboard, type DashboardDateFilter, type DashboardFilter, DashboardFilterType, DashboardLegacy, type DashboardLegacyProps, type DashboardMultiFilter, type DashboardProps, type DashboardSectionComponentProps, type DashboardSingleFilter, type DashboardTenantFilter, DateOperator, type DateRange, type DateRangePickerComponentProps, type DateRangePickerOption, type DeleteButtonComponentProps, type DraggableColumnComponentProps, type EventBreadcrumb, type EventContext, type EventError, type EventMetadata, type EventTracking, type EventUser, type Filter, type FilterDraftQueryBuilderProps, type FilterFieldOptions, type FilterPopoverComponentProps, FilterType, type HeaderComponentProps, type HeaderProps, type InternalDashboardDateFilter, type InternalDashboardTenantFilter, type InternalFilter, type LabelComponentProps, type LimitPopoverComponentProps, type ModalComponentProps, NullOperator, NumberOperator, type OnChangeFn, type Option, type PaginationState, type Pivot, type PivotAggregation, type PivotDateBucket, type PivotDimensionFilter, type PopoverComponentProps, type QueryBuilderDisplayGroup, type QueryBuilderDisplayRule, type QuillCustomInterval, type QuillCustomRelativeInterval, type QuillCustomRepeatingInterval, type QuillCustomStaticInterval, type QuillFetchOptions, type QuillPreviousMonthInterval, type QuillPreviousQuarterInterval, QuillProvider, type QuillProviderProps, type QuillReport, type QuillReportProps, type QuillResults, type QuillTheme, type QuillWeekInterval, ReportBuilder$1 as ReportBuilder, type ReportBuilderColumn, type ReportBuilderLimit, type ReportBuilderProps, type ReportBuilderSort, type ReportBuilderState, type ReportColumnInput, type ReportColumnValue, ReportDetail, type ReportDetailProps, type ReportDetailTable, ReportTable, type ReportXAxisValue, type ReportYAxisFieldValue, type ReportYAxisValue, SINGLE_TENANT, SQLEditor, type SQLEditorProps, SaveReport, SchemaListComponent, type SelectColumnComponentProps, type SelectComponentProps, type SetFiltersInput, type SetReportBuilderInput, type SetReportChartAxesInput, type SidebarComponentProps, type SidebarHeadingComponentProps, type SortPopoverComponentProps, StaticChart, type StaticChartProps, StringOperator, Table, type TableComponentProps, type TableProps, type TabsComponentProps, type TextComponentProps, type TextInputComponentProps, ThemeContext, type Updater, type UseDashboardReload, type UseFormQueryBuilderField, type UseFormQueryBuilderProps, type UseReportFilterDraft, type UseReportQueryBuilder, areQueryBuilderFilterDraftsDirty, countFilterRules, defaultFilterRuleValueForOperator, downloadCSV, quillFormat as format, isQueryBuilderDisplayGroup, isQueryBuilderDisplayRule, normalizeRelativeDateRules, prepareQueryBuilderFiltersForSet, queryBuilderFiltersForEditor, quillFetch, stripQueryBuilderTransientFields, tableColumnFormatFromUiSelection, useAllReports, useAskQuill, useChangelogRefresh, useDashboard, useDashboardInternal, useDashboardReport, useDashboardReports, useDashboards, useExport, useMemoizedRows, useQuill, useReport, useReportBuilder, useReportQueryBuilder, useReports, useTenants, useVirtualTables };
|
|
4455
|
+
export { ALL_TENANTS, AddColumns, AddFilters, AddLimit, AddPivot, AddSort, type AxisFormat$1 as AxisFormat, type BarChartInteraction, type ButtonComponentProps, Calculation, type ChangelogEntry, Chart, ChartDisplay, ChartEditor, type ChartEditorProps, type ChartProps, type ChartType, type ChartTypeOption, Chat, type ChatModelId, type ChatProps, type CheckboxComponentProps, type ColorMapType, type Column$1 as Column, type ColumnActions, type ColumnSelectionOption, type ContainerComponentProps, DEFAULT_PAGE_SIZE, DEFAULT_USE_REPORT_ROWS_PER_REQUEST, Dashboard, type DashboardDateFilter, type DashboardFilter, DashboardFilterType, DashboardLegacy, type DashboardLegacyProps, type DashboardMultiFilter, type DashboardProps, type DashboardSectionComponentProps, type DashboardSingleFilter, type DashboardTenantFilter, DateOperator, type DateRange, type DateRangePickerComponentProps, type DateRangePickerOption, type DeleteButtonComponentProps, type DraggableColumnComponentProps, type EventBreadcrumb, type EventContext, type EventError, type EventMetadata, type EventTracking, type EventUser, type Filter, type FilterDraftQueryBuilderProps, type FilterFieldOptions, type FilterPopoverComponentProps, FilterType, type HeaderComponentProps, type HeaderProps, type InternalDashboardDateFilter, type InternalDashboardTenantFilter, type InternalFilter, type LabelComponentProps, type LimitPopoverComponentProps, type ModalComponentProps, NullOperator, NumberOperator, type OnChangeFn, type Option, type PaginationState, type Pivot, type PivotAggregation, type PivotDateBucket, type PivotDimensionFilter, type PopoverComponentProps, type QueryBuilderDisplayGroup, type QueryBuilderDisplayRule, type QuillCustomInterval, type QuillCustomRelativeInterval, type QuillCustomRepeatingInterval, type QuillCustomStaticInterval, type QuillFetchOptions, type QuillPreviousMonthInterval, type QuillPreviousQuarterInterval, QuillProvider, type QuillProviderProps, type QuillReport, type QuillReportProps, type QuillResults, type QuillTheme, type QuillWeekInterval, ReportBuilder$1 as ReportBuilder, type ReportBuilderColumn, type ReportBuilderLimit, type ReportBuilderProps, type ReportBuilderSort, type ReportBuilderState, type ReportColumnInput, type ReportColumnValue, ReportDetail, type ReportDetailProps, type ReportDetailTable, ReportTable, type ReportXAxisValue, type ReportYAxisFieldValue, type ReportYAxisValue, SINGLE_TENANT, SQLEditor, type SQLEditorProps, SaveReport, SchemaListComponent, type SelectColumnComponentProps, type SelectComponentProps, type SetFiltersInput, type SetReportBuilderInput, type SetReportChartAxesInput, type SidebarComponentProps, type SidebarHeadingComponentProps, type SortPopoverComponentProps, StaticChart, type StaticChartProps, StringOperator, Table, type TableComponentProps, type TableProps, type TabsComponentProps, type TextComponentProps, type TextInputComponentProps, ThemeContext, type Updater, type UseDashboardReload, type UseFormQueryBuilderField, type UseFormQueryBuilderProps, type UseReportFilterDraft, type UseReportQueryBuilder, areQueryBuilderFilterDraftsDirty, countFilterRules, defaultFilterRuleValueForOperator, downloadCSV, quillFormat as format, isQueryBuilderDisplayGroup, isQueryBuilderDisplayRule, normalizeRelativeDateRules, prepareQueryBuilderFiltersForSet, queryBuilderFiltersForEditor, quillFetch, stripQueryBuilderTransientFields, tableColumnFormatFromUiSelection, useAllReports, useAskQuill, useChangelogRefresh, useDashboard, useDashboardInternal, useDashboardReport, useDashboardReports, useDashboards, useExport, useMemoizedRows, useQuill, useReport, useReportBuilder, useReportQueryBuilder, useReports, useTenants, useVirtualTables };
|
package/dist/index.d.ts
CHANGED
|
@@ -2982,6 +2982,12 @@ type FilterFieldOptions = {
|
|
|
2982
2982
|
type SetFiltersInput = QueryBuilderRuleGroup | ((prev: QueryBuilderRuleGroup) => QueryBuilderRuleGroup);
|
|
2983
2983
|
/** Maps table column format dropdown values to persisted report column `format` (used by `columnActions.update`). */
|
|
2984
2984
|
declare function tableColumnFormatFromUiSelection(raw: string): string;
|
|
2985
|
+
declare const CHART_TYPES: readonly ["column", "stacked", "line", "table", "metric", "gauge", "bar", "pie", "US map", "World map"];
|
|
2986
|
+
type ChartType = (typeof CHART_TYPES)[number];
|
|
2987
|
+
type ChartTypeOption = {
|
|
2988
|
+
label: string;
|
|
2989
|
+
value: ChartType;
|
|
2990
|
+
};
|
|
2985
2991
|
type SetReportChartAxesInput = {
|
|
2986
2992
|
xAxis?: Partial<{
|
|
2987
2993
|
field: string;
|
|
@@ -3023,7 +3029,7 @@ interface SetReportBuilderInput {
|
|
|
3023
3029
|
aggregations?: string[] | AggregationStateItem[] | string;
|
|
3024
3030
|
sort?: ReportBuilderSort[] | string;
|
|
3025
3031
|
limit?: ReportBuilderLimit | null;
|
|
3026
|
-
chartType?:
|
|
3032
|
+
chartType?: ChartType;
|
|
3027
3033
|
/** When set, updates chart legend visibility (same source as `showLegend` from `useReport`). */
|
|
3028
3034
|
showLegend?: boolean;
|
|
3029
3035
|
/** Update the X-axis value returned by `useReport`. */
|
|
@@ -3208,11 +3214,8 @@ declare function useReport(reportIdArg?: string, options?: UseReportOptions): {
|
|
|
3208
3214
|
label: string;
|
|
3209
3215
|
value: string;
|
|
3210
3216
|
}[];
|
|
3211
|
-
chartType:
|
|
3212
|
-
chartTypeOptions:
|
|
3213
|
-
label: string;
|
|
3214
|
-
value: string;
|
|
3215
|
-
}[];
|
|
3217
|
+
chartType: "table" | "column" | "metric" | "gauge" | "stacked" | "line" | "bar" | "pie" | "US map" | "World map";
|
|
3218
|
+
chartTypeOptions: ChartTypeOption[];
|
|
3216
3219
|
/** Selected tabular columns in display order. */
|
|
3217
3220
|
columns: ReportColumnValue[];
|
|
3218
3221
|
/** Pivot table columns only allow label and format changes. */
|
|
@@ -3267,10 +3270,7 @@ declare function useReport(reportIdArg?: string, options?: UseReportOptions): {
|
|
|
3267
3270
|
/** True while `report-builder-unique-values` runs for filter value options (not chart/table load). */
|
|
3268
3271
|
filterUniqueValuesLoading: boolean;
|
|
3269
3272
|
limit: ReportBuilderLimit | null;
|
|
3270
|
-
chartTypes:
|
|
3271
|
-
label: string;
|
|
3272
|
-
value: string;
|
|
3273
|
-
}[];
|
|
3273
|
+
chartTypes: ChartTypeOption[];
|
|
3274
3274
|
columnsOptions: ColumnSelectionOption[];
|
|
3275
3275
|
tableColumnOptions: ColumnSelectionOption[];
|
|
3276
3276
|
setReport: (nextState: SetReportBuilderInput) => void;
|
|
@@ -4452,4 +4452,4 @@ interface ReportTableProps {
|
|
|
4452
4452
|
}
|
|
4453
4453
|
declare const ReportTable: ({ reportBuilder, TableComponent, }: ReportTableProps) => react_jsx_runtime.JSX.Element;
|
|
4454
4454
|
|
|
4455
|
-
export { ALL_TENANTS, AddColumns, AddFilters, AddLimit, AddPivot, AddSort, type AxisFormat$1 as AxisFormat, type BarChartInteraction, type ButtonComponentProps, Calculation, type ChangelogEntry, Chart, ChartDisplay, ChartEditor, type ChartEditorProps, type ChartProps, Chat, type ChatModelId, type ChatProps, type CheckboxComponentProps, type ColorMapType, type Column$1 as Column, type ColumnActions, type ColumnSelectionOption, type ContainerComponentProps, DEFAULT_PAGE_SIZE, DEFAULT_USE_REPORT_ROWS_PER_REQUEST, Dashboard, type DashboardDateFilter, type DashboardFilter, DashboardFilterType, DashboardLegacy, type DashboardLegacyProps, type DashboardMultiFilter, type DashboardProps, type DashboardSectionComponentProps, type DashboardSingleFilter, type DashboardTenantFilter, DateOperator, type DateRange, type DateRangePickerComponentProps, type DateRangePickerOption, type DeleteButtonComponentProps, type DraggableColumnComponentProps, type EventBreadcrumb, type EventContext, type EventError, type EventMetadata, type EventTracking, type EventUser, type Filter, type FilterDraftQueryBuilderProps, type FilterFieldOptions, type FilterPopoverComponentProps, FilterType, type HeaderComponentProps, type HeaderProps, type InternalDashboardDateFilter, type InternalDashboardTenantFilter, type InternalFilter, type LabelComponentProps, type LimitPopoverComponentProps, type ModalComponentProps, NullOperator, NumberOperator, type OnChangeFn, type Option, type PaginationState, type Pivot, type PivotAggregation, type PivotDateBucket, type PivotDimensionFilter, type PopoverComponentProps, type QueryBuilderDisplayGroup, type QueryBuilderDisplayRule, type QuillCustomInterval, type QuillCustomRelativeInterval, type QuillCustomRepeatingInterval, type QuillCustomStaticInterval, type QuillFetchOptions, type QuillPreviousMonthInterval, type QuillPreviousQuarterInterval, QuillProvider, type QuillProviderProps, type QuillReport, type QuillReportProps, type QuillResults, type QuillTheme, type QuillWeekInterval, ReportBuilder$1 as ReportBuilder, type ReportBuilderColumn, type ReportBuilderLimit, type ReportBuilderProps, type ReportBuilderSort, type ReportBuilderState, type ReportColumnInput, type ReportColumnValue, ReportDetail, type ReportDetailProps, type ReportDetailTable, ReportTable, type ReportXAxisValue, type ReportYAxisFieldValue, type ReportYAxisValue, SINGLE_TENANT, SQLEditor, type SQLEditorProps, SaveReport, SchemaListComponent, type SelectColumnComponentProps, type SelectComponentProps, type SetFiltersInput, type SetReportBuilderInput, type SetReportChartAxesInput, type SidebarComponentProps, type SidebarHeadingComponentProps, type SortPopoverComponentProps, StaticChart, type StaticChartProps, StringOperator, Table, type TableComponentProps, type TableProps, type TabsComponentProps, type TextComponentProps, type TextInputComponentProps, ThemeContext, type Updater, type UseDashboardReload, type UseFormQueryBuilderField, type UseFormQueryBuilderProps, type UseReportFilterDraft, type UseReportQueryBuilder, areQueryBuilderFilterDraftsDirty, countFilterRules, defaultFilterRuleValueForOperator, downloadCSV, quillFormat as format, isQueryBuilderDisplayGroup, isQueryBuilderDisplayRule, normalizeRelativeDateRules, prepareQueryBuilderFiltersForSet, queryBuilderFiltersForEditor, quillFetch, stripQueryBuilderTransientFields, tableColumnFormatFromUiSelection, useAllReports, useAskQuill, useChangelogRefresh, useDashboard, useDashboardInternal, useDashboardReport, useDashboardReports, useDashboards, useExport, useMemoizedRows, useQuill, useReport, useReportBuilder, useReportQueryBuilder, useReports, useTenants, useVirtualTables };
|
|
4455
|
+
export { ALL_TENANTS, AddColumns, AddFilters, AddLimit, AddPivot, AddSort, type AxisFormat$1 as AxisFormat, type BarChartInteraction, type ButtonComponentProps, Calculation, type ChangelogEntry, Chart, ChartDisplay, ChartEditor, type ChartEditorProps, type ChartProps, type ChartType, type ChartTypeOption, Chat, type ChatModelId, type ChatProps, type CheckboxComponentProps, type ColorMapType, type Column$1 as Column, type ColumnActions, type ColumnSelectionOption, type ContainerComponentProps, DEFAULT_PAGE_SIZE, DEFAULT_USE_REPORT_ROWS_PER_REQUEST, Dashboard, type DashboardDateFilter, type DashboardFilter, DashboardFilterType, DashboardLegacy, type DashboardLegacyProps, type DashboardMultiFilter, type DashboardProps, type DashboardSectionComponentProps, type DashboardSingleFilter, type DashboardTenantFilter, DateOperator, type DateRange, type DateRangePickerComponentProps, type DateRangePickerOption, type DeleteButtonComponentProps, type DraggableColumnComponentProps, type EventBreadcrumb, type EventContext, type EventError, type EventMetadata, type EventTracking, type EventUser, type Filter, type FilterDraftQueryBuilderProps, type FilterFieldOptions, type FilterPopoverComponentProps, FilterType, type HeaderComponentProps, type HeaderProps, type InternalDashboardDateFilter, type InternalDashboardTenantFilter, type InternalFilter, type LabelComponentProps, type LimitPopoverComponentProps, type ModalComponentProps, NullOperator, NumberOperator, type OnChangeFn, type Option, type PaginationState, type Pivot, type PivotAggregation, type PivotDateBucket, type PivotDimensionFilter, type PopoverComponentProps, type QueryBuilderDisplayGroup, type QueryBuilderDisplayRule, type QuillCustomInterval, type QuillCustomRelativeInterval, type QuillCustomRepeatingInterval, type QuillCustomStaticInterval, type QuillFetchOptions, type QuillPreviousMonthInterval, type QuillPreviousQuarterInterval, QuillProvider, type QuillProviderProps, type QuillReport, type QuillReportProps, type QuillResults, type QuillTheme, type QuillWeekInterval, ReportBuilder$1 as ReportBuilder, type ReportBuilderColumn, type ReportBuilderLimit, type ReportBuilderProps, type ReportBuilderSort, type ReportBuilderState, type ReportColumnInput, type ReportColumnValue, ReportDetail, type ReportDetailProps, type ReportDetailTable, ReportTable, type ReportXAxisValue, type ReportYAxisFieldValue, type ReportYAxisValue, SINGLE_TENANT, SQLEditor, type SQLEditorProps, SaveReport, SchemaListComponent, type SelectColumnComponentProps, type SelectComponentProps, type SetFiltersInput, type SetReportBuilderInput, type SetReportChartAxesInput, type SidebarComponentProps, type SidebarHeadingComponentProps, type SortPopoverComponentProps, StaticChart, type StaticChartProps, StringOperator, Table, type TableComponentProps, type TableProps, type TabsComponentProps, type TextComponentProps, type TextInputComponentProps, ThemeContext, type Updater, type UseDashboardReload, type UseFormQueryBuilderField, type UseFormQueryBuilderProps, type UseReportFilterDraft, type UseReportQueryBuilder, areQueryBuilderFilterDraftsDirty, countFilterRules, defaultFilterRuleValueForOperator, downloadCSV, quillFormat as format, isQueryBuilderDisplayGroup, isQueryBuilderDisplayRule, normalizeRelativeDateRules, prepareQueryBuilderFiltersForSet, queryBuilderFiltersForEditor, quillFetch, stripQueryBuilderTransientFields, tableColumnFormatFromUiSelection, useAllReports, useAskQuill, useChangelogRefresh, useDashboard, useDashboardInternal, useDashboardReport, useDashboardReports, useDashboards, useExport, useMemoizedRows, useQuill, useReport, useReportBuilder, useReportQueryBuilder, useReports, useTenants, useVirtualTables };
|
package/dist/index.js
CHANGED
|
@@ -60987,7 +60987,7 @@ function buildAggregationLabel(aggregation, report) {
|
|
|
60987
60987
|
return report?.pivot?.columnField ? "Count" : `Count ${snakeAndCamelCaseToTitleCase(tableNames[0] ?? "table")}`;
|
|
60988
60988
|
}
|
|
60989
60989
|
const rawTarget = aggregation.valueField ?? (tableNames.length > 0 ? tableNames.join(", ") : "table");
|
|
60990
|
-
const target =
|
|
60990
|
+
const target = aggregation.valueField && report ? resolveValueFieldDisplayLabel(report, aggregation.valueField) : toTitleCaseLabel(rawTarget);
|
|
60991
60991
|
if (String(aggregationType).toLowerCase() === "percentage") {
|
|
60992
60992
|
const valueField2 = String(
|
|
60993
60993
|
aggregation.valueField2 ?? ""
|
|
@@ -62137,6 +62137,20 @@ function coerceTableColumnFormatToAxisValue(raw) {
|
|
|
62137
62137
|
if (byLabel) return byLabel.value;
|
|
62138
62138
|
return t;
|
|
62139
62139
|
}
|
|
62140
|
+
function resolveTableColumnDefaultFormat({
|
|
62141
|
+
selectedFormat,
|
|
62142
|
+
sourceFormat,
|
|
62143
|
+
isDateColumn,
|
|
62144
|
+
preserveStringFormat = false
|
|
62145
|
+
}) {
|
|
62146
|
+
const explicitFormat = String(selectedFormat ?? "").trim();
|
|
62147
|
+
if (explicitFormat) return explicitFormat;
|
|
62148
|
+
const currentFormat = String(sourceFormat ?? "").trim() || "string";
|
|
62149
|
+
if (isDateColumn && currentFormat === "string" && !preserveStringFormat) {
|
|
62150
|
+
return "MMM_dd_yyyy";
|
|
62151
|
+
}
|
|
62152
|
+
return currentFormat;
|
|
62153
|
+
}
|
|
62140
62154
|
function mergeDisplayAndSourceForTableFormats(args) {
|
|
62141
62155
|
const {
|
|
62142
62156
|
effectiveReportBuilderTableNames,
|
|
@@ -62260,10 +62274,26 @@ function mergeDisplayAndSourceForTableFormats(args) {
|
|
|
62260
62274
|
).trim()}`;
|
|
62261
62275
|
if (!seenKey || seenColumnsByTableAndField.has(seenKey)) continue;
|
|
62262
62276
|
seenColumnsByTableAndField.add(seenKey);
|
|
62277
|
+
const matchedTable = String(
|
|
62278
|
+
selection.table || matchedColumn.table || ""
|
|
62279
|
+
).trim();
|
|
62280
|
+
const schemaColumn = scopedSchemaColumns.find((column) => {
|
|
62281
|
+
const sameField = String(column.field ?? "").trim() === matchedColumn.field;
|
|
62282
|
+
const sameTable = !matchedTable || String(column.table ?? "").trim() === matchedTable;
|
|
62283
|
+
return sameField && sameTable;
|
|
62284
|
+
});
|
|
62285
|
+
const isDateColumn = isDateType(String(schemaColumn?.fieldType ?? "").trim()) || String(schemaColumn?.jsType ?? "").trim().toLowerCase() === "date";
|
|
62286
|
+
const pivotRowField = String(sourceReport?.pivot?.rowField ?? "").trim();
|
|
62287
|
+
const isPivotDateBucketString = isDateColumn && matchedColumn.field === pivotRowField && String(sourceReport?.xAxisFormat ?? "").trim() === "string";
|
|
62263
62288
|
const merged = {
|
|
62264
62289
|
...matchedColumn,
|
|
62265
62290
|
...selection.alias ? { label: selection.alias } : {},
|
|
62266
|
-
|
|
62291
|
+
format: resolveTableColumnDefaultFormat({
|
|
62292
|
+
selectedFormat: selection.format,
|
|
62293
|
+
sourceFormat: matchedColumn.format,
|
|
62294
|
+
isDateColumn,
|
|
62295
|
+
preserveStringFormat: isPivotDateBucketString
|
|
62296
|
+
})
|
|
62267
62297
|
};
|
|
62268
62298
|
selectedColumnsForTable.push(merged);
|
|
62269
62299
|
const id = encodeColumnOptionValue(selection.table, selection.field);
|
|
@@ -62336,6 +62366,7 @@ var CHART_TYPES2 = [
|
|
|
62336
62366
|
"US map",
|
|
62337
62367
|
"World map"
|
|
62338
62368
|
];
|
|
62369
|
+
var DEFAULT_CHART_TYPE = "table";
|
|
62339
62370
|
function getChartTypeOptions2(formData) {
|
|
62340
62371
|
const viableCharts = CHART_TYPES2;
|
|
62341
62372
|
if (formData.pivot && !formData.pivot.rowField) {
|
|
@@ -64961,6 +64992,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
64961
64992
|
effectiveReportId,
|
|
64962
64993
|
chartPivotHydrationEpoch
|
|
64963
64994
|
]);
|
|
64995
|
+
const hasDatePivotRow = Boolean(String(pivotState?.rowField ?? "").trim()) && isDateType(String(pivotState?.rowFieldType ?? ""));
|
|
64964
64996
|
useEffect31(() => {
|
|
64965
64997
|
const previous = prevPivotStateForColumnExpansionRef.current;
|
|
64966
64998
|
if (previous && !pivotState) {
|
|
@@ -65444,6 +65476,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
65444
65476
|
const chartTypes = useMemo32(() => {
|
|
65445
65477
|
return getChartTypeOptions2({ pivot: pivotState });
|
|
65446
65478
|
}, [pivotState]);
|
|
65479
|
+
const resolvedChartType = chartTypes.find((option) => option.value === chartType)?.value ?? chartTypes.find((option) => option.value === sourceReport?.chartType)?.value ?? chartTypes.find((option) => option.value === DEFAULT_CHART_TYPE)?.value ?? chartTypes[0]?.value ?? DEFAULT_CHART_TYPE;
|
|
65447
65480
|
useEffect31(() => {
|
|
65448
65481
|
if (!sourceReport) {
|
|
65449
65482
|
return;
|
|
@@ -66280,7 +66313,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66280
66313
|
const registerOption = (fieldRaw, labelRaw, formatRaw) => {
|
|
66281
66314
|
const field = String(fieldRaw ?? "").trim();
|
|
66282
66315
|
if (!field || optionsByField.has(field)) return;
|
|
66283
|
-
const
|
|
66316
|
+
const rawLabel = String(labelRaw ?? "").trim();
|
|
66317
|
+
const label = !rawLabel || rawLabel === field ? toTitleCaseLabel(field) : rawLabel;
|
|
66284
66318
|
const format9 = toAxisFormat(formatRaw, "string");
|
|
66285
66319
|
optionsByField.set(field, {
|
|
66286
66320
|
value: field,
|
|
@@ -66399,7 +66433,8 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66399
66433
|
if (!field) return null;
|
|
66400
66434
|
const option = chartAxisOptionByField.get(field);
|
|
66401
66435
|
if (!option) return null;
|
|
66402
|
-
const
|
|
66436
|
+
const rawLabel = String(yAxisFieldRaw?.label ?? "").trim() || option.label;
|
|
66437
|
+
const label = rawLabel === field ? toTitleCaseLabel(field) : rawLabel;
|
|
66403
66438
|
const format9 = toAxisFormat(yAxisFieldRaw?.format, option.format);
|
|
66404
66439
|
return {
|
|
66405
66440
|
field,
|
|
@@ -66502,7 +66537,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
66502
66537
|
if (chartAxisEdits.xAxisLabel !== void 0) {
|
|
66503
66538
|
return String(chartAxisEdits.xAxisLabel).trim();
|
|
66504
66539
|
}
|
|
66505
|
-
return defaultXLabel;
|
|
66540
|
+
return !defaultXLabel || defaultXLabel === resolvedXAxisField ? toTitleCaseLabel(resolvedXAxisField) : defaultXLabel;
|
|
66506
66541
|
}, [
|
|
66507
66542
|
chartAxesBaseChart?.xAxisLabel,
|
|
66508
66543
|
chartAxisEdits.xAxisLabel,
|
|
@@ -67935,7 +67970,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
67935
67970
|
if (effectiveNextState.limit !== void 0)
|
|
67936
67971
|
next.limit = effectiveNextState.limit;
|
|
67937
67972
|
if (effectiveNextState.chartType !== void 0)
|
|
67938
|
-
next.chartType = effectiveNextState.chartType
|
|
67973
|
+
next.chartType = effectiveNextState.chartType;
|
|
67939
67974
|
const normalizedNext = processPivotState(next, {
|
|
67940
67975
|
nextState: effectiveNextState,
|
|
67941
67976
|
promoteColumnToRow: false,
|
|
@@ -68097,7 +68132,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
68097
68132
|
String(effectiveReportBuilderState.tables[0].name)
|
|
68098
68133
|
) : "New report",
|
|
68099
68134
|
// Match chart rendering (`chartData`): form `chartType` wins over stale `sourceReport`.
|
|
68100
|
-
chartType:
|
|
68135
|
+
chartType: resolvedChartType,
|
|
68101
68136
|
dashboardName: dashboardNameForNewReport,
|
|
68102
68137
|
reportBuilderState: effectiveReportBuilderState,
|
|
68103
68138
|
pivot: effectiveReportBuilderState.pivot ?? null,
|
|
@@ -68119,7 +68154,6 @@ function useReport(reportIdArg, options = {}) {
|
|
|
68119
68154
|
});
|
|
68120
68155
|
return resp;
|
|
68121
68156
|
}, [
|
|
68122
|
-
chartType,
|
|
68123
68157
|
client,
|
|
68124
68158
|
dashboardNameForNewReport,
|
|
68125
68159
|
draftSessionId,
|
|
@@ -68130,6 +68164,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
68130
68164
|
resolvedXAxisField,
|
|
68131
68165
|
resolvedXAxisFormat,
|
|
68132
68166
|
resolvedXAxisLabel,
|
|
68167
|
+
resolvedChartType,
|
|
68133
68168
|
resolvedYAxisFields,
|
|
68134
68169
|
sourceReport,
|
|
68135
68170
|
setDraftSessionId,
|
|
@@ -68157,7 +68192,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
68157
68192
|
groupColumnsBy,
|
|
68158
68193
|
groupColumnsByOptions,
|
|
68159
68194
|
dateBucket,
|
|
68160
|
-
dateBucketOptions: PIVOT_DATE_BUCKET_OPTIONS,
|
|
68195
|
+
dateBucketOptions: hasDatePivotRow ? PIVOT_DATE_BUCKET_OPTIONS : [],
|
|
68161
68196
|
/** Encoded selection per aggregation slot (`'sum:transactions::amount'`, `'count:transactions'`, `''` = placeholder). Update via `setReport({ aggregations: nextStringArray })`. */
|
|
68162
68197
|
aggregations: aggregationValues,
|
|
68163
68198
|
/** Flat aggregation pick list shared by all slots; always contains every non-empty `aggregations` entry. */
|
|
@@ -68165,7 +68200,7 @@ function useReport(reportIdArg, options = {}) {
|
|
|
68165
68200
|
aggregationDescriptionOptions: cleanedAggregations,
|
|
68166
68201
|
sort: cleanedSort,
|
|
68167
68202
|
sortOptions,
|
|
68168
|
-
chartType,
|
|
68203
|
+
chartType: resolvedChartType,
|
|
68169
68204
|
chartTypeOptions: chartTypes,
|
|
68170
68205
|
/** Selected tabular columns in display order. */
|
|
68171
68206
|
columns: tableColumnValues,
|
|
@@ -68381,7 +68416,7 @@ function ChatChartCard({
|
|
|
68381
68416
|
label: "Chart type",
|
|
68382
68417
|
width: 200,
|
|
68383
68418
|
options: chartTypeOptions,
|
|
68384
|
-
onChange: (e) => setReport({ chartType: e.target.value
|
|
68419
|
+
onChange: (e) => setReport({ chartType: e.target.value })
|
|
68385
68420
|
}
|
|
68386
68421
|
)
|
|
68387
68422
|
]
|
|
@@ -69005,7 +69040,7 @@ function Chat({
|
|
|
69005
69040
|
}
|
|
69006
69041
|
|
|
69007
69042
|
// src/hooks/useReportFilterDraft.ts
|
|
69008
|
-
import { useCallback as useCallback6, useMemo as useMemo34, useRef as useRef26, useState as useState43 } from "react";
|
|
69043
|
+
import { useCallback as useCallback6, useEffect as useEffect33, useMemo as useMemo34, useRef as useRef26, useState as useState43 } from "react";
|
|
69009
69044
|
var normalizeOperatorKey = (operator) => String(operator ?? "").trim().toLowerCase().replace(/[_\s]+/g, "");
|
|
69010
69045
|
var defaultFilterRuleValueForOperator = (operator) => {
|
|
69011
69046
|
const key = normalizeOperatorKey(operator);
|
|
@@ -69071,12 +69106,10 @@ function useReportFilterDraft(args) {
|
|
|
69071
69106
|
const [draftQuery, setDraftQuery] = useState43(committed);
|
|
69072
69107
|
const [hasUnappliedFilterChanges, setHasUnappliedFilterChanges] = useState43(false);
|
|
69073
69108
|
const draftResetKey = `${reportId}|${committedSignature}|${resetEpoch}`;
|
|
69074
|
-
|
|
69075
|
-
|
|
69076
|
-
|
|
69077
|
-
|
|
69078
|
-
if (hasUnappliedFilterChanges) setHasUnappliedFilterChanges(false);
|
|
69079
|
-
}
|
|
69109
|
+
useEffect33(() => {
|
|
69110
|
+
setDraftQuery(committedRef.current);
|
|
69111
|
+
setHasUnappliedFilterChanges(false);
|
|
69112
|
+
}, [draftResetKey]);
|
|
69080
69113
|
const filterDraftKey = `${draftResetKey}|${fieldsSignature}`;
|
|
69081
69114
|
const handleQueryChange = useCallback6((next) => {
|
|
69082
69115
|
if (!isQueryBuilderDisplayGroup(next)) return;
|
|
@@ -69391,7 +69424,7 @@ function ReportDetail({
|
|
|
69391
69424
|
init_valueFormatter();
|
|
69392
69425
|
|
|
69393
69426
|
// src/hooks/useTenants.ts
|
|
69394
|
-
import { useContext as useContext39, useEffect as
|
|
69427
|
+
import { useContext as useContext39, useEffect as useEffect34 } from "react";
|
|
69395
69428
|
var useTenants = (dashboardName) => {
|
|
69396
69429
|
const {
|
|
69397
69430
|
tenants,
|
|
@@ -69405,12 +69438,12 @@ var useTenants = (dashboardName) => {
|
|
|
69405
69438
|
getMappedTenantsForDashboard,
|
|
69406
69439
|
getViewerTenantsByOwner
|
|
69407
69440
|
} = useContext39(TenantContext);
|
|
69408
|
-
|
|
69441
|
+
useEffect34(() => {
|
|
69409
69442
|
if (dashboardName) {
|
|
69410
69443
|
fetchViewerTenantsForDashboard(dashboardName);
|
|
69411
69444
|
}
|
|
69412
69445
|
}, [dashboardName, fetchViewerTenantsForDashboard]);
|
|
69413
|
-
|
|
69446
|
+
useEffect34(() => {
|
|
69414
69447
|
if (dashboardName) {
|
|
69415
69448
|
fetchMappedTenantsForDashboard(dashboardName);
|
|
69416
69449
|
}
|
|
@@ -69429,7 +69462,7 @@ var useTenants = (dashboardName) => {
|
|
|
69429
69462
|
};
|
|
69430
69463
|
|
|
69431
69464
|
// src/hooks/useQuill.ts
|
|
69432
|
-
import { useContext as useContext40, useEffect as
|
|
69465
|
+
import { useContext as useContext40, useEffect as useEffect35, useMemo as useMemo35, useState as useState45 } from "react";
|
|
69433
69466
|
init_paginationProcessing();
|
|
69434
69467
|
init_tableProcessing();
|
|
69435
69468
|
init_dataProcessing();
|
|
@@ -69612,7 +69645,7 @@ var useQuill = (reportId, pagination) => {
|
|
|
69612
69645
|
setLoading(false);
|
|
69613
69646
|
}
|
|
69614
69647
|
};
|
|
69615
|
-
|
|
69648
|
+
useEffect35(() => {
|
|
69616
69649
|
if (isClientLoading) return;
|
|
69617
69650
|
if (reportId && specificReportFilters) {
|
|
69618
69651
|
fetchReportHelper(reportId, {
|
|
@@ -69679,7 +69712,7 @@ var useMemoizedRows = (reportId) => {
|
|
|
69679
69712
|
};
|
|
69680
69713
|
|
|
69681
69714
|
// src/hooks/useAskQuill.tsx
|
|
69682
|
-
import { useContext as useContext41, useEffect as
|
|
69715
|
+
import { useContext as useContext41, useEffect as useEffect36, useState as useState46 } from "react";
|
|
69683
69716
|
init_astProcessing();
|
|
69684
69717
|
init_astFilterProcessing();
|
|
69685
69718
|
init_pivotProcessing();
|
|
@@ -69925,7 +69958,7 @@ var useAskQuill = (dashboardName) => {
|
|
|
69925
69958
|
});
|
|
69926
69959
|
setLoading(false);
|
|
69927
69960
|
};
|
|
69928
|
-
|
|
69961
|
+
useEffect36(() => {
|
|
69929
69962
|
setAsk(() => askHelper);
|
|
69930
69963
|
}, [schemaData.schema]);
|
|
69931
69964
|
return {
|