react-semaphor 0.0.37719 → 0.1.1
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/CHANGELOG.md +54 -0
- package/dist/chunks/dashboard-plus-BDQLhRLH.js +270 -0
- package/dist/chunks/dashboard-plus-CuVaDeqE.js +20277 -0
- package/dist/chunks/index-CsQT_gTd.js +980 -0
- package/dist/chunks/index-opTTQPdi.js +102557 -0
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +4 -2
- package/dist/index.cjs +6 -1
- package/dist/index.js +238 -35
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +4 -2
- package/dist/types/dashboard.d.ts +742 -21
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +8 -1
- package/dist/types/main.d.ts +1410 -64
- package/dist/types/surfboard.d.ts +741 -20
- package/dist/types/types.d.ts +741 -20
- package/package.json +39 -16
- package/dist/chunks/index-B2UB5v7l.js +0 -411
- package/dist/chunks/index-CaTx9ujK.js +0 -192
- package/dist/chunks/index-DXddLbEP.js +0 -64003
- package/dist/chunks/index-DybOvW7V.js +0 -6117
- package/dist/chunks/lucide-react-BInWIJ_d.js +0 -27626
- package/dist/chunks/lucide-react-DCVg_bGB.js +0 -7321
|
@@ -1,22 +1,60 @@
|
|
|
1
|
+
import { ColumnSizingState } from '@tanstack/react-table';
|
|
1
2
|
import { FontSpec } from 'chart.js';
|
|
2
3
|
import { JSX as JSX_2 } from 'react/jsx-runtime';
|
|
3
4
|
|
|
4
5
|
export declare type AggregateCalc = 'AVG' | 'MIN' | 'MAX' | 'SUM' | 'COUNT' | 'COUNT_DISTINCT';
|
|
5
6
|
|
|
7
|
+
declare type AggregateFunction = 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'MEDIAN' | 'DISTINCT';
|
|
8
|
+
|
|
9
|
+
declare type AIContext = {
|
|
10
|
+
selectedEntities: SelectedEntities;
|
|
11
|
+
fileAttachments?: FileAttachment[];
|
|
12
|
+
};
|
|
13
|
+
|
|
6
14
|
export declare type AIScopeTable = {
|
|
7
15
|
connectionId: string;
|
|
8
16
|
connectionType: string;
|
|
9
|
-
databaseName
|
|
10
|
-
schemaName
|
|
11
|
-
tableName
|
|
12
|
-
|
|
17
|
+
databaseName: string;
|
|
18
|
+
schemaName: string;
|
|
19
|
+
tableName: string;
|
|
20
|
+
datamodelId: string;
|
|
21
|
+
datamodelName: string;
|
|
13
22
|
};
|
|
14
23
|
|
|
24
|
+
export declare type AssistantId = 'dashboard-assistant' | 'editor-assistant';
|
|
25
|
+
|
|
15
26
|
export declare type AuthToken = {
|
|
16
27
|
accessToken: string;
|
|
17
28
|
refreshToken?: string;
|
|
18
29
|
};
|
|
19
30
|
|
|
31
|
+
export declare type AxisConfig = {
|
|
32
|
+
enabled?: boolean;
|
|
33
|
+
name?: {
|
|
34
|
+
enabled: boolean;
|
|
35
|
+
text?: string;
|
|
36
|
+
};
|
|
37
|
+
position?: 'auto' | 'top' | 'bottom' | 'left' | 'right';
|
|
38
|
+
labels?: {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
rotation?: 'auto' | 0 | 45 | 90 | -45 | -90;
|
|
41
|
+
};
|
|
42
|
+
formatOptions?: TFormatOptions;
|
|
43
|
+
scale?: {
|
|
44
|
+
min?: number | 'auto';
|
|
45
|
+
max?: number | 'auto';
|
|
46
|
+
stepSize?: number | 'auto';
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
declare interface BaseColumn {
|
|
51
|
+
id: string;
|
|
52
|
+
name: string;
|
|
53
|
+
label?: string;
|
|
54
|
+
type: ColumnType;
|
|
55
|
+
table?: string;
|
|
56
|
+
}
|
|
57
|
+
|
|
20
58
|
declare type BaseCustomCard = {
|
|
21
59
|
cardId: string;
|
|
22
60
|
replaceDefault?: boolean;
|
|
@@ -37,6 +75,59 @@ export declare type CacheConfig = {
|
|
|
37
75
|
status: 'on' | 'on-refresh' | 'off';
|
|
38
76
|
};
|
|
39
77
|
|
|
78
|
+
declare interface CardConfig {
|
|
79
|
+
groupByColumns?: GroupByField[];
|
|
80
|
+
metricColumns?: MetricField[];
|
|
81
|
+
pivotByColumns?: PivotByField[];
|
|
82
|
+
sortByColumns?: SortByField[];
|
|
83
|
+
filters?: FilterGroup;
|
|
84
|
+
joinPlan?: JoinPlan;
|
|
85
|
+
rowLimit?: number;
|
|
86
|
+
/**
|
|
87
|
+
* One or more hierarchies that define drillable paths through dimensions.
|
|
88
|
+
*/
|
|
89
|
+
drillHierarchies?: DrillHierarchy[];
|
|
90
|
+
/**
|
|
91
|
+
* Optional list of dimensions allowed for dynamic drill-down across this card.
|
|
92
|
+
* Used only when drill steps contain `mode: 'dynamicDrill'` or `type: 'dynamic'`.
|
|
93
|
+
*/
|
|
94
|
+
allowedDrillTargets?: Field[];
|
|
95
|
+
/**
|
|
96
|
+
* NOT UOptional preload settings for inline drill previews
|
|
97
|
+
*/
|
|
98
|
+
inlineDrillPreview?: {
|
|
99
|
+
enabled: boolean;
|
|
100
|
+
limit: number;
|
|
101
|
+
mode: 'lazy' | 'preloaded';
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Configuration for on-click dashboard filters triggered by this card.
|
|
105
|
+
*/
|
|
106
|
+
clickFilterInteractions?: ClickFilterInteraction[];
|
|
107
|
+
comparisonType?: 'none' | 'previous_period' | 'same_period_last_year' | 'target';
|
|
108
|
+
targetValue?: number;
|
|
109
|
+
showTrendline?: boolean;
|
|
110
|
+
trendlineWindow?: number;
|
|
111
|
+
trendlineGranularity?: 'day' | 'week' | 'month';
|
|
112
|
+
rowAggregates?: Array<{
|
|
113
|
+
label?: string;
|
|
114
|
+
function: AggregateFunction;
|
|
115
|
+
groupLevel: string | 'ALL';
|
|
116
|
+
}>;
|
|
117
|
+
columnAggregates?: Array<{
|
|
118
|
+
label?: string;
|
|
119
|
+
function: AggregateFunction;
|
|
120
|
+
pivotLevel: string | 'ALL';
|
|
121
|
+
}>;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
declare interface CardInteractionConfig {
|
|
125
|
+
allowedDrillTargets?: Field[];
|
|
126
|
+
drillHierarchies?: DrillHierarchy[];
|
|
127
|
+
drillInteractions?: DrillInteraction[];
|
|
128
|
+
clickFilterInteractions?: ClickFilterInteraction[];
|
|
129
|
+
}
|
|
130
|
+
|
|
40
131
|
declare type CardWithContent = BaseCustomCard & {
|
|
41
132
|
content: React.FC<{
|
|
42
133
|
card: TCard;
|
|
@@ -55,25 +146,130 @@ declare type CardWithFooter = BaseCustomCard & {
|
|
|
55
146
|
}>;
|
|
56
147
|
};
|
|
57
148
|
|
|
149
|
+
declare interface ClickFilterInteraction {
|
|
150
|
+
mode: 'clickFilter';
|
|
151
|
+
/**
|
|
152
|
+
* Fields from the chart element that should be used as filters.
|
|
153
|
+
* e.g., [region, ship_mode] from a stacked bar chart
|
|
154
|
+
*/
|
|
155
|
+
filterFields: Field[];
|
|
156
|
+
/**
|
|
157
|
+
* Should this card visually highlight when clicked?
|
|
158
|
+
*/
|
|
159
|
+
highlightSelf?: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Cards this filter applies to (inclusive).
|
|
162
|
+
* If omitted and `excludeCardIds` is also omitted → applies to all cards except self.
|
|
163
|
+
*/
|
|
164
|
+
applyToCardIds?: string[];
|
|
165
|
+
/**
|
|
166
|
+
* Cards to explicitly exclude from receiving this filter.
|
|
167
|
+
* Takes effect only if `applyToCardIds` is undefined (acts as override).
|
|
168
|
+
*/
|
|
169
|
+
excludeCardIds?: string[];
|
|
170
|
+
/**
|
|
171
|
+
* Optional UI label or tooltip.
|
|
172
|
+
*/
|
|
173
|
+
label?: string;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export declare type ColorConfig = {
|
|
177
|
+
segments: Record<string, string>;
|
|
178
|
+
};
|
|
179
|
+
|
|
58
180
|
export declare type ColorRange = {
|
|
59
181
|
start: number;
|
|
60
182
|
end: number;
|
|
61
183
|
color: string;
|
|
62
184
|
};
|
|
63
185
|
|
|
186
|
+
declare interface ColorRange_2 {
|
|
187
|
+
min: number;
|
|
188
|
+
max: number;
|
|
189
|
+
color: string;
|
|
190
|
+
applyTo: 'cell' | 'row';
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
declare interface ColumnSettings {
|
|
194
|
+
type: 'none' | 'text' | 'number' | 'date' | 'badge' | 'link' | 'progress';
|
|
195
|
+
textAlign: 'left' | 'center' | 'right';
|
|
196
|
+
width: number;
|
|
197
|
+
minWidth?: number;
|
|
198
|
+
maxWidth?: number;
|
|
199
|
+
textOverflow?: 'ellipsis' | 'wrap' | 'clip';
|
|
200
|
+
textWrap: 'wrap' | 'nowrap';
|
|
201
|
+
numberFormat: {
|
|
202
|
+
style: 'decimal' | 'currency' | 'percent';
|
|
203
|
+
currency: string;
|
|
204
|
+
locale: string;
|
|
205
|
+
minimumFractionDigits: number;
|
|
206
|
+
maximumFractionDigits: number;
|
|
207
|
+
showDataBar: boolean;
|
|
208
|
+
dataBarColor: string;
|
|
209
|
+
dataBarMinValue?: number;
|
|
210
|
+
dataBarMaxValue?: number;
|
|
211
|
+
};
|
|
212
|
+
dateFormat: {
|
|
213
|
+
format: string;
|
|
214
|
+
useCustomFormat: boolean;
|
|
215
|
+
customFormat: string;
|
|
216
|
+
useRelativeTime: boolean;
|
|
217
|
+
timezone?: string;
|
|
218
|
+
sourceTimezone?: string;
|
|
219
|
+
};
|
|
220
|
+
colorRanges: ColorRange_2[];
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
declare type ColumnSettingsMap = Record<string, ColumnSettings>;
|
|
224
|
+
|
|
225
|
+
declare type ColumnType = 'string' | 'number' | 'date';
|
|
226
|
+
|
|
64
227
|
export declare type ConnectionPolicy = {
|
|
65
228
|
connectionId?: string;
|
|
66
229
|
name: string;
|
|
67
230
|
params: Params;
|
|
68
231
|
};
|
|
69
232
|
|
|
233
|
+
declare type ConnectionType = 'GoogleSheets' | 'MySQL' | 'MSSQL' | 'PostgreSQL' | 'BigQuery' | 'Redshift' | 'Snowflake' | 'S3' | 'clickhouse' | 'S3Tables' | 'API' | 'none';
|
|
234
|
+
|
|
70
235
|
export declare type CustomCard = CardWithContent | CardWithFooter;
|
|
71
236
|
|
|
237
|
+
export declare type DashboardEventHandlers = {
|
|
238
|
+
onExportData?: (payload: ExportDataPayload) => void;
|
|
239
|
+
};
|
|
240
|
+
|
|
72
241
|
declare type DashboardPlusProps = {
|
|
73
242
|
showControls?: boolean;
|
|
74
243
|
showFooter?: boolean;
|
|
75
244
|
} & DashboardProps;
|
|
76
245
|
|
|
246
|
+
/**
|
|
247
|
+
* Unified dashboard preferences for both card display and UI modes
|
|
248
|
+
*/
|
|
249
|
+
export declare type DashboardPreferences = {
|
|
250
|
+
/**
|
|
251
|
+
* Visual display preferences for cards
|
|
252
|
+
* Controls how card content is rendered (headers, footers, etc.)
|
|
253
|
+
*/
|
|
254
|
+
cardDisplay?: VisualDisplayPreferences;
|
|
255
|
+
/**
|
|
256
|
+
* UI modes for developer and debug features
|
|
257
|
+
* Controls what developer tools and debug panels are available
|
|
258
|
+
*/
|
|
259
|
+
uiMode?: {
|
|
260
|
+
/**
|
|
261
|
+
* Enable developer mode
|
|
262
|
+
* Shows additional controls and debug information
|
|
263
|
+
*/
|
|
264
|
+
developer?: boolean;
|
|
265
|
+
/**
|
|
266
|
+
* Enable console mode
|
|
267
|
+
* Shows console panel for debugging
|
|
268
|
+
*/
|
|
269
|
+
console?: boolean;
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
|
|
77
273
|
export declare type DashboardProps = {
|
|
78
274
|
id?: string;
|
|
79
275
|
/**
|
|
@@ -83,10 +279,7 @@ export declare type DashboardProps = {
|
|
|
83
279
|
/**
|
|
84
280
|
* Default filter values for the dashboard. The dashboard will be filtered by these values when the user loads the dashboard.
|
|
85
281
|
*/
|
|
86
|
-
defaultFilterValues?:
|
|
87
|
-
filterId: string;
|
|
88
|
-
values: string[] | number[];
|
|
89
|
-
}[] | TFilterValue[];
|
|
282
|
+
defaultFilterValues?: TFilterValue[];
|
|
90
283
|
customStyle?: TStyle;
|
|
91
284
|
currentTheme?: Theme;
|
|
92
285
|
version?: string;
|
|
@@ -98,6 +291,7 @@ export declare type DashboardProps = {
|
|
|
98
291
|
onFilterValuesChange?: (filterValues: TFilterValue[]) => void;
|
|
99
292
|
LoadingComponent?: (props: LoadingProps) => React.ReactNode;
|
|
100
293
|
ErrorComponent?: (props: ErrorProps) => React.ReactNode;
|
|
294
|
+
eventHandlers?: DashboardEventHandlers;
|
|
101
295
|
/**
|
|
102
296
|
* Placeholders for the dashboard.
|
|
103
297
|
*/
|
|
@@ -106,20 +300,201 @@ export declare type DashboardProps = {
|
|
|
106
300
|
* The id of the sheet to be selected when the dashboard is loaded.
|
|
107
301
|
*/
|
|
108
302
|
selectedSheetId?: string;
|
|
303
|
+
/**
|
|
304
|
+
* Unified preferences for dashboard configuration
|
|
305
|
+
* Includes both card display preferences and UI mode settings
|
|
306
|
+
*/
|
|
307
|
+
preferences?: DashboardPreferences;
|
|
109
308
|
};
|
|
110
309
|
|
|
310
|
+
declare interface DatabaseEntityReference {
|
|
311
|
+
connectionId: string;
|
|
312
|
+
connectionType: ConnectionType;
|
|
313
|
+
type: EntityType;
|
|
314
|
+
dbObjectType?: string;
|
|
315
|
+
dialect?: Dialect;
|
|
316
|
+
database?: string;
|
|
317
|
+
schema?: string;
|
|
318
|
+
name: string;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
declare type DatabaseEntityType = 'table' | 'view';
|
|
322
|
+
|
|
323
|
+
declare interface DataModelEntityReference extends DatabaseEntityReference {
|
|
324
|
+
type: 'model';
|
|
325
|
+
id: string;
|
|
326
|
+
label: string;
|
|
327
|
+
description: string;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
declare interface DataSource {
|
|
331
|
+
connectionId: string;
|
|
332
|
+
semanticDomainId?: string;
|
|
333
|
+
connectionType: string;
|
|
334
|
+
mode: 'database' | 'upload' | 'url' | 'semanticDomain';
|
|
335
|
+
dbSelection?: {
|
|
336
|
+
database: string;
|
|
337
|
+
schema: string;
|
|
338
|
+
entityType: DatabaseEntityType;
|
|
339
|
+
};
|
|
340
|
+
selectedEntities: SelectedEntities;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
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", "Week of MMM DD, YYYY", "Week of MMMM DD, YYYY", "YYYY-WW", "MMM YYYY", "MMMM YYYY", "YYYY-MM", "MM/YYYY", "YYYY MMM", "Q1 YYYY", "YYYY Q1", "1st Quarter YYYY", "YYYY-Q1", "Quarter 1, YYYY", "YYYY", "YY", "custom"];
|
|
344
|
+
|
|
345
|
+
declare type DateFormatValue = (typeof DATE_FORMAT_VALUES)[number];
|
|
346
|
+
|
|
111
347
|
export declare type DateOptions = {
|
|
112
348
|
locale: string;
|
|
113
349
|
format: string;
|
|
114
350
|
options: Intl.DateTimeFormatOptions;
|
|
115
351
|
};
|
|
116
352
|
|
|
353
|
+
declare type Dialect = 'mysql' | 'postgres' | 'bigquery' | 'redshift' | 'snowflake' | 'clickhouse' | 'duckdb';
|
|
354
|
+
|
|
117
355
|
export declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'none';
|
|
118
356
|
|
|
357
|
+
declare interface DrillHierarchy {
|
|
358
|
+
id: string;
|
|
359
|
+
label?: string;
|
|
360
|
+
type: 'static';
|
|
361
|
+
steps: DrillHierarchyStep[];
|
|
362
|
+
default?: boolean;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
declare interface DrillHierarchyStep {
|
|
366
|
+
field: Field;
|
|
367
|
+
mode: 'drillDown';
|
|
368
|
+
preferredChartType?: TChartType;
|
|
369
|
+
breadcrumbLabelTemplate?: string;
|
|
370
|
+
retainFilters?: boolean;
|
|
371
|
+
label?: string;
|
|
372
|
+
linkedInsightId?: string;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
declare type DrillInteraction = DrillThroughInteraction | DrillToDetailInteraction | DrillToURLInteraction | InlineDrillInteraction;
|
|
376
|
+
|
|
377
|
+
declare interface DrillThroughInteraction {
|
|
378
|
+
mode: 'drillThrough';
|
|
379
|
+
filterFields: Field[];
|
|
380
|
+
targetSheetId: string;
|
|
381
|
+
label?: string;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
declare interface DrillToDetailInteraction {
|
|
385
|
+
mode: 'drillToDetail';
|
|
386
|
+
filterFields: Field[];
|
|
387
|
+
detailFields?: Field[];
|
|
388
|
+
sortBy?: SortByField[];
|
|
389
|
+
limit?: number;
|
|
390
|
+
detailTitle?: string;
|
|
391
|
+
label?: string;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
declare interface DrillToURLInteraction {
|
|
395
|
+
mode: 'drillToURL';
|
|
396
|
+
filterFields: Field[];
|
|
397
|
+
urlTemplate: string;
|
|
398
|
+
label?: string;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
export declare type DroppableId = 'droppable-group-by' | 'droppable-metric';
|
|
402
|
+
|
|
403
|
+
export declare type EmailSettings = {
|
|
404
|
+
companyName: string;
|
|
405
|
+
dashboardUrl: string;
|
|
406
|
+
supportEmail: string;
|
|
407
|
+
senderTitle: string;
|
|
408
|
+
};
|
|
409
|
+
|
|
410
|
+
export declare const EMPTY_SELECTION: SelectionState;
|
|
411
|
+
|
|
412
|
+
declare type EntityType = 'table' | 'view' | 'model' | 'file' | 'dataset' | 'url' | 'upload';
|
|
413
|
+
|
|
119
414
|
export declare type ErrorProps = {
|
|
120
415
|
message?: string;
|
|
121
416
|
};
|
|
122
417
|
|
|
418
|
+
export declare type ExportDataPayload = {
|
|
419
|
+
cardId: string;
|
|
420
|
+
title: string;
|
|
421
|
+
data: Record<string, any>[];
|
|
422
|
+
sql: string;
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
declare interface Field {
|
|
426
|
+
/**
|
|
427
|
+
* Unique identifier for this field instance (for joins, UI state, etc.).
|
|
428
|
+
* Should be unique within the context of the query or data model.
|
|
429
|
+
* Example: 'orders.customer_id', 'expr_12345', etc.
|
|
430
|
+
*/
|
|
431
|
+
id: string;
|
|
432
|
+
/**
|
|
433
|
+
* The physical/source column name in the database or data source.
|
|
434
|
+
* Used for mapping to the underlying data model and SQL generation (unless overridden by expression).
|
|
435
|
+
*/
|
|
436
|
+
name: string;
|
|
437
|
+
/**
|
|
438
|
+
* Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
|
|
439
|
+
*/
|
|
440
|
+
label: string;
|
|
441
|
+
/**
|
|
442
|
+
* Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
|
|
443
|
+
* If not provided, should be auto-generated from label or name.
|
|
444
|
+
*/
|
|
445
|
+
alias?: string;
|
|
446
|
+
qualifiedFieldName: string;
|
|
447
|
+
dataType: string;
|
|
448
|
+
description?: string;
|
|
449
|
+
qualifiedEntityName?: string;
|
|
450
|
+
dateFormat?: DateFormatValue;
|
|
451
|
+
customFormat?: string;
|
|
452
|
+
granularity?: TimeGranularity;
|
|
453
|
+
entityId: string;
|
|
454
|
+
entityName: string;
|
|
455
|
+
entityType: EntityType;
|
|
456
|
+
role?: 'groupby' | 'metric' | 'sortby' | 'pivotby';
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
declare type FileAttachment = {
|
|
460
|
+
id: string;
|
|
461
|
+
name: string;
|
|
462
|
+
size: number;
|
|
463
|
+
type: string;
|
|
464
|
+
data?: string;
|
|
465
|
+
url?: string;
|
|
466
|
+
preview?: string;
|
|
467
|
+
uploadProgress?: number;
|
|
468
|
+
};
|
|
469
|
+
|
|
470
|
+
declare interface FileEntityReference extends DatabaseEntityReference {
|
|
471
|
+
id: string;
|
|
472
|
+
type: 'file' | 'url' | 'upload';
|
|
473
|
+
label: string;
|
|
474
|
+
description: string;
|
|
475
|
+
originalName: string;
|
|
476
|
+
file?: File;
|
|
477
|
+
url?: string;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
declare interface FilterByColumn extends BaseColumn {
|
|
481
|
+
role: 'filter';
|
|
482
|
+
operators?: string[];
|
|
483
|
+
mode?: 'include' | 'exclude';
|
|
484
|
+
sql?: string;
|
|
485
|
+
fetchValues?: boolean;
|
|
486
|
+
fetchLimit?: number;
|
|
487
|
+
valueSource?: 'distinct' | 'static' | 'range';
|
|
488
|
+
staticValues?: string[];
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
declare interface FilterCondition {
|
|
492
|
+
id: string;
|
|
493
|
+
field: Field;
|
|
494
|
+
operator: Operator;
|
|
495
|
+
value: FilterValue;
|
|
496
|
+
}
|
|
497
|
+
|
|
123
498
|
declare type FilterForBetween = BaseFilter & {
|
|
124
499
|
operation: 'between' | 'not between';
|
|
125
500
|
values: [number, number];
|
|
@@ -150,6 +525,14 @@ declare type FilterForString = BaseFilter & {
|
|
|
150
525
|
values: [string];
|
|
151
526
|
};
|
|
152
527
|
|
|
528
|
+
declare interface FilterGroup {
|
|
529
|
+
id: string;
|
|
530
|
+
logicalOperator: LogicalOperator;
|
|
531
|
+
negate: boolean;
|
|
532
|
+
conditions: FilterCondition[];
|
|
533
|
+
groups: FilterGroup[];
|
|
534
|
+
}
|
|
535
|
+
|
|
153
536
|
declare type FilterLocation = 'dashboard' | 'frame' | undefined;
|
|
154
537
|
|
|
155
538
|
declare type FilterOnClick = {
|
|
@@ -157,6 +540,8 @@ declare type FilterOnClick = {
|
|
|
157
540
|
columnIndex: number;
|
|
158
541
|
};
|
|
159
542
|
|
|
543
|
+
declare type FilterValue = string | number | boolean | Date | null | [number, number] | [string, string] | string[] | number[];
|
|
544
|
+
|
|
160
545
|
export declare type GetDashboardResponse = {
|
|
161
546
|
dashboard: TDashboard;
|
|
162
547
|
lenses: TLens[];
|
|
@@ -168,23 +553,122 @@ export declare type GetPluginsResponse = {
|
|
|
168
553
|
plugins: {
|
|
169
554
|
label: string;
|
|
170
555
|
value: string;
|
|
556
|
+
type: PluginType;
|
|
171
557
|
}[];
|
|
172
558
|
};
|
|
173
559
|
|
|
560
|
+
declare type Granularity = 'day' | 'week' | 'month' | 'year';
|
|
561
|
+
|
|
562
|
+
declare interface GroupByColumn extends BaseColumn {
|
|
563
|
+
role: 'groupby';
|
|
564
|
+
granularity?: Granularity;
|
|
565
|
+
format?: string;
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
declare interface GroupByField extends Field {
|
|
569
|
+
role: 'groupby';
|
|
570
|
+
granularity?: 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
571
|
+
/**
|
|
572
|
+
* Optional SQL expression for grouping (e.g., DATE_TRUNC('month', order_date)).
|
|
573
|
+
* If present, used in SELECT and GROUP BY instead of just the column name.
|
|
574
|
+
*/
|
|
575
|
+
expression?: string;
|
|
576
|
+
timeDrillPath?: TimeDrillStep[];
|
|
577
|
+
}
|
|
578
|
+
|
|
174
579
|
export declare type HtmlOptions = {
|
|
175
580
|
html: string;
|
|
176
581
|
};
|
|
177
582
|
|
|
583
|
+
declare interface InlineDrillInteraction {
|
|
584
|
+
mode: 'inlineDrill';
|
|
585
|
+
filterFields: Field[];
|
|
586
|
+
fetchMode?: 'lazy' | 'preloaded';
|
|
587
|
+
inlineLimit?: number;
|
|
588
|
+
label?: string;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
declare interface Join {
|
|
592
|
+
id: string;
|
|
593
|
+
source: DatabaseEntityReference;
|
|
594
|
+
target: DatabaseEntityReference;
|
|
595
|
+
joinType: 'INNER' | 'LEFT' | 'RIGHT' | 'FULL';
|
|
596
|
+
joinKeyGroups: JoinKeyGroup[];
|
|
597
|
+
sequence: number;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
declare interface JoinKey {
|
|
601
|
+
id?: string;
|
|
602
|
+
source: Field;
|
|
603
|
+
target: Field;
|
|
604
|
+
operator: string;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
declare interface JoinKeyGroup {
|
|
608
|
+
id: string;
|
|
609
|
+
operator: string;
|
|
610
|
+
keys: JoinKey[];
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
declare interface JoinPlan {
|
|
614
|
+
baseEntity: DatabaseEntityReference;
|
|
615
|
+
joins: Join[];
|
|
616
|
+
}
|
|
617
|
+
|
|
178
618
|
export declare type KPICardProps = {
|
|
179
619
|
card: TCard;
|
|
180
620
|
isLoading?: boolean;
|
|
181
621
|
renderFilterInfo?: () => JSX.Element | null;
|
|
182
622
|
};
|
|
183
623
|
|
|
624
|
+
export declare type Level = 'database' | 'schema' | 'table';
|
|
625
|
+
|
|
184
626
|
export declare type LoadingProps = {
|
|
185
627
|
message?: string;
|
|
186
628
|
};
|
|
187
629
|
|
|
630
|
+
declare type LogicalOperator = 'AND' | 'OR';
|
|
631
|
+
|
|
632
|
+
declare interface MetricColumn extends BaseColumn {
|
|
633
|
+
role: 'metric';
|
|
634
|
+
aggregate: AggregateFunction;
|
|
635
|
+
aliasTemplate?: string;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
declare interface MetricField extends Field {
|
|
639
|
+
role: 'metric';
|
|
640
|
+
aggregate: AggregateFunction;
|
|
641
|
+
/**
|
|
642
|
+
* Optional SQL expression for the metric (e.g., ship_date - order_date).
|
|
643
|
+
* If present, used as aggregate(expression) instead of aggregate(name).
|
|
644
|
+
*/
|
|
645
|
+
expression?: string;
|
|
646
|
+
/**
|
|
647
|
+
* Optional parameters for future extensibility (e.g., window functions).
|
|
648
|
+
* * Example:
|
|
649
|
+
* {
|
|
650
|
+
aggregate: "SUM",
|
|
651
|
+
name: "sales",
|
|
652
|
+
parameters: {
|
|
653
|
+
window: "PARTITION BY region ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW"
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
{
|
|
658
|
+
aggregate: "COUNT",
|
|
659
|
+
name: "order_id",
|
|
660
|
+
parameters: {
|
|
661
|
+
filter: "status = 'Active'"
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
*/
|
|
665
|
+
parameters?: {
|
|
666
|
+
filters?: FilterGroup;
|
|
667
|
+
};
|
|
668
|
+
aliasTemplate?: string;
|
|
669
|
+
valueAliases?: Record<string, string>;
|
|
670
|
+
}
|
|
671
|
+
|
|
188
672
|
declare type NoneOptions = {};
|
|
189
673
|
|
|
190
674
|
export declare type NumberAxisFormat = {
|
|
@@ -201,8 +685,12 @@ export declare type NumberOptions = {
|
|
|
201
685
|
colorRanges?: ColorRange[];
|
|
202
686
|
};
|
|
203
687
|
|
|
688
|
+
declare type OldFilterValue = string | number | null | (string | number)[] | RangeValue;
|
|
689
|
+
|
|
204
690
|
declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
|
|
205
691
|
|
|
692
|
+
declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in' | 'between' | 'isNull' | 'isNotNull';
|
|
693
|
+
|
|
206
694
|
declare type OptionsMap = {
|
|
207
695
|
number: NumberOptions;
|
|
208
696
|
string: StringOptions;
|
|
@@ -211,10 +699,27 @@ declare type OptionsMap = {
|
|
|
211
699
|
none: NoneOptions;
|
|
212
700
|
};
|
|
213
701
|
|
|
702
|
+
declare interface OrderBy {
|
|
703
|
+
columnId: string;
|
|
704
|
+
direction: 'asc' | 'desc';
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
/**
|
|
708
|
+
* Pagination configuration for table queries
|
|
709
|
+
*/
|
|
710
|
+
declare interface PaginationConfig {
|
|
711
|
+
page: number;
|
|
712
|
+
pageSize: number;
|
|
713
|
+
}
|
|
714
|
+
|
|
214
715
|
declare type Params = {
|
|
215
716
|
[key: string]: string | number | string[] | number[];
|
|
216
717
|
};
|
|
217
718
|
|
|
719
|
+
declare interface PivotByField extends Field {
|
|
720
|
+
role: 'pivotby';
|
|
721
|
+
}
|
|
722
|
+
|
|
218
723
|
export declare type Placeholders = {
|
|
219
724
|
/**
|
|
220
725
|
* Placeholder for the card when there are no records to display.
|
|
@@ -226,6 +731,39 @@ export declare type Placeholders = {
|
|
|
226
731
|
SessionExpired?: React.ReactNode;
|
|
227
732
|
};
|
|
228
733
|
|
|
734
|
+
export declare type PluginType = 'custom' | 'standard';
|
|
735
|
+
|
|
736
|
+
declare interface QueryConfig {
|
|
737
|
+
groupByColumns?: GroupByColumn[];
|
|
738
|
+
pivotColumns?: GroupByColumn[];
|
|
739
|
+
metricColumns?: MetricColumn[];
|
|
740
|
+
filterColumns?: FilterByColumn[];
|
|
741
|
+
filters?: QueryFilter[];
|
|
742
|
+
limit?: number;
|
|
743
|
+
orderBy?: OrderBy[];
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
declare type QueryFilter = {
|
|
747
|
+
filterColumnName: string;
|
|
748
|
+
filterValue: OldFilterValue;
|
|
749
|
+
};
|
|
750
|
+
|
|
751
|
+
declare type RangeValue = {
|
|
752
|
+
gte?: string | number;
|
|
753
|
+
lte?: string | number;
|
|
754
|
+
lt?: string | number;
|
|
755
|
+
gt?: string | number;
|
|
756
|
+
};
|
|
757
|
+
|
|
758
|
+
declare type SelectedEntities = DatabaseEntityReference[] | DataModelEntityReference[] | FileEntityReference[];
|
|
759
|
+
|
|
760
|
+
export declare type SelectionState = Record<Level, string | null>;
|
|
761
|
+
|
|
762
|
+
declare interface SortByField extends Field {
|
|
763
|
+
role: 'sortby';
|
|
764
|
+
direction: 'asc' | 'desc';
|
|
765
|
+
}
|
|
766
|
+
|
|
229
767
|
export declare type SqlGen = {
|
|
230
768
|
measures?: {
|
|
231
769
|
name: string;
|
|
@@ -253,6 +791,14 @@ export declare type StyleProps = {
|
|
|
253
791
|
dashboardCardContainer?: string;
|
|
254
792
|
dashboardCard?: string;
|
|
255
793
|
/** grid-layout config */
|
|
794
|
+
/**
|
|
795
|
+
* Border radius for the control inputs such as filter input, tabs, date picker, etc.
|
|
796
|
+
*/
|
|
797
|
+
controlInputRadius?: number;
|
|
798
|
+
/**
|
|
799
|
+
* Border radius for the cards
|
|
800
|
+
*/
|
|
801
|
+
cardBorderRadius?: number;
|
|
256
802
|
gridLayout?: {
|
|
257
803
|
/** css class for `react-grid-layout` */
|
|
258
804
|
className?: string;
|
|
@@ -273,6 +819,15 @@ export declare type StyleProps = {
|
|
|
273
819
|
|
|
274
820
|
export declare function Surfboard({ showControls, showFooter, ...rest }: DashboardPlusProps): JSX_2.Element;
|
|
275
821
|
|
|
822
|
+
declare type TablePreferences = {
|
|
823
|
+
columnSettingsMap?: ColumnSettingsMap;
|
|
824
|
+
selectColumnVisible?: boolean;
|
|
825
|
+
columnVisibility?: Record<string, boolean>;
|
|
826
|
+
columnSizing?: ColumnSizingState;
|
|
827
|
+
pageSize?: number;
|
|
828
|
+
enableDevModePagination?: boolean;
|
|
829
|
+
};
|
|
830
|
+
|
|
276
831
|
export declare type TBaseQuery = {
|
|
277
832
|
id: string;
|
|
278
833
|
name: string;
|
|
@@ -294,7 +849,11 @@ export declare type TCard = {
|
|
|
294
849
|
type: TChartType;
|
|
295
850
|
sql?: string;
|
|
296
851
|
python?: string;
|
|
297
|
-
|
|
852
|
+
dataSource?: DataSource;
|
|
853
|
+
config?: CardConfig;
|
|
854
|
+
interactionConfig?: CardInteractionConfig;
|
|
855
|
+
paginationConfig?: PaginationConfig;
|
|
856
|
+
queryConfig?: QueryConfig;
|
|
298
857
|
customCfg?: any;
|
|
299
858
|
preferences?: TCardPreferences;
|
|
300
859
|
customCardPreferences?: TCustomCardPreferences;
|
|
@@ -303,6 +862,11 @@ export declare type TCard = {
|
|
|
303
862
|
lastSelectedSchema?: string;
|
|
304
863
|
lastSelectedTable?: string;
|
|
305
864
|
refreshInterval?: string;
|
|
865
|
+
/**
|
|
866
|
+
* Card-specific display preferences that override dashboard-level preferences.
|
|
867
|
+
* If not specified, the card will use the dashboard's display preferences.
|
|
868
|
+
*/
|
|
869
|
+
displayPreferences?: VisualDisplayPreferences;
|
|
306
870
|
};
|
|
307
871
|
|
|
308
872
|
export declare type TCardContext = {
|
|
@@ -330,6 +894,11 @@ export declare type TCardPreferences = {
|
|
|
330
894
|
datasetOptions?: TDatasetOptions[];
|
|
331
895
|
chartOptions?: TChartOptions;
|
|
332
896
|
columnSettings?: TColumnSetting<DisplayDataType>[];
|
|
897
|
+
colorConfig?: ColorConfig;
|
|
898
|
+
xAxisConfig?: AxisConfig;
|
|
899
|
+
yAxisConfig?: AxisConfig;
|
|
900
|
+
dataLabelsConfig?: TDataLabelsConfig;
|
|
901
|
+
tablePrefs?: TablePreferences;
|
|
333
902
|
allowDownload?: boolean;
|
|
334
903
|
customVisualCode?: string;
|
|
335
904
|
textVisualOptions?: {
|
|
@@ -345,32 +914,83 @@ export declare type TCardPreferences = {
|
|
|
345
914
|
projectionOffset?: [number, number];
|
|
346
915
|
colorScale?: string;
|
|
347
916
|
};
|
|
917
|
+
kpiVisualOptions?: {
|
|
918
|
+
lowerIsBetter?: boolean;
|
|
919
|
+
countryLogoId?: string;
|
|
920
|
+
valueAlignment?: 'left' | 'center';
|
|
921
|
+
formatOptions?: TFormatOptions;
|
|
922
|
+
metricComparison?: {
|
|
923
|
+
enabled?: boolean;
|
|
924
|
+
calculationType?: 'difference' | 'change' | 'change_difference' | 'ratio';
|
|
925
|
+
formatOptions?: TFormatOptions;
|
|
926
|
+
showArrow?: boolean;
|
|
927
|
+
showColor?: boolean;
|
|
928
|
+
conditionalLabel?: boolean;
|
|
929
|
+
labelName?: string;
|
|
930
|
+
position?: 'left' | 'right' | 'top';
|
|
931
|
+
conditionalLabels?: {
|
|
932
|
+
increase?: string;
|
|
933
|
+
decrease?: string;
|
|
934
|
+
noChange?: string;
|
|
935
|
+
};
|
|
936
|
+
colorConfig?: {
|
|
937
|
+
increase?: 'green' | 'red' | 'neutral' | string;
|
|
938
|
+
decrease?: 'green' | 'red' | 'neutral' | string;
|
|
939
|
+
noChange?: 'green' | 'red' | 'neutral' | string;
|
|
940
|
+
};
|
|
941
|
+
};
|
|
942
|
+
};
|
|
943
|
+
pivotTableOptions?: {
|
|
944
|
+
showRowTotals?: boolean;
|
|
945
|
+
showColumnTotals?: boolean;
|
|
946
|
+
showGrandTotal?: boolean;
|
|
947
|
+
sortRowsBy?: 'label' | 'total' | 'metric';
|
|
948
|
+
sortColumnsBy?: 'label' | 'total' | 'metric';
|
|
949
|
+
};
|
|
950
|
+
displayOptions?: {
|
|
951
|
+
showFilterInfo?: boolean;
|
|
952
|
+
showCardToolbar?: boolean;
|
|
953
|
+
showChrome?: boolean;
|
|
954
|
+
allowScroll?: boolean;
|
|
955
|
+
};
|
|
348
956
|
};
|
|
349
957
|
|
|
350
958
|
export declare type TChartOptions = {
|
|
351
959
|
type?: TChartType;
|
|
352
960
|
scales?: {
|
|
353
961
|
y?: {
|
|
354
|
-
type
|
|
355
|
-
min
|
|
356
|
-
max
|
|
357
|
-
ticks
|
|
358
|
-
stepSize
|
|
962
|
+
type?: 'linear' | 'logarithmic';
|
|
963
|
+
min?: number;
|
|
964
|
+
max?: number;
|
|
965
|
+
ticks?: {
|
|
966
|
+
stepSize?: number;
|
|
967
|
+
};
|
|
968
|
+
grid?: {
|
|
969
|
+
display?: boolean;
|
|
359
970
|
};
|
|
360
971
|
};
|
|
361
972
|
x?: {
|
|
362
|
-
type
|
|
363
|
-
min
|
|
364
|
-
max
|
|
365
|
-
ticks
|
|
366
|
-
stepSize
|
|
973
|
+
type?: 'linear' | 'logarithmic';
|
|
974
|
+
min?: number;
|
|
975
|
+
max?: number;
|
|
976
|
+
ticks?: {
|
|
977
|
+
stepSize?: number;
|
|
978
|
+
};
|
|
979
|
+
grid?: {
|
|
980
|
+
display?: boolean;
|
|
367
981
|
};
|
|
368
982
|
};
|
|
369
983
|
};
|
|
370
984
|
indexAxis?: 'x' | 'y' | undefined;
|
|
985
|
+
plugins?: {
|
|
986
|
+
legend?: TLegendOptions;
|
|
987
|
+
datalabels?: {
|
|
988
|
+
anchor?: string;
|
|
989
|
+
};
|
|
990
|
+
};
|
|
371
991
|
};
|
|
372
992
|
|
|
373
|
-
declare type TChartType = 'bar' | 'horizontalBar' | 'line' | 'pie' | 'doughnut' | 'radar' | 'polarArea' | 'bubble' | 'scatter' | 'stackedBar' | 'stackedLine' | 'table' | 'kpi' | 'pyramid' | 'range' | 'text' | 'map' | 'custom';
|
|
993
|
+
declare type TChartType = 'bar' | 'horizontalBar' | 'line' | 'pie' | 'doughnut' | 'radar' | 'polarArea' | 'bubble' | 'scatter' | 'stackedBar' | 'stackedLine' | 'table' | 'pivotTable' | 'aggregateTable' | 'kpi' | 'pyramid' | 'tornado' | 'range' | 'text' | 'map' | 'funnel' | 'custom';
|
|
374
994
|
|
|
375
995
|
export declare type TColumnSetting<T extends DisplayDataType> = {
|
|
376
996
|
columnIdx: number;
|
|
@@ -385,6 +1005,7 @@ export declare type TCustomCardPreferences = {
|
|
|
385
1005
|
url: string;
|
|
386
1006
|
componentName: string;
|
|
387
1007
|
icon?: string;
|
|
1008
|
+
pluginChartType?: string;
|
|
388
1009
|
type?: 'iframe' | 'component';
|
|
389
1010
|
visualType?: 'single' | 'multiple';
|
|
390
1011
|
settings?: any;
|
|
@@ -402,6 +1023,7 @@ export declare type TCustomCardPreferences = {
|
|
|
402
1023
|
export declare type TDashboard = {
|
|
403
1024
|
id: string;
|
|
404
1025
|
title?: string;
|
|
1026
|
+
aiContext?: AIContext;
|
|
405
1027
|
description?: string;
|
|
406
1028
|
sheets?: TSheet[];
|
|
407
1029
|
style?: TStyle;
|
|
@@ -411,12 +1033,36 @@ export declare type TDashboard = {
|
|
|
411
1033
|
aiScopeTables?: AIScopeTable[];
|
|
412
1034
|
globalStyle?: TStyle;
|
|
413
1035
|
globalCacheConfig?: CacheConfig;
|
|
1036
|
+
emailSettings?: EmailSettings;
|
|
1037
|
+
defaultFilterValues?: TFilterValue[];
|
|
414
1038
|
};
|
|
415
1039
|
|
|
416
1040
|
export declare type TDataColumn = {
|
|
417
1041
|
column_name: string;
|
|
418
1042
|
data_type: string;
|
|
419
1043
|
is_nullable?: string;
|
|
1044
|
+
label?: string;
|
|
1045
|
+
description?: string;
|
|
1046
|
+
qualifiedFieldName?: string;
|
|
1047
|
+
};
|
|
1048
|
+
|
|
1049
|
+
export declare type TDataLabelsConfig = {
|
|
1050
|
+
enabled?: boolean;
|
|
1051
|
+
position?: 'center' | 'top' | 'bottom' | 'left' | 'right' | 'auto' | 'custom';
|
|
1052
|
+
anchor?: 'center' | 'start' | 'end';
|
|
1053
|
+
align?: 'center' | 'start' | 'end' | 'top' | 'bottom' | number;
|
|
1054
|
+
display?: 'auto' | boolean;
|
|
1055
|
+
format?: 'auto' | 'number' | 'currency' | 'percent' | 'none';
|
|
1056
|
+
formatOptions?: TFormatOptions;
|
|
1057
|
+
font?: {
|
|
1058
|
+
size?: number;
|
|
1059
|
+
weight?: 'normal' | 'bold';
|
|
1060
|
+
};
|
|
1061
|
+
color?: 'auto' | string;
|
|
1062
|
+
clamp?: boolean;
|
|
1063
|
+
clip?: boolean;
|
|
1064
|
+
rotation?: number;
|
|
1065
|
+
showTotal?: boolean;
|
|
420
1066
|
};
|
|
421
1067
|
|
|
422
1068
|
export declare type TDatasetOptions = {
|
|
@@ -432,6 +1078,11 @@ export declare type TDatasetOptions = {
|
|
|
432
1078
|
};
|
|
433
1079
|
};
|
|
434
1080
|
|
|
1081
|
+
export declare type TDbCapabilities = {
|
|
1082
|
+
path: Level[];
|
|
1083
|
+
labels?: Partial<Record<Level, string>>;
|
|
1084
|
+
};
|
|
1085
|
+
|
|
435
1086
|
export declare type TEvent = {
|
|
436
1087
|
type: 'success' | 'error' | 'info' | 'warning';
|
|
437
1088
|
message: any;
|
|
@@ -452,12 +1103,30 @@ declare type TFilter = {
|
|
|
452
1103
|
database: string;
|
|
453
1104
|
sql: string;
|
|
454
1105
|
operation: Operation;
|
|
1106
|
+
applyToSheetIds?: string[];
|
|
1107
|
+
excludeSheetIds?: string[];
|
|
1108
|
+
applyToCardIds?: string[];
|
|
1109
|
+
excludeCardIds?: string[];
|
|
455
1110
|
};
|
|
456
1111
|
|
|
457
1112
|
declare type TFilterValue = FilterForString | FilterForEqual | FilterForCompare | FilterForBetween | FilterForIn | FilterForDate;
|
|
458
1113
|
|
|
1114
|
+
export declare type TFormatOptions = {
|
|
1115
|
+
type?: 'auto' | 'number' | 'currency' | 'percent' | 'scientific' | 'date';
|
|
1116
|
+
decimalPlaces?: number;
|
|
1117
|
+
currency?: string;
|
|
1118
|
+
locale?: string;
|
|
1119
|
+
prefix?: string;
|
|
1120
|
+
suffix?: string;
|
|
1121
|
+
useSuffix?: boolean;
|
|
1122
|
+
negativeInParentheses?: boolean;
|
|
1123
|
+
multiplyBy?: number;
|
|
1124
|
+
dateFormat?: string;
|
|
1125
|
+
};
|
|
1126
|
+
|
|
459
1127
|
export declare type TFrame = {
|
|
460
1128
|
id: string;
|
|
1129
|
+
visualId?: string;
|
|
461
1130
|
filterId?: string;
|
|
462
1131
|
cards: TCard[];
|
|
463
1132
|
activeCardId: string;
|
|
@@ -465,6 +1134,21 @@ export declare type TFrame = {
|
|
|
465
1134
|
|
|
466
1135
|
export declare type Theme = 'dark' | 'light' | 'system';
|
|
467
1136
|
|
|
1137
|
+
declare interface TimeDrillStep {
|
|
1138
|
+
granularity: TimeGranularity;
|
|
1139
|
+
next?: TimeGranularity;
|
|
1140
|
+
comparison?: 'previous_year' | 'previous_period';
|
|
1141
|
+
rollingWindow?: number;
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
1145
|
+
|
|
1146
|
+
export declare type TLegendOptions = {
|
|
1147
|
+
display?: boolean;
|
|
1148
|
+
position?: 'top' | 'left' | 'bottom' | 'right';
|
|
1149
|
+
align?: 'start' | 'center' | 'end';
|
|
1150
|
+
};
|
|
1151
|
+
|
|
468
1152
|
export declare type TLens = {
|
|
469
1153
|
id: string;
|
|
470
1154
|
name: string;
|
|
@@ -492,4 +1176,41 @@ export declare type TStyle = {
|
|
|
492
1176
|
dark?: StyleProps;
|
|
493
1177
|
};
|
|
494
1178
|
|
|
1179
|
+
/**
|
|
1180
|
+
* Display mode for visual components - controls which UI elements are shown
|
|
1181
|
+
*/
|
|
1182
|
+
export declare type VisualDisplayMode = 'full' | 'content-only' | 'print' | 'embed' | 'table-print';
|
|
1183
|
+
|
|
1184
|
+
/**
|
|
1185
|
+
* Display preferences for controlling visual component rendering
|
|
1186
|
+
*/
|
|
1187
|
+
export declare type VisualDisplayPreferences = {
|
|
1188
|
+
/**
|
|
1189
|
+
* Predefined display mode
|
|
1190
|
+
* - 'full': All UI elements (default)
|
|
1191
|
+
* - 'content-only': Just the visualization/table content
|
|
1192
|
+
* - 'print': Optimized for printing (shows title and description, hides interactive elements)
|
|
1193
|
+
* - 'embed': Minimal chrome for embedding in other contexts
|
|
1194
|
+
*/
|
|
1195
|
+
mode?: VisualDisplayMode;
|
|
1196
|
+
/**
|
|
1197
|
+
* Override specific UI elements visibility
|
|
1198
|
+
* These overrides take precedence over the mode presets
|
|
1199
|
+
*/
|
|
1200
|
+
overrides?: {
|
|
1201
|
+
showHeader?: boolean;
|
|
1202
|
+
showTitle?: boolean;
|
|
1203
|
+
showDescription?: boolean;
|
|
1204
|
+
showTabs?: boolean;
|
|
1205
|
+
showFooter?: boolean;
|
|
1206
|
+
showFilters?: boolean;
|
|
1207
|
+
showBreadcrumbs?: boolean;
|
|
1208
|
+
showRefreshIndicator?: boolean;
|
|
1209
|
+
showFilterInfo?: boolean;
|
|
1210
|
+
showPagination?: boolean;
|
|
1211
|
+
showTableToolbar?: boolean;
|
|
1212
|
+
showColumnSettings?: boolean;
|
|
1213
|
+
};
|
|
1214
|
+
};
|
|
1215
|
+
|
|
495
1216
|
export { }
|