react-semaphor 0.1.449 → 0.1.453
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/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +115 -109
- package/dist/appearance/index.cjs +1 -1
- package/dist/appearance/index.js +1 -1
- package/dist/brand-studio/index.cjs +4 -4
- package/dist/brand-studio/index.js +15 -13
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +39 -2131
- package/dist/chunks/{analyze-result-contract-BHb7sUUW.cjs → analyze-result-contract-Dxw66nUG.cjs} +1 -1
- package/dist/chunks/{analyze-result-contract-T-0Ntzys.js → analyze-result-contract-GHKFwThg.js} +1 -1
- package/dist/chunks/canonical-result-keys-Drc2x-lf.cjs +1 -0
- package/dist/chunks/canonical-result-keys-KLk__J_O.js +466 -0
- package/dist/chunks/color-CJvdlFM_.js +2162 -0
- package/dist/chunks/color-CyB5o13F.cjs +4 -0
- package/dist/chunks/{common-types-CQ6SHfLk.cjs → common-types-Ci66eflG.cjs} +1 -1
- package/dist/chunks/{common-types-B7Jk3Rtj.js → common-types-F6qk6PPS.js} +1 -1
- package/dist/chunks/contracts-CoCOpd_i.js +11 -0
- package/dist/chunks/contracts-CtB2VONT.cjs +1 -0
- package/dist/chunks/{dashboard-briefing-launcher-DCHiEkLE.js → dashboard-briefing-launcher-CFpX0WX3.js} +86 -84
- package/dist/chunks/dashboard-briefing-launcher-mUXWuiOZ.cjs +26 -0
- package/dist/chunks/{dashboard-controls-DwRFCcHV.js → dashboard-controls-BeYAmOJc.js} +15 -13
- package/dist/chunks/{dashboard-controls-CaFioayc.cjs → dashboard-controls-SoNubIu1.cjs} +1 -1
- package/dist/chunks/dashboard-json-BublPnQ4.cjs +1 -0
- package/dist/chunks/{dashboard-json-WoILbfTe.js → dashboard-json-DeLUagVV.js} +25 -23
- package/dist/chunks/edit-dashboard-visual-CrvPcO7A.cjs +172 -0
- package/dist/chunks/{edit-dashboard-visual-ciFhxqaI.js → edit-dashboard-visual-Go0h82DR.js} +6925 -6947
- package/dist/chunks/editor-action-buttons-1Lo0fIh7.cjs +16 -0
- package/dist/chunks/{editor-action-buttons-BPo_45pM.js → editor-action-buttons-BFNtjFzO.js} +41 -39
- package/dist/chunks/format-types-CFHQoIuk.js +1350 -0
- package/dist/chunks/format-types-PSZZ7hG8.cjs +1 -0
- package/dist/chunks/index-B3ZugihZ.js +3713 -0
- package/dist/chunks/{index-CPuawpXJ.js → index-BsH32bn1.js} +47472 -47845
- package/dist/chunks/index-ByFbacH7.cjs +1 -0
- package/dist/chunks/index-CACdoqu3.js +318 -0
- package/dist/chunks/index-DSKR3nKn.js +421 -0
- package/dist/chunks/index-DjiIh_9n.cjs +4 -0
- package/dist/chunks/index-F25jnH0p.cjs +1 -0
- package/dist/chunks/index-q12_nNUS.cjs +1392 -0
- package/dist/chunks/{metric-comparison-97zHGEx5.js → metric-comparison-D0T0MKRK.js} +1 -1
- package/dist/chunks/{metric-comparison-CUAJ8n4y.cjs → metric-comparison-DYR3RXam.cjs} +1 -1
- package/dist/chunks/pivot-header-presentation-DcfPaCiy.cjs +4 -0
- package/dist/chunks/pivot-header-presentation-nk604qc1.js +557 -0
- package/dist/chunks/{pivot-result-identity-CwJWpKI7.js → pivot-result-identity-C43Ai5Kr.js} +1 -1
- package/dist/chunks/{pivot-result-identity-CDLRT-YG.cjs → pivot-result-identity-CRUokNgm.cjs} +1 -1
- package/dist/chunks/pivot-result-lifecycle-4kSe0Hk1.js +1642 -0
- package/dist/chunks/pivot-result-lifecycle-BiJepH5S.cjs +1 -0
- package/dist/chunks/raw-temporal-contract-BF7PjBY9.js +64 -0
- package/dist/chunks/raw-temporal-contract-CxbRFwnd.cjs +1 -0
- package/dist/chunks/report-preferences-dialog-BEVZAE3m.cjs +1 -0
- package/dist/chunks/report-preferences-dialog-BNV7qXYH.js +723 -0
- package/dist/chunks/{report-runtime-context-bCy3CVzK.js → report-runtime-context-BJQDu2fV.js} +1 -1
- package/dist/chunks/{report-runtime-context-C8LZFsqV.cjs → report-runtime-context-DjYqLV-c.cjs} +1 -1
- package/dist/chunks/saved-temporal-bucket-format-DiZdQXOL.js +924 -0
- package/dist/chunks/saved-temporal-bucket-format-Gfbh4IiP.cjs +1 -0
- package/dist/chunks/switch-CjJ6FHYJ.cjs +138 -0
- package/dist/chunks/{switch-BXet-Sno.js → switch-DgLwr7O-.js} +4352 -5249
- package/dist/chunks/temporal-bucket-Dnj8qT9l.cjs +1 -0
- package/dist/chunks/temporal-bucket-FBZGrDCe.js +560 -0
- package/dist/chunks/temporal-bucket-authoring-7hv2laOG.cjs +1 -0
- package/dist/chunks/temporal-bucket-authoring-FIRnJz0e.js +221 -0
- package/dist/chunks/{temporal-bucket-contract-_F6vNhhH.js → temporal-bucket-contract-BQOj6Frl.js} +1 -1
- package/dist/chunks/{temporal-bucket-contract-ChDBWX8I.cjs → temporal-bucket-contract-anl4h-vg.cjs} +1 -1
- package/dist/chunks/{token-types-BHR58aTy.js → token-types-CRpQJ4kv.js} +1 -1
- package/dist/chunks/{token-types-BdQ8kHBm.cjs → token-types-D0i0IUX3.cjs} +1 -1
- package/dist/chunks/{update-policy-BxvYMYz0.cjs → update-policy-C1i9bgsy.cjs} +1 -1
- package/dist/chunks/{update-policy-g0rCQ9BM.js → update-policy-CaJz9aPG.js} +1 -1
- package/dist/chunks/{validators-Cs74WVie.js → validators-DeMXwRON.js} +253 -233
- package/dist/chunks/validators-Dm7Kpz6p.cjs +1 -0
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +2 -2
- package/dist/dashboard-authoring/index.cjs +3 -3
- package/dist/dashboard-authoring/index.js +32 -29
- package/dist/data-app-builder/index.cjs +1 -1
- package/dist/data-app-builder/index.js +2 -2
- package/dist/data-app-codegen/index.cjs +1 -1
- package/dist/data-app-codegen/index.js +2 -2
- package/dist/data-app-codegen-node/index.cjs +1 -1
- package/dist/data-app-codegen-node/index.js +3 -3
- package/dist/data-app-sdk/index.cjs +1 -1
- package/dist/data-app-sdk/index.js +3 -3
- package/dist/data-app-sdk-adapters/index.cjs +1 -1
- package/dist/data-app-sdk-adapters/index.js +2 -2
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +3 -3
- package/dist/format-utils/index.cjs +3 -3
- package/dist/format-utils/index.js +162 -145
- package/dist/index.cjs +1 -1
- package/dist/index.js +157 -155
- package/dist/report-runtime-context/index.cjs +1 -1
- package/dist/report-runtime-context/index.js +2 -2
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +3 -3
- package/dist/types/analytics-protocol.d.ts +37 -0
- package/dist/types/briefings.d.ts +718 -7
- package/dist/types/dashboard-assistant.d.ts +18 -0
- package/dist/types/dashboard-authoring.d.ts +52 -2
- package/dist/types/dashboard.d.ts +128 -0
- package/dist/types/data-app-sdk-validation.d.ts +13 -0
- package/dist/types/data-app-sdk.d.ts +13 -0
- package/dist/types/format-utils.d.ts +190 -3
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/main.d.ts +103 -12
- package/dist/types/shared.d.ts +5 -0
- package/dist/types/surfboard.d.ts +129 -1
- package/dist/types/types.d.ts +98 -6
- package/dist/types/value-format-preferences.d.ts +3 -0
- package/package.json +2 -1
- package/dist/chunks/card-config-utils-15sRtebL.cjs +0 -1
- package/dist/chunks/card-config-utils-BYZ5MJOh.js +0 -16
- package/dist/chunks/dashboard-briefing-launcher-DDgDr2s3.cjs +0 -26
- package/dist/chunks/dashboard-json-CYtvwtvj.cjs +0 -1
- package/dist/chunks/edit-dashboard-visual-DwKcvlsF.cjs +0 -177
- package/dist/chunks/editor-action-buttons-BVmsk0Aj.cjs +0 -16
- package/dist/chunks/format-types-CSv0V7mm.cjs +0 -1
- package/dist/chunks/format-types-DZGgYj39.js +0 -1663
- package/dist/chunks/index-CJdxSyQq.js +0 -2578
- package/dist/chunks/index-DPv8_Ild.cjs +0 -1395
- package/dist/chunks/index-DRlMUglg.cjs +0 -4
- package/dist/chunks/pivot-result-lifecycle-BBabQ_da.js +0 -914
- package/dist/chunks/pivot-result-lifecycle-DPc0ANwk.cjs +0 -4
- package/dist/chunks/presentation-execution-BLfPTGX_.js +0 -637
- package/dist/chunks/presentation-execution-BTV-Q43g.cjs +0 -1
- package/dist/chunks/report-preferences-dialog-D9ZCGh9l.js +0 -691
- package/dist/chunks/report-preferences-dialog-DaqTEcac.cjs +0 -1
- package/dist/chunks/switch-Cjk6G06r.cjs +0 -138
- package/dist/chunks/temporal-bucket-BnPxGrAi.js +0 -446
- package/dist/chunks/temporal-bucket-authoring-CPTwHzvs.cjs +0 -1
- package/dist/chunks/temporal-bucket-authoring-CgOuakGW.js +0 -205
- package/dist/chunks/temporal-bucket-pMnV-4Nj.cjs +0 -1
- package/dist/chunks/temporal-result-owner-6peubmhU.js +0 -443
- package/dist/chunks/temporal-result-owner-f6-i65Fb.cjs +0 -1
- package/dist/chunks/validators-9D4KBqKD.cjs +0 -1
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
import { ColumnSizingState } from '@tanstack/react-table';
|
|
2
|
+
import { FontSpec } from 'chart.js';
|
|
2
3
|
|
|
3
4
|
declare type AggregateFunction = 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'MEDIAN' | 'DISTINCT';
|
|
4
5
|
|
|
6
|
+
declare type AIContext = {
|
|
7
|
+
selectedEntities: SelectedEntities;
|
|
8
|
+
fileAttachments?: FileAttachment[];
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
declare type AIScopeTable = {
|
|
12
|
+
connectionId: string;
|
|
13
|
+
connectionType: string;
|
|
14
|
+
databaseName: string;
|
|
15
|
+
schemaName: string;
|
|
16
|
+
tableName: string;
|
|
17
|
+
datamodelId: string;
|
|
18
|
+
datamodelName: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
5
21
|
declare type AxisConfig = {
|
|
6
22
|
enabled?: boolean;
|
|
7
23
|
name?: {
|
|
@@ -34,6 +50,24 @@ declare interface BaseColumn {
|
|
|
34
50
|
table?: string;
|
|
35
51
|
}
|
|
36
52
|
|
|
53
|
+
declare type BaseCustomCard = {
|
|
54
|
+
cardId: string;
|
|
55
|
+
replaceDefault?: boolean;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
declare type BaseFilter = {
|
|
59
|
+
filterId: TFilter['id'];
|
|
60
|
+
expression?: string;
|
|
61
|
+
name: string;
|
|
62
|
+
valueType: 'string' | 'number' | 'date' | 'boolean';
|
|
63
|
+
connectionType?: 'database' | 'api';
|
|
64
|
+
dataType?: string;
|
|
65
|
+
fieldMeta?: FilterFieldMeta;
|
|
66
|
+
semanticContext?: FilterSemanticContext;
|
|
67
|
+
/** Governed meaning for canonical grouped-temporal filter values. */
|
|
68
|
+
temporalBucket?: TemporalBucketMetadata;
|
|
69
|
+
};
|
|
70
|
+
|
|
37
71
|
export declare const BRIEFING_ARTIFACT_FORMATS: readonly ["markdown", "html"];
|
|
38
72
|
|
|
39
73
|
export declare const BRIEFING_CONTENT_LIMITS: {
|
|
@@ -315,7 +349,6 @@ export declare type BriefingDraft = {
|
|
|
315
349
|
presentation?: Partial<BriefingPresentation>;
|
|
316
350
|
limits?: BriefingLimits;
|
|
317
351
|
deliveryConfig?: BriefingDeliveryConfig | null;
|
|
318
|
-
resolvedFormats?: ResolvedPresentationEntry[];
|
|
319
352
|
};
|
|
320
353
|
|
|
321
354
|
export declare type BriefingEntityPresentation = {
|
|
@@ -337,8 +370,7 @@ declare type BriefingFragments = {
|
|
|
337
370
|
|
|
338
371
|
export declare type BriefingJobConfig = {
|
|
339
372
|
kind: BriefingKind;
|
|
340
|
-
|
|
341
|
-
resolvedFormats?: ResolvedPresentationEntry[];
|
|
373
|
+
presentationExecutionSnapshot: PresentationExecutionSnapshot;
|
|
342
374
|
source: BriefingSource;
|
|
343
375
|
body: BriefingBody;
|
|
344
376
|
attachments: BriefingAttachment[];
|
|
@@ -479,14 +511,32 @@ export declare type BriefingWebhookConfig = {
|
|
|
479
511
|
secretEncrypted?: string;
|
|
480
512
|
};
|
|
481
513
|
|
|
482
|
-
export declare function buildBriefingJobConfig(input: Omit<Partial<BriefingJobConfig>, 'kind' | 'body' | '
|
|
514
|
+
export declare function buildBriefingJobConfig(input: Omit<Partial<BriefingJobConfig>, 'kind' | 'body' | 'presentationExecutionSnapshot'> & Pick<BriefingJobConfig, 'body' | 'presentationExecutionSnapshot'>): BriefingJobConfig;
|
|
483
515
|
|
|
484
516
|
export declare function buildBriefingScheduleExpr(view: BriefingScheduleViewModel): string;
|
|
485
517
|
|
|
486
518
|
export declare function buildCreateBriefingRequest(draft: BriefingDraft): CreateBriefingRequest;
|
|
487
519
|
|
|
520
|
+
/**
|
|
521
|
+
* Captures resolved temporal presentation at a one-time export click or a
|
|
522
|
+
* recurring-rule save. Targets use stable field IDs; result-column keys are
|
|
523
|
+
* resolved later from the executing query's authoritative column map.
|
|
524
|
+
*/
|
|
525
|
+
export declare function buildDashboardTemporalSnapshotEntries(input: {
|
|
526
|
+
dashboard: TDashboard;
|
|
527
|
+
selections: readonly DashboardTemporalSnapshotSelection[];
|
|
528
|
+
resolveCardConfig?: (card: TCard) => CardConfig;
|
|
529
|
+
valueFormatPreferences: ResolvedValueFormatPreferences;
|
|
530
|
+
calendar: Pick<CalendarContext, 'tz'>;
|
|
531
|
+
}): ResolvedPresentationEntry[];
|
|
532
|
+
|
|
488
533
|
export declare function buildUpdateBriefingRequest(draft: BriefingDraft): UpdateBriefingRequest;
|
|
489
534
|
|
|
535
|
+
declare type CacheConfig = {
|
|
536
|
+
ttl: string;
|
|
537
|
+
status: 'on' | 'on-refresh' | 'off';
|
|
538
|
+
};
|
|
539
|
+
|
|
490
540
|
/**
|
|
491
541
|
* Formula metadata for calculated fields (UI-only metadata)
|
|
492
542
|
* This is supplementary runtime/compiler data to help dashboard UI display,
|
|
@@ -635,6 +685,24 @@ declare interface CardInteractionConfig {
|
|
|
635
685
|
drillHierarchies?: DrillHierarchy[];
|
|
636
686
|
}
|
|
637
687
|
|
|
688
|
+
declare type CardWithContent = BaseCustomCard & {
|
|
689
|
+
content: React.FC<{
|
|
690
|
+
card: TCard;
|
|
691
|
+
}>;
|
|
692
|
+
footer?: React.FC<{
|
|
693
|
+
card: TCard;
|
|
694
|
+
}>;
|
|
695
|
+
};
|
|
696
|
+
|
|
697
|
+
declare type CardWithFooter = BaseCustomCard & {
|
|
698
|
+
content?: React.FC<{
|
|
699
|
+
card: TCard;
|
|
700
|
+
}>;
|
|
701
|
+
footer: React.FC<{
|
|
702
|
+
card: TCard;
|
|
703
|
+
}>;
|
|
704
|
+
};
|
|
705
|
+
|
|
638
706
|
declare interface ClickFilterInteraction {
|
|
639
707
|
mode: 'clickFilter';
|
|
640
708
|
/**
|
|
@@ -876,6 +944,11 @@ declare type ControlBinding = {
|
|
|
876
944
|
mapping: Record<string, string>;
|
|
877
945
|
} | CurrencyPresentationBinding;
|
|
878
946
|
|
|
947
|
+
declare type ControlDashboardInput = DashboardInputBase & {
|
|
948
|
+
kind: 'control';
|
|
949
|
+
control: ControlDefinition;
|
|
950
|
+
};
|
|
951
|
+
|
|
879
952
|
declare type ControlDefinition = {
|
|
880
953
|
id: string;
|
|
881
954
|
label: string;
|
|
@@ -939,7 +1012,6 @@ export declare type CreateBriefingRequest = {
|
|
|
939
1012
|
presentation: BriefingPresentation;
|
|
940
1013
|
limits?: BriefingLimits;
|
|
941
1014
|
deliveryConfig: BriefingDeliveryConfig | null;
|
|
942
|
-
resolvedFormats?: ResolvedPresentationEntry[];
|
|
943
1015
|
};
|
|
944
1016
|
|
|
945
1017
|
declare type CurrencyPresentationBinding = {
|
|
@@ -959,8 +1031,87 @@ declare type CurrencyPresentationTarget = {
|
|
|
959
1031
|
measureId: string;
|
|
960
1032
|
};
|
|
961
1033
|
|
|
1034
|
+
declare type CustomCard = CardWithContent | CardWithFooter;
|
|
1035
|
+
|
|
1036
|
+
declare type DashboardAIContext = AIContext & {
|
|
1037
|
+
mode?: DashboardAIContextMode;
|
|
1038
|
+
};
|
|
1039
|
+
|
|
1040
|
+
declare type DashboardAIContextMode = 'auto' | 'fixed';
|
|
1041
|
+
|
|
1042
|
+
declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
|
|
1043
|
+
|
|
1044
|
+
declare type DashboardInputBase = {
|
|
1045
|
+
id: string;
|
|
1046
|
+
label: string;
|
|
1047
|
+
variableName: string;
|
|
1048
|
+
description?: string;
|
|
1049
|
+
requiredAtExecution?: boolean;
|
|
1050
|
+
scope: DashboardInputScope;
|
|
1051
|
+
runtimeScope: DashboardInputRuntimeScope;
|
|
1052
|
+
presentation?: DashboardInputPresentation;
|
|
1053
|
+
exports?: DashboardInputExportKey[];
|
|
1054
|
+
compatibility?: DashboardInputCompatibilityMetadata;
|
|
1055
|
+
};
|
|
1056
|
+
|
|
1057
|
+
declare type DashboardInputCompatibilityMetadata = {
|
|
1058
|
+
source: 'dashboardFilter';
|
|
1059
|
+
filterId: string;
|
|
1060
|
+
} | {
|
|
1061
|
+
source: 'dashboardControl';
|
|
1062
|
+
controlId: string;
|
|
1063
|
+
} | {
|
|
1064
|
+
source: 'cardInlineFilter';
|
|
1065
|
+
cardId: string;
|
|
1066
|
+
filterId: string;
|
|
1067
|
+
} | {
|
|
1068
|
+
source: 'cardControl';
|
|
1069
|
+
cardId: string;
|
|
1070
|
+
controlId: string;
|
|
1071
|
+
} | {
|
|
1072
|
+
source: 'documentInput';
|
|
1073
|
+
sheetId: string;
|
|
1074
|
+
inputId: string;
|
|
1075
|
+
};
|
|
1076
|
+
|
|
962
1077
|
declare type DashboardInputExportKey = 'label' | 'value' | 'start' | 'end' | 'range';
|
|
963
1078
|
|
|
1079
|
+
declare type DashboardInputPresentation = {
|
|
1080
|
+
placement?: 'toolbar' | 'card_header' | 'advanced' | 'hidden';
|
|
1081
|
+
widthPx?: number;
|
|
1082
|
+
order?: number;
|
|
1083
|
+
};
|
|
1084
|
+
|
|
1085
|
+
declare type DashboardInputRuntimeScope = 'shared' | 'perSheet' | 'perCard' | 'perDocumentSection';
|
|
1086
|
+
|
|
1087
|
+
declare type DashboardInputScope = {
|
|
1088
|
+
kind: 'allSheets';
|
|
1089
|
+
sheetKinds?: Array<'dashboard' | 'document'>;
|
|
1090
|
+
} | {
|
|
1091
|
+
kind: 'sheets';
|
|
1092
|
+
sheetIds: string[];
|
|
1093
|
+
} | {
|
|
1094
|
+
kind: 'cards';
|
|
1095
|
+
cardIds: string[];
|
|
1096
|
+
} | {
|
|
1097
|
+
kind: 'documentSections';
|
|
1098
|
+
sheetId: string;
|
|
1099
|
+
sectionIds: string[];
|
|
1100
|
+
};
|
|
1101
|
+
|
|
1102
|
+
declare type DashboardInputSlot = ({
|
|
1103
|
+
status: 'set';
|
|
1104
|
+
value: DashboardInputValue;
|
|
1105
|
+
comparisonSelection?: GlobalDateComparisonSelection;
|
|
1106
|
+
}) | ({
|
|
1107
|
+
status: 'cleared';
|
|
1108
|
+
comparisonSelection?: GlobalDateComparisonSelection;
|
|
1109
|
+
}) | {
|
|
1110
|
+
status?: never;
|
|
1111
|
+
value?: never;
|
|
1112
|
+
comparisonSelection: GlobalDateComparisonSelection;
|
|
1113
|
+
};
|
|
1114
|
+
|
|
964
1115
|
declare type DashboardInputTextContent = Array<{
|
|
965
1116
|
type: 'text';
|
|
966
1117
|
value: string;
|
|
@@ -969,6 +1120,21 @@ declare type DashboardInputTextContent = Array<{
|
|
|
969
1120
|
ref: DashboardInputVariableRef;
|
|
970
1121
|
}>;
|
|
971
1122
|
|
|
1123
|
+
declare type DashboardInputValue = {
|
|
1124
|
+
kind: 'filter';
|
|
1125
|
+
filterValue: TFilterValue;
|
|
1126
|
+
} | {
|
|
1127
|
+
kind: 'control';
|
|
1128
|
+
value: unknown;
|
|
1129
|
+
};
|
|
1130
|
+
|
|
1131
|
+
declare type DashboardInputValues = {
|
|
1132
|
+
shared?: Record<string, DashboardInputSlot>;
|
|
1133
|
+
bySheetId?: Record<string, Record<string, DashboardInputSlot>>;
|
|
1134
|
+
byCardId?: Record<string, Record<string, DashboardInputSlot>>;
|
|
1135
|
+
byDocumentSectionId?: Record<string, Record<string, DashboardInputSlot>>;
|
|
1136
|
+
};
|
|
1137
|
+
|
|
972
1138
|
declare type DashboardInputVariableRef = {
|
|
973
1139
|
source: 'dashboardInput';
|
|
974
1140
|
inputId: string;
|
|
@@ -982,6 +1148,13 @@ declare type DashboardInputVariableRef = {
|
|
|
982
1148
|
key: 'generatedAt' | 'pageNumber' | 'pageCount';
|
|
983
1149
|
};
|
|
984
1150
|
|
|
1151
|
+
declare type DashboardTemporalSnapshotSelection = {
|
|
1152
|
+
dashboardId: string;
|
|
1153
|
+
sheetId?: string;
|
|
1154
|
+
cardId?: string;
|
|
1155
|
+
attachmentIndex?: number;
|
|
1156
|
+
};
|
|
1157
|
+
|
|
985
1158
|
declare interface DatabaseEntityReference {
|
|
986
1159
|
connectionId: string;
|
|
987
1160
|
connectionType: ConnectionType;
|
|
@@ -1056,6 +1229,11 @@ export declare function describeBriefingSchedule(expression: string, timezone: s
|
|
|
1056
1229
|
*/
|
|
1057
1230
|
declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
|
|
1058
1231
|
role: 'detail';
|
|
1232
|
+
/**
|
|
1233
|
+
* Query transport policy for ungrouped temporal values. This marker is
|
|
1234
|
+
* projected into executable config and is never persisted authoring state.
|
|
1235
|
+
*/
|
|
1236
|
+
dateValueMode?: 'canonical' | 'formatted';
|
|
1059
1237
|
dateFormat?: DateFormatValue;
|
|
1060
1238
|
customFormat?: string;
|
|
1061
1239
|
/**
|
|
@@ -1089,6 +1267,189 @@ declare type Dialect = 'mysql' | 'postgres' | 'bigquery' | 'redshift' | 'snowfla
|
|
|
1089
1267
|
|
|
1090
1268
|
declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'none';
|
|
1091
1269
|
|
|
1270
|
+
declare type DocumentChartSection = {
|
|
1271
|
+
id: string;
|
|
1272
|
+
type: 'chart';
|
|
1273
|
+
title?: string;
|
|
1274
|
+
card: TCard;
|
|
1275
|
+
heightPx: number;
|
|
1276
|
+
};
|
|
1277
|
+
|
|
1278
|
+
declare type DocumentControlInputDefinition = DocumentInputBase & {
|
|
1279
|
+
kind: 'control';
|
|
1280
|
+
control: ControlDefinition;
|
|
1281
|
+
exports?: DocumentInputExportKey[];
|
|
1282
|
+
};
|
|
1283
|
+
|
|
1284
|
+
declare type DocumentDefinition = {
|
|
1285
|
+
version: 1;
|
|
1286
|
+
page: DocumentPageSetup;
|
|
1287
|
+
runtime?: DocumentRuntimeSettings;
|
|
1288
|
+
inputs?: DocumentInputDefinition[];
|
|
1289
|
+
defaultInputValues?: Record<string, unknown>;
|
|
1290
|
+
header?: DocumentHeaderRegion;
|
|
1291
|
+
footer?: DocumentFooterRegion;
|
|
1292
|
+
sections: DocumentSection[];
|
|
1293
|
+
theme?: DocumentTheme;
|
|
1294
|
+
};
|
|
1295
|
+
|
|
1296
|
+
declare type DocumentFilterInputDefinition = DocumentInputBase & {
|
|
1297
|
+
kind: 'filter';
|
|
1298
|
+
filter: TFilter;
|
|
1299
|
+
exports?: DocumentInputExportKey[];
|
|
1300
|
+
};
|
|
1301
|
+
|
|
1302
|
+
declare type DocumentFooterRegion = DocumentRegionBase & {
|
|
1303
|
+
region: 'footer';
|
|
1304
|
+
layout: {
|
|
1305
|
+
type: 'preset';
|
|
1306
|
+
preset: 'mvp_footer';
|
|
1307
|
+
};
|
|
1308
|
+
};
|
|
1309
|
+
|
|
1310
|
+
declare type DocumentHeaderRegion = DocumentRegionBase & {
|
|
1311
|
+
region: 'header';
|
|
1312
|
+
layout: {
|
|
1313
|
+
type: 'preset';
|
|
1314
|
+
preset: 'mvp_header';
|
|
1315
|
+
};
|
|
1316
|
+
};
|
|
1317
|
+
|
|
1318
|
+
declare type DocumentImageRegionBlock = DocumentRegionBlockBase & {
|
|
1319
|
+
type: 'image';
|
|
1320
|
+
role?: 'logo';
|
|
1321
|
+
src: string;
|
|
1322
|
+
alt?: string;
|
|
1323
|
+
widthPx?: number;
|
|
1324
|
+
};
|
|
1325
|
+
|
|
1326
|
+
declare type DocumentInputBase = {
|
|
1327
|
+
id: string;
|
|
1328
|
+
label: string;
|
|
1329
|
+
variableName: string;
|
|
1330
|
+
requiredAtExecution: boolean;
|
|
1331
|
+
documentPlacement?: 'input_bar';
|
|
1332
|
+
description?: string;
|
|
1333
|
+
};
|
|
1334
|
+
|
|
1335
|
+
declare type DocumentInputDefinition = DocumentFilterInputDefinition | DocumentControlInputDefinition;
|
|
1336
|
+
|
|
1337
|
+
declare type DocumentInputExportKey = 'label' | 'value' | 'start' | 'end' | 'range';
|
|
1338
|
+
|
|
1339
|
+
declare type DocumentPageBreakSection = {
|
|
1340
|
+
id: string;
|
|
1341
|
+
type: 'page_break';
|
|
1342
|
+
};
|
|
1343
|
+
|
|
1344
|
+
declare type DocumentPageSetup = {
|
|
1345
|
+
size: 'letter' | 'a4';
|
|
1346
|
+
orientation: 'portrait' | 'landscape';
|
|
1347
|
+
margins: {
|
|
1348
|
+
top: number;
|
|
1349
|
+
right: number;
|
|
1350
|
+
bottom: number;
|
|
1351
|
+
left: number;
|
|
1352
|
+
unit: 'in' | 'mm';
|
|
1353
|
+
};
|
|
1354
|
+
};
|
|
1355
|
+
|
|
1356
|
+
declare type DocumentRegionBase = {
|
|
1357
|
+
enabled: boolean;
|
|
1358
|
+
heightPx?: number;
|
|
1359
|
+
layout: DocumentRegionLayout;
|
|
1360
|
+
blocks: DocumentRegionBlock[];
|
|
1361
|
+
};
|
|
1362
|
+
|
|
1363
|
+
declare type DocumentRegionBlock = DocumentTextRegionBlock | DocumentImageRegionBlock;
|
|
1364
|
+
|
|
1365
|
+
declare type DocumentRegionBlockBase = {
|
|
1366
|
+
id: string;
|
|
1367
|
+
area?: 'left' | 'center' | 'right' | 'title' | 'metadata' | 'note' | 'pageInfo';
|
|
1368
|
+
};
|
|
1369
|
+
|
|
1370
|
+
declare type DocumentRegionLayout = {
|
|
1371
|
+
type: 'preset';
|
|
1372
|
+
preset: 'mvp_header' | 'mvp_footer';
|
|
1373
|
+
};
|
|
1374
|
+
|
|
1375
|
+
declare type DocumentRuntimeSettings = {
|
|
1376
|
+
generatedAtFormat?: string;
|
|
1377
|
+
};
|
|
1378
|
+
|
|
1379
|
+
declare type DocumentSection = DocumentTextSection | DocumentTableSection | DocumentChartSection | DocumentSpacerSection | DocumentPageBreakSection;
|
|
1380
|
+
|
|
1381
|
+
declare type DocumentSpacerSection = {
|
|
1382
|
+
id: string;
|
|
1383
|
+
type: 'spacer';
|
|
1384
|
+
heightPx: number;
|
|
1385
|
+
};
|
|
1386
|
+
|
|
1387
|
+
declare type DocumentTableSection = {
|
|
1388
|
+
id: string;
|
|
1389
|
+
type: 'table';
|
|
1390
|
+
title?: string;
|
|
1391
|
+
card: TCard;
|
|
1392
|
+
table: {
|
|
1393
|
+
totalsRow?: boolean;
|
|
1394
|
+
columnFormatting?: Record<string, unknown>;
|
|
1395
|
+
repeatHeaderOnPageBreak?: boolean;
|
|
1396
|
+
rowHeightPx?: number;
|
|
1397
|
+
};
|
|
1398
|
+
};
|
|
1399
|
+
|
|
1400
|
+
declare type DocumentTextContent = DocumentTextNode[];
|
|
1401
|
+
|
|
1402
|
+
declare type DocumentTextInlineFormat = {
|
|
1403
|
+
bold?: boolean;
|
|
1404
|
+
italic?: boolean;
|
|
1405
|
+
underline?: boolean;
|
|
1406
|
+
};
|
|
1407
|
+
|
|
1408
|
+
declare type DocumentTextNode = {
|
|
1409
|
+
type: 'text';
|
|
1410
|
+
value: string;
|
|
1411
|
+
format?: DocumentTextInlineFormat;
|
|
1412
|
+
} | {
|
|
1413
|
+
type: 'variable';
|
|
1414
|
+
ref: DocumentVariableRef;
|
|
1415
|
+
format?: DocumentTextInlineFormat;
|
|
1416
|
+
};
|
|
1417
|
+
|
|
1418
|
+
declare type DocumentTextRegionBlock = DocumentRegionBlockBase & {
|
|
1419
|
+
type: 'text';
|
|
1420
|
+
role?: 'title' | 'metadata' | 'note' | 'pageInfo';
|
|
1421
|
+
content: DocumentTextContent;
|
|
1422
|
+
style?: DocumentTextStyle;
|
|
1423
|
+
};
|
|
1424
|
+
|
|
1425
|
+
declare type DocumentTextSection = {
|
|
1426
|
+
id: string;
|
|
1427
|
+
type: 'text';
|
|
1428
|
+
content: DocumentTextContent;
|
|
1429
|
+
style?: DocumentTextStyle;
|
|
1430
|
+
};
|
|
1431
|
+
|
|
1432
|
+
declare type DocumentTextStyle = {
|
|
1433
|
+
fontSize?: number;
|
|
1434
|
+
fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold';
|
|
1435
|
+
color?: string;
|
|
1436
|
+
align?: 'left' | 'center' | 'right';
|
|
1437
|
+
};
|
|
1438
|
+
|
|
1439
|
+
declare type DocumentTheme = {
|
|
1440
|
+
fontFamily?: string;
|
|
1441
|
+
primaryColor?: string;
|
|
1442
|
+
};
|
|
1443
|
+
|
|
1444
|
+
declare type DocumentVariableRef = {
|
|
1445
|
+
source: 'input';
|
|
1446
|
+
inputId: string;
|
|
1447
|
+
export: DocumentInputExportKey;
|
|
1448
|
+
} | {
|
|
1449
|
+
source: 'documentMeta';
|
|
1450
|
+
key: 'generatedAt' | 'pageNumber' | 'pageCount';
|
|
1451
|
+
};
|
|
1452
|
+
|
|
1092
1453
|
declare interface DrillDownInteraction {
|
|
1093
1454
|
mode: 'drillDown';
|
|
1094
1455
|
/**
|
|
@@ -1228,6 +1589,13 @@ declare interface DynamicDrillInteraction {
|
|
|
1228
1589
|
/* Excluded from this release type: drillField */
|
|
1229
1590
|
}
|
|
1230
1591
|
|
|
1592
|
+
declare type EmailSettings = {
|
|
1593
|
+
companyName: string;
|
|
1594
|
+
dashboardUrl: string;
|
|
1595
|
+
supportEmail: string;
|
|
1596
|
+
senderTitle: string;
|
|
1597
|
+
};
|
|
1598
|
+
|
|
1231
1599
|
declare type EntityType = 'table' | 'view' | 'materialized view' | 'model' | 'file' | 'dataset' | 'url' | 'upload';
|
|
1232
1600
|
|
|
1233
1601
|
declare interface Field {
|
|
@@ -1288,6 +1656,17 @@ declare interface Field {
|
|
|
1288
1656
|
|
|
1289
1657
|
declare type FieldScope = 'card' | 'sheet' | 'dashboard' | 'domain';
|
|
1290
1658
|
|
|
1659
|
+
declare type FileAttachment = {
|
|
1660
|
+
id: string;
|
|
1661
|
+
name: string;
|
|
1662
|
+
size: number;
|
|
1663
|
+
type: string;
|
|
1664
|
+
data?: string;
|
|
1665
|
+
url?: string;
|
|
1666
|
+
preview?: string;
|
|
1667
|
+
uploadProgress?: number;
|
|
1668
|
+
};
|
|
1669
|
+
|
|
1291
1670
|
declare interface FileEntityReference extends DatabaseEntityReference {
|
|
1292
1671
|
id: string;
|
|
1293
1672
|
type: 'file' | 'url' | 'upload';
|
|
@@ -1320,6 +1699,19 @@ declare interface FilterCondition {
|
|
|
1320
1699
|
temporalBucket?: TemporalBucketMetadata;
|
|
1321
1700
|
}
|
|
1322
1701
|
|
|
1702
|
+
declare type FilterDashboardInput = DashboardInputBase & {
|
|
1703
|
+
kind: 'filter';
|
|
1704
|
+
filter: TFilter;
|
|
1705
|
+
};
|
|
1706
|
+
|
|
1707
|
+
/**
|
|
1708
|
+
* Display mode for individual filters
|
|
1709
|
+
* - 'canvas': Filter displayed as a draggable card on the dashboard canvas
|
|
1710
|
+
* - 'toolbar': Filter displayed in the compact toolbar
|
|
1711
|
+
* - 'inherit': Use the dashboard's filterLayout.displayMode setting (default)
|
|
1712
|
+
*/
|
|
1713
|
+
declare type FilterDisplayMode = 'canvas' | 'toolbar' | 'inherit';
|
|
1714
|
+
|
|
1323
1715
|
declare type FilterFieldMeta = Pick<Field, 'name' | 'qualifiedFieldName'> & Partial<Pick<Field, 'id' | 'qualifiedEntityName' | 'entityId' | 'dataType' | 'role' | 'fieldScope'>> & {
|
|
1324
1716
|
entityName?: Field['entityName'];
|
|
1325
1717
|
entityType?: string;
|
|
@@ -1327,6 +1719,43 @@ declare type FilterFieldMeta = Pick<Field, 'name' | 'qualifiedFieldName'> & Part
|
|
|
1327
1719
|
calculatedFormula?: CalculatedFieldFormula;
|
|
1328
1720
|
};
|
|
1329
1721
|
|
|
1722
|
+
declare type FilterForBetween = BaseFilter & {
|
|
1723
|
+
operation: 'between' | 'not between';
|
|
1724
|
+
values: [number, number];
|
|
1725
|
+
};
|
|
1726
|
+
|
|
1727
|
+
declare type FilterForCompare = BaseFilter & {
|
|
1728
|
+
operation: '>' | '<' | '>=' | '<=';
|
|
1729
|
+
values: [number];
|
|
1730
|
+
};
|
|
1731
|
+
|
|
1732
|
+
declare type FilterForDate = BaseFilter & {
|
|
1733
|
+
operation: 'between' | 'not between' | '=' | '!=' | '>' | '<' | '>=' | '<=';
|
|
1734
|
+
values: [Date | string, Date | string] | [Date | string];
|
|
1735
|
+
relativeMeta?: RelativeDateFilter;
|
|
1736
|
+
temporalPrecision?: TemporalPrecision;
|
|
1737
|
+
};
|
|
1738
|
+
|
|
1739
|
+
declare type FilterForEqual = BaseFilter & {
|
|
1740
|
+
operation: '=' | '!=';
|
|
1741
|
+
values: [string | number];
|
|
1742
|
+
};
|
|
1743
|
+
|
|
1744
|
+
declare type FilterForIn = BaseFilter & {
|
|
1745
|
+
operation: 'in' | 'not in';
|
|
1746
|
+
values: (string | number)[];
|
|
1747
|
+
};
|
|
1748
|
+
|
|
1749
|
+
declare type FilterForNull = BaseFilter & {
|
|
1750
|
+
operation: 'is null' | 'is not null';
|
|
1751
|
+
values: [];
|
|
1752
|
+
};
|
|
1753
|
+
|
|
1754
|
+
declare type FilterForString = BaseFilter & {
|
|
1755
|
+
operation: 'like' | 'not like';
|
|
1756
|
+
values: [string];
|
|
1757
|
+
};
|
|
1758
|
+
|
|
1330
1759
|
declare interface FilterGroup {
|
|
1331
1760
|
id: string;
|
|
1332
1761
|
logicalOperator: LogicalOperator;
|
|
@@ -1335,6 +1764,38 @@ declare interface FilterGroup {
|
|
|
1335
1764
|
groups: FilterGroup[];
|
|
1336
1765
|
}
|
|
1337
1766
|
|
|
1767
|
+
declare type FilterKind = 'field' | 'global-date';
|
|
1768
|
+
|
|
1769
|
+
/**
|
|
1770
|
+
* Filter layout settings for controlling how dashboard filters are displayed
|
|
1771
|
+
*/
|
|
1772
|
+
declare type FilterLayoutSettings = {
|
|
1773
|
+
/**
|
|
1774
|
+
* Display mode for filters
|
|
1775
|
+
* - 'canvas': Filters displayed as draggable/resizable cards on the dashboard canvas (default)
|
|
1776
|
+
* - 'toolbar': Filters displayed in a compact horizontal toolbar below dashboard controls
|
|
1777
|
+
*/
|
|
1778
|
+
displayMode?: 'canvas' | 'toolbar';
|
|
1779
|
+
/**
|
|
1780
|
+
* Whether the toolbar should wrap filters to multiple lines
|
|
1781
|
+
* - false: Horizontal scroll when filters overflow (default)
|
|
1782
|
+
* - true: Wrap to multiple lines
|
|
1783
|
+
*/
|
|
1784
|
+
toolbarWrap?: boolean;
|
|
1785
|
+
/**
|
|
1786
|
+
* Whether to show a download button in the filter toolbar
|
|
1787
|
+
* Useful when embedding Dashboard component without Surfboard's controls
|
|
1788
|
+
*/
|
|
1789
|
+
showDownloadButton?: boolean;
|
|
1790
|
+
/**
|
|
1791
|
+
* Mixed toolbar item order for dashboard-level filter and control chips.
|
|
1792
|
+
* Values use prefixed ids like `filter:<id>` and `control:<id>`.
|
|
1793
|
+
*/
|
|
1794
|
+
toolbarItemOrder?: string[];
|
|
1795
|
+
};
|
|
1796
|
+
|
|
1797
|
+
declare type FilterLocation = 'dashboard' | 'frame' | 'sheet' | undefined;
|
|
1798
|
+
|
|
1338
1799
|
declare type FilterOnClick = {
|
|
1339
1800
|
expression?: string;
|
|
1340
1801
|
columnIndex: number;
|
|
@@ -1438,6 +1899,13 @@ export declare function getDefaultBriefingCardAttachmentFormat(input: {
|
|
|
1438
1899
|
allowDownload?: boolean;
|
|
1439
1900
|
}): BriefingAttachmentFormat;
|
|
1440
1901
|
|
|
1902
|
+
declare type GlobalDateComparisonSelection = {
|
|
1903
|
+
mode: 'off';
|
|
1904
|
+
} | {
|
|
1905
|
+
mode: 'period';
|
|
1906
|
+
spec: ViewerPeriodComparisonSpec;
|
|
1907
|
+
};
|
|
1908
|
+
|
|
1441
1909
|
declare type Granularity = SemaphorTimeGrain;
|
|
1442
1910
|
|
|
1443
1911
|
declare interface GroupByColumn extends BaseColumn {
|
|
@@ -1804,6 +2272,12 @@ declare interface PivotByField extends Field {
|
|
|
1804
2272
|
*/
|
|
1805
2273
|
declare type PivotMemberOrder = 'auto' | 'asc' | 'desc';
|
|
1806
2274
|
|
|
2275
|
+
declare type PresentationExecutionSnapshot = {
|
|
2276
|
+
version: 1;
|
|
2277
|
+
reportContext: ReportRuntimeContext;
|
|
2278
|
+
resolvedFormats: ResolvedPresentationEntry[];
|
|
2279
|
+
};
|
|
2280
|
+
|
|
1807
2281
|
declare type PresentationScope = {
|
|
1808
2282
|
dashboardId: string;
|
|
1809
2283
|
cardId?: string;
|
|
@@ -1832,6 +2306,13 @@ declare type RangeValue = {
|
|
|
1832
2306
|
gt?: string | number;
|
|
1833
2307
|
};
|
|
1834
2308
|
|
|
2309
|
+
declare type RawTemporalPatternDialect = 'semaphor_tokens' | 'date_fns';
|
|
2310
|
+
|
|
2311
|
+
declare type RawTemporalPresentationTarget = {
|
|
2312
|
+
kind: 'column';
|
|
2313
|
+
columnKey: string;
|
|
2314
|
+
};
|
|
2315
|
+
|
|
1835
2316
|
declare type RelativeDateFilter = {
|
|
1836
2317
|
mode: 'last';
|
|
1837
2318
|
n: number;
|
|
@@ -1882,10 +2363,47 @@ declare type ResolvedNumericPresentationEntry = {
|
|
|
1882
2363
|
format: NumericCanonicalFormat;
|
|
1883
2364
|
};
|
|
1884
2365
|
|
|
1885
|
-
declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry;
|
|
2366
|
+
declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry | ResolvedRawTemporalPresentationEntry;
|
|
2367
|
+
|
|
2368
|
+
declare type ResolvedRawTemporalFormat = {
|
|
2369
|
+
type: 'raw_temporal';
|
|
2370
|
+
locale: string;
|
|
2371
|
+
calendarTimezone: string;
|
|
2372
|
+
/** Resolved source timezone for timezone-less wall datetimes, when authored. */
|
|
2373
|
+
sourceTimezone?: string;
|
|
2374
|
+
presentation: {
|
|
2375
|
+
mode: 'auto';
|
|
2376
|
+
styles: ResolvedTemporalStyleSet;
|
|
2377
|
+
} | {
|
|
2378
|
+
mode: 'pattern';
|
|
2379
|
+
dialect: RawTemporalPatternDialect;
|
|
2380
|
+
pattern: string;
|
|
2381
|
+
};
|
|
2382
|
+
};
|
|
2383
|
+
|
|
2384
|
+
declare type ResolvedRawTemporalPresentationEntry = {
|
|
2385
|
+
scope: PresentationScope;
|
|
2386
|
+
target: RawTemporalPresentationTarget;
|
|
2387
|
+
format: ResolvedRawTemporalFormat;
|
|
2388
|
+
};
|
|
1886
2389
|
|
|
1887
|
-
declare type ResolvedTemporalBucketFormat =
|
|
2390
|
+
declare type ResolvedTemporalBucketFormat = {
|
|
2391
|
+
type: 'temporal_bucket';
|
|
2392
|
+
locale: string;
|
|
2393
|
+
presentation: {
|
|
2394
|
+
mode: 'auto';
|
|
2395
|
+
styles: ResolvedTemporalStyleSet;
|
|
2396
|
+
};
|
|
2397
|
+
} | {
|
|
2398
|
+
type: 'temporal_bucket';
|
|
1888
2399
|
locale: string;
|
|
2400
|
+
presentation: {
|
|
2401
|
+
mode: 'preset';
|
|
2402
|
+
preset: TemporalBucketPreset;
|
|
2403
|
+
} | {
|
|
2404
|
+
mode: 'pattern';
|
|
2405
|
+
pattern: string;
|
|
2406
|
+
};
|
|
1889
2407
|
};
|
|
1890
2408
|
|
|
1891
2409
|
declare type ResolvedTemporalBucketPresentationEntry = {
|
|
@@ -1894,6 +2412,14 @@ declare type ResolvedTemporalBucketPresentationEntry = {
|
|
|
1894
2412
|
format: ResolvedTemporalBucketFormat;
|
|
1895
2413
|
};
|
|
1896
2414
|
|
|
2415
|
+
declare type ResolvedTemporalStyleSet = {
|
|
2416
|
+
dateStyle: LocaleStyle;
|
|
2417
|
+
dateTime: {
|
|
2418
|
+
dateStyle: LocaleStyle;
|
|
2419
|
+
timeStyle: LocaleStyle;
|
|
2420
|
+
};
|
|
2421
|
+
};
|
|
2422
|
+
|
|
1897
2423
|
declare type ResolvedValueFormatPreferences = {
|
|
1898
2424
|
locale: string;
|
|
1899
2425
|
dateStyle: LocaleStyle;
|
|
@@ -2257,6 +2783,47 @@ declare type StructuralFieldSelectorTarget = GroupByField;
|
|
|
2257
2783
|
|
|
2258
2784
|
declare type StructuralMetricSelectorTarget = MetricField;
|
|
2259
2785
|
|
|
2786
|
+
/**
|
|
2787
|
+
* Style propeerites for the dashboard
|
|
2788
|
+
*/
|
|
2789
|
+
declare type StyleProps = {
|
|
2790
|
+
/** Theme for dashboard background */
|
|
2791
|
+
canvasTheme?: 'clear' | 'muted' | string;
|
|
2792
|
+
/** css class for `dashboard-panel` */
|
|
2793
|
+
dashboardPanel?: string;
|
|
2794
|
+
/** css class for `dashboard-tabs-container` */
|
|
2795
|
+
dashboardTabsContainer?: string;
|
|
2796
|
+
/** css class for `dashboard-card` */
|
|
2797
|
+
/** css class for `dashboard-card-container` */
|
|
2798
|
+
dashboardCardContainer?: string;
|
|
2799
|
+
dashboardCard?: string;
|
|
2800
|
+
/** grid-layout config */
|
|
2801
|
+
/**
|
|
2802
|
+
* Border radius for the control inputs such as filter input, tabs, date picker, etc.
|
|
2803
|
+
*/
|
|
2804
|
+
controlInputRadius?: number;
|
|
2805
|
+
/**
|
|
2806
|
+
* Border radius for the cards
|
|
2807
|
+
*/
|
|
2808
|
+
cardBorderRadius?: number;
|
|
2809
|
+
gridLayout?: {
|
|
2810
|
+
/** css class for `react-grid-layout` */
|
|
2811
|
+
className?: string;
|
|
2812
|
+
margin?: [number, number];
|
|
2813
|
+
};
|
|
2814
|
+
/** chart config */
|
|
2815
|
+
chart?: {
|
|
2816
|
+
/** chart font config */
|
|
2817
|
+
font?: Partial<FontSpec>;
|
|
2818
|
+
dataset?: any;
|
|
2819
|
+
/** chart options */
|
|
2820
|
+
options?: any;
|
|
2821
|
+
};
|
|
2822
|
+
table?: {
|
|
2823
|
+
tableHeaderColor?: string;
|
|
2824
|
+
};
|
|
2825
|
+
};
|
|
2826
|
+
|
|
2260
2827
|
declare type SubDayDateUnit = 'minute' | 'hour';
|
|
2261
2828
|
|
|
2262
2829
|
declare type TableBaseFormatting = {
|
|
@@ -2335,6 +2902,22 @@ declare type TableTotalsStylePreferences = {
|
|
|
2335
2902
|
borderTopColor?: string;
|
|
2336
2903
|
};
|
|
2337
2904
|
|
|
2905
|
+
/**
|
|
2906
|
+
* Target column configuration for multi-field filters.
|
|
2907
|
+
* Allows a single filter to target multiple columns from the SAME table,
|
|
2908
|
+
* with users selecting which column to filter at runtime.
|
|
2909
|
+
*
|
|
2910
|
+
* Note: Cross-table filtering is not supported. All target columns must
|
|
2911
|
+
* be from the same table as the filter's primary table. For cross-table
|
|
2912
|
+
* date filtering, create separate filters or use a shared date dimension.
|
|
2913
|
+
*/
|
|
2914
|
+
declare type TargetColumn = {
|
|
2915
|
+
/** Column name (e.g., "shipping_date") - must be from the filter's table */
|
|
2916
|
+
column: string;
|
|
2917
|
+
/** Display label shown in the dropdown (e.g., "Shipping Date") */
|
|
2918
|
+
label: string;
|
|
2919
|
+
};
|
|
2920
|
+
|
|
2338
2921
|
/** Global bar style configuration */
|
|
2339
2922
|
declare type TBarStyleConfig = {
|
|
2340
2923
|
/** Default border radius for all bars - 0-20 pixels */
|
|
@@ -2347,6 +2930,15 @@ declare type TBarStyleConfig = {
|
|
|
2347
2930
|
categoryPercentage?: number;
|
|
2348
2931
|
};
|
|
2349
2932
|
|
|
2933
|
+
declare type TBaseQuery = {
|
|
2934
|
+
id: string;
|
|
2935
|
+
name: string;
|
|
2936
|
+
connectionId: string;
|
|
2937
|
+
sql: string;
|
|
2938
|
+
context?: string;
|
|
2939
|
+
description?: string;
|
|
2940
|
+
};
|
|
2941
|
+
|
|
2350
2942
|
declare type TBubbleScatterConfig = {
|
|
2351
2943
|
/**
|
|
2352
2944
|
* Explicit key for X-axis metric. Falls back to auto-detection.
|
|
@@ -2677,6 +3269,34 @@ declare type TCustomFilterPreferences = {
|
|
|
2677
3269
|
settings?: Record<string, string | number | boolean>;
|
|
2678
3270
|
};
|
|
2679
3271
|
|
|
3272
|
+
declare type TDashboard = {
|
|
3273
|
+
id: string;
|
|
3274
|
+
title?: string;
|
|
3275
|
+
aiContext?: DashboardAIContext;
|
|
3276
|
+
summary?: {
|
|
3277
|
+
enabled?: boolean;
|
|
3278
|
+
position?: 'top' | 'bottom';
|
|
3279
|
+
maxItems?: number;
|
|
3280
|
+
};
|
|
3281
|
+
description?: string;
|
|
3282
|
+
sheets?: TSheet[];
|
|
3283
|
+
calculatedFields?: Field[];
|
|
3284
|
+
style?: TStyle;
|
|
3285
|
+
filters?: TFilter[];
|
|
3286
|
+
customCards?: CustomCard[];
|
|
3287
|
+
baseQueries?: TBaseQuery[];
|
|
3288
|
+
aiScopeTables?: AIScopeTable[];
|
|
3289
|
+
globalStyle?: TStyle;
|
|
3290
|
+
globalCacheConfig?: CacheConfig;
|
|
3291
|
+
emailSettings?: EmailSettings;
|
|
3292
|
+
defaultFilterValues?: TFilterValue[];
|
|
3293
|
+
controls?: ControlDefinition[];
|
|
3294
|
+
defaultControlValues?: Record<string, unknown>;
|
|
3295
|
+
inputs?: DashboardInput[];
|
|
3296
|
+
defaultInputValues?: DashboardInputValues;
|
|
3297
|
+
filterLayout?: FilterLayoutSettings;
|
|
3298
|
+
};
|
|
3299
|
+
|
|
2680
3300
|
declare type TDataLabelsConfig = {
|
|
2681
3301
|
enabled?: boolean;
|
|
2682
3302
|
position?: 'center' | 'top' | 'bottom' | 'left' | 'right' | 'auto' | 'custom';
|
|
@@ -2805,6 +3425,8 @@ declare type TemporalBucketPresentationTarget = {
|
|
|
2805
3425
|
|
|
2806
3426
|
declare type TemporalBucketPreset = (typeof TEMPORAL_BUCKET_PRESETS)[number];
|
|
2807
3427
|
|
|
3428
|
+
declare type TemporalPrecision = 'minute';
|
|
3429
|
+
|
|
2808
3430
|
declare type TextCardInlineFormat = {
|
|
2809
3431
|
bold?: boolean;
|
|
2810
3432
|
italic?: boolean;
|
|
@@ -2850,6 +3472,61 @@ declare type TextCardRichInline = {
|
|
|
2850
3472
|
}>;
|
|
2851
3473
|
};
|
|
2852
3474
|
|
|
3475
|
+
declare type TFilter = {
|
|
3476
|
+
kind?: FilterKind;
|
|
3477
|
+
type?: 'single' | 'multiple';
|
|
3478
|
+
uiType?: 'radio' | 'dropdown' | 'tabs';
|
|
3479
|
+
dateSelectionMode?: DateSelectionMode;
|
|
3480
|
+
defaultValues?: (string | number)[];
|
|
3481
|
+
defaultDateFilter?: DefaultDateFilter;
|
|
3482
|
+
sheetId?: string;
|
|
3483
|
+
location?: FilterLocation;
|
|
3484
|
+
hide?: boolean;
|
|
3485
|
+
id: string;
|
|
3486
|
+
/** Alias exposed to document/text variables, for example {{region}}. */
|
|
3487
|
+
variableName?: string;
|
|
3488
|
+
connectionId: string;
|
|
3489
|
+
title: string;
|
|
3490
|
+
column: string;
|
|
3491
|
+
dataType: string;
|
|
3492
|
+
table?: string;
|
|
3493
|
+
database?: string;
|
|
3494
|
+
qualifiedTableName?: string;
|
|
3495
|
+
sql: string;
|
|
3496
|
+
operation: Operation;
|
|
3497
|
+
fieldMeta?: FilterFieldMeta;
|
|
3498
|
+
semanticContext?: FilterSemanticContext;
|
|
3499
|
+
/**
|
|
3500
|
+
* Multi-field filter support: When set, provides multiple column options.
|
|
3501
|
+
* The first column becomes the default. Users can select which column
|
|
3502
|
+
* to filter at runtime via a dropdown in the date picker.
|
|
3503
|
+
* If not set, the single `column` field is used (backward compatible).
|
|
3504
|
+
*/
|
|
3505
|
+
targetColumns?: TargetColumn[];
|
|
3506
|
+
searchMode?: 'text' | 'numeric' | 'auto';
|
|
3507
|
+
applyToSheetIds?: string[];
|
|
3508
|
+
excludeSheetIds?: string[];
|
|
3509
|
+
applyToCardIds?: string[];
|
|
3510
|
+
excludeCardIds?: string[];
|
|
3511
|
+
customFilterPreferences?: TCustomFilterPreferences;
|
|
3512
|
+
/** Whether to show the label above the filter (default: true) */
|
|
3513
|
+
showLabel?: boolean;
|
|
3514
|
+
/**
|
|
3515
|
+
* Width in pixels when displayed in toolbar mode.
|
|
3516
|
+
* Defaults vary by filter type (160px for dropdowns, 220px for date ranges, etc.)
|
|
3517
|
+
*/
|
|
3518
|
+
toolbarWidth?: number;
|
|
3519
|
+
/**
|
|
3520
|
+
* Display mode for this filter
|
|
3521
|
+
* - 'canvas': Always show as draggable card on canvas
|
|
3522
|
+
* - 'toolbar': Always show in toolbar
|
|
3523
|
+
* - 'inherit': Use dashboard's filterLayout.displayMode setting (default)
|
|
3524
|
+
*/
|
|
3525
|
+
displayMode?: FilterDisplayMode;
|
|
3526
|
+
};
|
|
3527
|
+
|
|
3528
|
+
declare type TFilterValue = FilterForString | FilterForEqual | FilterForCompare | FilterForBetween | FilterForIn | FilterForNull | FilterForDate;
|
|
3529
|
+
|
|
2853
3530
|
declare type TFormatOptions = {
|
|
2854
3531
|
type?: 'auto' | 'number' | 'currency' | 'percent' | 'scientific' | 'date' | 'duration';
|
|
2855
3532
|
decimalPlaces?: number;
|
|
@@ -2875,6 +3552,15 @@ declare type TFormatOptions = {
|
|
|
2875
3552
|
durationMaxUnits?: number;
|
|
2876
3553
|
};
|
|
2877
3554
|
|
|
3555
|
+
declare type TFrame = {
|
|
3556
|
+
id: string;
|
|
3557
|
+
visualId?: string;
|
|
3558
|
+
filterId?: string;
|
|
3559
|
+
cards: TCard[];
|
|
3560
|
+
activeCardId: string;
|
|
3561
|
+
calculatedFields?: Field[];
|
|
3562
|
+
};
|
|
3563
|
+
|
|
2878
3564
|
declare type TFunnelConfig = {
|
|
2879
3565
|
/**
|
|
2880
3566
|
* How to calculate percentage in tooltips and data labels.
|
|
@@ -2987,6 +3673,27 @@ declare type TotalsBehavior = 'sum' | 'avg' | 'count' | 'label' | 'none';
|
|
|
2987
3673
|
/** Point style options supported by Chart.js */
|
|
2988
3674
|
declare type TPointStyle = 'circle' | 'cross' | 'crossRot' | 'dash' | 'line' | 'rect' | 'rectRounded' | 'rectRot' | 'star' | 'triangle';
|
|
2989
3675
|
|
|
3676
|
+
declare type TSheet = {
|
|
3677
|
+
id: string;
|
|
3678
|
+
kind?: 'dashboard' | 'document';
|
|
3679
|
+
title?: string;
|
|
3680
|
+
description?: string;
|
|
3681
|
+
layout?: ReactGridLayout.Layout[];
|
|
3682
|
+
layouts?: ReactGridLayout.Layouts;
|
|
3683
|
+
cards?: TCard[];
|
|
3684
|
+
frames?: TFrame[];
|
|
3685
|
+
calculatedFields?: Field[];
|
|
3686
|
+
document?: DocumentDefinition;
|
|
3687
|
+
};
|
|
3688
|
+
|
|
3689
|
+
/**
|
|
3690
|
+
* Style for the dashboard
|
|
3691
|
+
*/
|
|
3692
|
+
declare type TStyle = {
|
|
3693
|
+
default: StyleProps;
|
|
3694
|
+
dark?: StyleProps;
|
|
3695
|
+
};
|
|
3696
|
+
|
|
2990
3697
|
declare type TTooltipFormatConfig = {
|
|
2991
3698
|
formatMode?: 'inherit' | 'override';
|
|
2992
3699
|
/** @deprecated Use formatMode */
|
|
@@ -3031,6 +3738,10 @@ export declare function validateBriefingDraft(draft: unknown): BriefingValidatio
|
|
|
3031
3738
|
|
|
3032
3739
|
export declare function validateBriefingJobConfig(input: unknown): BriefingValidationResult<BriefingJobConfig>;
|
|
3033
3740
|
|
|
3741
|
+
declare type ViewerPeriodComparisonSpec = Extract<MetricComparisonSpec, {
|
|
3742
|
+
kind: 'previous_period' | 'previous_year';
|
|
3743
|
+
}>;
|
|
3744
|
+
|
|
3034
3745
|
/**
|
|
3035
3746
|
* Display mode for visual components - controls which UI elements are shown
|
|
3036
3747
|
*/
|