@hestia-earth/ui-components 0.43.22 → 0.43.24

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.
@@ -3,17 +3,17 @@ import { Signal, InjectionToken, OnInit, OnDestroy, ElementRef, TemplateRef, Pip
3
3
  import * as _angular_forms from '@angular/forms';
4
4
  import { ControlValueAccessor as ControlValueAccessor$1, FormControl } from '@angular/forms';
5
5
  import * as _hestia_earth_schema from '@hestia-earth/schema';
6
- import { Source, Bibliography, TermTermType, blankNodesType, Term, Indicator, ITermJSONLD, EmissionMethodTier, ICycleJSONLD, IImpactAssessmentJSONLD, ISiteJSONLD, Animal, Transformation, blankNodesKey, NodeType, NonBlankNodesKey, Emission, CycleFunctionalUnit, BlankNodesKey, Practice, Input, Product, SchemaType, SiteSiteType, JSONLD, JSON, ISourceJSONLD, IndicatorMethodTier, sortConfig, Infrastructure, nonBlankNodesType, nonBlankNodesKey, Property, Measurement, Site, IOrganisationJSONLD, Organisation } from '@hestia-earth/schema';
7
- import * as chart_js from 'chart.js';
8
- import { Chart, BarOptions, Plugin, ChartEvent, Color, ChartDataset, Scale, ChartConfiguration, ChartComponentLike, ChartData, ActiveElement } from 'chart.js';
6
+ import { Source, Bibliography, TermTermType, blankNodesType, Term, Indicator, ITermJSONLD, EmissionMethodTier, ICycleJSONLD, IImpactAssessmentJSONLD, ISiteJSONLD, Animal, Transformation, blankNodesKey, NodeType, NonBlankNodesKey, Emission, CycleFunctionalUnit, BlankNodesKey, Practice, Input, Product, SchemaType, SiteSiteType, JSONLD, JSON, IndicatorMethodTier, sortConfig, Infrastructure, nonBlankNodesType, nonBlankNodesKey, Property, ISourceJSONLD, Measurement, Site, IOrganisationJSONLD, Organisation } from '@hestia-earth/schema';
7
+ import * as _hestia_earth_ui_components_charts from '@hestia-earth/ui-components-charts';
8
+ import { AxisLabelEvent, AxisHoverSettings, ChartExportMetadata, BarChartDataItem, ContributionTooltipData, ContributionChartDataItem, AfterBarDrawSettings, IEmissionCategory, ITermMapping, IChartData, IContributionLog, contributions, INodeContributions } from '@hestia-earth/ui-components-charts';
9
+ export { AfterBarDrawSettings, AxisHoverSettings, AxisLabelEvent, BarChartDataItem, ChartExportMetadata, ColorPalette, ContributionChartDataItem, ContributionTooltipData, HistogramChartDataItem, IContributionCategory, IEmissionCategory, INodeContributions, LollipopPluginSettings, RgbColor, afterBarDrawPlugin, axisHoverPlugin, axisLabelCursor, backgroundHoverPlugin, chartLabelMaxLength, colorToRgba, contributions, convertToSvg, d3ellipse, d3wrap, defaultTicksFont, downloadFile, downloadPng, downloadSvg, exportAsSVG, getColor, groupDataByCategory, hexToRgba, increaseScaleLimits, listColor, listColorContinuous, listColorWithAlpha, lollipopChartPlugin, parseColor, registerChart, sumValues } from '@hestia-earth/ui-components-charts';
9
10
  import { PlacementArray } from '@ng-bootstrap/ng-bootstrap';
11
+ import * as chart_js from 'chart.js';
12
+ import { ChartConfiguration, Chart, ChartData, ChartDataset, ChartEvent, ActiveElement } from 'chart.js';
10
13
  import * as rxjs from 'rxjs';
11
14
  import { Observable, ReplaySubject } from 'rxjs';
12
15
  import * as node_modules_chart_js_dist_types_basic from 'node_modules/chart.js/dist/types/basic';
13
- import * as chartjs_plugin_annotation from 'chartjs-plugin-annotation';
14
- import { AnnotationOptions } from 'chartjs-plugin-annotation';
15
16
  import * as node_modules_chart_js_dist_types_utils from 'node_modules/chart.js/dist/types/utils';
16
- import { Selection } from 'd3-selection';
17
17
  import { HttpClient, HttpHeaders } from '@angular/common/http';
18
18
  import { propertyValueType } from '@hestia-earth/utils/term';
19
19
  import * as _hestia_earth_engine_models from '@hestia-earth/engine-models';
@@ -36,6 +36,7 @@ import * as _angular_cdk_overlay from '@angular/cdk/overlay';
36
36
  import { ConnectedPosition } from '@angular/cdk/overlay';
37
37
  import { ResizeEvent } from 'angular-resizable-element';
38
38
  import { IFormula } from '@hestia-earth/aggregation-engine';
39
+ import * as chartjs_plugin_annotation from 'chartjs-plugin-annotation';
39
40
  export * from '@hestia-earth/ui-components/katex';
40
41
 
41
42
  declare class HeAuthService {
@@ -81,80 +82,6 @@ declare class BibliographiesSearchConfirmComponent {
81
82
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BibliographiesSearchConfirmComponent, "he-bibliographies-search-confirm", never, { "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchSources": { "alias": "searchSources"; "required": false; "isSignal": true; }; "searchBibliographies": { "alias": "searchBibliographies"; "required": false; "isSignal": true; }; "searchBy": { "alias": "searchBy"; "required": false; "isSignal": true; }; }, { "search": "searchChange"; "searchSources": "searchSourcesChange"; "searchBibliographies": "searchBibliographiesChange"; "searchBy": "searchByChange"; "closed": "closed"; }, never, never, true, never>;
82
83
  }
83
84
 
84
- type placement = 'left' | 'right';
85
- type positionFn = (n: number, index: number, width: number, chart: Chart, data?: number | number[], placement?: placement) => number;
86
- interface AfterBarDrawSettings {
87
- placement?: placement;
88
- xPosFn?: positionFn;
89
- yPosFn?: positionFn;
90
- colorFn?: (m: BarOptions, index: number, chart: Chart, data?: number) => string;
91
- textFn?: (m: {
92
- label: string;
93
- data: number | number[];
94
- }, index: number, chart: Chart) => string | [string, string];
95
- font?: string;
96
- maxWidth?: number;
97
- emptyValueLabel?: string;
98
- }
99
- declare const afterBarDrawPlugin: (settings?: AfterBarDrawSettings) => Plugin;
100
-
101
- interface AxisLabelEvent {
102
- label: string;
103
- index: number;
104
- /**
105
- * The middle of the label column at the bottom edge of the row — the point a tooltip should hang
106
- * off. Anchoring on the pointer instead puts the tooltip on the label being read, because a row
107
- * is entered at the top of its hit band when the pointer is moving down.
108
- */
109
- anchorX: number;
110
- anchorY: number;
111
- event: ChartEvent;
112
- }
113
- interface AxisHoverSettings {
114
- onHoverLabel?: (data: AxisLabelEvent) => void;
115
- onClickLabel?: (data: AxisLabelEvent) => void;
116
- maxDistance?: number;
117
- }
118
- /**
119
- * Hover handler turning the pointer into a cursor over a clickable axis label.
120
- */
121
- declare const axisLabelCursor: ({ label, event }: AxisLabelEvent) => void;
122
- declare const axisHoverPlugin: Plugin;
123
-
124
- interface IBackgroundHoverSettings {
125
- threshold?: number;
126
- }
127
- declare const backgroundHoverPlugin: (settings?: IBackgroundHoverSettings) => {
128
- id: string;
129
- afterEvent: (chart: Chart, args: {
130
- event: ChartEvent;
131
- changed?: boolean;
132
- }) => void;
133
- beforeDraw: (chart: Chart) => void;
134
- };
135
-
136
- type colorFn = (m: BarOptions, index: number) => Color;
137
- type positionIndexFn = (x: number, y: number) => number;
138
- type isMouseInsideLollipopFn = (fn: positionIndexFn) => void;
139
- type valueFn = (dataset: ChartDataset, index: number, chart: Chart) => number | undefined | null;
140
- interface LollipopPluginSettings {
141
- circleRadius?: number;
142
- /**
143
- * Use when connecting 2 lollipops.
144
- */
145
- lineWidth?: number;
146
- colorFn?: colorFn;
147
- isMouseInsideLollipopFn?: isMouseInsideLollipopFn;
148
- /**
149
- * By default, lollipops will be drawn where the value is (or start/end when 2 values are used).
150
- * Use this function to return a specific value where the lollipop should be drawn.
151
- */
152
- valueFn?: valueFn;
153
- }
154
- declare const lollipopChartPlugin: (settings?: LollipopPluginSettings) => Plugin;
155
-
156
- declare const increaseScaleLimits: (scale: Scale, handleMinScaleZero?: boolean) => void;
157
-
158
85
  type chartTooltipContentFn<T> = (data: T) => string;
159
86
  interface ITooltipOptions {
160
87
  tooltipClass?: string;
@@ -182,25 +109,6 @@ type axisLabelClickFn = (index: number) => void;
182
109
  */
183
110
  declare const axisLabelSettings: (tooltip: () => ChartTooltipComponent<AxisLabelEvent>, tooltipFn: () => axisLabelTooltipFn, clickFn: () => axisLabelClickFn) => AxisHoverSettings;
184
111
 
185
- interface ChartExportMetadata {
186
- title?: string;
187
- fileName?: string;
188
- width?: number;
189
- height?: number;
190
- units?: string;
191
- lollipopConfig?: Omit<LollipopPluginSettings, 'isMouseInsideLollipopFn'>;
192
- afterBarDrawConfig?: AfterBarDrawSettings | AfterBarDrawSettings[];
193
- }
194
- declare const convertToSvg: (config: Partial<ChartConfiguration>, metadata?: ChartExportMetadata) => Promise<string>;
195
- declare const exportAsSVG: (config: Partial<ChartConfiguration>, metadata: ChartExportMetadata) => Promise<void>;
196
- declare const downloadSvg: (svgElement: HTMLElement) => void;
197
- declare const downloadPng: (svgElement: HTMLElement, { width, height }?: {
198
- width?: number;
199
- height?: number;
200
- }) => Promise<void>;
201
-
202
- declare const registerChart: (items?: ChartComponentLike[]) => () => void;
203
-
204
112
  declare class ChartConfigurationDirective {
205
113
  private readonly _elementRef;
206
114
  private _chart;
@@ -228,14 +136,6 @@ declare class ChartConfigurationDirective {
228
136
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ChartConfigurationDirective, "[chartConfiguration]", ["chart"], { "chartConfiguration": { "alias": "chartConfiguration"; "required": false; "isSignal": true; }; "chartContainer": { "alias": "chartContainer"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
229
137
  }
230
138
 
231
- declare const defaultTicksFont: {
232
- family: string;
233
- size: number;
234
- };
235
- /**
236
- * Maximum length of an axis label, past which the charts truncate it.
237
- */
238
- declare const chartLabelMaxLength = 50;
239
139
  declare class ChartComponent {
240
140
  protected readonly data: _angular_core.InputSignal<ChartData<keyof chart_js.ChartTypeRegistry, (number | [number, number] | chart_js.Point | chart_js.BubbleDataPoint)[], unknown>>;
241
141
  protected readonly config: _angular_core.InputSignal<Partial<ChartConfiguration<keyof chart_js.ChartTypeRegistry, (number | [number, number] | chart_js.Point | chart_js.BubbleDataPoint)[], unknown>>>;
@@ -294,14 +194,6 @@ declare class ResponsiveService {
294
194
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ResponsiveService>;
295
195
  }
296
196
 
297
- interface BarChartDataItem {
298
- label?: string;
299
- count?: number;
300
- color?: string;
301
- backgroundColor?: string;
302
- borderColor?: string;
303
- includedItems?: BarChartDataItem[];
304
- }
305
197
  declare class BarChartComponent {
306
198
  protected readonly responsiveService: ResponsiveService;
307
199
  /**
@@ -468,52 +360,6 @@ declare class ChartExportButtonComponent {
468
360
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartExportButtonComponent, "he-chart-export-button", never, { "buttonClass": { "alias": "buttonClass"; "required": false; "isSignal": true; }; "chart": { "alias": "chart"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "exportFormats": { "alias": "exportFormats"; "required": false; "isSignal": true; }; "chartExportFn": { "alias": "chartExportFn"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
469
361
  }
470
362
 
471
- interface ContributionChartDataItem {
472
- id?: string;
473
- label: string;
474
- values: number[];
475
- color?: string;
476
- backgroundColor?: string;
477
- borderColor?: string;
478
- includedItems?: ContributionChartDataItem[];
479
- }
480
- interface ContributionTooltipData {
481
- label: string;
482
- units: string;
483
- values: (ContributionChartDataItem & {
484
- value: number;
485
- })[];
486
- selectedLabel?: string;
487
- }
488
- /**
489
- * The subset of the `CyclesEmissionsCategoryService` needed to group the data.
490
- */
491
- interface IContributionCategory {
492
- emissionCategoryValue: (emissionId: string, category: string) => string;
493
- categoryLabel: (key: string) => string;
494
- }
495
- /**
496
- * Sum the values of every item of a group, skipping the items without a value at this index.
497
- *
498
- * An item has no value when the Node does not contain that Emission at all, which is not the same as a `0` value:
499
- * summing it as `NaN` would silently hide the whole group from the chart. When no item of the group has a value,
500
- * `undefined` is returned so the chart displays "No data", like it does when the data is not grouped.
501
- *
502
- * @param values The values of every item of the group, at a single index.
503
- * @returns The sum, or `undefined` when no item has a value.
504
- */
505
- declare const sumValues: (values: number[]) => number;
506
- /**
507
- * Group the contribution data by Category, summing the values of every Emission of the same Category.
508
- *
509
- * @param data The contribution data, one item per Emission.
510
- * @param labels The labels of the chart, one per Node compared.
511
- * @param category The Category to group by. When empty, the data is returned as-is.
512
- * @param service Used to resolve the Category of an Emission and its label.
513
- * @returns The data grouped by Category, or the original data when grouping is not needed.
514
- */
515
- declare const groupDataByCategory: (data: ContributionChartDataItem[], labels: string[], category: string, { emissionCategoryValue, categoryLabel }: IContributionCategory) => ContributionChartDataItem[];
516
-
517
363
  declare class ContributionChartComponent {
518
364
  private readonly emissionCategoryService;
519
365
  private readonly responsiveService;
@@ -565,7 +411,6 @@ declare class ContributionChartComponent {
565
411
  protected readonly axisTooltipContent: _angular_core.Signal<(data: AxisLabelEvent) => string>;
566
412
  readonly exporting: _angular_core.Signal<boolean>;
567
413
  protected readonly chartHeight: _angular_core.Signal<number>;
568
- private readonly hasNegativeContributions;
569
414
  protected readonly displayData: _angular_core.Signal<ContributionChartDataItem[]>;
570
415
  private readonly defaultConfig;
571
416
  readonly dataConfig: _angular_core.Signal<{
@@ -636,7 +481,7 @@ declare class ContributionChartComponent {
636
481
  };
637
482
  }> & {
638
483
  options: {
639
- onClick: (event: ChartEvent, activeElements: ActiveElement[], chart: Chart<keyof chart_js.ChartTypeRegistry, (number | [number, number] | chart_js.Point | chart_js.BubbleDataPoint)[], unknown>) => void;
484
+ onClick: (event: ChartEvent, activeElements: ActiveElement[], chart: Chart) => void;
640
485
  plugins: any;
641
486
  scales: {
642
487
  x: {
@@ -673,13 +518,7 @@ declare class ContributionChartComponent {
673
518
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ContributionChartComponent, "he-contribution-chart", ["contributionChart"], { "data": { "alias": "data"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showExportButton": { "alias": "showExportButton"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "axisTooltipFn": { "alias": "axisTooltipFn"; "required": false; "isSignal": true; }; "axisLabelClickFn": { "alias": "axisLabelClickFn"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "category": { "alias": "category"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
674
519
  }
675
520
 
676
- interface HistogramChartDataItem {
677
- label: string;
678
- values: number[];
679
- color?: string;
680
- backgroundColor?: string;
681
- borderColor?: string;
682
- }
521
+ /** A distribution as a histogram, or as a normal curve; drawn from `@hestia-earth/ui-components-charts`. */
683
522
  declare class DistributionChartComponent {
684
523
  /**
685
524
  * Distribution values.
@@ -725,123 +564,9 @@ declare class DistributionChartComponent {
725
564
  * for a physical amount. Left unset the curve is drawn symmetrically about `mu`.
726
565
  */
727
566
  protected readonly minX: _angular_core.InputSignal<number>;
728
- /**
729
- * `sd` must be strictly positive: a zero or negative deviation makes the PDF a division by zero.
730
- */
731
- private readonly parametric;
732
- private readonly curve;
733
- private readonly maxPercentileValue;
734
- private readonly groupedData;
735
- private readonly singlePoint;
736
- private readonly defaultConfig;
737
- /**
738
- * The x axis is `linear` here, not the category axis the histogram uses: the curve is `{x, y}`
739
- * points, and the annotations position the interval and the marker at real x values.
740
- */
741
- private readonly parametricConfig;
742
- private readonly histogramData;
743
- private readonly parametricData;
744
- protected readonly dataConfig: _angular_core.Signal<ChartData<"line" | "bar", (number | [number, number] | chart_js.Point)[], unknown>>;
745
- protected readonly configuration: _angular_core.Signal<Readonly<{
746
- type: "line";
747
- options: {
748
- events: any[];
749
- responsive: true;
750
- plugins: {
751
- tooltip: {
752
- enabled: false;
753
- };
754
- legend: {
755
- display: false;
756
- align: "center";
757
- };
758
- };
759
- scales: {
760
- y: {
761
- display: true;
762
- position: "left";
763
- grid: {
764
- display: true;
765
- };
766
- beginAtZero: true;
767
- ticks: {
768
- crossAlign: "center";
769
- };
770
- };
771
- };
772
- };
773
- }> & (({
774
- options: {
775
- scales: {
776
- x: {
777
- display: true;
778
- grid: {
779
- offset: true;
780
- };
781
- min: number;
782
- ticks: {
783
- callback: (this: chart_js.Scale, value: string | number) => string;
784
- };
785
- title: {
786
- display: true;
787
- text: string;
788
- };
789
- };
790
- y: {
791
- ticks: {
792
- font: {
793
- family: string;
794
- size: number;
795
- weight: number;
796
- };
797
- color: string;
798
- };
799
- title: {
800
- display: true;
801
- text: string;
802
- };
803
- };
804
- };
805
- };
806
- } | {
807
- options: {
808
- plugins: {
809
- annotation: {
810
- annotations: Record<string, AnnotationOptions>;
811
- };
812
- };
813
- scales: {
814
- x: {
815
- type: "linear";
816
- display: true;
817
- ticks: {
818
- font: {
819
- family: string;
820
- size: number;
821
- weight: number;
822
- };
823
- color: string;
824
- callback: (this: chart_js.Scale, value: string | number) => string;
825
- };
826
- title: {
827
- display: true;
828
- text: string;
829
- };
830
- };
831
- y: {
832
- ticks: {
833
- display: false;
834
- };
835
- grid: {
836
- display: false;
837
- };
838
- title: {
839
- display: false;
840
- };
841
- };
842
- };
843
- };
844
- }) & Partial<ChartConfiguration<keyof chart_js.ChartTypeRegistry, (number | [number, number] | chart_js.Point | chart_js.BubbleDataPoint)[], unknown>>)>;
567
+ private readonly chart;
568
+ protected readonly dataConfig: _angular_core.Signal<ChartData<"bar" | "line", (number | [number, number] | chart_js.Point)[], unknown>>;
569
+ protected readonly configuration: _angular_core.Signal<Partial<ChartConfiguration<keyof chart_js.ChartTypeRegistry, (number | [number, number] | chart_js.Point | chart_js.BubbleDataPoint)[], unknown>>>;
845
570
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DistributionChartComponent, never>;
846
571
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DistributionChartComponent, "he-distribution-chart", ["distributionChart"], { "distribution": { "alias": "distribution"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "nbBins": { "alias": "nbBins"; "required": false; "isSignal": true; }; "maxPercentile": { "alias": "maxPercentile"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "mu": { "alias": "mu"; "required": false; "isSignal": true; }; "sd": { "alias": "sd"; "required": false; "isSignal": true; }; "intervalMin": { "alias": "intervalMin"; "required": false; "isSignal": true; }; "intervalMax": { "alias": "intervalMax"; "required": false; "isSignal": true; }; "minX": { "alias": "minX"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
847
572
  }
@@ -1006,25 +731,9 @@ declare class HorizontalBarChartComponent extends BarChartComponent {
1006
731
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<HorizontalBarChartComponent, "he-horizontal-bar-chart", ["horizontalBarChart"], { "tooltipFn": { "alias": "tooltipFn"; "required": false; "isSignal": true; }; "afterBarDrawSettings": { "alias": "afterBarDrawSettings"; "required": false; "isSignal": true; }; "axisTooltipFn": { "alias": "axisTooltipFn"; "required": false; "isSignal": true; }; "axisLabelClickFn": { "alias": "axisLabelClickFn"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1007
732
  }
1008
733
 
1009
- declare enum ColorPalette {
1010
- categorial = 0,
1011
- continuous = 1,
1012
- divergent = 2
1013
- }
1014
- declare const getColor: (index: number, scheme?: ColorPalette) => string;
1015
- declare const listColor: <T>(_v: T, index: number) => string;
1016
- declare const listColorContinuous: <T>(_v: T, index: number) => string;
1017
- interface RgbColor {
1018
- r: number;
1019
- g: number;
1020
- b: number;
1021
- }
1022
- declare const parseColor: (color: string) => RgbColor;
1023
- declare const colorToRgba: (color: RgbColor, aplha: number) => string;
1024
- declare const hexToRgba: (hex: string, aplha?: number) => string;
1025
- declare const listColorWithAlpha: (alpha?: number) => <T>(_v: T, index: number) => string;
1026
-
1027
734
  declare const HE_API_BASE_URL: InjectionToken<string>;
735
+ /** `he-sites-maps` loads region polygons from `<base>/<term id>.geojson`; `null` draws markers only. */
736
+ declare const HE_REGION_GEOJSON_BASE_URL: InjectionToken<string>;
1028
737
  declare class HeCommonService {
1029
738
  private _apiBaseUrl;
1030
739
  get apiBaseUrl(): string;
@@ -1065,17 +774,6 @@ declare class HeToastService {
1065
774
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<HeToastService>;
1066
775
  }
1067
776
 
1068
- declare const d3ellipse: <Datum>(selection: Selection<SVGTextElement, Datum, any, any>, maxWidth: number, ellipsisStr?: string) => void;
1069
- declare const d3wrap: <Datum>(t: Selection<SVGTextElement, Datum, any, any>, { maxWidth, maxLines, words, nHeight, lHeight, vcentre, ownLineWord }: {
1070
- maxWidth: number;
1071
- maxLines: number;
1072
- words: string[];
1073
- nHeight: number;
1074
- lHeight: number;
1075
- vcentre?: boolean;
1076
- ownLineWord?: string;
1077
- }) => void;
1078
-
1079
777
  declare enum DeltaColour {
1080
778
  Success = "success",
1081
779
  Warning = "warning",
@@ -1450,7 +1148,7 @@ declare const bytesSize: (bytes: number) => string;
1450
1148
  declare const capitalize: <T extends string>(text: T) => Capitalize<T>;
1451
1149
  declare const uncapitalize: <T extends string>(text: T) => Uncapitalize<T>;
1452
1150
  declare const toSnakeCase: (value: string) => string;
1453
- declare const downloadFile: (url: string, fileName: string) => void;
1151
+
1454
1152
  declare const dataVersionHeaderKey = "X-DATA-VERSION";
1455
1153
  declare const dataVersionHeader: (dataVersion?: string) => {
1456
1154
  "X-DATA-VERSION": string;
@@ -2022,7 +1720,7 @@ declare class PopoverComponent {
2022
1720
  protected readonly message: _angular_core.InputSignal<string>;
2023
1721
  protected readonly content: _angular_core.InputSignal<TemplateRef<ContentContext>>;
2024
1722
  protected readonly data: _angular_core.InputSignal<any>;
2025
- protected readonly position: _angular_core.InputSignal<"top" | "bottom" | "left" | "right">;
1723
+ protected readonly position: _angular_core.InputSignal<"left" | "top" | "right" | "bottom">;
2026
1724
  protected onClick($event: any): void;
2027
1725
  readonly active: _angular_core.WritableSignal<boolean>;
2028
1726
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverComponent, never>;
@@ -2402,53 +2100,43 @@ declare const primaryProduct: ({ products }: Partial<ICycleJSONLD>) => _hestia_e
2402
2100
  */
2403
2101
  declare const logsKey: (node: any) => any;
2404
2102
 
2405
- interface IEmissionCategory {
2406
- key: string;
2407
- label: string;
2408
- }
2103
+ /**
2104
+ * The emission categories of the glossary, for components; the functions themselves are in
2105
+ * `@hestia-earth/ui-components-charts`, so an application without Angular reads the same ones.
2106
+ */
2409
2107
  declare class CyclesEmissionsCategoryService {
2410
- private readonly data;
2411
2108
  readonly categoryLabel: (key: string) => string;
2412
- /**
2413
- * The list of all available categories.
2414
- */
2415
- readonly categories: {
2416
- key: string;
2417
- label: string;
2418
- }[];
2419
- /**
2420
- * Return all possible values for a specific Category.
2421
- *
2422
- * @param category {string} The specific category
2423
- * @returns List of all values possible for this Category.
2424
- */
2109
+ readonly categories: IEmissionCategory[];
2425
2110
  readonly categoryValues: (category: string) => string[];
2426
- /**
2427
- * Return the different categories available for a single Emission.
2428
- *
2429
- * @param emissionId The `@id` of the Emission
2430
- * @returns List of categories.
2431
- */
2432
2111
  readonly emissionCategories: (emissionId: string) => string[];
2433
- /**
2434
- * Return the Category value for a specific Emission and Category.
2435
- *
2436
- * @param emissionId The `@id` of the Emission
2437
- * @param category The Category
2438
- * @returns The value
2439
- */
2440
2112
  readonly emissionCategoryValue: (emissionId: string, category: string) => string;
2441
2113
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CyclesEmissionsCategoryService, never>;
2442
2114
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<CyclesEmissionsCategoryService>;
2443
2115
  }
2444
2116
 
2117
+ /**
2118
+ * How one completeness area of an aggregated Cycle was decided, from the contributors it combined.
2119
+ */
2120
+ interface ICompletenessAggregationRow {
2121
+ key: string;
2122
+ value?: boolean;
2123
+ completeCount?: number;
2124
+ contributorsCount?: number;
2125
+ /**
2126
+ * Why the area ended up complete or not, in words: the counts alone do not say what decides it.
2127
+ */
2128
+ rule?: string;
2129
+ }
2130
+
2445
2131
  declare enum View$4 {
2446
2132
  table = "Table",
2447
- logs = "Recalculations logs"
2133
+ logs = "Recalculations logs",
2134
+ aggregationLogs = "Aggregation logs"
2448
2135
  }
2449
2136
  declare class CyclesCompletenessComponent {
2450
2137
  private readonly modalService;
2451
2138
  private readonly nodeStoreService;
2139
+ private readonly nodeLogsModelsService;
2452
2140
  protected readonly componentId: _angular_core.Signal<string>;
2453
2141
  protected readonly dataState: _angular_core.InputSignal<DataState>;
2454
2142
  protected readonly schemaBaseUrl: string;
@@ -2464,13 +2152,18 @@ declare class CyclesCompletenessComponent {
2464
2152
  protected readonly viewIcon: {
2465
2153
  Table: svgIconNames;
2466
2154
  "Recalculations logs": svgIconNames;
2155
+ "Aggregation logs": svgIconNames;
2467
2156
  };
2468
2157
  private readonly showView;
2469
2158
  protected readonly views: _angular_core.Signal<View$4[]>;
2470
2159
  protected readonly selectedView: _angular_core.WritableSignal<View$4>;
2471
2160
  private readonly originalCycles;
2472
2161
  protected readonly cycles: _angular_core.Signal<ICycleJSONLD[]>;
2473
- private readonly selectedIndex;
2162
+ protected readonly selectableCycles: _angular_core.Signal<{
2163
+ cycle: ICycleJSONLD;
2164
+ index: number;
2165
+ }[]>;
2166
+ protected readonly selectedIndex: _angular_core.WritableSignal<number>;
2474
2167
  private readonly ogirinalSelectedCycle;
2475
2168
  private readonly selectedCycle;
2476
2169
  protected readonly selectedLogsKey: _angular_core.Signal<any>;
@@ -2533,6 +2226,8 @@ declare class CyclesCompletenessComponent {
2533
2226
  '@id': string;
2534
2227
  name: string;
2535
2228
  }>;
2229
+ private readonly aggregationJlog;
2230
+ protected readonly aggregationRows: _angular_core.Signal<ICompletenessAggregationRow[]>;
2536
2231
  protected readonly hasData: _angular_core.Signal<number>;
2537
2232
  protected readonly isOriginal: _angular_core.Signal<boolean>;
2538
2233
  readonly hideIdenticalValues: _angular_core.InputSignal<boolean>;
@@ -2620,10 +2315,10 @@ declare class CyclesMetadataComponent {
2620
2315
  private readonly ogirinalSelectedCycle;
2621
2316
  protected readonly selectedCycle: _angular_core.Signal<ICycleJSONLD>;
2622
2317
  protected readonly selectedOriginalValues: _angular_core.Signal<{
2623
- [k: string]: string | number | boolean | string[] | _hestia_earth_schema.ISiteJSONLD | number[] | Date | _hestia_earth_schema.Product[] | _hestia_earth_schema.Input[] | _hestia_earth_schema.Animal[] | _hestia_earth_schema.Emission[] | _hestia_earth_schema.Practice[] | _hestia_earth_schema.Transformation[] | _hestia_earth_schema.ISourceJSONLD | _hestia_earth_schema.ISourceJSONLD[] | (string | _hestia_earth_schema.IContext)[] | _hestia_earth_schema.Completeness | ICycleJSONLD[] | _hestia_earth_schema.ISiteJSONLD[] | null[][];
2318
+ [k: string]: string | number | boolean | number[] | string[] | Date | (string | _hestia_earth_schema.IContext)[] | _hestia_earth_schema.ISiteJSONLD | _hestia_earth_schema.Input[] | _hestia_earth_schema.Product[] | _hestia_earth_schema.Animal[] | _hestia_earth_schema.Emission[] | _hestia_earth_schema.Practice[] | _hestia_earth_schema.Transformation[] | _hestia_earth_schema.ISourceJSONLD | _hestia_earth_schema.ISourceJSONLD[] | _hestia_earth_schema.Completeness | ICycleJSONLD[] | _hestia_earth_schema.ISiteJSONLD[] | null[][];
2624
2319
  }>;
2625
2320
  protected readonly selectedRecalculatedValues: _angular_core.Signal<{
2626
- [k: string]: string | number | boolean | string[] | _hestia_earth_schema.ISiteJSONLD | number[] | Date | _hestia_earth_schema.Product[] | _hestia_earth_schema.Input[] | _hestia_earth_schema.Animal[] | _hestia_earth_schema.Emission[] | _hestia_earth_schema.Practice[] | _hestia_earth_schema.Transformation[] | _hestia_earth_schema.ISourceJSONLD | _hestia_earth_schema.ISourceJSONLD[] | (string | _hestia_earth_schema.IContext)[] | _hestia_earth_schema.Completeness | ICycleJSONLD[] | _hestia_earth_schema.ISiteJSONLD[] | null[][];
2321
+ [k: string]: string | number | boolean | number[] | string[] | Date | (string | _hestia_earth_schema.IContext)[] | _hestia_earth_schema.ISiteJSONLD | _hestia_earth_schema.Input[] | _hestia_earth_schema.Product[] | _hestia_earth_schema.Animal[] | _hestia_earth_schema.Emission[] | _hestia_earth_schema.Practice[] | _hestia_earth_schema.Transformation[] | _hestia_earth_schema.ISourceJSONLD | _hestia_earth_schema.ISourceJSONLD[] | _hestia_earth_schema.Completeness | ICycleJSONLD[] | _hestia_earth_schema.ISiteJSONLD[] | null[][];
2627
2322
  }>;
2628
2323
  readonly hideIdenticalValues: _angular_core.InputSignal<boolean>;
2629
2324
  protected readonly hideIdenticalSelected: _angular_core.WritableSignal<boolean>;
@@ -3998,439 +3693,6 @@ interface IImpactAssessmentJSONLDExtended extends IImpactAssessmentJSONLD {
3998
3693
  };
3999
3694
  }
4000
3695
 
4001
- type searchableType = NodeType.Cycle | NodeType.Source;
4002
- declare const searchableTypes: searchableType[];
4003
- type multiMatchType = 'best_fields' | 'most_fields' | 'cross_fields' | 'phrase' | 'phrase_prefix' | 'bool_prefix';
4004
- type multiMatchAnalyzer = 'standard';
4005
- declare const matchType: (type: NodeType | string) => Readonly<{
4006
- match: {
4007
- '@type.keyword': string;
4008
- };
4009
- }>;
4010
- declare const matchId: (id: string) => Readonly<{
4011
- match: {
4012
- '@id.keyword': string;
4013
- };
4014
- }>;
4015
- declare const matchTermType: (termType: TermTermType | string) => Readonly<Readonly<{
4016
- match: {
4017
- [x: string]: {
4018
- boost?: number;
4019
- query: any;
4020
- };
4021
- };
4022
- }>>;
4023
- declare const matchRegex: (key: string, value: string | RegExp) => Readonly<{
4024
- regexp: {
4025
- [x: string]: {
4026
- value: string;
4027
- };
4028
- };
4029
- }>;
4030
- declare const matchQuery: (key: string, value: any, boost?: number) => Readonly<{
4031
- match: {
4032
- [x: string]: {
4033
- boost?: number;
4034
- query: any;
4035
- };
4036
- };
4037
- }>;
4038
- declare const matchExactQuery: (key: string, value: any, boost?: number) => Readonly<{
4039
- match: {
4040
- [x: string]: {
4041
- boost?: number;
4042
- query: any;
4043
- };
4044
- };
4045
- }>;
4046
- declare const matchNameNormalized: (query: string, boost?: number) => Readonly<{
4047
- match: {
4048
- nameNormalized: {
4049
- query: string;
4050
- boost: number;
4051
- };
4052
- };
4053
- }>;
4054
- declare const numberGte: (key: string, value: number) => Readonly<{
4055
- range: {
4056
- [x: string]: {
4057
- gte: number;
4058
- };
4059
- };
4060
- }>;
4061
- declare const multiMatchQuery: (query: string, fields: string[], type?: multiMatchType, boost?: number, analyzer?: multiMatchAnalyzer) => Readonly<{
4062
- multi_match: {
4063
- analyzer?: "standard";
4064
- boost?: number;
4065
- query: string;
4066
- fields: string[];
4067
- type: multiMatchType;
4068
- };
4069
- }>;
4070
- declare const matchPhraseQuery: (query: string, boost?: number, ...fields: string[]) => Readonly<{
4071
- match: {
4072
- [x: string]: {
4073
- boost?: number;
4074
- query: any;
4075
- };
4076
- };
4077
- }> | Readonly<{
4078
- multi_match: {
4079
- analyzer?: "standard";
4080
- boost?: number;
4081
- query: string;
4082
- fields: string[];
4083
- type: multiMatchType;
4084
- };
4085
- }>;
4086
- declare const matchPhrasePrefixQuery: (query: string, boost?: number, ...fields: string[]) => Readonly<{
4087
- multi_match: {
4088
- analyzer?: "standard";
4089
- boost?: number;
4090
- query: string;
4091
- fields: string[];
4092
- type: multiMatchType;
4093
- };
4094
- }> | Readonly<{
4095
- match_phrase_prefix: {
4096
- nameSearchAsYouType: {
4097
- query: string;
4098
- boost: number;
4099
- };
4100
- };
4101
- }>;
4102
- declare const matchBoolPrefixQuery: (query: string, boost?: number, ...fields: string[]) => Readonly<{
4103
- multi_match: {
4104
- analyzer?: "standard";
4105
- boost?: number;
4106
- query: string;
4107
- fields: string[];
4108
- type: multiMatchType;
4109
- };
4110
- }> | Readonly<{
4111
- match_bool_prefix: {
4112
- name: {
4113
- query: string;
4114
- boost: number;
4115
- };
4116
- };
4117
- }>;
4118
- declare const wildcardQuery: (query: string, boost?: number, ...fields: string[]) => Readonly<{
4119
- simple_query_string: {
4120
- query: string;
4121
- fields: string[];
4122
- analyze_wildcard: boolean;
4123
- boost: number;
4124
- };
4125
- }>;
4126
- declare const matchGlobalRegion: {
4127
- regexp: {
4128
- '@id': string;
4129
- };
4130
- };
4131
- declare const matchCountry: Readonly<{
4132
- bool: {
4133
- should: ({
4134
- match: {
4135
- gadmLevel: number;
4136
- };
4137
- } | {
4138
- regexp: {
4139
- '@id': string;
4140
- };
4141
- })[];
4142
- minimum_should_match: number;
4143
- };
4144
- }>;
4145
- declare const countriesQuery: Readonly<{
4146
- bool: {
4147
- must: ({
4148
- match: {
4149
- gadmLevel: number;
4150
- };
4151
- } | Readonly<{
4152
- match: {
4153
- '@type.keyword': string;
4154
- };
4155
- }> | Readonly<Readonly<{
4156
- match: {
4157
- [x: string]: {
4158
- boost?: number;
4159
- query: any;
4160
- };
4161
- };
4162
- }>>)[];
4163
- };
4164
- }>;
4165
- declare const allCountriesQuery: Readonly<{
4166
- bool: {
4167
- should: ({
4168
- match: {
4169
- gadmLevel: number;
4170
- };
4171
- } | {
4172
- regexp: {
4173
- '@id': string;
4174
- };
4175
- })[];
4176
- minimum_should_match: number;
4177
- must: (Readonly<{
4178
- match: {
4179
- '@type.keyword': string;
4180
- };
4181
- }> | Readonly<Readonly<{
4182
- match: {
4183
- [x: string]: {
4184
- boost?: number;
4185
- query: any;
4186
- };
4187
- };
4188
- }>>)[];
4189
- };
4190
- }>;
4191
- declare const matchRegion: Readonly<{
4192
- range: {
4193
- [x: string]: {
4194
- gte: number;
4195
- };
4196
- };
4197
- }>;
4198
- declare const regionsQuery: Readonly<{
4199
- bool: {
4200
- must: (Readonly<{
4201
- match: {
4202
- '@type.keyword': string;
4203
- };
4204
- }> | Readonly<Readonly<{
4205
- match: {
4206
- [x: string]: {
4207
- boost?: number;
4208
- query: any;
4209
- };
4210
- };
4211
- }>> | Readonly<{
4212
- range: {
4213
- [x: string]: {
4214
- gte: number;
4215
- };
4216
- };
4217
- }>)[];
4218
- };
4219
- }>;
4220
- declare const cropsQuery: Readonly<{
4221
- bool: {
4222
- must: (Readonly<{
4223
- match: {
4224
- '@type.keyword': string;
4225
- };
4226
- }> | Readonly<Readonly<{
4227
- match: {
4228
- [x: string]: {
4229
- boost?: number;
4230
- query: any;
4231
- };
4232
- };
4233
- }>>)[];
4234
- };
4235
- }>;
4236
- declare const productsQuery: Readonly<{
4237
- bool: {
4238
- must: Readonly<{
4239
- match: {
4240
- '@type.keyword': string;
4241
- };
4242
- }>[];
4243
- should: Readonly<Readonly<{
4244
- match: {
4245
- [x: string]: {
4246
- boost?: number;
4247
- query: any;
4248
- };
4249
- };
4250
- }>>[];
4251
- minimum_should_match: number;
4252
- };
4253
- }>;
4254
- declare const matchAggregatedQuery: Readonly<{
4255
- match: {
4256
- [x: string]: {
4257
- boost?: number;
4258
- query: any;
4259
- };
4260
- };
4261
- }>;
4262
- declare const matchAggregatedValidatedQuery: Readonly<{
4263
- match: {
4264
- [x: string]: {
4265
- boost?: number;
4266
- query: any;
4267
- };
4268
- };
4269
- }>;
4270
- declare const matchNestedKey: (key: string, query: any) => any;
4271
- declare const matchPrimaryProductQuery: (product: string) => any;
4272
-
4273
- type searchResult = ICycleJSONLD | ISourceJSONLD | IImpactAssessmentJSONLD | ITermJSONLD;
4274
- type sortOrders = 'asc' | 'desc';
4275
- interface ISearchParamSort {
4276
- [key: string]: sortOrders;
4277
- }
4278
- interface ISearchScript {
4279
- _script: {
4280
- type?: string;
4281
- order?: sortOrders;
4282
- script: string;
4283
- };
4284
- }
4285
- interface ISearchParams {
4286
- limit?: number;
4287
- offset?: number;
4288
- fields?: string[];
4289
- sort?: ISearchParamSort[] | ISearchScript;
4290
- query?: any;
4291
- }
4292
- interface ISearchResultExtended {
4293
- _score: number;
4294
- location?: {
4295
- lat: number;
4296
- lon: number;
4297
- };
4298
- properties?: string[];
4299
- expanded?: boolean;
4300
- extended?: boolean;
4301
- pinned?: boolean;
4302
- loading?: boolean;
4303
- selected?: boolean;
4304
- inputsCount?: number;
4305
- emissionsCount?: number;
4306
- productsCount?: number;
4307
- }
4308
- interface ISearchResults<C extends JSONLD<T>, T extends NodeType = searchableType> {
4309
- /**
4310
- * Amount of time the query took
4311
- */
4312
- time: number;
4313
- /**
4314
- * Numnber of results
4315
- */
4316
- count: number;
4317
- results: (C & ISearchResultExtended)[];
4318
- }
4319
- declare const MAX_RESULTS = 10000;
4320
- declare const suggestMatchQuery: (query: string) => (Readonly<{
4321
- match: {
4322
- [x: string]: {
4323
- boost?: number;
4324
- query: any;
4325
- };
4326
- };
4327
- }> | Readonly<{
4328
- match: {
4329
- nameNormalized: {
4330
- query: string;
4331
- boost: number;
4332
- };
4333
- };
4334
- }> | Readonly<{
4335
- multi_match: {
4336
- analyzer?: "standard";
4337
- boost?: number;
4338
- query: string;
4339
- fields: string[];
4340
- type: "best_fields" | "most_fields" | "cross_fields" | "phrase" | "phrase_prefix" | "bool_prefix";
4341
- };
4342
- }> | Readonly<{
4343
- match_phrase_prefix: {
4344
- nameSearchAsYouType: {
4345
- query: string;
4346
- boost: number;
4347
- };
4348
- };
4349
- }>)[];
4350
- declare const suggestQuery: <T extends NodeType = searchableType>(query: string, type?: T, extraQueries?: any[]) => {
4351
- bool: {
4352
- must: any[];
4353
- should: {
4354
- bool: {
4355
- must: Readonly<{
4356
- match: {
4357
- '@type.keyword': string;
4358
- };
4359
- }>[];
4360
- should: (Readonly<{
4361
- match: {
4362
- [x: string]: {
4363
- boost?: number;
4364
- query: any;
4365
- };
4366
- };
4367
- }> | Readonly<{
4368
- match: {
4369
- nameNormalized: {
4370
- query: string;
4371
- boost: number;
4372
- };
4373
- };
4374
- }> | Readonly<{
4375
- multi_match: {
4376
- analyzer?: "standard";
4377
- boost?: number;
4378
- query: string;
4379
- fields: string[];
4380
- type: "best_fields" | "most_fields" | "cross_fields" | "phrase" | "phrase_prefix" | "bool_prefix";
4381
- };
4382
- }> | Readonly<{
4383
- match_phrase_prefix: {
4384
- nameSearchAsYouType: {
4385
- query: string;
4386
- boost: number;
4387
- };
4388
- };
4389
- }>)[];
4390
- minimum_should_match: number;
4391
- };
4392
- }[];
4393
- minimum_should_match: number;
4394
- };
4395
- };
4396
- declare class HeSearchService {
4397
- protected readonly http: HttpClient;
4398
- protected readonly commonService: HeCommonService;
4399
- search$<C extends JSONLD<T>, T extends NodeType = searchableType>(params: ISearchParams, dataVersion?: string, searchPath?: string): rxjs.Observable<ISearchResults<C, T>>;
4400
- count$(params?: {}, dataVersion?: string, countPath?: string): rxjs.Observable<number>;
4401
- get$<C extends JSONLD<T>, T extends NodeType>(type: T, id: string, searchPath?: string): rxjs.Observable<C & ISearchResultExtended>;
4402
- suggest$<C extends JSONLD<T>, T extends NodeType = searchableType>(term: string, type?: T, extraQueries?: any[], fullQuery?: any, limit?: number, includes?: string[], searchPath?: string): rxjs.Observable<Omit<C & ISearchResultExtended, "_score">[]>;
4403
- suggestSource$(term: string, limit?: number, fields?: string[], includes?: string[]): rxjs.Observable<Partial<Source>[]>;
4404
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeSearchService, never>;
4405
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<HeSearchService>;
4406
- }
4407
-
4408
- interface IChartInputLog {
4409
- id: string;
4410
- label: string;
4411
- units: string;
4412
- weightedValue: number;
4413
- value: number;
4414
- operations: IChartInputLog[];
4415
- }
4416
- interface IChartData {
4417
- indicator: string;
4418
- category?: string;
4419
- categoryLabel?: string;
4420
- contributor: string;
4421
- coefficient: number;
4422
- value: number;
4423
- weightedValue: number;
4424
- modelId: string;
4425
- inputs?: IChartInputLog[];
4426
- }
4427
- type term = ITermJSONLD & ISearchResultExtended & {
4428
- docs?: string;
4429
- };
4430
- interface ITermMapping {
4431
- [id: string]: term;
4432
- }
4433
-
4434
3696
  declare class ImpactAssessmentsGraphComponent {
4435
3697
  private readonly searchService;
4436
3698
  private readonly nodeService;
@@ -4456,12 +3718,8 @@ declare class ImpactAssessmentsGraphComponent {
4456
3718
  protected readonly showWarnings: _angular_core.WritableSignal<boolean>;
4457
3719
  protected readonly error: _angular_core.WritableSignal<string>;
4458
3720
  protected readonly selectedModelId: _angular_core.WritableSignal<string>;
4459
- private readonly hasDefaultModelLogs;
4460
3721
  protected readonly models: _angular_core.Signal<Partial<ITermJSONLD>[]>;
4461
- protected readonly categories: {
4462
- key: string;
4463
- label: string;
4464
- }[];
3722
+ protected readonly categories: _hestia_earth_ui_components_charts.IEmissionCategory[];
4465
3723
  protected readonly selectedCategory: _angular_core.WritableSignal<string>;
4466
3724
  protected readonly chartData: _angular_core.Signal<IChartData[]>;
4467
3725
  protected readonly loading: _angular_core.Signal<boolean>;
@@ -4595,16 +3853,6 @@ declare class ImpactAssessmentsProductsComponent {
4595
3853
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImpactAssessmentsProductsComponent, "he-impact-assessments-products", never, { "dataState": { "alias": "dataState"; "required": false; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "filterTermTypes": { "alias": "filterTermTypes"; "required": false; "isSignal": true; }; "enableFilterMethodModel": { "alias": "enableFilterMethodModel"; "required": false; "isSignal": true; }; "hideIdenticalValues": { "alias": "hideIdenticalValues"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4596
3854
  }
4597
3855
 
4598
- interface ILog$1 {
4599
- modelId: string;
4600
- impactTermId: string;
4601
- impactTermUnits?: string;
4602
- blankNodeTermId: string;
4603
- value: number;
4604
- name?: string;
4605
- color?: string;
4606
- inputs?: string[];
4607
- }
4608
3856
  declare class ImpactAssessmentsIndicatorBreakdownChartComponent {
4609
3857
  private readonly searchService;
4610
3858
  private readonly nodeService;
@@ -4612,20 +3860,10 @@ declare class ImpactAssessmentsIndicatorBreakdownChartComponent {
4612
3860
  private readonly responsiveService;
4613
3861
  protected readonly impactAssessment: _angular_core.InputSignal<IImpactAssessmentJSONLD>;
4614
3862
  protected readonly indicators: _angular_core.InputSignal<Indicator[]>;
4615
- protected readonly maximumValues: _angular_core.Signal<20 | 10>;
4616
- protected readonly categories: {
4617
- key: string;
4618
- label: string;
4619
- }[];
3863
+ protected readonly maximumValues: _angular_core.Signal<10 | 20>;
3864
+ protected readonly categories: _hestia_earth_ui_components_charts.IEmissionCategory[];
4620
3865
  protected readonly selectedCategory: _angular_core.WritableSignal<string>;
4621
- protected readonly logsResource: _angular_core.ResourceRef<{
4622
- modelId: string;
4623
- impactTermId: string;
4624
- impactTermUnits: string;
4625
- blankNodeTermId: any;
4626
- value: number;
4627
- inputs: any[];
4628
- }[]>;
3866
+ protected readonly logsResource: _angular_core.ResourceRef<IContributionLog[]>;
4629
3867
  private readonly logs;
4630
3868
  private readonly nonZeroLogs;
4631
3869
  private readonly emissions;
@@ -4651,17 +3889,11 @@ declare class ImpactAssessmentsIndicatorBreakdownChartComponent {
4651
3889
  value: number;
4652
3890
  inputs?: string[];
4653
3891
  }[]>;
4654
- protected readonly groupedValues: _angular_core.Signal<Record<string, ILog$1[]>>;
4655
- protected readonly chartData: _angular_core.Signal<{
4656
- label: string;
4657
- count: number;
4658
- backgroundColor: string;
4659
- }[]>;
3892
+ protected readonly chartData: _angular_core.Signal<BarChartDataItem[]>;
4660
3893
  protected readonly chartTooltipFn: chartTooltipContentFn<BarChartDataItem & {
4661
3894
  index: number;
4662
3895
  }>;
4663
- protected readonly afterBarDrawSettings: _angular_core.Signal<AfterBarDrawSettings>;
4664
- private readonly chartMin;
3896
+ protected readonly afterBarDrawSettings: _angular_core.Signal<_hestia_earth_ui_components_charts.AfterBarDrawSettings>;
4665
3897
  protected readonly configuration: _angular_core.Signal<{
4666
3898
  options: {
4667
3899
  scales: {
@@ -4677,7 +3909,7 @@ declare class ImpactAssessmentsIndicatorBreakdownChartComponent {
4677
3909
  private readonly csvContent;
4678
3910
  protected readonly chartExportFn: chartExportFn;
4679
3911
  constructor();
4680
- protected trackByLog({ blankNodeTermId, modelId, impactTermId }: ILog$1): string;
3912
+ protected trackByLog({ blankNodeTermId, modelId, impactTermId }: IContributionLog): string;
4681
3913
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ImpactAssessmentsIndicatorBreakdownChartComponent, never>;
4682
3914
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImpactAssessmentsIndicatorBreakdownChartComponent, "he-impact-assessments-indicator-breakdown-chart", never, { "impactAssessment": { "alias": "impactAssessment"; "required": true; "isSignal": true; }; "indicators": { "alias": "indicators"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4683
3915
  }
@@ -4692,10 +3924,7 @@ declare class ImpactAssessmentsIndicatorsChartComponent {
4692
3924
  protected readonly chart: _angular_core.Signal<ContributionChartComponent | HorizontalBarChartComponent>;
4693
3925
  protected readonly key: _angular_core.InputSignal<modelKey>;
4694
3926
  protected readonly filterTermTypes: _angular_core.InputSignal<TermTermType[]>;
4695
- protected readonly categories: {
4696
- key: string;
4697
- label: string;
4698
- }[];
3927
+ protected readonly categories: _hestia_earth_ui_components_charts.IEmissionCategory[];
4699
3928
  protected readonly selectedCategory: _angular_core.WritableSignal<string>;
4700
3929
  private readonly dataVersion;
4701
3930
  private readonly allImpactAssessments;
@@ -4872,1160 +4101,1570 @@ declare enum LogStatus {
4872
4101
  dataProvided = "not run (user provided data retained)",
4873
4102
  notRequired = "not relevant"
4874
4103
  }
4875
- interface IConfigModel {
4104
+ interface IConfigModel {
4105
+ methodId: string;
4106
+ logs?: INodeTermLog;
4107
+ showLogs?: boolean;
4108
+ status?: LogStatus;
4109
+ model?: IModel;
4110
+ config?: IOrchestratorModelConfig;
4111
+ }
4112
+ interface IBlankNodeLogSubValue {
4113
+ blankNode: true;
4114
+ id?: string;
4115
+ key: string;
4116
+ showUnits: boolean;
4117
+ originalValue: propertyValueType;
4118
+ recalculatedValue: propertyValueType;
4119
+ isRecalculated: boolean;
4120
+ isRequired?: boolean;
4121
+ configModels?: IConfigModel[];
4122
+ logs?: INodeTermLogs;
4123
+ canOpen?: boolean;
4124
+ isOpen?: boolean;
4125
+ subValues: IBlankNodeLogSubValue[];
4126
+ /**
4127
+ * If the subValue is duplicated accross multiple groups.
4128
+ */
4129
+ multiGroups?: boolean;
4130
+ }
4131
+ interface ILog {
4132
+ logs?: INodeTermLogs;
4133
+ isOpen: boolean;
4134
+ canOpen: boolean;
4135
+ type?: SchemaType;
4136
+ configModels: (IConfigModel | IConfigModel[])[];
4137
+ originalValue: propertyValueType;
4138
+ recalculatedValue: propertyValueType;
4139
+ isOriginal: boolean;
4140
+ isRecalculated: boolean;
4141
+ hasData: boolean;
4142
+ isRequired: boolean;
4143
+ allParallel?: boolean;
4144
+ }
4145
+ interface IBlankNodeLog extends ILog {
4146
+ blankNode: true;
4147
+ term: ITermJSONLD;
4148
+ termId: string;
4149
+ keys: IBlankNodeLogSubValue[];
4150
+ subValues: IBlankNodeLogSubValue[];
4151
+ modelsInSubValues?: boolean;
4152
+ original: blankNodesTypeValue[];
4153
+ originalValueByMethodId?: {
4154
+ [methodId: string]: propertyValueType;
4155
+ };
4156
+ recalculated: blankNodesTypeValue[];
4157
+ recalculatedValueByMethodId?: {
4158
+ [methodId: string]: propertyValueType;
4159
+ };
4160
+ }
4161
+ interface INonBlankNodeLog extends ILog {
4162
+ blankNode: false;
4163
+ key: string;
4164
+ }
4165
+ declare const groupLogsByTerm: (node: IJSONNode, logs: INodeLogs, config: IOrchestratorConfig, allOriginalValues: blankNodesTypeValue[], allRecalculatedValues: blankNodesTypeValue[], nodeKey: blankNodesKey, termsGrouping?: Record<string, string[]>, cycle?: ICycleJSONLD) => (term: ITermJSONLD) => IBlankNodeLog;
4166
+ declare const groupdLogsByKey: (node: IJSONNode, nodeKey: nonBlankNodesKey, logs: INodeLogs, originalValue?: nonBlankNodesTypeValue, recalculatedValue?: nonBlankNodesTypeValue) => (key: string) => INonBlankNodeLog;
4167
+ declare const groupsLogsByFields: (node: IJSONNode, logs: INodeLogs, originalValue?: Record<string, string | number>, recalculatedValue?: Record<string, string | number>) => (key: string) => INonBlankNodeLog;
4168
+ declare const modelCount: (blankNodeLogs: IBlankNodeLog[]) => any;
4169
+ declare const logValueArray: (value: unknown) => (string | number | Record<string, string | number>)[];
4170
+
4171
+ declare const nodeType: (node?: IJSONNode) => NodeType;
4172
+ declare const nodeId: (node?: IJSONNode) => string;
4173
+ /**
4174
+ * Get the full url to fetch the node data.
4175
+ *
4176
+ * @param apiBaseUrl The url of the API hosting the data.
4177
+ * @param node The node with a type, id and optionally a dataState
4178
+ * @returns The full url.
4179
+ */
4180
+ declare const nodeUrl: (apiBaseUrl: string, { dataState, ...node }: IJSONNode) => string;
4181
+ declare const nodeLogsUrl: (apiBaseUrl: string, { dataState, dataVersion, ...node }: IJSONNode) => string;
4182
+ declare const lookupUrl: (filename: string) => string;
4183
+ interface IJSONNode {
4184
+ '@type'?: NodeType;
4185
+ '@id'?: string;
4186
+ type?: NodeType;
4187
+ id?: string;
4188
+ dataState?: DataState;
4189
+ aggregated?: boolean;
4190
+ aggregatedDataValidated?: boolean;
4191
+ dataVersion?: string;
4192
+ }
4193
+ interface INodeHeaders {
4194
+ 'last-modified'?: string;
4195
+ stage?: string;
4196
+ maxstage?: string;
4197
+ error?: string;
4198
+ }
4199
+ interface IRelatedNode {
4200
+ '@type': NodeType;
4201
+ '@id': string;
4202
+ [x: string]: string;
4203
+ }
4204
+ declare class RelatedNodeResult {
4205
+ count: number;
4206
+ results: IRelatedNode[];
4207
+ }
4208
+ interface IJSONData {
4209
+ [NodeType.Cycle]?: ICycleJSONLD[];
4210
+ [NodeType.Site]?: ISiteJSONLD[];
4211
+ [NodeType.ImpactAssessment]?: IImpactAssessmentJSONLD[];
4212
+ }
4213
+ interface INodeErrorLog {
4214
+ error: string | IValidationError[];
4215
+ warning?: IValidationError[];
4216
+ stack?: string;
4217
+ }
4218
+ type onHeadersCallback = (headers: HttpHeaders) => any;
4219
+
4220
+ type nodeContributionsSimplified = Record<string, contributions>;
4221
+ /**
4222
+ * Re-create the simplified version of the contributions loaded in the Data Explorer.
4223
+ *
4224
+ * @param impactAssessment
4225
+ * @param contributions
4226
+ * @returns
4227
+ */
4228
+ declare const simplifyContributions: (impactAssessment: Partial<IImpactAssessmentJSONLD>, contributions: INodeContributions) => nodeContributionsSimplified;
4229
+ declare class HeNodeService {
4230
+ protected readonly http: HttpClient;
4231
+ protected readonly commonService: HeCommonService;
4232
+ getWithHeaders$<T>({ dataState, ...node }: IJSONNode, params?: {}): rxjs.Observable<{
4233
+ headers: HttpHeaders;
4234
+ data: T;
4235
+ }>;
4236
+ get$<T>(node: IJSONNode, params?: {}, onHeaders?: onHeadersCallback): rxjs.Observable<T>;
4237
+ get<T>(node: IJSONNode, defaultForState?: boolean): Promise<T>;
4238
+ head$(node: IJSONNode, dataVersion?: string): rxjs.Observable<INodeHeaders>;
4239
+ getRelated$(node: IJSONNode, relatedType: NodeType, limit?: number, offset?: number, relationship?: string, dataVersion?: string): rxjs.Observable<RelatedNodeResult>;
4240
+ getLog$({ dataState, aggregated, dataVersion, ...node }: IJSONNode, format?: 'text' | 'json'): rxjs.Observable<any>;
4241
+ getContributions$({ dataState, ...impactAssessment }: IJSONNode & Partial<IImpactAssessmentJSONLD>): rxjs.Observable<INodeContributions>;
4242
+ private getContributionsFromLog$;
4243
+ getErrorLog$({ dataState, aggregated, ...node }: IJSONNode): rxjs.Observable<INodeErrorLog>;
4244
+ getMissingLookupsLog$({ dataState, ...node }: IJSONNode): rxjs.Observable<INodeMissingLookupLog[]>;
4245
+ triggerPipeline({ dataState, aggregated, ...node }: IJSONNode): Promise<Object>;
4246
+ downloadRaw$<T = any>(url: string, responseType?: any): rxjs.Observable<T>;
4247
+ nodeTypeUrl(type: any): string;
4248
+ nodeUrl(node: IJSONNode): string;
4249
+ nodeLogsUrl(node: IJSONNode): string;
4250
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeNodeService, never>;
4251
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<HeNodeService>;
4252
+ }
4253
+
4254
+ interface IStoredNode {
4255
+ index: number;
4256
+ type: NodeType;
4257
+ id: string;
4258
+ }
4259
+ type nodeStates = {
4260
+ [dataState in DataState]?: JSONLD<NodeType>;
4261
+ };
4262
+ type nodes = {
4263
+ [nodeType in NodeType]?: (nodeStates & IStoredNode)[];
4264
+ };
4265
+ declare const nodeTypeDataState: {
4266
+ [type in NodeType]?: {
4267
+ default: DataState[];
4268
+ aggregated?: DataState[];
4269
+ };
4270
+ };
4271
+ interface INodeRequestParams {
4272
+ version?: string;
4273
+ dataVersion?: string;
4274
+ }
4275
+ declare const nodeRequestId: <T extends Pick<JSONLD<NodeType>, "@id">>(node: T, params?: INodeRequestParams) => string;
4276
+ type dataTransformFunc = <T>(node: T) => T;
4277
+ declare const mergeDataWithHeaders: <T extends JSONLD<NodeType>>(data: T, headers: HttpHeaders) => T & INodeHeaders;
4278
+ declare const nodesByType: (nodes: nodes, nodeType: NodeType) => (nodeStates & IStoredNode)[];
4279
+ declare const nodeIds: (nodes: nodes, nodeType: NodeType) => string[];
4280
+ declare const nodeById: (nodes: nodes, nodeType: NodeType, id?: string) => (nodeStates & IStoredNode)[];
4281
+ declare const nodesByState: (nodes: nodes, nodeType: NodeType, dataState: DataState, id?: string) => JSONLD<NodeType>[];
4282
+ declare class HeNodeStoreService {
4283
+ private readonly nodeService;
4284
+ private _nodesLoadRequests;
4285
+ readonly nodes: _angular_core.WritableSignal<nodes>;
4286
+ readonly sortedNodes: _angular_core.Signal<nodes>;
4287
+ private findNodeIndex;
4288
+ private updateNodeList;
4289
+ private loadNode;
4290
+ /**
4291
+ * Fetch node data from the API, and add to the store.
4292
+ *
4293
+ * @param node
4294
+ * @param params Optional query parameters to send with the request to the API.
4295
+ * @param dataTransform Function to transform the received data.
4296
+ * @returns
4297
+ */
4298
+ addNode<T extends Pick<JSONLD<NodeType>, '@type' | '@id'>>(node: T, params?: INodeRequestParams, dataTransform?: dataTransformFunc): Observable<nodeStates & IStoredNode>;
4299
+ removeNodeByIndex(nodeType: NodeType, index: number): void;
4300
+ removeNode<T extends JSONLD<NodeType>>(node: T, params?: INodeRequestParams): void;
4301
+ clearNodes(): void;
4302
+ clearNodesByType(nodeType: NodeType): void;
4303
+ nodeIds(nodeType: NodeType): string[];
4304
+ findByState<T extends JSONLD<NodeType>>(nodeType: NodeType, dataState: DataState, id?: string): T[];
4305
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeNodeStoreService, never>;
4306
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<HeNodeStoreService>;
4307
+ }
4308
+
4309
+ declare const nodeDataState: (node?: Pick<JSONLD<NodeType>, "@type">) => DataState;
4310
+ declare const nodeDataStates: (node?: JSONLD<NodeType>) => DataState[];
4311
+ declare const nodeUrlParams: (dataState?: DataState, dataVersion?: string) => string;
4312
+ declare const nodeLink: (node: Pick<JSONLD<NodeType>, "@type" | "@id">, dataState?: DataState, dataVersion?: string) => string;
4313
+ declare const nodeLinkTypeEnabled: (type: SchemaType | NodeType) => boolean;
4314
+ declare const nodeLinkEnabled: (node: any) => boolean;
4315
+ /**
4316
+ * Open a node's page, as `he-node-link` would.
4317
+ */
4318
+ declare const openNodeUrl: (node: Pick<JSONLD<NodeType>, "@type" | "@id">, dataVersion?: string) => Window;
4319
+ declare enum NodeQualityScore {
4320
+ low = "Low",
4321
+ medium = "Medium",
4322
+ high = "High"
4323
+ }
4324
+ declare const nodeQualityScoreMaxDefault = 4;
4325
+ declare const nodeQualityScoreLevel: (score: number, max?: number) => NodeQualityScore;
4326
+ declare const nodeQualityScoreColor: {
4327
+ [score in NodeQualityScore]: string;
4328
+ };
4329
+ declare const nodeQualityScoreOrder: string[];
4330
+ declare const nodeToAggregationFilename: (node: any, countryId: string) => string;
4331
+ declare const isMaxStage: (node: any) => boolean;
4332
+ declare const nodeTypeIcon: {
4333
+ [nodeType in SchemaType]?: svgIconNames;
4334
+ };
4335
+ declare const nodeTypeIconSchema: {
4336
+ [nodeType in SchemaType]?: svgIconNames;
4337
+ };
4338
+
4339
+ declare const nodeColours: {
4340
+ Cycle: string;
4341
+ Site: string;
4342
+ ImpactAssessment: string;
4343
+ Source: string;
4344
+ };
4345
+ declare const nodeSecondaryColours: {
4346
+ Cycle: string;
4347
+ Site: string;
4348
+ ImpactAssessment: string;
4349
+ Source: string;
4350
+ };
4351
+
4352
+ /**
4353
+ * A single `.jlog` `logs[]` entry, mapped to the same shape as the legacy `IConfigModel` so the
4354
+ * existing per-model status/logs components can be reused without changes.
4355
+ */
4356
+ interface IJLogModelRun extends IConfigModel {
4876
4357
  methodId: string;
4877
- logs?: INodeTermLog;
4878
- showLogs?: boolean;
4879
- status?: LogStatus;
4358
+ status: LogStatus;
4359
+ logs: INodeTermLog;
4360
+ showLogs: boolean;
4880
4361
  model?: IModel;
4881
- config?: IOrchestratorModelConfig;
4362
+ modelKey?: string;
4882
4363
  }
4883
- interface IBlankNodeLogSubValue {
4884
- blankNode: true;
4885
- id?: string;
4364
+ type IJLogModelColumn = IJLogModelRun | IJLogModelRun[];
4365
+ interface IIdentitySegment {
4366
+ field: string;
4367
+ terms: ITermJSONLD[];
4368
+ }
4369
+ interface IIdentityScalar {
4886
4370
  key: string;
4887
- showUnits: boolean;
4888
- originalValue: propertyValueType;
4889
- recalculatedValue: propertyValueType;
4890
- isRecalculated: boolean;
4891
- isRequired?: boolean;
4892
- configModels?: IConfigModel[];
4893
- logs?: INodeTermLogs;
4894
- canOpen?: boolean;
4895
- isOpen?: boolean;
4896
- subValues: IBlankNodeLogSubValue[];
4897
- /**
4898
- * If the subValue is duplicated accross multiple groups.
4899
- */
4900
- multiGroups?: boolean;
4371
+ value: string;
4372
+ field?: string;
4901
4373
  }
4902
- interface ILog {
4903
- logs?: INodeTermLogs;
4904
- isOpen: boolean;
4905
- canOpen: boolean;
4374
+ interface IJLogBlankNode {
4375
+ index: number;
4376
+ term?: ITermJSONLD;
4377
+ termId: string;
4378
+ key?: string;
4906
4379
  type?: SchemaType;
4907
- configModels: (IConfigModel | IConfigModel[])[];
4380
+ identity: Record<string, any>;
4381
+ identityLabel: string;
4382
+ identityScalars: IIdentityScalar[];
4383
+ identitySegments: IIdentitySegment[];
4908
4384
  originalValue: propertyValueType;
4909
4385
  recalculatedValue: propertyValueType;
4910
4386
  isOriginal: boolean;
4911
4387
  isRecalculated: boolean;
4912
- hasData: boolean;
4913
4388
  isRequired: boolean;
4914
- allParallel?: boolean;
4915
- }
4916
- interface IBlankNodeLog extends ILog {
4917
- blankNode: true;
4918
- term: ITermJSONLD;
4919
- termId: string;
4920
- keys: IBlankNodeLogSubValue[];
4921
- subValues: IBlankNodeLogSubValue[];
4922
- modelsInSubValues?: boolean;
4389
+ isFailed: boolean;
4923
4390
  original: blankNodesTypeValue[];
4924
- originalValueByMethodId?: {
4925
- [methodId: string]: propertyValueType;
4926
- };
4927
4391
  recalculated: blankNodesTypeValue[];
4928
- recalculatedValueByMethodId?: {
4929
- [methodId: string]: propertyValueType;
4930
- };
4392
+ models: IJLogModelRun[];
4393
+ modelColumns: IJLogModelColumn[];
4394
+ subRows: IJLogBlankNode[];
4395
+ canOpen: boolean;
4396
+ isOpen: boolean;
4397
+ allSucceeded: boolean;
4931
4398
  }
4932
- interface INonBlankNodeLog extends ILog {
4933
- blankNode: false;
4934
- key: string;
4399
+ interface IJLogTermGroup {
4400
+ term?: ITermJSONLD;
4401
+ termId: string;
4402
+ key?: string;
4403
+ type?: SchemaType;
4404
+ rows: IJLogBlankNode[];
4405
+ originalValue: propertyValueType;
4406
+ recalculatedValue: propertyValueType;
4407
+ isRecalculated: boolean;
4408
+ recalculatedFormula?: string;
4409
+ canOpen: boolean;
4410
+ isOpen: boolean;
4411
+ allSucceeded: boolean;
4935
4412
  }
4936
- declare const groupLogsByTerm: (node: IJSONNode, logs: INodeLogs, config: IOrchestratorConfig, allOriginalValues: blankNodesTypeValue[], allRecalculatedValues: blankNodesTypeValue[], nodeKey: blankNodesKey, termsGrouping?: Record<string, string[]>, cycle?: ICycleJSONLD) => (term: ITermJSONLD) => IBlankNodeLog;
4937
- declare const groupdLogsByKey: (node: IJSONNode, nodeKey: nonBlankNodesKey, logs: INodeLogs, originalValue?: nonBlankNodesTypeValue, recalculatedValue?: nonBlankNodesTypeValue) => (key: string) => INonBlankNodeLog;
4938
- declare const groupsLogsByFields: (node: IJSONNode, logs: INodeLogs, originalValue?: Record<string, string | number>, recalculatedValue?: Record<string, string | number>) => (key: string) => INonBlankNodeLog;
4939
- declare const modelCount: (blankNodeLogs: IBlankNodeLog[]) => any;
4940
- declare const logValueArray: (value: unknown) => (string | number | Record<string, string | number>)[];
4413
+ /**
4414
+ * Group the `.jlog` logs for one node key into rows, one per term, keeping every blank node distinct.
4415
+ *
4416
+ * @param jlog The full parsed `.jlog`.
4417
+ * @param nodeKey The node field being shown (e.g. `inputs`, `measurements`).
4418
+ * @param recalculatedValues The recalculated blank nodes for that key (index-aligned with the `.jlog`).
4419
+ * @param originalValues The original blank nodes for that key (matched by uniqueness for the delta).
4420
+ * @param nodeType The node type.
4421
+ * @param getTerm Resolve a term by `@id` (used for `<key>-failed` entries that have no blank node).
4422
+ * @param config The orchestrator config, used to list models that could run for a term.
4423
+ */
4424
+ declare const groupJLogByTerm: (jlog: Record<string, any>, nodeKey: string, recalculatedValues?: blankNodesTypeValue[], originalValues?: blankNodesTypeValue[], nodeType?: NodeType, getTerm?: (id: string) => ITermJSONLD, config?: IOrchestratorConfig) => IJLogTermGroup[];
4425
+ /**
4426
+ * Group the `.jlog` logs for a metadata or completeness node (a `key -> value` map, not blank nodes).
4427
+ *
4428
+ * Each key is one row: the model logs come from the field's own `.jlog` entry (e.g. `startDate`), or
4429
+ * from the shared node-key entry for completeness (`completeness`). Values come from the `key -> value`
4430
+ * original/recalculated maps.
4431
+ *
4432
+ * @param jlog The full parsed `.jlog`.
4433
+ * @param nodeKey The node field being shown (`completeness`, or empty for cycle metadata).
4434
+ * @param originalValues The original `key -> value` map.
4435
+ * @param recalculatedValues The recalculated `key -> value` map.
4436
+ * @param nodeType The node type.
4437
+ */
4438
+ declare const groupJLogByField: (jlog: Record<string, any>, nodeKey: string, originalValues: nonBlankNodesTypeValue, recalculatedValues: nonBlankNodesTypeValue, nodeType?: NodeType) => IJLogTermGroup[];
4439
+ /**
4440
+ * One blank node, labelled by what tells it apart from the others sharing its term.
4441
+ */
4442
+ interface IBlankNodeIdentityRow {
4443
+ index: number;
4444
+ value: any;
4445
+ segments: IIdentitySegment[];
4446
+ scalars: IIdentityScalar[];
4447
+ label: string;
4448
+ }
4449
+ interface IBlankNodeIdentityGroup {
4450
+ term?: ITermJSONLD;
4451
+ termId: string;
4452
+ type?: SchemaType;
4453
+ rows: IBlankNodeIdentityRow[];
4454
+ canOpen: boolean;
4455
+ value: propertyValueType;
4456
+ valueFormula?: string;
4457
+ }
4458
+ /**
4459
+ * Group blank nodes by term, labelling those that share one - the grouping the recalculation logs
4460
+ * show, for a view that has no `.jlog` to read (the aggregation logs).
4461
+ *
4462
+ * The labels come from the schema `uniquenessFields`, so two entries for the same term read as e.g.
4463
+ * "depths: 0-30" or "inputs: Wheat, grain" exactly as they do in the recalculation logs.
4464
+ *
4465
+ * @param values The blank nodes of one node key (e.g. a cycle's `inputs`).
4466
+ * @param nodeType The type of the node holding them (e.g. `Cycle`), for the parent uniqueness fields.
4467
+ * @param nodeKey The node field they were read from (e.g. `inputs`).
4468
+ */
4469
+ declare const groupBlankNodesByTermIdentity: (values: any[], nodeType?: NodeType, nodeKey?: string) => IBlankNodeIdentityGroup[];
4470
+ /**
4471
+ * The maximum number of model columns across all rows, to size the "Model N" columns.
4472
+ */
4473
+ declare const jLogModelCount: (groups: IJLogTermGroup[]) => number;
4941
4474
 
4942
- declare const nodeType: (node?: IJSONNode) => NodeType;
4943
- declare const nodeId: (node?: IJSONNode) => string;
4944
4475
  /**
4945
- * Get the full url to fetch the node data.
4476
+ * Get the most recent version of the models used to recalculate the node.
4946
4477
  *
4947
- * @param apiBaseUrl The url of the API hosting the data.
4948
- * @param node The node with a type, id and optionally a dataState
4949
- * @returns The full url.
4478
+ * @param node
4479
+ * @returns The latest version
4950
4480
  */
4951
- declare const nodeUrl: (apiBaseUrl: string, { dataState, ...node }: IJSONNode) => string;
4952
- declare const nodeLogsUrl: (apiBaseUrl: string, { dataState, dataVersion, ...node }: IJSONNode) => string;
4953
- declare const lookupUrl: (filename: string) => string;
4954
- interface IJSONNode {
4955
- '@type'?: NodeType;
4956
- '@id'?: string;
4957
- type?: NodeType;
4958
- id?: string;
4959
- dataState?: DataState;
4960
- aggregated?: boolean;
4961
- aggregatedDataValidated?: boolean;
4962
- dataVersion?: string;
4481
+ declare const nodeVersion: (node: any) => string;
4482
+
4483
+ declare class NodeAggregatedComponent {
4484
+ protected readonly showInfo: _angular_core.InputSignal<boolean>;
4485
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeAggregatedComponent, never>;
4486
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeAggregatedComponent, "he-node-aggregated", never, { "showInfo": { "alias": "showInfo"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4963
4487
  }
4964
- interface INodeHeaders {
4965
- 'last-modified'?: string;
4966
- stage?: string;
4967
- maxstage?: string;
4968
- error?: string;
4488
+
4489
+ declare class NodeAggregatedInfoComponent {
4490
+ protected readonly icon: _angular_core.InputSignal<svgIconNames>;
4491
+ protected readonly showSource: _angular_core.InputSignal<boolean>;
4492
+ protected readonly showSites: _angular_core.InputSignal<boolean>;
4493
+ protected readonly triggers: _angular_core.InputSignal<string>;
4494
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeAggregatedInfoComponent, never>;
4495
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeAggregatedInfoComponent, "he-node-aggregated-info", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showSource": { "alias": "showSource"; "required": false; "isSignal": true; }; "showSites": { "alias": "showSites"; "required": false; "isSignal": true; }; "triggers": { "alias": "triggers"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4969
4496
  }
4970
- interface IRelatedNode {
4971
- '@type': NodeType;
4972
- '@id': string;
4973
- [x: string]: string;
4497
+
4498
+ /**
4499
+ * What a rule computes: the aggregated value, or one of the weights the values are combined by.
4500
+ */
4501
+ type IFormulaGroup = 'value' | 'weights';
4502
+ /**
4503
+ * One column of the contributors table, named by the symbol the formula reads it with, so the
4504
+ * table and the formula above it use the same names.
4505
+ */
4506
+ interface IContributorColumn {
4507
+ symbol: string;
4508
+ description?: string;
4509
+ column: string;
4510
+ }
4511
+ /**
4512
+ * How the contributors of one stage are named: what a row of the table is, what the group of them is
4513
+ * called mid-sentence, and the heading over them. A Cycle is a node type and keeps its capital; the
4514
+ * aggregations are not.
4515
+ */
4516
+ interface IContributorNames {
4517
+ row: string;
4518
+ group: string;
4519
+ heading: string;
4974
4520
  }
4975
- declare class RelatedNodeResult {
4976
- count: number;
4977
- results: IRelatedNode[];
4521
+ /**
4522
+ * One plantation phase a value was combined from, as the aggregation recorded it: the weight `w_p`
4523
+ * its Cycles shared, how many of them shared it, and the share of the value they ended up with.
4524
+ */
4525
+ interface IPlantationPhase {
4526
+ id: string;
4527
+ label: string;
4528
+ count?: number;
4529
+ weight?: number;
4530
+ share?: number;
4978
4531
  }
4979
- interface IJSONData {
4980
- [NodeType.Cycle]?: ICycleJSONLD[];
4981
- [NodeType.Site]?: ISiteJSONLD[];
4982
- [NodeType.ImpactAssessment]?: IImpactAssessmentJSONLD[];
4532
+ /**
4533
+ * Which Cycles contributed to an aggregated value, and what a Cycle reporting none of it counted
4534
+ * as. It is the half of the calculation the formulas cannot show: they combine what went in, this
4535
+ * says what went in at all, and it is the rule the aggregation applies per Term rather than per
4536
+ * aggregation.
4537
+ */
4538
+ interface IInclusionRule {
4539
+ included: string;
4540
+ blank: string;
4983
4541
  }
4984
- interface INodeErrorLog {
4985
- error: string | IValidationError[];
4986
- warning?: IValidationError[];
4987
- stack?: string;
4542
+ interface IAggregationSection {
4543
+ id: IFormulaGroup;
4544
+ heading: string;
4545
+ formulas: IFormula[];
4988
4546
  }
4989
- type onHeadersCallback = (headers: HttpHeaders) => any;
4990
- type contributions = Record<string, Record<string, number>>;
4991
- interface INodeContributions {
4547
+
4548
+ declare class NodeAggregatedFormulasComponent {
4992
4549
  /**
4993
- * Contributions of each `emissionsResourceUse` to the `impacts`.
4550
+ * The `termType` of the aggregation's primary product, which selects the product-specific page.
4551
+ * Omit it to show the general rules only.
4994
4552
  */
4995
- emissionsResourceUse: Record<string, contributions>;
4553
+ readonly termType: _angular_core.InputSignal<string>;
4996
4554
  /**
4997
- * Contributions of each `impacts` to the `endpoints`.
4555
+ * The `@id` of the aggregation's primary product, which decides whether the plantation rules ran.
4998
4556
  */
4999
- impacts: Record<string, contributions>;
5000
- }
5001
- type nodeContributionsSimplified = Record<string, contributions>;
5002
- /**
5003
- * Re-create the simplified version of the contributions loaded in the Data Explorer.
5004
- *
5005
- * @param impactAssessment
5006
- * @param contributions
5007
- * @returns
5008
- */
5009
- declare const simplifyContributions: (impactAssessment: Partial<IImpactAssessmentJSONLD>, contributions: INodeContributions) => nodeContributionsSimplified;
5010
- declare class HeNodeService {
5011
- protected readonly http: HttpClient;
5012
- protected readonly commonService: HeCommonService;
5013
- getWithHeaders$<T>({ dataState, ...node }: IJSONNode, params?: {}): rxjs.Observable<{
5014
- headers: HttpHeaders;
5015
- data: T;
4557
+ readonly termId: _angular_core.InputSignal<string>;
4558
+ /**
4559
+ * The blank node key the formulas are shown for (`products`, `emissions`, ...). Omit it to show
4560
+ * every rule; set it and only the rules that apply to that kind of data item are kept.
4561
+ */
4562
+ readonly nodeKey: _angular_core.InputSignal<string>;
4563
+ /**
4564
+ * The Term of the data item shown, which decides how a Cycle reporting no value for it was
4565
+ * counted: some are zero-filled, others skipped.
4566
+ */
4567
+ readonly term: _angular_core.InputSignal<ITermJSONLD>;
4568
+ /**
4569
+ * The quantities the formulas bind to, for this data item. Supplied by the caller from the
4570
+ * node's `.jlog` entries recorded by the aggregation (`model: "aggregation"`). Leave it empty
4571
+ * and every symbol stays symbolic, which is a valid state: aggregation logs are opt-in
4572
+ * (`LOG_JSON_ENABLED`) and absent for most aggregations.
4573
+ */
4574
+ readonly values: _angular_core.InputSignal<Record<string, unknown>>;
4575
+ /**
4576
+ * Whether the aggregation covers the World rather than one country. A World aggregation combines
4577
+ * country aggregations by their share of world production; a country one never does, so that rule
4578
+ * is not part of how its values were produced.
4579
+ */
4580
+ readonly worldAggregation: _angular_core.InputSignal<boolean>;
4581
+ /**
4582
+ * Whether the Cycle is one of the sub-aggregations an aggregation is combined from, in which case
4583
+ * the sub-system weighting is one of the stages that produced its values. Defaults to showing the
4584
+ * stage, so a caller that cannot tell keeps the rule documented.
4585
+ */
4586
+ readonly subAggregation: _angular_core.InputSignal<boolean>;
4587
+ protected readonly substituted: _angular_core.ModelSignal<boolean>;
4588
+ /**
4589
+ * The rules that produced this value, grouped by what each one computes.
4590
+ */
4591
+ protected readonly sections: _angular_core.Signal<IAggregationSection[]>;
4592
+ protected readonly inclusion: _angular_core.Signal<IInclusionRule>;
4593
+ protected readonly weighted: _angular_core.Signal<boolean>;
4594
+ protected readonly hasSubstitutions: _angular_core.Signal<boolean>;
4595
+ /**
4596
+ * What this value was combined from, as the aggregation recorded it: one row per contributor,
4597
+ * under the symbols the formulas above read them with. Absent where the contributors were too
4598
+ * many to record, which is every aggregation built straight from source Cycles - their number
4599
+ * is shown instead.
4600
+ */
4601
+ protected readonly contributors: _angular_core.Signal<{
4602
+ rows: {
4603
+ node: {
4604
+ '@type': NodeType;
4605
+ '@id': string;
4606
+ };
4607
+ id: string;
4608
+ label: string;
4609
+ values: (string | undefined)[];
4610
+ }[];
4611
+ columns: IContributorColumn[];
4612
+ count?: number;
5016
4613
  }>;
5017
- get$<T>(node: IJSONNode, params?: {}, onHeaders?: onHeadersCallback): rxjs.Observable<T>;
5018
- get<T>(node: IJSONNode, defaultForState?: boolean): Promise<T>;
5019
- head$(node: IJSONNode, dataVersion?: string): rxjs.Observable<INodeHeaders>;
5020
- getRelated$(node: IJSONNode, relatedType: NodeType, limit?: number, offset?: number, relationship?: string, dataVersion?: string): rxjs.Observable<RelatedNodeResult>;
5021
- getLog$({ dataState, aggregated, dataVersion, ...node }: IJSONNode, format?: 'text' | 'json'): rxjs.Observable<any>;
5022
- getContributions$({ dataState, ...impactAssessment }: IJSONNode & Partial<IImpactAssessmentJSONLD>): rxjs.Observable<INodeContributions>;
5023
- private getContributionsFromLog$;
5024
- getErrorLog$({ dataState, aggregated, ...node }: IJSONNode): rxjs.Observable<INodeErrorLog>;
5025
- getMissingLookupsLog$({ dataState, ...node }: IJSONNode): rxjs.Observable<INodeMissingLookupLog[]>;
5026
- triggerPipeline({ dataState, aggregated, ...node }: IJSONNode): Promise<Object>;
5027
- downloadRaw$<T = any>(url: string, responseType?: any): rxjs.Observable<T>;
5028
- nodeTypeUrl(type: any): string;
5029
- nodeUrl(node: IJSONNode): string;
5030
- nodeLogsUrl(node: IJSONNode): string;
5031
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeNodeService, never>;
5032
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<HeNodeService>;
4614
+ protected readonly phases: _angular_core.Signal<IPlantationPhase[]>;
4615
+ protected readonly contributor: _angular_core.Signal<IContributorNames>;
4616
+ protected readonly renderedSections: _angular_core.Signal<{
4617
+ formulas: {
4618
+ rendered: string;
4619
+ section: string;
4620
+ context: string;
4621
+ variables: {
4622
+ symbol: string;
4623
+ description: string;
4624
+ missing: boolean;
4625
+ note: string;
4626
+ }[];
4627
+ }[];
4628
+ id: IFormulaGroup;
4629
+ heading: string;
4630
+ }[]>;
4631
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeAggregatedFormulasComponent, never>;
4632
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeAggregatedFormulasComponent, "he-node-aggregated-formulas", never, { "termType": { "alias": "termType"; "required": false; "isSignal": true; }; "termId": { "alias": "termId"; "required": false; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "term": { "alias": "term"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "worldAggregation": { "alias": "worldAggregation"; "required": false; "isSignal": true; }; "subAggregation": { "alias": "subAggregation"; "required": false; "isSignal": true; }; "substituted": { "alias": "substituted"; "required": false; "isSignal": true; }; }, { "substituted": "substitutedChange"; }, never, never, true, never>;
5033
4633
  }
5034
4634
 
5035
- interface IStoredNode {
4635
+ interface IAggregationRow {
5036
4636
  index: number;
5037
- type: NodeType;
5038
- id: string;
4637
+ value: any;
4638
+ term?: ITermJSONLD;
4639
+ segments: IBlankNodeIdentityGroup['rows'][0]['segments'];
4640
+ scalars: IBlankNodeIdentityGroup['rows'][0]['scalars'];
4641
+ label: string;
4642
+ values: Record<string, unknown>;
4643
+ displayValue: propertyValueType;
4644
+ observations?: number;
5039
4645
  }
5040
- type nodeStates = {
5041
- [dataState in DataState]?: JSONLD<NodeType>;
5042
- };
5043
- type nodes = {
5044
- [nodeType in NodeType]?: (nodeStates & IStoredNode)[];
5045
- };
5046
- declare const nodeTypeDataState: {
5047
- [type in NodeType]?: {
5048
- default: DataState[];
5049
- aggregated?: DataState[];
5050
- };
5051
- };
5052
- interface INodeRequestParams {
5053
- version?: string;
5054
- dataVersion?: string;
4646
+ interface IAggregationGroup extends Omit<IBlankNodeIdentityGroup, 'rows'> {
4647
+ rows: IAggregationRow[];
4648
+ isOpen: boolean;
4649
+ observations?: string;
5055
4650
  }
5056
- declare const nodeRequestId: <T extends Pick<JSONLD<NodeType>, "@id">>(node: T, params?: INodeRequestParams) => string;
5057
- type dataTransformFunc = <T>(node: T) => T;
5058
- declare const mergeDataWithHeaders: <T extends JSONLD<NodeType>>(data: T, headers: HttpHeaders) => T & INodeHeaders;
5059
- declare const nodesByType: (nodes: nodes, nodeType: NodeType) => (nodeStates & IStoredNode)[];
5060
- declare const nodeIds: (nodes: nodes, nodeType: NodeType) => string[];
5061
- declare const nodeById: (nodes: nodes, nodeType: NodeType, id?: string) => (nodeStates & IStoredNode)[];
5062
- declare const nodesByState: (nodes: nodes, nodeType: NodeType, dataState: DataState, id?: string) => JSONLD<NodeType>[];
5063
- declare class HeNodeStoreService {
4651
+ declare class NodeAggregationLogsComponent {
4652
+ private readonly nodeLogsModelsService;
4653
+ /**
4654
+ * The aggregated node the data items are read from.
4655
+ */
4656
+ readonly node: _angular_core.InputSignal<IJSONNode>;
4657
+ /**
4658
+ * The blank node key shown, e.g. `products` or `emissions`. It also selects which rules apply
4659
+ * to each row: the economic value share is only rescaled for products, and zero-filling only
4660
+ * applies where terms carry a completeness area.
4661
+ */
4662
+ readonly nodeKey: _angular_core.InputSignal<string>;
4663
+ /**
4664
+ * The `termType` of the aggregation's primary product, which selects the product-specific rules.
4665
+ */
4666
+ readonly termType: _angular_core.InputSignal<string>;
4667
+ /**
4668
+ * The `@id` of the aggregation's primary product, which decides whether the plantation rules ran.
4669
+ */
4670
+ readonly termId: _angular_core.InputSignal<string>;
4671
+ /**
4672
+ * For a grouped sub-node view (e.g. an animal's inputs), the `.jlog` is nested under its parent:
4673
+ * scope to `jlog[<parentKey>][<parentIndex>]`, as the recalculation logs do.
4674
+ */
4675
+ readonly jlogParentKey: _angular_core.InputSignal<string>;
4676
+ readonly jlogParentIndex: _angular_core.InputSignal<number>;
4677
+ protected readonly guideEnabled: boolean;
4678
+ protected readonly modelName = "Aggregation";
4679
+ protected readonly guidePage: _angular_core.Signal<string>;
4680
+ protected readonly guideHref: _angular_core.Signal<string>;
4681
+ private readonly nodeType;
4682
+ protected readonly worldAggregation: _angular_core.Signal<boolean>;
4683
+ /**
4684
+ * The node's `.jlog`, fetched like the recalculation logs fetch theirs: the aggregation records the
4685
+ * quantities its formulas bind to in the same file, under the same `{<field>: {<index>: {logs: []}}}`
4686
+ * shape. It is empty for most aggregations - the logs are opt-in (`LOG_JSON_ENABLED`) - and every
4687
+ * rule then renders symbolically, which is a valid state rather than an error.
4688
+ */
4689
+ private readonly jlogResource;
4690
+ private readonly jlog;
4691
+ private readonly scopedJlog;
4692
+ private readonly nodeValues;
4693
+ protected readonly subAggregation: _angular_core.Signal<boolean>;
4694
+ /**
4695
+ * The `.jlog` of every sub-aggregation this Cycle was combined from, for the country shares the
4696
+ * aggregation only records on them. Best effort: a reader without access to a sub-aggregation
4697
+ * gets nothing back, and those symbols stay symbolic - which is how they render today.
4698
+ */
4699
+ private readonly contributorsResource;
4700
+ private readonly sharedLookups;
4701
+ private readonly openGroups;
4702
+ /**
4703
+ * The aggregated data items, grouped by term exactly as the recalculation logs group them: several
4704
+ * entries for one term (e.g. a measurement at two depths) collapse into one expandable group whose
4705
+ * rows are labelled by what tells them apart.
4706
+ */
4707
+ private readonly allGroups;
4708
+ /**
4709
+ * The rules that produced these values, which the row's `Logs` panel shows. They are read from the
4710
+ * documentation shipped by `@hestia-earth/aggregation-engine`, so an older copy of it can document
4711
+ * none that apply to this aggregation - and the panel would then open on nothing.
4712
+ */
4713
+ protected readonly hasRules: _angular_core.Signal<boolean>;
4714
+ protected readonly term: _angular_core.WritableSignal<ITermJSONLD>;
4715
+ protected readonly typeaheadFocus: (e: Event) => void;
4716
+ protected readonly allTerms: _angular_core.Signal<ITermJSONLD[]>;
4717
+ protected readonly enableFilterByTerm: _angular_core.Signal<boolean>;
4718
+ protected readonly termFormatter: ({ name }: ITermJSONLD) => string;
4719
+ protected readonly suggestTerm: (text$: Observable<string>) => Observable<ITermJSONLD[]>;
4720
+ protected readonly groups: _angular_core.Signal<IAggregationGroup[]>;
4721
+ protected toggleGroup(group: IAggregationGroup): void;
4722
+ protected trackByGroup(_index: number, group: IAggregationGroup): string;
4723
+ protected trackByRow(_index: number, row: IAggregationRow): string;
4724
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeAggregationLogsComponent, never>;
4725
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeAggregationLogsComponent, "he-node-aggregation-logs", never, { "node": { "alias": "node"; "required": false; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "termType": { "alias": "termType"; "required": false; "isSignal": true; }; "termId": { "alias": "termId"; "required": false; "isSignal": true; }; "jlogParentKey": { "alias": "jlogParentKey"; "required": false; "isSignal": true; }; "jlogParentIndex": { "alias": "jlogParentIndex"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4726
+ }
4727
+
4728
+ declare class NodeAggregatedQualityScoreComponent {
4729
+ private readonly searchService;
5064
4730
  private readonly nodeService;
5065
- private _nodesLoadRequests;
5066
- readonly nodes: _angular_core.WritableSignal<nodes>;
5067
- readonly sortedNodes: _angular_core.Signal<nodes>;
5068
- private findNodeIndex;
5069
- private updateNodeList;
5070
- private loadNode;
4731
+ private readonly nodeLogsModelsService;
4732
+ protected get hidden(): boolean;
4733
+ protected readonly node: _angular_core.InputSignal<IImpactAssessmentJSONLD | ICycleJSONLD>;
4734
+ protected readonly country: _angular_core.InputSignal<Term | ITermJSONLD>;
5071
4735
  /**
5072
- * Fetch node data from the API, and add to the store.
5073
- *
5074
- * @param node
5075
- * @param params Optional query parameters to send with the request to the API.
5076
- * @param dataTransform Function to transform the received data.
5077
- * @returns
4736
+ * Load and show info tooltip.
5078
4737
  */
5079
- addNode<T extends Pick<JSONLD<NodeType>, '@type' | '@id'>>(node: T, params?: INodeRequestParams, dataTransform?: dataTransformFunc): Observable<nodeStates & IStoredNode>;
5080
- removeNodeByIndex(nodeType: NodeType, index: number): void;
5081
- removeNode<T extends JSONLD<NodeType>>(node: T, params?: INodeRequestParams): void;
5082
- clearNodes(): void;
5083
- clearNodesByType(nodeType: NodeType): void;
5084
- nodeIds(nodeType: NodeType): string[];
5085
- findByState<T extends JSONLD<NodeType>>(nodeType: NodeType, dataState: DataState, id?: string): T[];
5086
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeNodeStoreService, never>;
5087
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<HeNodeStoreService>;
4738
+ protected readonly showInfo: _angular_core.InputSignal<boolean>;
4739
+ protected readonly mode: _angular_core.InputSignal<"text" | "tag">;
4740
+ protected readonly placement: _angular_core.InputSignal<string>;
4741
+ private readonly nodeCountry;
4742
+ protected readonly countryName: _angular_core.Signal<string>;
4743
+ private readonly countryResource;
4744
+ private readonly countryId;
4745
+ private readonly jlogResource;
4746
+ private readonly jlogLogs;
4747
+ private readonly loadingJLog;
4748
+ private readonly useJLog;
4749
+ private readonly logsResource;
4750
+ protected readonly logs: _angular_core.Signal<any>;
4751
+ protected readonly validScores: _angular_core.Signal<{
4752
+ [position: number]: boolean;
4753
+ }>;
4754
+ protected readonly minObservations: _angular_core.Signal<number>;
4755
+ protected readonly observations: _angular_core.Signal<number>;
4756
+ private readonly missingEmissionIds;
4757
+ private readonly missingEmissionsResource;
4758
+ protected readonly missingEmissions: _angular_core.Signal<ITermJSONLD[]>;
4759
+ protected readonly missingCompletenessFields: _angular_core.Signal<string[]>;
4760
+ protected readonly isCycle: _angular_core.Signal<boolean>;
4761
+ private readonly product;
4762
+ protected readonly score: _angular_core.Signal<number>;
4763
+ protected readonly scoreMax: _angular_core.Signal<number>;
4764
+ protected readonly scoreLevel: _angular_core.Signal<_hestia_earth_ui_components.NodeQualityScore>;
4765
+ protected readonly scoreColor: _angular_core.Signal<string>;
4766
+ protected readonly isCrop: _angular_core.Signal<boolean>;
4767
+ protected readonly isGlobal: _angular_core.Signal<any>;
4768
+ protected readonly schemaBaseUrl: _angular_core.Signal<string>;
4769
+ protected readonly schemaUrl: _angular_core.Signal<string>;
4770
+ protected readonly hasFaostatYield: _angular_core.Signal<boolean>;
4771
+ protected readonly hasProductionQuantity: _angular_core.Signal<boolean>;
4772
+ protected readonly regionProductionQuantity: _angular_core.Signal<number>;
4773
+ protected readonly countriesProductionQuantity: _angular_core.Signal<number>;
4774
+ protected readonly loading: _angular_core.Signal<boolean>;
4775
+ protected completenessUrl(key: string): string;
4776
+ protected trackByTerm(index: number, term: ITermJSONLD): string;
4777
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeAggregatedQualityScoreComponent, never>;
4778
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeAggregatedQualityScoreComponent, "he-node-aggregated-quality-score", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "country": { "alias": "country"; "required": false; "isSignal": true; }; "showInfo": { "alias": "showInfo"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5088
4779
  }
5089
4780
 
5090
- declare const nodeDataState: (node?: Pick<JSONLD<NodeType>, "@type">) => DataState;
5091
- declare const nodeDataStates: (node?: JSONLD<NodeType>) => DataState[];
5092
- declare const nodeUrlParams: (dataState?: DataState, dataVersion?: string) => string;
5093
- declare const nodeLink: (node: Pick<JSONLD<NodeType>, "@type" | "@id">, dataState?: DataState, dataVersion?: string) => string;
5094
- declare const nodeLinkTypeEnabled: (type: SchemaType | NodeType) => boolean;
5095
- declare const nodeLinkEnabled: (node: any) => boolean;
5096
- /**
5097
- * Open a node's page, as `he-node-link` would.
5098
- */
5099
- declare const openNodeUrl: (node: Pick<JSONLD<NodeType>, "@type" | "@id">, dataVersion?: string) => Window;
5100
- declare enum NodeQualityScore {
5101
- low = "Low",
5102
- medium = "Medium",
5103
- high = "High"
4781
+ interface INodeIncluded {
4782
+ node: JSONLD<any>;
4783
+ included: boolean;
5104
4784
  }
5105
- declare const nodeQualityScoreMaxDefault = 4;
5106
- declare const nodeQualityScoreLevel: (score: number, max?: number) => NodeQualityScore;
5107
- declare const nodeQualityScoreColor: {
5108
- [score in NodeQualityScore]: string;
5109
- };
5110
- declare const nodeQualityScoreOrder: string[];
5111
- declare const nodeToAggregationFilename: (node: any, countryId: string) => string;
5112
- declare const isMaxStage: (node: any) => boolean;
5113
- declare const nodeTypeIcon: {
5114
- [nodeType in SchemaType]?: svgIconNames;
5115
- };
5116
- declare const nodeTypeIconSchema: {
5117
- [nodeType in SchemaType]?: svgIconNames;
5118
- };
5119
-
5120
- declare const nodeColours: {
5121
- Cycle: string;
5122
- Site: string;
5123
- ImpactAssessment: string;
5124
- Source: string;
5125
- };
5126
- declare const nodeSecondaryColours: {
5127
- Cycle: string;
5128
- Site: string;
5129
- ImpactAssessment: string;
5130
- Source: string;
5131
- };
5132
-
5133
- /**
5134
- * A single `.jlog` `logs[]` entry, mapped to the same shape as the legacy `IConfigModel` so the
5135
- * existing per-model status/logs components can be reused without changes.
5136
- */
5137
- interface IJLogModelRun extends IConfigModel {
5138
- methodId: string;
5139
- status: LogStatus;
5140
- logs: INodeTermLog;
5141
- showLogs: boolean;
5142
- model?: IModel;
5143
- modelKey?: string;
4785
+ declare class NodeCsvExportConfirmComponent {
4786
+ private readonly domSanitizer;
4787
+ private readonly activeModal;
4788
+ protected readonly headers: _angular_core.WritableSignal<string[]>;
4789
+ readonly nodes: _angular_core.ModelSignal<(JSONLD<any> | JSON<any>)[]>;
4790
+ readonly filename: _angular_core.ModelSignal<string>;
4791
+ readonly headerKeys: _angular_core.ModelSignal<string[]>;
4792
+ readonly extension: _angular_core.ModelSignal<SupportedExtensions>;
4793
+ readonly isUpload: _angular_core.ModelSignal<boolean>;
4794
+ protected readonly closed: _angular_core.OutputEmitterRef<void>;
4795
+ protected readonly showIncludeNodes: _angular_core.WritableSignal<boolean>;
4796
+ protected readonly includedNodes: _angular_core.Signal<INodeIncluded[]>;
4797
+ private readonly included;
4798
+ protected readonly csvData: _angular_core.Signal<string>;
4799
+ protected readonly csvContent: _angular_core.Signal<_angular_platform_browser.SafeResourceUrl>;
4800
+ protected readonly downloadFilename: _angular_core.Signal<string>;
4801
+ protected close(): void;
4802
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeCsvExportConfirmComponent, never>;
4803
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeCsvExportConfirmComponent, "he-node-csv-export-confirm", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "headerKeys": { "alias": "headerKeys"; "required": false; "isSignal": true; }; "extension": { "alias": "extension"; "required": false; "isSignal": true; }; "isUpload": { "alias": "isUpload"; "required": false; "isSignal": true; }; }, { "nodes": "nodesChange"; "filename": "filenameChange"; "headerKeys": "headerKeysChange"; "extension": "extensionChange"; "isUpload": "isUploadChange"; "closed": "closed"; }, never, never, true, never>;
5144
4804
  }
5145
- type IJLogModelColumn = IJLogModelRun | IJLogModelRun[];
5146
- interface IIdentitySegment {
5147
- field: string;
5148
- terms: ITermJSONLD[];
4805
+
4806
+ declare class NodeCsvPreviewComponent {
4807
+ private readonly domSanitizer;
4808
+ private readonly schemaService;
4809
+ private readonly schemas;
4810
+ protected readonly nodes: _angular_core.InputSignal<any[]>;
4811
+ protected readonly compacted: _angular_core.InputSignal<boolean>;
4812
+ protected readonly showDownload: _angular_core.InputSignal<boolean>;
4813
+ protected readonly csvOptions: _angular_core.InputSignal<IConvertCSVOptions>;
4814
+ protected readonly csvNotice: _angular_core.InputSignal<string>;
4815
+ private readonly _csv;
4816
+ protected readonly csv: _angular_core.Signal<_angular_platform_browser.SafeResourceUrl>;
4817
+ private readonly parsedCsv;
4818
+ protected readonly headers: _angular_core.Signal<string[]>;
4819
+ protected readonly rows: _angular_core.Signal<string[][]>;
4820
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeCsvPreviewComponent, never>;
4821
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeCsvPreviewComponent, "he-node-csv-preview", never, { "nodes": { "alias": "nodes"; "required": true; "isSignal": true; }; "compacted": { "alias": "compacted"; "required": false; "isSignal": true; }; "showDownload": { "alias": "showDownload"; "required": false; "isSignal": true; }; "csvOptions": { "alias": "csvOptions"; "required": false; "isSignal": true; }; "csvNotice": { "alias": "csvNotice"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5149
4822
  }
5150
- interface IIdentityScalar {
4823
+
4824
+ interface IHeader {
5151
4825
  key: string;
5152
- value: string;
5153
- field?: string;
5154
- }
5155
- interface IJLogBlankNode {
5156
- index: number;
5157
- term?: ITermJSONLD;
5158
- termId: string;
5159
- key?: string;
5160
- type?: SchemaType;
5161
- identity: Record<string, any>;
5162
- identityLabel: string;
5163
- identityScalars: IIdentityScalar[];
5164
- identitySegments: IIdentitySegment[];
5165
- originalValue: propertyValueType;
5166
- recalculatedValue: propertyValueType;
5167
- isOriginal: boolean;
5168
- isRecalculated: boolean;
5169
- isRequired: boolean;
5170
- isFailed: boolean;
5171
- original: blankNodesTypeValue[];
5172
- recalculated: blankNodesTypeValue[];
5173
- models: IJLogModelRun[];
5174
- modelColumns: IJLogModelColumn[];
5175
- subRows: IJLogBlankNode[];
5176
- canOpen: boolean;
5177
- isOpen: boolean;
5178
- allSucceeded: boolean;
4826
+ selected: boolean;
4827
+ /**
4828
+ * `false` if it is an `internal` field.
4829
+ */
4830
+ included: boolean;
5179
4831
  }
5180
- interface IJLogTermGroup {
5181
- term?: ITermJSONLD;
5182
- termId: string;
5183
- key?: string;
5184
- type?: SchemaType;
5185
- rows: IJLogBlankNode[];
5186
- originalValue: propertyValueType;
5187
- recalculatedValue: propertyValueType;
5188
- isRecalculated: boolean;
5189
- recalculatedFormula?: string;
5190
- canOpen: boolean;
5191
- isOpen: boolean;
5192
- allSucceeded: boolean;
4832
+ interface IGroup {
4833
+ key: string;
4834
+ selected: boolean;
4835
+ partialSelected: boolean;
4836
+ open: boolean;
4837
+ headers: IHeader[];
5193
4838
  }
5194
- /**
5195
- * Group the `.jlog` logs for one node key into rows, one per term, keeping every blank node distinct.
5196
- *
5197
- * @param jlog The full parsed `.jlog`.
5198
- * @param nodeKey The node field being shown (e.g. `inputs`, `measurements`).
5199
- * @param recalculatedValues The recalculated blank nodes for that key (index-aligned with the `.jlog`).
5200
- * @param originalValues The original blank nodes for that key (matched by uniqueness for the delta).
5201
- * @param nodeType The node type.
5202
- * @param getTerm Resolve a term by `@id` (used for `<key>-failed` entries that have no blank node).
5203
- * @param config The orchestrator config, used to list models that could run for a term.
5204
- */
5205
- declare const groupJLogByTerm: (jlog: Record<string, any>, nodeKey: string, recalculatedValues?: blankNodesTypeValue[], originalValues?: blankNodesTypeValue[], nodeType?: NodeType, getTerm?: (id: string) => ITermJSONLD, config?: IOrchestratorConfig) => IJLogTermGroup[];
5206
- /**
5207
- * Group the `.jlog` logs for a metadata or completeness node (a `key -> value` map, not blank nodes).
5208
- *
5209
- * Each key is one row: the model logs come from the field's own `.jlog` entry (e.g. `startDate`), or
5210
- * from the shared node-key entry for completeness (`completeness`). Values come from the `key -> value`
5211
- * original/recalculated maps.
5212
- *
5213
- * @param jlog The full parsed `.jlog`.
5214
- * @param nodeKey The node field being shown (`completeness`, or empty for cycle metadata).
5215
- * @param originalValues The original `key -> value` map.
5216
- * @param recalculatedValues The recalculated `key -> value` map.
5217
- * @param nodeType The node type.
5218
- */
5219
- declare const groupJLogByField: (jlog: Record<string, any>, nodeKey: string, originalValues: nonBlankNodesTypeValue, recalculatedValues: nonBlankNodesTypeValue, nodeType?: NodeType) => IJLogTermGroup[];
5220
- /**
5221
- * One blank node, labelled by what tells it apart from the others sharing its term.
5222
- */
5223
- interface IBlankNodeIdentityRow {
5224
- index: number;
5225
- value: any;
5226
- segments: IIdentitySegment[];
5227
- scalars: IIdentityScalar[];
5228
- label: string;
4839
+ interface IGroupedHeaders {
4840
+ [group: string]: IGroup;
5229
4841
  }
5230
- interface IBlankNodeIdentityGroup {
5231
- term?: ITermJSONLD;
5232
- termId: string;
5233
- type?: SchemaType;
5234
- rows: IBlankNodeIdentityRow[];
5235
- canOpen: boolean;
5236
- value: propertyValueType;
5237
- valueFormula?: string;
4842
+ declare class NodeCsvSelectHeadersComponent {
4843
+ private readonly schemaService;
4844
+ protected readonly csv: _angular_core.InputSignal<string>;
4845
+ protected readonly keys: _angular_core.InputSignal<string[]>;
4846
+ protected readonly includeDefaultCSV: _angular_core.InputSignal<boolean>;
4847
+ protected readonly headersChanged: _angular_core.OutputEmitterRef<string[]>;
4848
+ protected readonly termFields: string[];
4849
+ protected readonly selectedTermFields: _angular_core.WritableSignal<string[]>;
4850
+ protected readonly showNonIncluded: _angular_core.WritableSignal<boolean>;
4851
+ protected readonly allSelected: _angular_core.Signal<boolean>;
4852
+ private readonly selectedHeaders;
4853
+ private readonly schemas;
4854
+ private readonly headersResource;
4855
+ protected readonly loading: _angular_core.Signal<boolean>;
4856
+ private readonly csvHeaders;
4857
+ protected readonly headers: _angular_core.WritableSignal<IGroupedHeaders>;
4858
+ protected readonly groups: _angular_core.Signal<IGroup[]>;
4859
+ constructor();
4860
+ private updateHeadersGroup;
4861
+ protected dropHeader(event: CdkDragDrop<IHeader[]>, group: IGroup): void;
4862
+ protected selectAll(allSelected: boolean): void;
4863
+ protected updateGroup(selected: boolean, group: IGroup): void;
4864
+ protected updateHeader(selected: boolean, group: IGroup, header: IHeader): void;
4865
+ protected isTermFieldSelect(field: string): boolean;
4866
+ protected toggleTermField(selected: boolean, field: string): void;
4867
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeCsvSelectHeadersComponent, never>;
4868
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeCsvSelectHeadersComponent, "he-node-csv-select-headers", never, { "csv": { "alias": "csv"; "required": true; "isSignal": true; }; "keys": { "alias": "keys"; "required": false; "isSignal": true; }; "includeDefaultCSV": { "alias": "includeDefaultCSV"; "required": false; "isSignal": true; }; }, { "headersChanged": "headersChanged"; }, never, never, true, never>;
5238
4869
  }
5239
- /**
5240
- * Group blank nodes by term, labelling those that share one - the grouping the recalculation logs
5241
- * show, for a view that has no `.jlog` to read (the aggregation logs).
5242
- *
5243
- * The labels come from the schema `uniquenessFields`, so two entries for the same term read as e.g.
5244
- * "depths: 0-30" or "inputs: Wheat, grain" exactly as they do in the recalculation logs.
5245
- *
5246
- * @param values The blank nodes of one node key (e.g. a cycle's `inputs`).
5247
- * @param nodeType The type of the node holding them (e.g. `Cycle`), for the parent uniqueness fields.
5248
- * @param nodeKey The node field they were read from (e.g. `inputs`).
5249
- */
5250
- declare const groupBlankNodesByTermIdentity: (values: any[], nodeType?: NodeType, nodeKey?: string) => IBlankNodeIdentityGroup[];
5251
- /**
5252
- * The maximum number of model columns across all rows, to size the "Model N" columns.
5253
- */
5254
- declare const jLogModelCount: (groups: IJLogTermGroup[]) => number;
5255
-
5256
- /**
5257
- * Get the most recent version of the models used to recalculate the node.
5258
- *
5259
- * @param node
5260
- * @returns The latest version
5261
- */
5262
- declare const nodeVersion: (node: any) => string;
5263
4870
 
5264
- declare class NodeAggregatedComponent {
5265
- protected readonly showInfo: _angular_core.InputSignal<boolean>;
5266
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeAggregatedComponent, never>;
5267
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeAggregatedComponent, "he-node-aggregated", never, { "showInfo": { "alias": "showInfo"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4871
+ declare class NodeIconComponent {
4872
+ protected readonly type: _angular_core.InputSignal<NodeType>;
4873
+ protected readonly size: _angular_core.InputSignal<_hestia_earth_ui_components.svgIconSizes>;
4874
+ protected readonly icon: _angular_core.Signal<_hestia_earth_ui_components.svgIconNames>;
4875
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeIconComponent, never>;
4876
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeIconComponent, "he-node-icon", never, { "type": { "alias": "type"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5268
4877
  }
5269
4878
 
5270
- declare class NodeAggregatedInfoComponent {
5271
- protected readonly icon: _angular_core.InputSignal<svgIconNames>;
5272
- protected readonly showSource: _angular_core.InputSignal<boolean>;
5273
- protected readonly showSites: _angular_core.InputSignal<boolean>;
5274
- protected readonly triggers: _angular_core.InputSignal<string>;
5275
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeAggregatedInfoComponent, never>;
5276
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeAggregatedInfoComponent, "he-node-aggregated-info", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showSource": { "alias": "showSource"; "required": false; "isSignal": true; }; "showSites": { "alias": "showSites"; "required": false; "isSignal": true; }; "triggers": { "alias": "triggers"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4879
+ declare class NodeJsonldComponent {
4880
+ protected readonly node: _angular_core.InputSignal<any>;
4881
+ protected readonly data: _angular_core.Signal<any>;
4882
+ protected readonly enableCsv: _angular_core.InputSignal<boolean>;
4883
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeJsonldComponent, never>;
4884
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeJsonldComponent, "he-node-jsonld", never, { "node": { "alias": "node"; "required": false; "isSignal": true; }; "enableCsv": { "alias": "enableCsv"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5277
4885
  }
5278
4886
 
5279
- /**
5280
- * What a rule computes: the aggregated value, or one of the weights the values are combined by.
5281
- */
5282
- type IFormulaGroup = 'value' | 'weights';
5283
- /**
5284
- * One column of the contributors table, named by the symbol the formula reads it with, so the
5285
- * table and the formula above it use the same names.
5286
- */
5287
- interface IContributorColumn {
5288
- symbol: string;
5289
- description?: string;
5290
- column: string;
5291
- }
5292
- /**
5293
- * How the contributors of one stage are named: what a row of the table is, what the group of them is
5294
- * called mid-sentence, and the heading over them. A Cycle is a node type and keeps its capital; the
5295
- * aggregations are not.
5296
- */
5297
- interface IContributorNames {
5298
- row: string;
5299
- group: string;
5300
- heading: string;
4887
+ declare enum Views {
4888
+ jsonld = "JSON-LD",
4889
+ csv = "CSV",
4890
+ csvCompacted = "CSV (Compacted)"
5301
4891
  }
5302
- /**
5303
- * Which Cycles contributed to an aggregated value, and what a Cycle reporting none of it counted
5304
- * as. It is the half of the calculation the formulas cannot show: they combine what went in, this
5305
- * says what went in at all, and it is the rule the aggregation applies per Term rather than per
5306
- * aggregation.
5307
- */
5308
- interface IInclusionRule {
5309
- included: string;
5310
- blank: string;
4892
+ declare class NodeJsonldSchemaComponent {
4893
+ protected readonly content: _angular_core.InputSignal<any>;
4894
+ protected readonly enableCsv: _angular_core.InputSignal<boolean>;
4895
+ protected readonly csvOptions: _angular_core.InputSignal<IConvertCSVOptions>;
4896
+ protected readonly csvNotice: _angular_core.InputSignal<string>;
4897
+ protected readonly showSchemaButton: _angular_core.InputSignal<boolean>;
4898
+ protected readonly useTabs: _angular_core.InputSignal<boolean>;
4899
+ protected readonly Views: typeof Views;
4900
+ protected readonly views: _angular_core.Signal<Views[]>;
4901
+ protected readonly selectedView: _angular_core.ModelSignal<Views>;
4902
+ protected readonly nodes: _angular_core.Signal<any>;
4903
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeJsonldSchemaComponent, never>;
4904
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeJsonldSchemaComponent, "he-node-jsonld-schema", never, { "content": { "alias": "content"; "required": true; "isSignal": true; }; "enableCsv": { "alias": "enableCsv"; "required": false; "isSignal": true; }; "csvOptions": { "alias": "csvOptions"; "required": false; "isSignal": true; }; "csvNotice": { "alias": "csvNotice"; "required": false; "isSignal": true; }; "showSchemaButton": { "alias": "showSchemaButton"; "required": false; "isSignal": true; }; "useTabs": { "alias": "useTabs"; "required": false; "isSignal": true; }; "selectedView": { "alias": "selectedView"; "required": false; "isSignal": true; }; }, { "selectedView": "selectedViewChange"; }, never, never, true, never>;
5311
4905
  }
5312
- interface IAggregationSection {
5313
- id: IFormulaGroup;
5314
- heading: string;
5315
- formulas: IFormula[];
4906
+
4907
+ declare class NodeLinkComponent {
4908
+ private readonly route;
4909
+ private readonly dataVersion;
4910
+ protected readonly node: _angular_core.InputSignal<Pick<JSONLD<NodeType>, "@id" | "@type">>;
4911
+ protected readonly dataState: _angular_core.InputSignal<DataState>;
4912
+ protected readonly showExternalLink: _angular_core.InputSignal<boolean>;
4913
+ protected readonly linkClass: _angular_core.InputSignal<string>;
4914
+ protected readonly id: _angular_core.Signal<string>;
4915
+ protected readonly type: _angular_core.Signal<NodeType>;
4916
+ protected readonly aggregated: _angular_core.Signal<boolean>;
4917
+ protected readonly url: _angular_core.Signal<string>;
4918
+ protected readonly showLink: _angular_core.Signal<boolean>;
4919
+ protected readonly target: _angular_core.Signal<"_self" | "_blank">;
4920
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeLinkComponent, never>;
4921
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeLinkComponent, "he-node-link", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "dataState": { "alias": "dataState"; "required": false; "isSignal": true; }; "showExternalLink": { "alias": "showExternalLink"; "required": false; "isSignal": true; }; "linkClass": { "alias": "linkClass"; "required": false; "isSignal": true; }; }, {}, never, ["*", "*"], true, never>;
5316
4922
  }
5317
4923
 
5318
- declare class NodeAggregatedFormulasComponent {
5319
- /**
5320
- * The `termType` of the aggregation's primary product, which selects the product-specific page.
5321
- * Omit it to show the general rules only.
5322
- */
5323
- readonly termType: _angular_core.InputSignal<string>;
5324
- /**
5325
- * The `@id` of the aggregation's primary product, which decides whether the plantation rules ran.
5326
- */
5327
- readonly termId: _angular_core.InputSignal<string>;
5328
- /**
5329
- * The blank node key the formulas are shown for (`products`, `emissions`, ...). Omit it to show
5330
- * every rule; set it and only the rules that apply to that kind of data item are kept.
5331
- */
5332
- readonly nodeKey: _angular_core.InputSignal<string>;
5333
- /**
5334
- * The Term of the data item shown, which decides how a Cycle reporting no value for it was
5335
- * counted: some are zero-filled, others skipped.
5336
- */
5337
- readonly term: _angular_core.InputSignal<ITermJSONLD>;
5338
- /**
5339
- * The quantities the formulas bind to, for this data item. Supplied by the caller from the
5340
- * node's `.jlog` entries recorded by the aggregation (`model: "aggregation"`). Leave it empty
5341
- * and every symbol stays symbolic, which is a valid state: aggregation logs are opt-in
5342
- * (`LOG_JSON_ENABLED`) and absent for most aggregations.
5343
- */
5344
- readonly values: _angular_core.InputSignal<Record<string, unknown>>;
5345
- /**
5346
- * Whether the aggregation covers the World rather than one country. A World aggregation combines
5347
- * country aggregations by their share of world production; a country one never does, so that rule
5348
- * is not part of how its values were produced.
5349
- */
5350
- readonly worldAggregation: _angular_core.InputSignal<boolean>;
5351
- /**
5352
- * Whether the Cycle is one of the sub-aggregations an aggregation is combined from, in which case
5353
- * the sub-system weighting is one of the stages that produced its values. Defaults to showing the
5354
- * stage, so a caller that cannot tell keeps the rule documented.
5355
- */
5356
- readonly subAggregation: _angular_core.InputSignal<boolean>;
5357
- protected readonly substituted: _angular_core.ModelSignal<boolean>;
5358
- /**
5359
- * The rules that produced this value, grouped by what each one computes.
5360
- */
5361
- protected readonly sections: _angular_core.Signal<IAggregationSection[]>;
5362
- protected readonly inclusion: _angular_core.Signal<IInclusionRule>;
5363
- protected readonly hasSubstitutions: _angular_core.Signal<boolean>;
5364
- /**
5365
- * What this value was combined from, as the aggregation recorded it: one row per contributor,
5366
- * under the symbols the formulas above read them with. Absent where the contributors were too
5367
- * many to record, which is every aggregation built straight from source Cycles - their number
5368
- * is shown instead.
5369
- */
5370
- protected readonly contributors: _angular_core.Signal<{
5371
- rows: {
5372
- node: {
5373
- '@type': NodeType;
5374
- '@id': string;
5375
- };
5376
- id: string;
5377
- label: string;
5378
- values: (string | undefined)[];
5379
- }[];
5380
- columns: IContributorColumn[];
5381
- count?: number;
5382
- }>;
5383
- protected readonly contributor: _angular_core.Signal<IContributorNames>;
5384
- protected readonly renderedSections: _angular_core.Signal<{
5385
- formulas: {
5386
- rendered: string;
5387
- section: string;
5388
- context: string;
5389
- variables: {
5390
- symbol: string;
5391
- description: string;
5392
- missing: boolean;
5393
- note: string;
5394
- }[];
5395
- }[];
5396
- id: IFormulaGroup;
5397
- heading: string;
5398
- }[]>;
5399
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeAggregatedFormulasComponent, never>;
5400
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeAggregatedFormulasComponent, "he-node-aggregated-formulas", never, { "termType": { "alias": "termType"; "required": false; "isSignal": true; }; "termId": { "alias": "termId"; "required": false; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "term": { "alias": "term"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "worldAggregation": { "alias": "worldAggregation"; "required": false; "isSignal": true; }; "subAggregation": { "alias": "subAggregation"; "required": false; "isSignal": true; }; "substituted": { "alias": "substituted"; "required": false; "isSignal": true; }; }, { "substituted": "substitutedChange"; }, never, never, true, never>;
4924
+ declare class NodeJLogModelsComponent {
4925
+ private readonly searchService;
4926
+ private readonly engineService;
4927
+ protected readonly guideEnabled: boolean;
4928
+ protected readonly node: _angular_core.InputSignal<IJSONNode>;
4929
+ protected readonly nodeKey: _angular_core.InputSignal<string>;
4930
+ protected readonly originalValues: _angular_core.InputSignal<blankNodesTypeValue[]>;
4931
+ protected readonly recalculatedValues: _angular_core.InputSignal<blankNodesTypeValue[]>;
4932
+ protected readonly filterTermTypes: _angular_core.InputSignal<TermTermType[]>;
4933
+ protected readonly filterTermTypesLabel: _angular_core.InputSignal<string>;
4934
+ protected readonly cycle: _angular_core.InputSignal<ICycleJSONLD>;
4935
+ protected readonly jlog: _angular_core.InputSignal<Record<string, any>>;
4936
+ protected readonly jlogParentKey: _angular_core.InputSignal<string>;
4937
+ protected readonly jlogParentIndex: _angular_core.InputSignal<number>;
4938
+ protected readonly scopedJlog: _angular_core.Signal<any>;
4939
+ protected readonly schemaBaseUrl: string;
4940
+ protected readonly isExternal: boolean;
4941
+ protected readonly LogStatus: typeof LogStatus;
4942
+ protected readonly logIcon: {
4943
+ successful?: svgIconNames;
4944
+ failed?: svgIconNames;
4945
+ "not run (model higher up hierarchy run instead)"?: svgIconNames;
4946
+ "not run (user provided data retained)"?: svgIconNames;
4947
+ "not relevant"?: svgIconNames;
4948
+ };
4949
+ protected readonly logColor: {
4950
+ successful?: string;
4951
+ failed?: string;
4952
+ "not run (model higher up hierarchy run instead)"?: string;
4953
+ "not run (user provided data retained)"?: string;
4954
+ "not relevant"?: string;
4955
+ };
4956
+ protected readonly isInSystemBoundary: (id: string) => boolean;
4957
+ protected readonly typeaheadFocus: (e: Event) => void;
4958
+ protected readonly isNumber: (value: any) => value is number;
4959
+ protected readonly isEmptyValue: (value: any) => boolean;
4960
+ protected readonly onlyRequired: _angular_core.WritableSignal<boolean>;
4961
+ protected readonly onlyRequiredId: string;
4962
+ protected readonly term: _angular_core.WritableSignal<ITermJSONLD>;
4963
+ protected readonly nodeType: _angular_core.Signal<NodeType>;
4964
+ protected readonly hasContributions: _angular_core.Signal<boolean>;
4965
+ protected readonly isBlankNodes: _angular_core.Signal<boolean>;
4966
+ private readonly failedTermIds;
4967
+ private readonly failedTermsResource;
4968
+ private readonly failedTerms;
4969
+ private readonly configResource;
4970
+ private readonly config;
4971
+ private readonly allGroups;
4972
+ protected readonly groups: _angular_core.Signal<IJLogTermGroup[]>;
4973
+ protected readonly hasLogs: _angular_core.Signal<boolean>;
4974
+ protected readonly methodModelsCount: _angular_core.Signal<number>;
4975
+ protected readonly filteredType: _angular_core.Signal<string>;
4976
+ protected readonly allTerms: _angular_core.Signal<ITermJSONLD[]>;
4977
+ protected readonly enableFilterByTerm: _angular_core.Signal<boolean>;
4978
+ protected readonly termFormatter: ({ name }: ITermJSONLD) => string;
4979
+ protected readonly suggestTerm: (text$: Observable<string>) => Observable<ITermJSONLD[]>;
4980
+ private readonly methodsById;
4981
+ private searchTerms;
4982
+ protected methodName({ methodId, modelKey }: IJLogModelRun): string;
4983
+ protected modelMethodTier(model: IJLogModelRun): any;
4984
+ protected readonly isArray: (arg: any) => arg is any[];
4985
+ protected toggleGroup(group: IJLogTermGroup): void;
4986
+ protected toggleRow(row: IJLogBlankNode): void;
4987
+ protected trackByGroup(_index: number, group: IJLogTermGroup): string;
4988
+ protected trackByRow(_index: number, row: IJLogBlankNode): string;
4989
+ protected trackByModel(_index: number, model: IJLogModelRun): string;
4990
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeJLogModelsComponent, never>;
4991
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeJLogModelsComponent, "he-node-jlog-models", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "originalValues": { "alias": "originalValues"; "required": false; "isSignal": true; }; "recalculatedValues": { "alias": "recalculatedValues"; "required": false; "isSignal": true; }; "filterTermTypes": { "alias": "filterTermTypes"; "required": false; "isSignal": true; }; "filterTermTypesLabel": { "alias": "filterTermTypesLabel"; "required": false; "isSignal": true; }; "cycle": { "alias": "cycle"; "required": false; "isSignal": true; }; "jlog": { "alias": "jlog"; "required": false; "isSignal": true; }; "jlogParentKey": { "alias": "jlogParentKey"; "required": false; "isSignal": true; }; "jlogParentIndex": { "alias": "jlogParentIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5401
4992
  }
5402
4993
 
5403
- interface IAggregationRow {
5404
- index: number;
5405
- value: any;
5406
- term?: ITermJSONLD;
5407
- segments: IBlankNodeIdentityGroup['rows'][0]['segments'];
5408
- scalars: IBlankNodeIdentityGroup['rows'][0]['scalars'];
5409
- label: string;
5410
- values: Record<string, unknown>;
5411
- displayValue: propertyValueType;
5412
- observations?: number;
5413
- }
5414
- interface IAggregationGroup extends Omit<IBlankNodeIdentityGroup, 'rows'> {
5415
- rows: IAggregationRow[];
5416
- isOpen: boolean;
5417
- observations?: string;
4994
+ declare class NodeLogsFileComponent {
4995
+ private readonly domSanitizer;
4996
+ private readonly nodeService;
4997
+ protected readonly node: _angular_core.InputSignal<JSONLD<NodeType>>;
4998
+ protected readonly dataState: _angular_core.InputSignal<DataState>;
4999
+ private readonly nodeLogResource;
5000
+ protected readonly nodeLog: _angular_core.Signal<any>;
5001
+ protected readonly loading: _angular_core.Signal<boolean>;
5002
+ private readonly allLogs;
5003
+ protected readonly Level: typeof Level;
5004
+ protected readonly showFilters: _angular_core.WritableSignal<boolean>;
5005
+ protected readonly modelFilter: _angular_core.WritableSignal<string>;
5006
+ protected readonly termFilter: _angular_core.WritableSignal<string>;
5007
+ protected readonly selectedLevel: _angular_core.WritableSignal<Level>;
5008
+ protected readonly fileToExt: (path: string, extension?: string) => string;
5009
+ protected readonly nodeLogLines: _angular_core.Signal<_hestia_earth_ui_components.ILine[]>;
5010
+ protected readonly csvContent: _angular_core.Signal<_angular_platform_browser.SafeResourceUrl>;
5011
+ protected readonly csvFilename: _angular_core.Signal<string>;
5012
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeLogsFileComponent, never>;
5013
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeLogsFileComponent, "he-node-logs-file", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "dataState": { "alias": "dataState"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5418
5014
  }
5419
- declare class NodeAggregationLogsComponent {
5015
+
5016
+ declare class NodeLogsModelsComponent {
5017
+ private readonly nodeService;
5420
5018
  private readonly nodeLogsModelsService;
5421
- /**
5422
- * The aggregated node the data items are read from.
5423
- */
5424
- readonly node: _angular_core.InputSignal<IJSONNode>;
5425
- /**
5426
- * The blank node key shown, e.g. `products` or `emissions`. It also selects which rules apply
5427
- * to each row: the economic value share is only rescaled for products, and zero-filling only
5428
- * applies where terms carry a completeness area.
5429
- */
5430
- readonly nodeKey: _angular_core.InputSignal<string>;
5431
- /**
5432
- * The `termType` of the aggregation's primary product, which selects the product-specific rules.
5433
- */
5434
- readonly termType: _angular_core.InputSignal<string>;
5435
- /**
5436
- * The `@id` of the aggregation's primary product, which decides whether the plantation rules ran.
5437
- */
5438
- readonly termId: _angular_core.InputSignal<string>;
5439
- /**
5440
- * For a grouped sub-node view (e.g. an animal's inputs), the `.jlog` is nested under its parent:
5441
- * scope to `jlog[<parentKey>][<parentIndex>]`, as the recalculation logs do.
5442
- */
5443
- readonly jlogParentKey: _angular_core.InputSignal<string>;
5444
- readonly jlogParentIndex: _angular_core.InputSignal<number>;
5019
+ private readonly searchService;
5020
+ private readonly engineService;
5445
5021
  protected readonly guideEnabled: boolean;
5446
- protected readonly modelName = "Aggregation";
5447
- protected readonly guidePage: _angular_core.Signal<string>;
5448
- protected readonly guideHref: _angular_core.Signal<string>;
5449
- private readonly nodeType;
5450
- protected readonly worldAggregation: _angular_core.Signal<boolean>;
5451
- /**
5452
- * The node's `.jlog`, fetched like the recalculation logs fetch theirs: the aggregation records the
5453
- * quantities its formulas bind to in the same file, under the same `{<field>: {<index>: {logs: []}}}`
5454
- * shape. It is empty for most aggregations - the logs are opt-in (`LOG_JSON_ENABLED`) - and every
5455
- * rule then renders symbolically, which is a valid state rather than an error.
5456
- */
5022
+ protected readonly node: _angular_core.InputSignal<IJSONNode>;
5023
+ protected readonly nodeKey: _angular_core.InputSignal<blankNodesKey | nonBlankNodesKey>;
5024
+ protected readonly originalValues: _angular_core.InputSignal<_hestia_earth_schema.Completeness | blankNodesTypeValue[]>;
5025
+ protected readonly recalculatedValues: _angular_core.InputSignal<_hestia_earth_schema.Completeness | blankNodesTypeValue[]>;
5026
+ protected readonly terms: _angular_core.InputSignal<ITermJSONLD[]>;
5027
+ protected readonly filterTermTypes: _angular_core.InputSignal<TermTermType[]>;
5028
+ protected readonly filterTermTypesLabel: _angular_core.InputSignal<string>;
5029
+ protected readonly logsKey: _angular_core.InputSignal<string>;
5030
+ protected readonly noDataMessage: _angular_core.InputSignal<string>;
5031
+ protected readonly cycle: _angular_core.InputSignal<ICycleJSONLD>;
5032
+ protected readonly jlogParentKey: _angular_core.InputSignal<string>;
5033
+ protected readonly jlogParentIndex: _angular_core.InputSignal<number>;
5034
+ protected readonly isEmpty: (value: any, minKeys?: number) => boolean;
5035
+ protected readonly schemaBaseUrl: string;
5036
+ protected readonly isExternal: boolean;
5037
+ protected readonly NodeType: typeof NodeType;
5038
+ protected readonly CycleFunctionalUnit: typeof CycleFunctionalUnit;
5039
+ protected readonly EmissionMethodTier: typeof EmissionMethodTier;
5040
+ protected readonly LogStatus: typeof LogStatus;
5041
+ protected readonly logIcon: {
5042
+ successful?: svgIconNames;
5043
+ failed?: svgIconNames;
5044
+ "not run (model higher up hierarchy run instead)"?: svgIconNames;
5045
+ "not run (user provided data retained)"?: svgIconNames;
5046
+ "not relevant"?: svgIconNames;
5047
+ };
5048
+ protected readonly logColor: {
5049
+ successful?: string;
5050
+ failed?: string;
5051
+ "not run (model higher up hierarchy run instead)"?: string;
5052
+ "not run (user provided data retained)"?: string;
5053
+ "not relevant"?: string;
5054
+ };
5055
+ protected readonly getModelsAt: (log: IBlankNodeLogSubValue | IBlankNodeLog, index: number) => IConfigModel | IConfigModel[];
5056
+ protected readonly isInSystemBoundary: (id: string) => boolean;
5057
+ protected readonly showLegend: _angular_core.WritableSignal<boolean>;
5058
+ protected readonly onlyRequired: _angular_core.WritableSignal<boolean>;
5059
+ protected readonly onlyRequiredId: string;
5060
+ protected readonly showContributionsLogs: _angular_core.WritableSignal<boolean>;
5061
+ private readonly schemaType;
5062
+ protected readonly filteredType: _angular_core.Signal<string>;
5063
+ protected readonly functionalUnit: _angular_core.Signal<any>;
5064
+ protected readonly hasContributions: _angular_core.Signal<boolean>;
5065
+ protected readonly nodeType: _angular_core.Signal<NodeType>;
5457
5066
  private readonly jlogResource;
5458
- private readonly jlog;
5459
- private readonly scopedJlog;
5460
- private readonly nodeValues;
5461
- protected readonly subAggregation: _angular_core.Signal<boolean>;
5462
- /**
5463
- * The `.jlog` of every sub-aggregation this Cycle was combined from, for the country shares the
5464
- * aggregation only records on them. Best effort: a reader without access to a sub-aggregation
5465
- * gets nothing back, and those symbols stay symbolic - which is how they render today.
5466
- */
5467
- private readonly contributorsResource;
5468
- private readonly sharedLookups;
5469
- private readonly openGroups;
5470
- /**
5471
- * The aggregated data items, grouped by term exactly as the recalculation logs group them: several
5472
- * entries for one term (e.g. a measurement at two depths) collapse into one expandable group whose
5473
- * rows are labelled by what tells them apart.
5474
- */
5475
- private readonly allGroups;
5476
- /**
5477
- * The rules that produced these values, which the row's `Logs` panel shows. They are read from the
5478
- * documentation shipped by `@hestia-earth/aggregation-engine`, so an older copy of it can document
5479
- * none that apply to this aggregation - and the panel would then open on nothing.
5480
- */
5481
- protected readonly hasRules: _angular_core.Signal<boolean>;
5067
+ protected readonly jlog: _angular_core.Signal<Record<string, any>>;
5068
+ protected readonly loadingJLog: _angular_core.Signal<boolean>;
5069
+ protected readonly useJLog: _angular_core.Signal<boolean>;
5070
+ protected readonly logsUrl: _angular_core.Signal<string>;
5071
+ private readonly logsResource;
5072
+ private readonly allLogs;
5073
+ protected readonly hasLogs: _angular_core.Signal<boolean>;
5074
+ private readonly configResource;
5075
+ private readonly config;
5076
+ private readonly inputGroupsResource;
5077
+ private readonly animalGroups;
5078
+ private readonly termsGrouping;
5079
+ private readonly logs;
5080
+ protected readonly isBlankNodes: _angular_core.Signal<boolean>;
5081
+ private readonly extraTermsFromLogsResource;
5082
+ private readonly extraTermsByTermTypesResource;
5083
+ private readonly extraTerms;
5084
+ private readonly allTerms;
5085
+ private readonly allBlankNodes;
5086
+ protected readonly blankNodes: _angular_core.Signal<IBlankNodeLog[]>;
5087
+ protected readonly methodModelsCount: _angular_core.Signal<any>;
5088
+ private readonly methodsById;
5089
+ private readonly termsByIdResource;
5090
+ private readonly termsById;
5482
5091
  protected readonly term: _angular_core.WritableSignal<ITermJSONLD>;
5483
- protected readonly typeaheadFocus: (e: Event) => void;
5484
- protected readonly allTerms: _angular_core.Signal<ITermJSONLD[]>;
5485
5092
  protected readonly enableFilterByTerm: _angular_core.Signal<boolean>;
5486
5093
  protected readonly termFormatter: ({ name }: ITermJSONLD) => string;
5487
5094
  protected readonly suggestTerm: (text$: Observable<string>) => Observable<ITermJSONLD[]>;
5488
- protected readonly groups: _angular_core.Signal<IAggregationGroup[]>;
5489
- protected toggleGroup(group: IAggregationGroup): void;
5490
- protected trackByGroup(_index: number, group: IAggregationGroup): string;
5491
- protected trackByRow(_index: number, row: IAggregationRow): string;
5492
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeAggregationLogsComponent, never>;
5493
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeAggregationLogsComponent, "he-node-aggregation-logs", never, { "node": { "alias": "node"; "required": false; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "termType": { "alias": "termType"; "required": false; "isSignal": true; }; "termId": { "alias": "termId"; "required": false; "isSignal": true; }; "jlogParentKey": { "alias": "jlogParentKey"; "required": false; "isSignal": true; }; "jlogParentIndex": { "alias": "jlogParentIndex"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
5095
+ protected readonly typeaheadFocus: (e: Event) => void;
5096
+ protected readonly loading: _angular_core.Signal<boolean>;
5097
+ protected readonly isNumber: (value: any) => value is number;
5098
+ private searchTerms;
5099
+ protected trackByBlankNode(_index: number, node: any): any;
5100
+ protected trackBySubValue({ id, key }: IBlankNodeLogSubValue): string;
5101
+ protected methodName({ methodId, model }: IConfigModel): string;
5102
+ protected termById(id: string): ITermJSONLD;
5103
+ protected toggleBlankNode(blankNode: IBlankNodeLog): void;
5104
+ protected subValuesKey({ subValues }: IBlankNodeLog, defaultValue: string): string;
5105
+ protected hasCompleteSuccess({ subValues }: IBlankNodeLog): boolean;
5106
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeLogsModelsComponent, never>;
5107
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeLogsModelsComponent, "he-node-logs-models", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "originalValues": { "alias": "originalValues"; "required": false; "isSignal": true; }; "recalculatedValues": { "alias": "recalculatedValues"; "required": false; "isSignal": true; }; "terms": { "alias": "terms"; "required": false; "isSignal": true; }; "filterTermTypes": { "alias": "filterTermTypes"; "required": false; "isSignal": true; }; "filterTermTypesLabel": { "alias": "filterTermTypesLabel"; "required": false; "isSignal": true; }; "logsKey": { "alias": "logsKey"; "required": false; "isSignal": true; }; "noDataMessage": { "alias": "noDataMessage"; "required": false; "isSignal": true; }; "cycle": { "alias": "cycle"; "required": false; "isSignal": true; }; "jlogParentKey": { "alias": "jlogParentKey"; "required": false; "isSignal": true; }; "jlogParentIndex": { "alias": "jlogParentIndex"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
5108
+ }
5109
+
5110
+ interface ITimeLog {
5111
+ model_model: string;
5112
+ model_value?: string;
5113
+ memory_used: number;
5114
+ time: number;
5115
+ }
5116
+ interface ISorting {
5117
+ sortBy: string;
5118
+ sortOrder: 'asc' | 'desc';
5119
+ }
5120
+ declare class NodeLogsTimeComponent {
5121
+ private readonly nodeService;
5122
+ protected readonly node: _angular_core.InputSignal<JSONLD<NodeType>>;
5123
+ protected readonly showMemoryUsage: _angular_core.InputSignal<boolean>;
5124
+ protected readonly nodeLogsResource: _angular_core.ResourceRef<any>;
5125
+ protected readonly logs: _angular_core.Signal<{
5126
+ time: number;
5127
+ model_model: string;
5128
+ model_value?: string;
5129
+ memory_used: number;
5130
+ }[]>;
5131
+ protected readonly totalTime: _angular_core.Signal<number>;
5132
+ protected readonly sorting: ISorting;
5133
+ protected toggleSort(sortBy: string): void;
5134
+ protected runModelCmd({ model_model, model_value }: ITimeLog): string;
5135
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeLogsTimeComponent, never>;
5136
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeLogsTimeComponent, "he-node-logs-time", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "showMemoryUsage": { "alias": "showMemoryUsage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5494
5137
  }
5495
5138
 
5496
- declare class NodeAggregatedQualityScoreComponent {
5497
- private readonly searchService;
5139
+ declare class NodeMissingLookupFactorsComponent {
5498
5140
  private readonly nodeService;
5499
- private readonly nodeLogsModelsService;
5500
- protected get hidden(): boolean;
5501
- protected readonly node: _angular_core.InputSignal<IImpactAssessmentJSONLD | ICycleJSONLD>;
5502
- protected readonly country: _angular_core.InputSignal<Term | ITermJSONLD>;
5503
- /**
5504
- * Load and show info tooltip.
5505
- */
5506
- protected readonly showInfo: _angular_core.InputSignal<boolean>;
5507
- protected readonly mode: _angular_core.InputSignal<"text" | "tag">;
5508
- protected readonly placement: _angular_core.InputSignal<string>;
5509
- private readonly nodeCountry;
5510
- protected readonly countryName: _angular_core.Signal<string>;
5511
- private readonly countryResource;
5512
- private readonly countryId;
5513
- private readonly jlogResource;
5514
- private readonly jlogLogs;
5515
- private readonly loadingJLog;
5516
- private readonly useJLog;
5517
- private readonly logsResource;
5518
- protected readonly logs: _angular_core.Signal<any>;
5519
- protected readonly validScores: _angular_core.Signal<{
5520
- [position: number]: boolean;
5521
- }>;
5522
- protected readonly minObservations: _angular_core.Signal<number>;
5523
- protected readonly observations: _angular_core.Signal<number>;
5524
- private readonly missingEmissionIds;
5525
- private readonly missingEmissionsResource;
5526
- protected readonly missingEmissions: _angular_core.Signal<ITermJSONLD[]>;
5527
- protected readonly missingCompletenessFields: _angular_core.Signal<string[]>;
5528
- protected readonly isCycle: _angular_core.Signal<boolean>;
5529
- private readonly product;
5530
- protected readonly score: _angular_core.Signal<number>;
5531
- protected readonly scoreMax: _angular_core.Signal<number>;
5532
- protected readonly scoreLevel: _angular_core.Signal<_hestia_earth_ui_components.NodeQualityScore>;
5533
- protected readonly scoreColor: _angular_core.Signal<string>;
5534
- protected readonly isCrop: _angular_core.Signal<boolean>;
5535
- protected readonly isGlobal: _angular_core.Signal<any>;
5536
- protected readonly schemaBaseUrl: _angular_core.Signal<string>;
5537
- protected readonly schemaUrl: _angular_core.Signal<string>;
5538
- protected readonly hasFaostatYield: _angular_core.Signal<boolean>;
5539
- protected readonly hasProductionQuantity: _angular_core.Signal<boolean>;
5540
- protected readonly regionProductionQuantity: _angular_core.Signal<number>;
5541
- protected readonly countriesProductionQuantity: _angular_core.Signal<number>;
5542
- protected readonly loading: _angular_core.Signal<boolean>;
5543
- protected completenessUrl(key: string): string;
5544
- protected trackByTerm(index: number, term: ITermJSONLD): string;
5545
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeAggregatedQualityScoreComponent, never>;
5546
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeAggregatedQualityScoreComponent, "he-node-aggregated-quality-score", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "country": { "alias": "country"; "required": false; "isSignal": true; }; "showInfo": { "alias": "showInfo"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5141
+ protected readonly node: _angular_core.InputSignal<JSONLD<NodeType>>;
5142
+ protected readonly logsResource: _angular_core.ResourceRef<_hestia_earth_ui_components.INodeMissingLookupLog[]>;
5143
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeMissingLookupFactorsComponent, never>;
5144
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeMissingLookupFactorsComponent, "he-node-missing-lookup-factors", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
5547
5145
  }
5548
5146
 
5549
- interface INodeIncluded {
5550
- node: JSONLD<any>;
5551
- included: boolean;
5147
+ declare enum NodeField {
5148
+ inputs = "inputs",
5149
+ measurements = "measurements",
5150
+ practices = "practices",
5151
+ products = "products"
5552
5152
  }
5553
- declare class NodeCsvExportConfirmComponent {
5554
- private readonly domSanitizer;
5555
- private readonly activeModal;
5556
- protected readonly headers: _angular_core.WritableSignal<string[]>;
5557
- readonly nodes: _angular_core.ModelSignal<(JSONLD<any> | JSON<any>)[]>;
5558
- readonly filename: _angular_core.ModelSignal<string>;
5559
- readonly headerKeys: _angular_core.ModelSignal<string[]>;
5560
- readonly extension: _angular_core.ModelSignal<SupportedExtensions>;
5561
- readonly isUpload: _angular_core.ModelSignal<boolean>;
5562
- protected readonly closed: _angular_core.OutputEmitterRef<void>;
5563
- protected readonly showIncludeNodes: _angular_core.WritableSignal<boolean>;
5564
- protected readonly includedNodes: _angular_core.Signal<INodeIncluded[]>;
5565
- private readonly included;
5566
- protected readonly csvData: _angular_core.Signal<string>;
5567
- protected readonly csvContent: _angular_core.Signal<_angular_platform_browser.SafeResourceUrl>;
5568
- protected readonly downloadFilename: _angular_core.Signal<string>;
5569
- protected close(): void;
5570
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeCsvExportConfirmComponent, never>;
5571
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeCsvExportConfirmComponent, "he-node-csv-export-confirm", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "headerKeys": { "alias": "headerKeys"; "required": false; "isSignal": true; }; "extension": { "alias": "extension"; "required": false; "isSignal": true; }; "isUpload": { "alias": "isUpload"; "required": false; "isSignal": true; }; }, { "nodes": "nodesChange"; "filename": "filenameChange"; "headerKeys": "headerKeysChange"; "extension": "extensionChange"; "isUpload": "isUploadChange"; "closed": "closed"; }, never, never, true, never>;
5153
+ declare class NodeRecommendationsComponent {
5154
+ private readonly engineService;
5155
+ protected readonly node: _angular_core.InputSignal<any>;
5156
+ protected readonly nodeField: _angular_core.InputSignal<NodeField>;
5157
+ protected readonly buttonClass: _angular_core.InputSignal<string>;
5158
+ protected readonly selectRecommendation: _angular_core.OutputEmitterRef<string>;
5159
+ protected readonly loading: _angular_core.WritableSignal<boolean>;
5160
+ protected readonly visible: _angular_core.WritableSignal<boolean>;
5161
+ protected readonly recommendations: _angular_core.WritableSignal<string[]>;
5162
+ private readonly type;
5163
+ private readonly termType;
5164
+ private readonly validField;
5165
+ private readonly existingIds;
5166
+ private readonly filters;
5167
+ private readonly filters$;
5168
+ constructor();
5169
+ protected add(id: string, index: number): void;
5170
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeRecommendationsComponent, never>;
5171
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeRecommendationsComponent, "he-node-recommendations", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "nodeField": { "alias": "nodeField"; "required": true; "isSignal": true; }; "buttonClass": { "alias": "buttonClass"; "required": false; "isSignal": true; }; }, { "selectRecommendation": "selectRecommendation"; }, never, never, true, never>;
5572
5172
  }
5573
5173
 
5574
- declare class NodeCsvPreviewComponent {
5575
- private readonly domSanitizer;
5576
- private readonly schemaService;
5577
- private readonly schemas;
5578
- protected readonly nodes: _angular_core.InputSignal<any[]>;
5579
- protected readonly compacted: _angular_core.InputSignal<boolean>;
5580
- protected readonly showDownload: _angular_core.InputSignal<boolean>;
5581
- protected readonly csvOptions: _angular_core.InputSignal<IConvertCSVOptions>;
5582
- protected readonly csvNotice: _angular_core.InputSignal<string>;
5583
- private readonly _csv;
5584
- protected readonly csv: _angular_core.Signal<_angular_platform_browser.SafeResourceUrl>;
5585
- private readonly parsedCsv;
5586
- protected readonly headers: _angular_core.Signal<string[]>;
5587
- protected readonly rows: _angular_core.Signal<string[][]>;
5588
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeCsvPreviewComponent, never>;
5589
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeCsvPreviewComponent, "he-node-csv-preview", never, { "nodes": { "alias": "nodes"; "required": true; "isSignal": true; }; "compacted": { "alias": "compacted"; "required": false; "isSignal": true; }; "showDownload": { "alias": "showDownload"; "required": false; "isSignal": true; }; "csvOptions": { "alias": "csvOptions"; "required": false; "isSignal": true; }; "csvNotice": { "alias": "csvNotice"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5174
+ declare class NodeSelectComponent {
5175
+ private readonly nodeStoreService;
5176
+ private readonly _nodes;
5177
+ private readonly nodes;
5178
+ private readonly _nodeTypes;
5179
+ readonly selectedNodeType: _angular_core.ModelSignal<NodeType>;
5180
+ readonly selectedNodeId: _angular_core.ModelSignal<string>;
5181
+ readonly selectedDataState: _angular_core.ModelSignal<DataState>;
5182
+ protected readonly selectFirstId: _angular_core.InputSignal<boolean>;
5183
+ protected readonly enableTypes: _angular_core.InputSignal<NodeType[]>;
5184
+ protected readonly enableNodeType: _angular_core.InputSignal<boolean>;
5185
+ protected readonly enableDataState: _angular_core.InputSignal<boolean>;
5186
+ protected readonly showLabel: _angular_core.InputSignal<boolean>;
5187
+ protected readonly direction: _angular_core.InputSignal<"column" | "row">;
5188
+ protected readonly nodeSelected: _angular_core.OutputEmitterRef<JSONLD<NodeType>>;
5189
+ readonly selectedNode: _angular_core.Signal<JSONLD<NodeType>>;
5190
+ protected readonly nodeTypes: _angular_core.Signal<NodeType[]>;
5191
+ protected readonly nodeIds: _angular_core.Signal<string[]>;
5192
+ protected readonly dataStates: _angular_core.Signal<DataState[]>;
5193
+ constructor();
5194
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeSelectComponent, never>;
5195
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeSelectComponent, "he-node-select", ["heNodeSelect"], { "selectedNodeType": { "alias": "selectedNodeType"; "required": false; "isSignal": true; }; "selectedNodeId": { "alias": "selectedNodeId"; "required": false; "isSignal": true; }; "selectedDataState": { "alias": "selectedDataState"; "required": false; "isSignal": true; }; "selectFirstId": { "alias": "selectFirstId"; "required": false; "isSignal": true; }; "enableTypes": { "alias": "enableTypes"; "required": false; "isSignal": true; }; "enableNodeType": { "alias": "enableNodeType"; "required": false; "isSignal": true; }; "enableDataState": { "alias": "enableDataState"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; }, { "selectedNodeType": "selectedNodeTypeChange"; "selectedNodeId": "selectedNodeIdChange"; "selectedDataState": "selectedDataStateChange"; "nodeSelected": "nodeSelected"; }, never, never, true, never>;
5590
5196
  }
5591
5197
 
5592
- interface IHeader {
5593
- key: string;
5594
- selected: boolean;
5595
- /**
5596
- * `false` if it is an `internal` field.
5597
- */
5598
- included: boolean;
5599
- }
5600
- interface IGroup {
5198
+ interface IStoredKey {
5601
5199
  key: string;
5602
5200
  selected: boolean;
5603
- partialSelected: boolean;
5604
- open: boolean;
5605
- headers: IHeader[];
5606
5201
  }
5607
- interface IGroupedHeaders {
5608
- [group: string]: IGroup;
5609
- }
5610
- declare class NodeCsvSelectHeadersComponent {
5202
+ declare class NodeValueDetailsComponent<T extends Exclude<blankNodesType, Infrastructure | Property | Transformation>> {
5611
5203
  private readonly schemaService;
5612
- protected readonly csv: _angular_core.InputSignal<string>;
5613
- protected readonly keys: _angular_core.InputSignal<string[]>;
5614
- protected readonly includeDefaultCSV: _angular_core.InputSignal<boolean>;
5615
- protected readonly headersChanged: _angular_core.OutputEmitterRef<string[]>;
5616
- protected readonly termFields: string[];
5617
- protected readonly selectedTermFields: _angular_core.WritableSignal<string[]>;
5618
- protected readonly showNonIncluded: _angular_core.WritableSignal<boolean>;
5619
- protected readonly allSelected: _angular_core.Signal<boolean>;
5620
- private readonly selectedHeaders;
5204
+ private readonly localStorage;
5205
+ protected readonly schemaBaseUrl: string;
5206
+ protected readonly keys: string[];
5207
+ protected readonly additionalKeys: string[];
5621
5208
  private readonly schemas;
5622
- private readonly headersResource;
5623
- protected readonly loading: _angular_core.Signal<boolean>;
5624
- private readonly csvHeaders;
5625
- protected readonly headers: _angular_core.WritableSignal<IGroupedHeaders>;
5626
- protected readonly groups: _angular_core.Signal<IGroup[]>;
5209
+ private readonly schemaKeys;
5210
+ private readonly schemaKeys$;
5211
+ private readonly storedTableKeys;
5212
+ protected readonly tableKeys: _angular_core.Signal<IStoredKey[]>;
5213
+ private readonly availableTableKeys;
5214
+ protected readonly visibleTableKeys: _angular_core.Signal<string[]>;
5215
+ protected readonly data: _angular_core.InputSignal<IGroupedNode<T>>;
5216
+ protected readonly nodeType: _angular_core.InputSignal<NodeType>;
5217
+ protected readonly dataState: _angular_core.InputSignal<DataState>;
5218
+ protected readonly dataKey: _angular_core.InputSignal<string>;
5219
+ protected readonly aggregated: _angular_core.InputSignal<boolean>;
5220
+ protected readonly nodes: _angular_core.Signal<T[]>;
5221
+ protected readonly node: _angular_core.Signal<T>;
5222
+ protected readonly term: _angular_core.Signal<_hestia_earth_schema.Term>;
5223
+ protected readonly type: _angular_core.Signal<SchemaType>;
5224
+ private readonly type$;
5225
+ protected readonly showInline: _angular_core.Signal<boolean>;
5226
+ protected readonly showDistribution: _angular_core.WritableSignal<T>;
5227
+ protected readonly chartDistribution: _angular_core.Signal<number[]>;
5228
+ protected readonly chartValue: _angular_core.Signal<any>;
5229
+ protected readonly chartLabel: _angular_core.Signal<string>;
5230
+ protected readonly models: _angular_core.Signal<{
5231
+ name: string;
5232
+ link: string;
5233
+ }[]>;
5627
5234
  constructor();
5628
- private updateHeadersGroup;
5629
- protected dropHeader(event: CdkDragDrop<IHeader[]>, group: IGroup): void;
5630
- protected selectAll(allSelected: boolean): void;
5631
- protected updateGroup(selected: boolean, group: IGroup): void;
5632
- protected updateHeader(selected: boolean, group: IGroup, header: IHeader): void;
5633
- protected isTermFieldSelect(field: string): boolean;
5634
- protected toggleTermField(selected: boolean, field: string): void;
5635
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeCsvSelectHeadersComponent, never>;
5636
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeCsvSelectHeadersComponent, "he-node-csv-select-headers", never, { "csv": { "alias": "csv"; "required": true; "isSignal": true; }; "keys": { "alias": "keys"; "required": false; "isSignal": true; }; "includeDefaultCSV": { "alias": "includeDefaultCSV"; "required": false; "isSignal": true; }; }, { "headersChanged": "headersChanged"; }, never, never, true, never>;
5637
- }
5638
-
5639
- declare class NodeIconComponent {
5640
- protected readonly type: _angular_core.InputSignal<NodeType>;
5641
- protected readonly size: _angular_core.InputSignal<_hestia_earth_ui_components.svgIconSizes>;
5642
- protected readonly icon: _angular_core.Signal<_hestia_earth_ui_components.svgIconNames>;
5643
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeIconComponent, never>;
5644
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeIconComponent, "he-node-icon", never, { "type": { "alias": "type"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5645
- }
5646
-
5647
- declare class NodeJsonldComponent {
5648
- protected readonly node: _angular_core.InputSignal<any>;
5649
- protected readonly data: _angular_core.Signal<any>;
5650
- protected readonly enableCsv: _angular_core.InputSignal<boolean>;
5651
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeJsonldComponent, never>;
5652
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeJsonldComponent, "he-node-jsonld", never, { "node": { "alias": "node"; "required": false; "isSignal": true; }; "enableCsv": { "alias": "enableCsv"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5653
- }
5654
-
5655
- declare enum Views {
5656
- jsonld = "JSON-LD",
5657
- csv = "CSV",
5658
- csvCompacted = "CSV (Compacted)"
5659
- }
5660
- declare class NodeJsonldSchemaComponent {
5661
- protected readonly content: _angular_core.InputSignal<any>;
5662
- protected readonly enableCsv: _angular_core.InputSignal<boolean>;
5663
- protected readonly csvOptions: _angular_core.InputSignal<IConvertCSVOptions>;
5664
- protected readonly csvNotice: _angular_core.InputSignal<string>;
5665
- protected readonly showSchemaButton: _angular_core.InputSignal<boolean>;
5666
- protected readonly useTabs: _angular_core.InputSignal<boolean>;
5667
- protected readonly Views: typeof Views;
5668
- protected readonly views: _angular_core.Signal<Views[]>;
5669
- protected readonly selectedView: _angular_core.ModelSignal<Views>;
5670
- protected readonly nodes: _angular_core.Signal<any>;
5671
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeJsonldSchemaComponent, never>;
5672
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeJsonldSchemaComponent, "he-node-jsonld-schema", never, { "content": { "alias": "content"; "required": true; "isSignal": true; }; "enableCsv": { "alias": "enableCsv"; "required": false; "isSignal": true; }; "csvOptions": { "alias": "csvOptions"; "required": false; "isSignal": true; }; "csvNotice": { "alias": "csvNotice"; "required": false; "isSignal": true; }; "showSchemaButton": { "alias": "showSchemaButton"; "required": false; "isSignal": true; }; "useTabs": { "alias": "useTabs"; "required": false; "isSignal": true; }; "selectedView": { "alias": "selectedView"; "required": false; "isSignal": true; }; }, { "selectedView": "selectedViewChange"; }, never, never, true, never>;
5235
+ private updateSchemaTableKeys;
5236
+ private createSchemaTableKeys;
5237
+ private updateKeys;
5238
+ protected defaultValue(key: string): "" | "N/A (from Cycle)";
5239
+ protected onTableKeyChange(key: IStoredKey, index: number, selected: boolean): void;
5240
+ protected dropTableKey({ previousIndex, currentIndex }: CdkDragDrop<any, any, IStoredKey>): void;
5241
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeValueDetailsComponent<any>, never>;
5242
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeValueDetailsComponent<any>, "he-node-value-details", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "nodeType": { "alias": "nodeType"; "required": true; "isSignal": true; }; "dataState": { "alias": "dataState"; "required": true; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": true; "isSignal": true; }; "aggregated": { "alias": "aggregated"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5673
5243
  }
5674
5244
 
5675
- declare class NodeLinkComponent {
5676
- private readonly route;
5677
- private readonly dataVersion;
5678
- protected readonly node: _angular_core.InputSignal<Pick<JSONLD<NodeType>, "@type" | "@id">>;
5679
- protected readonly dataState: _angular_core.InputSignal<DataState>;
5680
- protected readonly showExternalLink: _angular_core.InputSignal<boolean>;
5681
- protected readonly linkClass: _angular_core.InputSignal<string>;
5682
- protected readonly id: _angular_core.Signal<string>;
5683
- protected readonly type: _angular_core.Signal<NodeType>;
5684
- protected readonly aggregated: _angular_core.Signal<boolean>;
5685
- protected readonly url: _angular_core.Signal<string>;
5686
- protected readonly showLink: _angular_core.Signal<boolean>;
5687
- protected readonly target: _angular_core.Signal<"_self" | "_blank">;
5688
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeLinkComponent, never>;
5689
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeLinkComponent, "he-node-link", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "dataState": { "alias": "dataState"; "required": false; "isSignal": true; }; "showExternalLink": { "alias": "showExternalLink"; "required": false; "isSignal": true; }; "linkClass": { "alias": "linkClass"; "required": false; "isSignal": true; }; }, {}, never, ["*", "*"], true, never>;
5245
+ declare class SchemaInfoComponent {
5246
+ private readonly schemaService;
5247
+ private readonly schemas;
5248
+ private readonly schema;
5249
+ protected readonly type: _angular_core.InputSignal<SchemaType>;
5250
+ protected readonly field: _angular_core.InputSignal<string>;
5251
+ protected readonly content: _angular_core.InputSignal<string>;
5252
+ protected readonly placement: _angular_core.InputSignal<"left" | "top" | "right" | "bottom">;
5253
+ protected readonly triggers: _angular_core.InputSignal<"hover" | "click">;
5254
+ protected readonly container: _angular_core.InputSignal<"-" | "body">;
5255
+ protected readonly iconName: _angular_core.InputSignal<svgIconNames>;
5256
+ protected readonly iconSize: _angular_core.InputSignal<svgIconSizes>;
5257
+ protected readonly contentString: _angular_core.Signal<string>;
5258
+ protected readonly autoClose: _angular_core.Signal<true | "outside">;
5259
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchemaInfoComponent, never>;
5260
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchemaInfoComponent, "he-schema-info", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "field": { "alias": "field"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "triggers": { "alias": "triggers"; "required": false; "isSignal": true; }; "container": { "alias": "container"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5690
5261
  }
5691
5262
 
5692
- declare class NodeJLogModelsComponent {
5693
- private readonly searchService;
5694
- private readonly engineService;
5695
- protected readonly guideEnabled: boolean;
5696
- protected readonly node: _angular_core.InputSignal<IJSONNode>;
5697
- protected readonly nodeKey: _angular_core.InputSignal<string>;
5698
- protected readonly originalValues: _angular_core.InputSignal<blankNodesTypeValue[]>;
5699
- protected readonly recalculatedValues: _angular_core.InputSignal<blankNodesTypeValue[]>;
5700
- protected readonly filterTermTypes: _angular_core.InputSignal<TermTermType[]>;
5701
- protected readonly filterTermTypesLabel: _angular_core.InputSignal<string>;
5702
- protected readonly cycle: _angular_core.InputSignal<ICycleJSONLD>;
5703
- protected readonly jlog: _angular_core.InputSignal<Record<string, any>>;
5704
- protected readonly jlogParentKey: _angular_core.InputSignal<string>;
5705
- protected readonly jlogParentIndex: _angular_core.InputSignal<number>;
5706
- protected readonly scopedJlog: _angular_core.Signal<any>;
5707
- protected readonly schemaBaseUrl: string;
5708
- protected readonly isExternal: boolean;
5709
- protected readonly LogStatus: typeof LogStatus;
5710
- protected readonly logIcon: {
5711
- successful?: svgIconNames;
5712
- failed?: svgIconNames;
5713
- "not run (model higher up hierarchy run instead)"?: svgIconNames;
5714
- "not run (user provided data retained)"?: svgIconNames;
5715
- "not relevant"?: svgIconNames;
5263
+ type searchableType = NodeType.Cycle | NodeType.Source;
5264
+ declare const searchableTypes: searchableType[];
5265
+ type multiMatchType = 'best_fields' | 'most_fields' | 'cross_fields' | 'phrase' | 'phrase_prefix' | 'bool_prefix';
5266
+ type multiMatchAnalyzer = 'standard';
5267
+ declare const matchType: (type: NodeType | string) => Readonly<{
5268
+ match: {
5269
+ '@type.keyword': string;
5270
+ };
5271
+ }>;
5272
+ declare const matchId: (id: string) => Readonly<{
5273
+ match: {
5274
+ '@id.keyword': string;
5275
+ };
5276
+ }>;
5277
+ declare const matchTermType: (termType: TermTermType | string) => Readonly<Readonly<{
5278
+ match: {
5279
+ [x: string]: {
5280
+ boost?: number;
5281
+ query: any;
5282
+ };
5283
+ };
5284
+ }>>;
5285
+ declare const matchRegex: (key: string, value: string | RegExp) => Readonly<{
5286
+ regexp: {
5287
+ [x: string]: {
5288
+ value: string;
5289
+ };
5290
+ };
5291
+ }>;
5292
+ declare const matchQuery: (key: string, value: any, boost?: number) => Readonly<{
5293
+ match: {
5294
+ [x: string]: {
5295
+ boost?: number;
5296
+ query: any;
5297
+ };
5298
+ };
5299
+ }>;
5300
+ declare const matchExactQuery: (key: string, value: any, boost?: number) => Readonly<{
5301
+ match: {
5302
+ [x: string]: {
5303
+ boost?: number;
5304
+ query: any;
5305
+ };
5306
+ };
5307
+ }>;
5308
+ declare const matchNameNormalized: (query: string, boost?: number) => Readonly<{
5309
+ match: {
5310
+ nameNormalized: {
5311
+ query: string;
5312
+ boost: number;
5313
+ };
5314
+ };
5315
+ }>;
5316
+ declare const numberGte: (key: string, value: number) => Readonly<{
5317
+ range: {
5318
+ [x: string]: {
5319
+ gte: number;
5320
+ };
5321
+ };
5322
+ }>;
5323
+ declare const multiMatchQuery: (query: string, fields: string[], type?: multiMatchType, boost?: number, analyzer?: multiMatchAnalyzer) => Readonly<{
5324
+ multi_match: {
5325
+ analyzer?: "standard";
5326
+ boost?: number;
5327
+ query: string;
5328
+ fields: string[];
5329
+ type: multiMatchType;
5330
+ };
5331
+ }>;
5332
+ declare const matchPhraseQuery: (query: string, boost?: number, ...fields: string[]) => Readonly<{
5333
+ match: {
5334
+ [x: string]: {
5335
+ boost?: number;
5336
+ query: any;
5337
+ };
5338
+ };
5339
+ }> | Readonly<{
5340
+ multi_match: {
5341
+ analyzer?: "standard";
5342
+ boost?: number;
5343
+ query: string;
5344
+ fields: string[];
5345
+ type: multiMatchType;
5346
+ };
5347
+ }>;
5348
+ declare const matchPhrasePrefixQuery: (query: string, boost?: number, ...fields: string[]) => Readonly<{
5349
+ multi_match: {
5350
+ analyzer?: "standard";
5351
+ boost?: number;
5352
+ query: string;
5353
+ fields: string[];
5354
+ type: multiMatchType;
5355
+ };
5356
+ }> | Readonly<{
5357
+ match_phrase_prefix: {
5358
+ nameSearchAsYouType: {
5359
+ query: string;
5360
+ boost: number;
5361
+ };
5362
+ };
5363
+ }>;
5364
+ declare const matchBoolPrefixQuery: (query: string, boost?: number, ...fields: string[]) => Readonly<{
5365
+ multi_match: {
5366
+ analyzer?: "standard";
5367
+ boost?: number;
5368
+ query: string;
5369
+ fields: string[];
5370
+ type: multiMatchType;
5371
+ };
5372
+ }> | Readonly<{
5373
+ match_bool_prefix: {
5374
+ name: {
5375
+ query: string;
5376
+ boost: number;
5377
+ };
5378
+ };
5379
+ }>;
5380
+ declare const wildcardQuery: (query: string, boost?: number, ...fields: string[]) => Readonly<{
5381
+ simple_query_string: {
5382
+ query: string;
5383
+ fields: string[];
5384
+ analyze_wildcard: boolean;
5385
+ boost: number;
5386
+ };
5387
+ }>;
5388
+ declare const matchGlobalRegion: {
5389
+ regexp: {
5390
+ '@id': string;
5391
+ };
5392
+ };
5393
+ declare const matchCountry: Readonly<{
5394
+ bool: {
5395
+ should: ({
5396
+ match: {
5397
+ gadmLevel: number;
5398
+ };
5399
+ } | {
5400
+ regexp: {
5401
+ '@id': string;
5402
+ };
5403
+ })[];
5404
+ minimum_should_match: number;
5405
+ };
5406
+ }>;
5407
+ declare const countriesQuery: Readonly<{
5408
+ bool: {
5409
+ must: ({
5410
+ match: {
5411
+ gadmLevel: number;
5412
+ };
5413
+ } | Readonly<{
5414
+ match: {
5415
+ '@type.keyword': string;
5416
+ };
5417
+ }> | Readonly<Readonly<{
5418
+ match: {
5419
+ [x: string]: {
5420
+ boost?: number;
5421
+ query: any;
5422
+ };
5423
+ };
5424
+ }>>)[];
5425
+ };
5426
+ }>;
5427
+ declare const allCountriesQuery: Readonly<{
5428
+ bool: {
5429
+ should: ({
5430
+ match: {
5431
+ gadmLevel: number;
5432
+ };
5433
+ } | {
5434
+ regexp: {
5435
+ '@id': string;
5436
+ };
5437
+ })[];
5438
+ minimum_should_match: number;
5439
+ must: (Readonly<{
5440
+ match: {
5441
+ '@type.keyword': string;
5442
+ };
5443
+ }> | Readonly<Readonly<{
5444
+ match: {
5445
+ [x: string]: {
5446
+ boost?: number;
5447
+ query: any;
5448
+ };
5449
+ };
5450
+ }>>)[];
5451
+ };
5452
+ }>;
5453
+ declare const matchRegion: Readonly<{
5454
+ range: {
5455
+ [x: string]: {
5456
+ gte: number;
5457
+ };
5458
+ };
5459
+ }>;
5460
+ declare const regionsQuery: Readonly<{
5461
+ bool: {
5462
+ must: (Readonly<{
5463
+ match: {
5464
+ '@type.keyword': string;
5465
+ };
5466
+ }> | Readonly<Readonly<{
5467
+ match: {
5468
+ [x: string]: {
5469
+ boost?: number;
5470
+ query: any;
5471
+ };
5472
+ };
5473
+ }>> | Readonly<{
5474
+ range: {
5475
+ [x: string]: {
5476
+ gte: number;
5477
+ };
5478
+ };
5479
+ }>)[];
5716
5480
  };
5717
- protected readonly logColor: {
5718
- successful?: string;
5719
- failed?: string;
5720
- "not run (model higher up hierarchy run instead)"?: string;
5721
- "not run (user provided data retained)"?: string;
5722
- "not relevant"?: string;
5481
+ }>;
5482
+ declare const cropsQuery: Readonly<{
5483
+ bool: {
5484
+ must: (Readonly<{
5485
+ match: {
5486
+ '@type.keyword': string;
5487
+ };
5488
+ }> | Readonly<Readonly<{
5489
+ match: {
5490
+ [x: string]: {
5491
+ boost?: number;
5492
+ query: any;
5493
+ };
5494
+ };
5495
+ }>>)[];
5723
5496
  };
5724
- protected readonly isInSystemBoundary: (id: string) => boolean;
5725
- protected readonly typeaheadFocus: (e: Event) => void;
5726
- protected readonly isNumber: (value: any) => value is number;
5727
- protected readonly isEmptyValue: (value: any) => boolean;
5728
- protected readonly onlyRequired: _angular_core.WritableSignal<boolean>;
5729
- protected readonly onlyRequiredId: string;
5730
- protected readonly term: _angular_core.WritableSignal<ITermJSONLD>;
5731
- protected readonly nodeType: _angular_core.Signal<NodeType>;
5732
- protected readonly hasContributions: _angular_core.Signal<boolean>;
5733
- protected readonly isBlankNodes: _angular_core.Signal<boolean>;
5734
- private readonly failedTermIds;
5735
- private readonly failedTermsResource;
5736
- private readonly failedTerms;
5737
- private readonly configResource;
5738
- private readonly config;
5739
- private readonly allGroups;
5740
- protected readonly groups: _angular_core.Signal<IJLogTermGroup[]>;
5741
- protected readonly hasLogs: _angular_core.Signal<boolean>;
5742
- protected readonly methodModelsCount: _angular_core.Signal<number>;
5743
- protected readonly filteredType: _angular_core.Signal<string>;
5744
- protected readonly allTerms: _angular_core.Signal<ITermJSONLD[]>;
5745
- protected readonly enableFilterByTerm: _angular_core.Signal<boolean>;
5746
- protected readonly termFormatter: ({ name }: ITermJSONLD) => string;
5747
- protected readonly suggestTerm: (text$: Observable<string>) => Observable<ITermJSONLD[]>;
5748
- private readonly methodsById;
5749
- private searchTerms;
5750
- protected methodName({ methodId, modelKey }: IJLogModelRun): string;
5751
- protected modelMethodTier(model: IJLogModelRun): any;
5752
- protected readonly isArray: (arg: any) => arg is any[];
5753
- protected toggleGroup(group: IJLogTermGroup): void;
5754
- protected toggleRow(row: IJLogBlankNode): void;
5755
- protected trackByGroup(_index: number, group: IJLogTermGroup): string;
5756
- protected trackByRow(_index: number, row: IJLogBlankNode): string;
5757
- protected trackByModel(_index: number, model: IJLogModelRun): string;
5758
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeJLogModelsComponent, never>;
5759
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeJLogModelsComponent, "he-node-jlog-models", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "originalValues": { "alias": "originalValues"; "required": false; "isSignal": true; }; "recalculatedValues": { "alias": "recalculatedValues"; "required": false; "isSignal": true; }; "filterTermTypes": { "alias": "filterTermTypes"; "required": false; "isSignal": true; }; "filterTermTypesLabel": { "alias": "filterTermTypesLabel"; "required": false; "isSignal": true; }; "cycle": { "alias": "cycle"; "required": false; "isSignal": true; }; "jlog": { "alias": "jlog"; "required": false; "isSignal": true; }; "jlogParentKey": { "alias": "jlogParentKey"; "required": false; "isSignal": true; }; "jlogParentIndex": { "alias": "jlogParentIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5760
- }
5761
-
5762
- declare class NodeLogsFileComponent {
5763
- private readonly domSanitizer;
5764
- private readonly nodeService;
5765
- protected readonly node: _angular_core.InputSignal<JSONLD<NodeType>>;
5766
- protected readonly dataState: _angular_core.InputSignal<DataState>;
5767
- private readonly nodeLogResource;
5768
- protected readonly nodeLog: _angular_core.Signal<any>;
5769
- protected readonly loading: _angular_core.Signal<boolean>;
5770
- private readonly allLogs;
5771
- protected readonly Level: typeof Level;
5772
- protected readonly showFilters: _angular_core.WritableSignal<boolean>;
5773
- protected readonly modelFilter: _angular_core.WritableSignal<string>;
5774
- protected readonly termFilter: _angular_core.WritableSignal<string>;
5775
- protected readonly selectedLevel: _angular_core.WritableSignal<Level>;
5776
- protected readonly fileToExt: (path: string, extension?: string) => string;
5777
- protected readonly nodeLogLines: _angular_core.Signal<_hestia_earth_ui_components.ILine[]>;
5778
- protected readonly csvContent: _angular_core.Signal<_angular_platform_browser.SafeResourceUrl>;
5779
- protected readonly csvFilename: _angular_core.Signal<string>;
5780
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeLogsFileComponent, never>;
5781
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeLogsFileComponent, "he-node-logs-file", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "dataState": { "alias": "dataState"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5782
- }
5783
-
5784
- declare class NodeLogsModelsComponent {
5785
- private readonly nodeService;
5786
- private readonly nodeLogsModelsService;
5787
- private readonly searchService;
5788
- private readonly engineService;
5789
- protected readonly guideEnabled: boolean;
5790
- protected readonly node: _angular_core.InputSignal<IJSONNode>;
5791
- protected readonly nodeKey: _angular_core.InputSignal<blankNodesKey | nonBlankNodesKey>;
5792
- protected readonly originalValues: _angular_core.InputSignal<_hestia_earth_schema.Completeness | blankNodesTypeValue[]>;
5793
- protected readonly recalculatedValues: _angular_core.InputSignal<_hestia_earth_schema.Completeness | blankNodesTypeValue[]>;
5794
- protected readonly terms: _angular_core.InputSignal<ITermJSONLD[]>;
5795
- protected readonly filterTermTypes: _angular_core.InputSignal<TermTermType[]>;
5796
- protected readonly filterTermTypesLabel: _angular_core.InputSignal<string>;
5797
- protected readonly logsKey: _angular_core.InputSignal<string>;
5798
- protected readonly noDataMessage: _angular_core.InputSignal<string>;
5799
- protected readonly cycle: _angular_core.InputSignal<ICycleJSONLD>;
5800
- protected readonly jlogParentKey: _angular_core.InputSignal<string>;
5801
- protected readonly jlogParentIndex: _angular_core.InputSignal<number>;
5802
- protected readonly isEmpty: (value: any, minKeys?: number) => boolean;
5803
- protected readonly schemaBaseUrl: string;
5804
- protected readonly isExternal: boolean;
5805
- protected readonly NodeType: typeof NodeType;
5806
- protected readonly CycleFunctionalUnit: typeof CycleFunctionalUnit;
5807
- protected readonly EmissionMethodTier: typeof EmissionMethodTier;
5808
- protected readonly LogStatus: typeof LogStatus;
5809
- protected readonly logIcon: {
5810
- successful?: svgIconNames;
5811
- failed?: svgIconNames;
5812
- "not run (model higher up hierarchy run instead)"?: svgIconNames;
5813
- "not run (user provided data retained)"?: svgIconNames;
5814
- "not relevant"?: svgIconNames;
5497
+ }>;
5498
+ declare const productsQuery: Readonly<{
5499
+ bool: {
5500
+ must: Readonly<{
5501
+ match: {
5502
+ '@type.keyword': string;
5503
+ };
5504
+ }>[];
5505
+ should: Readonly<Readonly<{
5506
+ match: {
5507
+ [x: string]: {
5508
+ boost?: number;
5509
+ query: any;
5510
+ };
5511
+ };
5512
+ }>>[];
5513
+ minimum_should_match: number;
5815
5514
  };
5816
- protected readonly logColor: {
5817
- successful?: string;
5818
- failed?: string;
5819
- "not run (model higher up hierarchy run instead)"?: string;
5820
- "not run (user provided data retained)"?: string;
5821
- "not relevant"?: string;
5515
+ }>;
5516
+ declare const matchAggregatedQuery: Readonly<{
5517
+ match: {
5518
+ [x: string]: {
5519
+ boost?: number;
5520
+ query: any;
5521
+ };
5822
5522
  };
5823
- protected readonly getModelsAt: (log: IBlankNodeLogSubValue | IBlankNodeLog, index: number) => IConfigModel | IConfigModel[];
5824
- protected readonly isInSystemBoundary: (id: string) => boolean;
5825
- protected readonly showLegend: _angular_core.WritableSignal<boolean>;
5826
- protected readonly onlyRequired: _angular_core.WritableSignal<boolean>;
5827
- protected readonly onlyRequiredId: string;
5828
- protected readonly showContributionsLogs: _angular_core.WritableSignal<boolean>;
5829
- private readonly schemaType;
5830
- protected readonly filteredType: _angular_core.Signal<string>;
5831
- protected readonly functionalUnit: _angular_core.Signal<any>;
5832
- protected readonly hasContributions: _angular_core.Signal<boolean>;
5833
- protected readonly nodeType: _angular_core.Signal<NodeType>;
5834
- private readonly jlogResource;
5835
- protected readonly jlog: _angular_core.Signal<Record<string, any>>;
5836
- protected readonly loadingJLog: _angular_core.Signal<boolean>;
5837
- protected readonly useJLog: _angular_core.Signal<boolean>;
5838
- protected readonly logsUrl: _angular_core.Signal<string>;
5839
- private readonly logsResource;
5840
- private readonly allLogs;
5841
- protected readonly hasLogs: _angular_core.Signal<boolean>;
5842
- private readonly configResource;
5843
- private readonly config;
5844
- private readonly inputGroupsResource;
5845
- private readonly animalGroups;
5846
- private readonly termsGrouping;
5847
- private readonly logs;
5848
- protected readonly isBlankNodes: _angular_core.Signal<boolean>;
5849
- private readonly extraTermsFromLogsResource;
5850
- private readonly extraTermsByTermTypesResource;
5851
- private readonly extraTerms;
5852
- private readonly allTerms;
5853
- private readonly allBlankNodes;
5854
- protected readonly blankNodes: _angular_core.Signal<IBlankNodeLog[]>;
5855
- protected readonly methodModelsCount: _angular_core.Signal<any>;
5856
- private readonly methodsById;
5857
- private readonly termsByIdResource;
5858
- private readonly termsById;
5859
- protected readonly term: _angular_core.WritableSignal<ITermJSONLD>;
5860
- protected readonly enableFilterByTerm: _angular_core.Signal<boolean>;
5861
- protected readonly termFormatter: ({ name }: ITermJSONLD) => string;
5862
- protected readonly suggestTerm: (text$: Observable<string>) => Observable<ITermJSONLD[]>;
5863
- protected readonly typeaheadFocus: (e: Event) => void;
5864
- protected readonly loading: _angular_core.Signal<boolean>;
5865
- protected readonly isNumber: (value: any) => value is number;
5866
- private searchTerms;
5867
- protected trackByBlankNode(_index: number, node: any): any;
5868
- protected trackBySubValue({ id, key }: IBlankNodeLogSubValue): string;
5869
- protected methodName({ methodId, model }: IConfigModel): string;
5870
- protected termById(id: string): ITermJSONLD;
5871
- protected toggleBlankNode(blankNode: IBlankNodeLog): void;
5872
- protected subValuesKey({ subValues }: IBlankNodeLog, defaultValue: string): string;
5873
- protected hasCompleteSuccess({ subValues }: IBlankNodeLog): boolean;
5874
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeLogsModelsComponent, never>;
5875
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeLogsModelsComponent, "he-node-logs-models", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "originalValues": { "alias": "originalValues"; "required": false; "isSignal": true; }; "recalculatedValues": { "alias": "recalculatedValues"; "required": false; "isSignal": true; }; "terms": { "alias": "terms"; "required": false; "isSignal": true; }; "filterTermTypes": { "alias": "filterTermTypes"; "required": false; "isSignal": true; }; "filterTermTypesLabel": { "alias": "filterTermTypesLabel"; "required": false; "isSignal": true; }; "logsKey": { "alias": "logsKey"; "required": false; "isSignal": true; }; "noDataMessage": { "alias": "noDataMessage"; "required": false; "isSignal": true; }; "cycle": { "alias": "cycle"; "required": false; "isSignal": true; }; "jlogParentKey": { "alias": "jlogParentKey"; "required": false; "isSignal": true; }; "jlogParentIndex": { "alias": "jlogParentIndex"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
5876
- }
5877
-
5878
- interface ITimeLog {
5879
- model_model: string;
5880
- model_value?: string;
5881
- memory_used: number;
5882
- time: number;
5883
- }
5884
- interface ISorting {
5885
- sortBy: string;
5886
- sortOrder: 'asc' | 'desc';
5887
- }
5888
- declare class NodeLogsTimeComponent {
5889
- private readonly nodeService;
5890
- protected readonly node: _angular_core.InputSignal<JSONLD<NodeType>>;
5891
- protected readonly showMemoryUsage: _angular_core.InputSignal<boolean>;
5892
- protected readonly nodeLogsResource: _angular_core.ResourceRef<any>;
5893
- protected readonly logs: _angular_core.Signal<{
5894
- time: number;
5895
- model_model: string;
5896
- model_value?: string;
5897
- memory_used: number;
5898
- }[]>;
5899
- protected readonly totalTime: _angular_core.Signal<number>;
5900
- protected readonly sorting: ISorting;
5901
- protected toggleSort(sortBy: string): void;
5902
- protected runModelCmd({ model_model, model_value }: ITimeLog): string;
5903
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeLogsTimeComponent, never>;
5904
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeLogsTimeComponent, "he-node-logs-time", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "showMemoryUsage": { "alias": "showMemoryUsage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5905
- }
5906
-
5907
- declare class NodeMissingLookupFactorsComponent {
5908
- private readonly nodeService;
5909
- protected readonly node: _angular_core.InputSignal<JSONLD<NodeType>>;
5910
- protected readonly logsResource: _angular_core.ResourceRef<_hestia_earth_ui_components.INodeMissingLookupLog[]>;
5911
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeMissingLookupFactorsComponent, never>;
5912
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeMissingLookupFactorsComponent, "he-node-missing-lookup-factors", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
5913
- }
5523
+ }>;
5524
+ declare const matchAggregatedValidatedQuery: Readonly<{
5525
+ match: {
5526
+ [x: string]: {
5527
+ boost?: number;
5528
+ query: any;
5529
+ };
5530
+ };
5531
+ }>;
5532
+ declare const matchNestedKey: (key: string, query: any) => any;
5533
+ declare const matchPrimaryProductQuery: (product: string) => any;
5914
5534
 
5915
- declare enum NodeField {
5916
- inputs = "inputs",
5917
- measurements = "measurements",
5918
- practices = "practices",
5919
- products = "products"
5535
+ type searchResult = ICycleJSONLD | ISourceJSONLD | IImpactAssessmentJSONLD | ITermJSONLD;
5536
+ type sortOrders = 'asc' | 'desc';
5537
+ interface ISearchParamSort {
5538
+ [key: string]: sortOrders;
5920
5539
  }
5921
- declare class NodeRecommendationsComponent {
5922
- private readonly engineService;
5923
- protected readonly node: _angular_core.InputSignal<any>;
5924
- protected readonly nodeField: _angular_core.InputSignal<NodeField>;
5925
- protected readonly buttonClass: _angular_core.InputSignal<string>;
5926
- protected readonly selectRecommendation: _angular_core.OutputEmitterRef<string>;
5927
- protected readonly loading: _angular_core.WritableSignal<boolean>;
5928
- protected readonly visible: _angular_core.WritableSignal<boolean>;
5929
- protected readonly recommendations: _angular_core.WritableSignal<string[]>;
5930
- private readonly type;
5931
- private readonly termType;
5932
- private readonly validField;
5933
- private readonly existingIds;
5934
- private readonly filters;
5935
- private readonly filters$;
5936
- constructor();
5937
- protected add(id: string, index: number): void;
5938
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeRecommendationsComponent, never>;
5939
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeRecommendationsComponent, "he-node-recommendations", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "nodeField": { "alias": "nodeField"; "required": true; "isSignal": true; }; "buttonClass": { "alias": "buttonClass"; "required": false; "isSignal": true; }; }, { "selectRecommendation": "selectRecommendation"; }, never, never, true, never>;
5540
+ interface ISearchScript {
5541
+ _script: {
5542
+ type?: string;
5543
+ order?: sortOrders;
5544
+ script: string;
5545
+ };
5940
5546
  }
5941
-
5942
- declare class NodeSelectComponent {
5943
- private readonly nodeStoreService;
5944
- private readonly _nodes;
5945
- private readonly nodes;
5946
- private readonly _nodeTypes;
5947
- readonly selectedNodeType: _angular_core.ModelSignal<NodeType>;
5948
- readonly selectedNodeId: _angular_core.ModelSignal<string>;
5949
- readonly selectedDataState: _angular_core.ModelSignal<DataState>;
5950
- protected readonly selectFirstId: _angular_core.InputSignal<boolean>;
5951
- protected readonly enableTypes: _angular_core.InputSignal<NodeType[]>;
5952
- protected readonly enableNodeType: _angular_core.InputSignal<boolean>;
5953
- protected readonly enableDataState: _angular_core.InputSignal<boolean>;
5954
- protected readonly showLabel: _angular_core.InputSignal<boolean>;
5955
- protected readonly direction: _angular_core.InputSignal<"column" | "row">;
5956
- protected readonly nodeSelected: _angular_core.OutputEmitterRef<JSONLD<NodeType>>;
5957
- readonly selectedNode: _angular_core.Signal<JSONLD<NodeType>>;
5958
- protected readonly nodeTypes: _angular_core.Signal<NodeType[]>;
5959
- protected readonly nodeIds: _angular_core.Signal<string[]>;
5960
- protected readonly dataStates: _angular_core.Signal<DataState[]>;
5961
- constructor();
5962
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeSelectComponent, never>;
5963
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeSelectComponent, "he-node-select", ["heNodeSelect"], { "selectedNodeType": { "alias": "selectedNodeType"; "required": false; "isSignal": true; }; "selectedNodeId": { "alias": "selectedNodeId"; "required": false; "isSignal": true; }; "selectedDataState": { "alias": "selectedDataState"; "required": false; "isSignal": true; }; "selectFirstId": { "alias": "selectFirstId"; "required": false; "isSignal": true; }; "enableTypes": { "alias": "enableTypes"; "required": false; "isSignal": true; }; "enableNodeType": { "alias": "enableNodeType"; "required": false; "isSignal": true; }; "enableDataState": { "alias": "enableDataState"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; }, { "selectedNodeType": "selectedNodeTypeChange"; "selectedNodeId": "selectedNodeIdChange"; "selectedDataState": "selectedDataStateChange"; "nodeSelected": "nodeSelected"; }, never, never, true, never>;
5547
+ interface ISearchParams {
5548
+ limit?: number;
5549
+ offset?: number;
5550
+ fields?: string[];
5551
+ sort?: ISearchParamSort[] | ISearchScript;
5552
+ query?: any;
5964
5553
  }
5965
-
5966
- interface IStoredKey {
5967
- key: string;
5968
- selected: boolean;
5554
+ interface ISearchResultExtended {
5555
+ _score: number;
5556
+ location?: {
5557
+ lat: number;
5558
+ lon: number;
5559
+ };
5560
+ properties?: string[];
5561
+ expanded?: boolean;
5562
+ extended?: boolean;
5563
+ pinned?: boolean;
5564
+ loading?: boolean;
5565
+ selected?: boolean;
5566
+ inputsCount?: number;
5567
+ emissionsCount?: number;
5568
+ productsCount?: number;
5969
5569
  }
5970
- declare class NodeValueDetailsComponent<T extends Exclude<blankNodesType, Infrastructure | Property | Transformation>> {
5971
- private readonly schemaService;
5972
- private readonly localStorage;
5973
- protected readonly schemaBaseUrl: string;
5974
- protected readonly keys: string[];
5975
- protected readonly additionalKeys: string[];
5976
- private readonly schemas;
5977
- private readonly schemaKeys;
5978
- private readonly schemaKeys$;
5979
- private readonly storedTableKeys;
5980
- protected readonly tableKeys: _angular_core.Signal<IStoredKey[]>;
5981
- private readonly availableTableKeys;
5982
- protected readonly visibleTableKeys: _angular_core.Signal<string[]>;
5983
- protected readonly data: _angular_core.InputSignal<IGroupedNode<T>>;
5984
- protected readonly nodeType: _angular_core.InputSignal<NodeType>;
5985
- protected readonly dataState: _angular_core.InputSignal<DataState>;
5986
- protected readonly dataKey: _angular_core.InputSignal<string>;
5987
- protected readonly aggregated: _angular_core.InputSignal<boolean>;
5988
- protected readonly nodes: _angular_core.Signal<T[]>;
5989
- protected readonly node: _angular_core.Signal<T>;
5990
- protected readonly term: _angular_core.Signal<_hestia_earth_schema.Term>;
5991
- protected readonly type: _angular_core.Signal<SchemaType>;
5992
- private readonly type$;
5993
- protected readonly showInline: _angular_core.Signal<boolean>;
5994
- protected readonly showDistribution: _angular_core.WritableSignal<T>;
5995
- protected readonly chartDistribution: _angular_core.Signal<number[]>;
5996
- protected readonly chartValue: _angular_core.Signal<any>;
5997
- protected readonly chartLabel: _angular_core.Signal<string>;
5998
- protected readonly models: _angular_core.Signal<{
5999
- name: string;
6000
- link: string;
6001
- }[]>;
6002
- constructor();
6003
- private updateSchemaTableKeys;
6004
- private createSchemaTableKeys;
6005
- private updateKeys;
6006
- protected defaultValue(key: string): "" | "N/A (from Cycle)";
6007
- protected onTableKeyChange(key: IStoredKey, index: number, selected: boolean): void;
6008
- protected dropTableKey({ previousIndex, currentIndex }: CdkDragDrop<any, any, IStoredKey>): void;
6009
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeValueDetailsComponent<any>, never>;
6010
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeValueDetailsComponent<any>, "he-node-value-details", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "nodeType": { "alias": "nodeType"; "required": true; "isSignal": true; }; "dataState": { "alias": "dataState"; "required": true; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": true; "isSignal": true; }; "aggregated": { "alias": "aggregated"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5570
+ interface ISearchResults<C extends JSONLD<T>, T extends NodeType = searchableType> {
5571
+ /**
5572
+ * Amount of time the query took
5573
+ */
5574
+ time: number;
5575
+ /**
5576
+ * Numnber of results
5577
+ */
5578
+ count: number;
5579
+ results: (C & ISearchResultExtended)[];
6011
5580
  }
6012
-
6013
- declare class SchemaInfoComponent {
6014
- private readonly schemaService;
6015
- private readonly schemas;
6016
- private readonly schema;
6017
- protected readonly type: _angular_core.InputSignal<SchemaType>;
6018
- protected readonly field: _angular_core.InputSignal<string>;
6019
- protected readonly content: _angular_core.InputSignal<string>;
6020
- protected readonly placement: _angular_core.InputSignal<"top" | "bottom" | "left" | "right">;
6021
- protected readonly triggers: _angular_core.InputSignal<"click" | "hover">;
6022
- protected readonly container: _angular_core.InputSignal<"-" | "body">;
6023
- protected readonly iconName: _angular_core.InputSignal<svgIconNames>;
6024
- protected readonly iconSize: _angular_core.InputSignal<svgIconSizes>;
6025
- protected readonly contentString: _angular_core.Signal<string>;
6026
- protected readonly autoClose: _angular_core.Signal<true | "outside">;
6027
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchemaInfoComponent, never>;
6028
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchemaInfoComponent, "he-schema-info", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "field": { "alias": "field"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "triggers": { "alias": "triggers"; "required": false; "isSignal": true; }; "container": { "alias": "container"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5581
+ declare const MAX_RESULTS = 10000;
5582
+ declare const suggestMatchQuery: (query: string) => (Readonly<{
5583
+ match: {
5584
+ [x: string]: {
5585
+ boost?: number;
5586
+ query: any;
5587
+ };
5588
+ };
5589
+ }> | Readonly<{
5590
+ match: {
5591
+ nameNormalized: {
5592
+ query: string;
5593
+ boost: number;
5594
+ };
5595
+ };
5596
+ }> | Readonly<{
5597
+ multi_match: {
5598
+ analyzer?: "standard";
5599
+ boost?: number;
5600
+ query: string;
5601
+ fields: string[];
5602
+ type: "best_fields" | "most_fields" | "cross_fields" | "phrase" | "phrase_prefix" | "bool_prefix";
5603
+ };
5604
+ }> | Readonly<{
5605
+ match_phrase_prefix: {
5606
+ nameSearchAsYouType: {
5607
+ query: string;
5608
+ boost: number;
5609
+ };
5610
+ };
5611
+ }>)[];
5612
+ declare const suggestQuery: <T extends NodeType = searchableType>(query: string, type?: T, extraQueries?: any[]) => {
5613
+ bool: {
5614
+ must: any[];
5615
+ should: {
5616
+ bool: {
5617
+ must: Readonly<{
5618
+ match: {
5619
+ '@type.keyword': string;
5620
+ };
5621
+ }>[];
5622
+ should: (Readonly<{
5623
+ match: {
5624
+ [x: string]: {
5625
+ boost?: number;
5626
+ query: any;
5627
+ };
5628
+ };
5629
+ }> | Readonly<{
5630
+ match: {
5631
+ nameNormalized: {
5632
+ query: string;
5633
+ boost: number;
5634
+ };
5635
+ };
5636
+ }> | Readonly<{
5637
+ multi_match: {
5638
+ analyzer?: "standard";
5639
+ boost?: number;
5640
+ query: string;
5641
+ fields: string[];
5642
+ type: "best_fields" | "most_fields" | "cross_fields" | "phrase" | "phrase_prefix" | "bool_prefix";
5643
+ };
5644
+ }> | Readonly<{
5645
+ match_phrase_prefix: {
5646
+ nameSearchAsYouType: {
5647
+ query: string;
5648
+ boost: number;
5649
+ };
5650
+ };
5651
+ }>)[];
5652
+ minimum_should_match: number;
5653
+ };
5654
+ }[];
5655
+ minimum_should_match: number;
5656
+ };
5657
+ };
5658
+ declare class HeSearchService {
5659
+ protected readonly http: HttpClient;
5660
+ protected readonly commonService: HeCommonService;
5661
+ search$<C extends JSONLD<T>, T extends NodeType = searchableType>(params: ISearchParams, dataVersion?: string, searchPath?: string): rxjs.Observable<ISearchResults<C, T>>;
5662
+ count$(params?: {}, dataVersion?: string, countPath?: string): rxjs.Observable<number>;
5663
+ get$<C extends JSONLD<T>, T extends NodeType>(type: T, id: string, searchPath?: string): rxjs.Observable<C & ISearchResultExtended>;
5664
+ suggest$<C extends JSONLD<T>, T extends NodeType = searchableType>(term: string, type?: T, extraQueries?: any[], fullQuery?: any, limit?: number, includes?: string[], searchPath?: string): rxjs.Observable<Omit<C & ISearchResultExtended, "_score">[]>;
5665
+ suggestSource$(term: string, limit?: number, fields?: string[], includes?: string[]): rxjs.Observable<Partial<Source>[]>;
5666
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeSearchService, never>;
5667
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<HeSearchService>;
6029
5668
  }
6030
5669
 
6031
5670
  type SelectValue<T> = T | T[] | null;
@@ -6159,6 +5798,23 @@ declare const siteTooBig: ({ area }: any) => boolean;
6159
5798
  declare const measurementValue: ({ value, depthLower, depthUpper, nodes }: Partial<IGroupedNode<Measurement>>, termId: string) => any;
6160
5799
  declare const siteTypeToIcon: Record<SiteSiteType, svgIconNames>;
6161
5800
  declare const siteTypeToColor: Record<SiteSiteType, string>;
5801
+ interface IAggregatedCycle {
5802
+ '@id'?: string;
5803
+ site?: {
5804
+ '@id'?: string;
5805
+ };
5806
+ products?: {
5807
+ primary?: boolean;
5808
+ term?: {
5809
+ '@id'?: string;
5810
+ termType?: string;
5811
+ };
5812
+ }[];
5813
+ }
5814
+ declare const aggregatedSitePrimaryProduct: (cycles: IAggregatedCycle[], siteId?: string) => {
5815
+ '@id'?: string;
5816
+ termType?: string;
5817
+ };
6162
5818
 
6163
5819
  interface ISelectedChart {
6164
5820
  termType: TermTermType;
@@ -6252,6 +5908,7 @@ declare class SitesMapsComponent implements OnDestroy {
6252
5908
  protected readonly mapLoaded$: Observable<boolean>;
6253
5909
  private readonly nodeService;
6254
5910
  private readonly nodeStoreService;
5911
+ private readonly regionGeojsonBaseUrl;
6255
5912
  private _loadPolygonsRequests;
6256
5913
  private readonly _mapReady;
6257
5914
  private readonly map;
@@ -6296,7 +5953,8 @@ type siteGroupedNodeExtended = siteGroupedNode & {
6296
5953
  declare enum View {
6297
5954
  table = "Table",
6298
5955
  chart = "Chart",
6299
- logs = "Recalculations logs"
5956
+ logs = "Recalculations logs",
5957
+ aggregationLogs = "Aggregation logs"
6300
5958
  }
6301
5959
  declare class SitesNodesComponent {
6302
5960
  private readonly modalService;
@@ -6322,6 +5980,7 @@ declare class SitesNodesComponent {
6322
5980
  Table: svgIconNames;
6323
5981
  Chart: svgIconNames;
6324
5982
  "Recalculations logs": svgIconNames;
5983
+ "Aggregation logs": svgIconNames;
6325
5984
  };
6326
5985
  private readonly showView;
6327
5986
  protected readonly views: _angular_core.Signal<View[]>;
@@ -6419,6 +6078,10 @@ declare class SitesNodesComponent {
6419
6078
  protected readonly isMeasurement: _angular_core.Signal<boolean>;
6420
6079
  protected readonly isNodeKeyAllowed: _angular_core.Signal<boolean>;
6421
6080
  private readonly hasRecalculatedNodes;
6081
+ private readonly hasAggregatedNodes;
6082
+ private readonly primaryProduct;
6083
+ protected readonly primaryProductTermType: _angular_core.Signal<string>;
6084
+ protected readonly primaryProductTermId: _angular_core.Signal<string>;
6422
6085
  protected readonly showSwitchToRecalculated: _angular_core.Signal<boolean>;
6423
6086
  protected readonly showAreaTooBig: _angular_core.Signal<boolean>;
6424
6087
  protected readonly hasData: _angular_core.Signal<boolean>;
@@ -6485,5 +6148,5 @@ declare class TermsUnitsDescriptionComponent {
6485
6148
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TermsUnitsDescriptionComponent, "he-terms-units-description", never, { "term": { "alias": "term"; "required": true; "isSignal": true; }; "iconTemplate": { "alias": "iconTemplate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6486
6149
  }
6487
6150
 
6488
- export { ARRAY_DELIMITER, ApplyPurePipe, BarChartComponent, BibliographiesSearchConfirmComponent, BlankNodeStateComponent, BlankNodeStateNoticeComponent, BlankNodeValueDeltaComponent, CapitalizePipe, ChartComponent, ChartConfigurationDirective, ChartExportButtonComponent, ChartTooltipComponent, ClickOutsideDirective, ClipboardComponent, CollapsibleBlockComponent, CollapsibleBoxComponent, CollapsibleBoxStyle, ColorPalette, CompoundDirective, CompoundPipe, ContributionChartComponent, ControlValueAccessor, CycleNodesKeyGroup, CyclesCompletenessComponent, CyclesEmissionsCategoryService, CyclesEmissionsChartComponent, CyclesFunctionalUnitMeasureComponent, CyclesMetadataComponent, CyclesNodesComponent, CyclesNodesTimelineComponent, CyclesResultComponent, DataTableComponent, DefaultPipe, DeltaColour, DistributionChartComponent, DrawerContainerComponent, DurationPipe, EllipsisPipe, EngineModelsLinkComponent, EngineModelsLookupInfoComponent, EngineModelsStageComponent, EngineModelsStageDeepComponent, EngineModelsStageDeepService, EngineModelsVersionInfoComponent, EngineModelsVersionLinkComponent, EngineOrchestratorEditComponent, EngineRequirementsFormComponent, FileSizePipe, FileUploadErrorKeys, FilesDragDropDirective, FilesDropZoneComponent, FilesErrorSummaryComponent, FilesFormComponent, FilesFormEditableComponent, FilesUploadErrorsComponent, FilterAccordionComponent, FormulaBlockComponent, GUIDE_ENABLED, GetPipe, GlossaryMigrationFormat, GuideOverlayComponent, HE_API_BASE_URL, HE_CALCULATIONS_BASE_URL, HE_MAP_LOADED, HeAuthService, HeCommonService, HeEngineService, HeGlossaryService, HeMendeleyService, HeNodeCsvService, HeNodeService, HeNodeStoreService, HeSchemaService, HeSearchService, HeToastService, HorizontalBarChartComponent, HorizontalButtonsGroupComponent, ImpactAssessmentsGraphComponent, ImpactAssessmentsIndicatorBreakdownChartComponent, ImpactAssessmentsIndicatorsChartComponent, ImpactAssessmentsProductsComponent, IsArrayPipe, IsObjectPipe, IssueConfirmComponent, KeyToLabelPipe, Level, LineChartComponent, LinkKeyValueComponent, LogStatus, LongPressDirective, MAX_RESULTS, MapsDrawingComponent, MapsDrawingConfirmComponent, MaxPipe, MeanPipe, MedianPipe, MendeleySearchResult, MinPipe, MobileShellComponent, NavigationMenuComponent, NoExtPipe, NodeAggregatedComponent, NodeAggregatedFormulasComponent, NodeAggregatedInfoComponent, NodeAggregatedQualityScoreComponent, NodeAggregationLogsComponent, NodeCsvExportConfirmComponent, NodeCsvPreviewComponent, NodeCsvSelectHeadersComponent, NodeIconComponent, NodeJLogModelsComponent, NodeJsonldComponent, NodeJsonldSchemaComponent, NodeKeyState, NodeLinkComponent, NodeLogsFileComponent, NodeLogsModelsComponent, NodeLogsTimeComponent, NodeMissingLookupFactorsComponent, NodeQualityScore, NodeRecommendationsComponent, NodeSelectComponent, NodeValueDetailsComponent, PipelineStagesProgressComponent, PluralizePipe, PopoverComponent, PopoverConfirmComponent, PrecisionPipe, RelatedNodeResult, RemoveMarkdownPipe, RepeatPipe, Repository, ResizedDirective, ResizedEvent, ResponsiveService, SchemaInfoComponent, SchemaVersionLinkComponent, SearchExtendComponent, ShelfDialogComponent, ShellComponent, SiteNodesKeyGroup, SitesManagementChartComponent, SitesMapsComponent, SitesNodesComponent, SkeletonTextComponent, SocialTagsComponent, SortByPipe, SortSelectComponent, SumPipe, TagsInputDirective, Template, TermsPropertyContentComponent, TermsSubClassOfContentComponent, TermsUnitsDescriptionComponent, ThousandSuffixesPipe, ThousandsPipe, TimesPipe, ToastComponent, UncapitalizePipe, addPolygonToFeature, afterBarDrawPlugin, allCountriesQuery, allGroups, allOptions, availableProperties, axisHoverPlugin, axisLabelCursor, axisLabelSettings, backgroundHoverPlugin, backgroundModelParams, baseApiUrl, baseUrl, bottom, buildSummary, bytesSize, calculateCycleDuration, calculateCycleDurationEnabled, calculateCycleStartDate, calculateCycleStartDateEnabled, capitalize, changelogUrl, chartLabelMaxLength, clustererImage, code, colorToRgba, compoundToHtml, computeKeys, computeTerms, contactUsEmail, contactUsLink, convertToSvg, coordinatesToPoint, copyObject, countGroupVisibleNodes, countriesQuery, createMarker, cropsQuery, d3ellipse, d3wrap, dataPathLabel, dataPathToKey, dataVersionHeader, dataVersionHeaderKey, defaultFeature, defaultLabel, defaultSuggestionType, defaultTicksFont, definitionToSchemaType, distinctUntilChangedDeep, downloadFile, downloadPng, downloadSvg, ellipsis, engineGitBaseUrl, engineGitUrl, errorText, errorsLabel, evaluateSuccess, exportAsSVG, exportFormats, externalLink, externalNodeLink, fillColor, fillStyle, filterBlankNode, filterParams, findBackgroundModel, findConfigModels, findMatchingModel, findModels, findNodeModel, findOrchestratorModel, findProperty, findPropertyById, findTermModels, flatFilterData, flatFilterNode, formatCustomErrorMessage, formatDate, formatError, formatPropertyError, formatter, getColor, getDatesBetween, gitBranch, gitHome, glossaryBaseUrl, glossaryLink, groupBlankNodesByTermIdentity, groupChanged, groupDataByCategory, groupJLogByField, groupJLogByTerm, groupLogsByTerm, groupNodesByTerm, groupdLogsByKey, grouppedKeys, grouppedValueKeys, groupsLogsByFields, guideModelUrl, guideNamespace, handleAPIError, handleGuideEvent, hasError, hasValidationError, hasWarning, hexToRgba, highestMethodTier, ignoreKeys, impactAssessmentProduct, increaseScaleLimits, initialFilterState, injectResizeEvent$, inputGroupsTermTypes, isAddPropertyEnabled, isChrome, isDateBetween, isEqual, isExternal, isIdenticalNodeValue, isKeyClosedVisible, isKeyHidden, isMaxStage, isMethodModelAllowed, isNonNodeModelKey, isSchemaIri, isScrolledBelow, isState, isTermTypeAllowed, isValidKey, jLogModelCount, keyToDataPath, levels, listColor, listColorContinuous, listColorWithAlpha, loadMapApi, locationQuery, logToCsv, logValueArray, logsKey, lollipopChartPlugin, lookupUrl, mapFilterData, mapsUrl, markerIcon, markerPie, matchAggregatedQuery, matchAggregatedValidatedQuery, matchBoolPrefixQuery, matchCountry, matchExactQuery, matchGlobalRegion, matchId, matchNameNormalized, matchNestedKey, matchPhrasePrefixQuery, matchPhraseQuery, matchPrimaryProductQuery, matchQuery, matchRegex, matchRegion, matchTermType, matchType, maxAreaSize, measurementValue, mergeDataWithHeaders, methodTierOrder, migrationErrorMessage, migrationsUrl, modelCount, modelKeyParams, modelParams, models, multiMatchQuery, nestedProperty, nestingEnabled, nestingTypeEnabled, noValue, nodeAvailableProperties, nodeById, nodeChartLabels, nodeColours, nodeDataState, nodeDataStates, nodeDataVersion, nodeId, nodeIdWithoutDataVersion, nodeIds, nodeLink, nodeLinkEnabled, nodeLinkTypeEnabled, nodeLogsUrl, nodeQualityScoreColor, nodeQualityScoreLevel, nodeQualityScoreMaxDefault, nodeQualityScoreOrder, nodeRequestId, nodeSecondaryColours, nodeToAggregationFilename, nodeType, nodeTypeDataState, nodeTypeIcon, nodeTypeIconSchema, nodeUrl, nodeUrlParams, nodeVersion, nodeVersionKey, nodesByState, nodesByType, numberGte, openNodeUrl, openUrl, optionsFromGroup, parentKey, parentProperty, parseColor, parseData, parseDataPath, parseLines, parseMessage, parseNewValue, pluralize, pointToCoordinates, polygonBounds, polygonToCoordinates, polygonToMap, polygonsFromFeature, populateWithTrackIdsFilterData, postGuideEvent, primaryProduct, productsQuery, propertyError, propertyId, recursiveProperties, refToSchemaType, refreshPropertyKeys, regionsQuery, registerChart, repeat, reportIssueLink, reportIssueUrl, safeJSONParse, safeJSONStringify, schemaBaseUrl, schemaDataBaseUrl, schemaLink, schemaRequiredProperties, schemaTypeToDefaultValue, scrollToEl, scrollTop, searchFilterData, searchableTypes, siblingProperty, simplifyContributions, singleProperty, siteTooBig, siteTypeToColor, siteTypeToIcon, sortProperties, sortedDates, strokeColor, strokeStyle, subValueKeys, suggestMatchQuery, suggestQuery, suggestTerms, sumValues, takeAfterViewInit, termLocation, termLocationName, termProperties, termSearch, termTypeLabel, toSnakeCase, toTextParts, toThousands, typeToNewProperty, typeaheadFocus, uncapitalize, uniqueDatesBetween, updateProperties, valueLink, valueToString, valueTypeToDefault, valueValue, waitFor, wildcardQuery };
6489
- export type { AfterBarDrawSettings, AxisHoverSettings, AxisLabelEvent, BarChartDataItem, ButtonGroupItem, ChartExportMetadata, ContributionChartDataItem, ContributionTooltipData, FilterData, FilterElement, FilterFn, FilterGroup, FilterOption, FilterState, HistogramChartDataItem, IBlankNodeIdentityGroup, IBlankNodeIdentityRow, IBlankNodeLog, IBlankNodeLogSubValue, ICalculationsModel, ICalculationsModelsParams, ICalculationsRequirementsParams, IChartExportFormat, ICloseMessage, IConfigModel, IContributionCategory, ICustomValidationRules, ICycleJSONLDExtended, IEmissionCategory, IErrorProperty, IFeature, IFeatureCollection, IFileUploadError, IFilesDropped, IFormulaTextPart, IFormulaVariable, IGeometryCollection, IGlossaryMigration, IGlossaryMigrations, IGroupedKeys, IGroupedNode, IGroupedNodes, IGroupedNodesValue, IGroupedNodesValues, IIdentityScalar, IIdentitySegment, IImpactAssessmentJSONLDExtended, IIssueParams, IJLogBlankNode, IJLogModelColumn, IJLogModelRun, IJLogTermGroup, IJSONData, IJSONNode, ILine, ILog, IMarker, IMessage, IMobileShellMenuButton, INavigationMenuLink, INewProperty, INodeContributions, INodeErrorLog, INodeHeaders, INodeLogs, INodeMissingLookupLog, INodeProperty, INodeRequestParams, INodeTermLog, INodeTermLogs, INonBlankNodeLog, IPolygonMap, IRelatedNode, IRenderedFormula, ISearchParams, ISearchResultExtended, ISearchResults, IShellMenuButton, ISiteJSONLDExtended, IStoredNode, ISummary, ISummaryError, IToast, IValidationError, LollipopPluginSettings, RgbColor, SelectValue, SortOption, SortSelectEvent, SortSelectOrder, axisLabelClickFn, axisLabelTooltipFn, blankNodesTypeValue, chartExportFn, chartTooltipContentFn, contributions, feature, horizontalTooltipData, modelKey, nodeContributionsSimplified, nodes, nonBlankNodesTypeValue, searchResult, searchableType, sortOrders, suggestionType, validationErrorKeyword, validationErrorLevel, validationErrorParam };
6151
+ export { ARRAY_DELIMITER, ApplyPurePipe, BarChartComponent, BibliographiesSearchConfirmComponent, BlankNodeStateComponent, BlankNodeStateNoticeComponent, BlankNodeValueDeltaComponent, CapitalizePipe, ChartComponent, ChartConfigurationDirective, ChartExportButtonComponent, ChartTooltipComponent, ClickOutsideDirective, ClipboardComponent, CollapsibleBlockComponent, CollapsibleBoxComponent, CollapsibleBoxStyle, CompoundDirective, CompoundPipe, ContributionChartComponent, ControlValueAccessor, CycleNodesKeyGroup, CyclesCompletenessComponent, CyclesEmissionsCategoryService, CyclesEmissionsChartComponent, CyclesFunctionalUnitMeasureComponent, CyclesMetadataComponent, CyclesNodesComponent, CyclesNodesTimelineComponent, CyclesResultComponent, DataTableComponent, DefaultPipe, DeltaColour, DistributionChartComponent, DrawerContainerComponent, DurationPipe, EllipsisPipe, EngineModelsLinkComponent, EngineModelsLookupInfoComponent, EngineModelsStageComponent, EngineModelsStageDeepComponent, EngineModelsStageDeepService, EngineModelsVersionInfoComponent, EngineModelsVersionLinkComponent, EngineOrchestratorEditComponent, EngineRequirementsFormComponent, FileSizePipe, FileUploadErrorKeys, FilesDragDropDirective, FilesDropZoneComponent, FilesErrorSummaryComponent, FilesFormComponent, FilesFormEditableComponent, FilesUploadErrorsComponent, FilterAccordionComponent, FormulaBlockComponent, GUIDE_ENABLED, GetPipe, GlossaryMigrationFormat, GuideOverlayComponent, HE_API_BASE_URL, HE_CALCULATIONS_BASE_URL, HE_MAP_LOADED, HE_REGION_GEOJSON_BASE_URL, HeAuthService, HeCommonService, HeEngineService, HeGlossaryService, HeMendeleyService, HeNodeCsvService, HeNodeService, HeNodeStoreService, HeSchemaService, HeSearchService, HeToastService, HorizontalBarChartComponent, HorizontalButtonsGroupComponent, ImpactAssessmentsGraphComponent, ImpactAssessmentsIndicatorBreakdownChartComponent, ImpactAssessmentsIndicatorsChartComponent, ImpactAssessmentsProductsComponent, IsArrayPipe, IsObjectPipe, IssueConfirmComponent, KeyToLabelPipe, Level, LineChartComponent, LinkKeyValueComponent, LogStatus, LongPressDirective, MAX_RESULTS, MapsDrawingComponent, MapsDrawingConfirmComponent, MaxPipe, MeanPipe, MedianPipe, MendeleySearchResult, MinPipe, MobileShellComponent, NavigationMenuComponent, NoExtPipe, NodeAggregatedComponent, NodeAggregatedFormulasComponent, NodeAggregatedInfoComponent, NodeAggregatedQualityScoreComponent, NodeAggregationLogsComponent, NodeCsvExportConfirmComponent, NodeCsvPreviewComponent, NodeCsvSelectHeadersComponent, NodeIconComponent, NodeJLogModelsComponent, NodeJsonldComponent, NodeJsonldSchemaComponent, NodeKeyState, NodeLinkComponent, NodeLogsFileComponent, NodeLogsModelsComponent, NodeLogsTimeComponent, NodeMissingLookupFactorsComponent, NodeQualityScore, NodeRecommendationsComponent, NodeSelectComponent, NodeValueDetailsComponent, PipelineStagesProgressComponent, PluralizePipe, PopoverComponent, PopoverConfirmComponent, PrecisionPipe, RelatedNodeResult, RemoveMarkdownPipe, RepeatPipe, Repository, ResizedDirective, ResizedEvent, ResponsiveService, SchemaInfoComponent, SchemaVersionLinkComponent, SearchExtendComponent, ShelfDialogComponent, ShellComponent, SiteNodesKeyGroup, SitesManagementChartComponent, SitesMapsComponent, SitesNodesComponent, SkeletonTextComponent, SocialTagsComponent, SortByPipe, SortSelectComponent, SumPipe, TagsInputDirective, Template, TermsPropertyContentComponent, TermsSubClassOfContentComponent, TermsUnitsDescriptionComponent, ThousandSuffixesPipe, ThousandsPipe, TimesPipe, ToastComponent, UncapitalizePipe, addPolygonToFeature, aggregatedSitePrimaryProduct, allCountriesQuery, allGroups, allOptions, availableProperties, axisLabelSettings, backgroundModelParams, baseApiUrl, baseUrl, bottom, buildSummary, bytesSize, calculateCycleDuration, calculateCycleDurationEnabled, calculateCycleStartDate, calculateCycleStartDateEnabled, capitalize, changelogUrl, clustererImage, code, compoundToHtml, computeKeys, computeTerms, contactUsEmail, contactUsLink, coordinatesToPoint, copyObject, countGroupVisibleNodes, countriesQuery, createMarker, cropsQuery, dataPathLabel, dataPathToKey, dataVersionHeader, dataVersionHeaderKey, defaultFeature, defaultLabel, defaultSuggestionType, definitionToSchemaType, distinctUntilChangedDeep, ellipsis, engineGitBaseUrl, engineGitUrl, errorText, errorsLabel, evaluateSuccess, exportFormats, externalLink, externalNodeLink, fillColor, fillStyle, filterBlankNode, filterParams, findBackgroundModel, findConfigModels, findMatchingModel, findModels, findNodeModel, findOrchestratorModel, findProperty, findPropertyById, findTermModels, flatFilterData, flatFilterNode, formatCustomErrorMessage, formatDate, formatError, formatPropertyError, formatter, getDatesBetween, gitBranch, gitHome, glossaryBaseUrl, glossaryLink, groupBlankNodesByTermIdentity, groupChanged, groupJLogByField, groupJLogByTerm, groupLogsByTerm, groupNodesByTerm, groupdLogsByKey, grouppedKeys, grouppedValueKeys, groupsLogsByFields, guideModelUrl, guideNamespace, handleAPIError, handleGuideEvent, hasError, hasValidationError, hasWarning, highestMethodTier, ignoreKeys, impactAssessmentProduct, initialFilterState, injectResizeEvent$, inputGroupsTermTypes, isAddPropertyEnabled, isChrome, isDateBetween, isEqual, isExternal, isIdenticalNodeValue, isKeyClosedVisible, isKeyHidden, isMaxStage, isMethodModelAllowed, isNonNodeModelKey, isSchemaIri, isScrolledBelow, isState, isTermTypeAllowed, isValidKey, jLogModelCount, keyToDataPath, levels, loadMapApi, locationQuery, logToCsv, logValueArray, logsKey, lookupUrl, mapFilterData, mapsUrl, markerIcon, markerPie, matchAggregatedQuery, matchAggregatedValidatedQuery, matchBoolPrefixQuery, matchCountry, matchExactQuery, matchGlobalRegion, matchId, matchNameNormalized, matchNestedKey, matchPhrasePrefixQuery, matchPhraseQuery, matchPrimaryProductQuery, matchQuery, matchRegex, matchRegion, matchTermType, matchType, maxAreaSize, measurementValue, mergeDataWithHeaders, methodTierOrder, migrationErrorMessage, migrationsUrl, modelCount, modelKeyParams, modelParams, models, multiMatchQuery, nestedProperty, nestingEnabled, nestingTypeEnabled, noValue, nodeAvailableProperties, nodeById, nodeChartLabels, nodeColours, nodeDataState, nodeDataStates, nodeDataVersion, nodeId, nodeIdWithoutDataVersion, nodeIds, nodeLink, nodeLinkEnabled, nodeLinkTypeEnabled, nodeLogsUrl, nodeQualityScoreColor, nodeQualityScoreLevel, nodeQualityScoreMaxDefault, nodeQualityScoreOrder, nodeRequestId, nodeSecondaryColours, nodeToAggregationFilename, nodeType, nodeTypeDataState, nodeTypeIcon, nodeTypeIconSchema, nodeUrl, nodeUrlParams, nodeVersion, nodeVersionKey, nodesByState, nodesByType, numberGte, openNodeUrl, openUrl, optionsFromGroup, parentKey, parentProperty, parseData, parseDataPath, parseLines, parseMessage, parseNewValue, pluralize, pointToCoordinates, polygonBounds, polygonToCoordinates, polygonToMap, polygonsFromFeature, populateWithTrackIdsFilterData, postGuideEvent, primaryProduct, productsQuery, propertyError, propertyId, recursiveProperties, refToSchemaType, refreshPropertyKeys, regionsQuery, repeat, reportIssueLink, reportIssueUrl, safeJSONParse, safeJSONStringify, schemaBaseUrl, schemaDataBaseUrl, schemaLink, schemaRequiredProperties, schemaTypeToDefaultValue, scrollToEl, scrollTop, searchFilterData, searchableTypes, siblingProperty, simplifyContributions, singleProperty, siteTooBig, siteTypeToColor, siteTypeToIcon, sortProperties, sortedDates, strokeColor, strokeStyle, subValueKeys, suggestMatchQuery, suggestQuery, suggestTerms, takeAfterViewInit, termLocation, termLocationName, termProperties, termSearch, termTypeLabel, toSnakeCase, toTextParts, toThousands, typeToNewProperty, typeaheadFocus, uncapitalize, uniqueDatesBetween, updateProperties, valueLink, valueToString, valueTypeToDefault, valueValue, waitFor, wildcardQuery };
6152
+ export type { ButtonGroupItem, FilterData, FilterElement, FilterFn, FilterGroup, FilterOption, FilterState, IBlankNodeIdentityGroup, IBlankNodeIdentityRow, IBlankNodeLog, IBlankNodeLogSubValue, ICalculationsModel, ICalculationsModelsParams, ICalculationsRequirementsParams, IChartExportFormat, ICloseMessage, IConfigModel, ICustomValidationRules, ICycleJSONLDExtended, IErrorProperty, IFeature, IFeatureCollection, IFileUploadError, IFilesDropped, IFormulaTextPart, IFormulaVariable, IGeometryCollection, IGlossaryMigration, IGlossaryMigrations, IGroupedKeys, IGroupedNode, IGroupedNodes, IGroupedNodesValue, IGroupedNodesValues, IIdentityScalar, IIdentitySegment, IImpactAssessmentJSONLDExtended, IIssueParams, IJLogBlankNode, IJLogModelColumn, IJLogModelRun, IJLogTermGroup, IJSONData, IJSONNode, ILine, ILog, IMarker, IMessage, IMobileShellMenuButton, INavigationMenuLink, INewProperty, INodeErrorLog, INodeHeaders, INodeLogs, INodeMissingLookupLog, INodeProperty, INodeRequestParams, INodeTermLog, INodeTermLogs, INonBlankNodeLog, IPolygonMap, IRelatedNode, IRenderedFormula, ISearchParams, ISearchResultExtended, ISearchResults, IShellMenuButton, ISiteJSONLDExtended, IStoredNode, ISummary, ISummaryError, IToast, IValidationError, SelectValue, SortOption, SortSelectEvent, SortSelectOrder, axisLabelClickFn, axisLabelTooltipFn, blankNodesTypeValue, chartExportFn, chartTooltipContentFn, feature, horizontalTooltipData, modelKey, nodeContributionsSimplified, nodes, nonBlankNodesTypeValue, searchResult, searchableType, sortOrders, suggestionType, validationErrorKeyword, validationErrorLevel, validationErrorParam };