react-semaphor 0.1.459 → 0.1.460
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 +32 -32
- package/dist/brand-studio/index.cjs +1 -1
- package/dist/brand-studio/index.js +4 -4
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +4 -4
- package/dist/chunks/{analyze-result-contract-BbRJ-C06.js → analyze-result-contract-DROq4vgY.js} +1 -1
- package/dist/chunks/{analyze-result-contract-LPDNldic.cjs → analyze-result-contract-DSGoFuXQ.cjs} +1 -1
- package/dist/chunks/canonical-result-keys-CEQefvdO.js +33 -0
- package/dist/chunks/canonical-result-keys-Cb96edol.cjs +1 -0
- package/dist/chunks/{common-types-H51FLKB7.js → common-types-BHVKgxRR.js} +1 -1
- package/dist/chunks/{common-types-C57kJ59w.cjs → common-types-BcV9PD9D.cjs} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-ClCj98sq.js → dashboard-briefing-launcher-B07JnyCb.js} +60 -61
- package/dist/chunks/{dashboard-briefing-launcher-DHtEouuH.cjs → dashboard-briefing-launcher-BCkOKkCv.cjs} +2 -2
- package/dist/chunks/{dashboard-controls-VRShl9J0.cjs → dashboard-controls-BpxouYOZ.cjs} +1 -1
- package/dist/chunks/{dashboard-controls-B8gsKlxc.js → dashboard-controls-C8OxHQV6.js} +44 -45
- package/dist/chunks/dashboard-filter-value-compatibility-KXIyvbhc.js +677 -0
- package/dist/chunks/dashboard-filter-value-compatibility-UapptYnn.cjs +1 -0
- package/dist/chunks/dashboard-input-contract-BkRFQ7Tq.cjs +1 -0
- package/dist/chunks/{dashboard-date-comparison-definition-DC3ekV2S.js → dashboard-input-contract-D5dxTWJ5.js} +41 -25
- package/dist/chunks/dashboard-json-Bc-iIwxF.cjs +1 -0
- package/dist/chunks/{dashboard-json-i_Auue_K.js → dashboard-json-CecgbGtq.js} +13 -14
- package/dist/chunks/{edit-dashboard-visual-B3JF0fe4.js → edit-dashboard-visual-CpJKJaER.js} +880 -894
- package/dist/chunks/{edit-dashboard-visual-DWWyT55u.cjs → edit-dashboard-visual-xacUS2i5.cjs} +28 -28
- package/dist/chunks/{editor-action-buttons-BTlCsP63.cjs → editor-action-buttons-23Wf8EMx.cjs} +2 -2
- package/dist/chunks/{editor-action-buttons-C9x3nGnb.js → editor-action-buttons-DEoieV2G.js} +28 -28
- package/dist/chunks/index-B9c22LmC.cjs +1392 -0
- package/dist/chunks/{index-BS2-ZZGf.js → index-DDoyXYWM.js} +43665 -41560
- package/dist/chunks/{index-BIFLI8ul.js → index-De_7nrwb.js} +10 -10
- package/dist/chunks/index-DjjKJPDy.cjs +4 -0
- package/dist/chunks/{matrix-result-contract-CofATICL.js → matrix-result-contract-BTpPuHOc.js} +88 -104
- package/dist/chunks/matrix-result-contract-ZRNfeIbI.cjs +1 -0
- package/dist/chunks/{pivot-header-presentation-B9nXXKlW.cjs → pivot-header-presentation-BijPbP33.cjs} +1 -1
- package/dist/chunks/{pivot-header-presentation-D-0jvUwn.js → pivot-header-presentation-DW0gKG8g.js} +2 -2
- package/dist/chunks/{pivot-result-identity-Bb4EixVN.cjs → pivot-result-identity-DxHtiKVj.cjs} +1 -1
- package/dist/chunks/{pivot-result-identity-DU1v-5Xk.js → pivot-result-identity-Z9tN2tEV.js} +1 -1
- package/dist/chunks/{pivot-result-lifecycle-DTLRuDEW.cjs → pivot-result-lifecycle-BXzIlQVu.cjs} +1 -1
- package/dist/chunks/{pivot-result-lifecycle-CHWEGU2o.js → pivot-result-lifecycle-g2U-vzQb.js} +7 -7
- package/dist/chunks/{raw-temporal-contract-BtjH_G-d.cjs → raw-temporal-contract-DfAvqNMo.cjs} +1 -1
- package/dist/chunks/{raw-temporal-contract-CxncLze5.js → raw-temporal-contract-UtAqoOZO.js} +1 -1
- package/dist/chunks/{report-preferences-dialog-BDpkcUtz.js → report-preferences-dialog-CZiNX1Ri.js} +6 -6
- package/dist/chunks/{report-preferences-dialog-BK0yAJnQ.cjs → report-preferences-dialog-D_N6NXnq.cjs} +1 -1
- package/dist/chunks/{report-runtime-context-DqxS4wbi.cjs → report-runtime-context-C0NfLPfc.cjs} +1 -1
- package/dist/chunks/{report-runtime-context-SM6YO61_.js → report-runtime-context-CNncA3VD.js} +11 -11
- package/dist/chunks/{saved-temporal-bucket-format-CFfWXRl9.cjs → saved-temporal-bucket-format-3QKveR3v.cjs} +1 -1
- package/dist/chunks/{saved-temporal-bucket-format-SGAV0ivR.js → saved-temporal-bucket-format-Dd2eixTH.js} +11 -11
- package/dist/chunks/switch-DNFbgZz4.cjs +138 -0
- package/dist/chunks/{switch-DQR-Va05.js → switch-DSZobe8w.js} +6542 -5189
- package/dist/chunks/{temporal-bucket-5UYEotyQ.js → temporal-bucket-C85rmFmC.js} +4 -4
- package/dist/chunks/temporal-bucket-authoring-1fZuPAVb.js +653 -0
- package/dist/chunks/temporal-bucket-authoring-BK1UhYpD.cjs +1 -0
- package/dist/chunks/{temporal-bucket-contract-D5d-xEl3.js → temporal-bucket-contract-DXXNZssK.js} +1 -1
- package/dist/chunks/{temporal-bucket-contract-D2-93DGr.cjs → temporal-bucket-contract-xFkvboaw.cjs} +1 -1
- package/dist/chunks/{temporal-bucket-DHY1y9lq.cjs → temporal-bucket-pMfghsLX.cjs} +1 -1
- package/dist/chunks/{token-types-GbxRUozo.js → token-types-BLxc7UwR.js} +1 -1
- package/dist/chunks/{token-types-D7CaaI80.cjs → token-types-BYYO109W.cjs} +1 -1
- package/dist/chunks/{update-policy-hednMF-0.js → update-policy-CB8XJIoY.js} +1 -1
- package/dist/chunks/{update-policy-BmiOd0PB.cjs → update-policy-DMjjGjQY.cjs} +1 -1
- package/dist/chunks/{validators-DEmd8Sin.js → validators-DVd8s3qY.js} +416 -350
- package/dist/chunks/validators-dJlwubP4.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 +328 -311
- 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 +55 -55
- package/dist/data-app-sdk-adapters/index.cjs +1 -1
- package/dist/data-app-sdk-adapters/index.js +61 -56
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +9 -9
- package/dist/format-utils/index.cjs +1 -1
- package/dist/format-utils/index.js +15 -15
- package/dist/index.cjs +1 -1
- package/dist/index.js +154 -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 +16 -8
- package/dist/types/briefings.d.ts +80 -9
- package/dist/types/dashboard-assistant.d.ts +11 -6
- package/dist/types/dashboard-authoring.d.ts +242 -15
- package/dist/types/dashboard.d.ts +94 -10
- package/dist/types/data-app-builder.d.ts +11 -6
- package/dist/types/data-app-codegen-node.d.ts +16 -8
- package/dist/types/data-app-codegen.d.ts +16 -8
- package/dist/types/data-app-sdk-adapters.d.ts +17 -11
- package/dist/types/data-app-sdk-validation.d.ts +17 -11
- package/dist/types/data-app-sdk.d.ts +17 -11
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/main.d.ts +210 -16
- package/dist/types/shared.d.ts +80 -9
- package/dist/types/surfboard.d.ts +94 -10
- package/dist/types/types.d.ts +94 -10
- package/package.json +1 -1
- package/dist/chunks/canonical-result-keys-BA0HCP4e.cjs +0 -1
- package/dist/chunks/canonical-result-keys-D6avdjpA.js +0 -467
- package/dist/chunks/dashboard-date-comparison-definition-Ces4alFm.cjs +0 -1
- package/dist/chunks/dashboard-json-BhvPMpZA.cjs +0 -1
- package/dist/chunks/index-DHF-2AqS.cjs +0 -1392
- package/dist/chunks/index-k8tEp0ys.cjs +0 -4
- package/dist/chunks/matrix-result-contract-zamd9euI.cjs +0 -1
- package/dist/chunks/switch-f3TuZNLr.cjs +0 -138
- package/dist/chunks/temporal-bucket-authoring-K1kE6R_z.js +0 -222
- package/dist/chunks/temporal-bucket-authoring-o3Emn05L.cjs +0 -1
- package/dist/chunks/validators-BDYprKI9.cjs +0 -1
package/dist/surfboard/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-B9c22LmC.cjs"),r=require("../chunks/common-types-BcV9PD9D.cjs"),o=require("../chunks/report-preferences-dialog-D_N6NXnq.cjs");exports.DisplayFormatPreferencesFields=e.DisplayFormatPreferencesFields;exports.Surfboard=e.DashboardPlus;exports.CONTROL_CARD_DEFAULT_VALUE=r.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;exports.ReportPreferencesDialog=o.ReportPreferencesDialog;
|
package/dist/surfboard/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { b as a, a as o } from "../chunks/index-
|
|
2
|
-
import { C as f, E } from "../chunks/common-types-
|
|
3
|
-
import { R as t } from "../chunks/report-preferences-dialog-
|
|
1
|
+
import { b as a, a as o } from "../chunks/index-DDoyXYWM.js";
|
|
2
|
+
import { C as f, E } from "../chunks/common-types-BHVKgxRR.js";
|
|
3
|
+
import { R as t } from "../chunks/report-preferences-dialog-CZiNX1Ri.js";
|
|
4
4
|
export {
|
|
5
5
|
f as CONTROL_CARD_DEFAULT_VALUE,
|
|
6
6
|
a as DisplayFormatPreferencesFields,
|
|
@@ -2637,7 +2637,9 @@ export declare type SemaphorDataAppCodegenInputBinding = {
|
|
|
2637
2637
|
export declare type SemaphorDataAppCodegenInputOptionQuery = {
|
|
2638
2638
|
id?: string;
|
|
2639
2639
|
builder: 'semaphor.inputOptions';
|
|
2640
|
-
source?: SemaphorSourceRef
|
|
2640
|
+
source?: Extract<SemaphorSourceRef, {
|
|
2641
|
+
kind: 'semantic' | 'physical';
|
|
2642
|
+
}>;
|
|
2641
2643
|
sourceKey?: string;
|
|
2642
2644
|
valueFieldRef: SemaphorDataAppCodegenFieldRef;
|
|
2643
2645
|
labelFieldRef: SemaphorDataAppCodegenFieldRef;
|
|
@@ -2648,7 +2650,8 @@ export declare type SemaphorDataAppCodegenInputOptionQuery = {
|
|
|
2648
2650
|
spec?: SemaphorDataAppCodegenInputOptionsIntent;
|
|
2649
2651
|
};
|
|
2650
2652
|
|
|
2651
|
-
export declare type SemaphorDataAppCodegenInputOptionsIntent = Omit<SemaphorInputOptionsIntent, 'kind' | 'labelField' | 'valueField' | 'searchField' | 'disambiguationFields'> & {
|
|
2653
|
+
export declare type SemaphorDataAppCodegenInputOptionsIntent = Omit<SemaphorInputOptionsIntent, 'kind' | 'source' | 'labelField' | 'valueField' | 'searchField' | 'disambiguationFields'> & {
|
|
2654
|
+
source: SemaphorDataAppCodegenSource;
|
|
2652
2655
|
labelField: SemaphorDataAppCodegenFieldRef;
|
|
2653
2656
|
valueField: SemaphorDataAppCodegenFieldRef;
|
|
2654
2657
|
searchField?: SemaphorDataAppCodegenFieldRef;
|
|
@@ -3113,17 +3116,12 @@ export declare type SemaphorInputBinding = {
|
|
|
3113
3116
|
|
|
3114
3117
|
export declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
|
|
3115
3118
|
|
|
3116
|
-
export declare type SemaphorInputOptionsIntent = {
|
|
3119
|
+
export declare type SemaphorInputOptionsIntent = SemaphorInputOptionSource & {
|
|
3117
3120
|
kind: 'inputOptions';
|
|
3118
3121
|
version?: SemaphorProtocolVersion;
|
|
3119
3122
|
id?: string;
|
|
3120
3123
|
label?: string;
|
|
3121
3124
|
inputId: string;
|
|
3122
|
-
source: SemaphorSourceRef;
|
|
3123
|
-
labelField: SemaphorFieldRef;
|
|
3124
|
-
valueField: SemaphorFieldRef;
|
|
3125
|
-
searchField?: SemaphorFieldRef;
|
|
3126
|
-
disambiguationFields?: SemaphorFieldRef[];
|
|
3127
3125
|
population?: SemaphorOptionPopulation;
|
|
3128
3126
|
dependencies?: SemaphorOptionDependencies;
|
|
3129
3127
|
search?: string;
|
|
@@ -3132,6 +3130,16 @@ export declare type SemaphorInputOptionsIntent = {
|
|
|
3132
3130
|
derivedFields?: SemaphorDerivedFieldDefinition[];
|
|
3133
3131
|
};
|
|
3134
3132
|
|
|
3133
|
+
export declare type SemaphorInputOptionSource = {
|
|
3134
|
+
source: Extract<SemaphorSourceRef, {
|
|
3135
|
+
kind: 'semantic' | 'physical';
|
|
3136
|
+
}>;
|
|
3137
|
+
labelField: SemaphorFieldRef;
|
|
3138
|
+
valueField: SemaphorFieldRef;
|
|
3139
|
+
searchField?: SemaphorFieldRef;
|
|
3140
|
+
disambiguationFields?: SemaphorFieldRef[];
|
|
3141
|
+
};
|
|
3142
|
+
|
|
3135
3143
|
export declare type SemaphorInputOptionsResult = SemaphorAnalyticsResultBase & {
|
|
3136
3144
|
kind: 'inputOptions';
|
|
3137
3145
|
options: Array<{
|
|
@@ -1039,6 +1039,51 @@ declare type DashboardAIContext = AIContext & {
|
|
|
1039
1039
|
|
|
1040
1040
|
declare type DashboardAIContextMode = 'auto' | 'fixed';
|
|
1041
1041
|
|
|
1042
|
+
declare type DashboardFilterApplication = {
|
|
1043
|
+
kind: 'cardMappings';
|
|
1044
|
+
/**
|
|
1045
|
+
* Sparse grounded bindings and explicit exclusions. A missing config card
|
|
1046
|
+
* may reuse a proven Option Value target on an executable source; it is not
|
|
1047
|
+
* an implicit exclusion, and source identity alone is not field evidence.
|
|
1048
|
+
*/
|
|
1049
|
+
cards: DashboardFilterCardApplication[];
|
|
1050
|
+
};
|
|
1051
|
+
|
|
1052
|
+
declare type DashboardFilterBoundCardApplication = {
|
|
1053
|
+
kind: 'bound';
|
|
1054
|
+
cardId: string;
|
|
1055
|
+
bindingId: string;
|
|
1056
|
+
target: DashboardFilterTarget;
|
|
1057
|
+
};
|
|
1058
|
+
|
|
1059
|
+
declare type DashboardFilterCardApplication = DashboardFilterBoundCardApplication | DashboardFilterExcludedCardApplication;
|
|
1060
|
+
|
|
1061
|
+
declare type DashboardFilterExcludedCardApplication = {
|
|
1062
|
+
kind: 'excluded';
|
|
1063
|
+
cardId: string;
|
|
1064
|
+
};
|
|
1065
|
+
|
|
1066
|
+
/** Persisted label/value option definition for a mapped dashboard filter. */
|
|
1067
|
+
declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
|
|
1068
|
+
|
|
1069
|
+
declare type DashboardFilterTarget = {
|
|
1070
|
+
kind: 'field';
|
|
1071
|
+
field: DashboardFilterTargetField;
|
|
1072
|
+
};
|
|
1073
|
+
|
|
1074
|
+
/** Persisted, source-qualified field that a mapped filter targets. */
|
|
1075
|
+
declare type DashboardFilterTargetField = {
|
|
1076
|
+
name: string;
|
|
1077
|
+
source: DashboardFilterTargetSource;
|
|
1078
|
+
dataType: 'string' | 'number' | 'boolean' | 'date' | 'datetime';
|
|
1079
|
+
/** Catalog-grounded physical column used when it differs from the semantic name. */
|
|
1080
|
+
sourceField?: string;
|
|
1081
|
+
};
|
|
1082
|
+
|
|
1083
|
+
declare type DashboardFilterTargetSource = Extract<SemaphorSourceRef, {
|
|
1084
|
+
kind: 'semantic' | 'physical';
|
|
1085
|
+
}>;
|
|
1086
|
+
|
|
1042
1087
|
declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
|
|
1043
1088
|
|
|
1044
1089
|
declare type DashboardInputBase = {
|
|
@@ -1099,14 +1144,14 @@ declare type DashboardInputScope = {
|
|
|
1099
1144
|
sectionIds: string[];
|
|
1100
1145
|
};
|
|
1101
1146
|
|
|
1102
|
-
declare type DashboardInputSlot =
|
|
1147
|
+
declare type DashboardInputSlot = {
|
|
1103
1148
|
status: 'set';
|
|
1104
1149
|
value: DashboardInputValue;
|
|
1105
1150
|
comparisonSelection?: GlobalDateComparisonSelection;
|
|
1106
|
-
}
|
|
1151
|
+
} | {
|
|
1107
1152
|
status: 'cleared';
|
|
1108
1153
|
comparisonSelection?: GlobalDateComparisonSelection;
|
|
1109
|
-
}
|
|
1154
|
+
} | {
|
|
1110
1155
|
status?: never;
|
|
1111
1156
|
value?: never;
|
|
1112
1157
|
comparisonSelection: GlobalDateComparisonSelection;
|
|
@@ -1591,6 +1636,14 @@ declare type EmailSettings = {
|
|
|
1591
1636
|
senderTitle: string;
|
|
1592
1637
|
};
|
|
1593
1638
|
|
|
1639
|
+
declare type EmbeddedFilterDashboardInput = DashboardInputBase & {
|
|
1640
|
+
kind: 'filter';
|
|
1641
|
+
filter: TFilter;
|
|
1642
|
+
filterReference?: never;
|
|
1643
|
+
optionSource?: DashboardFilterOptionSource;
|
|
1644
|
+
application?: DashboardFilterApplication;
|
|
1645
|
+
};
|
|
1646
|
+
|
|
1594
1647
|
declare type EntityType = 'table' | 'view' | 'materialized view' | 'model' | 'file' | 'dataset' | 'url' | 'upload';
|
|
1595
1648
|
|
|
1596
1649
|
declare interface Field {
|
|
@@ -1694,10 +1747,7 @@ declare interface FilterCondition {
|
|
|
1694
1747
|
temporalBucket?: TemporalBucketMetadata;
|
|
1695
1748
|
}
|
|
1696
1749
|
|
|
1697
|
-
declare type FilterDashboardInput =
|
|
1698
|
-
kind: 'filter';
|
|
1699
|
-
filter: TFilter;
|
|
1700
|
-
};
|
|
1750
|
+
declare type FilterDashboardInput = EmbeddedFilterDashboardInput | ReferencedFilterDashboardInput;
|
|
1701
1751
|
|
|
1702
1752
|
/**
|
|
1703
1753
|
* Display mode for individual filters
|
|
@@ -2298,6 +2348,17 @@ declare type RawTemporalPresentationTarget = {
|
|
|
2298
2348
|
columnKey: string;
|
|
2299
2349
|
};
|
|
2300
2350
|
|
|
2351
|
+
declare type ReferencedFilterDashboardInput = DashboardInputBase & {
|
|
2352
|
+
kind: 'filter';
|
|
2353
|
+
filter?: never;
|
|
2354
|
+
filterReference: {
|
|
2355
|
+
kind: 'dashboardFilter';
|
|
2356
|
+
filterId: string;
|
|
2357
|
+
};
|
|
2358
|
+
optionSource?: DashboardFilterOptionSource;
|
|
2359
|
+
application?: DashboardFilterApplication;
|
|
2360
|
+
};
|
|
2361
|
+
|
|
2301
2362
|
declare type RelativeDateFilter = {
|
|
2302
2363
|
mode: 'last';
|
|
2303
2364
|
n: number;
|
|
@@ -2535,6 +2596,16 @@ declare type SemaphorInputBinding = {
|
|
|
2535
2596
|
|
|
2536
2597
|
declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
|
|
2537
2598
|
|
|
2599
|
+
declare type SemaphorInputOptionSource = {
|
|
2600
|
+
source: Extract<SemaphorSourceRef, {
|
|
2601
|
+
kind: 'semantic' | 'physical';
|
|
2602
|
+
}>;
|
|
2603
|
+
labelField: SemaphorFieldRef;
|
|
2604
|
+
valueField: SemaphorFieldRef;
|
|
2605
|
+
searchField?: SemaphorFieldRef;
|
|
2606
|
+
disambiguationFields?: SemaphorFieldRef[];
|
|
2607
|
+
};
|
|
2608
|
+
|
|
2538
2609
|
declare type SemaphorMatrixAxisExpansionOptions = {
|
|
2539
2610
|
defaultDepth?: number;
|
|
2540
2611
|
lazy?: boolean;
|
|
@@ -3471,7 +3542,7 @@ declare type TFilter = {
|
|
|
3471
3542
|
type?: 'single' | 'multiple';
|
|
3472
3543
|
uiType?: 'radio' | 'dropdown' | 'tabs';
|
|
3473
3544
|
dateSelectionMode?: DateSelectionMode;
|
|
3474
|
-
defaultValues?: (string | number)[];
|
|
3545
|
+
defaultValues?: (string | number | boolean)[];
|
|
3475
3546
|
defaultDateFilter?: DefaultDateFilter;
|
|
3476
3547
|
sheetId?: string;
|
|
3477
3548
|
location?: FilterLocation;
|
|
@@ -3635,7 +3706,7 @@ declare type TInlineFilter = {
|
|
|
3635
3706
|
/** Date picker type: 'range' for full calendar, 'months' for month picker */
|
|
3636
3707
|
dateSelectionMode?: DateSelectionMode;
|
|
3637
3708
|
/** Default values applied when the dashboard first loads */
|
|
3638
|
-
defaultValues?: (string | number)[];
|
|
3709
|
+
defaultValues?: (string | number | boolean)[];
|
|
3639
3710
|
/** Default date filter applied on dashboard load (relative or fixed month/year) */
|
|
3640
3711
|
defaultDateFilter?: DefaultDateFilter;
|
|
3641
3712
|
/** Search mode for numeric filters: 'text' treats as text, 'numeric' enables operators (>, <, =) */
|
|
@@ -1240,17 +1240,12 @@ declare type SemaphorInputBinding = {
|
|
|
1240
1240
|
|
|
1241
1241
|
declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
|
|
1242
1242
|
|
|
1243
|
-
declare type SemaphorInputOptionsIntent = {
|
|
1243
|
+
declare type SemaphorInputOptionsIntent = SemaphorInputOptionSource & {
|
|
1244
1244
|
kind: 'inputOptions';
|
|
1245
1245
|
version?: SemaphorProtocolVersion;
|
|
1246
1246
|
id?: string;
|
|
1247
1247
|
label?: string;
|
|
1248
1248
|
inputId: string;
|
|
1249
|
-
source: SemaphorSourceRef;
|
|
1250
|
-
labelField: SemaphorFieldRef;
|
|
1251
|
-
valueField: SemaphorFieldRef;
|
|
1252
|
-
searchField?: SemaphorFieldRef;
|
|
1253
|
-
disambiguationFields?: SemaphorFieldRef[];
|
|
1254
1249
|
population?: SemaphorOptionPopulation;
|
|
1255
1250
|
dependencies?: SemaphorOptionDependencies;
|
|
1256
1251
|
search?: string;
|
|
@@ -1259,6 +1254,16 @@ declare type SemaphorInputOptionsIntent = {
|
|
|
1259
1254
|
derivedFields?: SemaphorDerivedFieldDefinition[];
|
|
1260
1255
|
};
|
|
1261
1256
|
|
|
1257
|
+
declare type SemaphorInputOptionSource = {
|
|
1258
|
+
source: Extract<SemaphorSourceRef, {
|
|
1259
|
+
kind: 'semantic' | 'physical';
|
|
1260
|
+
}>;
|
|
1261
|
+
labelField: SemaphorFieldRef;
|
|
1262
|
+
valueField: SemaphorFieldRef;
|
|
1263
|
+
searchField?: SemaphorFieldRef;
|
|
1264
|
+
disambiguationFields?: SemaphorFieldRef[];
|
|
1265
|
+
};
|
|
1266
|
+
|
|
1262
1267
|
declare type SemaphorInputOptionsResult = SemaphorAnalyticsResultBase & {
|
|
1263
1268
|
kind: 'inputOptions';
|
|
1264
1269
|
options: Array<{
|
|
@@ -78,6 +78,13 @@ declare type BaseFilter = {
|
|
|
78
78
|
|
|
79
79
|
declare type Breakpoint = 'lg' | 'md' | 'sm' | 'xs' | 'xxs';
|
|
80
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Inventories config sources proven executable by the card and SQL sources
|
|
83
|
+
* explicitly pinned for catalog authoring. It never infers SQL lineage,
|
|
84
|
+
* discovers a relationship, or adds a join.
|
|
85
|
+
*/
|
|
86
|
+
export declare function buildDashboardCardSourceIndex(card: Pick<TCard, 'id' | 'type' | 'sql' | 'config' | 'dataSource'>): DashboardCardFilterSourceInventory;
|
|
87
|
+
|
|
81
88
|
declare type CacheConfig = {
|
|
82
89
|
ttl: string;
|
|
83
90
|
status: 'on' | 'on-refresh' | 'off';
|
|
@@ -601,6 +608,8 @@ declare type ControlSource = {
|
|
|
601
608
|
|
|
602
609
|
declare type ControlType = 'enum' | 'multi_enum' | 'text' | 'number' | 'boolean' | 'date' | 'field_selector' | 'metric_selector' | 'aggregation_selector' | 'grain_selector';
|
|
603
610
|
|
|
611
|
+
export declare function createDashboardFilterBindingId(createUuid?: () => string): string;
|
|
612
|
+
|
|
604
613
|
declare type CurrencyPresentationBinding = {
|
|
605
614
|
controlId: string;
|
|
606
615
|
target: 'presentation_currency';
|
|
@@ -664,6 +673,21 @@ export declare type DashboardAuthoringValidationResult = {
|
|
|
664
673
|
warnings: DashboardPlanWarning[];
|
|
665
674
|
};
|
|
666
675
|
|
|
676
|
+
export declare type DashboardCardFilterSourceInventory = {
|
|
677
|
+
cardId: string;
|
|
678
|
+
kind: 'config';
|
|
679
|
+
executableSources: DashboardFilterTargetSource[];
|
|
680
|
+
} | {
|
|
681
|
+
cardId: string;
|
|
682
|
+
kind: 'sql';
|
|
683
|
+
pinnedCatalogSources: DashboardSqlPinnedCatalogSource[];
|
|
684
|
+
} | {
|
|
685
|
+
cardId: string;
|
|
686
|
+
kind: 'unconfigured';
|
|
687
|
+
};
|
|
688
|
+
|
|
689
|
+
export declare function dashboardCardFilterSourceInventoryContains(inventory: DashboardCardFilterSourceInventory, source: DashboardFilterTargetSource): boolean;
|
|
690
|
+
|
|
667
691
|
export declare type DashboardCardSizeIntent = 'kpi' | 'chart' | 'table' | 'text';
|
|
668
692
|
|
|
669
693
|
export declare type DashboardChangeCompileResult = {
|
|
@@ -717,6 +741,89 @@ export declare type DashboardCompileResult = {
|
|
|
717
741
|
skippedOperations: DashboardPlanWarning[];
|
|
718
742
|
};
|
|
719
743
|
|
|
744
|
+
export declare type DashboardFilterApplication = {
|
|
745
|
+
kind: 'cardMappings';
|
|
746
|
+
/**
|
|
747
|
+
* Sparse grounded bindings and explicit exclusions. A missing config card
|
|
748
|
+
* may reuse a proven Option Value target on an executable source; it is not
|
|
749
|
+
* an implicit exclusion, and source identity alone is not field evidence.
|
|
750
|
+
*/
|
|
751
|
+
cards: DashboardFilterCardApplication[];
|
|
752
|
+
};
|
|
753
|
+
|
|
754
|
+
export declare type DashboardFilterAutomaticTargetResolution = {
|
|
755
|
+
status: 'matched';
|
|
756
|
+
target: DashboardFilterTarget;
|
|
757
|
+
} | {
|
|
758
|
+
status: 'ambiguous';
|
|
759
|
+
} | {
|
|
760
|
+
status: 'notApplicable';
|
|
761
|
+
};
|
|
762
|
+
|
|
763
|
+
export declare type DashboardFilterBoundCardApplication = {
|
|
764
|
+
kind: 'bound';
|
|
765
|
+
cardId: string;
|
|
766
|
+
bindingId: string;
|
|
767
|
+
target: DashboardFilterTarget;
|
|
768
|
+
};
|
|
769
|
+
|
|
770
|
+
export declare type DashboardFilterCardApplication = DashboardFilterBoundCardApplication | DashboardFilterExcludedCardApplication;
|
|
771
|
+
|
|
772
|
+
export declare type DashboardFilterExcludedCardApplication = {
|
|
773
|
+
kind: 'excluded';
|
|
774
|
+
cardId: string;
|
|
775
|
+
};
|
|
776
|
+
|
|
777
|
+
export declare type DashboardFilterLogicalValueField = Pick<DashboardFilterTargetField, 'name' | 'sourceField'> & {
|
|
778
|
+
dataType: DashboardFilterTargetField['dataType'];
|
|
779
|
+
};
|
|
780
|
+
|
|
781
|
+
export declare class DashboardFilterMappingContractError extends Error {
|
|
782
|
+
readonly issues: DashboardFilterMappingContractIssue[];
|
|
783
|
+
constructor(issues: DashboardFilterMappingContractIssue[]);
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
export declare type DashboardFilterMappingContractIssue = {
|
|
787
|
+
code: DashboardFilterMappingContractIssueCode;
|
|
788
|
+
path: string;
|
|
789
|
+
message: string;
|
|
790
|
+
inputId?: string;
|
|
791
|
+
cardId?: string;
|
|
792
|
+
bindingId?: string;
|
|
793
|
+
};
|
|
794
|
+
|
|
795
|
+
export declare type DashboardFilterMappingContractIssueCode = 'invalid_input' | 'both_filter_definitions' | 'missing_filter_definition' | 'orphaned_filter_reference' | 'invalid_filter_reference' | 'duplicate_filter_reference' | 'global_date_reference' | 'unsupported_mapped_scope' | 'invalid_application' | 'duplicate_card_application' | 'unknown_card' | 'invalid_binding_id' | 'unsupported_target' | 'invalid_target_field' | 'unknown_target_data_type' | 'unavailable_card_source' | 'invalid_option_source';
|
|
796
|
+
|
|
797
|
+
/** Persisted label/value option definition for a mapped dashboard filter. */
|
|
798
|
+
export declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
|
|
799
|
+
|
|
800
|
+
export declare type DashboardFilterSubscriptionHint = {
|
|
801
|
+
helper: '{{ filters | where }}' | '{{ filters | and }}';
|
|
802
|
+
description: string;
|
|
803
|
+
};
|
|
804
|
+
|
|
805
|
+
export declare type DashboardFilterTarget = {
|
|
806
|
+
kind: 'field';
|
|
807
|
+
field: DashboardFilterTargetField;
|
|
808
|
+
};
|
|
809
|
+
|
|
810
|
+
/** Persisted, source-qualified field that a mapped filter targets. */
|
|
811
|
+
export declare type DashboardFilterTargetField = {
|
|
812
|
+
name: string;
|
|
813
|
+
source: DashboardFilterTargetSource;
|
|
814
|
+
dataType: 'string' | 'number' | 'boolean' | 'date' | 'datetime';
|
|
815
|
+
/** Catalog-grounded physical column used when it differs from the semantic name. */
|
|
816
|
+
sourceField?: string;
|
|
817
|
+
};
|
|
818
|
+
|
|
819
|
+
export declare function dashboardFilterTargetMatchesLogicalValue(target: DashboardFilterTarget, logicalValueField: DashboardFilterLogicalValueField): boolean;
|
|
820
|
+
|
|
821
|
+
export declare type DashboardFilterTargetSource = Extract<SemaphorSourceRef, {
|
|
822
|
+
kind: 'semantic' | 'physical';
|
|
823
|
+
}>;
|
|
824
|
+
|
|
825
|
+
export declare function dashboardFilterValueTypeForDataType(dataType: unknown): keyof typeof OPERATIONS_BY_DATA_TYPE;
|
|
826
|
+
|
|
720
827
|
declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
|
|
721
828
|
|
|
722
829
|
declare type DashboardInputBase = {
|
|
@@ -777,14 +884,14 @@ declare type DashboardInputScope = {
|
|
|
777
884
|
sectionIds: string[];
|
|
778
885
|
};
|
|
779
886
|
|
|
780
|
-
declare type DashboardInputSlot =
|
|
887
|
+
declare type DashboardInputSlot = {
|
|
781
888
|
status: 'set';
|
|
782
889
|
value: DashboardInputValue;
|
|
783
890
|
comparisonSelection?: GlobalDateComparisonSelection;
|
|
784
|
-
}
|
|
891
|
+
} | {
|
|
785
892
|
status: 'cleared';
|
|
786
893
|
comparisonSelection?: GlobalDateComparisonSelection;
|
|
787
|
-
}
|
|
894
|
+
} | {
|
|
788
895
|
status?: never;
|
|
789
896
|
value?: never;
|
|
790
897
|
comparisonSelection: GlobalDateComparisonSelection;
|
|
@@ -901,6 +1008,27 @@ export declare type DashboardPlanWarning = {
|
|
|
901
1008
|
cardId?: string;
|
|
902
1009
|
};
|
|
903
1010
|
|
|
1011
|
+
export declare type DashboardSqlExecutionTable = {
|
|
1012
|
+
connectionId: string;
|
|
1013
|
+
databaseName?: string;
|
|
1014
|
+
schemaName?: string;
|
|
1015
|
+
tableName: string;
|
|
1016
|
+
};
|
|
1017
|
+
|
|
1018
|
+
export declare type DashboardSqlFilterTargetResolution = {
|
|
1019
|
+
status: 'eligible';
|
|
1020
|
+
source: DashboardFilterTargetSource;
|
|
1021
|
+
executionIdentifier: string;
|
|
1022
|
+
} | {
|
|
1023
|
+
status: 'ineligible';
|
|
1024
|
+
};
|
|
1025
|
+
|
|
1026
|
+
export declare type DashboardSqlPinnedCatalogSource = {
|
|
1027
|
+
source: DashboardFilterTargetSource;
|
|
1028
|
+
/** Physical SQL coordinate declared by the pinned entity, when available. */
|
|
1029
|
+
executionTable?: DashboardSqlExecutionTable;
|
|
1030
|
+
};
|
|
1031
|
+
|
|
904
1032
|
export declare type DashboardSuggestion = {
|
|
905
1033
|
id: string;
|
|
906
1034
|
title: string;
|
|
@@ -1348,6 +1476,14 @@ declare type EmailSettings = {
|
|
|
1348
1476
|
senderTitle: string;
|
|
1349
1477
|
};
|
|
1350
1478
|
|
|
1479
|
+
declare type EmbeddedFilterDashboardInput = DashboardInputBase & {
|
|
1480
|
+
kind: 'filter';
|
|
1481
|
+
filter: TFilter;
|
|
1482
|
+
filterReference?: never;
|
|
1483
|
+
optionSource?: DashboardFilterOptionSource;
|
|
1484
|
+
application?: DashboardFilterApplication;
|
|
1485
|
+
};
|
|
1486
|
+
|
|
1351
1487
|
declare type EntityType = 'table' | 'view' | 'materialized view' | 'model' | 'file' | 'dataset' | 'url' | 'upload';
|
|
1352
1488
|
|
|
1353
1489
|
declare interface Field {
|
|
@@ -1451,10 +1587,7 @@ declare interface FilterCondition {
|
|
|
1451
1587
|
temporalBucket?: TemporalBucketMetadata;
|
|
1452
1588
|
}
|
|
1453
1589
|
|
|
1454
|
-
declare type FilterDashboardInput =
|
|
1455
|
-
kind: 'filter';
|
|
1456
|
-
filter: TFilter;
|
|
1457
|
-
};
|
|
1590
|
+
declare type FilterDashboardInput = EmbeddedFilterDashboardInput | ReferencedFilterDashboardInput;
|
|
1458
1591
|
|
|
1459
1592
|
/**
|
|
1460
1593
|
* Display mode for individual filters
|
|
@@ -1564,6 +1697,12 @@ declare type FilterValue = string | number | boolean | Date | null | [number, nu
|
|
|
1564
1697
|
|
|
1565
1698
|
export declare function findDashboardAuthoringDatasetForSource(datasets: readonly SemaphorSourceRef[], source: SemaphorSourceRef | undefined): SemaphorSourceRef | undefined;
|
|
1566
1699
|
|
|
1700
|
+
export declare function findDashboardCardExecutableSource(inventory: DashboardCardFilterSourceInventory, source: DashboardFilterTargetSource): DashboardFilterTargetSource | undefined;
|
|
1701
|
+
|
|
1702
|
+
export declare function findDashboardCardPinnedCatalogSource(inventory: DashboardCardFilterSourceInventory, source: DashboardFilterTargetSource): DashboardFilterTargetSource | undefined;
|
|
1703
|
+
|
|
1704
|
+
export declare function findDashboardSqlPinnedCatalogSource(inventory: DashboardCardFilterSourceInventory, source: DashboardFilterTargetSource): DashboardSqlPinnedCatalogSource | undefined;
|
|
1705
|
+
|
|
1567
1706
|
/**
|
|
1568
1707
|
* Absolute fixed month/year default used by Month Picker defaults.
|
|
1569
1708
|
* - `month` is 0-indexed (0=January, 11=December) to align with MonthPicker.
|
|
@@ -1623,6 +1762,8 @@ export declare type GeneratedDashboardCardArtifact = {
|
|
|
1623
1762
|
|
|
1624
1763
|
export declare function getDashboardAuthoringCardSource(card: Pick<DashboardPlanCard, 'analyticsIntent'>): SemaphorSourceRef | undefined;
|
|
1625
1764
|
|
|
1765
|
+
export declare function getDashboardFilterSubscriptionHint(sql: string | null | undefined): DashboardFilterSubscriptionHint | null;
|
|
1766
|
+
|
|
1626
1767
|
export declare function getTemporalBucketAuthoringOptions(granularity: SemaphorTimeGrain, preservedFormat?: TemporalBucketFormat, preferences?: ResolvedTemporalValueFormatPreferences): readonly TemporalBucketAuthoringOption[];
|
|
1627
1768
|
|
|
1628
1769
|
export declare function getTemporalBucketAuthoringSelection(format: TemporalBucketFormat, granularity: SemaphorTimeGrain): TemporalBucketAuthoringSelection;
|
|
@@ -1654,6 +1795,12 @@ declare interface GroupByField extends Field {
|
|
|
1654
1795
|
calculatedFormula?: CalculatedFieldFormula;
|
|
1655
1796
|
}
|
|
1656
1797
|
|
|
1798
|
+
/**
|
|
1799
|
+
* Existing lightweight authoring hint for the exact plain collection helpers.
|
|
1800
|
+
* It is not SQL validation, execution, security, persistence, or save policy.
|
|
1801
|
+
*/
|
|
1802
|
+
export declare function hasDashboardFilterSubscription(sql: string | null | undefined): boolean;
|
|
1803
|
+
|
|
1657
1804
|
declare type HtmlOptions = {
|
|
1658
1805
|
html: string;
|
|
1659
1806
|
};
|
|
@@ -1731,6 +1878,8 @@ declare interface InteractionTrigger {
|
|
|
1731
1878
|
field: Field;
|
|
1732
1879
|
}
|
|
1733
1880
|
|
|
1881
|
+
export declare function isDashboardFilterOperationCompatible(dataType: unknown, operation: unknown): boolean;
|
|
1882
|
+
|
|
1734
1883
|
export declare function isMaterializableDashboardAuthoringSource(value: unknown): value is MaterializableDashboardAuthoringSource;
|
|
1735
1884
|
|
|
1736
1885
|
export declare function isSemaphorCartesianChartType(value: string | null | undefined): value is SemaphorCartesianChartType;
|
|
@@ -1877,6 +2026,34 @@ declare type MonthAlignedFiscalCalendar = {
|
|
|
1877
2026
|
|
|
1878
2027
|
declare type NoneOptions = {};
|
|
1879
2028
|
|
|
2029
|
+
export declare function normalizeDashboardInputs({ inputs, dashboardFilters, cards, validateCardTargets, }: {
|
|
2030
|
+
inputs: DashboardInput[] | unknown;
|
|
2031
|
+
dashboardFilters: TFilter[] | undefined;
|
|
2032
|
+
cards?: TCard[];
|
|
2033
|
+
/** Save/validation boundary check. Runtime drift is owned per card by the compiler. */
|
|
2034
|
+
validateCardTargets?: boolean;
|
|
2035
|
+
}): NormalizeDashboardInputsResult;
|
|
2036
|
+
|
|
2037
|
+
export declare type NormalizeDashboardInputsResult = {
|
|
2038
|
+
ok: true;
|
|
2039
|
+
inputs: NormalizedDashboardInput[];
|
|
2040
|
+
} | {
|
|
2041
|
+
ok: false;
|
|
2042
|
+
inputs: NormalizedDashboardInput[];
|
|
2043
|
+
issues: DashboardFilterMappingContractIssue[];
|
|
2044
|
+
};
|
|
2045
|
+
|
|
2046
|
+
declare type NormalizedDashboardInput = NormalizedFilterDashboardInput | ControlDashboardInput;
|
|
2047
|
+
|
|
2048
|
+
/** Runtime form after dashboard-filter references are resolved once. */
|
|
2049
|
+
declare type NormalizedFilterDashboardInput = DashboardInputBase & {
|
|
2050
|
+
kind: 'filter';
|
|
2051
|
+
filter: TFilter;
|
|
2052
|
+
optionSource?: DashboardFilterOptionSource;
|
|
2053
|
+
application?: DashboardFilterApplication;
|
|
2054
|
+
definitionOrigin: 'embedded' | 'dashboardFilter';
|
|
2055
|
+
};
|
|
2056
|
+
|
|
1880
2057
|
declare type NumberAxisFormat = {
|
|
1881
2058
|
decimalPlaces?: number;
|
|
1882
2059
|
minimumFractionDigits?: number;
|
|
@@ -1899,6 +2076,13 @@ declare type OldFilterValue = string | number | null | (string | number)[] | Ran
|
|
|
1899
2076
|
|
|
1900
2077
|
declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
|
|
1901
2078
|
|
|
2079
|
+
declare const OPERATIONS_BY_DATA_TYPE: {
|
|
2080
|
+
readonly date: Set<string>;
|
|
2081
|
+
readonly number: Set<string>;
|
|
2082
|
+
readonly string: Set<string>;
|
|
2083
|
+
readonly boolean: Set<string>;
|
|
2084
|
+
};
|
|
2085
|
+
|
|
1902
2086
|
declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'like' | 'not like' | 'in' | 'not in' | 'between' | 'not between' | 'isNull' | 'isNotNull';
|
|
1903
2087
|
|
|
1904
2088
|
declare type OptionsMap = {
|
|
@@ -1997,6 +2181,17 @@ declare type RangeValue = {
|
|
|
1997
2181
|
|
|
1998
2182
|
export declare function reconcileTemporalBucketAuthoringFormat(format: TemporalBucketFormat, granularity: SemaphorTimeGrain): TemporalBucketFormat;
|
|
1999
2183
|
|
|
2184
|
+
declare type ReferencedFilterDashboardInput = DashboardInputBase & {
|
|
2185
|
+
kind: 'filter';
|
|
2186
|
+
filter?: never;
|
|
2187
|
+
filterReference: {
|
|
2188
|
+
kind: 'dashboardFilter';
|
|
2189
|
+
filterId: string;
|
|
2190
|
+
};
|
|
2191
|
+
optionSource?: DashboardFilterOptionSource;
|
|
2192
|
+
application?: DashboardFilterApplication;
|
|
2193
|
+
};
|
|
2194
|
+
|
|
2000
2195
|
declare type RelativeDateFilter = {
|
|
2001
2196
|
mode: 'last';
|
|
2002
2197
|
n: number;
|
|
@@ -2023,6 +2218,8 @@ declare type RelativeDateFilter = {
|
|
|
2023
2218
|
to: number;
|
|
2024
2219
|
};
|
|
2025
2220
|
|
|
2221
|
+
export declare function requireNormalizedDashboardInputs(params: Parameters<typeof normalizeDashboardInputs>[0]): NormalizedDashboardInput[];
|
|
2222
|
+
|
|
2026
2223
|
/** Physical SQL/result alias used by config-owned detail projections. */
|
|
2027
2224
|
export declare function resolveCanonicalDetailResultRawKey(field: CanonicalDetailResultFieldIdentity): string;
|
|
2028
2225
|
|
|
@@ -2048,6 +2245,31 @@ export declare function resolveDashboardAuthoringSource({ explicitSource, field,
|
|
|
2048
2245
|
fallbackSources?: readonly SemaphorSourceRef[];
|
|
2049
2246
|
}): MaterializableDashboardAuthoringSource | undefined;
|
|
2050
2247
|
|
|
2248
|
+
/**
|
|
2249
|
+
* Resolves the default Option Value target from proven executable candidates.
|
|
2250
|
+
* Authoring supplies catalog-grounded candidates. Runtime supplies only
|
|
2251
|
+
* governed value fields or previously accepted same-key bindings whose source
|
|
2252
|
+
* is executable by the card. The shared rule keeps UI suggestions and query
|
|
2253
|
+
* behavior from becoming separate interpreters without inventing columns from
|
|
2254
|
+
* source identity alone.
|
|
2255
|
+
*/
|
|
2256
|
+
export declare function resolveDashboardFilterAutomaticTarget(params: {
|
|
2257
|
+
logicalValueField: DashboardFilterLogicalValueField;
|
|
2258
|
+
candidates: DashboardFilterTarget[];
|
|
2259
|
+
}): DashboardFilterAutomaticTargetResolution;
|
|
2260
|
+
|
|
2261
|
+
/**
|
|
2262
|
+
* Resolves one accepted SQL-card target without inspecting authored SQL.
|
|
2263
|
+
* Authoring may provide the grounded candidate set to reject an unqualified
|
|
2264
|
+
* duplicate. Runtime can prove an unqualified identifier remains unique only
|
|
2265
|
+
* while the card has one pinned source, so source drift fails closed.
|
|
2266
|
+
*/
|
|
2267
|
+
export declare function resolveDashboardSqlFilterTarget(params: {
|
|
2268
|
+
inventory: DashboardCardFilterSourceInventory;
|
|
2269
|
+
target: DashboardFilterTarget;
|
|
2270
|
+
candidateTargets?: DashboardFilterTarget[];
|
|
2271
|
+
}): DashboardSqlFilterTargetResolution;
|
|
2272
|
+
|
|
2051
2273
|
/** Viewer preferences that affect temporal presentation without numeric currency policy. */
|
|
2052
2274
|
declare type ResolvedTemporalValueFormatPreferences = Pick<ResolvedValueFormatPreferences, 'locale' | 'dateStyle' | 'dateTime'>;
|
|
2053
2275
|
|
|
@@ -2215,17 +2437,12 @@ declare type SemaphorInputBinding = {
|
|
|
2215
2437
|
|
|
2216
2438
|
declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
|
|
2217
2439
|
|
|
2218
|
-
declare type SemaphorInputOptionsIntent = {
|
|
2440
|
+
declare type SemaphorInputOptionsIntent = SemaphorInputOptionSource & {
|
|
2219
2441
|
kind: 'inputOptions';
|
|
2220
2442
|
version?: SemaphorProtocolVersion;
|
|
2221
2443
|
id?: string;
|
|
2222
2444
|
label?: string;
|
|
2223
2445
|
inputId: string;
|
|
2224
|
-
source: SemaphorSourceRef;
|
|
2225
|
-
labelField: SemaphorFieldRef;
|
|
2226
|
-
valueField: SemaphorFieldRef;
|
|
2227
|
-
searchField?: SemaphorFieldRef;
|
|
2228
|
-
disambiguationFields?: SemaphorFieldRef[];
|
|
2229
2446
|
population?: SemaphorOptionPopulation;
|
|
2230
2447
|
dependencies?: SemaphorOptionDependencies;
|
|
2231
2448
|
search?: string;
|
|
@@ -2234,6 +2451,16 @@ declare type SemaphorInputOptionsIntent = {
|
|
|
2234
2451
|
derivedFields?: SemaphorDerivedFieldDefinition[];
|
|
2235
2452
|
};
|
|
2236
2453
|
|
|
2454
|
+
declare type SemaphorInputOptionSource = {
|
|
2455
|
+
source: Extract<SemaphorSourceRef, {
|
|
2456
|
+
kind: 'semantic' | 'physical';
|
|
2457
|
+
}>;
|
|
2458
|
+
labelField: SemaphorFieldRef;
|
|
2459
|
+
valueField: SemaphorFieldRef;
|
|
2460
|
+
searchField?: SemaphorFieldRef;
|
|
2461
|
+
disambiguationFields?: SemaphorFieldRef[];
|
|
2462
|
+
};
|
|
2463
|
+
|
|
2237
2464
|
declare type SemaphorInputScope = {
|
|
2238
2465
|
level: 'dashboard';
|
|
2239
2466
|
excludeViewIds?: string[];
|
|
@@ -3340,7 +3567,7 @@ declare type TFilter = {
|
|
|
3340
3567
|
type?: 'single' | 'multiple';
|
|
3341
3568
|
uiType?: 'radio' | 'dropdown' | 'tabs';
|
|
3342
3569
|
dateSelectionMode?: DateSelectionMode;
|
|
3343
|
-
defaultValues?: (string | number)[];
|
|
3570
|
+
defaultValues?: (string | number | boolean)[];
|
|
3344
3571
|
defaultDateFilter?: DefaultDateFilter;
|
|
3345
3572
|
sheetId?: string;
|
|
3346
3573
|
location?: FilterLocation;
|
|
@@ -3504,7 +3731,7 @@ declare type TInlineFilter = {
|
|
|
3504
3731
|
/** Date picker type: 'range' for full calendar, 'months' for month picker */
|
|
3505
3732
|
dateSelectionMode?: DateSelectionMode;
|
|
3506
3733
|
/** Default values applied when the dashboard first loads */
|
|
3507
|
-
defaultValues?: (string | number)[];
|
|
3734
|
+
defaultValues?: (string | number | boolean)[];
|
|
3508
3735
|
/** Default date filter applied on dashboard load (relative or fixed month/year) */
|
|
3509
3736
|
defaultDateFilter?: DefaultDateFilter;
|
|
3510
3737
|
/** Search mode for numeric filters: 'text' treats as text, 'numeric' enables operators (>, <, =) */
|