@hestia-earth/ui-components 0.9.8 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/blank-node-state/blank-node-state.component.d.ts +11 -10
- package/common/d3-utils.d.ts +1 -1
- package/common/link-key-value/link-key-value.component.d.ts +3 -1
- package/cycles/cycles-activity-logs/cycles-activity-logs.component.d.ts +9 -8
- package/cycles/cycles-completeness/cycles-completeness.component.d.ts +1 -0
- package/cycles/cycles-emissions-logs/cycles-emissions-logs.component.d.ts +9 -8
- package/cycles/cycles-practices-logs/cycles-practices-logs.component.d.ts +9 -8
- package/engine/engine.service.d.ts +1 -1
- package/esm2020/common/blank-node-state/blank-node-state.component.mjs +6 -4
- package/esm2020/common/d3-utils.mjs +3 -3
- package/esm2020/common/link-key-value/link-key-value.component.mjs +9 -7
- package/esm2020/cycles/cycles-activity/cycles-activity.component.mjs +1 -1
- package/esm2020/cycles/cycles-completeness/cycles-completeness.component.mjs +7 -4
- package/esm2020/cycles/cycles-emissions/cycles-emissions.component.mjs +1 -1
- package/esm2020/cycles/cycles-practices/cycles-practices.component.mjs +1 -1
- package/esm2020/cycles/cycles-practices-timeline/cycles-practices-timeline.component.mjs +1 -1
- package/esm2020/engine/engine.service.mjs +2 -2
- package/esm2020/files/files-error.model.mjs +8 -5
- package/esm2020/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.mjs +18 -16
- package/esm2020/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +1 -1
- package/esm2020/node/node-logs-file/node-logs-file.component.mjs +3 -3
- package/esm2020/node/node-logs-models/node-logs-models.model.mjs +32 -10
- package/esm2020/node/node-value-details/node-value-details.component.mjs +3 -3
- package/esm2020/sites/sites-measurements/sites-measurements.component.mjs +1 -1
- package/esm2020/terms/terms.model.mjs +3 -3
- package/fesm2015/hestia-earth-ui-components.mjs +92 -58
- package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
- package/fesm2020/hestia-earth-ui-components.mjs +92 -58
- package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
- package/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.d.ts +1 -0
- package/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.d.ts +5 -5
- package/package.json +12 -7
- package/sites/sites-measurements-logs/sites-measurements-logs.component.d.ts +5 -5
|
@@ -9,20 +9,21 @@ export declare class BlankNodeStateComponent {
|
|
|
9
9
|
private nodeType?;
|
|
10
10
|
private dataKey?;
|
|
11
11
|
private key?;
|
|
12
|
-
node?: blankNode;
|
|
12
|
+
protected node?: blankNode;
|
|
13
13
|
/**
|
|
14
14
|
* Force override state.
|
|
15
15
|
*/
|
|
16
|
-
state?: NodeKeyState;
|
|
17
|
-
|
|
16
|
+
protected state?: NodeKeyState;
|
|
17
|
+
protected linkClass?: string;
|
|
18
|
+
protected NodeKeyState: typeof NodeKeyState;
|
|
18
19
|
constructor(aggregationEngineService: HeAggregationEngineService, engineService: HeEngineService);
|
|
19
|
-
get show(): boolean;
|
|
20
|
-
is(state: NodeKeyState): any;
|
|
21
|
-
get stars(): number[];
|
|
22
|
-
get showLink(): boolean;
|
|
20
|
+
protected get show(): boolean;
|
|
21
|
+
protected is(state: NodeKeyState): any;
|
|
22
|
+
protected get stars(): number[];
|
|
23
|
+
protected get showLink(): boolean;
|
|
23
24
|
private get aggregatedModelParams();
|
|
24
|
-
get aggregatedModel$(): import("rxjs").Observable<import("../../engine/aggregation-engine.service").IAggregationModel>;
|
|
25
|
-
get engineModel$(): import("rxjs").Observable<import("../../engine/engine.service").IModel>;
|
|
25
|
+
protected get aggregatedModel$(): import("rxjs").Observable<import("../../engine/aggregation-engine.service").IAggregationModel>;
|
|
26
|
+
protected get engineModel$(): import("rxjs").Observable<import("../../engine/engine.service").IModel>;
|
|
26
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<BlankNodeStateComponent, never>;
|
|
27
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BlankNodeStateComponent, "he-blank-node-state", never, { "dataState": "dataState"; "nodeType": "nodeType"; "dataKey": "dataKey"; "key": "key"; "node": "node"; "state": "state"; }, {}, never, never, false>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BlankNodeStateComponent, "he-blank-node-state", never, { "dataState": "dataState"; "nodeType": "nodeType"; "dataKey": "dataKey"; "key": "key"; "node": "node"; "state": "state"; "linkClass": "linkClass"; }, {}, never, never, false>;
|
|
28
29
|
}
|
package/common/d3-utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Selection } from 'd3';
|
|
1
|
+
import { Selection } from 'd3-selection';
|
|
2
2
|
export declare const d3ellipse: <Datum>(selection: Selection<SVGTextElement, Datum, any, any>, maxWidth: number, ellipsisStr?: string) => void;
|
|
3
3
|
export declare const d3wrap: <Datum>(t: Selection<SVGTextElement, Datum, any, any>, { maxWidth, maxLines, words, nHeight, lHeight, vcentre, ownLineWord }: {
|
|
4
4
|
maxWidth: number;
|
|
@@ -6,15 +6,17 @@ export declare class LinkKeyValueComponent {
|
|
|
6
6
|
dataKey?: string;
|
|
7
7
|
key?: string;
|
|
8
8
|
defaultValue?: any;
|
|
9
|
+
isExpandable: (val: any) => boolean;
|
|
10
|
+
valueLink: (value: any) => string;
|
|
9
11
|
get isInlineBlock(): boolean;
|
|
10
12
|
baseUrl: string;
|
|
11
13
|
toString: (value: any) => any;
|
|
12
14
|
get type(): any;
|
|
13
15
|
get value(): any;
|
|
14
16
|
get valueString(): any;
|
|
15
|
-
get valueLink(): string;
|
|
16
17
|
get isArray(): boolean;
|
|
17
18
|
get isUndefined(): boolean;
|
|
19
|
+
isBlankNode(value: any): boolean;
|
|
18
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<LinkKeyValueComponent, never>;
|
|
19
21
|
static ɵcmp: i0.ɵɵComponentDeclaration<LinkKeyValueComponent, "he-link-key-value", never, { "node": "node"; "nodeType": "nodeType"; "dataKey": "dataKey"; "key": "key"; "defaultValue": "defaultValue"; }, {}, never, never, false>;
|
|
20
22
|
}
|
|
@@ -18,26 +18,28 @@ export declare class CyclesActivityLogsComponent {
|
|
|
18
18
|
dataState: DataState;
|
|
19
19
|
description?: string;
|
|
20
20
|
treatment?: string;
|
|
21
|
-
site?: import("@hestia-earth/schema").Site;
|
|
22
|
-
otherSites?: import("@hestia-earth/schema").Site[];
|
|
23
|
-
siteDuration?: number;
|
|
24
|
-
otherSitesDuration?: number[];
|
|
25
|
-
harvestedArea?: number;
|
|
26
|
-
defaultSource?: import("@hestia-earth/schema").Source;
|
|
27
21
|
endDate?: string;
|
|
28
22
|
startDate?: string;
|
|
29
23
|
startDateDefinition?: import("@hestia-earth/schema").CycleStartDateDefinition;
|
|
30
24
|
cycleDuration?: number;
|
|
25
|
+
site?: import("@hestia-earth/schema").Site;
|
|
26
|
+
otherSites?: import("@hestia-earth/schema").Site[];
|
|
27
|
+
siteDuration?: number;
|
|
28
|
+
otherSitesDuration?: number[];
|
|
31
29
|
functionalUnit?: import("@hestia-earth/schema").CycleFunctionalUnit;
|
|
32
30
|
functionalUnitDetails?: string;
|
|
33
31
|
numberOfCycles?: number;
|
|
34
32
|
numberOfReplications?: number;
|
|
35
|
-
|
|
33
|
+
harvestedArea?: number;
|
|
34
|
+
defaultMethodClassification?: import("@hestia-earth/schema").CycleDefaultMethodClassification;
|
|
35
|
+
defaultSource?: import("@hestia-earth/schema").Source;
|
|
36
|
+
completeness?: import("@hestia-earth/schema").Completeness;
|
|
36
37
|
inputs?: import("@hestia-earth/schema").Input[];
|
|
37
38
|
emissions?: import("@hestia-earth/schema").Emission[];
|
|
38
39
|
products?: import("@hestia-earth/schema").Product[];
|
|
39
40
|
practices?: import("@hestia-earth/schema").Practice[];
|
|
40
41
|
transformations?: import("@hestia-earth/schema").Transformation[];
|
|
42
|
+
dataPrivate?: boolean;
|
|
41
43
|
originalId?: string;
|
|
42
44
|
schemaVersion?: string;
|
|
43
45
|
added?: string[];
|
|
@@ -47,7 +49,6 @@ export declare class CyclesActivityLogsComponent {
|
|
|
47
49
|
aggregated?: boolean;
|
|
48
50
|
aggregatedVersion?: string;
|
|
49
51
|
aggregatedQualityScore?: number;
|
|
50
|
-
dataPrivate?: boolean;
|
|
51
52
|
'@context': string | (string | import("@hestia-earth/schema").IContext)[];
|
|
52
53
|
'@id': string;
|
|
53
54
|
name: string;
|
|
@@ -7,6 +7,7 @@ export declare class CyclesCompletenessComponent {
|
|
|
7
7
|
baseUrl: string;
|
|
8
8
|
defaultLabel: (node?: any) => any;
|
|
9
9
|
keyToLabel: (key: string) => string;
|
|
10
|
+
getCompleteness: (cycle: any) => any;
|
|
10
11
|
trackById(_index: number, item: ICycleJSONLD): string;
|
|
11
12
|
get completenessKeys(): string[];
|
|
12
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<CyclesCompletenessComponent, never>;
|
|
@@ -20,26 +20,28 @@ export declare class CyclesEmissionsLogsComponent implements OnInit {
|
|
|
20
20
|
dataState: DataState;
|
|
21
21
|
description?: string;
|
|
22
22
|
treatment?: string;
|
|
23
|
-
site?: import("@hestia-earth/schema").Site;
|
|
24
|
-
otherSites?: import("@hestia-earth/schema").Site[];
|
|
25
|
-
siteDuration?: number;
|
|
26
|
-
otherSitesDuration?: number[];
|
|
27
|
-
harvestedArea?: number;
|
|
28
|
-
defaultSource?: import("@hestia-earth/schema").Source;
|
|
29
23
|
endDate?: string;
|
|
30
24
|
startDate?: string;
|
|
31
25
|
startDateDefinition?: import("@hestia-earth/schema").CycleStartDateDefinition;
|
|
32
26
|
cycleDuration?: number;
|
|
27
|
+
site?: import("@hestia-earth/schema").Site;
|
|
28
|
+
otherSites?: import("@hestia-earth/schema").Site[];
|
|
29
|
+
siteDuration?: number;
|
|
30
|
+
otherSitesDuration?: number[];
|
|
33
31
|
functionalUnit?: import("@hestia-earth/schema").CycleFunctionalUnit;
|
|
34
32
|
functionalUnitDetails?: string;
|
|
35
33
|
numberOfCycles?: number;
|
|
36
34
|
numberOfReplications?: number;
|
|
37
|
-
|
|
35
|
+
harvestedArea?: number;
|
|
36
|
+
defaultMethodClassification?: import("@hestia-earth/schema").CycleDefaultMethodClassification;
|
|
37
|
+
defaultSource?: import("@hestia-earth/schema").Source;
|
|
38
|
+
completeness?: import("@hestia-earth/schema").Completeness;
|
|
38
39
|
inputs?: import("@hestia-earth/schema").Input[];
|
|
39
40
|
emissions?: Emission[];
|
|
40
41
|
products?: import("@hestia-earth/schema").Product[];
|
|
41
42
|
practices?: import("@hestia-earth/schema").Practice[];
|
|
42
43
|
transformations?: import("@hestia-earth/schema").Transformation[];
|
|
44
|
+
dataPrivate?: boolean;
|
|
43
45
|
originalId?: string;
|
|
44
46
|
schemaVersion?: string;
|
|
45
47
|
added?: string[];
|
|
@@ -49,7 +51,6 @@ export declare class CyclesEmissionsLogsComponent implements OnInit {
|
|
|
49
51
|
aggregated?: boolean;
|
|
50
52
|
aggregatedVersion?: string;
|
|
51
53
|
aggregatedQualityScore?: number;
|
|
52
|
-
dataPrivate?: boolean;
|
|
53
54
|
'@context': string | (string | import("@hestia-earth/schema").IContext)[];
|
|
54
55
|
'@id': string;
|
|
55
56
|
name: string;
|
|
@@ -13,26 +13,28 @@ export declare class CyclesPracticesLogsComponent {
|
|
|
13
13
|
dataState: DataState;
|
|
14
14
|
description?: string;
|
|
15
15
|
treatment?: string;
|
|
16
|
-
site?: import("@hestia-earth/schema").Site;
|
|
17
|
-
otherSites?: import("@hestia-earth/schema").Site[];
|
|
18
|
-
siteDuration?: number;
|
|
19
|
-
otherSitesDuration?: number[];
|
|
20
|
-
harvestedArea?: number;
|
|
21
|
-
defaultSource?: import("@hestia-earth/schema").Source;
|
|
22
16
|
endDate?: string;
|
|
23
17
|
startDate?: string;
|
|
24
18
|
startDateDefinition?: import("@hestia-earth/schema").CycleStartDateDefinition;
|
|
25
19
|
cycleDuration?: number;
|
|
20
|
+
site?: import("@hestia-earth/schema").Site;
|
|
21
|
+
otherSites?: import("@hestia-earth/schema").Site[];
|
|
22
|
+
siteDuration?: number;
|
|
23
|
+
otherSitesDuration?: number[];
|
|
26
24
|
functionalUnit?: import("@hestia-earth/schema").CycleFunctionalUnit;
|
|
27
25
|
functionalUnitDetails?: string;
|
|
28
26
|
numberOfCycles?: number;
|
|
29
27
|
numberOfReplications?: number;
|
|
30
|
-
|
|
28
|
+
harvestedArea?: number;
|
|
29
|
+
defaultMethodClassification?: import("@hestia-earth/schema").CycleDefaultMethodClassification;
|
|
30
|
+
defaultSource?: import("@hestia-earth/schema").Source;
|
|
31
|
+
completeness?: import("@hestia-earth/schema").Completeness;
|
|
31
32
|
inputs?: import("@hestia-earth/schema").Input[];
|
|
32
33
|
emissions?: import("@hestia-earth/schema").Emission[];
|
|
33
34
|
products?: import("@hestia-earth/schema").Product[];
|
|
34
35
|
practices?: Practice[];
|
|
35
36
|
transformations?: import("@hestia-earth/schema").Transformation[];
|
|
37
|
+
dataPrivate?: boolean;
|
|
36
38
|
originalId?: string;
|
|
37
39
|
schemaVersion?: string;
|
|
38
40
|
added?: string[];
|
|
@@ -42,7 +44,6 @@ export declare class CyclesPracticesLogsComponent {
|
|
|
42
44
|
aggregated?: boolean;
|
|
43
45
|
aggregatedVersion?: string;
|
|
44
46
|
aggregatedQualityScore?: number;
|
|
45
|
-
dataPrivate?: boolean;
|
|
46
47
|
'@context': string | (string | import("@hestia-earth/schema").IContext)[];
|
|
47
48
|
'@id': string;
|
|
48
49
|
name: string;
|
|
@@ -112,7 +112,7 @@ export declare class HeEngineService {
|
|
|
112
112
|
getRequirements$(params: ICalculationsRequirementsParams): Observable<JSONLD<NodeType>>;
|
|
113
113
|
getRequirements(params: ICalculationsRequirementsParams): Promise<JSONLD<NodeType>>;
|
|
114
114
|
getTermIds$(params: ICalculationsRequirementsParams): Observable<string[]>;
|
|
115
|
-
getTermIds(params: ICalculationsRequirementsParams): Promise<string[]>;
|
|
115
|
+
getTermIds(params: ICalculationsRequirementsParams): Promise<any[] | string[]>;
|
|
116
116
|
orchestratorConfigUrl(type?: NodeType): string;
|
|
117
117
|
ochestratorConfig(type: NodeType): Promise<IOrchestratorConfig>;
|
|
118
118
|
static ɵfac: i0.ɵɵFactoryDeclaration<HeEngineService, never>;
|
|
@@ -34,7 +34,7 @@ export class BlankNodeStateComponent {
|
|
|
34
34
|
: [];
|
|
35
35
|
}
|
|
36
36
|
get showLink() {
|
|
37
|
-
return !!this.dataKey;
|
|
37
|
+
return !!this.dataKey && ['term', 'value'].includes(this.key);
|
|
38
38
|
}
|
|
39
39
|
get aggregatedModelParams() {
|
|
40
40
|
return filterParams({
|
|
@@ -50,10 +50,10 @@ export class BlankNodeStateComponent {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
BlankNodeStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BlankNodeStateComponent, deps: [{ token: i1.HeAggregationEngineService }, { token: i2.HeEngineService }], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
-
BlankNodeStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: BlankNodeStateComponent, selector: "he-blank-node-state", inputs: { dataState: "dataState", nodeType: "nodeType", dataKey: "dataKey", key: "key", node: "node", state: "state" }, ngImport: i0, template: "<ng-container *ngIf=\"show\">\n <ng-container *bindOnce=\"node\">\n <span *ngFor=\"let star of stars\">*</span>\n <span *ngIf=\"stars.length === 0 || is(NodeKeyState.unchanged)\">\u2020</span>\n\n <ng-container *ngIf=\"showLink\">\n <!-- <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.aggregated)\">\n <ng-container *ngIf=\"aggregatedModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span> -->\n\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.added); else showUpdated\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #showUpdated>\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.updated)\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #docsLink let-model>\n <a [href]=\"model.apiDocsPath || model.docPath || model.path\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <span>Docs</span>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i5.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
53
|
+
BlankNodeStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: BlankNodeStateComponent, selector: "he-blank-node-state", inputs: { dataState: "dataState", nodeType: "nodeType", dataKey: "dataKey", key: "key", node: "node", state: "state", linkClass: "linkClass" }, ngImport: i0, template: "<ng-container *ngIf=\"show\">\n <ng-container *bindOnce=\"node\">\n <span *ngFor=\"let star of stars\">*</span>\n <span *ngIf=\"stars.length === 0 || is(NodeKeyState.unchanged)\">\u2020</span>\n\n <ng-container *ngIf=\"showLink\">\n <!-- <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.aggregated)\">\n <ng-container *ngIf=\"aggregatedModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span> -->\n\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.added); else showUpdated\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #showUpdated>\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.updated)\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #docsLink let-model>\n <a [ngClass]=\"linkClass\"\n [href]=\"model.apiDocsPath || model.docPath || model.path\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <span>Docs</span>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i5.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
54
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BlankNodeStateComponent, decorators: [{
|
|
55
55
|
type: Component,
|
|
56
|
-
args: [{ selector: 'he-blank-node-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"show\">\n <ng-container *bindOnce=\"node\">\n <span *ngFor=\"let star of stars\">*</span>\n <span *ngIf=\"stars.length === 0 || is(NodeKeyState.unchanged)\">\u2020</span>\n\n <ng-container *ngIf=\"showLink\">\n <!-- <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.aggregated)\">\n <ng-container *ngIf=\"aggregatedModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span> -->\n\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.added); else showUpdated\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #showUpdated>\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.updated)\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #docsLink let-model>\n <a [href]=\"model.apiDocsPath || model.docPath || model.path\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <span>Docs</span>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n", styles: [":host{display:inline-block}\n"] }]
|
|
56
|
+
args: [{ selector: 'he-blank-node-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"show\">\n <ng-container *bindOnce=\"node\">\n <span *ngFor=\"let star of stars\">*</span>\n <span *ngIf=\"stars.length === 0 || is(NodeKeyState.unchanged)\">\u2020</span>\n\n <ng-container *ngIf=\"showLink\">\n <!-- <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.aggregated)\">\n <ng-container *ngIf=\"aggregatedModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span> -->\n\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.added); else showUpdated\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #showUpdated>\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.updated)\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #docsLink let-model>\n <a [ngClass]=\"linkClass\"\n [href]=\"model.apiDocsPath || model.docPath || model.path\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <span>Docs</span>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n", styles: [":host{display:inline-block}\n"] }]
|
|
57
57
|
}], ctorParameters: function () { return [{ type: i1.HeAggregationEngineService }, { type: i2.HeEngineService }]; }, propDecorators: { dataState: [{
|
|
58
58
|
type: Input
|
|
59
59
|
}], nodeType: [{
|
|
@@ -66,5 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
66
66
|
type: Input
|
|
67
67
|
}], state: [{
|
|
68
68
|
type: Input
|
|
69
|
+
}], linkClass: [{
|
|
70
|
+
type: Input
|
|
69
71
|
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2JsYW5rLW5vZGUtc3RhdGUvYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2JsYW5rLW5vZGUtc3RhdGUvYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLOUMsT0FBTyxFQUFFLFlBQVksRUFBYSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7OztBQVF4QyxNQUFNLE9BQU8sdUJBQXVCO0lBcUJsQyxZQUNVLHdCQUFvRCxFQUNwRCxhQUE4QjtRQUQ5Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTRCO1FBQ3BELGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUo5QixpQkFBWSxHQUFHLFlBQVksQ0FBQztJQUtsQyxDQUFDO0lBRUwsSUFBYyxJQUFJO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQy9DLENBQUM7SUFFUyxFQUFFLENBQUMsS0FBbUI7UUFDOUIsT0FBTztRQUNMLGdCQUFnQjtRQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FDckMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFjLEtBQUs7UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsZ0RBQWdEO29CQUNuRixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO3dCQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FDSDtJQUNMLENBQUM7SUFFRCxJQUFjLFFBQVE7UUFDcEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFZLHFCQUFxQjtRQUMvQixPQUFPLFlBQVksQ0FBQztZQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDbkIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7U0FDN0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQWMsZ0JBQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBYyxZQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7b0hBbkVVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDJNQ2ZwQyxtOUNBc0NBOzJGRHZCYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07K0lBSXZDLFNBQVM7c0JBRGhCLEtBQUs7Z0JBR0UsUUFBUTtzQkFEZixLQUFLO2dCQUdFLE9BQU87c0JBRGQsS0FBSztnQkFHRSxHQUFHO3NCQURWLEtBQUs7Z0JBR0ksSUFBSTtzQkFEYixLQUFLO2dCQU1JLEtBQUs7c0JBRGQsS0FBSztnQkFHSSxTQUFTO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IE5vZGVUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuXG5pbXBvcnQgeyBIZUFnZ3JlZ2F0aW9uRW5naW5lU2VydmljZSB9IGZyb20gJy4uLy4uL2VuZ2luZS9hZ2dyZWdhdGlvbi1lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBIZUVuZ2luZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbmdpbmUvZW5naW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZUtleVN0YXRlLCBibGFua05vZGUsIGlzU3RhdGUgfSBmcm9tICcuLi9ub2RlLXV0aWxzJztcbmltcG9ydCB7IGZpbHRlclBhcmFtcyB9IGZyb20gJy4uL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtYmxhbmstbm9kZS1zdGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ibGFuay1ub2RlLXN0YXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGF0YVN0YXRlPzogRGF0YVN0YXRlO1xuICBASW5wdXQoKVxuICBwcml2YXRlIG5vZGVUeXBlPzogTm9kZVR5cGU7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGF0YUtleT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBrZXk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBub2RlPzogYmxhbmtOb2RlO1xuICAvKipcbiAgICogRm9yY2Ugb3ZlcnJpZGUgc3RhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgc3RhdGU/OiBOb2RlS2V5U3RhdGU7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBsaW5rQ2xhc3M/OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIE5vZGVLZXlTdGF0ZSA9IE5vZGVLZXlTdGF0ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFnZ3JlZ2F0aW9uRW5naW5lU2VydmljZTogSGVBZ2dyZWdhdGlvbkVuZ2luZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmdpbmVTZXJ2aWNlOiBIZUVuZ2luZVNlcnZpY2VcbiAgKSB7IH1cblxuICBwcm90ZWN0ZWQgZ2V0IHNob3coKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN0YXRlICE9PSBEYXRhU3RhdGUub3JpZ2luYWw7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXMoc3RhdGU6IE5vZGVLZXlTdGF0ZSkge1xuICAgIHJldHVybiAoXG4gICAgICAvLyBmb3JjaW5nIHN0YXRlXG4gICAgICAhIXRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZSA9PT0gc3RhdGVcbiAgICApIHx8IGlzU3RhdGUodGhpcy5ub2RlLCB0aGlzLmtleSwgc3RhdGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBzdGFycygpIHtcbiAgICByZXR1cm4gdGhpcy5pcyhOb2RlS2V5U3RhdGUuZGVsZXRlZClcbiAgICAgID8gWzAsIDEsIDIsIDNdXG4gICAgICA6IHRoaXMuaXMoTm9kZUtleVN0YXRlLnVwZGF0ZWQpXG4gICAgICA/IFswLCAxXVxuICAgICAgOiB0aGlzLmlzKE5vZGVLZXlTdGF0ZS5hZ2dyZWdhdGVkKSAvLyBoYW5kbGUgaGVyZSBiZWNhdXNlIGFnZ3JlZ2F0ZWQgY2FuIGJlIHVwZGF0ZWRcbiAgICAgID8gWzAsIDEsIDJdXG4gICAgICA6IHRoaXMuaXMoTm9kZUtleVN0YXRlLmFkZGVkKVxuICAgICAgPyBbMF1cbiAgICAgIDogW11cbiAgICAgIDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgc2hvd0xpbmsoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5kYXRhS2V5ICYmIFsndGVybScsICd2YWx1ZSddLmluY2x1ZGVzKHRoaXMua2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGFnZ3JlZ2F0ZWRNb2RlbFBhcmFtcygpIHtcbiAgICByZXR1cm4gZmlsdGVyUGFyYW1zKHtcbiAgICAgIHR5cGU6IHRoaXMubm9kZVR5cGUsXG4gICAgICBkYXRhUGF0aDogW3RoaXMuZGF0YUtleSwgdGhpcy5rZXldLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJylcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgYWdncmVnYXRlZE1vZGVsJCgpIHtcbiAgICByZXR1cm4gdGhpcy5hZ2dyZWdhdGlvbkVuZ2luZVNlcnZpY2UubW9kZWwkKHRoaXMuYWdncmVnYXRlZE1vZGVsUGFyYW1zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZW5naW5lTW9kZWwkKCkge1xuICAgIHJldHVybiB0aGlzLmVuZ2luZVNlcnZpY2Uubm9kZU1vZGVsJCh0aGlzLm5vZGUsIHRoaXMua2V5KTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dcIj5cbiAgPG5nLWNvbnRhaW5lciAqYmluZE9uY2U9XCJub2RlXCI+XG4gICAgPHNwYW4gKm5nRm9yPVwibGV0IHN0YXIgb2Ygc3RhcnNcIj4qPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwic3RhcnMubGVuZ3RoID09PSAwIHx8IGlzKE5vZGVLZXlTdGF0ZS51bmNoYW5nZWQpXCI+4oCgPC9zcGFuPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dMaW5rXCI+XG4gICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtMlwiICpuZ0lmPVwiaXMoTm9kZUtleVN0YXRlLmFnZ3JlZ2F0ZWQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGVkTW9kZWwkIHwgYXN5bmMgYXMgbW9kZWxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZG9jc0xpbms7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG1vZGVsfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc3Bhbj4gLS0+XG5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiICpuZ0lmPVwiaXMoTm9kZUtleVN0YXRlLmFkZGVkKTsgZWxzZSBzaG93VXBkYXRlZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5naW5lTW9kZWwkIHwgYXN5bmMgYXMgbW9kZWxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZG9jc0xpbms7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG1vZGVsfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNzaG93VXBkYXRlZD5cbiAgPHNwYW4gY2xhc3M9XCJtbC0yXCIgKm5nSWY9XCJpcyhOb2RlS2V5U3RhdGUudXBkYXRlZClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5naW5lTW9kZWwkIHwgYXN5bmMgYXMgbW9kZWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkb2NzTGluazsgY29udGV4dDogeyRpbXBsaWNpdDogbW9kZWx9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZG9jc0xpbmsgbGV0LW1vZGVsPlxuICA8YSBbbmdDbGFzc109XCJsaW5rQ2xhc3NcIlxuICAgIFtocmVmXT1cIm1vZGVsLmFwaURvY3NQYXRoIHx8IG1vZGVsLmRvY1BhdGggfHwgbW9kZWwucGF0aFwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gID5cbiAgICA8c3Bhbj5Eb2NzPC9zcGFuPlxuICAgIDxmYS1pY29uIGNsYXNzPVwibWwtMlwiIGljb249XCJleHRlcm5hbC1saW5rLWFsdFwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { select as d3Select } from 'd3-selection';
|
|
2
2
|
export const d3ellipse = (selection, maxWidth, ellipsisStr = '...') => {
|
|
3
3
|
selection.each(function () {
|
|
4
|
-
const t =
|
|
4
|
+
const t = d3Select(this);
|
|
5
5
|
if (t.node().getComputedTextLength() > maxWidth) {
|
|
6
6
|
const chars = t.text().split('');
|
|
7
7
|
const line = [];
|
|
@@ -43,4 +43,4 @@ export const d3wrap = (t, { maxWidth, maxLines, words, nHeight, lHeight, vcentre
|
|
|
43
43
|
t.selectAll('tspan').attr('y', yOffset);
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2QzLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxNQUFNLElBQUksUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixTQUFxRCxFQUNyRCxRQUFnQixFQUNoQixXQUFXLEdBQUcsS0FBSyxFQUNuQixFQUFFO0lBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNiLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLFFBQVEsRUFBRTtZQUMvQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNoQixHQUFHO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQzthQUNyQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLFFBQVEsRUFBRTtTQUN4RDtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsU0FBa0IsRUFDbEIsZUFBd0IsRUFDeEIsYUFBc0IsRUFDdEIsZ0JBQXlCLEVBQ3pCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLGVBQWUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLGdCQUFnQixDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUNwQixDQUE2QyxFQUM3QyxFQUNFLFFBQVEsRUFDUixRQUFRLEVBQ1IsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsT0FBTyxHQUFHLEtBQUssRUFDZixXQUFXLEdBQUcsRUFBRSxFQVNqQixFQUNELEVBQUU7SUFDRixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxJQUFJLENBQUM7SUFDVCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7SUFDZCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFbkUsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxVQUFVLElBQUksUUFBUSxFQUFFO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFM0IsMENBQTBDO1FBQzFDLElBQ0UsZUFBZSxDQUNiLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLFFBQVEsRUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ2YsSUFBSSxLQUFLLFdBQVcsRUFDcEIsVUFBVSxHQUFHLFFBQVEsQ0FDdEIsRUFDRDtZQUNBLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNYLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2QsS0FBSyxHQUFHLENBQUM7aUJBQ04sTUFBTSxDQUFDLE9BQU8sQ0FBQztpQkFDZixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDWixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDWixJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNmO0tBQ0Y7SUFDRCxTQUFTLENBQVEsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFFeEQsSUFBSSxPQUFPLEVBQUU7UUFDWCxNQUFNLE9BQU8sR0FBRyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDekM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb24sIHNlbGVjdCBhcyBkM1NlbGVjdCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5cbmV4cG9ydCBjb25zdCBkM2VsbGlwc2UgPSA8RGF0dW0+KFxuICBzZWxlY3Rpb246IFNlbGVjdGlvbjxTVkdUZXh0RWxlbWVudCwgRGF0dW0sIGFueSwgYW55PixcbiAgbWF4V2lkdGg6IG51bWJlcixcbiAgZWxsaXBzaXNTdHIgPSAnLi4uJ1xuKSA9PiB7XG4gIHNlbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHQgPSBkM1NlbGVjdCh0aGlzKTtcbiAgICBpZiAodC5ub2RlKCkuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgPiBtYXhXaWR0aCkge1xuICAgICAgY29uc3QgY2hhcnMgPSB0LnRleHQoKS5zcGxpdCgnJyk7XG4gICAgICBjb25zdCBsaW5lID0gW107XG4gICAgICBkbyB7XG4gICAgICAgIGxpbmUucHVzaChjaGFycy5zaGlmdCgpKTtcbiAgICAgICAgdC50ZXh0KGxpbmUuam9pbignJykgKyBlbGxpcHNpc1N0cik7XG4gICAgICB9IHdoaWxlICh0Lm5vZGUoKS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSA8PSBtYXhXaWR0aCk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IHNob3VsZEJyZWFrTGluZSA9IChcbiAgb3ZlcmZsb3dzOiBib29sZWFuLFxuICBpc011bHRpV29yZExpbmU6IGJvb2xlYW4sXG4gIGlzT3duTGluZVdvcmQ6IGJvb2xlYW4sXG4gIGlzVW5kZXJMaW5lTGltaXQ6IGJvb2xlYW5cbikgPT4gKChvdmVyZmxvd3MgJiYgaXNNdWx0aVdvcmRMaW5lKSB8fCBpc093bkxpbmVXb3JkKSAmJiBpc1VuZGVyTGluZUxpbWl0O1xuXG5leHBvcnQgY29uc3QgZDN3cmFwID0gPERhdHVtPihcbiAgdDogU2VsZWN0aW9uPFNWR1RleHRFbGVtZW50LCBEYXR1bSwgYW55LCBhbnk+LFxuICB7XG4gICAgbWF4V2lkdGgsXG4gICAgbWF4TGluZXMsXG4gICAgd29yZHMsXG4gICAgbkhlaWdodCxcbiAgICBsSGVpZ2h0LFxuICAgIHZjZW50cmUgPSBmYWxzZSxcbiAgICBvd25MaW5lV29yZCA9ICcnXG4gIH06IHtcbiAgICBtYXhXaWR0aDogbnVtYmVyO1xuICAgIG1heExpbmVzOiBudW1iZXI7XG4gICAgd29yZHM6IHN0cmluZ1tdO1xuICAgIG5IZWlnaHQ6IG51bWJlcjtcbiAgICBsSGVpZ2h0OiBudW1iZXI7XG4gICAgdmNlbnRyZT86IGJvb2xlYW47XG4gICAgb3duTGluZVdvcmQ/OiBzdHJpbmc7XG4gIH1cbikgPT4ge1xuICB3b3JkcyA9IHdvcmRzLnJldmVyc2UoKTtcbiAgY29uc3QgeSA9IHQuYXR0cigneScpO1xuICBjb25zdCB4ID0gdC5hdHRyKCd4Jyk7XG4gIGxldCBsaW5lTnVtYmVyID0gMTtcbiAgbGV0IHdvcmQ7XG4gIGxldCBsaW5lID0gW107XG4gIGxldCB0c3BhbiA9IHQudGV4dChudWxsKS5hcHBlbmQoJ3RzcGFuJykuYXR0cigneCcsIHgpLmF0dHIoJ3knLCB5KTtcblxuICB3aGlsZSAoKHdvcmQgPSB3b3Jkcy5wb3AoKSkgJiYgbGluZU51bWJlciA8PSBtYXhMaW5lcykge1xuICAgIGxpbmUucHVzaCh3b3JkKTtcbiAgICB0c3Bhbi50ZXh0KGxpbmUuam9pbignICcpKTtcblxuICAgIC8vIFRPRE86IGh5cGhlbmF0ZSB3b3JkcyB0aGF0IGFyZSB0b28gbG9uZ1xuICAgIGlmIChcbiAgICAgIHNob3VsZEJyZWFrTGluZShcbiAgICAgICAgdHNwYW4ubm9kZSgpLmdldENvbXB1dGVkVGV4dExlbmd0aCgpID4gbWF4V2lkdGgsXG4gICAgICAgIGxpbmUubGVuZ3RoID4gMSxcbiAgICAgICAgd29yZCA9PT0gb3duTGluZVdvcmQsXG4gICAgICAgIGxpbmVOdW1iZXIgPCBtYXhMaW5lc1xuICAgICAgKVxuICAgICkge1xuICAgICAgbGluZS5wb3AoKTtcbiAgICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuICAgICAgbGluZSA9IFt3b3JkXTtcbiAgICAgIHRzcGFuID0gdFxuICAgICAgICAuYXBwZW5kKCd0c3BhbicpXG4gICAgICAgIC5hdHRyKCd4JywgeClcbiAgICAgICAgLmF0dHIoJ3knLCB5KVxuICAgICAgICAuYXR0cignZHknLCBsaW5lTnVtYmVyKysgKiBsSGVpZ2h0ICsgJ3B4JylcbiAgICAgICAgLnRleHQod29yZCk7XG4gICAgfVxuICB9XG4gIGQzZWxsaXBzZTxEYXR1bT4odHNwYW4sIG1heFdpZHRoLCAnLi4uICcgKyBvd25MaW5lV29yZCk7XG5cbiAgaWYgKHZjZW50cmUpIHtcbiAgICBjb25zdCB5T2Zmc2V0ID0gbkhlaWdodCAvIDIgLSAodC5zZWxlY3RBbGwoJ3RzcGFuJykuc2l6ZSgpIC0gMSkgKiAobEhlaWdodCAvIDIpO1xuICAgIHQuc2VsZWN0QWxsKCd0c3BhbicpLmF0dHIoJ3knLCB5T2Zmc2V0KTtcbiAgfVxufTtcbiJdfQ==
|
|
@@ -9,7 +9,7 @@ import * as i2 from "../bind-once.directive";
|
|
|
9
9
|
import * as i3 from "../blank-node-state/blank-node-state.component";
|
|
10
10
|
import * as i4 from "../precision.pipe";
|
|
11
11
|
const valueLink = (value) => isExpandable(value) && value['@id'] ? [baseUrl(), value['@type'].toLowerCase(), value['@id']].join('/') : null;
|
|
12
|
-
const valueLinkRef = (value, href) => href ? `<a href="${href}">${value.name || value['@id']}</a>` : null;
|
|
12
|
+
const valueLinkRef = (value, href) => href ? `<a class="is-dark" href="${href}">${value.name || value['@id']}</a>` : null;
|
|
13
13
|
const valueValue = (value) => Array.isArray(value) ? value.map(valueValue).join(', ') : toPrecision(value);
|
|
14
14
|
const stringMapper = {
|
|
15
15
|
undefined: () => '',
|
|
@@ -28,6 +28,8 @@ const toString = (value) => typeof value in stringMapper ? stringMapper[typeof v
|
|
|
28
28
|
export class LinkKeyValueComponent {
|
|
29
29
|
constructor() {
|
|
30
30
|
this.defaultValue = '';
|
|
31
|
+
this.isExpandable = isExpandable;
|
|
32
|
+
this.valueLink = valueLink;
|
|
31
33
|
this.baseUrl = baseUrl();
|
|
32
34
|
this.toString = toString;
|
|
33
35
|
}
|
|
@@ -43,21 +45,21 @@ export class LinkKeyValueComponent {
|
|
|
43
45
|
get valueString() {
|
|
44
46
|
return toString(this.value);
|
|
45
47
|
}
|
|
46
|
-
get valueLink() {
|
|
47
|
-
return valueLink(this.value);
|
|
48
|
-
}
|
|
49
48
|
get isArray() {
|
|
50
49
|
return Array.isArray(this.value) && this.value.length > 1;
|
|
51
50
|
}
|
|
52
51
|
get isUndefined() {
|
|
53
52
|
return isUndefined(this.value);
|
|
54
53
|
}
|
|
54
|
+
isBlankNode(value) {
|
|
55
|
+
return isExpandable(value) && 'term' in value;
|
|
56
|
+
}
|
|
55
57
|
}
|
|
56
58
|
LinkKeyValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: LinkKeyValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
-
LinkKeyValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: LinkKeyValueComponent, selector: "he-link-key-value", inputs: { node: "node", nodeType: "nodeType", dataKey: "dataKey", key: "key", defaultValue: "defaultValue" }, host: { properties: { "class.is-inline-block": "this.isInlineBlock" } }, ngImport: i0, template: "<ng-container *ngIf=\"!isUndefined; else showDefault\">\n <ng-container *bindOnce=\"node\">\n <a class=\"
|
|
59
|
+
LinkKeyValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: LinkKeyValueComponent, selector: "he-link-key-value", inputs: { node: "node", nodeType: "nodeType", dataKey: "dataKey", key: "key", defaultValue: "defaultValue" }, host: { properties: { "class.is-inline-block": "this.isInlineBlock" } }, ngImport: i0, template: "<ng-container *ngIf=\"!isUndefined; else showDefault\">\n <ng-container *bindOnce=\"node\">\n <a class=\"is-dark\" [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n <span class=\"pr-2\">:</span>\n\n <ng-container *ngIf=\"isArray; else singleValue\">\n <div class=\"array-container pl-2\">\n <ng-container *ngFor=\"let v of value\">\n <ng-template #stringValue>\n <p [innerHtml]=\"toString(v) | precision:3\"></p>\n </ng-template>\n <ng-container *ngIf=\"isBlankNode(v); stringValue\">\n <div>\n <a class=\"is-dark\" href=\"valueLink(v.term)\">{{v.term.name || v.term['@id']}}</a>\n <span class=\"pr-2\">:</span>\n <div class=\"is-inline-block is-nowrap\" [innerHtml]=\"toString(v.value) | precision:3\"></div>\n\n <he-blank-node-state class=\"pl-1\"\n [node]=\"v\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" key=\"value\" linkClass=\"is-dark\"\n ></he-blank-node-state>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #singleValue>\n <div class=\"is-inline-block is-nowrap\" [innerHtml]=\"valueString | precision:3\"></div>\n\n <he-blank-node-state class=\"pl-1\"\n [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\" linkClass=\"is-dark\"\n ></he-blank-node-state>\n</ng-template>\n\n<ng-template #showDefault>\n <span>{{defaultValue}}</span>\n</ng-template>\n", styles: [":host{display:block}:host a.has-text-white:hover,:host a.has-text-white.is-hovered{text-decoration:underline}.array-container{max-height:100px;overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { kind: "component", type: i3.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "pipe", type: i4.PrecisionPipe, name: "precision" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
58
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: LinkKeyValueComponent, decorators: [{
|
|
59
61
|
type: Component,
|
|
60
|
-
args: [{ selector: 'he-link-key-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!isUndefined; else showDefault\">\n <ng-container *bindOnce=\"node\">\n <a class=\"
|
|
62
|
+
args: [{ selector: 'he-link-key-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!isUndefined; else showDefault\">\n <ng-container *bindOnce=\"node\">\n <a class=\"is-dark\" [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n <span class=\"pr-2\">:</span>\n\n <ng-container *ngIf=\"isArray; else singleValue\">\n <div class=\"array-container pl-2\">\n <ng-container *ngFor=\"let v of value\">\n <ng-template #stringValue>\n <p [innerHtml]=\"toString(v) | precision:3\"></p>\n </ng-template>\n <ng-container *ngIf=\"isBlankNode(v); stringValue\">\n <div>\n <a class=\"is-dark\" href=\"valueLink(v.term)\">{{v.term.name || v.term['@id']}}</a>\n <span class=\"pr-2\">:</span>\n <div class=\"is-inline-block is-nowrap\" [innerHtml]=\"toString(v.value) | precision:3\"></div>\n\n <he-blank-node-state class=\"pl-1\"\n [node]=\"v\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" key=\"value\" linkClass=\"is-dark\"\n ></he-blank-node-state>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #singleValue>\n <div class=\"is-inline-block is-nowrap\" [innerHtml]=\"valueString | precision:3\"></div>\n\n <he-blank-node-state class=\"pl-1\"\n [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\" linkClass=\"is-dark\"\n ></he-blank-node-state>\n</ng-template>\n\n<ng-template #showDefault>\n <span>{{defaultValue}}</span>\n</ng-template>\n", styles: [":host{display:block}:host a.has-text-white:hover,:host a.has-text-white.is-hovered{text-decoration:underline}.array-container{max-height:100px;overflow-y:auto}\n"] }]
|
|
61
63
|
}], propDecorators: { node: [{
|
|
62
64
|
type: Input
|
|
63
65
|
}], nodeType: [{
|
|
@@ -72,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
72
74
|
type: HostBinding,
|
|
73
75
|
args: ['class.is-inline-block']
|
|
74
76
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1rZXktdmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9saW5rLWtleS12YWx1ZS9saW5rLWtleS12YWx1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2xpbmsta2V5LXZhbHVlL2xpbmsta2V5LXZhbHVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFFN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBRW5DLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDL0IsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFakgsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQUUsSUFBYSxFQUFFLEVBQUUsQ0FDakQsSUFBSSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUV0RixNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUVoSCxNQUFNLFlBQVksR0FFZDtJQUNGLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0lBQ25CLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUNqQixNQUFNLElBQUksS0FBSztRQUNiLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQy9HLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztJQUN6RSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FDZCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNsQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSTtZQUN2QixDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNoQixDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUNyQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQVFySCxNQUFNLE9BQU8scUJBQXFCO0lBTmxDO1FBZ0JTLGlCQUFZLEdBQVMsRUFBRSxDQUFDO1FBRXhCLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1FBQzVCLGNBQVMsR0FBRyxTQUFTLENBQUM7UUFPdEIsWUFBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLGFBQVEsR0FBRyxRQUFRLENBQUM7S0F5QjVCO0lBL0JDLElBQ0ksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBS0QsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBVTtRQUMzQixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDO0lBQ2hELENBQUM7O2tIQTdDVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixnUEN6Q2xDLCtqREF1Q0E7MkZERWEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOzhCQUl4QyxJQUFJO3NCQURWLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFHQyxHQUFHO3NCQURULEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFPRixhQUFhO3NCQURoQixXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFeHBhbmRhYmxlLCBOb2RlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGlzVW5kZWZpbmVkLCB0b1ByZWNpc2lvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcblxuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgdmFsdWVMaW5rID0gKHZhbHVlOiBhbnkpID0+XG4gIGlzRXhwYW5kYWJsZSh2YWx1ZSkgJiYgdmFsdWVbJ0BpZCddID8gW2Jhc2VVcmwoKSwgdmFsdWVbJ0B0eXBlJ10udG9Mb3dlckNhc2UoKSwgdmFsdWVbJ0BpZCddXS5qb2luKCcvJykgOiBudWxsO1xuXG5jb25zdCB2YWx1ZUxpbmtSZWYgPSAodmFsdWU6IGFueSwgaHJlZj86IHN0cmluZykgPT5cbiAgaHJlZiA/IGA8YSBjbGFzcz1cImlzLWRhcmtcIiBocmVmPVwiJHtocmVmfVwiPiR7dmFsdWUubmFtZSB8fCB2YWx1ZVsnQGlkJ119PC9hPmAgOiBudWxsO1xuXG5jb25zdCB2YWx1ZVZhbHVlID0gKHZhbHVlOiBhbnkpID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKHZhbHVlVmFsdWUpLmpvaW4oJywgJykgOiB0b1ByZWNpc2lvbih2YWx1ZSk7XG5cbmNvbnN0IHN0cmluZ01hcHBlcjoge1xuICBbdHlwZTogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiBzdHJpbmc7XG59ID0ge1xuICB1bmRlZmluZWQ6ICgpID0+ICcnLFxuICBibGFua05vZGU6IHZhbHVlID0+XG4gICAgJ3Rlcm0nIGluIHZhbHVlXG4gICAgICA/IGAke3ZhbHVlTGlua1JlZih2YWx1ZS50ZXJtLCB2YWx1ZUxpbmsodmFsdWUudGVybSkpfSR7J3ZhbHVlJyBpbiB2YWx1ZSA/IGA6ICR7dmFsdWVWYWx1ZSh2YWx1ZS52YWx1ZSl9YCA6ICcnfWBcbiAgICAgIDogdmFsdWVMaW5rUmVmKHZhbHVlLCB2YWx1ZUxpbmsodmFsdWUpKSB8fCB2YWx1ZS5uYW1lIHx8IHZhbHVlWydAaWQnXSxcbiAgb2JqZWN0OiB2YWx1ZSA9PlxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCh0b1N0cmluZykuam9pbignLCAnKVxuICAgICAgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGVcbiAgICAgID8gdmFsdWUudG9KU09OKClcbiAgICAgIDogaXNFeHBhbmRhYmxlKHZhbHVlKVxuICAgICAgPyBzdHJpbmdNYXBwZXIuYmxhbmtOb2RlKHZhbHVlKVxuICAgICAgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMilcbn07XG5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHR5cGVvZiB2YWx1ZSBpbiBzdHJpbmdNYXBwZXIgPyBzdHJpbmdNYXBwZXJbdHlwZW9mIHZhbHVlXSh2YWx1ZSkgOiB2YWx1ZS50b1N0cmluZygpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1saW5rLWtleS12YWx1ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5rLWtleS12YWx1ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmsta2V5LXZhbHVlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIExpbmtLZXlWYWx1ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBub2RlOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBub2RlVHlwZT86IE5vZGVUeXBlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YUtleT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGtleT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGRlZmF1bHRWYWx1ZT86IGFueSA9ICcnO1xuXG4gIHB1YmxpYyBpc0V4cGFuZGFibGUgPSBpc0V4cGFuZGFibGU7XG4gIHB1YmxpYyB2YWx1ZUxpbmsgPSB2YWx1ZUxpbms7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1pbmxpbmUtYmxvY2snKVxuICBnZXQgaXNJbmxpbmVCbG9jaygpIHtcbiAgICByZXR1cm4gdGhpcy5pc0FycmF5O1xuICB9XG5cbiAgcHVibGljIGJhc2VVcmwgPSBiYXNlVXJsKCk7XG4gIHB1YmxpYyB0b1N0cmluZyA9IHRvU3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlWydAdHlwZSddIHx8IHRoaXMubm9kZS50eXBlO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gZ2V0KHRoaXMubm9kZSwgdGhpcy5rZXkpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZVN0cmluZygpIHtcbiAgICByZXR1cm4gdG9TdHJpbmcodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQXJyYXkoKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAxO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1VuZGVmaW5lZCgpIHtcbiAgICByZXR1cm4gaXNVbmRlZmluZWQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaXNCbGFua05vZGUodmFsdWU6IGFueSkge1xuICAgIHJldHVybiBpc0V4cGFuZGFibGUodmFsdWUpICYmICd0ZXJtJyBpbiB2YWx1ZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1VuZGVmaW5lZDsgZWxzZSBzaG93RGVmYXVsdFwiPlxuICA8bmctY29udGFpbmVyICpiaW5kT25jZT1cIm5vZGVcIj5cbiAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiBbaHJlZl09XCJiYXNlVXJsICsgJy9zY2hlbWEvJyArIHR5cGUgKyAnIycgKyBrZXlcIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj57e2tleX19PC9iPjwvYT5cbiAgICA8c3BhbiBjbGFzcz1cInByLTJcIj46PC9zcGFuPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQXJyYXk7IGVsc2Ugc2luZ2xlVmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhcnJheS1jb250YWluZXIgcGwtMlwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2IG9mIHZhbHVlXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzdHJpbmdWYWx1ZT5cbiAgICAgICAgICAgIDxwIFtpbm5lckh0bWxdPVwidG9TdHJpbmcodikgfCBwcmVjaXNpb246M1wiPjwvcD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0JsYW5rTm9kZSh2KTsgc3RyaW5nVmFsdWVcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIGhyZWY9XCJ2YWx1ZUxpbmsodi50ZXJtKVwiPnt7di50ZXJtLm5hbWUgfHwgdi50ZXJtWydAaWQnXX19PC9hPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTJcIj46PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrIGlzLW5vd3JhcFwiIFtpbm5lckh0bWxdPVwidG9TdHJpbmcodi52YWx1ZSkgfCBwcmVjaXNpb246M1wiPjwvZGl2PlxuXG4gICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwicGwtMVwiXG4gICAgICAgICAgICAgICAgW25vZGVdPVwidlwiIFtub2RlVHlwZV09XCJub2RlVHlwZVwiIFtkYXRhS2V5XT1cImRhdGFLZXlcIiBrZXk9XCJ2YWx1ZVwiIGxpbmtDbGFzcz1cImlzLWRhcmtcIlxuICAgICAgICAgICAgICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlVmFsdWU+XG4gIDxkaXYgY2xhc3M9XCJpcy1pbmxpbmUtYmxvY2sgaXMtbm93cmFwXCIgW2lubmVySHRtbF09XCJ2YWx1ZVN0cmluZyB8IHByZWNpc2lvbjozXCI+PC9kaXY+XG5cbiAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJwbC0xXCJcbiAgICBbbm9kZV09XCJub2RlXCIgW25vZGVUeXBlXT1cIm5vZGVUeXBlXCIgW2RhdGFLZXldPVwiZGF0YUtleVwiIFtrZXldPVwia2V5XCIgbGlua0NsYXNzPVwiaXMtZGFya1wiXG4gID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dEZWZhdWx0PlxuICA8c3Bhbj57e2RlZmF1bHRWYWx1ZX19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -83,7 +83,7 @@ export class CyclesActivityComponent {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
CyclesActivityComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesActivityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
86
|
-
CyclesActivityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesActivityComponent, selector: "he-cycles-activity", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngIf=\"inputs.length\"\n [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\"\n [attr.colspan]=\"products.length\"\n >Products</th>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state"] }, { kind: "component", type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i7.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i8.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { kind: "component", type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { kind: "component", type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { kind: "component", type: i11.CyclesActivityLogsComponent, selector: "he-cycles-activity-logs", inputs: ["cycle", "original", "recalculated"] }, { kind: "component", type: i12.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { kind: "component", type: i13.CyclesResultComponent, selector: "he-cycles-result", inputs: ["cycles"] }, { kind: "pipe", type: i14.CompoundPipe, name: "compound" }, { kind: "pipe", type: i15.DefaultPipe, name: "default" }, { kind: "pipe", type: i16.EllipsisPipe, name: "ellipsis" }, { kind: "pipe", type: i17.PrecisionPipe, name: "precision" }] });
|
|
86
|
+
CyclesActivityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesActivityComponent, selector: "he-cycles-activity", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngIf=\"inputs.length\"\n [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\"\n [attr.colspan]=\"products.length\"\n >Products</th>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "component", type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i7.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i8.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { kind: "component", type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { kind: "component", type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { kind: "component", type: i11.CyclesActivityLogsComponent, selector: "he-cycles-activity-logs", inputs: ["cycle", "original", "recalculated"] }, { kind: "component", type: i12.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { kind: "component", type: i13.CyclesResultComponent, selector: "he-cycles-result", inputs: ["cycles"] }, { kind: "pipe", type: i14.CompoundPipe, name: "compound" }, { kind: "pipe", type: i15.DefaultPipe, name: "default" }, { kind: "pipe", type: i16.EllipsisPipe, name: "ellipsis" }, { kind: "pipe", type: i17.PrecisionPipe, name: "precision" }] });
|
|
87
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesActivityComponent, decorators: [{
|
|
88
88
|
type: Component,
|
|
89
89
|
args: [{ selector: 'he-cycles-activity', template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngIf=\"inputs.length\"\n [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\"\n [attr.colspan]=\"products.length\"\n >Products</th>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"] }]
|