@meshmakers/octo-meshboard 3.5.510 → 3.5.520
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.
|
@@ -668,6 +668,17 @@ interface GaugeWidgetConfig extends WidgetConfig {
|
|
|
668
668
|
queryCategoryValue?: string;
|
|
669
669
|
/** Field filters for data source */
|
|
670
670
|
filters?: WidgetFilterConfig[];
|
|
671
|
+
/**
|
|
672
|
+
* How the value is obtained, as on the KPI (AB#7950). `'formula'` computes it from
|
|
673
|
+
* {@link formula} over MeshBoard variables (the data source stays `{ type: 'static' }`);
|
|
674
|
+
* `'value'` or absent uses the data source.
|
|
675
|
+
*/
|
|
676
|
+
valueMode?: KpiValueMode;
|
|
677
|
+
/**
|
|
678
|
+
* Formula over MeshBoard variables, e.g. `max(0, min(100, (1 - ${import} / ${consumption}) * 100))`.
|
|
679
|
+
* Used when `valueMode` is `'formula'`; the result must be a number.
|
|
680
|
+
*/
|
|
681
|
+
formula?: string;
|
|
671
682
|
}
|
|
672
683
|
/**
|
|
673
684
|
* Pie Chart types available
|
|
@@ -861,9 +872,21 @@ type HeatmapColorScheme = 'green' | 'redGreen' | 'blue' | 'heat';
|
|
|
861
872
|
*/
|
|
862
873
|
type HeatmapColorMode = 'gradient' | 'threshold';
|
|
863
874
|
/**
|
|
864
|
-
* Client-side aggregation function for simple queries
|
|
875
|
+
* Client-side aggregation function for simple queries.
|
|
876
|
+
* `weightedAvg` (AB#7956): cell = Σ valueField / Σ weightField, for rollup archives that store a
|
|
877
|
+
* mean as a sum column plus a count column; a cell without rows is empty, not 0.
|
|
878
|
+
*/
|
|
879
|
+
type HeatmapAggregation = 'count' | 'sum' | 'avg' | 'weightedAvg';
|
|
880
|
+
/**
|
|
881
|
+
* Widget-level relative time window of a heatmap (AB#7956), e.g. the last 30 days.
|
|
882
|
+
* Overrides the board time filter for this widget's stream-data query.
|
|
865
883
|
*/
|
|
866
|
-
|
|
884
|
+
interface HeatmapTimeWindow {
|
|
885
|
+
/** Number of units, a positive integer */
|
|
886
|
+
value: number;
|
|
887
|
+
/** Unit of the window */
|
|
888
|
+
unit: RelativeTimeUnit;
|
|
889
|
+
}
|
|
867
890
|
/**
|
|
868
891
|
* Heatmap Widget - displays data availability or density as a heatmap
|
|
869
892
|
* X-axis: Date (day), Y-axis: Time slot (hour or 15-min interval), Color: aggregated value
|
|
@@ -880,10 +903,25 @@ interface HeatmapWidgetConfig extends WidgetConfig {
|
|
|
880
903
|
/** Optional end-of-interval field (e.g. timeRange.to). When set, the interval width is auto-detected
|
|
881
904
|
* and sub-hour columns are shown (e.g. 00-15, 15-30, 30-45, 45-60 for 15-min data). */
|
|
882
905
|
dateEndField?: string;
|
|
883
|
-
/** Field containing the numeric value to aggregate (for sum/avg) */
|
|
906
|
+
/** Field containing the numeric value to aggregate (for sum/avg; the sum column for weightedAvg) */
|
|
884
907
|
valueField?: string;
|
|
885
908
|
/** Client-side aggregation function for simple queries */
|
|
886
909
|
aggregation: HeatmapAggregation;
|
|
910
|
+
/** `weightedAvg` only: the weight (count) column; cell = Σ valueField / Σ weightField (AB#7956) */
|
|
911
|
+
weightField?: string;
|
|
912
|
+
/**
|
|
913
|
+
* The date field marks the END of a bucket (rollup archives) (AB#7956). Each row is shifted back by
|
|
914
|
+
* {@link bucketWidthMinutes} to its bucket start before hour/day bucketing, so the last bucket of an
|
|
915
|
+
* hour stays in that hour. Ignored when {@link dateEndField} is set.
|
|
916
|
+
*/
|
|
917
|
+
timestampIsBucketEnd?: boolean;
|
|
918
|
+
/** Bucket width in minutes for {@link timestampIsBucketEnd} (e.g. 5 for a 5-min rollup) */
|
|
919
|
+
bucketWidthMinutes?: number;
|
|
920
|
+
/**
|
|
921
|
+
* Own relative time window (AB#7956). When set, it overrides the board time filter for this
|
|
922
|
+
* widget's stream-data query, and the widget shows the window in a badge. Unset = board filter.
|
|
923
|
+
*/
|
|
924
|
+
timeWindow?: HeatmapTimeWindow;
|
|
887
925
|
/** Color scheme for the heatmap (used in `gradient` color mode) */
|
|
888
926
|
colorScheme: HeatmapColorScheme;
|
|
889
927
|
/** Coloring mode — relative `gradient` (default) or absolute `threshold` bands */
|
|
@@ -1457,6 +1495,27 @@ interface EntitySelectorChildScope {
|
|
|
1457
1495
|
}
|
|
1458
1496
|
/** Maximum number of hops of a child-scope path, enforced by editor and runtime (AB#7723). */
|
|
1459
1497
|
declare const MAX_SCOPE_HOPS = 5;
|
|
1498
|
+
/**
|
|
1499
|
+
* Scope source of a dependent selector (AB#7915): the selector's picker lists
|
|
1500
|
+
* only the entities reached from the leader's current pick through `path`.
|
|
1501
|
+
*
|
|
1502
|
+
* - `selectorId` — the leader: another selector of the same board that is
|
|
1503
|
+
* neither a follower (`followsSelectorId`) nor itself dependent. One level
|
|
1504
|
+
* only, like AB#7722 followers.
|
|
1505
|
+
* - `path` — 1 to {@link MAX_SCOPE_HOPS} hops (the AB#7723 hop shape) from the
|
|
1506
|
+
* leader's CK type to this selector's CK type. Always a path, also for a
|
|
1507
|
+
* single hop (no one-hop shorthand).
|
|
1508
|
+
*
|
|
1509
|
+
* The picker sends the distinct rtIds at the end of the path as GraphQL field
|
|
1510
|
+
* filter `rtId IN (…)`, AND-combined with the picker filter (AB#7724) and the
|
|
1511
|
+
* text search. See `utils/entity-selector-scope-source.ts`.
|
|
1512
|
+
*/
|
|
1513
|
+
interface EntitySelectorScopeSource {
|
|
1514
|
+
/** Id of the leader selector. */
|
|
1515
|
+
selectorId: string;
|
|
1516
|
+
/** Hops from the leader's CK type to this selector's CK type (1–{@link MAX_SCOPE_HOPS}). */
|
|
1517
|
+
path: EntitySelectorScopeHop[];
|
|
1518
|
+
}
|
|
1460
1519
|
/**
|
|
1461
1520
|
* Configuration for a single entity selector in the MeshBoard toolbar.
|
|
1462
1521
|
* Each selector is bound to a CK type and populates variables from the selected entity.
|
|
@@ -1507,6 +1566,16 @@ interface EntitySelectorConfig {
|
|
|
1507
1566
|
* See `utils/entity-selector-filter.ts`.
|
|
1508
1567
|
*/
|
|
1509
1568
|
filters?: WidgetFilterConfig[];
|
|
1569
|
+
/**
|
|
1570
|
+
* Optional scope source (AB#7915): makes this selector *dependent* on a
|
|
1571
|
+
* leader selector. While the leader has a pick, the toolbar dropdown and its
|
|
1572
|
+
* search dialog list only the entities reached from that pick through
|
|
1573
|
+
* `path` (server side, `rtId IN`). Without a leader pick the picker lists as
|
|
1574
|
+
* if no scope source were set. A failed or invalid scope lists nothing — it
|
|
1575
|
+
* never falls back to the full list. Followers ignore it.
|
|
1576
|
+
* See {@link EntitySelectorScopeSource}.
|
|
1577
|
+
*/
|
|
1578
|
+
scopeSource?: EntitySelectorScopeSource;
|
|
1510
1579
|
/** Current selection (transient, not persisted) */
|
|
1511
1580
|
selectedRtId?: string;
|
|
1512
1581
|
/** Display name of the currently selected entity */
|
|
@@ -2106,6 +2175,10 @@ declare class QueryExecutorService {
|
|
|
2106
2175
|
* - `pending`: the pick is being resolved (childScope traversal, one hop or a path).
|
|
2107
2176
|
* - `resolved`: the pick resolved to `rtIds` — possibly none.
|
|
2108
2177
|
* - `failed`: the resolution threw (e.g. the association fetch failed).
|
|
2178
|
+
* - `needsPick` (AB#7916): a dependent selector (`scopeSource`) — or a follower
|
|
2179
|
+
* of one — has no pick while its leader has one. Bound widgets show no data
|
|
2180
|
+
* and the view asks for a pick; the persisted scope would show entities
|
|
2181
|
+
* outside the leader's pick. Only used for widget scopes, never for picker scopes.
|
|
2109
2182
|
*
|
|
2110
2183
|
* A selector without an entry has no active pick: bound widgets keep the
|
|
2111
2184
|
* query's persisted scope.
|
|
@@ -2117,6 +2190,8 @@ type EntitySelectorScopeState = {
|
|
|
2117
2190
|
rtIds: string[];
|
|
2118
2191
|
} | {
|
|
2119
2192
|
status: 'failed';
|
|
2193
|
+
} | {
|
|
2194
|
+
status: 'needsPick';
|
|
2120
2195
|
};
|
|
2121
2196
|
/**
|
|
2122
2197
|
* What a widget bound to an entity selector does with its persistent query —
|
|
@@ -2133,6 +2208,8 @@ type EntitySelectorScopeState = {
|
|
|
2133
2208
|
* - `empty`: the pick has nothing in scope (`noTargets`) or the lookup failed
|
|
2134
2209
|
* (`failed`) — show the no-data state and send NO query. Never fall back to
|
|
2135
2210
|
* the persisted scope: that would show rows of other entities.
|
|
2211
|
+
* `noPick` (AB#7916): a dependent selector has no pick while its leader has
|
|
2212
|
+
* one — the view shows "Pick a <label> to see this data.".
|
|
2136
2213
|
* `invalidTimeRange` (AB#7582): the embedding host set a `timeRange` that is
|
|
2137
2214
|
* unparseable or empty (`from >= to`) — every stream-data query bound to the
|
|
2138
2215
|
* time filter is skipped, whatever its selector binding; a widget with
|
|
@@ -2147,7 +2224,7 @@ type StreamDataScope = {
|
|
|
2147
2224
|
rtIds: string[];
|
|
2148
2225
|
} | {
|
|
2149
2226
|
kind: 'empty';
|
|
2150
|
-
reason: 'noTargets' | 'failed' | 'invalidTimeRange';
|
|
2227
|
+
reason: 'noTargets' | 'failed' | 'noPick' | 'invalidTimeRange';
|
|
2151
2228
|
};
|
|
2152
2229
|
/**
|
|
2153
2230
|
* The result a widget renders instead of executing its query when its scope is
|
|
@@ -2389,6 +2466,83 @@ declare class WidgetNotConfiguredComponent {
|
|
|
2389
2466
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WidgetNotConfiguredComponent, "mm-widget-not-configured", never, {}, {}, never, never, true, never>;
|
|
2390
2467
|
}
|
|
2391
2468
|
|
|
2469
|
+
interface FormulaValidationResult {
|
|
2470
|
+
valid: boolean;
|
|
2471
|
+
/** Syntax error or other reason the formula is invalid */
|
|
2472
|
+
error?: string;
|
|
2473
|
+
/** Referenced variables that do not exist (bare identifiers are reported as well) */
|
|
2474
|
+
unknownVariables: string[];
|
|
2475
|
+
}
|
|
2476
|
+
/**
|
|
2477
|
+
* Outcome of evaluating a formula:
|
|
2478
|
+
* - `ok`: a value;
|
|
2479
|
+
* - `pending`: empty formula or a referenced variable has no value yet → the widget shows `-`, no error;
|
|
2480
|
+
* - `nonFinite`: the result is `Infinity`/`NaN` (e.g. division by zero, PV = 0 at night) → the widget
|
|
2481
|
+
* shows `-` and the `reason` as tooltip, no error state (AB#7950);
|
|
2482
|
+
* - `error`: syntax or evaluation error → the widget error state with the message.
|
|
2483
|
+
*/
|
|
2484
|
+
type FormulaEvaluationResult = {
|
|
2485
|
+
status: 'pending';
|
|
2486
|
+
} | {
|
|
2487
|
+
status: 'ok';
|
|
2488
|
+
value: number | string | boolean;
|
|
2489
|
+
} | {
|
|
2490
|
+
status: 'nonFinite';
|
|
2491
|
+
reason: string;
|
|
2492
|
+
} | {
|
|
2493
|
+
status: 'error';
|
|
2494
|
+
error: string;
|
|
2495
|
+
};
|
|
2496
|
+
|
|
2497
|
+
/**
|
|
2498
|
+
* Formula field shared by the widget config dialogs (KPI, gauge; AB#7950): the formula input,
|
|
2499
|
+
* the syntax hint, the validation message, the live preview and the list of insertable variables.
|
|
2500
|
+
*
|
|
2501
|
+
* Validation is `validateFormulaField` of `utils/meshboard-formula.ts` — the dialogs call the same
|
|
2502
|
+
* function to decide whether Save is enabled, so there is exactly one validation rule.
|
|
2503
|
+
*
|
|
2504
|
+
* Usage:
|
|
2505
|
+
* ```html
|
|
2506
|
+
* <mm-meshboard-formula-field
|
|
2507
|
+
* [(formula)]="form.formula"
|
|
2508
|
+
* [variables]="formulaVariables"
|
|
2509
|
+
* [declaredNames]="declaredVariableNames">
|
|
2510
|
+
* </mm-meshboard-formula-field>
|
|
2511
|
+
* ```
|
|
2512
|
+
*/
|
|
2513
|
+
declare class FormulaFieldComponent {
|
|
2514
|
+
private readonly evaluator;
|
|
2515
|
+
/** The formula text (two-way: `[(formula)]`) */
|
|
2516
|
+
readonly formula: _angular_core.ModelSignal<string>;
|
|
2517
|
+
/** Variables the formula can reference; their current values drive the preview */
|
|
2518
|
+
readonly variables: _angular_core.InputSignal<readonly MeshBoardVariable[]>;
|
|
2519
|
+
/** Names that exist by configuration but carry no value yet (count as known, preview pending) */
|
|
2520
|
+
readonly declaredNames: _angular_core.InputSignal<readonly string[]>;
|
|
2521
|
+
/** The result must be a number (gauge): a string/boolean preview shows "Result is not a number" */
|
|
2522
|
+
readonly numericOnly: _angular_core.InputSignal<boolean>;
|
|
2523
|
+
/** Show the clamp pattern in the hint (widgets with a scale) */
|
|
2524
|
+
readonly clampHint: _angular_core.InputSignal<boolean>;
|
|
2525
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
2526
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
2527
|
+
readonly variableSyntaxHint = "${variableName}";
|
|
2528
|
+
readonly clampExample = "max(0, min(100, \u2026))";
|
|
2529
|
+
private readonly id;
|
|
2530
|
+
readonly inputId: string;
|
|
2531
|
+
readonly hintId: string;
|
|
2532
|
+
readonly messageId: string;
|
|
2533
|
+
readonly variablesLabelId: string;
|
|
2534
|
+
/** Validation of the current formula (the same rule the dialogs use for Save) */
|
|
2535
|
+
readonly validation: _angular_core.Signal<FormulaValidationResult>;
|
|
2536
|
+
/** Evaluation of the current formula over the current variable values */
|
|
2537
|
+
readonly evaluation: _angular_core.Signal<FormulaEvaluationResult>;
|
|
2538
|
+
readonly preview: _angular_core.Signal<string>;
|
|
2539
|
+
readonly inputAttributes: _angular_core.Signal<Record<string, string>>;
|
|
2540
|
+
/** Appends a `${name}` reference to the formula */
|
|
2541
|
+
insertVariable(name: string): void;
|
|
2542
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormulaFieldComponent, never>;
|
|
2543
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormulaFieldComponent, "mm-meshboard-formula-field", never, { "formula": { "alias": "formula"; "required": false; "isSignal": true; }; "variables": { "alias": "variables"; "required": false; "isSignal": true; }; "declaredNames": { "alias": "declaredNames"; "required": false; "isSignal": true; }; "numericOnly": { "alias": "numericOnly"; "required": false; "isSignal": true; }; "clampHint": { "alias": "clampHint"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "formula": "formulaChange"; }, never, never, true, never>;
|
|
2544
|
+
}
|
|
2545
|
+
|
|
2392
2546
|
/**
|
|
2393
2547
|
* Defines how parent associations should be handled when mapping widget input
|
|
2394
2548
|
*/
|
|
@@ -2572,6 +2726,16 @@ declare class MeshBoardStateService {
|
|
|
2572
2726
|
* (AB#7721).
|
|
2573
2727
|
*/
|
|
2574
2728
|
private readonly _entitySelectorScopes;
|
|
2729
|
+
/**
|
|
2730
|
+
* Transient picker scope of each dependent selector (AB#7915, keyed by the
|
|
2731
|
+
* dependent's id): `pending` while the leader's pick resolves along
|
|
2732
|
+
* `scopeSource.path`, `resolved` with the rtIds the picker may list
|
|
2733
|
+
* (possibly none), or `failed`. No entry = the leader has no pick, the picker
|
|
2734
|
+
* lists unscoped. Not persisted, cleared on board switch.
|
|
2735
|
+
*/
|
|
2736
|
+
private readonly _pickerScopes;
|
|
2737
|
+
/** Picker scopes of the dependent selectors (AB#7915), for the toolbar. */
|
|
2738
|
+
readonly pickerScopes: _angular_core.Signal<Record<string, EntitySelectorScopeState>>;
|
|
2575
2739
|
/**
|
|
2576
2740
|
* Period set by the page that embeds the board (`MeshBoardViewComponent.timeRange`, AB#7582):
|
|
2577
2741
|
* exact instants, or `invalid` when the host passed an unusable range. `null` = the board's own
|
|
@@ -2887,6 +3051,13 @@ declare class MeshBoardStateService {
|
|
|
2887
3051
|
* (AB#7721).
|
|
2888
3052
|
*/
|
|
2889
3053
|
setEntitySelectorScopeFailed(selectorId: string): void;
|
|
3054
|
+
/**
|
|
3055
|
+
* Marks a selector as "needs a pick" (AB#7916): a dependent selector — or a
|
|
3056
|
+
* follower of one — has no pick while its leader has one. Bound widgets show
|
|
3057
|
+
* no data and send no query (never the persisted scope, which would show
|
|
3058
|
+
* entities outside the leader's pick); the view asks for a pick.
|
|
3059
|
+
*/
|
|
3060
|
+
setEntitySelectorScopeNeedsPick(selectorId: string): void;
|
|
2890
3061
|
/**
|
|
2891
3062
|
* Clears the scope state for an entity selector (its selection was cleared).
|
|
2892
3063
|
* Bound widgets then query with the persisted scope again.
|
|
@@ -2899,6 +3070,11 @@ declare class MeshBoardStateService {
|
|
|
2899
3070
|
* "could not resolve the scope" notice, AB#7721).
|
|
2900
3071
|
*/
|
|
2901
3072
|
readonly failedEntitySelectorScopeIds: _angular_core.Signal<string[]>;
|
|
3073
|
+
/**
|
|
3074
|
+
* Ids of the selectors that need a pick (AB#7916), for the view's
|
|
3075
|
+
* "Pick a <label> to see this data." notice.
|
|
3076
|
+
*/
|
|
3077
|
+
readonly needsPickEntitySelectorIds: _angular_core.Signal<string[]>;
|
|
2902
3078
|
/**
|
|
2903
3079
|
* Decides how a widget runs its persistent query — the entry point every
|
|
2904
3080
|
* built-in widget calls with its binding, query family and time-filter opt-out:
|
|
@@ -2924,6 +3100,8 @@ declare class MeshBoardStateService {
|
|
|
2924
3100
|
* (`QueryExecutionOptions.scopeRtIds`).
|
|
2925
3101
|
* - `empty` — the pick has nothing in scope or the lookup failed: show the
|
|
2926
3102
|
* no-data state and send no query. Never fall back to the persisted scope.
|
|
3103
|
+
* Also a dependent selector without pick while its leader has one
|
|
3104
|
+
* (`noPick`, AB#7916).
|
|
2927
3105
|
*/
|
|
2928
3106
|
resolveEntitySelectorScope(entitySelectorId?: string): StreamDataScope;
|
|
2929
3107
|
/**
|
|
@@ -2936,6 +3114,17 @@ declare class MeshBoardStateService {
|
|
|
2936
3114
|
* skip the query for `pending` / `empty` (AB#7721).
|
|
2937
3115
|
*/
|
|
2938
3116
|
resolveStreamDataRtIds(entitySelectorId?: string): string[] | undefined;
|
|
3117
|
+
/** Marks a dependent selector's picker scope as resolving (AB#7915): the picker lists nothing yet. */
|
|
3118
|
+
setPickerScopePending(selectorId: string): void;
|
|
3119
|
+
/** Stores the rtIds a dependent selector's picker may list (AB#7915); `[]` = nothing in the leader's pick. */
|
|
3120
|
+
setPickerScopeRtIds(selectorId: string, rtIds: string[]): void;
|
|
3121
|
+
/** Marks a dependent selector's picker scope as failed (AB#7915): the picker lists nothing. */
|
|
3122
|
+
setPickerScopeFailed(selectorId: string): void;
|
|
3123
|
+
/** Clears a dependent selector's picker scope (its leader has no pick): the picker lists unscoped. */
|
|
3124
|
+
clearPickerScope(selectorId: string): void;
|
|
3125
|
+
/** The picker scope of a dependent selector, or `undefined` when its leader has no pick. */
|
|
3126
|
+
getPickerScopeState(selectorId: string): EntitySelectorScopeState | undefined;
|
|
3127
|
+
private setPickerScope;
|
|
2939
3128
|
private setEntitySelectorScope;
|
|
2940
3129
|
/**
|
|
2941
3130
|
* Sets (or with `null` clears) the period of the page embedding the board
|
|
@@ -3788,6 +3977,11 @@ declare class KpiWidgetComponent implements DashboardWidget<KpiWidgetConfig, Run
|
|
|
3788
3977
|
private readonly formulaResult;
|
|
3789
3978
|
/** Error message of the formula (syntax, evaluation or circular reference). */
|
|
3790
3979
|
readonly formulaError: _angular_core.Signal<string | null>;
|
|
3980
|
+
/**
|
|
3981
|
+
* Tooltip of the value: the reason a formula result is shown as `-` although every
|
|
3982
|
+
* variable has a value (non-finite result, e.g. division by zero; AB#7950), else `null`.
|
|
3983
|
+
*/
|
|
3984
|
+
readonly valueTooltip: _angular_core.Signal<string | null>;
|
|
3791
3985
|
/**
|
|
3792
3986
|
* Unformatted value: the formula result, or the value taken from the loaded data
|
|
3793
3987
|
* (query values already scaled by `valueMultiplier`).
|
|
@@ -3841,14 +4035,6 @@ declare class KpiWidgetComponent implements DashboardWidget<KpiWidgetConfig, Run
|
|
|
3841
4035
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KpiWidgetComponent, "mm-kpi-widget", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
|
|
3842
4036
|
}
|
|
3843
4037
|
|
|
3844
|
-
interface FormulaValidationResult {
|
|
3845
|
-
valid: boolean;
|
|
3846
|
-
/** Syntax error or other reason the formula is invalid */
|
|
3847
|
-
error?: string;
|
|
3848
|
-
/** Referenced variables that do not exist (bare identifiers are reported as well) */
|
|
3849
|
-
unknownVariables: string[];
|
|
3850
|
-
}
|
|
3851
|
-
|
|
3852
4038
|
/**
|
|
3853
4039
|
* Data source type for KPI. `'formula'` computes the value from a formula over
|
|
3854
4040
|
* MeshBoard variables (stored as static data source with `valueMode: 'formula'`).
|
|
@@ -3988,15 +4174,13 @@ declare class KpiConfigDialogComponent implements OnInit {
|
|
|
3988
4174
|
* outputs declared by other KPIs (e.g. still loading or in error) and the variables an
|
|
3989
4175
|
* entity selector exposes once an entity is picked.
|
|
3990
4176
|
*/
|
|
3991
|
-
|
|
4177
|
+
get declaredVariableNames(): string[];
|
|
3992
4178
|
/**
|
|
3993
4179
|
* Validation of the current formula (memoized per formula text and available variable names).
|
|
3994
4180
|
* Declared names count as known, so a reference to an output without a value yet can be saved;
|
|
3995
4181
|
* the preview keeps evaluating the live values and shows it as pending.
|
|
3996
4182
|
*/
|
|
3997
4183
|
get formulaValidation(): FormulaValidationResult;
|
|
3998
|
-
/** Result of the current formula over the current variable values */
|
|
3999
|
-
get formulaPreview(): string;
|
|
4000
4184
|
/** Validation message for the output variable name, or `null` when valid or empty */
|
|
4001
4185
|
get outputVariableError(): string | null;
|
|
4002
4186
|
/** Circular reference introduced by the pending formula / output name, or `null` */
|
|
@@ -4024,8 +4208,6 @@ declare class KpiConfigDialogComponent implements OnInit {
|
|
|
4024
4208
|
private displayFields;
|
|
4025
4209
|
onCancel(): void;
|
|
4026
4210
|
onDataSourceTypeChange(type: KpiDataSourceType): void;
|
|
4027
|
-
/** Appends a `${name}` reference to the formula */
|
|
4028
|
-
insertVariable(name: string): void;
|
|
4029
4211
|
onQuerySelected(query: PersistentQueryItem | null): Promise<void>;
|
|
4030
4212
|
onQueryModeChange(mode: KpiQueryMode): Promise<void>;
|
|
4031
4213
|
private loadQueryColumnsAndValues;
|
|
@@ -4506,10 +4688,23 @@ declare class GaugeWidgetComponent implements DashboardWidget<GaugeWidgetConfig,
|
|
|
4506
4688
|
private static readonly SUPPORTED_ROW_TYPES;
|
|
4507
4689
|
private readonly stateService;
|
|
4508
4690
|
private readonly variableService;
|
|
4691
|
+
private readonly expressionEvaluator;
|
|
4509
4692
|
config: GaugeWidgetConfig;
|
|
4693
|
+
/**
|
|
4694
|
+
* Signal mirror of the `config` input, so the formula computeds re-run when the config
|
|
4695
|
+
* changes (the input itself is a plain property). Falls back to the input before the
|
|
4696
|
+
* first lifecycle hook.
|
|
4697
|
+
*/
|
|
4698
|
+
private readonly _config;
|
|
4699
|
+
private currentConfig;
|
|
4510
4700
|
private readonly _isLoading;
|
|
4511
4701
|
private readonly _data;
|
|
4512
4702
|
private readonly _error;
|
|
4703
|
+
/**
|
|
4704
|
+
* Incremented on every load; a request that resolves after a newer load started (e.g. the
|
|
4705
|
+
* config switched to formula mode meanwhile) must not overwrite the newer state.
|
|
4706
|
+
*/
|
|
4707
|
+
private loadGeneration;
|
|
4513
4708
|
readonly isLoading: _angular_core.Signal<boolean>;
|
|
4514
4709
|
readonly data: _angular_core.Signal<RuntimeEntityData | null>;
|
|
4515
4710
|
readonly error: _angular_core.Signal<string | null>;
|
|
@@ -4518,7 +4713,31 @@ declare class GaugeWidgetComponent implements DashboardWidget<GaugeWidgetConfig,
|
|
|
4518
4713
|
* This is a method (not computed) to ensure it re-evaluates when config changes via @Input.
|
|
4519
4714
|
*/
|
|
4520
4715
|
isNotConfigured(): boolean;
|
|
4716
|
+
/** True when the value is computed from a formula over MeshBoard variables (AB#7950). */
|
|
4717
|
+
isFormulaMode(): boolean;
|
|
4718
|
+
/**
|
|
4719
|
+
* Formula evaluation result, live over the MeshBoard variables (AB#7950); `null` outside
|
|
4720
|
+
* formula mode. Same engine and rules as the KPI, but the result must be a number.
|
|
4721
|
+
* A gauge publishes no output variable, so it can never be part of a variable cycle.
|
|
4722
|
+
*/
|
|
4723
|
+
private readonly formulaResult;
|
|
4724
|
+
/** Error message of the formula (syntax, evaluation, non-numeric result). */
|
|
4725
|
+
readonly formulaError: _angular_core.Signal<string | null>;
|
|
4726
|
+
/**
|
|
4727
|
+
* Tooltip of the value label: the reason a formula result is shown as `-` although every
|
|
4728
|
+
* variable has a value (non-finite result, e.g. division by zero), else `null`.
|
|
4729
|
+
*/
|
|
4730
|
+
readonly valueTooltip: _angular_core.Signal<string | null>;
|
|
4731
|
+
/** True when there is a value to show (data loaded, or a formula result). */
|
|
4732
|
+
readonly hasValue: _angular_core.Signal<boolean>;
|
|
4733
|
+
/** The real value, shown in the label (may lie outside the scale). */
|
|
4521
4734
|
readonly numericValue: _angular_core.Signal<number>;
|
|
4735
|
+
/**
|
|
4736
|
+
* Value of the pointer: the real value clamped to the scale, so the pointer stops at the
|
|
4737
|
+
* scale end while the label shows the real value (AB#7950). Without a value it rests at
|
|
4738
|
+
* the scale start.
|
|
4739
|
+
*/
|
|
4740
|
+
readonly pointerValue: _angular_core.Signal<number>;
|
|
4522
4741
|
readonly formattedValue: _angular_core.Signal<string>;
|
|
4523
4742
|
readonly label: _angular_core.Signal<string>;
|
|
4524
4743
|
ngOnInit(): void;
|
|
@@ -4540,9 +4759,10 @@ declare class GaugeWidgetComponent implements DashboardWidget<GaugeWidgetConfig,
|
|
|
4540
4759
|
}
|
|
4541
4760
|
|
|
4542
4761
|
/**
|
|
4543
|
-
* Data source type for Gauge
|
|
4762
|
+
* Data source type for Gauge. `'formula'` computes the value from a formula over MeshBoard
|
|
4763
|
+
* variables (stored as static data source with `valueMode: 'formula'`, AB#7950).
|
|
4544
4764
|
*/
|
|
4545
|
-
type GaugeDataSourceType = 'runtimeEntity' | 'persistentQuery';
|
|
4765
|
+
type GaugeDataSourceType = 'runtimeEntity' | 'persistentQuery' | 'formula';
|
|
4546
4766
|
/**
|
|
4547
4767
|
* Configuration result from the Gauge dialog
|
|
4548
4768
|
*/
|
|
@@ -4562,6 +4782,7 @@ interface GaugeConfigResult extends WidgetConfigResult {
|
|
|
4562
4782
|
queryValueField?: string;
|
|
4563
4783
|
queryCategoryField?: string;
|
|
4564
4784
|
queryCategoryValue?: string;
|
|
4785
|
+
formula?: string;
|
|
4565
4786
|
gaugeType: GaugeType;
|
|
4566
4787
|
min?: number;
|
|
4567
4788
|
max?: number;
|
|
@@ -4595,6 +4816,7 @@ declare class GaugeConfigDialogComponent implements OnInit {
|
|
|
4595
4816
|
private static readonly INTROSPECTION_ROW_TYPES;
|
|
4596
4817
|
private readonly meshBoardStateService;
|
|
4597
4818
|
private readonly windowRef;
|
|
4819
|
+
private readonly expressionEvaluator;
|
|
4598
4820
|
ckTypeSelectorInput?: CkTypeSelectorInputComponent;
|
|
4599
4821
|
entitySelectorInput?: EntitySelectInputComponent;
|
|
4600
4822
|
querySelector?: QuerySelectorComponent;
|
|
@@ -4621,6 +4843,9 @@ declare class GaugeConfigDialogComponent implements OnInit {
|
|
|
4621
4843
|
initialQueryCategoryField?: string;
|
|
4622
4844
|
initialQueryCategoryValue?: string;
|
|
4623
4845
|
initialFilters?: WidgetFilterConfig[];
|
|
4846
|
+
/** Id of the edited widget (excluded from the declared output names) */
|
|
4847
|
+
initialWidgetId?: string;
|
|
4848
|
+
initialFormula?: string;
|
|
4624
4849
|
dataSourceType: GaugeDataSourceType;
|
|
4625
4850
|
selectedCkType: CkTypeSelectorItem | null;
|
|
4626
4851
|
selectedEntity: RuntimeEntityItem | null;
|
|
@@ -4660,7 +4885,18 @@ declare class GaugeConfigDialogComponent implements OnInit {
|
|
|
4660
4885
|
queryValueField: string;
|
|
4661
4886
|
queryCategoryField: string;
|
|
4662
4887
|
queryCategoryValue: string;
|
|
4888
|
+
formula: string;
|
|
4663
4889
|
};
|
|
4890
|
+
/**
|
|
4891
|
+
* Variables a formula can reference: MeshBoard variables plus the KPIs' published outputs.
|
|
4892
|
+
* Read live, so outputs published while the dialog is open become available immediately.
|
|
4893
|
+
*/
|
|
4894
|
+
get formulaVariables(): MeshBoardVariable[];
|
|
4895
|
+
/** Names that exist by configuration but carry no value yet (declared KPI outputs, selector variables) */
|
|
4896
|
+
get declaredVariableNames(): string[];
|
|
4897
|
+
private formulaValidationCache?;
|
|
4898
|
+
/** Validation of the current formula — the same rule the shared formula field shows */
|
|
4899
|
+
get formulaValidation(): FormulaValidationResult;
|
|
4664
4900
|
gaugeTypeOptions: GaugeTypeOption[];
|
|
4665
4901
|
queryModeOptions: {
|
|
4666
4902
|
value: KpiQueryMode;
|
|
@@ -4680,6 +4916,8 @@ declare class GaugeConfigDialogComponent implements OnInit {
|
|
|
4680
4916
|
addRange(): void;
|
|
4681
4917
|
removeRange(index: number): void;
|
|
4682
4918
|
onSave(): void;
|
|
4919
|
+
/** Gauge options shared by every data source */
|
|
4920
|
+
private gaugeOptionsResult;
|
|
4683
4921
|
onCancel(): void;
|
|
4684
4922
|
onDataSourceTypeChange(type: GaugeDataSourceType): void;
|
|
4685
4923
|
onQuerySelected(query: PersistentQueryItem | null): Promise<void>;
|
|
@@ -4696,7 +4934,7 @@ declare class GaugeConfigDialogComponent implements OnInit {
|
|
|
4696
4934
|
private loadCategoryValuesForField;
|
|
4697
4935
|
onFiltersChange(updatedFilters: FieldFilterItem[]): void;
|
|
4698
4936
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GaugeConfigDialogComponent, never>;
|
|
4699
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<GaugeConfigDialogComponent, "mm-gauge-config-dialog", never, { "initialCkTypeId": { "alias": "initialCkTypeId"; "required": false; }; "initialRtId": { "alias": "initialRtId"; "required": false; }; "initialGaugeType": { "alias": "initialGaugeType"; "required": false; }; "initialValueAttribute": { "alias": "initialValueAttribute"; "required": false; }; "initialLabelAttribute": { "alias": "initialLabelAttribute"; "required": false; }; "initialMin": { "alias": "initialMin"; "required": false; }; "initialMax": { "alias": "initialMax"; "required": false; }; "initialRanges": { "alias": "initialRanges"; "required": false; }; "initialShowLabel": { "alias": "initialShowLabel"; "required": false; }; "initialPrefix": { "alias": "initialPrefix"; "required": false; }; "initialSuffix": { "alias": "initialSuffix"; "required": false; }; "initialReverse": { "alias": "initialReverse"; "required": false; }; "initialDataSourceType": { "alias": "initialDataSourceType"; "required": false; }; "initialQueryRtId": { "alias": "initialQueryRtId"; "required": false; }; "initialQueryName": { "alias": "initialQueryName"; "required": false; }; "initialQueryFamily": { "alias": "initialQueryFamily"; "required": false; }; "initialIgnoreTimeFilter": { "alias": "initialIgnoreTimeFilter"; "required": false; }; "initialEntitySelectorId": { "alias": "initialEntitySelectorId"; "required": false; }; "initialQueryMode": { "alias": "initialQueryMode"; "required": false; }; "initialQueryValueField": { "alias": "initialQueryValueField"; "required": false; }; "initialQueryCategoryField": { "alias": "initialQueryCategoryField"; "required": false; }; "initialQueryCategoryValue": { "alias": "initialQueryCategoryValue"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
|
|
4937
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<GaugeConfigDialogComponent, "mm-gauge-config-dialog", never, { "initialCkTypeId": { "alias": "initialCkTypeId"; "required": false; }; "initialRtId": { "alias": "initialRtId"; "required": false; }; "initialGaugeType": { "alias": "initialGaugeType"; "required": false; }; "initialValueAttribute": { "alias": "initialValueAttribute"; "required": false; }; "initialLabelAttribute": { "alias": "initialLabelAttribute"; "required": false; }; "initialMin": { "alias": "initialMin"; "required": false; }; "initialMax": { "alias": "initialMax"; "required": false; }; "initialRanges": { "alias": "initialRanges"; "required": false; }; "initialShowLabel": { "alias": "initialShowLabel"; "required": false; }; "initialPrefix": { "alias": "initialPrefix"; "required": false; }; "initialSuffix": { "alias": "initialSuffix"; "required": false; }; "initialReverse": { "alias": "initialReverse"; "required": false; }; "initialDataSourceType": { "alias": "initialDataSourceType"; "required": false; }; "initialQueryRtId": { "alias": "initialQueryRtId"; "required": false; }; "initialQueryName": { "alias": "initialQueryName"; "required": false; }; "initialQueryFamily": { "alias": "initialQueryFamily"; "required": false; }; "initialIgnoreTimeFilter": { "alias": "initialIgnoreTimeFilter"; "required": false; }; "initialEntitySelectorId": { "alias": "initialEntitySelectorId"; "required": false; }; "initialQueryMode": { "alias": "initialQueryMode"; "required": false; }; "initialQueryValueField": { "alias": "initialQueryValueField"; "required": false; }; "initialQueryCategoryField": { "alias": "initialQueryCategoryField"; "required": false; }; "initialQueryCategoryValue": { "alias": "initialQueryCategoryValue"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; "initialWidgetId": { "alias": "initialWidgetId"; "required": false; }; "initialFormula": { "alias": "initialFormula"; "required": false; }; }, {}, never, never, true, never>;
|
|
4700
4938
|
}
|
|
4701
4939
|
|
|
4702
4940
|
/**
|
|
@@ -5480,8 +5718,8 @@ interface HeatmapDataItem {
|
|
|
5480
5718
|
date: string;
|
|
5481
5719
|
/** Y-axis: hour label (e.g. '08:00') */
|
|
5482
5720
|
hour: string;
|
|
5483
|
-
/** Color intensity value */
|
|
5484
|
-
value: number;
|
|
5721
|
+
/** Color intensity value; `null` = empty cell (`weightedAvg` without rows, AB#7956) */
|
|
5722
|
+
value: number | null;
|
|
5485
5723
|
/** Per-cell color (transparent for no-data) */
|
|
5486
5724
|
color: string;
|
|
5487
5725
|
}
|
|
@@ -5505,10 +5743,10 @@ declare class HeatmapWidgetComponent implements DashboardWidget<HeatmapWidgetCon
|
|
|
5505
5743
|
readonly error: _angular_core.Signal<string | null>;
|
|
5506
5744
|
readonly data: _angular_core.Signal<HeatmapDataItem[]>;
|
|
5507
5745
|
/**
|
|
5508
|
-
* Returns the color for a
|
|
5509
|
-
*
|
|
5746
|
+
* Returns the gradient color for a filled cell based on the color scheme ranges.
|
|
5747
|
+
* Empty cells are made transparent by the caller ({@link isEmptyCell}).
|
|
5510
5748
|
*/
|
|
5511
|
-
private
|
|
5749
|
+
private rangeColor;
|
|
5512
5750
|
isNotConfigured(): boolean;
|
|
5513
5751
|
ngOnInit(): void;
|
|
5514
5752
|
ngOnChanges(changes: SimpleChanges): void;
|
|
@@ -5521,8 +5759,18 @@ declare class HeatmapWidgetComponent implements DashboardWidget<HeatmapWidgetCon
|
|
|
5521
5759
|
*/
|
|
5522
5760
|
private formatSI;
|
|
5523
5761
|
cellLabelContent: (e: {
|
|
5524
|
-
value: number;
|
|
5762
|
+
value: number | null;
|
|
5525
5763
|
}) => string;
|
|
5764
|
+
/**
|
|
5765
|
+
* An empty cell shows no label and no colour: `null` always; 0 too, except for `weightedAvg`,
|
|
5766
|
+
* where 0 is a real mean and an empty cell is `null` (AB#7956).
|
|
5767
|
+
*/
|
|
5768
|
+
isEmptyCell(value: number | null | undefined): boolean;
|
|
5769
|
+
/**
|
|
5770
|
+
* Badge text of the widget's own time window (AB#7956), e.g. `Last 30 days`; `null` when the
|
|
5771
|
+
* widget follows the board time filter or queries runtime data (the window binds stream data only).
|
|
5772
|
+
*/
|
|
5773
|
+
timeWindowLabel(): string | null;
|
|
5526
5774
|
xLabelContent: (e: {
|
|
5527
5775
|
value: string;
|
|
5528
5776
|
}) => string;
|
|
@@ -5534,17 +5782,23 @@ declare class HeatmapWidgetComponent implements DashboardWidget<HeatmapWidgetCon
|
|
|
5534
5782
|
* Otherwise aggregates into hourly buckets.
|
|
5535
5783
|
*/
|
|
5536
5784
|
private processHeatmapData;
|
|
5785
|
+
/**
|
|
5786
|
+
* True when `dateField` refers to the top-level timestamp of a stream-data row.
|
|
5787
|
+
* Runtime rows are excluded so their date keeps coming only from the cells.
|
|
5788
|
+
*/
|
|
5789
|
+
private static isRowTimestampField;
|
|
5537
5790
|
/**
|
|
5538
5791
|
* Detects the interval width in minutes from the first row with from+to.
|
|
5539
5792
|
*/
|
|
5540
5793
|
private detectIntervalMinutes;
|
|
5541
5794
|
/**
|
|
5542
|
-
* Processes data into hourly buckets
|
|
5795
|
+
* Processes data into hourly buckets. Hour and day follow the board time zone; a DST
|
|
5796
|
+
* fall-back day keeps its repeated hour as its own row (`02:00 (2)`, AB#7956).
|
|
5543
5797
|
*/
|
|
5544
5798
|
private processHourlyData;
|
|
5545
5799
|
/**
|
|
5546
5800
|
* Processes data into sub-hour interval buckets.
|
|
5547
|
-
* Y-axis: hours (00:00..23:00), X-axis: interval labels (e.g. "00-15", "15-30", ...).
|
|
5801
|
+
* Y-axis: hours (00:00..23:00, plus a repeated DST hour), X-axis: interval labels (e.g. "00-15", "15-30", ...).
|
|
5548
5802
|
* For multi-day data, X-axis labels are prefixed with the date.
|
|
5549
5803
|
*/
|
|
5550
5804
|
private processSubHourData;
|
|
@@ -5566,7 +5820,6 @@ declare class HeatmapWidgetComponent implements DashboardWidget<HeatmapWidgetCon
|
|
|
5566
5820
|
* → amber, above → red.
|
|
5567
5821
|
*/
|
|
5568
5822
|
private getThresholdColor;
|
|
5569
|
-
private aggregate;
|
|
5570
5823
|
/** Delegates to {@link toInstant} so naive wire timestamps are pinned to UTC (AB#4818). */
|
|
5571
5824
|
private parseDate;
|
|
5572
5825
|
private convertFiltersToDto;
|
|
@@ -5588,6 +5841,13 @@ interface HeatmapConfigResult extends WidgetConfigResult {
|
|
|
5588
5841
|
dateEndField?: string;
|
|
5589
5842
|
valueField?: string;
|
|
5590
5843
|
aggregation: HeatmapAggregation;
|
|
5844
|
+
/** `weightedAvg` only: the weight (count) column (AB#7956) */
|
|
5845
|
+
weightField?: string;
|
|
5846
|
+
/** The date field marks the bucket end; shift rows by {@link bucketWidthMinutes} (AB#7956) */
|
|
5847
|
+
timestampIsBucketEnd?: boolean;
|
|
5848
|
+
bucketWidthMinutes?: number;
|
|
5849
|
+
/** Own relative time window that overrides the board time filter (AB#7956) */
|
|
5850
|
+
timeWindow?: HeatmapTimeWindow;
|
|
5591
5851
|
colorScheme: HeatmapColorScheme;
|
|
5592
5852
|
colorMode?: HeatmapColorMode;
|
|
5593
5853
|
thresholdTarget?: number;
|
|
@@ -5613,6 +5873,10 @@ declare class HeatmapConfigDialogComponent implements OnInit {
|
|
|
5613
5873
|
initialDateEndField?: string;
|
|
5614
5874
|
initialValueField?: string;
|
|
5615
5875
|
initialAggregation?: HeatmapAggregation;
|
|
5876
|
+
initialWeightField?: string;
|
|
5877
|
+
initialTimestampIsBucketEnd?: boolean;
|
|
5878
|
+
initialBucketWidthMinutes?: number;
|
|
5879
|
+
initialTimeWindow?: HeatmapTimeWindow;
|
|
5616
5880
|
initialColorScheme?: HeatmapColorScheme;
|
|
5617
5881
|
initialColorMode?: HeatmapColorMode;
|
|
5618
5882
|
initialThresholdTarget?: number;
|
|
@@ -5636,6 +5900,10 @@ declare class HeatmapConfigDialogComponent implements OnInit {
|
|
|
5636
5900
|
value: string;
|
|
5637
5901
|
label: string;
|
|
5638
5902
|
}[];
|
|
5903
|
+
timeWindowUnitOptions: {
|
|
5904
|
+
value: RelativeTimeUnit;
|
|
5905
|
+
label: string;
|
|
5906
|
+
}[];
|
|
5639
5907
|
colorModeOptions: {
|
|
5640
5908
|
value: HeatmapColorMode;
|
|
5641
5909
|
label: string;
|
|
@@ -5658,6 +5926,12 @@ declare class HeatmapConfigDialogComponent implements OnInit {
|
|
|
5658
5926
|
dateEndField: string | undefined;
|
|
5659
5927
|
valueField: string | undefined;
|
|
5660
5928
|
aggregation: HeatmapAggregation;
|
|
5929
|
+
weightField: string | undefined;
|
|
5930
|
+
timestampIsBucketEnd: boolean;
|
|
5931
|
+
bucketWidthMinutes: number | undefined;
|
|
5932
|
+
useTimeWindow: boolean;
|
|
5933
|
+
timeWindowValue: number | undefined;
|
|
5934
|
+
timeWindowUnit: RelativeTimeUnit;
|
|
5661
5935
|
colorScheme: HeatmapColorScheme;
|
|
5662
5936
|
colorMode: HeatmapColorMode;
|
|
5663
5937
|
thresholdTarget: number | undefined;
|
|
@@ -5668,6 +5942,8 @@ declare class HeatmapConfigDialogComponent implements OnInit {
|
|
|
5668
5942
|
valueMultiplier: number;
|
|
5669
5943
|
};
|
|
5670
5944
|
get isValid(): boolean;
|
|
5945
|
+
/** Why the AB#7956 options block saving, or `null`. */
|
|
5946
|
+
get optionsError(): string | null;
|
|
5671
5947
|
/** Entity selectors available on the current MeshBoard (for the scope picker). */
|
|
5672
5948
|
get availableEntitySelectors(): EntitySelectorConfig[];
|
|
5673
5949
|
get selectedQueryFamily(): QueryFamily | null;
|
|
@@ -5684,7 +5960,7 @@ declare class HeatmapConfigDialogComponent implements OnInit {
|
|
|
5684
5960
|
onSave(): void;
|
|
5685
5961
|
onCancel(): void;
|
|
5686
5962
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeatmapConfigDialogComponent, never>;
|
|
5687
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeatmapConfigDialogComponent, "mm-heatmap-config-dialog", never, { "initialQueryRtId": { "alias": "initialQueryRtId"; "required": false; }; "initialQueryName": { "alias": "initialQueryName"; "required": false; }; "initialQueryFamily": { "alias": "initialQueryFamily"; "required": false; }; "initialIgnoreTimeFilter": { "alias": "initialIgnoreTimeFilter"; "required": false; }; "initialEntitySelectorId": { "alias": "initialEntitySelectorId"; "required": false; }; "initialDateField": { "alias": "initialDateField"; "required": false; }; "initialDateEndField": { "alias": "initialDateEndField"; "required": false; }; "initialValueField": { "alias": "initialValueField"; "required": false; }; "initialAggregation": { "alias": "initialAggregation"; "required": false; }; "initialColorScheme": { "alias": "initialColorScheme"; "required": false; }; "initialColorMode": { "alias": "initialColorMode"; "required": false; }; "initialThresholdTarget": { "alias": "initialThresholdTarget"; "required": false; }; "initialShowLegend": { "alias": "initialShowLegend"; "required": false; }; "initialLegendPosition": { "alias": "initialLegendPosition"; "required": false; }; "initialDecimalPlaces": { "alias": "initialDecimalPlaces"; "required": false; }; "initialCompactNumbers": { "alias": "initialCompactNumbers"; "required": false; }; "initialValueMultiplier": { "alias": "initialValueMultiplier"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
|
|
5963
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeatmapConfigDialogComponent, "mm-heatmap-config-dialog", never, { "initialQueryRtId": { "alias": "initialQueryRtId"; "required": false; }; "initialQueryName": { "alias": "initialQueryName"; "required": false; }; "initialQueryFamily": { "alias": "initialQueryFamily"; "required": false; }; "initialIgnoreTimeFilter": { "alias": "initialIgnoreTimeFilter"; "required": false; }; "initialEntitySelectorId": { "alias": "initialEntitySelectorId"; "required": false; }; "initialDateField": { "alias": "initialDateField"; "required": false; }; "initialDateEndField": { "alias": "initialDateEndField"; "required": false; }; "initialValueField": { "alias": "initialValueField"; "required": false; }; "initialAggregation": { "alias": "initialAggregation"; "required": false; }; "initialWeightField": { "alias": "initialWeightField"; "required": false; }; "initialTimestampIsBucketEnd": { "alias": "initialTimestampIsBucketEnd"; "required": false; }; "initialBucketWidthMinutes": { "alias": "initialBucketWidthMinutes"; "required": false; }; "initialTimeWindow": { "alias": "initialTimeWindow"; "required": false; }; "initialColorScheme": { "alias": "initialColorScheme"; "required": false; }; "initialColorMode": { "alias": "initialColorMode"; "required": false; }; "initialThresholdTarget": { "alias": "initialThresholdTarget"; "required": false; }; "initialShowLegend": { "alias": "initialShowLegend"; "required": false; }; "initialLegendPosition": { "alias": "initialLegendPosition"; "required": false; }; "initialDecimalPlaces": { "alias": "initialDecimalPlaces"; "required": false; }; "initialCompactNumbers": { "alias": "initialCompactNumbers"; "required": false; }; "initialValueMultiplier": { "alias": "initialValueMultiplier"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
|
|
5688
5964
|
}
|
|
5689
5965
|
|
|
5690
5966
|
interface StatValue {
|
|
@@ -6615,6 +6891,12 @@ interface MeshBoardMessages {
|
|
|
6615
6891
|
* 'Could not resolve the scope of "{label}" - widgets bound to it show no data.'
|
|
6616
6892
|
*/
|
|
6617
6893
|
scopeResolutionFailed?: string;
|
|
6894
|
+
/**
|
|
6895
|
+
* Board notice for a dependent entity selector without pick while its leader has one (AB#7916):
|
|
6896
|
+
* widgets bound to it show no data until a pick is made. `{label}` is replaced by the selector
|
|
6897
|
+
* label. Default: 'Pick a {label} to see this data.'
|
|
6898
|
+
*/
|
|
6899
|
+
scopePickRequired?: string;
|
|
6618
6900
|
}
|
|
6619
6901
|
/** Default texts of {@link MeshBoardMessages} (the list texts default inside `mm-list-view`). */
|
|
6620
6902
|
declare const DEFAULT_MESHBOARD_MESSAGES: Required<Omit<MeshBoardMessages, 'tableList'>>;
|
|
@@ -6828,6 +7110,7 @@ declare class EntitySelectorEditorComponent {
|
|
|
6828
7110
|
private readonly confirmationService;
|
|
6829
7111
|
private readonly cdr;
|
|
6830
7112
|
private readonly destroyRef;
|
|
7113
|
+
private readonly injector;
|
|
6831
7114
|
entitySelectors: EntitySelectorConfig[];
|
|
6832
7115
|
/** Existing variable names from other sources (static variables, other selectors) for duplicate detection */
|
|
6833
7116
|
existingVariableNames: string[];
|
|
@@ -6861,6 +7144,12 @@ declare class EntitySelectorEditorComponent {
|
|
|
6861
7144
|
/** Result of the server check whether the default entity matches the filter. */
|
|
6862
7145
|
protected defaultFilterCheck: DefaultFilterCheck;
|
|
6863
7146
|
private readonly defaultCheckRequests;
|
|
7147
|
+
protected editScopeSourceSelectorId: string;
|
|
7148
|
+
/** Hops from the leader's CK type to this selector's CK type; the last target is fixed. */
|
|
7149
|
+
protected editScopeSourceHops: EntitySelectorScopeHop[];
|
|
7150
|
+
/** Result of the check whether the default entity is inside the leader's default pick. */
|
|
7151
|
+
protected defaultScopeCheck: DefaultScopeCheck;
|
|
7152
|
+
private readonly scopeCheckRequests;
|
|
6864
7153
|
protected defaultEntityDataSource: RuntimeEntitySelectDataSource | null;
|
|
6865
7154
|
protected defaultEntityDialogDataSource: RuntimeEntityDialogDataSource | null;
|
|
6866
7155
|
constructor();
|
|
@@ -6886,6 +7175,45 @@ declare class EntitySelectorEditorComponent {
|
|
|
6886
7175
|
get followedByLabels(): string;
|
|
6887
7176
|
/** Validation message of the "Follows" choice, or '' when it is valid. */
|
|
6888
7177
|
get followError(): string;
|
|
7178
|
+
/** Selectors that list only entities inside the edited selector (AB#7917). */
|
|
7179
|
+
get dependents(): EntitySelectorConfig[];
|
|
7180
|
+
/** "A and B" of the selectors depending on the edited one. */
|
|
7181
|
+
get dependentsLabels(): string;
|
|
7182
|
+
/** True when the Follows choice is locked: the selector is followed or has dependents and follows nobody. */
|
|
7183
|
+
get isFollowsLocked(): boolean;
|
|
7184
|
+
/** Selectors the edited one may list "inside": not followers, not dependent, not itself. */
|
|
7185
|
+
get scopeSourceLeaderOptions(): EntitySelectorConfig[];
|
|
7186
|
+
/** True when the stored leader is not among the selectable leaders (deleted, follower, dependent). */
|
|
7187
|
+
get isScopeSourceLeaderUnavailable(): boolean;
|
|
7188
|
+
/** The leader selector of the scope source, if it exists. */
|
|
7189
|
+
get scopeSourceLeader(): EntitySelectorConfig | undefined;
|
|
7190
|
+
/** Label of the scope source leader (label, else id). */
|
|
7191
|
+
get scopeSourceLeaderLabel(): string;
|
|
7192
|
+
/** Source type of hop 1: the leader's CK type. */
|
|
7193
|
+
get scopeSourceLeaderCkTypeId(): string;
|
|
7194
|
+
/** "Room" — the edited selector in texts. */
|
|
7195
|
+
get editName(): string;
|
|
7196
|
+
/** True when the "Inside the pick of" choice is locked: other selectors depend on this one (one level). */
|
|
7197
|
+
get isScopeSourceLocked(): boolean;
|
|
7198
|
+
/** Validation message of the scope source, or '' when it can be saved (or is dropped on save). */
|
|
7199
|
+
get scopeSourceError(): string;
|
|
7200
|
+
/**
|
|
7201
|
+
* The scope source error as the section shows it: hop errors are already
|
|
7202
|
+
* shown by the path editor next to the hop, so they are not repeated here.
|
|
7203
|
+
*/
|
|
7204
|
+
get scopeSourceDisplayError(): string;
|
|
7205
|
+
/** Maximum hop count of a path (getter: relative imports must not initialise fields). */
|
|
7206
|
+
get maxScopeHops(): number;
|
|
7207
|
+
/** Handles a change of the "Inside the pick of" choice. */
|
|
7208
|
+
onScopeSourceChanged(leaderId: string): void;
|
|
7209
|
+
/** Takes the hop list of the scope source path editor. */
|
|
7210
|
+
onScopeSourceHopsChanged(hops: EntitySelectorScopeHop[]): void;
|
|
7211
|
+
/** "Inside: Site (3 hops)" chip of a selector in the list, or ''. */
|
|
7212
|
+
getScopeSourceSummary(selector: EntitySelectorConfig): string;
|
|
7213
|
+
/** True when a selector's scope source cannot be used (list chip shown as an error). */
|
|
7214
|
+
isInvalidScopeSource(selector: EntitySelectorConfig): boolean;
|
|
7215
|
+
/** The edited selector as far as the scope source validation needs it. */
|
|
7216
|
+
private formSelectorForValidation;
|
|
6889
7217
|
/** True while the edited selector follows another one. */
|
|
6890
7218
|
get isFollower(): boolean;
|
|
6891
7219
|
/**
|
|
@@ -6987,10 +7315,32 @@ declare class EntitySelectorEditorComponent {
|
|
|
6987
7315
|
private requestDefaultCheck;
|
|
6988
7316
|
/** Asks the server whether the entity is among the filtered ones (rtId + filter, first 1). */
|
|
6989
7317
|
private checkDefaultEntity;
|
|
7318
|
+
/**
|
|
7319
|
+
* Queues the (debounced) check whether the default entity lies inside the
|
|
7320
|
+
* leader's default pick (AB#7917). Only for a valid scope source and when
|
|
7321
|
+
* both selectors have a default; otherwise clears the result.
|
|
7322
|
+
*/
|
|
7323
|
+
private requestScopeCheck;
|
|
7324
|
+
/** Resolves the leader's default pick through the path and looks for the default entity. */
|
|
7325
|
+
private checkDefaultInScope;
|
|
6990
7326
|
private emitChange;
|
|
6991
7327
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntitySelectorEditorComponent, never>;
|
|
6992
7328
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntitySelectorEditorComponent, "mm-entity-selector-editor", never, { "entitySelectors": { "alias": "entitySelectors"; "required": false; }; "existingVariableNames": { "alias": "existingVariableNames"; "required": false; }; "variables": { "alias": "variables"; "required": false; }; }, { "entitySelectorsChange": "entitySelectorsChange"; "editingStateChange": "editingStateChange"; }, never, never, true, never>;
|
|
6993
7329
|
}
|
|
7330
|
+
/**
|
|
7331
|
+
* Outcome of the check whether a dependent selector's default entity lies
|
|
7332
|
+
* inside its leader's default pick (AB#7917). Never blocks saving: `outside`
|
|
7333
|
+
* warns, `error` says the check failed.
|
|
7334
|
+
*/
|
|
7335
|
+
type DefaultScopeCheck = {
|
|
7336
|
+
state: 'none';
|
|
7337
|
+
} | {
|
|
7338
|
+
state: 'inside';
|
|
7339
|
+
} | {
|
|
7340
|
+
state: 'outside';
|
|
7341
|
+
} | {
|
|
7342
|
+
state: 'error';
|
|
7343
|
+
};
|
|
6994
7344
|
/**
|
|
6995
7345
|
* Outcome of the default-entity filter check (AB#7724). Never blocks saving:
|
|
6996
7346
|
* `mismatch` warns, `error` says the check failed, `unchecked` names the
|
|
@@ -7056,14 +7406,40 @@ declare class EntitySelectorScopePathEditorComponent {
|
|
|
7056
7406
|
protected readonly arrowUpIcon: _progress_kendo_svg_icons.SVGIcon;
|
|
7057
7407
|
protected readonly arrowDownIcon: _progress_kendo_svg_icons.SVGIcon;
|
|
7058
7408
|
protected readonly trashIcon: _progress_kendo_svg_icons.SVGIcon;
|
|
7409
|
+
/**
|
|
7410
|
+
* Intro text above the hop list. Unset = the child-scope text (AB#7723);
|
|
7411
|
+
* the scope-source section of the selector editor passes its own (AB#7917).
|
|
7412
|
+
*/
|
|
7413
|
+
description: string | null;
|
|
7414
|
+
/** What the source of hop 1 is, shown after its type ("picked entity"). */
|
|
7415
|
+
sourceDescription: string;
|
|
7416
|
+
/** Text shown while there is no hop. Unset = the child-scope text. */
|
|
7417
|
+
emptyText: string | null;
|
|
7059
7418
|
private _sourceCkTypeId;
|
|
7419
|
+
private _lockedTargetCkTypeId;
|
|
7060
7420
|
private lastEmitted;
|
|
7061
7421
|
private readonly associations;
|
|
7062
7422
|
/** CK type of the picked entity — the source type of hop 1. */
|
|
7063
7423
|
set sourceCkTypeId(value: string | null | undefined);
|
|
7064
7424
|
get sourceCkTypeId(): string;
|
|
7425
|
+
/**
|
|
7426
|
+
* When set, the last hop's target type is fixed to this type (AB#7917: the
|
|
7427
|
+
* scope source path always ends at the dependent selector's CK type). The
|
|
7428
|
+
* last hop then shows the type read-only, new hops are inserted before it,
|
|
7429
|
+
* and it cannot be moved; removing it makes the previous hop the fixed one.
|
|
7430
|
+
*/
|
|
7431
|
+
set lockedTargetCkTypeId(value: string | null | undefined);
|
|
7432
|
+
get lockedTargetCkTypeId(): string;
|
|
7065
7433
|
/** The configured hops (one-hop form = one hop). */
|
|
7066
7434
|
set hops(value: EntitySelectorScopeHop[] | null | undefined);
|
|
7435
|
+
/** True when the last hop's target type is fixed ({@link lockedTargetCkTypeId}). */
|
|
7436
|
+
get isLocked(): boolean;
|
|
7437
|
+
/** True when hop `index` is the last hop and its target type is fixed. */
|
|
7438
|
+
isLockedHop(index: number): boolean;
|
|
7439
|
+
/** True when hop `index` offers "move up" (a fixed last hop stays last). */
|
|
7440
|
+
canMoveUp(index: number): boolean;
|
|
7441
|
+
/** True when hop `index` offers "move down" (nothing moves below a fixed last hop). */
|
|
7442
|
+
canMoveDown(index: number): boolean;
|
|
7067
7443
|
/** Maximum hop count (getter: relative imports must not initialise fields, see CLAUDE.md). */
|
|
7068
7444
|
get maxHops(): number;
|
|
7069
7445
|
get canAddHop(): boolean;
|
|
@@ -7099,6 +7475,8 @@ declare class EntitySelectorScopePathEditorComponent {
|
|
|
7099
7475
|
onDirectionChanged(index: number, direction: 'in' | 'out'): void;
|
|
7100
7476
|
onTargetSelected(index: number, ckType: CkTypeSelectorItem): void;
|
|
7101
7477
|
onTargetCleared(index: number): void;
|
|
7478
|
+
/** Sets the last hop's target type to the fixed type (no-op without a lock). */
|
|
7479
|
+
private applyLock;
|
|
7102
7480
|
private emit;
|
|
7103
7481
|
private loadOf;
|
|
7104
7482
|
/**
|
|
@@ -7111,7 +7489,7 @@ declare class EntitySelectorScopePathEditorComponent {
|
|
|
7111
7489
|
/** Keeps the keyboard focus on a moved hop (wireframe change 4). */
|
|
7112
7490
|
private focusHop;
|
|
7113
7491
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntitySelectorScopePathEditorComponent, never>;
|
|
7114
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntitySelectorScopePathEditorComponent, "mm-entity-selector-scope-path-editor", never, { "sourceCkTypeId": { "alias": "sourceCkTypeId"; "required": false; }; "hops": { "alias": "hops"; "required": false; }; }, { "hopsChange": "hopsChange"; }, never, never, true, never>;
|
|
7492
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntitySelectorScopePathEditorComponent, "mm-entity-selector-scope-path-editor", never, { "description": { "alias": "description"; "required": false; }; "sourceDescription": { "alias": "sourceDescription"; "required": false; }; "emptyText": { "alias": "emptyText"; "required": false; }; "sourceCkTypeId": { "alias": "sourceCkTypeId"; "required": false; }; "lockedTargetCkTypeId": { "alias": "lockedTargetCkTypeId"; "required": false; }; "hops": { "alias": "hops"; "required": false; }; }, { "hopsChange": "hopsChange"; }, never, never, true, never>;
|
|
7115
7493
|
}
|
|
7116
7494
|
|
|
7117
7495
|
/**
|
|
@@ -7129,9 +7507,10 @@ interface EntitySelectorClearEvent {
|
|
|
7129
7507
|
}
|
|
7130
7508
|
/**
|
|
7131
7509
|
* Toolbar component that renders entity select inputs for each configured entity selector.
|
|
7132
|
-
* Creates data sources per CK type
|
|
7510
|
+
* Creates data sources per CK type, picker filter (AB#7724) and picker scope (AB#7915) and emits
|
|
7511
|
+
* selection/clear events.
|
|
7133
7512
|
*/
|
|
7134
|
-
declare class EntitySelectorToolbarComponent implements OnChanges {
|
|
7513
|
+
declare class EntitySelectorToolbarComponent implements OnChanges, OnDestroy {
|
|
7135
7514
|
private readonly getEntitiesByCkTypeGQL;
|
|
7136
7515
|
private readonly variableService;
|
|
7137
7516
|
entitySelectors: EntitySelectorConfig[];
|
|
@@ -7140,6 +7519,11 @@ declare class EntitySelectorToolbarComponent implements OnChanges {
|
|
|
7140
7519
|
* the same substitution widget filters get.
|
|
7141
7520
|
*/
|
|
7142
7521
|
variables: MeshBoardVariable[];
|
|
7522
|
+
/**
|
|
7523
|
+
* Picker scopes of dependent selectors (AB#7915), keyed by selector id
|
|
7524
|
+
* (`MeshBoardStateService.pickerScopes`). No entry = the leader has no pick.
|
|
7525
|
+
*/
|
|
7526
|
+
pickerScopes: Record<string, EntitySelectorScopeState>;
|
|
7143
7527
|
entitySelected: EventEmitter<EntitySelectorEvent>;
|
|
7144
7528
|
entityCleared: EventEmitter<EntitySelectorClearEvent>;
|
|
7145
7529
|
private dataSourceCache;
|
|
@@ -7147,7 +7531,10 @@ declare class EntitySelectorToolbarComponent implements OnChanges {
|
|
|
7147
7531
|
protected selectorDataSources: Map<string, RuntimeEntitySelectDataSource>;
|
|
7148
7532
|
protected selectorDialogDataSources: Map<string, RuntimeEntityDialogDataSource>;
|
|
7149
7533
|
protected selectorMessages: Map<string, Partial<EntitySelectInputMessages>>;
|
|
7534
|
+
private filteredSelectorIds;
|
|
7535
|
+
private readonly settledPickers$;
|
|
7150
7536
|
ngOnChanges(changes: SimpleChanges): void;
|
|
7537
|
+
ngOnDestroy(): void;
|
|
7151
7538
|
/** Texts of the selector's picker: a filtered picker explains its empty list (AB#7724). */
|
|
7152
7539
|
getMessages(selector: EntitySelectorConfig): Partial<EntitySelectInputMessages>;
|
|
7153
7540
|
/** Title of the selector's search dialog; marks a filtered picker (AB#7724). */
|
|
@@ -7175,16 +7562,32 @@ declare class EntitySelectorToolbarComponent implements OnChanges {
|
|
|
7175
7562
|
onEntityCleared(selectorId: string): void;
|
|
7176
7563
|
/**
|
|
7177
7564
|
* Creates or retrieves cached data sources for each selector. Selectors of
|
|
7178
|
-
* the same CK type
|
|
7179
|
-
* selector without filter
|
|
7180
|
-
*
|
|
7181
|
-
*
|
|
7565
|
+
* the same CK type, the same resolved filter and the same picker scope share
|
|
7566
|
+
* their data sources; a selector without filter and scope source uses the
|
|
7567
|
+
* plain query, exactly as before AB#7724. The cache key changes with the
|
|
7568
|
+
* picker scope (AB#7915), so a leader change gives the dependent fresh data
|
|
7569
|
+
* sources. Entries no selector uses any more are dropped, so the caches never
|
|
7570
|
+
* outgrow the current selectors.
|
|
7182
7571
|
*/
|
|
7183
7572
|
private updateDataSources;
|
|
7573
|
+
/**
|
|
7574
|
+
* The query service of a picker: filter rows (AB#7724) plus, for a dependent
|
|
7575
|
+
* selector, the picker scope `rtId IN (…)` (AB#7915). Empty and failed scopes
|
|
7576
|
+
* list nothing without a request; a pending scope waits until it settled.
|
|
7577
|
+
*/
|
|
7578
|
+
private pickerQuery;
|
|
7579
|
+
/** The query of `selectorId` once its picker scope is no longer pending (`null` = list nothing). */
|
|
7580
|
+
private settledPicker;
|
|
7581
|
+
/**
|
|
7582
|
+
* Picker texts (wording agreed with the Studio PO): a dependent picker with
|
|
7583
|
+
* nothing in scope or a failed scope says so right away (also before the
|
|
7584
|
+
* user types); a filtered picker explains an empty search result (AB#7724).
|
|
7585
|
+
*/
|
|
7586
|
+
private pickerMessages;
|
|
7184
7587
|
/** Number of cached data source pairs (for tests). */
|
|
7185
7588
|
get cachedDataSourceCount(): number;
|
|
7186
7589
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntitySelectorToolbarComponent, never>;
|
|
7187
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntitySelectorToolbarComponent, "mm-entity-selector-toolbar", never, { "entitySelectors": { "alias": "entitySelectors"; "required": false; }; "variables": { "alias": "variables"; "required": false; }; }, { "entitySelected": "entitySelected"; "entityCleared": "entityCleared"; }, never, never, true, never>;
|
|
7590
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntitySelectorToolbarComponent, "mm-entity-selector-toolbar", never, { "entitySelectors": { "alias": "entitySelectors"; "required": false; }; "variables": { "alias": "variables"; "required": false; }; "pickerScopes": { "alias": "pickerScopes"; "required": false; }; }, { "entitySelected": "entitySelected"; "entityCleared": "entityCleared"; }, never, never, true, never>;
|
|
7188
7591
|
}
|
|
7189
7592
|
|
|
7190
7593
|
/**
|
|
@@ -7395,6 +7798,8 @@ declare class MeshBoardViewComponent implements OnInit, OnDestroy, HasUnsavedCha
|
|
|
7395
7798
|
private readonly _urlTimeSelection;
|
|
7396
7799
|
protected readonly initialTimeSelection: _angular_core.Signal<TimeRangeSelection$1 | undefined>;
|
|
7397
7800
|
protected readonly entitySelectorsConfig: _angular_core.Signal<EntitySelectorConfig[]>;
|
|
7801
|
+
/** Picker scopes of dependent selectors (AB#7915). */
|
|
7802
|
+
protected readonly pickerScopes: _angular_core.Signal<Record<string, EntitySelectorScopeState>>;
|
|
7398
7803
|
/** Board variables substituted into the selectors' picker filters (AB#7724). */
|
|
7399
7804
|
protected readonly boardVariables: _angular_core.Signal<_meshmakers_octo_meshboard.MeshBoardVariable[]>;
|
|
7400
7805
|
protected readonly hasEntitySelectors: _angular_core.Signal<boolean>;
|
|
@@ -7523,17 +7928,80 @@ declare class MeshBoardViewComponent implements OnInit, OnDestroy, HasUnsavedCha
|
|
|
7523
7928
|
* Programmatically sets an entity selector value from outside the component.
|
|
7524
7929
|
* Use this when the host application controls entity selection (e.g., with meshBoardHideEntitySelectors).
|
|
7525
7930
|
* Resolves entity attributes, sets variables, and refreshes widgets.
|
|
7931
|
+
*
|
|
7932
|
+
* Dependent selectors (AB#7916): an rtId outside the dependent's picker scope
|
|
7933
|
+
* (the leader's pick) is rejected with a console warning and nothing
|
|
7934
|
+
* re-queries. On a leader the leader-change rules apply: each dependent keeps
|
|
7935
|
+
* its pick if it is in the new scope, else its default if that is, else it
|
|
7936
|
+
* has no pick; widgets refresh once for the whole change.
|
|
7526
7937
|
*/
|
|
7527
7938
|
setEntitySelector(selectorId: string, rtId: string, displayName?: string): Promise<void>;
|
|
7528
7939
|
/**
|
|
7529
7940
|
* Programmatically clears an entity selector value from outside the component.
|
|
7941
|
+
* Clearing a leader keeps its dependents' picks (AB#7916); clearing a
|
|
7942
|
+
* dependent while its leader has a pick leaves its widgets without data
|
|
7943
|
+
* until a new pick is made.
|
|
7530
7944
|
*/
|
|
7531
7945
|
clearEntitySelector(selectorId: string): void;
|
|
7532
7946
|
/**
|
|
7533
7947
|
* Clears one selector's pick, variables and scope state. Without a pick bound
|
|
7534
|
-
* widgets fall back to the persisted scope (AB#7721)
|
|
7948
|
+
* widgets fall back to the persisted scope (AB#7721) — except a dependent
|
|
7949
|
+
* selector (or a follower of one without pick) while the leader has a pick:
|
|
7950
|
+
* its widgets show no data and the view asks for a pick (AB#7916).
|
|
7535
7951
|
*/
|
|
7536
7952
|
private clearSelectorPick;
|
|
7953
|
+
/**
|
|
7954
|
+
* True when the selector — having no pick — must show no data instead of
|
|
7955
|
+
* the persisted scope (AB#7916): it is a valid dependent whose leader has a
|
|
7956
|
+
* pick (the dependent has a picker scope), or a follower of such a dependent
|
|
7957
|
+
* while the dependent has no pick either.
|
|
7958
|
+
*/
|
|
7959
|
+
private needsPickWithoutOwnPick;
|
|
7960
|
+
/** True when the selector has a usable scope source (AB#7915). */
|
|
7961
|
+
private isDependent;
|
|
7962
|
+
/**
|
|
7963
|
+
* A dependent may only be picked inside its picker scope (AB#7916). While the
|
|
7964
|
+
* scope resolves the check waits for it; a scope overtaken meanwhile is read
|
|
7965
|
+
* again.
|
|
7966
|
+
*/
|
|
7967
|
+
private acceptsDependentPick;
|
|
7968
|
+
/** Starts a new change of `selectorId`'s pick and returns its number (AB#7916). */
|
|
7969
|
+
private beginLeaderChange;
|
|
7970
|
+
/** True while no newer change of `selectorId`'s pick has started. */
|
|
7971
|
+
private isCurrentLeaderChange;
|
|
7972
|
+
/**
|
|
7973
|
+
* Picks `rtId` on a selector that may lead dependents (AB#7915/AB#7916). In
|
|
7974
|
+
* one synchronous step it marks the selector and its followers pending and
|
|
7975
|
+
* starts the dependents' picker scopes and pick decisions
|
|
7976
|
+
* ({@link settleDependentsOf}); then resolves the selector's own variables
|
|
7977
|
+
* and scope. `displayName` settles with the picked entity's display name,
|
|
7978
|
+
* `dependents` once every dependent's pick is decided, with the ids of the
|
|
7979
|
+
* dependents whose pick changed. `initialPicks` (board load) replaces the
|
|
7980
|
+
* dependents' current picks.
|
|
7981
|
+
*/
|
|
7982
|
+
private pickWithDependents;
|
|
7983
|
+
/**
|
|
7984
|
+
* The leader `leaderId` was picked (`leaderRtId`): decides each dependent's
|
|
7985
|
+
* pick (AB#7916). Synchronously, each dependent's picker scope becomes
|
|
7986
|
+
* pending; a dependent with a current pick or a default is also marked
|
|
7987
|
+
* pending together with its followers, so bound widgets show loading and
|
|
7988
|
+
* never the old pick's data. Once the picker scope resolved, the pick is
|
|
7989
|
+
* {@link nextDependentPick}: kept if in scope, else the default if in scope,
|
|
7990
|
+
* else none. Without pick the dependent's widgets show no data with a
|
|
7991
|
+
* "pick" notice — a failed picker scope shows the scope-failed notice
|
|
7992
|
+
* instead. A decision overtaken by a newer leader change or a leader clear
|
|
7993
|
+
* is dropped. Resolves with the ids of the dependents whose pick changed.
|
|
7994
|
+
*/
|
|
7995
|
+
private settleDependentsOf;
|
|
7996
|
+
/**
|
|
7997
|
+
* The leader `leaderId` loses its pick (`clear` clears it, which also drops
|
|
7998
|
+
* the dependents' picker scopes): dependents keep their picks (AB#7916). A
|
|
7999
|
+
* dependent without pick goes back to the persisted scope (AB#7721), and so
|
|
8000
|
+
* do its followers that needed a pick; a dependent whose pick was still being
|
|
8001
|
+
* decided resolves its current pick again. Returns a promise for those
|
|
8002
|
+
* resolutions, or `null` when there are none.
|
|
8003
|
+
*/
|
|
8004
|
+
private releaseDependentsOf;
|
|
7537
8005
|
/**
|
|
7538
8006
|
* The leader `leaderId` has no pick any more: each of its followers resolves
|
|
7539
8007
|
* its own `defaultRtId`, or — without one — has no pick and no scope
|
|
@@ -7553,11 +8021,36 @@ declare class MeshBoardViewComponent implements OnInit, OnDestroy, HasUnsavedCha
|
|
|
7553
8021
|
selectorId: string;
|
|
7554
8022
|
message: string;
|
|
7555
8023
|
}[]>;
|
|
8024
|
+
/**
|
|
8025
|
+
* One notice per dependent selector without pick while its leader has one
|
|
8026
|
+
* (AB#7916): "Pick a <label> to see this data.". Followers of such a
|
|
8027
|
+
* dependent show no data too, but the notice names the selector to pick.
|
|
8028
|
+
*/
|
|
8029
|
+
protected readonly scopePickRequiredNotices: _angular_core.Signal<{
|
|
8030
|
+
selectorId: string;
|
|
8031
|
+
message: string;
|
|
8032
|
+
}[]>;
|
|
7556
8033
|
/**
|
|
7557
8034
|
* Per-selector sequence number of the latest scope resolution, so a slower
|
|
7558
8035
|
* resolution of an earlier pick never overwrites the scope of a newer pick.
|
|
7559
8036
|
*/
|
|
7560
8037
|
private readonly scopeRequestSeq;
|
|
8038
|
+
/**
|
|
8039
|
+
* Per-dependent sequence number of the latest picker-scope resolution
|
|
8040
|
+
* (AB#7915): a late resolution of an earlier leader pick is discarded.
|
|
8041
|
+
*/
|
|
8042
|
+
private readonly pickerScopeSeq;
|
|
8043
|
+
/** The latest picker-scope resolution of each dependent (AB#7916), awaited by a host pick. */
|
|
8044
|
+
private readonly pickerScopeResolutions;
|
|
8045
|
+
/**
|
|
8046
|
+
* Per-selector number of the latest pick change (AB#7916): the widget
|
|
8047
|
+
* refresh and URL write of a change overtaken by a newer one are skipped.
|
|
8048
|
+
*/
|
|
8049
|
+
private readonly leaderChangeSeq;
|
|
8050
|
+
/** Dependents whose pick is being decided after a leader change (AB#7916). */
|
|
8051
|
+
private readonly decidingDependents;
|
|
8052
|
+
/** Set when the board load dropped an out-of-scope dependent pick from the URL or route data (AB#7916). */
|
|
8053
|
+
private entitySelectorUrlNeedsRewrite;
|
|
7561
8054
|
/**
|
|
7562
8055
|
* Handles time range change from the time range picker.
|
|
7563
8056
|
* No-op: refresh is triggered by onTimeSelectionChange to ensure variables are updated first.
|
|
@@ -7667,17 +8160,34 @@ declare class MeshBoardViewComponent implements OnInit, OnDestroy, HasUnsavedCha
|
|
|
7667
8160
|
/**
|
|
7668
8161
|
* Handles entity selection from the entity selector toolbar.
|
|
7669
8162
|
* Fetches entity attributes, sets variables, syncs to URL, and refreshes widgets.
|
|
8163
|
+
* On a leader the dependents' picks are decided first (AB#7916) and the
|
|
8164
|
+
* widgets refresh once for the whole change; a dependent only accepts an
|
|
8165
|
+
* rtId inside its picker scope.
|
|
7670
8166
|
*/
|
|
7671
8167
|
onEntitySelectorSelected(event: EntitySelectorEvent): Promise<void>;
|
|
7672
8168
|
/**
|
|
7673
8169
|
* Handles entity cleared from the entity selector toolbar.
|
|
7674
|
-
* Clears variables, syncs URL, and refreshes widgets.
|
|
8170
|
+
* Clears variables, syncs URL, and refreshes widgets. Clearing a leader keeps
|
|
8171
|
+
* its dependents' picks (AB#7916).
|
|
7675
8172
|
*/
|
|
7676
8173
|
onEntitySelectorCleared(event: EntitySelectorClearEvent): Promise<void>;
|
|
7677
8174
|
/**
|
|
7678
8175
|
* Initializes entity selectors from URL params, route data, or defaults.
|
|
8176
|
+
*
|
|
8177
|
+
* Leaders resolve first (AB#7916): a dependent whose leader has a pick gets
|
|
8178
|
+
* its pick decided against the picker scope — an initial pick outside it is
|
|
8179
|
+
* dropped (default if in scope, else no pick); one dropped from the URL or
|
|
8180
|
+
* route data is logged once and the URL is rewritten. Widgets refresh once,
|
|
8181
|
+
* after every pick is decided.
|
|
7679
8182
|
*/
|
|
7680
8183
|
private initializeEntitySelectors;
|
|
8184
|
+
/**
|
|
8185
|
+
* Logs (once per board load) each dependent whose URL or route-data pick was
|
|
8186
|
+
* dropped because it is outside the leader's pick, and marks the URL for a
|
|
8187
|
+
* rewrite (AB#7916). A dropped `defaultRtId` is not reported: it never was
|
|
8188
|
+
* in the URL.
|
|
8189
|
+
*/
|
|
8190
|
+
private reportDroppedInitialPicks;
|
|
7681
8191
|
/**
|
|
7682
8192
|
* The initial pick of each entity selector. Priority: route data > URL
|
|
7683
8193
|
* params > defaultRtId. Selectors without a pick are left out.
|
|
@@ -7697,6 +8207,24 @@ declare class MeshBoardViewComponent implements OnInit, OnDestroy, HasUnsavedCha
|
|
|
7697
8207
|
* Selectors without a pick stay without scope state (persisted scope).
|
|
7698
8208
|
*/
|
|
7699
8209
|
private primeEntitySelectorScopes;
|
|
8210
|
+
/**
|
|
8211
|
+
* Picker scopes of dependent selectors right after a board loaded (AB#7915):
|
|
8212
|
+
* a dependent whose leader has an initial pick is pending (its picker lists
|
|
8213
|
+
* nothing until the scope resolved); an invalid scope source is failed and
|
|
8214
|
+
* logs one warning per board load (the state is cleared on board switch, so
|
|
8215
|
+
* the guard on an existing state makes this idempotent).
|
|
8216
|
+
*/
|
|
8217
|
+
private primePickerScopes;
|
|
8218
|
+
/**
|
|
8219
|
+
* Resolves the picker scope of `dependent` from its leader's pick `rtId`
|
|
8220
|
+
* (AB#7915): marks it pending synchronously, then walks `scopeSource.path`
|
|
8221
|
+
* with `resolveScopePath` (one batched request per hop) and stores the
|
|
8222
|
+
* distinct rtIds of the last hop — `[]` when the pick reaches nothing. A
|
|
8223
|
+
* failing hop is a failed picker scope (logged once). Resolves with the
|
|
8224
|
+
* stored state, or `null` when a newer leader pick (or a clear) overtook it.
|
|
8225
|
+
* Never rejects.
|
|
8226
|
+
*/
|
|
8227
|
+
private resolvePickerScope;
|
|
7700
8228
|
/**
|
|
7701
8229
|
* Resolves variables for an entity selector by fetching entity attributes,
|
|
7702
8230
|
* then its stream-data scope.
|
|
@@ -7741,6 +8269,8 @@ declare class MeshBoardViewComponent implements OnInit, OnDestroy, HasUnsavedCha
|
|
|
7741
8269
|
* Format: es_<selectorId>=<rtId>
|
|
7742
8270
|
*/
|
|
7743
8271
|
private writeEntitySelectorsToUrl;
|
|
8272
|
+
/** The `es_<selectorId>` query parameters of the current picks (`null` = remove). */
|
|
8273
|
+
private entitySelectorUrlParams;
|
|
7744
8274
|
/**
|
|
7745
8275
|
* Reads entity selector selections from URL query parameters.
|
|
7746
8276
|
* Returns a map of selectorId -> rtId.
|
|
@@ -9619,5 +10149,5 @@ declare function pipelineExecutionInputs(children: (unknown | null)[] | null | u
|
|
|
9619
10149
|
*/
|
|
9620
10150
|
declare function countPipelineExecutions(pipelines: PipelineExecutionInput[], now?: number): PipelineExecutionCounts;
|
|
9621
10151
|
|
|
9622
|
-
export { ADAPTER_OFFLINE_GRACE_MS, ASSOCIATION_HOP_SOURCE_BATCH, ASSOCIATION_HOP_TARGETS_PER_SOURCE, ATTENTION_SEVERITY_ORDER, AdaptersAttentionProvider, AddWidgetDialogComponent, AiInsightsConfigDialogComponent, AiInsightsService, AiInsightsWidgetComponent, AlertBannerConfigDialogComponent, AlertBannerWidgetComponent, AlertListConfigDialogComponent, AlertListWidgetComponent, AssociationsConfigDialogComponent, AttentionListConfigDialogComponent, AttentionListWidgetComponent, AutoRefreshTimerService, BUILT_IN_ATTENTION_PROVIDERS, BarChartConfigDialogComponent, BarChartWidgetComponent, BlueprintUpdatesAttentionProvider, COCKPIT_ADAPTER_LIMIT, COCKPIT_ATTENTION_PROVIDERS, COCKPIT_BLUEPRINT_CATALOG_LIMIT, COCKPIT_CHILD_TENANT_IDS, COCKPIT_DATA_FLOW_LIMIT, COCKPIT_EXPLAIN_HANDLER, COCKPIT_FAILED_EXECUTIONS_OPTIONS, COCKPIT_KPI_GATES, COCKPIT_KPI_SLOW_LOADING_MS, COCKPIT_LINK_RESOLVER, COCKPIT_RECENT_ITEMS, COCKPIT_ROLES, COCKPIT_SERVICE_NAMES, COCKPIT_VERSION_SOURCE, COCKPIT_VIEWER_ACCESS, COCKPIT_WIDGET_MESSAGES, COCKPIT_WIDGET_TYPES, CkModelsResolveFailedAttentionProvider, CockpitAdapterStatesService, CockpitAttentionService, CockpitBlueprintStatusService, CockpitChildTenantsService, CockpitCkModelStatesService, CockpitContextService, CockpitDataFlowExecutionsService, CockpitKpiConfigDialogComponent, CockpitKpiService, CockpitKpiWidgetComponent, CockpitServiceHealthService, DAY_MS, DEFAULT_ATTENTION_MAX_ITEMS, DEFAULT_COCKPIT_WIDGET_MESSAGES, DEFAULT_FAILED_EXECUTIONS_OPTIONS, DEFAULT_MESHBOARD_MESSAGES, DEFAULT_RECENT_ITEMS_MAX, DEFAULT_TIME_ZONE_MODE, DashboardDataService, DashboardGridService, EditModeStateService, EditWidgetDialogComponent, EntityAssociationsWidgetComponent, EntityCardConfigDialogComponent, EntityCardWidgetComponent, EntityDetailDialogComponent, EntitySelectorEditorComponent, EntitySelectorScopePathEditorComponent, EntitySelectorToolbarComponent, FALLBACK_SERIES_COLORS, FailedExecutionsAttentionProvider, FeaturesNotInstalledAttentionProvider, GaugeConfigDialogComponent, GaugeWidgetComponent, HISTOGRAM_HOURS, HOUR_MS, HeatmapConfigDialogComponent, HeatmapWidgetComponent, KPI_ERROR_TEXT, KpiConfigDialogComponent, KpiWidgetComponent, LazyMarkdownComponent, LineChartConfigDialogComponent, LineChartWidgetComponent, MAX_RECENT_ITEMS, MAX_SCOPE_HOPS, MESHBOARD_CHROME_ROUTE_DATA, MESHBOARD_DESCRIPTION_MARKER, MESHBOARD_EDIT_QUERY_PARAM, MESHBOARD_HEADER_MODE_ROUTE_DATA, MESHBOARD_LABEL_RESOLVER, MESHBOARD_LANGUAGE, MESHBOARD_MESSAGES, MESHBOARD_OPTIONS, MESHBOARD_TENANT_ID_PROVIDER, MarkdownConfigDialogComponent, MarkdownWidgetComponent, MeshBoardDataService, MeshBoardGridService, MeshBoardManagerDialogComponent, MeshBoardPersistenceService, MeshBoardSettingsDialogComponent, MeshBoardSettingsResult, MeshBoardStateService, MeshBoardViewComponent, NOT_AVAILABLE_TEXT, PieChartConfigDialogComponent, PieChartWidgetComponent, QueryExecutorService, QuerySelectorComponent, RecentItemsConfigDialogComponent, RecentItemsWidgetComponent, RuntimeEntitySelectorComponent, SERVICE_MANAGED_BLUEPRINT_PREFIX, STATE_STATUS_BY_KEY, ServiceHealthConfigDialogComponent, ServiceHealthWidgetComponent, ServicesHealthAttentionProvider, StatsGridConfigDialogComponent, StatsGridWidgetComponent, StatusIndicatorConfigDialogComponent, StatusIndicatorWidgetComponent, StatusListConfigDialogComponent, StatusListWidgetComponent, SummaryCardConfigDialogComponent, SummaryCardWidgetComponent, TableConfigDialogComponent, TableWidgetComponent, TableWidgetDataSourceDirective, UnregisteredPoolsAttentionProvider, WidgetFactoryService, WidgetGroupComponent, WidgetGroupConfigDialogComponent, WidgetNotConfiguredComponent, WidgetRegistryService, adapterKpi, adaptersInError, adaptersOffline, blueprintUpdatesKpi, buildHourlyHistogram, categoryStatus, chartSeriesColors, ckModelKpi, classifyQuery, compareBlueprintVersions, compareMeshBoardNavigation, countFlowExecutions, countLabel, countPipelineExecutions, emptyQueryExecutionResult, enabledButNotInstalled, executionKpi, failedExecutionsSeverity, formatCockpitMessage, formatCount, humanizeCategory, isAdapterAtRest, isAdapterExpectedToRun, isAdapterOnline, isCockpitWidgetType, isMeshBoardChrome, isMeshBoardHeaderMode, isServiceConfigured, joinEncodedDescription, kpiKindOf, latestStatisticsUpdate, legacyCockpitLinkTarget, loadNgxMarkdown, nameList, newMeshBoardConfig, normalizeNavigation, observeThemeChanges, parseHostTimeRange, pickLocalizedText, pipelineExecutionInputs, plural, provideCockpitWidgetHost, provideCockpitWidgets, provideDefaultWidgets, provideMeshBoard, provideMeshBoardLanguage, provideMeshBoardMessages, provideProcessWidget, provideWidgetRegistrations, queryFamily, readMeshBoardNavigation, recentRelativeTime, registerCockpitWidgets, registerDefaultWidgets, registerProcessWidget, resolveChartColor, resolveCockpitWidgetMessages, resolveMeshBoardChrome, resolveMeshBoardHeaderMode, resolveMeshBoardLabel, resolveMeshBoardMessages, selectProviders, serviceStateText, servicesHealthKpi, sortAttentionFindings, sparklineGeometry, splitBlueprintId, splitEncodedDescription, statusColor, summarizeAdapterOnline, tenantCountKpi, toBlueprintStatus, toServiceHealthStatus, truncationNote, versionKpi, withMeshBoardNavigation };
|
|
9623
|
-
export type { AdapterOnlineFields, AdapterOnlineSummary, AdapterStatusWidgetConfig, AggregationDataSource, AggregationQuery, AggregationType, AiInsightsConfigResult, AiInsightsWidgetConfig, AlertBannerConfigResult, AlertBannerWidgetConfig, AlertListConfigResult, AlertListWidgetConfig, AnyWidgetConfig, AssociationsConfigResult, AttentionContext, AttentionFinding, AttentionLink, AttentionListConfigResult, AttentionListWidgetConfig, AttentionProvider, AttentionProviderInfo, AttentionSeverity, AttentionState, BarChartColorThreshold, BarChartConfigResult, BarChartSeries, BarChartType, BarChartWidgetConfig, BaseWidgetConfig, BlueprintUpdatesWidgetConfig, CategoryStatus, CategoryValueItem, ChartReferenceLine, CkModelStateWidgetConfig, CkQueryResult, CkQueryTarget, CkTypeAttributeInfo, CockpitAdapterState, CockpitAdapterStates, CockpitBlueprintStatus, CockpitBlueprintUpdate, CockpitChildTenants, CockpitCkModelCounts, CockpitDataFlowExecutions, CockpitDataFlowRow, CockpitExecutionCounts, CockpitExplainHandler, CockpitExplainTarget, CockpitKpi, CockpitKpiConfigResult, CockpitKpiKind, CockpitKpiResult, CockpitKpiStatus, CockpitKpiWidgetConfig, CockpitKpiWidgetOptions, CockpitLinkQueryParams, CockpitLinkResolver, CockpitLinkTarget, CockpitRecentItem, CockpitRecentItemKind, CockpitRecentItemsSource, CockpitResolvedLink, CockpitRouteLinkTarget, CockpitServiceHealth, CockpitServiceHealthStatus, CockpitServiceKey, CockpitVersionEntry, CockpitVersionSource, CockpitViewerAccess, CockpitWidgetHost, CockpitWidgetMessages, CockpitWidgetMessagesSource, CockpitWidgetType, ConfigDialogResult, ConfigResultApplier, ConstructionKitQueryDataSource, DashboardConfig, DashboardWidget, DataSource, DataSourceType, DiagramPropertyMapping, EncodedDescription, EntityAssociation, EntityAttribute, EntityCardConfigResult, EntityCardWidgetConfig, EntityListWidget, EntitySelectorAttributeMapping, EntitySelectorChildScope, EntitySelectorClearEvent, EntitySelectorConfig, EntitySelectorEvent, EntitySelectorScopeHop, EntitySelectorScopeState, EntityWidget, EntityWithAssociationsWidgetConfig, FailedExecutionsAttentionOptions, GaugeConfigResult, GaugeRange, GaugeType, GaugeWidgetConfig, GridCell, GridPosition, GroupChildWidgetType, GroupedDataItem, HeatmapAggregation, HeatmapColorMode, HeatmapColorScheme, HeatmapConfigResult, HeatmapWidgetConfig, HostTimeRangeState, HourlyExecutionBucket, HourlyHistogramOptions, KpiConfigResult, KpiDataSourceType, KpiQueryMode, KpiValueMode, KpiWidgetConfig, LatestExecutionInput, LineChartConfigResult, LineChartType, LineChartWidgetConfig, MarkdownConfigResult, MarkdownTextAlign, MarkdownWidgetConfig, MeshBoardChrome, MeshBoardConfig, MeshBoardHeaderMode, MeshBoardHostTimeRange, MeshBoardLabelKind, MeshBoardLabelRequest, MeshBoardLabelResolver, MeshBoardLanguageSource, MeshBoardMessages, MeshBoardMessagesSource, MeshBoardNavigationConfig, MeshBoardOptions, MeshBoardTimeFilterConfig, MeshBoardTimeFilterControl, MeshBoardTimeZoneMode, MeshBoardVariable, MeshBoardVariableSource, MeshBoardVariableType, ParentAssociationMode, PersistedDashboard, PersistedMeshBoard, PersistedWidget, PersistedWidgetData, PersistentQueryCellMode, PersistentQueryCellSource, PersistentQueryDataSource, PersistentQueryItem, PieChartConfigResult, PieChartLabelPosition, PieChartType, PieChartWidgetConfig, PipelineExecutionCounts, PipelineExecutionInput, PipelineExecutionsWidgetConfig, PipelineStatisticsInput, ProcessWidgetConfig, Quarter, QueryCell, QueryClassification, QueryColumn, QueryColumnInfo, QueryColumnItem, QueryExecutionOptions, QueryExecutionResult, QueryFamily, QueryKind, QueryResultRow, RawHourBucket, RecentItemsConfigResult, RecentItemsWidgetConfig, RelativeTimeUnit, RepeaterDataItem, RepeaterQueryDataSource, RuntimeEntityData, RuntimeEntityDataSource, RuntimeEntitySelectorValue, SeriesAggregationFunction, SeriesResolutionResult, ServiceCallDataSource, ServiceCallType, ServiceHealthConfigResult, ServiceHealthWidgetConfig, ServicesHealthWidgetConfig, SparklineGeometry, StatColor, StatItem, StaticDataSource, StatsGridConfigResult, StatsGridWidgetConfig, StatusIndicatorConfigResult, StatusIndicatorWidgetConfig, StatusListConfigResult, StatusListWidgetConfig, StreamDataExecutionArgs, StreamDataScope, SummaryCardConfigResult, SummaryCardTile, SummaryCardWidgetConfig, TableColumn, TableColumnStatusIconMapping, TableColumnValueLabel, TableConfigResult, TableFilterConfig, TableSortConfig, TableWidgetConfig, TargetEntityWithAttributes, TenantCountWidgetConfig, TimeRangePickerConfig, TimeRangeSelection, TimeRangeType, UpdateDashboardResult, VariableResolutionError, VersionInfoWidgetConfig, WidgetConfig, WidgetConfigDialog, WidgetConfigDialogSize, WidgetConfigResult, WidgetCreationOptions, WidgetDataSource, WidgetFilterConfig, WidgetGroupAttributeMappings, WidgetGroupChildTemplate, WidgetGroupConfig, WidgetGroupConfigResult, WidgetGroupLayout, WidgetPersistenceData, WidgetPositionUpdate, WidgetRegistration, WidgetType, WidgetZone };
|
|
10152
|
+
export { ADAPTER_OFFLINE_GRACE_MS, ASSOCIATION_HOP_SOURCE_BATCH, ASSOCIATION_HOP_TARGETS_PER_SOURCE, ATTENTION_SEVERITY_ORDER, AdaptersAttentionProvider, AddWidgetDialogComponent, AiInsightsConfigDialogComponent, AiInsightsService, AiInsightsWidgetComponent, AlertBannerConfigDialogComponent, AlertBannerWidgetComponent, AlertListConfigDialogComponent, AlertListWidgetComponent, AssociationsConfigDialogComponent, AttentionListConfigDialogComponent, AttentionListWidgetComponent, AutoRefreshTimerService, BUILT_IN_ATTENTION_PROVIDERS, BarChartConfigDialogComponent, BarChartWidgetComponent, BlueprintUpdatesAttentionProvider, COCKPIT_ADAPTER_LIMIT, COCKPIT_ATTENTION_PROVIDERS, COCKPIT_BLUEPRINT_CATALOG_LIMIT, COCKPIT_CHILD_TENANT_IDS, COCKPIT_DATA_FLOW_LIMIT, COCKPIT_EXPLAIN_HANDLER, COCKPIT_FAILED_EXECUTIONS_OPTIONS, COCKPIT_KPI_GATES, COCKPIT_KPI_SLOW_LOADING_MS, COCKPIT_LINK_RESOLVER, COCKPIT_RECENT_ITEMS, COCKPIT_ROLES, COCKPIT_SERVICE_NAMES, COCKPIT_VERSION_SOURCE, COCKPIT_VIEWER_ACCESS, COCKPIT_WIDGET_MESSAGES, COCKPIT_WIDGET_TYPES, CkModelsResolveFailedAttentionProvider, CockpitAdapterStatesService, CockpitAttentionService, CockpitBlueprintStatusService, CockpitChildTenantsService, CockpitCkModelStatesService, CockpitContextService, CockpitDataFlowExecutionsService, CockpitKpiConfigDialogComponent, CockpitKpiService, CockpitKpiWidgetComponent, CockpitServiceHealthService, DAY_MS, DEFAULT_ATTENTION_MAX_ITEMS, DEFAULT_COCKPIT_WIDGET_MESSAGES, DEFAULT_FAILED_EXECUTIONS_OPTIONS, DEFAULT_MESHBOARD_MESSAGES, DEFAULT_RECENT_ITEMS_MAX, DEFAULT_TIME_ZONE_MODE, DashboardDataService, DashboardGridService, EditModeStateService, EditWidgetDialogComponent, EntityAssociationsWidgetComponent, EntityCardConfigDialogComponent, EntityCardWidgetComponent, EntityDetailDialogComponent, EntitySelectorEditorComponent, EntitySelectorScopePathEditorComponent, EntitySelectorToolbarComponent, FALLBACK_SERIES_COLORS, FailedExecutionsAttentionProvider, FeaturesNotInstalledAttentionProvider, FormulaFieldComponent, GaugeConfigDialogComponent, GaugeWidgetComponent, HISTOGRAM_HOURS, HOUR_MS, HeatmapConfigDialogComponent, HeatmapWidgetComponent, KPI_ERROR_TEXT, KpiConfigDialogComponent, KpiWidgetComponent, LazyMarkdownComponent, LineChartConfigDialogComponent, LineChartWidgetComponent, MAX_RECENT_ITEMS, MAX_SCOPE_HOPS, MESHBOARD_CHROME_ROUTE_DATA, MESHBOARD_DESCRIPTION_MARKER, MESHBOARD_EDIT_QUERY_PARAM, MESHBOARD_HEADER_MODE_ROUTE_DATA, MESHBOARD_LABEL_RESOLVER, MESHBOARD_LANGUAGE, MESHBOARD_MESSAGES, MESHBOARD_OPTIONS, MESHBOARD_TENANT_ID_PROVIDER, MarkdownConfigDialogComponent, MarkdownWidgetComponent, MeshBoardDataService, MeshBoardGridService, MeshBoardManagerDialogComponent, MeshBoardPersistenceService, MeshBoardSettingsDialogComponent, MeshBoardSettingsResult, MeshBoardStateService, MeshBoardViewComponent, NOT_AVAILABLE_TEXT, PieChartConfigDialogComponent, PieChartWidgetComponent, QueryExecutorService, QuerySelectorComponent, RecentItemsConfigDialogComponent, RecentItemsWidgetComponent, RuntimeEntitySelectorComponent, SERVICE_MANAGED_BLUEPRINT_PREFIX, STATE_STATUS_BY_KEY, ServiceHealthConfigDialogComponent, ServiceHealthWidgetComponent, ServicesHealthAttentionProvider, StatsGridConfigDialogComponent, StatsGridWidgetComponent, StatusIndicatorConfigDialogComponent, StatusIndicatorWidgetComponent, StatusListConfigDialogComponent, StatusListWidgetComponent, SummaryCardConfigDialogComponent, SummaryCardWidgetComponent, TableConfigDialogComponent, TableWidgetComponent, TableWidgetDataSourceDirective, UnregisteredPoolsAttentionProvider, WidgetFactoryService, WidgetGroupComponent, WidgetGroupConfigDialogComponent, WidgetNotConfiguredComponent, WidgetRegistryService, adapterKpi, adaptersInError, adaptersOffline, blueprintUpdatesKpi, buildHourlyHistogram, categoryStatus, chartSeriesColors, ckModelKpi, classifyQuery, compareBlueprintVersions, compareMeshBoardNavigation, countFlowExecutions, countLabel, countPipelineExecutions, emptyQueryExecutionResult, enabledButNotInstalled, executionKpi, failedExecutionsSeverity, formatCockpitMessage, formatCount, humanizeCategory, isAdapterAtRest, isAdapterExpectedToRun, isAdapterOnline, isCockpitWidgetType, isMeshBoardChrome, isMeshBoardHeaderMode, isServiceConfigured, joinEncodedDescription, kpiKindOf, latestStatisticsUpdate, legacyCockpitLinkTarget, loadNgxMarkdown, nameList, newMeshBoardConfig, normalizeNavigation, observeThemeChanges, parseHostTimeRange, pickLocalizedText, pipelineExecutionInputs, plural, provideCockpitWidgetHost, provideCockpitWidgets, provideDefaultWidgets, provideMeshBoard, provideMeshBoardLanguage, provideMeshBoardMessages, provideProcessWidget, provideWidgetRegistrations, queryFamily, readMeshBoardNavigation, recentRelativeTime, registerCockpitWidgets, registerDefaultWidgets, registerProcessWidget, resolveChartColor, resolveCockpitWidgetMessages, resolveMeshBoardChrome, resolveMeshBoardHeaderMode, resolveMeshBoardLabel, resolveMeshBoardMessages, selectProviders, serviceStateText, servicesHealthKpi, sortAttentionFindings, sparklineGeometry, splitBlueprintId, splitEncodedDescription, statusColor, summarizeAdapterOnline, tenantCountKpi, toBlueprintStatus, toServiceHealthStatus, truncationNote, versionKpi, withMeshBoardNavigation };
|
|
10153
|
+
export type { AdapterOnlineFields, AdapterOnlineSummary, AdapterStatusWidgetConfig, AggregationDataSource, AggregationQuery, AggregationType, AiInsightsConfigResult, AiInsightsWidgetConfig, AlertBannerConfigResult, AlertBannerWidgetConfig, AlertListConfigResult, AlertListWidgetConfig, AnyWidgetConfig, AssociationsConfigResult, AttentionContext, AttentionFinding, AttentionLink, AttentionListConfigResult, AttentionListWidgetConfig, AttentionProvider, AttentionProviderInfo, AttentionSeverity, AttentionState, BarChartColorThreshold, BarChartConfigResult, BarChartSeries, BarChartType, BarChartWidgetConfig, BaseWidgetConfig, BlueprintUpdatesWidgetConfig, CategoryStatus, CategoryValueItem, ChartReferenceLine, CkModelStateWidgetConfig, CkQueryResult, CkQueryTarget, CkTypeAttributeInfo, CockpitAdapterState, CockpitAdapterStates, CockpitBlueprintStatus, CockpitBlueprintUpdate, CockpitChildTenants, CockpitCkModelCounts, CockpitDataFlowExecutions, CockpitDataFlowRow, CockpitExecutionCounts, CockpitExplainHandler, CockpitExplainTarget, CockpitKpi, CockpitKpiConfigResult, CockpitKpiKind, CockpitKpiResult, CockpitKpiStatus, CockpitKpiWidgetConfig, CockpitKpiWidgetOptions, CockpitLinkQueryParams, CockpitLinkResolver, CockpitLinkTarget, CockpitRecentItem, CockpitRecentItemKind, CockpitRecentItemsSource, CockpitResolvedLink, CockpitRouteLinkTarget, CockpitServiceHealth, CockpitServiceHealthStatus, CockpitServiceKey, CockpitVersionEntry, CockpitVersionSource, CockpitViewerAccess, CockpitWidgetHost, CockpitWidgetMessages, CockpitWidgetMessagesSource, CockpitWidgetType, ConfigDialogResult, ConfigResultApplier, ConstructionKitQueryDataSource, DashboardConfig, DashboardWidget, DataSource, DataSourceType, DiagramPropertyMapping, EncodedDescription, EntityAssociation, EntityAttribute, EntityCardConfigResult, EntityCardWidgetConfig, EntityListWidget, EntitySelectorAttributeMapping, EntitySelectorChildScope, EntitySelectorClearEvent, EntitySelectorConfig, EntitySelectorEvent, EntitySelectorScopeHop, EntitySelectorScopeSource, EntitySelectorScopeState, EntityWidget, EntityWithAssociationsWidgetConfig, FailedExecutionsAttentionOptions, GaugeConfigResult, GaugeRange, GaugeType, GaugeWidgetConfig, GridCell, GridPosition, GroupChildWidgetType, GroupedDataItem, HeatmapAggregation, HeatmapColorMode, HeatmapColorScheme, HeatmapConfigResult, HeatmapTimeWindow, HeatmapWidgetConfig, HostTimeRangeState, HourlyExecutionBucket, HourlyHistogramOptions, KpiConfigResult, KpiDataSourceType, KpiQueryMode, KpiValueMode, KpiWidgetConfig, LatestExecutionInput, LineChartConfigResult, LineChartType, LineChartWidgetConfig, MarkdownConfigResult, MarkdownTextAlign, MarkdownWidgetConfig, MeshBoardChrome, MeshBoardConfig, MeshBoardHeaderMode, MeshBoardHostTimeRange, MeshBoardLabelKind, MeshBoardLabelRequest, MeshBoardLabelResolver, MeshBoardLanguageSource, MeshBoardMessages, MeshBoardMessagesSource, MeshBoardNavigationConfig, MeshBoardOptions, MeshBoardTimeFilterConfig, MeshBoardTimeFilterControl, MeshBoardTimeZoneMode, MeshBoardVariable, MeshBoardVariableSource, MeshBoardVariableType, ParentAssociationMode, PersistedDashboard, PersistedMeshBoard, PersistedWidget, PersistedWidgetData, PersistentQueryCellMode, PersistentQueryCellSource, PersistentQueryDataSource, PersistentQueryItem, PieChartConfigResult, PieChartLabelPosition, PieChartType, PieChartWidgetConfig, PipelineExecutionCounts, PipelineExecutionInput, PipelineExecutionsWidgetConfig, PipelineStatisticsInput, ProcessWidgetConfig, Quarter, QueryCell, QueryClassification, QueryColumn, QueryColumnInfo, QueryColumnItem, QueryExecutionOptions, QueryExecutionResult, QueryFamily, QueryKind, QueryResultRow, RawHourBucket, RecentItemsConfigResult, RecentItemsWidgetConfig, RelativeTimeUnit, RepeaterDataItem, RepeaterQueryDataSource, RuntimeEntityData, RuntimeEntityDataSource, RuntimeEntitySelectorValue, SeriesAggregationFunction, SeriesResolutionResult, ServiceCallDataSource, ServiceCallType, ServiceHealthConfigResult, ServiceHealthWidgetConfig, ServicesHealthWidgetConfig, SparklineGeometry, StatColor, StatItem, StaticDataSource, StatsGridConfigResult, StatsGridWidgetConfig, StatusIndicatorConfigResult, StatusIndicatorWidgetConfig, StatusListConfigResult, StatusListWidgetConfig, StreamDataExecutionArgs, StreamDataScope, SummaryCardConfigResult, SummaryCardTile, SummaryCardWidgetConfig, TableColumn, TableColumnStatusIconMapping, TableColumnValueLabel, TableConfigResult, TableFilterConfig, TableSortConfig, TableWidgetConfig, TargetEntityWithAttributes, TenantCountWidgetConfig, TimeRangePickerConfig, TimeRangeSelection, TimeRangeType, UpdateDashboardResult, VariableResolutionError, VersionInfoWidgetConfig, WidgetConfig, WidgetConfigDialog, WidgetConfigDialogSize, WidgetConfigResult, WidgetCreationOptions, WidgetDataSource, WidgetFilterConfig, WidgetGroupAttributeMappings, WidgetGroupChildTemplate, WidgetGroupConfig, WidgetGroupConfigResult, WidgetGroupLayout, WidgetPersistenceData, WidgetPositionUpdate, WidgetRegistration, WidgetType, WidgetZone };
|