@meshmakers/octo-meshboard 3.4.190 → 3.4.210

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshmakers/octo-meshboard",
3
- "version": "3.4.190",
3
+ "version": "3.4.210",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^22.0.0",
6
6
  "@angular/core": "^22.0.0",
@@ -238,6 +238,16 @@ interface PersistentQueryDataSource extends WidgetDataSource {
238
238
  * Ignored for runtime queries (they don't consume `streamDataArgs`).
239
239
  */
240
240
  ignoreTimeFilter?: boolean;
241
+ /**
242
+ * Asset-scope binding: the `id` of an entity selector whose selection scopes
243
+ * this widget's stream-data query. The selector resolves its picked entity to
244
+ * a set of source rtIds (via its `childScope` one-hop, or the picked entity
245
+ * itself when no childScope is configured); those rtIds are passed as the
246
+ * query's `streamDataArgs.rtIds`, replacing the persisted RtIds at execution
247
+ * time. Absent ⇒ the query runs with its persisted scope. Ignored for runtime
248
+ * queries (the archive `rtIds` override is a stream-data concept).
249
+ */
250
+ entitySelectorId?: string;
241
251
  }
242
252
  /**
243
253
  * Aggregation types supported
@@ -1050,6 +1060,30 @@ interface EntitySelectorAttributeMapping {
1050
1060
  /** Attribute value type for variable type mapping */
1051
1061
  attributeValueType?: string;
1052
1062
  }
1063
+ /**
1064
+ * One-hop association traversal that turns a selected entity into the set of
1065
+ * source rtIds a stream-data widget should be scoped to.
1066
+ *
1067
+ * Use case: the user picks a `MeteringPoint`, but the stream-data archive is
1068
+ * keyed by its child `EnergyMeasurement` rtIds. The childScope describes that
1069
+ * single hop (target type + association role + direction); the selected
1070
+ * entity's children of `targetCkTypeId` reached via `roleId` become the scope
1071
+ * rtIds. When a selector has no childScope, the picked entity's own rtId is the
1072
+ * scope (direct keying).
1073
+ */
1074
+ interface EntitySelectorChildScope {
1075
+ /** CK type of the child entities that key the stream-data archive (e.g. EnergyMeasurement). */
1076
+ targetCkTypeId: string;
1077
+ /** Association role linking the selected entity to the children (e.g. "System/ParentChild"). */
1078
+ roleId: string;
1079
+ /**
1080
+ * Traversal direction from the selected (parent) entity to its children.
1081
+ * For `System/ParentChild` the child owns the association to its parent, so
1082
+ * the children are reached **inbound** — hence `'in'` is the default. Use
1083
+ * `'out'` only for custom roles modelled parent → child.
1084
+ */
1085
+ direction?: 'in' | 'out';
1086
+ }
1053
1087
  /**
1054
1088
  * Configuration for a single entity selector in the MeshBoard toolbar.
1055
1089
  * Each selector is bound to a CK type and populates variables from the selected entity.
@@ -1067,6 +1101,12 @@ interface EntitySelectorConfig {
1067
1101
  showInToolbar?: boolean;
1068
1102
  /** Optional pre-selected entity rtId */
1069
1103
  defaultRtId?: string;
1104
+ /**
1105
+ * Optional one-hop traversal that resolves the picked entity to the child
1106
+ * source rtIds a stream-data widget scopes by. Absent ⇒ the picked entity's
1107
+ * own rtId is the scope. See {@link EntitySelectorChildScope}.
1108
+ */
1109
+ childScope?: EntitySelectorChildScope;
1070
1110
  /** Current selection (transient, not persisted) */
1071
1111
  selectedRtId?: string;
1072
1112
  /** Display name of the currently selected entity */
@@ -1583,6 +1623,13 @@ declare class MeshBoardStateService {
1583
1623
  private readonly _isLoading;
1584
1624
  private readonly _isModelAvailable;
1585
1625
  private readonly _variableResolutionErrors;
1626
+ /**
1627
+ * Transient cache of the source rtIds resolved from each entity selector's
1628
+ * current selection (keyed by selector id). Populated by the view component
1629
+ * when a selection resolves (one-hop childScope traversal, or the picked
1630
+ * entity's own rtId). Not persisted — derived fresh from each selection.
1631
+ */
1632
+ private readonly _entitySelectorRtIds;
1586
1633
  readonly meshBoardConfig: _angular_core.Signal<MeshBoardConfig>;
1587
1634
  readonly persistedMeshBoardId: _angular_core.Signal<string | null>;
1588
1635
  /** @deprecated Use existingWidgetRtIds instead */
@@ -1779,6 +1826,25 @@ declare class MeshBoardStateService {
1779
1826
  from: Date;
1780
1827
  to: Date;
1781
1828
  } | undefined;
1829
+ /**
1830
+ * Stores the source rtIds resolved from an entity selector's current
1831
+ * selection. Called by the view component after a selection resolves (the
1832
+ * one-hop childScope traversal, or the picked entity's own rtId when the
1833
+ * selector has no childScope). Transient — not persisted.
1834
+ */
1835
+ setEntitySelectorRtIds(selectorId: string, rtIds: string[]): void;
1836
+ /**
1837
+ * Clears the cached source rtIds for an entity selector (e.g. when its
1838
+ * selection is cleared).
1839
+ */
1840
+ clearEntitySelectorRtIds(selectorId: string): void;
1841
+ /**
1842
+ * Resolves the stream-data `rtIds` scope for a persistent-query widget bound
1843
+ * to an entity selector. Returns the source rtIds cached from the selector's
1844
+ * current selection, or `undefined` when the selector id is absent, unknown,
1845
+ * or has no active selection (so the query keeps its persisted scope).
1846
+ */
1847
+ resolveStreamDataRtIds(entitySelectorId?: string): string[] | undefined;
1782
1848
  /**
1783
1849
  * Updates the time filter configuration.
1784
1850
  */
@@ -2405,6 +2471,13 @@ interface StreamDataExecutionArgs {
2405
2471
  * schema marks `queryMode` non-null. Defaults to `Default`.
2406
2472
  */
2407
2473
  queryMode?: QueryModeDto;
2474
+ /**
2475
+ * Source runtime ids to scope the query to. When set, replaces the persisted
2476
+ * RtIds on the query at execution time — used to scope a stream-data widget to
2477
+ * the entities resolved from a selected asset (e.g. the EnergyMeasurement rtIds
2478
+ * under a picked MeteringPoint). An empty array is treated as "no scope".
2479
+ */
2480
+ rtIds?: string[] | null;
2408
2481
  }
2409
2482
  interface QueryExecutionOptions {
2410
2483
  /** Page size — passed to the GraphQL `first` variable. */
@@ -2691,6 +2764,8 @@ interface KpiConfigResult extends WidgetConfigResult {
2691
2764
  queryName?: string;
2692
2765
  queryFamily?: QueryFamily;
2693
2766
  ignoreTimeFilter?: boolean;
2767
+ /** Asset-scope binding: id of the entity selector whose selection scopes the stream-data query. */
2768
+ entitySelectorId?: string;
2694
2769
  queryMode?: KpiQueryMode;
2695
2770
  queryValueField?: string;
2696
2771
  queryCategoryField?: string;
@@ -2739,6 +2814,7 @@ declare class KpiConfigDialogComponent implements OnInit {
2739
2814
  initialQueryName?: string;
2740
2815
  initialQueryFamily?: QueryFamily;
2741
2816
  initialIgnoreTimeFilter?: boolean;
2817
+ initialEntitySelectorId?: string;
2742
2818
  initialQueryMode?: KpiQueryMode;
2743
2819
  initialQueryValueField?: string;
2744
2820
  initialQueryCategoryField?: string;
@@ -2755,11 +2831,14 @@ declare class KpiConfigDialogComponent implements OnInit {
2755
2831
  selectedPersistentQuery: PersistentQueryItem | null;
2756
2832
  /** Stream-data opt-out: when true the MeshBoard time filter is not bound to the query. */
2757
2833
  ignoreTimeFilter: boolean;
2834
+ entitySelectorId?: string;
2758
2835
  queryColumns: QueryColumnItem[];
2759
2836
  categoryValues: CategoryValueItem[];
2760
2837
  queryMode: KpiQueryMode;
2761
2838
  /** Family of the currently selected query; drives the time-filter toggle's visibility. */
2762
2839
  get selectedQueryFamily(): QueryFamily | null;
2840
+ /** Entity selectors available on the current MeshBoard (for the scope picker). */
2841
+ get availableEntitySelectors(): EntitySelectorConfig[];
2763
2842
  isLoadingQueryColumns: boolean;
2764
2843
  isLoadingCategoryValues: boolean;
2765
2844
  readonly isLoadingAttributes: _angular_core.WritableSignal<boolean>;
@@ -2815,7 +2894,7 @@ declare class KpiConfigDialogComponent implements OnInit {
2815
2894
  private loadCategoryValuesForField;
2816
2895
  onFiltersChange(updatedFilters: FieldFilterItem[]): void;
2817
2896
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KpiConfigDialogComponent, never>;
2818
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KpiConfigDialogComponent, "mm-kpi-config-dialog", never, { "initialCkTypeId": { "alias": "initialCkTypeId"; "required": false; }; "initialRtId": { "alias": "initialRtId"; "required": false; }; "initialValueAttribute": { "alias": "initialValueAttribute"; "required": false; }; "initialLabelAttribute": { "alias": "initialLabelAttribute"; "required": false; }; "initialPrefix": { "alias": "initialPrefix"; "required": false; }; "initialSuffix": { "alias": "initialSuffix"; "required": false; }; "initialTrend": { "alias": "initialTrend"; "required": false; }; "initialComparisonText": { "alias": "initialComparisonText"; "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; }; "initialQueryMode": { "alias": "initialQueryMode"; "required": false; }; "initialQueryValueField": { "alias": "initialQueryValueField"; "required": false; }; "initialQueryCategoryField": { "alias": "initialQueryCategoryField"; "required": false; }; "initialQueryCategoryValue": { "alias": "initialQueryCategoryValue"; "required": false; }; "initialStaticValue": { "alias": "initialStaticValue"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
2897
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KpiConfigDialogComponent, "mm-kpi-config-dialog", never, { "initialCkTypeId": { "alias": "initialCkTypeId"; "required": false; }; "initialRtId": { "alias": "initialRtId"; "required": false; }; "initialValueAttribute": { "alias": "initialValueAttribute"; "required": false; }; "initialLabelAttribute": { "alias": "initialLabelAttribute"; "required": false; }; "initialPrefix": { "alias": "initialPrefix"; "required": false; }; "initialSuffix": { "alias": "initialSuffix"; "required": false; }; "initialTrend": { "alias": "initialTrend"; "required": false; }; "initialComparisonText": { "alias": "initialComparisonText"; "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; }; "initialStaticValue": { "alias": "initialStaticValue"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
2819
2898
  }
2820
2899
 
2821
2900
  interface GroupedAssociation {
@@ -3219,6 +3298,8 @@ interface TableConfigResult {
3219
3298
  queryFamily?: QueryFamily;
3220
3299
  /** Stream-data opt-out: keep the query's own time bounds, ignore the MeshBoard time filter. */
3221
3300
  ignoreTimeFilter?: boolean;
3301
+ /** Asset-scope binding: id of the entity selector whose selection scopes the stream-data query. */
3302
+ entitySelectorId?: string;
3222
3303
  pageSize: number;
3223
3304
  sortable: boolean;
3224
3305
  }
@@ -3255,6 +3336,7 @@ declare class TableConfigDialogComponent implements OnInit {
3255
3336
  initialQueryName?: string;
3256
3337
  initialQueryFamily?: QueryFamily;
3257
3338
  initialIgnoreTimeFilter?: boolean;
3339
+ initialEntitySelectorId?: string;
3258
3340
  protected readonly columnsIcon: _progress_kendo_svg_icons.SVGIcon;
3259
3341
  protected readonly sortIcon: _progress_kendo_svg_icons.SVGIcon;
3260
3342
  protected readonly filterIcon: _progress_kendo_svg_icons.SVGIcon;
@@ -3268,7 +3350,10 @@ declare class TableConfigDialogComponent implements OnInit {
3268
3350
  availableAttributes: AttributeItem[];
3269
3351
  selectedPersistentQuery: PersistentQueryItem | null;
3270
3352
  ignoreTimeFilter: boolean;
3353
+ entitySelectorId?: string;
3271
3354
  filterVariables: FilterVariable[];
3355
+ /** Entity selectors available on the current MeshBoard (for the scope picker). */
3356
+ get availableEntitySelectors(): EntitySelectorConfig[];
3272
3357
  form: {
3273
3358
  pageSize: number;
3274
3359
  sortable: boolean;
@@ -3291,7 +3376,7 @@ declare class TableConfigDialogComponent implements OnInit {
3291
3376
  private formatColumnTitle;
3292
3377
  onCancel(): void;
3293
3378
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableConfigDialogComponent, never>;
3294
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableConfigDialogComponent, "mm-table-config-dialog", never, { "initialDataSourceType": { "alias": "initialDataSourceType"; "required": false; }; "initialCkTypeId": { "alias": "initialCkTypeId"; "required": false; }; "initialColumns": { "alias": "initialColumns"; "required": false; }; "initialSorting": { "alias": "initialSorting"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; "initialPageSize": { "alias": "initialPageSize"; "required": false; }; "initialSortable": { "alias": "initialSortable"; "required": false; }; "initialQueryRtId": { "alias": "initialQueryRtId"; "required": false; }; "initialQueryName": { "alias": "initialQueryName"; "required": false; }; "initialQueryFamily": { "alias": "initialQueryFamily"; "required": false; }; "initialIgnoreTimeFilter": { "alias": "initialIgnoreTimeFilter"; "required": false; }; }, {}, never, never, true, never>;
3379
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableConfigDialogComponent, "mm-table-config-dialog", never, { "initialDataSourceType": { "alias": "initialDataSourceType"; "required": false; }; "initialCkTypeId": { "alias": "initialCkTypeId"; "required": false; }; "initialColumns": { "alias": "initialColumns"; "required": false; }; "initialSorting": { "alias": "initialSorting"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; "initialPageSize": { "alias": "initialPageSize"; "required": false; }; "initialSortable": { "alias": "initialSortable"; "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; }; }, {}, never, never, true, never>;
3295
3380
  }
3296
3381
 
3297
3382
  declare class GaugeWidgetComponent implements DashboardWidget<GaugeWidgetConfig, RuntimeEntityData>, OnInit, OnChanges {
@@ -3354,6 +3439,8 @@ interface GaugeConfigResult extends WidgetConfigResult {
3354
3439
  queryName?: string;
3355
3440
  queryFamily?: QueryFamily;
3356
3441
  ignoreTimeFilter?: boolean;
3442
+ /** Asset-scope binding: id of the entity selector whose selection scopes the stream-data query. */
3443
+ entitySelectorId?: string;
3357
3444
  queryMode?: KpiQueryMode;
3358
3445
  queryValueField?: string;
3359
3446
  queryCategoryField?: string;
@@ -3410,6 +3497,7 @@ declare class GaugeConfigDialogComponent implements OnInit {
3410
3497
  initialQueryName?: string;
3411
3498
  initialQueryFamily?: QueryFamily;
3412
3499
  initialIgnoreTimeFilter?: boolean;
3500
+ initialEntitySelectorId?: string;
3413
3501
  initialQueryMode?: KpiQueryMode;
3414
3502
  initialQueryValueField?: string;
3415
3503
  initialQueryCategoryField?: string;
@@ -3424,11 +3512,14 @@ declare class GaugeConfigDialogComponent implements OnInit {
3424
3512
  selectedPersistentQuery: PersistentQueryItem | null;
3425
3513
  /** Stream-data opt-out: when true the MeshBoard time filter is not bound to the query. */
3426
3514
  ignoreTimeFilter: boolean;
3515
+ entitySelectorId?: string;
3427
3516
  queryColumns: QueryColumnItem[];
3428
3517
  categoryValues: CategoryValueItem[];
3429
3518
  queryMode: KpiQueryMode;
3430
3519
  /** Family of the currently selected query; drives the time-filter toggle's visibility. */
3431
3520
  get selectedQueryFamily(): QueryFamily | null;
3521
+ /** Entity selectors available on the current MeshBoard (for the scope picker). */
3522
+ get availableEntitySelectors(): EntitySelectorConfig[];
3432
3523
  isLoadingQueryColumns: boolean;
3433
3524
  isLoadingCategoryValues: boolean;
3434
3525
  readonly isLoadingAttributes: _angular_core.WritableSignal<boolean>;
@@ -3487,7 +3578,7 @@ declare class GaugeConfigDialogComponent implements OnInit {
3487
3578
  private loadCategoryValuesForField;
3488
3579
  onFiltersChange(updatedFilters: FieldFilterItem[]): void;
3489
3580
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GaugeConfigDialogComponent, never>;
3490
- 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; }; "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>;
3581
+ 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>;
3491
3582
  }
3492
3583
 
3493
3584
  /**
@@ -3566,6 +3657,8 @@ interface PieChartConfigResult extends WidgetConfigResult {
3566
3657
  queryName?: string;
3567
3658
  queryFamily?: QueryFamily;
3568
3659
  ignoreTimeFilter?: boolean;
3660
+ /** Asset-scope binding: id of the entity selector whose selection scopes the stream-data query. */
3661
+ entitySelectorId?: string;
3569
3662
  categoryField: string;
3570
3663
  valueField: string;
3571
3664
  ckQueryTarget?: CkQueryTarget;
@@ -3590,6 +3683,7 @@ declare class PieChartConfigDialogComponent implements OnInit, AfterViewInit {
3590
3683
  initialQueryName?: string;
3591
3684
  initialQueryFamily?: QueryFamily;
3592
3685
  initialIgnoreTimeFilter?: boolean;
3686
+ initialEntitySelectorId?: string;
3593
3687
  initialChartType?: PieChartType;
3594
3688
  initialCategoryField?: string;
3595
3689
  initialValueField?: string;
@@ -3618,6 +3712,7 @@ declare class PieChartConfigDialogComponent implements OnInit, AfterViewInit {
3618
3712
  selectedPersistentQuery: PersistentQueryItem | null;
3619
3713
  /** Stream-data opt-out: when true the MeshBoard time filter is not bound to the query. */
3620
3714
  ignoreTimeFilter: boolean;
3715
+ entitySelectorId?: string;
3621
3716
  queryColumns: QueryColumnItem[];
3622
3717
  filters: FieldFilterItem[];
3623
3718
  filterVariables: FilterVariable[];
@@ -3638,6 +3733,8 @@ declare class PieChartConfigDialogComponent implements OnInit, AfterViewInit {
3638
3733
  get isValid(): boolean;
3639
3734
  /** Family of the currently selected query; drives the time-filter toggle's visibility. */
3640
3735
  get selectedQueryFamily(): QueryFamily | null;
3736
+ /** Entity selectors available on the current MeshBoard (for the scope picker). */
3737
+ get availableEntitySelectors(): EntitySelectorConfig[];
3641
3738
  ngOnInit(): Promise<void>;
3642
3739
  ngAfterViewInit(): Promise<void>;
3643
3740
  onDataSourceTypeChange(dataSourceType: DataSourceType): void;
@@ -3655,7 +3752,7 @@ declare class PieChartConfigDialogComponent implements OnInit, AfterViewInit {
3655
3752
  onSave(): void;
3656
3753
  onCancel(): void;
3657
3754
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PieChartConfigDialogComponent, never>;
3658
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PieChartConfigDialogComponent, "mm-pie-chart-config-dialog", never, { "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; }; "initialChartType": { "alias": "initialChartType"; "required": false; }; "initialCategoryField": { "alias": "initialCategoryField"; "required": false; }; "initialValueField": { "alias": "initialValueField"; "required": false; }; "initialShowLabels": { "alias": "initialShowLabels"; "required": false; }; "initialShowLegend": { "alias": "initialShowLegend"; "required": false; }; "initialLegendPosition": { "alias": "initialLegendPosition"; "required": false; }; "initialCkQueryTarget": { "alias": "initialCkQueryTarget"; "required": false; }; "initialCkGroupBy": { "alias": "initialCkGroupBy"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
3755
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PieChartConfigDialogComponent, "mm-pie-chart-config-dialog", never, { "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; }; "initialChartType": { "alias": "initialChartType"; "required": false; }; "initialCategoryField": { "alias": "initialCategoryField"; "required": false; }; "initialValueField": { "alias": "initialValueField"; "required": false; }; "initialShowLabels": { "alias": "initialShowLabels"; "required": false; }; "initialShowLegend": { "alias": "initialShowLegend"; "required": false; }; "initialLegendPosition": { "alias": "initialLegendPosition"; "required": false; }; "initialCkQueryTarget": { "alias": "initialCkQueryTarget"; "required": false; }; "initialCkGroupBy": { "alias": "initialCkGroupBy"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
3659
3756
  }
3660
3757
 
3661
3758
  /**
@@ -3762,6 +3859,8 @@ interface BarChartConfigResult extends WidgetConfigResult {
3762
3859
  queryName?: string;
3763
3860
  queryFamily?: QueryFamily;
3764
3861
  ignoreTimeFilter?: boolean;
3862
+ /** Asset-scope binding: id of the entity selector whose selection scopes the stream-data query. */
3863
+ entitySelectorId?: string;
3765
3864
  chartType: BarChartType;
3766
3865
  categoryField: string;
3767
3866
  series: BarChartSeries[];
@@ -3790,6 +3889,7 @@ declare class BarChartConfigDialogComponent implements OnInit {
3790
3889
  initialQueryName?: string;
3791
3890
  initialQueryFamily?: QueryFamily;
3792
3891
  initialIgnoreTimeFilter?: boolean;
3892
+ initialEntitySelectorId?: string;
3793
3893
  initialChartType?: BarChartType;
3794
3894
  initialCategoryField?: string;
3795
3895
  initialSeries?: BarChartSeries[];
@@ -3808,6 +3908,10 @@ declare class BarChartConfigDialogComponent implements OnInit {
3808
3908
  numericColumns: QueryColumnItem[];
3809
3909
  /** Per-widget opt-out of the MeshBoard time-filter → stream-data binding. */
3810
3910
  ignoreTimeFilter: boolean;
3911
+ /** Asset-scope binding: id of the entity selector whose selection scopes the stream-data query. */
3912
+ entitySelectorId?: string;
3913
+ /** Entity selectors available on the current MeshBoard (for the scope picker). */
3914
+ get availableEntitySelectors(): EntitySelectorConfig[];
3811
3915
  /** Family of the currently selected query — gates the time-filter opt-out toggle. */
3812
3916
  get selectedQueryFamily(): QueryFamily | null;
3813
3917
  filters: FieldFilterItem[];
@@ -3851,7 +3955,7 @@ declare class BarChartConfigDialogComponent implements OnInit {
3851
3955
  removeColorThreshold(index: number): void;
3852
3956
  onCancel(): void;
3853
3957
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarChartConfigDialogComponent, never>;
3854
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BarChartConfigDialogComponent, "mm-bar-chart-config-dialog", never, { "initialQueryRtId": { "alias": "initialQueryRtId"; "required": false; }; "initialQueryName": { "alias": "initialQueryName"; "required": false; }; "initialQueryFamily": { "alias": "initialQueryFamily"; "required": false; }; "initialIgnoreTimeFilter": { "alias": "initialIgnoreTimeFilter"; "required": false; }; "initialChartType": { "alias": "initialChartType"; "required": false; }; "initialCategoryField": { "alias": "initialCategoryField"; "required": false; }; "initialSeries": { "alias": "initialSeries"; "required": false; }; "initialSeriesGroupField": { "alias": "initialSeriesGroupField"; "required": false; }; "initialValueField": { "alias": "initialValueField"; "required": false; }; "initialShowLegend": { "alias": "initialShowLegend"; "required": false; }; "initialLegendPosition": { "alias": "initialLegendPosition"; "required": false; }; "initialShowDataLabels": { "alias": "initialShowDataLabels"; "required": false; }; "initialColorThresholds": { "alias": "initialColorThresholds"; "required": false; }; "initialDefaultBarColor": { "alias": "initialDefaultBarColor"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
3958
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BarChartConfigDialogComponent, "mm-bar-chart-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; }; "initialChartType": { "alias": "initialChartType"; "required": false; }; "initialCategoryField": { "alias": "initialCategoryField"; "required": false; }; "initialSeries": { "alias": "initialSeries"; "required": false; }; "initialSeriesGroupField": { "alias": "initialSeriesGroupField"; "required": false; }; "initialValueField": { "alias": "initialValueField"; "required": false; }; "initialShowLegend": { "alias": "initialShowLegend"; "required": false; }; "initialLegendPosition": { "alias": "initialLegendPosition"; "required": false; }; "initialShowDataLabels": { "alias": "initialShowDataLabels"; "required": false; }; "initialColorThresholds": { "alias": "initialColorThresholds"; "required": false; }; "initialDefaultBarColor": { "alias": "initialDefaultBarColor"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
3855
3959
  }
3856
3960
 
3857
3961
  /**
@@ -3860,8 +3964,14 @@ declare class BarChartConfigDialogComponent implements OnInit {
3860
3964
  interface LineSeriesData {
3861
3965
  name: string;
3862
3966
  data: (number | null)[];
3967
+ /** min/max envelope per category (downsampling only); rendered as a rangeArea band. */
3968
+ band?: ({
3969
+ from: number;
3970
+ to: number;
3971
+ } | null)[];
3863
3972
  unit?: string;
3864
3973
  axisName?: string;
3974
+ color?: string;
3865
3975
  }
3866
3976
  /**
3867
3977
  * Value axis configuration
@@ -3871,8 +3981,14 @@ interface ValueAxisConfig {
3871
3981
  unit: string;
3872
3982
  position: 'left' | 'right';
3873
3983
  }
3874
- declare class LineChartWidgetComponent implements DashboardWidget<LineChartWidgetConfig, LineSeriesData[]>, OnInit, OnChanges {
3984
+ declare class LineChartWidgetComponent implements DashboardWidget<LineChartWidgetConfig, LineSeriesData[]>, AfterViewInit, OnChanges, OnDestroy {
3875
3985
  private readonly queryExecutor;
3986
+ private readonly elementRef;
3987
+ private readonly ngZone;
3988
+ private resizeObserver?;
3989
+ private resizeTimer?;
3990
+ /** The downsampling `limit` used by the last load; 0 when the last load wasn't downsampled. */
3991
+ private lastLimit;
3876
3992
  private static readonly SUPPORTED_ROW_TYPES;
3877
3993
  private readonly stateService;
3878
3994
  private readonly variableService;
@@ -3883,11 +3999,17 @@ declare class LineChartWidgetComponent implements DashboardWidget<LineChartWidge
3883
3999
  private readonly _valueAxes;
3884
4000
  private readonly _error;
3885
4001
  private readonly _seriesUnitMap;
4002
+ private readonly _dataInfo;
3886
4003
  readonly isLoading: _angular_core.Signal<boolean>;
3887
4004
  readonly categories: _angular_core.Signal<string[]>;
3888
4005
  readonly seriesData: _angular_core.Signal<LineSeriesData[]>;
3889
4006
  readonly valueAxes: _angular_core.Signal<ValueAxisConfig[]>;
3890
4007
  readonly error: _angular_core.Signal<string | null>;
4008
+ readonly dataInfo: _angular_core.Signal<{
4009
+ rows: number;
4010
+ points: number;
4011
+ total: number;
4012
+ } | null>;
3891
4013
  readonly data: _angular_core.Signal<LineSeriesData[]>;
3892
4014
  readonly plotBands: _angular_core.Signal<{
3893
4015
  from: number;
@@ -3919,7 +4041,15 @@ declare class LineChartWidgetComponent implements DashboardWidget<LineChartWidge
3919
4041
  categoryLabelContent: (e: {
3920
4042
  value: string;
3921
4043
  }) => string;
3922
- ngOnInit(): void;
4044
+ ngAfterViewInit(): void;
4045
+ ngOnDestroy(): void;
4046
+ /**
4047
+ * FE-2: when the chart is resized so the pixel-derived bucket count would change materially
4048
+ * (>15%), re-query at the new resolution after a 300 ms debounce. Only relevant while
4049
+ * downsampling is active (lastLimit > 0); raw charts don't depend on width.
4050
+ */
4051
+ private setupResizeObserver;
4052
+ private onResize;
3923
4053
  ngOnChanges(changes: SimpleChanges): void;
3924
4054
  refresh(): void;
3925
4055
  hasValidConfig(): boolean;
@@ -3927,6 +4057,11 @@ declare class LineChartWidgetComponent implements DashboardWidget<LineChartWidge
3927
4057
  getUnitForSeries(seriesName: string): string;
3928
4058
  private loadData;
3929
4059
  private buildStreamDataArgs;
4060
+ /**
4061
+ * Bucket count for backend downsampling, sized to the rendered width (~1 bucket / 2 px),
4062
+ * clamped to [50, 4000]. Falls back to 1500 before the host has a measured width.
4063
+ */
4064
+ private computeDownsampleLimit;
3930
4065
  /**
3931
4066
  * Processes query rows into line chart data.
3932
4067
  * Groups by seriesGroupField, orders by categoryField (date), supports multi-axis by unitField.
@@ -3941,6 +4076,8 @@ declare class LineChartWidgetComponent implements DashboardWidget<LineChartWidge
3941
4076
  */
3942
4077
  private formatDateTime;
3943
4078
  private sanitizeAxisName;
4079
+ /** Parses a cell value to a number, or null when missing / non-numeric (renders as a gap). */
4080
+ private toNumber;
3944
4081
  private convertFiltersToDto;
3945
4082
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LineChartWidgetComponent, never>;
3946
4083
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<LineChartWidgetComponent, "mm-line-chart-widget", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
@@ -3954,6 +4091,8 @@ interface LineChartConfigResult extends WidgetConfigResult {
3954
4091
  queryName?: string;
3955
4092
  queryFamily?: QueryFamily;
3956
4093
  ignoreTimeFilter?: boolean;
4094
+ /** Asset-scope binding: id of the entity selector whose selection scopes the stream-data query. */
4095
+ entitySelectorId?: string;
3957
4096
  chartType: LineChartType;
3958
4097
  categoryField: string;
3959
4098
  seriesGroupField: string;
@@ -3979,6 +4118,7 @@ declare class LineChartConfigDialogComponent implements OnInit {
3979
4118
  initialQueryName?: string;
3980
4119
  initialQueryFamily?: QueryFamily;
3981
4120
  initialIgnoreTimeFilter?: boolean;
4121
+ initialEntitySelectorId?: string;
3982
4122
  initialChartType?: LineChartType;
3983
4123
  initialCategoryField?: string;
3984
4124
  initialSeriesGroupField?: string;
@@ -3997,6 +4137,10 @@ declare class LineChartConfigDialogComponent implements OnInit {
3997
4137
  nonNumericColumns: QueryColumnItem[];
3998
4138
  /** Per-widget opt-out of the MeshBoard time-filter → stream-data binding. */
3999
4139
  ignoreTimeFilter: boolean;
4140
+ /** Asset-scope binding: id of the entity selector whose selection scopes the stream-data query. */
4141
+ entitySelectorId?: string;
4142
+ /** Entity selectors available on the current MeshBoard (for the scope picker). */
4143
+ get availableEntitySelectors(): EntitySelectorConfig[];
4000
4144
  /** Family of the currently selected query — gates the time-filter opt-out toggle. */
4001
4145
  get selectedQueryFamily(): QueryFamily | null;
4002
4146
  filters: FieldFilterItem[];
@@ -4032,7 +4176,7 @@ declare class LineChartConfigDialogComponent implements OnInit {
4032
4176
  removeReferenceLine(index: number): void;
4033
4177
  onCancel(): void;
4034
4178
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LineChartConfigDialogComponent, never>;
4035
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LineChartConfigDialogComponent, "mm-line-chart-config-dialog", never, { "initialQueryRtId": { "alias": "initialQueryRtId"; "required": false; }; "initialQueryName": { "alias": "initialQueryName"; "required": false; }; "initialQueryFamily": { "alias": "initialQueryFamily"; "required": false; }; "initialIgnoreTimeFilter": { "alias": "initialIgnoreTimeFilter"; "required": false; }; "initialChartType": { "alias": "initialChartType"; "required": false; }; "initialCategoryField": { "alias": "initialCategoryField"; "required": false; }; "initialSeriesGroupField": { "alias": "initialSeriesGroupField"; "required": false; }; "initialValueField": { "alias": "initialValueField"; "required": false; }; "initialUnitField": { "alias": "initialUnitField"; "required": false; }; "initialShowLegend": { "alias": "initialShowLegend"; "required": false; }; "initialLegendPosition": { "alias": "initialLegendPosition"; "required": false; }; "initialShowMarkers": { "alias": "initialShowMarkers"; "required": false; }; "initialReferenceLines": { "alias": "initialReferenceLines"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
4179
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LineChartConfigDialogComponent, "mm-line-chart-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; }; "initialChartType": { "alias": "initialChartType"; "required": false; }; "initialCategoryField": { "alias": "initialCategoryField"; "required": false; }; "initialSeriesGroupField": { "alias": "initialSeriesGroupField"; "required": false; }; "initialValueField": { "alias": "initialValueField"; "required": false; }; "initialUnitField": { "alias": "initialUnitField"; "required": false; }; "initialShowLegend": { "alias": "initialShowLegend"; "required": false; }; "initialLegendPosition": { "alias": "initialLegendPosition"; "required": false; }; "initialShowMarkers": { "alias": "initialShowMarkers"; "required": false; }; "initialReferenceLines": { "alias": "initialReferenceLines"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
4036
4180
  }
4037
4181
 
4038
4182
  /**
@@ -4129,6 +4273,8 @@ interface HeatmapConfigResult extends WidgetConfigResult {
4129
4273
  queryName?: string;
4130
4274
  queryFamily?: QueryFamily;
4131
4275
  ignoreTimeFilter?: boolean;
4276
+ /** Asset-scope binding: id of the entity selector whose selection scopes the stream-data query. */
4277
+ entitySelectorId?: string;
4132
4278
  dateField: string;
4133
4279
  dateEndField?: string;
4134
4280
  valueField?: string;
@@ -4151,6 +4297,7 @@ declare class HeatmapConfigDialogComponent implements OnInit {
4151
4297
  initialQueryName?: string;
4152
4298
  initialQueryFamily?: QueryFamily;
4153
4299
  initialIgnoreTimeFilter?: boolean;
4300
+ initialEntitySelectorId?: string;
4154
4301
  initialDateField?: string;
4155
4302
  initialDateEndField?: string;
4156
4303
  initialValueField?: string;
@@ -4166,6 +4313,7 @@ declare class HeatmapConfigDialogComponent implements OnInit {
4166
4313
  isLoadingColumns: boolean;
4167
4314
  selectedPersistentQuery: PersistentQueryItem | null;
4168
4315
  ignoreTimeFilter: boolean;
4316
+ entitySelectorId?: string;
4169
4317
  queryColumns: QueryColumnItem[];
4170
4318
  numericColumns: QueryColumnItem[];
4171
4319
  dateTimeColumns: QueryColumnItem[];
@@ -4201,6 +4349,8 @@ declare class HeatmapConfigDialogComponent implements OnInit {
4201
4349
  valueMultiplier: number;
4202
4350
  };
4203
4351
  get isValid(): boolean;
4352
+ /** Entity selectors available on the current MeshBoard (for the scope picker). */
4353
+ get availableEntitySelectors(): EntitySelectorConfig[];
4204
4354
  get selectedQueryFamily(): QueryFamily | null;
4205
4355
  ngOnInit(): Promise<void>;
4206
4356
  onQuerySelected(query: PersistentQueryItem | null): Promise<void>;
@@ -4215,7 +4365,7 @@ declare class HeatmapConfigDialogComponent implements OnInit {
4215
4365
  onSave(): void;
4216
4366
  onCancel(): void;
4217
4367
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeatmapConfigDialogComponent, never>;
4218
- 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; }; "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; }; "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>;
4368
+ 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; }; "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>;
4219
4369
  }
4220
4370
 
4221
4371
  interface StatValue {
@@ -5172,6 +5322,10 @@ declare class EntitySelectorEditorComponent {
5172
5322
  protected editMappings: EntitySelectorAttributeMapping[];
5173
5323
  protected editShowInToolbar: boolean;
5174
5324
  protected editDefaultRtId: string;
5325
+ protected editChildScopeTargetCkTypeId: string;
5326
+ protected editChildScopeTargetCkTypeItem: CkTypeSelectorItem | null;
5327
+ protected editChildScopeRoleId: string;
5328
+ protected editChildScopeDirection: 'in' | 'out';
5175
5329
  protected defaultEntityDataSource: RuntimeEntitySelectDataSource$1 | null;
5176
5330
  protected defaultEntityDialogDataSource: RuntimeEntityDialogDataSource$1 | null;
5177
5331
  /**
@@ -5198,6 +5352,14 @@ declare class EntitySelectorEditorComponent {
5198
5352
  * Opens the attribute selector dialog to pick attributes for variable mappings.
5199
5353
  */
5200
5354
  selectAttributes(): Promise<void>;
5355
+ /**
5356
+ * Handles child-scope target CK type selection.
5357
+ */
5358
+ onChildScopeCkTypeSelected(ckType: CkTypeSelectorItem): void;
5359
+ /**
5360
+ * Handles child-scope target CK type cleared.
5361
+ */
5362
+ onChildScopeCkTypeCleared(): void;
5201
5363
  /**
5202
5364
  * Handles default entity selection from the entity picker.
5203
5365
  */
@@ -5626,6 +5788,16 @@ declare class MeshBoardViewComponent implements OnInit, OnDestroy, HasUnsavedCha
5626
5788
  * Resolves variables for an entity selector by fetching entity attributes.
5627
5789
  */
5628
5790
  private resolveEntitySelectorVariables;
5791
+ /**
5792
+ * Resolves the set of source rtIds that a stream-data widget bound to this
5793
+ * selector should be scoped to, and caches them on the state service.
5794
+ *
5795
+ * When the selector defines a {@link EntitySelectorChildScope}, the picked
5796
+ * entity's children of `targetCkTypeId` reached via `roleId`/`direction`
5797
+ * become the scope (e.g. MeteringPoint → its EnergyMeasurement rtIds). With
5798
+ * no childScope, the picked entity's own rtId is the scope (direct keying).
5799
+ */
5800
+ private resolveEntitySelectorScopeRtIds;
5629
5801
  /**
5630
5802
  * Writes entity selector selections to URL query parameters.
5631
5803
  * Format: es_<selectorId>=<rtId>
@@ -5904,4 +6076,4 @@ declare class MeshBoardManagerDialogComponent implements OnInit {
5904
6076
  }
5905
6077
 
5906
6078
  export { AddWidgetDialogComponent, AiInsightsConfigDialogComponent, AiInsightsService, AiInsightsWidgetComponent, AlertBannerConfigDialogComponent, AlertBannerWidgetComponent, AlertListConfigDialogComponent, AlertListWidgetComponent, AssociationsConfigDialogComponent, AutoRefreshTimerService, BarChartConfigDialogComponent, BarChartWidgetComponent, DashboardDataService, DashboardGridService, EditModeStateService, EditWidgetDialogComponent, EntityAssociationsWidgetComponent, EntityCardConfigDialogComponent, EntityCardWidgetComponent, EntityDetailDialogComponent, EntitySelectorEditorComponent, EntitySelectorToolbarComponent, GaugeConfigDialogComponent, GaugeWidgetComponent, HeatmapConfigDialogComponent, HeatmapWidgetComponent, KpiConfigDialogComponent, KpiWidgetComponent, LineChartConfigDialogComponent, LineChartWidgetComponent, MESHBOARD_OPTIONS, MESHBOARD_TENANT_ID_PROVIDER, MarkdownConfigDialogComponent, MarkdownWidgetComponent, MeshBoardDataService, MeshBoardGridService, MeshBoardManagerDialogComponent, MeshBoardPersistenceService, MeshBoardSettingsDialogComponent, MeshBoardSettingsResult, MeshBoardStateService, MeshBoardViewComponent, PieChartConfigDialogComponent, PieChartWidgetComponent, QueryExecutorService, QuerySelectorComponent, RuntimeEntitySelectorComponent, ServiceHealthConfigDialogComponent, ServiceHealthWidgetComponent, StatsGridConfigDialogComponent, StatsGridWidgetComponent, StatusIndicatorConfigDialogComponent, StatusIndicatorWidgetComponent, StatusListConfigDialogComponent, StatusListWidgetComponent, SummaryCardConfigDialogComponent, SummaryCardWidgetComponent, TableConfigDialogComponent, TableWidgetComponent, TableWidgetDataSourceDirective, WidgetFactoryService, WidgetGroupComponent, WidgetGroupConfigDialogComponent, WidgetNotConfiguredComponent, WidgetRegistryService, classifyQuery, provideDefaultWidgets, provideMeshBoard, provideProcessWidget, provideWidgetRegistrations, queryFamily, registerDefaultWidgets, registerProcessWidget };
5907
- export type { AggregationDataSource, AggregationQuery, AggregationType, AiInsightsConfigResult, AiInsightsWidgetConfig, AlertBannerConfigResult, AlertBannerWidgetConfig, AlertListConfigResult, AlertListWidgetConfig, AnyWidgetConfig, AssociationsConfigResult, BarChartColorThreshold, BarChartConfigResult, BarChartSeries, BarChartType, BarChartWidgetConfig, BaseWidgetConfig, CategoryValueItem, ChartReferenceLine, CkQueryResult, CkQueryTarget, CkTypeAttributeInfo, ConfigDialogResult, ConfigResultApplier, ConstructionKitQueryDataSource, DashboardConfig, DashboardWidget, DataSource, DataSourceType, DiagramPropertyMapping, EntityAssociation, EntityAttribute, EntityCardConfigResult, EntityCardWidgetConfig, EntityListWidget, EntitySelectorAttributeMapping, EntitySelectorClearEvent, EntitySelectorConfig, EntitySelectorEvent, EntityWidget, EntityWithAssociationsWidgetConfig, GaugeConfigResult, GaugeRange, GaugeType, GaugeWidgetConfig, GridCell, GridPosition, GroupChildWidgetType, GroupedDataItem, HeatmapAggregation, HeatmapColorScheme, HeatmapConfigResult, HeatmapWidgetConfig, KpiConfigResult, KpiDataSourceType, KpiQueryMode, KpiWidgetConfig, LineChartConfigResult, LineChartType, LineChartWidgetConfig, MarkdownConfigResult, MarkdownTextAlign, MarkdownWidgetConfig, MeshBoardConfig, MeshBoardOptions, MeshBoardTimeFilterConfig, MeshBoardVariable, MeshBoardVariableSource, MeshBoardVariableType, ParentAssociationMode, PersistedDashboard, PersistedMeshBoard, PersistedWidget, PersistedWidgetData, PersistentQueryDataSource, PersistentQueryItem, PieChartConfigResult, PieChartType, PieChartWidgetConfig, ProcessWidgetConfig, Quarter, QueryCell, QueryClassification, QueryColumn, QueryColumnInfo, QueryColumnItem, QueryExecutionOptions, QueryExecutionResult, QueryFamily, QueryKind, QueryResultRow, RelativeTimeUnit, RepeaterDataItem, RepeaterQueryDataSource, RuntimeEntityData, RuntimeEntityDataSource, RuntimeEntitySelectorValue, ServiceCallDataSource, ServiceCallType, ServiceHealthConfigResult, ServiceHealthWidgetConfig, StatColor, StatItem, StaticDataSource, StatsGridConfigResult, StatsGridWidgetConfig, StatusIndicatorConfigResult, StatusIndicatorWidgetConfig, StatusListConfigResult, StatusListWidgetConfig, StreamDataExecutionArgs, SummaryCardConfigResult, SummaryCardTile, SummaryCardWidgetConfig, TableColumn, TableColumnStatusIconMapping, TableConfigResult, TableFilterConfig, TableSortConfig, TableWidgetConfig, TargetEntityWithAttributes, TimeRangePickerConfig, TimeRangeSelection, TimeRangeType, UpdateDashboardResult, VariableResolutionError, WidgetConfig, WidgetConfigDialog, WidgetConfigDialogSize, WidgetConfigResult, WidgetCreationOptions, WidgetDataSource, WidgetFilterConfig, WidgetGroupAttributeMappings, WidgetGroupChildTemplate, WidgetGroupConfig, WidgetGroupConfigResult, WidgetGroupLayout, WidgetPersistenceData, WidgetPositionUpdate, WidgetRegistration, WidgetType, WidgetZone };
6079
+ export type { AggregationDataSource, AggregationQuery, AggregationType, AiInsightsConfigResult, AiInsightsWidgetConfig, AlertBannerConfigResult, AlertBannerWidgetConfig, AlertListConfigResult, AlertListWidgetConfig, AnyWidgetConfig, AssociationsConfigResult, BarChartColorThreshold, BarChartConfigResult, BarChartSeries, BarChartType, BarChartWidgetConfig, BaseWidgetConfig, CategoryValueItem, ChartReferenceLine, CkQueryResult, CkQueryTarget, CkTypeAttributeInfo, ConfigDialogResult, ConfigResultApplier, ConstructionKitQueryDataSource, DashboardConfig, DashboardWidget, DataSource, DataSourceType, DiagramPropertyMapping, EntityAssociation, EntityAttribute, EntityCardConfigResult, EntityCardWidgetConfig, EntityListWidget, EntitySelectorAttributeMapping, EntitySelectorChildScope, EntitySelectorClearEvent, EntitySelectorConfig, EntitySelectorEvent, EntityWidget, EntityWithAssociationsWidgetConfig, GaugeConfigResult, GaugeRange, GaugeType, GaugeWidgetConfig, GridCell, GridPosition, GroupChildWidgetType, GroupedDataItem, HeatmapAggregation, HeatmapColorScheme, HeatmapConfigResult, HeatmapWidgetConfig, KpiConfigResult, KpiDataSourceType, KpiQueryMode, KpiWidgetConfig, LineChartConfigResult, LineChartType, LineChartWidgetConfig, MarkdownConfigResult, MarkdownTextAlign, MarkdownWidgetConfig, MeshBoardConfig, MeshBoardOptions, MeshBoardTimeFilterConfig, MeshBoardVariable, MeshBoardVariableSource, MeshBoardVariableType, ParentAssociationMode, PersistedDashboard, PersistedMeshBoard, PersistedWidget, PersistedWidgetData, PersistentQueryDataSource, PersistentQueryItem, PieChartConfigResult, PieChartType, PieChartWidgetConfig, ProcessWidgetConfig, Quarter, QueryCell, QueryClassification, QueryColumn, QueryColumnInfo, QueryColumnItem, QueryExecutionOptions, QueryExecutionResult, QueryFamily, QueryKind, QueryResultRow, RelativeTimeUnit, RepeaterDataItem, RepeaterQueryDataSource, RuntimeEntityData, RuntimeEntityDataSource, RuntimeEntitySelectorValue, ServiceCallDataSource, ServiceCallType, ServiceHealthConfigResult, ServiceHealthWidgetConfig, StatColor, StatItem, StaticDataSource, StatsGridConfigResult, StatsGridWidgetConfig, StatusIndicatorConfigResult, StatusIndicatorWidgetConfig, StatusListConfigResult, StatusListWidgetConfig, StreamDataExecutionArgs, SummaryCardConfigResult, SummaryCardTile, SummaryCardWidgetConfig, TableColumn, TableColumnStatusIconMapping, TableConfigResult, TableFilterConfig, TableSortConfig, TableWidgetConfig, TargetEntityWithAttributes, TimeRangePickerConfig, TimeRangeSelection, TimeRangeType, UpdateDashboardResult, VariableResolutionError, WidgetConfig, WidgetConfigDialog, WidgetConfigDialogSize, WidgetConfigResult, WidgetCreationOptions, WidgetDataSource, WidgetFilterConfig, WidgetGroupAttributeMappings, WidgetGroupChildTemplate, WidgetGroupConfig, WidgetGroupConfigResult, WidgetGroupLayout, WidgetPersistenceData, WidgetPositionUpdate, WidgetRegistration, WidgetType, WidgetZone };