react-semaphor 0.0.516 → 0.0.518
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/chunks/dashboard-plus-DI4Qb6iN.js +375 -0
- package/dist/chunks/{dashboard-plus-DIpyPOTJ.js → dashboard-plus-DzPDyise.js} +5287 -5693
- package/dist/chunks/index-0e5ek9VV.js +643 -0
- package/dist/chunks/{index-CmYcMGxs.js → index-Bb5ixhkS.js} +65827 -59247
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +39 -35
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +1 -1
- package/dist/types/dashboard.d.ts +124 -2
- package/dist/types/main.d.ts +167 -3
- package/dist/types/surfboard.d.ts +124 -2
- package/dist/types/types.d.ts +124 -2
- package/package.json +2 -1
- package/dist/chunks/dashboard-plus-l5tcfQ45.js +0 -410
- package/dist/chunks/index-DDq9dhWf.js +0 -534
|
@@ -62,6 +62,39 @@ declare interface CardConfig {
|
|
|
62
62
|
filters?: FilterGroup;
|
|
63
63
|
joinPlan?: JoinPlan;
|
|
64
64
|
rowLimit?: number;
|
|
65
|
+
/**
|
|
66
|
+
* One or more hierarchies that define drillable paths through dimensions.
|
|
67
|
+
*/
|
|
68
|
+
drillHierarchies?: DrillHierarchy[];
|
|
69
|
+
/**
|
|
70
|
+
* Optional list of dimensions allowed for dynamic drill-down across this card.
|
|
71
|
+
* Used only when drill steps contain `mode: 'dynamicDrill'` or `type: 'dynamic'`.
|
|
72
|
+
*/
|
|
73
|
+
allowedDrillTargets?: Field[];
|
|
74
|
+
/**
|
|
75
|
+
* NOT UOptional preload settings for inline drill previews
|
|
76
|
+
*/
|
|
77
|
+
inlineDrillPreview?: {
|
|
78
|
+
enabled: boolean;
|
|
79
|
+
limit: number;
|
|
80
|
+
mode: 'lazy' | 'preloaded';
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Configuration for on-click dashboard filters triggered by this card.
|
|
84
|
+
*/
|
|
85
|
+
clickFilterInteractions?: ClickFilterInteraction[];
|
|
86
|
+
comparisonType?: 'previous_period' | 'same_period_last_year' | 'target';
|
|
87
|
+
targetValue?: number;
|
|
88
|
+
showTrendline?: boolean;
|
|
89
|
+
trendlineWindow?: number;
|
|
90
|
+
trendlineGranularity?: 'day' | 'week' | 'month';
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
declare interface CardInteractionConfig {
|
|
94
|
+
allowedDrillTargets?: Field[];
|
|
95
|
+
drillHierarchies?: DrillHierarchy[];
|
|
96
|
+
drillInteractions?: DrillInteraction[];
|
|
97
|
+
clickFilterInteractions?: ClickFilterInteraction[];
|
|
65
98
|
}
|
|
66
99
|
|
|
67
100
|
declare type CardWithContent = BaseCustomCard & {
|
|
@@ -82,6 +115,33 @@ declare type CardWithFooter = BaseCustomCard & {
|
|
|
82
115
|
}>;
|
|
83
116
|
};
|
|
84
117
|
|
|
118
|
+
declare interface ClickFilterInteraction {
|
|
119
|
+
mode: 'clickFilter';
|
|
120
|
+
/**
|
|
121
|
+
* Fields from the chart element that should be used as filters.
|
|
122
|
+
* e.g., [region, ship_mode] from a stacked bar chart
|
|
123
|
+
*/
|
|
124
|
+
filterFields: Field[];
|
|
125
|
+
/**
|
|
126
|
+
* Should this card visually highlight when clicked?
|
|
127
|
+
*/
|
|
128
|
+
highlightSelf?: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Cards this filter applies to (inclusive).
|
|
131
|
+
* If omitted and `excludeCardIds` is also omitted → applies to all cards except self.
|
|
132
|
+
*/
|
|
133
|
+
applyToCardIds?: string[];
|
|
134
|
+
/**
|
|
135
|
+
* Cards to explicitly exclude from receiving this filter.
|
|
136
|
+
* Takes effect only if `applyToCardIds` is undefined (acts as override).
|
|
137
|
+
*/
|
|
138
|
+
excludeCardIds?: string[];
|
|
139
|
+
/**
|
|
140
|
+
* Optional UI label or tooltip.
|
|
141
|
+
*/
|
|
142
|
+
label?: string;
|
|
143
|
+
}
|
|
144
|
+
|
|
85
145
|
export declare type ColorRange = {
|
|
86
146
|
start: number;
|
|
87
147
|
end: number;
|
|
@@ -207,7 +267,7 @@ declare interface DataSource {
|
|
|
207
267
|
selectedEntities: SelectedEntities;
|
|
208
268
|
}
|
|
209
269
|
|
|
210
|
-
declare const DATE_FORMAT_VALUES: readonly ["YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
|
|
270
|
+
declare const DATE_FORMAT_VALUES: readonly ["MM-DD-YYYY", "YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
|
|
211
271
|
|
|
212
272
|
declare type DateFormatValue = (typeof DATE_FORMAT_VALUES)[number];
|
|
213
273
|
|
|
@@ -221,6 +281,50 @@ declare type Dialect = 'mysql' | 'postgresql' | 'bigquery' | 'redshift' | 'snowf
|
|
|
221
281
|
|
|
222
282
|
export declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'none';
|
|
223
283
|
|
|
284
|
+
declare interface DrillHierarchy {
|
|
285
|
+
id: string;
|
|
286
|
+
label?: string;
|
|
287
|
+
type: 'static';
|
|
288
|
+
steps: DrillHierarchyStep[];
|
|
289
|
+
default?: boolean;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
declare interface DrillHierarchyStep {
|
|
293
|
+
field: Field;
|
|
294
|
+
mode: 'drillDown';
|
|
295
|
+
preferredChartType?: TChartType;
|
|
296
|
+
breadcrumbLabelTemplate?: string;
|
|
297
|
+
retainFilters?: boolean;
|
|
298
|
+
label?: string;
|
|
299
|
+
linkedInsightId?: string;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
declare type DrillInteraction = DrillThroughInteraction | DrillToDetailInteraction | DrillToURLInteraction | InlineDrillInteraction;
|
|
303
|
+
|
|
304
|
+
declare interface DrillThroughInteraction {
|
|
305
|
+
mode: 'drillThrough';
|
|
306
|
+
filterFields: Field[];
|
|
307
|
+
targetSheetId: string;
|
|
308
|
+
label?: string;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
declare interface DrillToDetailInteraction {
|
|
312
|
+
mode: 'drillToDetail';
|
|
313
|
+
filterFields: Field[];
|
|
314
|
+
detailFields?: Field[];
|
|
315
|
+
sortBy?: SortByField[];
|
|
316
|
+
limit?: number;
|
|
317
|
+
detailTitle?: string;
|
|
318
|
+
label?: string;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
declare interface DrillToURLInteraction {
|
|
322
|
+
mode: 'drillToURL';
|
|
323
|
+
filterFields: Field[];
|
|
324
|
+
urlTemplate: string;
|
|
325
|
+
label?: string;
|
|
326
|
+
}
|
|
327
|
+
|
|
224
328
|
export declare type DroppableId = 'droppable-group-by' | 'droppable-metric';
|
|
225
329
|
|
|
226
330
|
export declare type EmailSettings = {
|
|
@@ -383,12 +487,21 @@ declare interface GroupByField extends Field {
|
|
|
383
487
|
* If present, used in SELECT and GROUP BY instead of just the column name.
|
|
384
488
|
*/
|
|
385
489
|
expression?: string;
|
|
490
|
+
timeDrillPath?: TimeDrillStep[];
|
|
386
491
|
}
|
|
387
492
|
|
|
388
493
|
export declare type HtmlOptions = {
|
|
389
494
|
html: string;
|
|
390
495
|
};
|
|
391
496
|
|
|
497
|
+
declare interface InlineDrillInteraction {
|
|
498
|
+
mode: 'inlineDrill';
|
|
499
|
+
filterFields: Field[];
|
|
500
|
+
fetchMode?: 'lazy' | 'preloaded';
|
|
501
|
+
inlineLimit?: number;
|
|
502
|
+
label?: string;
|
|
503
|
+
}
|
|
504
|
+
|
|
392
505
|
declare interface Join {
|
|
393
506
|
id: string;
|
|
394
507
|
source: DatabaseEntityReference;
|
|
@@ -488,7 +601,7 @@ declare type OldFilterValue = string | number | null | (string | number)[] | Ran
|
|
|
488
601
|
|
|
489
602
|
declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
|
|
490
603
|
|
|
491
|
-
declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in';
|
|
604
|
+
declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in' | 'between';
|
|
492
605
|
|
|
493
606
|
declare type OptionsMap = {
|
|
494
607
|
number: NumberOptions;
|
|
@@ -623,6 +736,7 @@ export declare type TBaseQuery = {
|
|
|
623
736
|
};
|
|
624
737
|
|
|
625
738
|
export declare type TCard = {
|
|
739
|
+
mode?: 'explorer' | 'dev';
|
|
626
740
|
id: string;
|
|
627
741
|
title: string;
|
|
628
742
|
tabTitle?: string;
|
|
@@ -636,6 +750,7 @@ export declare type TCard = {
|
|
|
636
750
|
python?: string;
|
|
637
751
|
dataSource?: DataSource;
|
|
638
752
|
config?: CardConfig;
|
|
753
|
+
interactionConfig?: CardInteractionConfig;
|
|
639
754
|
queryConfig?: QueryConfig;
|
|
640
755
|
customCfg?: any;
|
|
641
756
|
preferences?: TCardPreferences;
|
|
@@ -833,6 +948,13 @@ export declare type TFrame = {
|
|
|
833
948
|
|
|
834
949
|
export declare type Theme = 'dark' | 'light' | 'system';
|
|
835
950
|
|
|
951
|
+
declare interface TimeDrillStep {
|
|
952
|
+
granularity: TimeGranularity;
|
|
953
|
+
next?: TimeGranularity;
|
|
954
|
+
comparison?: 'previous_year' | 'previous_period';
|
|
955
|
+
rollingWindow?: number;
|
|
956
|
+
}
|
|
957
|
+
|
|
836
958
|
declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
837
959
|
|
|
838
960
|
export declare type TLegendOptions = {
|
package/dist/types/main.d.ts
CHANGED
|
@@ -11,7 +11,10 @@ import { Dialect as Dialect_2 } from '../types/explorer-types';
|
|
|
11
11
|
import { DropdownItem as DropdownItem_2 } from '../types/dropdown-types';
|
|
12
12
|
import { EmailSettings as EmailSettings_2 } from '..';
|
|
13
13
|
import { FontSpec } from 'chart.js';
|
|
14
|
+
import { GroupByField as GroupByField_2 } from '../types/explorer-types';
|
|
14
15
|
import { JSX as JSX_2 } from 'react/jsx-runtime';
|
|
16
|
+
import { MetricField as MetricField_2 } from '../types/explorer-types';
|
|
17
|
+
import { PivotByField as PivotByField_2 } from '../types/explorer-types';
|
|
15
18
|
import { QueryObserverResult } from '@tanstack/query-core';
|
|
16
19
|
import { RefetchOptions } from '@tanstack/query-core';
|
|
17
20
|
import { StoreApi } from 'zustand';
|
|
@@ -67,6 +70,7 @@ declare type Actions = {
|
|
|
67
70
|
updateFrame: (sheetId: string, frame: TFrame) => void;
|
|
68
71
|
updateCard: (sheetId: string, card: TCard) => void;
|
|
69
72
|
updateFrameCard?: (sheetId: string, frameId: string, card: TCard) => void;
|
|
73
|
+
updateCurrentDashboardCard: (card: TCard) => void;
|
|
70
74
|
removeFrame: (sheetId: string, frameId: string) => void;
|
|
71
75
|
removeCard: (sheetId: string, card: TCard) => void;
|
|
72
76
|
setIsDashboardEditing: (editing: boolean) => void;
|
|
@@ -105,7 +109,8 @@ declare type Actions = {
|
|
|
105
109
|
setBaseQueries: (baseQueries: TBaseQuery[]) => void;
|
|
106
110
|
};
|
|
107
111
|
|
|
108
|
-
declare type Actions_2 = TableActions & ExplorerActions & {
|
|
112
|
+
declare type Actions_2 = TableActions & ExplorerActions & DrillActions & {
|
|
113
|
+
setCardMode: (mode: 'explorer' | 'code') => void;
|
|
109
114
|
setEditorFilterMode: (filterColumnName: string, filterMode: 'include' | 'exclude') => void;
|
|
110
115
|
setLowerIsBetter: (lowerIsBetter: boolean) => void;
|
|
111
116
|
clearEditorFilter: (filterColumn: FilterByColumn) => void;
|
|
@@ -117,6 +122,8 @@ declare type Actions_2 = TableActions & ExplorerActions & {
|
|
|
117
122
|
}) => void;
|
|
118
123
|
clearQueryConfig: () => void;
|
|
119
124
|
setQueryConfig: (queryConfig: QueryConfig | undefined) => void;
|
|
125
|
+
setCardTitle: (title: string) => void;
|
|
126
|
+
setCardDescription: (description: string) => void;
|
|
120
127
|
setIsDevMode: (isDevMode: boolean) => void;
|
|
121
128
|
setOrderByColumns: (orderByColumns: OrderBy[]) => void;
|
|
122
129
|
addOrderByColumn: (orderByColumn: OrderBy) => void;
|
|
@@ -250,6 +257,39 @@ export declare interface CardConfig {
|
|
|
250
257
|
filters?: FilterGroup;
|
|
251
258
|
joinPlan?: JoinPlan;
|
|
252
259
|
rowLimit?: number;
|
|
260
|
+
/**
|
|
261
|
+
* One or more hierarchies that define drillable paths through dimensions.
|
|
262
|
+
*/
|
|
263
|
+
drillHierarchies?: DrillHierarchy[];
|
|
264
|
+
/**
|
|
265
|
+
* Optional list of dimensions allowed for dynamic drill-down across this card.
|
|
266
|
+
* Used only when drill steps contain `mode: 'dynamicDrill'` or `type: 'dynamic'`.
|
|
267
|
+
*/
|
|
268
|
+
allowedDrillTargets?: Field[];
|
|
269
|
+
/**
|
|
270
|
+
* NOT UOptional preload settings for inline drill previews
|
|
271
|
+
*/
|
|
272
|
+
inlineDrillPreview?: {
|
|
273
|
+
enabled: boolean;
|
|
274
|
+
limit: number;
|
|
275
|
+
mode: 'lazy' | 'preloaded';
|
|
276
|
+
};
|
|
277
|
+
/**
|
|
278
|
+
* Configuration for on-click dashboard filters triggered by this card.
|
|
279
|
+
*/
|
|
280
|
+
clickFilterInteractions?: ClickFilterInteraction[];
|
|
281
|
+
comparisonType?: 'previous_period' | 'same_period_last_year' | 'target';
|
|
282
|
+
targetValue?: number;
|
|
283
|
+
showTrendline?: boolean;
|
|
284
|
+
trendlineWindow?: number;
|
|
285
|
+
trendlineGranularity?: 'day' | 'week' | 'month';
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
declare interface CardInteractionConfig {
|
|
289
|
+
allowedDrillTargets?: Field[];
|
|
290
|
+
drillHierarchies?: DrillHierarchy[];
|
|
291
|
+
drillInteractions?: DrillInteraction[];
|
|
292
|
+
clickFilterInteractions?: ClickFilterInteraction[];
|
|
253
293
|
}
|
|
254
294
|
|
|
255
295
|
declare type CardWithContent = BaseCustomCard & {
|
|
@@ -272,6 +312,33 @@ declare type CardWithFooter = BaseCustomCard & {
|
|
|
272
312
|
|
|
273
313
|
export declare function cleanCard(card: TCard): TCard;
|
|
274
314
|
|
|
315
|
+
declare interface ClickFilterInteraction {
|
|
316
|
+
mode: 'clickFilter';
|
|
317
|
+
/**
|
|
318
|
+
* Fields from the chart element that should be used as filters.
|
|
319
|
+
* e.g., [region, ship_mode] from a stacked bar chart
|
|
320
|
+
*/
|
|
321
|
+
filterFields: Field[];
|
|
322
|
+
/**
|
|
323
|
+
* Should this card visually highlight when clicked?
|
|
324
|
+
*/
|
|
325
|
+
highlightSelf?: boolean;
|
|
326
|
+
/**
|
|
327
|
+
* Cards this filter applies to (inclusive).
|
|
328
|
+
* If omitted and `excludeCardIds` is also omitted → applies to all cards except self.
|
|
329
|
+
*/
|
|
330
|
+
applyToCardIds?: string[];
|
|
331
|
+
/**
|
|
332
|
+
* Cards to explicitly exclude from receiving this filter.
|
|
333
|
+
* Takes effect only if `applyToCardIds` is undefined (acts as override).
|
|
334
|
+
*/
|
|
335
|
+
excludeCardIds?: string[];
|
|
336
|
+
/**
|
|
337
|
+
* Optional UI label or tooltip.
|
|
338
|
+
*/
|
|
339
|
+
label?: string;
|
|
340
|
+
}
|
|
341
|
+
|
|
275
342
|
export declare type ColorRange = {
|
|
276
343
|
start: number;
|
|
277
344
|
end: number;
|
|
@@ -463,7 +530,7 @@ export declare interface DataSource {
|
|
|
463
530
|
|
|
464
531
|
export declare type DataType = 'string' | 'number' | 'date' | 'datetime' | 'boolean' | 'json' | 'geo';
|
|
465
532
|
|
|
466
|
-
export declare const DATE_FORMAT_VALUES: readonly ["YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
|
|
533
|
+
export declare const DATE_FORMAT_VALUES: readonly ["MM-DD-YYYY", "YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
|
|
467
534
|
|
|
468
535
|
export declare type DateFormatOption = {
|
|
469
536
|
value: DateFormatValue;
|
|
@@ -486,6 +553,75 @@ export declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'n
|
|
|
486
553
|
|
|
487
554
|
export declare function downloadPdf(): Promise<void>;
|
|
488
555
|
|
|
556
|
+
declare interface DrillActions {
|
|
557
|
+
updateDrillHierarchies: (h: DrillHierarchy[]) => void;
|
|
558
|
+
addDrillHierarchy: (h: DrillHierarchy) => void;
|
|
559
|
+
removeDrillHierarchy: (hierarchyId: string) => void;
|
|
560
|
+
updateDrillHierarchy: (hierarchyId: string, updates: Partial<DrillHierarchy>) => void;
|
|
561
|
+
setDefaultHierarchy: (hierarchyId: string) => void;
|
|
562
|
+
updateAllowedDrillTargets: (t: Field[]) => void;
|
|
563
|
+
addDrillTarget: (t: Field) => void;
|
|
564
|
+
removeDrillTarget: (targetId: string) => void;
|
|
565
|
+
updateDrillInteractions: (i: DrillInteraction[]) => void;
|
|
566
|
+
addDrillInteraction: (i: DrillInteraction) => void;
|
|
567
|
+
removeDrillInteraction: (index: number) => void;
|
|
568
|
+
updateClickFilterInteractions: (i: ClickFilterInteraction[]) => void;
|
|
569
|
+
addClickFilterInteraction: (i: ClickFilterInteraction) => void;
|
|
570
|
+
removeClickFilterInteraction: (fieldId: string) => void;
|
|
571
|
+
updateInlineDrillPreview: (s: {
|
|
572
|
+
enabled: boolean;
|
|
573
|
+
limit: number;
|
|
574
|
+
mode: 'lazy' | 'preloaded';
|
|
575
|
+
}) => void;
|
|
576
|
+
toggleInlineDrillPreview: (enabled: boolean) => void;
|
|
577
|
+
updateInteractionConfig: (c: Partial<CardInteractionConfig>) => void;
|
|
578
|
+
resetDrillConfiguration: () => void;
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
declare interface DrillHierarchy {
|
|
582
|
+
id: string;
|
|
583
|
+
label?: string;
|
|
584
|
+
type: 'static';
|
|
585
|
+
steps: DrillHierarchyStep[];
|
|
586
|
+
default?: boolean;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
declare interface DrillHierarchyStep {
|
|
590
|
+
field: Field;
|
|
591
|
+
mode: 'drillDown';
|
|
592
|
+
preferredChartType?: TChartType;
|
|
593
|
+
breadcrumbLabelTemplate?: string;
|
|
594
|
+
retainFilters?: boolean;
|
|
595
|
+
label?: string;
|
|
596
|
+
linkedInsightId?: string;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
declare type DrillInteraction = DrillThroughInteraction | DrillToDetailInteraction | DrillToURLInteraction | InlineDrillInteraction;
|
|
600
|
+
|
|
601
|
+
declare interface DrillThroughInteraction {
|
|
602
|
+
mode: 'drillThrough';
|
|
603
|
+
filterFields: Field[];
|
|
604
|
+
targetSheetId: string;
|
|
605
|
+
label?: string;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
declare interface DrillToDetailInteraction {
|
|
609
|
+
mode: 'drillToDetail';
|
|
610
|
+
filterFields: Field[];
|
|
611
|
+
detailFields?: Field[];
|
|
612
|
+
sortBy?: SortByField[];
|
|
613
|
+
limit?: number;
|
|
614
|
+
detailTitle?: string;
|
|
615
|
+
label?: string;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
declare interface DrillToURLInteraction {
|
|
619
|
+
mode: 'drillToURL';
|
|
620
|
+
filterFields: Field[];
|
|
621
|
+
urlTemplate: string;
|
|
622
|
+
label?: string;
|
|
623
|
+
}
|
|
624
|
+
|
|
489
625
|
export declare type DropdownItem = {
|
|
490
626
|
id: string;
|
|
491
627
|
name: string;
|
|
@@ -796,12 +932,21 @@ export declare interface GroupByField extends Field {
|
|
|
796
932
|
* If present, used in SELECT and GROUP BY instead of just the column name.
|
|
797
933
|
*/
|
|
798
934
|
expression?: string;
|
|
935
|
+
timeDrillPath?: TimeDrillStep[];
|
|
799
936
|
}
|
|
800
937
|
|
|
801
938
|
export declare type HtmlOptions = {
|
|
802
939
|
html: string;
|
|
803
940
|
};
|
|
804
941
|
|
|
942
|
+
declare interface InlineDrillInteraction {
|
|
943
|
+
mode: 'inlineDrill';
|
|
944
|
+
filterFields: Field[];
|
|
945
|
+
fetchMode?: 'lazy' | 'preloaded';
|
|
946
|
+
inlineLimit?: number;
|
|
947
|
+
label?: string;
|
|
948
|
+
}
|
|
949
|
+
|
|
805
950
|
export declare function invalidateToken(): Promise<any>;
|
|
806
951
|
|
|
807
952
|
export declare function isBooleanDataType(dataType: string): boolean;
|
|
@@ -915,7 +1060,7 @@ export declare type OldFilterValue = string | number | null | (string | number)[
|
|
|
915
1060
|
|
|
916
1061
|
declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
|
|
917
1062
|
|
|
918
|
-
export declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in';
|
|
1063
|
+
export declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in' | 'between';
|
|
919
1064
|
|
|
920
1065
|
declare type OptionsMap = {
|
|
921
1066
|
number: NumberOptions;
|
|
@@ -1113,6 +1258,7 @@ export declare type TBaseQuery = {
|
|
|
1113
1258
|
};
|
|
1114
1259
|
|
|
1115
1260
|
export declare type TCard = {
|
|
1261
|
+
mode?: 'explorer' | 'dev';
|
|
1116
1262
|
id: string;
|
|
1117
1263
|
title: string;
|
|
1118
1264
|
tabTitle?: string;
|
|
@@ -1126,6 +1272,7 @@ export declare type TCard = {
|
|
|
1126
1272
|
python?: string;
|
|
1127
1273
|
dataSource?: DataSource;
|
|
1128
1274
|
config?: CardConfig;
|
|
1275
|
+
interactionConfig?: CardInteractionConfig;
|
|
1129
1276
|
queryConfig?: QueryConfig;
|
|
1130
1277
|
customCfg?: any;
|
|
1131
1278
|
preferences?: TCardPreferences;
|
|
@@ -1325,6 +1472,13 @@ export declare type TFrame = {
|
|
|
1325
1472
|
|
|
1326
1473
|
export declare type Theme = 'dark' | 'light' | 'system';
|
|
1327
1474
|
|
|
1475
|
+
declare interface TimeDrillStep {
|
|
1476
|
+
granularity: TimeGranularity;
|
|
1477
|
+
next?: TimeGranularity;
|
|
1478
|
+
comparison?: 'previous_year' | 'previous_period';
|
|
1479
|
+
rollingWindow?: number;
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1328
1482
|
export declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
1329
1483
|
|
|
1330
1484
|
export declare type TLegendOptions = {
|
|
@@ -1490,6 +1644,16 @@ export declare function useCard(cardId: string): {
|
|
|
1490
1644
|
queryKey: string[];
|
|
1491
1645
|
};
|
|
1492
1646
|
|
|
1647
|
+
export declare const useCurrentActiveCard: () => TCard | undefined;
|
|
1648
|
+
|
|
1649
|
+
export declare const useCurrentCardConfig: () => {
|
|
1650
|
+
metricFields: MetricField_2[];
|
|
1651
|
+
groupByFields: GroupByField_2[];
|
|
1652
|
+
pivotByFields: PivotByField_2[];
|
|
1653
|
+
};
|
|
1654
|
+
|
|
1655
|
+
export declare const useCurrentSheetActiveCards: () => TCard[];
|
|
1656
|
+
|
|
1493
1657
|
export declare const useDashboardActions: () => Actions;
|
|
1494
1658
|
|
|
1495
1659
|
export declare const useDashboardStore: UseBoundStore<Omit<StoreApi<DashboardStore>, "setState"> & {
|
|
@@ -62,6 +62,39 @@ declare interface CardConfig {
|
|
|
62
62
|
filters?: FilterGroup;
|
|
63
63
|
joinPlan?: JoinPlan;
|
|
64
64
|
rowLimit?: number;
|
|
65
|
+
/**
|
|
66
|
+
* One or more hierarchies that define drillable paths through dimensions.
|
|
67
|
+
*/
|
|
68
|
+
drillHierarchies?: DrillHierarchy[];
|
|
69
|
+
/**
|
|
70
|
+
* Optional list of dimensions allowed for dynamic drill-down across this card.
|
|
71
|
+
* Used only when drill steps contain `mode: 'dynamicDrill'` or `type: 'dynamic'`.
|
|
72
|
+
*/
|
|
73
|
+
allowedDrillTargets?: Field[];
|
|
74
|
+
/**
|
|
75
|
+
* NOT UOptional preload settings for inline drill previews
|
|
76
|
+
*/
|
|
77
|
+
inlineDrillPreview?: {
|
|
78
|
+
enabled: boolean;
|
|
79
|
+
limit: number;
|
|
80
|
+
mode: 'lazy' | 'preloaded';
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Configuration for on-click dashboard filters triggered by this card.
|
|
84
|
+
*/
|
|
85
|
+
clickFilterInteractions?: ClickFilterInteraction[];
|
|
86
|
+
comparisonType?: 'previous_period' | 'same_period_last_year' | 'target';
|
|
87
|
+
targetValue?: number;
|
|
88
|
+
showTrendline?: boolean;
|
|
89
|
+
trendlineWindow?: number;
|
|
90
|
+
trendlineGranularity?: 'day' | 'week' | 'month';
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
declare interface CardInteractionConfig {
|
|
94
|
+
allowedDrillTargets?: Field[];
|
|
95
|
+
drillHierarchies?: DrillHierarchy[];
|
|
96
|
+
drillInteractions?: DrillInteraction[];
|
|
97
|
+
clickFilterInteractions?: ClickFilterInteraction[];
|
|
65
98
|
}
|
|
66
99
|
|
|
67
100
|
declare type CardWithContent = BaseCustomCard & {
|
|
@@ -82,6 +115,33 @@ declare type CardWithFooter = BaseCustomCard & {
|
|
|
82
115
|
}>;
|
|
83
116
|
};
|
|
84
117
|
|
|
118
|
+
declare interface ClickFilterInteraction {
|
|
119
|
+
mode: 'clickFilter';
|
|
120
|
+
/**
|
|
121
|
+
* Fields from the chart element that should be used as filters.
|
|
122
|
+
* e.g., [region, ship_mode] from a stacked bar chart
|
|
123
|
+
*/
|
|
124
|
+
filterFields: Field[];
|
|
125
|
+
/**
|
|
126
|
+
* Should this card visually highlight when clicked?
|
|
127
|
+
*/
|
|
128
|
+
highlightSelf?: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Cards this filter applies to (inclusive).
|
|
131
|
+
* If omitted and `excludeCardIds` is also omitted → applies to all cards except self.
|
|
132
|
+
*/
|
|
133
|
+
applyToCardIds?: string[];
|
|
134
|
+
/**
|
|
135
|
+
* Cards to explicitly exclude from receiving this filter.
|
|
136
|
+
* Takes effect only if `applyToCardIds` is undefined (acts as override).
|
|
137
|
+
*/
|
|
138
|
+
excludeCardIds?: string[];
|
|
139
|
+
/**
|
|
140
|
+
* Optional UI label or tooltip.
|
|
141
|
+
*/
|
|
142
|
+
label?: string;
|
|
143
|
+
}
|
|
144
|
+
|
|
85
145
|
export declare type ColorRange = {
|
|
86
146
|
start: number;
|
|
87
147
|
end: number;
|
|
@@ -210,7 +270,7 @@ declare interface DataSource {
|
|
|
210
270
|
selectedEntities: SelectedEntities;
|
|
211
271
|
}
|
|
212
272
|
|
|
213
|
-
declare const DATE_FORMAT_VALUES: readonly ["YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
|
|
273
|
+
declare const DATE_FORMAT_VALUES: readonly ["MM-DD-YYYY", "YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
|
|
214
274
|
|
|
215
275
|
declare type DateFormatValue = (typeof DATE_FORMAT_VALUES)[number];
|
|
216
276
|
|
|
@@ -224,6 +284,50 @@ declare type Dialect = 'mysql' | 'postgresql' | 'bigquery' | 'redshift' | 'snowf
|
|
|
224
284
|
|
|
225
285
|
export declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'none';
|
|
226
286
|
|
|
287
|
+
declare interface DrillHierarchy {
|
|
288
|
+
id: string;
|
|
289
|
+
label?: string;
|
|
290
|
+
type: 'static';
|
|
291
|
+
steps: DrillHierarchyStep[];
|
|
292
|
+
default?: boolean;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
declare interface DrillHierarchyStep {
|
|
296
|
+
field: Field;
|
|
297
|
+
mode: 'drillDown';
|
|
298
|
+
preferredChartType?: TChartType;
|
|
299
|
+
breadcrumbLabelTemplate?: string;
|
|
300
|
+
retainFilters?: boolean;
|
|
301
|
+
label?: string;
|
|
302
|
+
linkedInsightId?: string;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
declare type DrillInteraction = DrillThroughInteraction | DrillToDetailInteraction | DrillToURLInteraction | InlineDrillInteraction;
|
|
306
|
+
|
|
307
|
+
declare interface DrillThroughInteraction {
|
|
308
|
+
mode: 'drillThrough';
|
|
309
|
+
filterFields: Field[];
|
|
310
|
+
targetSheetId: string;
|
|
311
|
+
label?: string;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
declare interface DrillToDetailInteraction {
|
|
315
|
+
mode: 'drillToDetail';
|
|
316
|
+
filterFields: Field[];
|
|
317
|
+
detailFields?: Field[];
|
|
318
|
+
sortBy?: SortByField[];
|
|
319
|
+
limit?: number;
|
|
320
|
+
detailTitle?: string;
|
|
321
|
+
label?: string;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
declare interface DrillToURLInteraction {
|
|
325
|
+
mode: 'drillToURL';
|
|
326
|
+
filterFields: Field[];
|
|
327
|
+
urlTemplate: string;
|
|
328
|
+
label?: string;
|
|
329
|
+
}
|
|
330
|
+
|
|
227
331
|
export declare type DroppableId = 'droppable-group-by' | 'droppable-metric';
|
|
228
332
|
|
|
229
333
|
export declare type EmailSettings = {
|
|
@@ -386,12 +490,21 @@ declare interface GroupByField extends Field {
|
|
|
386
490
|
* If present, used in SELECT and GROUP BY instead of just the column name.
|
|
387
491
|
*/
|
|
388
492
|
expression?: string;
|
|
493
|
+
timeDrillPath?: TimeDrillStep[];
|
|
389
494
|
}
|
|
390
495
|
|
|
391
496
|
export declare type HtmlOptions = {
|
|
392
497
|
html: string;
|
|
393
498
|
};
|
|
394
499
|
|
|
500
|
+
declare interface InlineDrillInteraction {
|
|
501
|
+
mode: 'inlineDrill';
|
|
502
|
+
filterFields: Field[];
|
|
503
|
+
fetchMode?: 'lazy' | 'preloaded';
|
|
504
|
+
inlineLimit?: number;
|
|
505
|
+
label?: string;
|
|
506
|
+
}
|
|
507
|
+
|
|
395
508
|
declare interface Join {
|
|
396
509
|
id: string;
|
|
397
510
|
source: DatabaseEntityReference;
|
|
@@ -491,7 +604,7 @@ declare type OldFilterValue = string | number | null | (string | number)[] | Ran
|
|
|
491
604
|
|
|
492
605
|
declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
|
|
493
606
|
|
|
494
|
-
declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in';
|
|
607
|
+
declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in' | 'between';
|
|
495
608
|
|
|
496
609
|
declare type OptionsMap = {
|
|
497
610
|
number: NumberOptions;
|
|
@@ -628,6 +741,7 @@ export declare type TBaseQuery = {
|
|
|
628
741
|
};
|
|
629
742
|
|
|
630
743
|
export declare type TCard = {
|
|
744
|
+
mode?: 'explorer' | 'dev';
|
|
631
745
|
id: string;
|
|
632
746
|
title: string;
|
|
633
747
|
tabTitle?: string;
|
|
@@ -641,6 +755,7 @@ export declare type TCard = {
|
|
|
641
755
|
python?: string;
|
|
642
756
|
dataSource?: DataSource;
|
|
643
757
|
config?: CardConfig;
|
|
758
|
+
interactionConfig?: CardInteractionConfig;
|
|
644
759
|
queryConfig?: QueryConfig;
|
|
645
760
|
customCfg?: any;
|
|
646
761
|
preferences?: TCardPreferences;
|
|
@@ -838,6 +953,13 @@ export declare type TFrame = {
|
|
|
838
953
|
|
|
839
954
|
export declare type Theme = 'dark' | 'light' | 'system';
|
|
840
955
|
|
|
956
|
+
declare interface TimeDrillStep {
|
|
957
|
+
granularity: TimeGranularity;
|
|
958
|
+
next?: TimeGranularity;
|
|
959
|
+
comparison?: 'previous_year' | 'previous_period';
|
|
960
|
+
rollingWindow?: number;
|
|
961
|
+
}
|
|
962
|
+
|
|
841
963
|
declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
842
964
|
|
|
843
965
|
export declare type TLegendOptions = {
|