@hestia-earth/ui-components 0.2.6 → 0.2.9
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/bundles/hestia-earth-ui-components.umd.js +134 -121
- package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
- package/common/maps-utils.d.ts +1 -1
- package/common/node-utils.d.ts +3 -2
- package/engine/engine.service.d.ts +1 -0
- package/esm2015/common/link-key-value/link-key-value.component.js +15 -6
- package/esm2015/common/maps-utils.js +12 -9
- package/esm2015/common/node-utils.js +3 -1
- package/esm2015/engine/engine.service.js +2 -2
- package/esm2015/files/files-form.model.js +2 -1
- package/esm2015/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.js +26 -18
- package/esm2015/impact-assessments/impact-assessments-products/impact-assessments-products.component.js +3 -11
- package/esm2015/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.js +6 -5
- package/esm2015/node/node-logs-models/node-logs-models.component.js +46 -47
- package/esm2015/node/node-value-details/node-value-details.component.js +2 -2
- package/esm2015/sites/sites-maps/sites-maps.component.js +2 -7
- package/esm2015/terms/terms.model.js +2 -2
- package/fesm2015/hestia-earth-ui-components.js +106 -96
- package/fesm2015/hestia-earth-ui-components.js.map +1 -1
- package/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.d.ts +2 -0
- package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +1 -1
- package/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.d.ts +1 -1
- package/node/node-logs-models/node-logs-models.component.d.ts +8 -5
- package/package.json +3 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('@angular/router'), require('@ng-bootstrap/ng-bootstrap'), require('@angular/google-maps'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-regular-svg-icons'), require('@fortawesome/free-solid-svg-icons'), require('random-material-color'), require('@hestia-earth/schema'), require('@hestia-earth/api'), require('@angular/platform-browser'), require('rxjs'), require('@hestia-earth/utils'), require('pluralize'), require('rxjs/operators'), require('@hestia-earth/utils/dist/term'), require('csvtojson'), require('@angular/common/http'), require('@hestia-earth/utils/dist/delta'), require('json-2-csv'), require('@angular/cdk/drag-drop'), require('@hestia-earth/schema-convert'), require('@hestia-earth/json-schema/schema-utils'), require('jsondiffpatch'), require('chart.js'), require('moment'), require('moment/locale/en-gb'), require('uuid'), require('@google/markerclustererplus'), require('
|
|
3
|
-
typeof define === 'function' && define.amd ? define('@hestia-earth/ui-components', ['exports', '@angular/core', '@angular/common', '@angular/forms', '@angular/router', '@ng-bootstrap/ng-bootstrap', '@angular/google-maps', '@fortawesome/angular-fontawesome', '@fortawesome/free-regular-svg-icons', '@fortawesome/free-solid-svg-icons', 'random-material-color', '@hestia-earth/schema', '@hestia-earth/api', '@angular/platform-browser', 'rxjs', '@hestia-earth/utils', 'pluralize', 'rxjs/operators', '@hestia-earth/utils/dist/term', 'csvtojson', '@angular/common/http', '@hestia-earth/utils/dist/delta', 'json-2-csv', '@angular/cdk/drag-drop', '@hestia-earth/schema-convert', '@hestia-earth/json-schema/schema-utils', 'jsondiffpatch', 'chart.js', 'moment', 'moment/locale/en-gb', 'uuid', '@google/markerclustererplus', '
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["hestia-earth"] = global["hestia-earth"] || {}, global["hestia-earth"]["ui-components"] = {}), global.ng.core, global.ng.common, global.ng.forms, global.ng.router, global.i11, global.ng.googleMaps, global.i1, global.freeRegularSvgIcons, global.freeSolidSvgIcons, global.randomMaterialColor, global.schema, global.api, global.ng.platformBrowser, global.rxjs, global.utils, global.pluralize, global.rxjs.operators, global.term, global.csvtojson, global.ng.common.http, global.delta, global.json2Csv, global.ng.cdk.dragDrop, global.schemaConvert, global.schemaUtils, global.jsondiffpatch, global.chart_js, global.moment, null, global.uuid$1, global.MarkerClusterer, global.
|
|
5
|
-
})(this, (function (exports, i0, i2, i1$1, i5, i11, i1$4, i1, freeRegularSvgIcons, freeSolidSvgIcons, randomMaterialColor, schema, api, i1$2, rxjs, utils, pluralize, operators, term, csvtojson, i1$3, delta, json2Csv, i6, schemaConvert, schemaUtils, jsondiffpatch, chart_js, moment, enGb, uuid$1, MarkerClusterer,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('@angular/router'), require('@ng-bootstrap/ng-bootstrap'), require('@angular/google-maps'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-regular-svg-icons'), require('@fortawesome/free-solid-svg-icons'), require('random-material-color'), require('@hestia-earth/schema'), require('@hestia-earth/api'), require('@angular/platform-browser'), require('rxjs'), require('@hestia-earth/utils'), require('pluralize'), require('rxjs/operators'), require('@hestia-earth/utils/dist/term'), require('@hestia-earth/glossary'), require('csvtojson'), require('@angular/common/http'), require('@hestia-earth/utils/dist/delta'), require('json-2-csv'), require('@angular/cdk/drag-drop'), require('@hestia-earth/schema-convert'), require('@hestia-earth/json-schema/schema-utils'), require('jsondiffpatch'), require('chart.js'), require('moment'), require('moment/locale/en-gb'), require('uuid'), require('@google/markerclustererplus'), require('chartjs-plugin-datalabels')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('@hestia-earth/ui-components', ['exports', '@angular/core', '@angular/common', '@angular/forms', '@angular/router', '@ng-bootstrap/ng-bootstrap', '@angular/google-maps', '@fortawesome/angular-fontawesome', '@fortawesome/free-regular-svg-icons', '@fortawesome/free-solid-svg-icons', 'random-material-color', '@hestia-earth/schema', '@hestia-earth/api', '@angular/platform-browser', 'rxjs', '@hestia-earth/utils', 'pluralize', 'rxjs/operators', '@hestia-earth/utils/dist/term', '@hestia-earth/glossary', 'csvtojson', '@angular/common/http', '@hestia-earth/utils/dist/delta', 'json-2-csv', '@angular/cdk/drag-drop', '@hestia-earth/schema-convert', '@hestia-earth/json-schema/schema-utils', 'jsondiffpatch', 'chart.js', 'moment', 'moment/locale/en-gb', 'uuid', '@google/markerclustererplus', 'chartjs-plugin-datalabels'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["hestia-earth"] = global["hestia-earth"] || {}, global["hestia-earth"]["ui-components"] = {}), global.ng.core, global.ng.common, global.ng.forms, global.ng.router, global.i11, global.ng.googleMaps, global.i1, global.freeRegularSvgIcons, global.freeSolidSvgIcons, global.randomMaterialColor, global.schema, global.api, global.ng.platformBrowser, global.rxjs, global.utils, global.pluralize, global.rxjs.operators, global.term, global.glossary, global.csvtojson, global.ng.common.http, global.delta, global.json2Csv, global.ng.cdk.dragDrop, global.schemaConvert, global.schemaUtils, global.jsondiffpatch, global.chart_js, global.moment, null, global.uuid$1, global.MarkerClusterer, global.ChartDataLabels));
|
|
5
|
+
})(this, (function (exports, i0, i2, i1$1, i5, i11, i1$4, i1, freeRegularSvgIcons, freeSolidSvgIcons, randomMaterialColor, schema, api, i1$2, rxjs, utils, pluralize, operators, term, glossary, csvtojson, i1$3, delta, json2Csv, i6, schemaConvert, schemaUtils, jsondiffpatch, chart_js, moment, enGb, uuid$1, MarkerClusterer, ChartDataLabels) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -874,7 +874,7 @@
|
|
|
874
874
|
},
|
|
875
875
|
_b$1.practice = {
|
|
876
876
|
label: 'Practices',
|
|
877
|
-
termType: '
|
|
877
|
+
termType: 'Practices',
|
|
878
878
|
children: termTypesToChildren([
|
|
879
879
|
schema.TermTermType.animalManagement,
|
|
880
880
|
schema.TermTermType.aquacultureManagement,
|
|
@@ -1091,6 +1091,7 @@
|
|
|
1091
1091
|
}] });
|
|
1092
1092
|
|
|
1093
1093
|
var get$5 = require('lodash.get');
|
|
1094
|
+
var isMethodModelAllowed = function (filterMethod) { return function (node) { var _a, _b; return ((_a = node.methodModel) === null || _a === void 0 ? void 0 : _a['@id']) === (filterMethod ? filterMethod['@id'] : glossary.getDefaultModeId((_b = node.term) === null || _b === void 0 ? void 0 : _b['@id'])); }; };
|
|
1094
1095
|
var NodeKeyState;
|
|
1095
1096
|
(function (NodeKeyState) {
|
|
1096
1097
|
NodeKeyState["added"] = "added";
|
|
@@ -1104,8 +1105,8 @@
|
|
|
1104
1105
|
node[state].includes(key))); };
|
|
1105
1106
|
;
|
|
1106
1107
|
;
|
|
1107
|
-
var grouppedKeys = function (values) { return Object.entries(values).map(function (
|
|
1108
|
-
var
|
|
1108
|
+
var grouppedKeys = function (values) { return Object.entries(values).map(function (_c) {
|
|
1109
|
+
var _d = __read(_c, 2), key = _d[0], value = _d[1];
|
|
1109
1110
|
return ({ key: key, value: value });
|
|
1110
1111
|
}); };
|
|
1111
1112
|
var concatBlankNodeValue = function (value, newValue) {
|
|
@@ -1928,9 +1929,20 @@
|
|
|
1928
1929
|
args: ['window:resize', []]
|
|
1929
1930
|
}] } });
|
|
1930
1931
|
|
|
1932
|
+
var valueLink = function (value) { return schema.isExpandable(value) && value['@id'] ? [baseUrl(), value['@type'].toLowerCase(), value['@id']].join('/') : null; };
|
|
1933
|
+
var valueLinkRef = function (value, href) { return href ? "<a href=\"" + href + "\">" + (value.name || value['@id']) + "</a>" : null; };
|
|
1931
1934
|
var stringMapper = {
|
|
1932
1935
|
undefined: function () { return ''; },
|
|
1933
|
-
|
|
1936
|
+
blankNode: function (value) { return 'term' in value
|
|
1937
|
+
? "" + valueLinkRef(value.term, valueLink(value.term)) + ('value' in value ? ": " + value.value : '')
|
|
1938
|
+
: valueLinkRef(value, valueLink(value)) || value.name || value['@id']; },
|
|
1939
|
+
object: function (value) { return Array.isArray(value)
|
|
1940
|
+
? value.map(toString).join(', ')
|
|
1941
|
+
: value instanceof Date
|
|
1942
|
+
? value.toJSON()
|
|
1943
|
+
: schema.isExpandable(value)
|
|
1944
|
+
? stringMapper.blankNode(value)
|
|
1945
|
+
: JSON.stringify(value, null, 2); }
|
|
1934
1946
|
};
|
|
1935
1947
|
var toString = function (value) { return typeof value in stringMapper ? stringMapper[typeof value](value) : value.toString(); };
|
|
1936
1948
|
var LinkKeyValueComponent = /** @class */ (function () {
|
|
@@ -1961,9 +1973,7 @@
|
|
|
1961
1973
|
});
|
|
1962
1974
|
Object.defineProperty(LinkKeyValueComponent.prototype, "valueLink", {
|
|
1963
1975
|
get: function () {
|
|
1964
|
-
return
|
|
1965
|
-
[baseUrl(), this.value['@type'].toLowerCase(), this.value['@id']].join('/') :
|
|
1966
|
-
null;
|
|
1976
|
+
return valueLink(this.value);
|
|
1967
1977
|
},
|
|
1968
1978
|
enumerable: false,
|
|
1969
1979
|
configurable: true
|
|
@@ -1985,7 +1995,7 @@
|
|
|
1985
1995
|
return LinkKeyValueComponent;
|
|
1986
1996
|
}());
|
|
1987
1997
|
LinkKeyValueComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: LinkKeyValueComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
1988
|
-
LinkKeyValueComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LinkKeyValueComponent, selector: "he-link-key-value", inputs: { node: "node", nodeType: "nodeType", dataKey: "dataKey", key: "key" }, ngImport: i0__namespace, template: "<ng-container *ngIf=\"!isUndefined\">\n <ng-container *bindOnce=\"node\">\n <a [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n <span class=\"pr-2\">:</span>\n <
|
|
1998
|
+
LinkKeyValueComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LinkKeyValueComponent, selector: "he-link-key-value", inputs: { node: "node", nodeType: "nodeType", dataKey: "dataKey", key: "key" }, ngImport: i0__namespace, template: "<ng-container *ngIf=\"!isUndefined\">\n <ng-container *bindOnce=\"node\">\n <a [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 <p *ngFor=\"let v of value\" [innerHtml]=\"toString(v) | precision:3\"></p>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #singleValue>\n <div class=\"is-inline-block pr-1\" [innerHtml]=\"valueString | precision:3\"></div>\n\n <he-blank-node-state\n [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"\n ></he-blank-node-state>\n</ng-template>\n", styles: [":host{display:block}.array-container{max-height:100px;overflow-y:auto}\n"], components: [{ type: BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["nodeType", "dataKey", "key", "node", "state"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { type: i2__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "precision": PrecisionPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
|
1989
1999
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: LinkKeyValueComponent, decorators: [{
|
|
1990
2000
|
type: i0.Component,
|
|
1991
2001
|
args: [{
|
|
@@ -2082,9 +2092,11 @@
|
|
|
2082
2092
|
});
|
|
2083
2093
|
var defaultFeature = function () { return (Object.assign({}, feature)); };
|
|
2084
2094
|
var pointToCoordinates = function (point) { return [point.lng(), point.lat()]; };
|
|
2085
|
-
var coordinatesToPoint = function (values) { return Array.isArray(values[0])
|
|
2086
|
-
values.map(function (v) { return coordinatesToPoint(v); })
|
|
2087
|
-
|
|
2095
|
+
var coordinatesToPoint = function (values) { return Array.isArray(values[0])
|
|
2096
|
+
? values.map(function (v) { return coordinatesToPoint(v); })
|
|
2097
|
+
: values.some(isNaN)
|
|
2098
|
+
? null
|
|
2099
|
+
: new google.maps.LatLng(values[1], values[0]); };
|
|
2088
2100
|
var polygonToCoordinates = function (polygon) { return polygon.getPaths().getArray().map(function (path) {
|
|
2089
2101
|
var points = path.getArray();
|
|
2090
2102
|
return __spreadArray(__spreadArray([], __read(points.map(pointToCoordinates))), [
|
|
@@ -2112,11 +2124,12 @@
|
|
|
2112
2124
|
: (getCoordinates(feat) || []).map(coordinatesToPolygon); };
|
|
2113
2125
|
var polygonBounds = function (polygon) {
|
|
2114
2126
|
var _a;
|
|
2115
|
-
|
|
2116
|
-
Array.isArray(polygon)
|
|
2117
|
-
polygon.
|
|
2118
|
-
((
|
|
2119
|
-
|
|
2127
|
+
var paths = polygon
|
|
2128
|
+
? Array.isArray(polygon)
|
|
2129
|
+
? polygon.flatMap(function (p) { var _a; return ((_a = p.getPath()) === null || _a === void 0 ? void 0 : _a.getArray()) || []; })
|
|
2130
|
+
: ((_a = polygon.getPath()) === null || _a === void 0 ? void 0 : _a.getArray()) || []
|
|
2131
|
+
: [];
|
|
2132
|
+
return paths.reduce(function (prev, curr) { return prev.extend(curr); }, new google.maps.LatLngBounds());
|
|
2120
2133
|
};
|
|
2121
2134
|
|
|
2122
2135
|
var MapsDrawingConfirmComponent = /** @class */ (function () {
|
|
@@ -5494,6 +5507,13 @@
|
|
|
5494
5507
|
.filter(function (v) { return v !== null; });
|
|
5495
5508
|
return propertyValues.length ? propertyValues.reduce(function (p, v) { return p + v; }, 0) : undefined;
|
|
5496
5509
|
};
|
|
5510
|
+
var isRunOrchestrator = function (log) { return !('shouldRunOrchestrator' in log) || log.shouldRunOrchestrator; };
|
|
5511
|
+
var hasLog = function (log, withOrchestrator) {
|
|
5512
|
+
if (withOrchestrator === void 0) { withOrchestrator = true; }
|
|
5513
|
+
return !!log && ('shouldRun' in log ||
|
|
5514
|
+
'runRequired' in log ||
|
|
5515
|
+
(withOrchestrator && 'shouldRunOrchestrator' in log));
|
|
5516
|
+
};
|
|
5497
5517
|
var isRecalculated = function (values, key) {
|
|
5498
5518
|
if (key === void 0) { key = 'value'; }
|
|
5499
5519
|
return values.some(function (v) { return (__spreadArray(__spreadArray([], __read((v.added || []))), __read((v.updated || [])))).includes(key); });
|
|
@@ -5527,18 +5547,26 @@
|
|
|
5527
5547
|
var logSubValue = function (logs, key, prop) { return logs[key][prop] ? (Array.isArray(logs[key][prop]) ?
|
|
5528
5548
|
logs[key][prop].map(function (id) { return ({ key: prop, id: id }); }) :
|
|
5529
5549
|
{ key: prop, id: logs[key][prop] }) : undefined; };
|
|
5530
|
-
var
|
|
5531
|
-
|
|
5550
|
+
var logProperties = function (nodes, models) { return nodes.flatMap(function (node) { return (node.properties || []).map(function (_c) {
|
|
5551
|
+
var term = _c.term;
|
|
5552
|
+
return term['@id'];
|
|
5553
|
+
}); }).map(function (id) { return ({ key: 'property', id: id, configModels: findModels(models, id).map(function (_c) {
|
|
5554
|
+
var model = _c.model;
|
|
5555
|
+
return model;
|
|
5556
|
+
}) }); }); };
|
|
5557
|
+
var logSubValues = function (logs, original, recalculated, models) { return utils.unique(__spreadArray(__spreadArray(__spreadArray([], __read(Object.keys(logs).flatMap(function (key) { return [
|
|
5532
5558
|
logSubValue(logs, key, 'input'),
|
|
5533
5559
|
logSubValue(logs, key, 'property')
|
|
5534
5560
|
]
|
|
5535
5561
|
.flat()
|
|
5536
5562
|
.filter(Boolean)
|
|
5563
|
+
.map(function (v) { return (Object.assign(Object.assign({}, v), { configModels: [key] })); }); }))), __read(logProperties(original, models))), __read(logProperties(recalculated, models))))
|
|
5537
5564
|
.map(function (v) {
|
|
5538
5565
|
var originalValue = blankNodeValue(original, v.key, v.id);
|
|
5539
5566
|
var recalculatedValue = blankNodeValue(recalculated, v.key, v.id);
|
|
5540
|
-
return Object.assign(Object.assign({}, v), { configModels:
|
|
5541
|
-
})
|
|
5567
|
+
return Object.assign(Object.assign({}, v), { configModels: v.configModels, originalValue: originalValue, recalculatedValue: recalculatedValue, isRecalculated: !utils.isUndefined(recalculatedValue) && recalculatedValue !== originalValue });
|
|
5568
|
+
})
|
|
5569
|
+
.filter(function (v) { return v.configModels.length > 0; }); };
|
|
5542
5570
|
var logKeys = function (logs, original, recalculated) { return Object.keys(logs)
|
|
5543
5571
|
.filter(function (key) { return logs[key].isKey; })
|
|
5544
5572
|
.map(function (key) { return ({
|
|
@@ -5633,11 +5661,12 @@
|
|
|
5633
5661
|
this.terms = [];
|
|
5634
5662
|
this.baseUrl = baseUrl();
|
|
5635
5663
|
this.isExternal = isExternal();
|
|
5664
|
+
this.hasLog = hasLog;
|
|
5636
5665
|
this.loading = true;
|
|
5637
5666
|
this.blankNodes = [];
|
|
5638
5667
|
this.methodModelsCount = 0;
|
|
5639
5668
|
this.rowsCount = 0;
|
|
5640
|
-
this.
|
|
5669
|
+
this.onlyRequired = true;
|
|
5641
5670
|
this.showLegend = true;
|
|
5642
5671
|
this.LogStatus = LogStatus;
|
|
5643
5672
|
this.logIcon = logIcon;
|
|
@@ -5709,8 +5738,11 @@
|
|
|
5709
5738
|
return model;
|
|
5710
5739
|
}))));
|
|
5711
5740
|
var keys = logKeys(termLogs, original, recalculated);
|
|
5712
|
-
var subValues = logSubValues(termLogs, original, recalculated);
|
|
5713
|
-
var isRequired = !Object.values(termLogs)
|
|
5741
|
+
var subValues = logSubValues(termLogs, original, recalculated, allModels);
|
|
5742
|
+
var isRequired = !Object.values(termLogs)
|
|
5743
|
+
// ignore models that were never going to run
|
|
5744
|
+
.filter(isRunOrchestrator)
|
|
5745
|
+
.every(function (logs) { return logs.runRequired === false; });
|
|
5714
5746
|
return {
|
|
5715
5747
|
isOpen: true,
|
|
5716
5748
|
canOpen: keys.length > 0 || subValues.length > 0,
|
|
@@ -5771,25 +5803,27 @@
|
|
|
5771
5803
|
var value = (blankNodes === null || blankNodes === void 0 ? void 0 : blankNodes.length) ? blankNodes[0][key] : null;
|
|
5772
5804
|
return ['string', 'number', 'boolean'].includes(typeof value) ? (value || '') : null;
|
|
5773
5805
|
};
|
|
5774
|
-
NodeLogsModelsComponent.prototype.
|
|
5775
|
-
|
|
5806
|
+
NodeLogsModelsComponent.prototype.openPopover = function (popover, _c) {
|
|
5807
|
+
var blankNode = _c.blankNode, methodId = _c.methodId, subValue = _c.subValue, logs = _c.logs;
|
|
5808
|
+
return this.hasLogDetails(blankNode, methodId, subValue) ? popover.open({ logs: logs }) : null;
|
|
5776
5809
|
};
|
|
5777
5810
|
NodeLogsModelsComponent.prototype.filterResults = function () {
|
|
5778
5811
|
var _this = this;
|
|
5779
5812
|
setTimeout(function () {
|
|
5780
5813
|
_this.blankNodes = _this.allBlankNodes.filter(function (_c) {
|
|
5781
|
-
var
|
|
5814
|
+
var isRequired = _c.isRequired, name = _c.term.name;
|
|
5782
5815
|
return _this.term
|
|
5783
5816
|
? name.toLowerCase().includes(_this.term.toLowerCase())
|
|
5784
|
-
: !_this.
|
|
5817
|
+
: !_this.onlyRequired || !_this.filteredType || isRequired;
|
|
5785
5818
|
});
|
|
5786
5819
|
});
|
|
5787
5820
|
};
|
|
5788
5821
|
/** Logs **/
|
|
5789
5822
|
NodeLogsModelsComponent.prototype.getSubvalueLogs = function (node, _c) {
|
|
5790
|
-
var id = _c.id;
|
|
5823
|
+
var id = _c.id, key = _c.key;
|
|
5791
5824
|
// try to get a more precise logs, defaults to id otherwise
|
|
5792
|
-
return get$3(this.logs, [id, node.termId].join('.'), get$3(this.logs, id, {})
|
|
5825
|
+
return get$3(this.logs, [id, node.termId].join('.'), key === 'property' ? {} : get$3(this.logs, id, {}) // property needs to be mapped to the exact node to work
|
|
5826
|
+
);
|
|
5793
5827
|
};
|
|
5794
5828
|
NodeLogsModelsComponent.prototype.getLogs = function (node, methodId, subValue) {
|
|
5795
5829
|
var logs = (subValue === null || subValue === void 0 ? void 0 : subValue.key) ? this.getSubvalueLogs(node, subValue) : node.logs || {};
|
|
@@ -5798,9 +5832,6 @@
|
|
|
5798
5832
|
NodeLogsModelsComponent.prototype.isBackground = function (log) {
|
|
5799
5833
|
return (log === null || log === void 0 ? void 0 : log.methodTier) === schema.EmissionMethodTier.background;
|
|
5800
5834
|
};
|
|
5801
|
-
NodeLogsModelsComponent.prototype.isRunOrchestrator = function (log) {
|
|
5802
|
-
return !('shouldRunOrchestrator' in log) || log.shouldRunOrchestrator;
|
|
5803
|
-
};
|
|
5804
5835
|
NodeLogsModelsComponent.prototype.isUserProvided = function (node, methodId, subValue) {
|
|
5805
5836
|
var log = this.getLogs(node, methodId, subValue);
|
|
5806
5837
|
return [
|
|
@@ -5811,13 +5842,6 @@
|
|
|
5811
5842
|
this.hasLog(log, false) // skip if contains logs other than orchestrator
|
|
5812
5843
|
].every(function (v) { return !v; });
|
|
5813
5844
|
};
|
|
5814
|
-
NodeLogsModelsComponent.prototype.validSubValue = function (node, index, subValue) {
|
|
5815
|
-
var methodId = this.getMethodIdAt(node, index, subValue);
|
|
5816
|
-
var log = get$3(node.logs[methodId], subValue === null || subValue === void 0 ? void 0 : subValue.key, null);
|
|
5817
|
-
return !(subValue === null || subValue === void 0 ? void 0 : subValue.id) || (
|
|
5818
|
-
// subValue can be an array
|
|
5819
|
-
Array.isArray(log) ? log.includes(subValue === null || subValue === void 0 ? void 0 : subValue.id) : log === (subValue === null || subValue === void 0 ? void 0 : subValue.id));
|
|
5820
|
-
};
|
|
5821
5845
|
NodeLogsModelsComponent.prototype.getMethodIdAt = function (node, index, subValue) {
|
|
5822
5846
|
var configModels = (subValue || node).configModels;
|
|
5823
5847
|
return configModels[index];
|
|
@@ -5830,12 +5854,6 @@
|
|
|
5830
5854
|
(log === null || log === void 0 ? void 0 : log.model) ||
|
|
5831
5855
|
(methodId ? methodIdLabel(methodId) : '');
|
|
5832
5856
|
};
|
|
5833
|
-
NodeLogsModelsComponent.prototype.hasLog = function (log, withOrchestrator) {
|
|
5834
|
-
if (withOrchestrator === void 0) { withOrchestrator = true; }
|
|
5835
|
-
return !!log && ('shouldRun' in log ||
|
|
5836
|
-
'runRequired' in log ||
|
|
5837
|
-
(withOrchestrator && 'shouldRunOrchestrator' in log));
|
|
5838
|
-
};
|
|
5839
5857
|
NodeLogsModelsComponent.prototype.hasLogDetails = function (node, methodId, subValue) {
|
|
5840
5858
|
var _a;
|
|
5841
5859
|
var log = this.getLogs(node, methodId, subValue);
|
|
@@ -5848,17 +5866,16 @@
|
|
|
5848
5866
|
var log = this.getLogs(node, methodId, subValue);
|
|
5849
5867
|
return this.isUserProvided(node, methodId, subValue)
|
|
5850
5868
|
? LogStatus.dataProvided
|
|
5851
|
-
: (
|
|
5852
|
-
? (
|
|
5853
|
-
?
|
|
5854
|
-
|
|
5855
|
-
|
|
5856
|
-
? log.shouldRun
|
|
5857
|
-
|
|
5858
|
-
|
|
5859
|
-
|
|
5860
|
-
|
|
5861
|
-
: LogStatus.dataProvided))
|
|
5869
|
+
: (hasLog(log)
|
|
5870
|
+
? (!node.isRequired
|
|
5871
|
+
? LogStatus.notRequired
|
|
5872
|
+
: isRunOrchestrator(log)
|
|
5873
|
+
? ('shouldRun' in log
|
|
5874
|
+
? log.shouldRun ? LogStatus.success : LogStatus.error
|
|
5875
|
+
: LogStatus.dataProvided)
|
|
5876
|
+
: node.isRecalculated
|
|
5877
|
+
? LogStatus.skipHierarchy
|
|
5878
|
+
: LogStatus.dataProvided)
|
|
5862
5879
|
: LogStatus.skipHierarchy);
|
|
5863
5880
|
};
|
|
5864
5881
|
NodeLogsModelsComponent.prototype.requirementKeys = function (requirements) {
|
|
@@ -5870,7 +5887,7 @@
|
|
|
5870
5887
|
return NodeLogsModelsComponent;
|
|
5871
5888
|
}());
|
|
5872
5889
|
NodeLogsModelsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: NodeLogsModelsComponent, deps: [{ token: HeSearchService }, { token: HeEngineService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
5873
|
-
NodeLogsModelsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeLogsModelsComponent, selector: "he-node-logs-models", inputs: { nodeType: "nodeType", nodeKey: "nodeKey", includeAllModels: "includeAllModels", logsUrl: "logsUrl", originalValues: "originalValues", recalculatedValues: "recalculatedValues", terms: "terms", logs: "logs", filteredType: "filteredType" }, ngImport: i0__namespace, template: "<div class=\"px-3 pb-3\">\n <div class=\"has-text-right mb-2\" *ngIf=\"!isExternal\">\n <a class=\"is-size-7\" *ngIf=\"logsUrl\" [href]=\"logsUrl\" target=\"_blank\">\n <fa-icon icon=\"external-link-alt\"></fa-icon>\n <span class=\"pl-2\">Open Full Logs</span>\n </a>\n </div>\n\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"rowsCount\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\">\n <div class=\"field\">\n <div class=\"control is-expanded has-icons-right\">\n <input class=\"input search-input is-small\"\n [(ngModel)]=\"term\" name=\"term\"\n placeholder=\"Filter by name\"\n [ngbTypeahead]=\"suggestTerm\"\n [focusFirst]=\"false\"\n (change)=\"filterResults()\"\n >\n <a class=\"icon is-small is-right\"\n [class.is-hidden]=\"!term\"\n (click)=\"term = ''; filterResults();\"\n >\n <fa-icon icon=\"times\"></fa-icon>\n </a>\n </div>\n </div>\n </th>\n <th class=\"has-border-right\">Units</th>\n <th>Original</th>\n <th>Recalculated</th>\n <th>Difference</th>\n <th *ngFor=\"let c of methodModelsCount | times; let i = index\">({{i + 1}})</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngIf=\"loading\">\n <td class=\"has-text-centered\" colspan=\"6\">\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n </td>\n </tr>\n <tr *ngIf=\"!loading && blankNodes.length === 0\">\n <td class=\"has-text-centered\" colspan=\"6\">\n <span>No data</span>\n </td>\n </tr>\n <ng-container *ngFor=\"let blankNode of blankNodes; trackBy: trackByBlankNode\">\n <tr [class.has-sub-rows]=\"blankNode.canOpen\">\n <td class=\"width-auto\" [attr.title]=\"blankNode.term.name\">\n <a class=\"is-inline-block is-align-top pr-2 open-node\"\n (click)=\"blankNode.isOpen = !blankNode.isOpen\"\n *ngIf=\"blankNode.canOpen\"\n >\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!blankNode.isOpen\"></fa-icon>\n <fa-icon icon=\"angle-right\" [class.is-hidden]=\"blankNode.isOpen\"></fa-icon>\n </a>\n <he-node-link class=\"is-inline-block\" [node]=\"blankNode.term\">\n <span class=\"is-nowrap has-text-ellipsis\">{{blankNode.term.name}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <span>{{blankNode.term?.units}}</span>\n </td>\n <td>\n <span>{{blankNode.originalValue | precision:3 | default:'-'}}</span>\n </td>\n <td>\n <span *ngIf=\"!blankNode.isOriginal || blankNode.isRecalculated; else notRecalculated\">\n {{blankNode.recalculatedValue | precision:3 | default:'-'}}\n </span>\n </td>\n <td class=\"is-nowrap\">\n <he-blank-node-value-delta *ngIf=\"blankNode.original.length && blankNode.isRecalculated; else noValue\"\n [value]=\"blankNode.recalculatedValue\"\n [originalValue]=\"blankNode.originalValue\"\n ></he-blank-node-value-delta>\n </td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {blankNode: blankNode}\"></ng-container>\n </tr>\n\n <ng-container *ngIf=\"blankNode.keys?.length\">\n <tr\n *ngFor=\"let subValue of blankNode.keys\"\n [class.is-hidden]=\"!blankNode.isOpen\"\n [class.has-sub-rows]=\"blankNode.subValues?.length\"\n >\n <td class=\"width-auto has-text-left\">\n <span class=\"is-inline-block is-align-top pl-3 pr-1 field-node\">Field:</span>\n\n <a class=\"is-inline-block\" *ngIf=\"blankNode.type\"\n [href]=\"baseUrl + '/schema/' + blankNode.type + '#' + subValue.key\" target=\"_blank\" [title]=\"subValue.key\"\n >\n <span class=\"is-nowrap has-text-ellipsis\">{{subValue.key}}</span>\n </a>\n <span class=\"is-inline-block is-align-top\" *ngIf=\"!blankNode.type\">{{subValue.key}}</span>\n </td>\n <td class=\"has-border-right\"></td>\n <td>\n <span *ngIf=\"subValue.originalValue !== null; else noValue\">{{subValue.originalValue | precision:3 | default:'-'}}</span>\n </td>\n <td>\n <span *ngIf=\"subValue.isRecalculated; else notRecalculated\">\n {{subValue.recalculatedValue | precision:3 | default:'-'}}\n </span>\n </td>\n <td>-</td>\n <td class=\"blank-node-index-key\">\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {blankNode:blankNode, methodId:subValue.key, logs:getLogs(blankNode, subValue.key)}\"></ng-container>\n </td>\n <td *ngIf=\"methodModelsCount > 1\" [attr.colspan]=\"methodModelsCount - 1\"></td>\n </tr>\n </ng-container>\n\n <tr\n *ngFor=\"let subValue of blankNode.subValues\"\n [class.is-hidden]=\"!blankNode.isOpen\"\n >\n <td class=\"width-auto has-text-left\">\n <span class=\"is-inline-block is-align-top pl-3\">{{subValue.key | keyToLabel}}</span>\n\n <ng-container *ngIf=\"subValue.id\">\n <span class=\"is-inline-block\" class=\"is-inline-block is-align-top pr-1\">:</span>\n\n <ng-container [ngSwitch]=\"subValue.key\">\n <span class=\"is-inline-block\" *ngSwitchCase=\"'backgroundData'\">{{subValue.id | keyToLabel}}</span>\n <he-node-link *ngSwitchDefault class=\"is-block pl-4\" [node]=\"{'@type':'Term','@id':subValue.id}\" [attr.title]=\"subValue.id | keyToLabel\">\n <span class=\"is-nowrap has-text-ellipsis\">{{subValue.id | keyToLabel}}</span>\n </he-node-link>\n </ng-container>\n </ng-container>\n </td>\n <td class=\"has-border-right\"></td>\n <td>\n <span *ngIf=\"subValue.originalValue !== null; else noValue\">{{subValue.originalValue | precision:3 | default:'-'}}</span>\n </td>\n <td>\n <span *ngIf=\"subValue.isRecalculated; else notRecalculated\">\n {{subValue.recalculatedValue | precision:3 | default:'-'}}\n </span>\n </td>\n <td>-</td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {blankNode: blankNode, subValue: subValue}\"></ng-container>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <div class=\"is-size-7 is-italic\">\n <div class=\"columns is-variable is-1 my-0\">\n <div class=\"column is-narrow\">\n <p>\n <a class=\"is-inline-block pr-2\"\n (click)=\"showLegend = !showLegend\"\n >\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!showLegend\"></fa-icon>\n <fa-icon icon=\"angle-right\" [class.is-hidden]=\"showLegend\"></fa-icon>\n </a>\n <span class=\"is-inline-block\">Legend:</span>\n </p>\n <ul class=\"content pl-2\" [class.is-hidden]=\"!showLegend\">\n <li\n class=\"has-text-{{logColor[status.value]}}\"\n *ngFor=\"let status of LogStatus | keys\"\n >\n <fa-icon [icon]=\"logIcon[status.value]\"></fa-icon>\n <span class=\"pl-1\">{{status.value}}</span>\n </li>\n </ul>\n </div>\n <div class=\"column has-text-right\" *ngIf=\"filteredType\">\n <label class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"onlyWithData\"\n (change)=\"filterResults()\"\n [disabled]=\"!!term\"\n >\n <span class=\"ml-2\">Show only relevant {{filteredType | pluralize}}</span>\n </label>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #blankNodeModels let-blankNode=\"blankNode\" let-subValue=\"subValue\">\n <td class=\"blank-node-index-{{i}}\" *ngFor=\"let c of methodModelsCount | times; let i = index\">\n <ng-container *ngIf=\"validSubValue(blankNode, i, subValue); else noValue\">\n <ng-container *ngIf=\"getMethodIdAt(blankNode, i, subValue); let methodId; else noValue\">\n <ng-template #modelSerie>\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {blankNode:blankNode, methodId:methodId, subValue:subValue, logs:getLogs(blankNode, methodId, subValue)}\"></ng-container>\n </ng-template>\n <div *ngIf=\"methodId | isArray; else modelSerie\">\n <p *ngFor=\"let value of methodId\">\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {blankNode:blankNode, methodId:value, subValue:subValue, logs:getLogs(blankNode, methodId, subValue)}\"></ng-container>\n </p>\n </div>\n </ng-container>\n </ng-container>\n </td>\n</ng-template>\n\n<ng-template #blankNodeModel let-blankNode=\"blankNode\" let-methodId=\"methodId\" let-subValue=\"subValue\" let-logs=\"logs\">\n <span\n [class.trigger-popover]=\"hasLogDetails(blankNode, methodId, subValue)\"\n [ngbPopover]=\"logDetails\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"hasLogDetails(blankNode, methodId, subValue) ? togglePopover(p, { logs }) : null\"\n >\n <span class=\"is-capitalized\">{{methodName(blankNode, methodId, subValue)}}</span>\n <span class=\"pl-1\" *ngIf=\"hasLog(logs) && logs?.methodTier\">[{{logs.methodTier}}]</span>\n <span class=\"pl-1 has-text-{{logColor[logStatus(blankNode, methodId, subValue)]}}\">\n <fa-icon [icon]=\"logIcon[logStatus(blankNode, methodId, subValue)]\"></fa-icon>\n </span>\n </span>\n</ng-template>\n\n<ng-template #noValue>-</ng-template>\n\n<ng-template #notRecalculated>not recalculated</ng-template>\n\n<ng-template #logDetails let-logs=\"logs\">\n <ng-container *ngIf=\"logs.requirements\">\n <p class=\"is-requirement\" *ngFor=\"let key of requirementKeys(logs.requirements)\">\n {{key}}: {{logs.requirements[key]}}\n </p>\n </ng-container>\n <ng-container *ngIf=\"logs.logs\">\n <p class=\"is-log\" *ngFor=\"let key of logs.logs | keys\">\n {{key.key}}: {{key.value}}\n </p>\n </ng-container>\n <ng-container *ngIf=\"logs.missingLookups?.length\">\n <p class=\"mt-2\">Missing lookups:</p>\n\n <div class=\"table-container data-table-container\">\n <table class=\"table is-fullwidth mb-0\">\n <thead class=\"has-background-black\">\n <tr>\n <th>\n <span class=\"has-text-white\">Filename</span>\n </th>\n <th>\n <span class=\"has-text-white\">Column Title</span>\n </th>\n <th>\n <span class=\"has-text-white\">Row (term.id)</span>\n </th>\n </tr>\n </thead>\n <tbody class=\"has-background-black has-text-white\">\n <tr *ngFor=\"let data of logs.missingLookups\">\n <td>{{data.filename}}</td>\n <td>{{data.column}}</td>\n <td>{{data.termId}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </ng-container>\n</ng-template>\n", styles: [":host{display:block}::ng-deep tr.has-sub-rows td{border-bottom-style:dotted}::ng-deep td he-node-link{width:190px}::ng-deep td .open-node+he-node-link{width:170px}\n"], components: [{ type: i1__namespace.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { type: DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { type: NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: BlankNodeValueDeltaComponent, selector: "he-blank-node-value-delta", inputs: ["value", "originalValue", "displayType"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i11__namespace.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "placement", "container", "editable", "focusFirst", "showHint", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { type: i1__namespace$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1__namespace$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2__namespace.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1__namespace$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i11__namespace.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }], pipes: { "times": TimesPipe, "default": DefaultPipe, "precision": PrecisionPipe, "keyToLabel": KeyToLabelPipe, "keys": KeysPipe, "pluralize": PluralizePipe, "isArray": IsArrayPipe } });
|
|
5890
|
+
NodeLogsModelsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeLogsModelsComponent, selector: "he-node-logs-models", inputs: { nodeType: "nodeType", nodeKey: "nodeKey", includeAllModels: "includeAllModels", logsUrl: "logsUrl", originalValues: "originalValues", recalculatedValues: "recalculatedValues", terms: "terms", logs: "logs", filteredType: "filteredType" }, ngImport: i0__namespace, template: "<div class=\"px-3 pb-3\">\n <div class=\"has-text-right mb-2\" *ngIf=\"!isExternal\">\n <a class=\"is-size-7\" *ngIf=\"logsUrl\" [href]=\"logsUrl\" target=\"_blank\">\n <fa-icon icon=\"external-link-alt\"></fa-icon>\n <span class=\"pl-2\">Open Full Logs</span>\n </a>\n </div>\n\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"rowsCount\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\">\n <div class=\"field\">\n <div class=\"control is-expanded has-icons-right\">\n <input class=\"input search-input is-small\"\n [(ngModel)]=\"term\" name=\"term\"\n placeholder=\"Filter by name\"\n [ngbTypeahead]=\"suggestTerm\"\n [focusFirst]=\"false\"\n (change)=\"filterResults()\"\n >\n <a class=\"icon is-small is-right\"\n [class.is-hidden]=\"!term\"\n (click)=\"term = ''; filterResults();\"\n >\n <fa-icon icon=\"times\"></fa-icon>\n </a>\n </div>\n </div>\n </th>\n <th class=\"has-border-right\">Units</th>\n <th>Original</th>\n <th>Recalculated</th>\n <th>Difference</th>\n <th *ngFor=\"let c of methodModelsCount | times; let i = index\">({{i + 1}})</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngIf=\"loading\">\n <td class=\"has-text-centered\" colspan=\"6\">\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n </td>\n </tr>\n <tr *ngIf=\"!loading && blankNodes.length === 0\">\n <td class=\"has-text-centered\" colspan=\"6\">\n <span>No data</span>\n </td>\n </tr>\n <ng-container *ngFor=\"let blankNode of blankNodes; trackBy: trackByBlankNode\">\n <tr [class.has-sub-rows]=\"blankNode.canOpen\">\n <td class=\"width-auto\" [attr.title]=\"blankNode.term.name\">\n <a class=\"is-inline-block is-align-top pr-2 open-node\"\n (click)=\"blankNode.isOpen = !blankNode.isOpen\"\n *ngIf=\"blankNode.canOpen\"\n >\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!blankNode.isOpen\"></fa-icon>\n <fa-icon icon=\"angle-right\" [class.is-hidden]=\"blankNode.isOpen\"></fa-icon>\n </a>\n <he-node-link class=\"is-inline-block\" [node]=\"blankNode.term\">\n <span class=\"is-nowrap has-text-ellipsis\">{{blankNode.term.name}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <span>{{blankNode.term?.units}}</span>\n </td>\n <td>\n <span>{{blankNode.originalValue | precision:3 | default:'-'}}</span>\n </td>\n <td>\n <span *ngIf=\"!blankNode.isOriginal || blankNode.isRecalculated; else notRecalculated\">\n {{blankNode.recalculatedValue | precision:3 | default:'-'}}\n </span>\n </td>\n <td class=\"is-nowrap\">\n <he-blank-node-value-delta *ngIf=\"blankNode.original.length && blankNode.isRecalculated; else noValue\"\n [value]=\"blankNode.recalculatedValue\"\n [originalValue]=\"blankNode.originalValue\"\n ></he-blank-node-value-delta>\n </td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {blankNode: blankNode}\"></ng-container>\n </tr>\n\n <ng-container *ngIf=\"blankNode.keys?.length\">\n <tr\n *ngFor=\"let subValue of blankNode.keys\"\n [class.is-hidden]=\"!blankNode.isOpen\"\n [class.has-sub-rows]=\"blankNode.subValues?.length\"\n >\n <td class=\"width-auto has-text-left\">\n <span class=\"is-inline-block is-align-top pl-3 pr-1 field-node\">Field:</span>\n\n <a class=\"is-inline-block\" *ngIf=\"blankNode.type\"\n [href]=\"baseUrl + '/schema/' + blankNode.type + '#' + subValue.key\" target=\"_blank\" [title]=\"subValue.key\"\n >\n <span class=\"is-nowrap has-text-ellipsis\">{{subValue.key}}</span>\n </a>\n <span class=\"is-inline-block is-align-top\" *ngIf=\"!blankNode.type\">{{subValue.key}}</span>\n </td>\n <td class=\"has-border-right\"></td>\n <td>\n <span *ngIf=\"subValue.originalValue !== null; else noValue\">{{subValue.originalValue | precision:3 | default:'-'}}</span>\n </td>\n <td>\n <span *ngIf=\"subValue.isRecalculated; else notRecalculated\">\n {{subValue.recalculatedValue | precision:3 | default:'-'}}\n </span>\n </td>\n <td>-</td>\n <td class=\"blank-node-index-key\">\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {blankNode:blankNode, methodId:subValue.key, logs:getLogs(blankNode, subValue.key)}\"></ng-container>\n </td>\n <td *ngIf=\"methodModelsCount > 1\" [attr.colspan]=\"methodModelsCount - 1\"></td>\n </tr>\n </ng-container>\n\n <tr\n *ngFor=\"let subValue of blankNode.subValues\"\n [class.is-hidden]=\"!blankNode.isOpen\"\n >\n <td class=\"width-auto has-text-left\">\n <span class=\"is-inline-block is-align-top pl-3\">{{subValue.key | keyToLabel}}</span>\n\n <ng-container *ngIf=\"subValue.id\">\n <span class=\"is-inline-block\" class=\"is-inline-block is-align-top pr-1\">:</span>\n\n <ng-container [ngSwitch]=\"subValue.key\">\n <span class=\"is-inline-block\" *ngSwitchCase=\"'backgroundData'\">{{subValue.id | keyToLabel}}</span>\n <he-node-link *ngSwitchDefault class=\"is-block pl-4\" [node]=\"{'@type':'Term','@id':subValue.id}\" [attr.title]=\"subValue.id | keyToLabel\">\n <span class=\"is-nowrap has-text-ellipsis\">{{subValue.id | keyToLabel}}</span>\n </he-node-link>\n </ng-container>\n </ng-container>\n </td>\n <td class=\"has-border-right\"></td>\n <td>\n <span *ngIf=\"subValue.originalValue !== null; else noValue\">{{subValue.originalValue | precision:3 | default:'-'}}</span>\n </td>\n <td>\n <span *ngIf=\"subValue.isRecalculated; else notRecalculated\">\n {{subValue.recalculatedValue | precision:3 | default:'-'}}\n </span>\n </td>\n <td>-</td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {blankNode: blankNode, subValue: subValue}\"></ng-container>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <div class=\"is-size-7 is-italic\">\n <div class=\"columns is-variable is-1 my-0\">\n <div class=\"column is-narrow\">\n <p>\n <a class=\"is-inline-block pr-2\"\n (click)=\"showLegend = !showLegend\"\n >\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!showLegend\"></fa-icon>\n <fa-icon icon=\"angle-right\" [class.is-hidden]=\"showLegend\"></fa-icon>\n </a>\n <span class=\"is-inline-block\">Legend:</span>\n </p>\n <ul class=\"content pl-2\" [class.is-hidden]=\"!showLegend\">\n <li\n class=\"has-text-{{logColor[status.value]}}\"\n *ngFor=\"let status of LogStatus | keys\"\n >\n <fa-icon [icon]=\"logIcon[status.value]\"></fa-icon>\n <span class=\"pl-1\">{{status.value}}</span>\n </li>\n </ul>\n </div>\n <div class=\"column has-text-right\" *ngIf=\"filteredType\">\n <label class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"onlyRequired\"\n (change)=\"filterResults()\"\n [disabled]=\"!!term\"\n >\n <span class=\"ml-2\">Show only relevant {{filteredType | pluralize}}</span>\n </label>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #blankNodeModels let-blankNode=\"blankNode\" let-subValue=\"subValue\">\n <td class=\"blank-node-index-{{i}}\" *ngFor=\"let c of methodModelsCount | times; let i = index\">\n <ng-container *ngIf=\"getMethodIdAt(blankNode, i, subValue); let methodId; else noValue\">\n <ng-template #modelSerie>\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {blankNode:blankNode, methodId:methodId, subValue:subValue, logs:getLogs(blankNode, methodId, subValue)}\"></ng-container>\n </ng-template>\n <div *ngIf=\"methodId | isArray; else modelSerie\">\n <p *ngFor=\"let value of methodId\">\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {blankNode:blankNode, methodId:value, subValue:subValue, logs:getLogs(blankNode, value, subValue)}\"></ng-container>\n </p>\n </div>\n </ng-container>\n </td>\n</ng-template>\n\n<ng-template #blankNodeModel let-blankNode=\"blankNode\" let-methodId=\"methodId\" let-subValue=\"subValue\" let-logs=\"logs\">\n <span\n [class.trigger-popover]=\"hasLogDetails(blankNode, methodId, subValue)\"\n [ngbPopover]=\"logDetails\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"p.isOpen() ? p.close() : openPopover(p, { blankNode, methodId, subValue, logs })\"\n >\n <span class=\"is-capitalized\">{{methodName(blankNode, methodId, subValue)}}</span>\n <span class=\"pl-1\" *ngIf=\"hasLog(logs) && logs?.methodTier\">[{{logs.methodTier}}]</span>\n <span class=\"pl-1 has-text-{{logColor[logStatus(blankNode, methodId, subValue)]}}\">\n <fa-icon [icon]=\"logIcon[logStatus(blankNode, methodId, subValue)]\"></fa-icon>\n </span>\n </span>\n</ng-template>\n\n<ng-template #noValue>-</ng-template>\n\n<ng-template #notRecalculated>not recalculated</ng-template>\n\n<ng-template #logDetails let-logs=\"logs\">\n <ng-container *ngIf=\"logs?.requirements\">\n <p class=\"is-requirement\" *ngFor=\"let key of requirementKeys(logs.requirements)\">\n {{key}}: {{logs.requirements[key]}}\n </p>\n </ng-container>\n <ng-container *ngIf=\"logs?.logs\">\n <p class=\"is-log\" *ngFor=\"let key of logs.logs | keys\">\n {{key.key}}: {{key.value}}\n </p>\n </ng-container>\n <ng-container *ngIf=\"logs?.missingLookups?.length\">\n <p class=\"mt-2\">Missing lookups:</p>\n\n <div class=\"table-container data-table-container\">\n <table class=\"table is-fullwidth mb-0\">\n <thead class=\"has-background-black\">\n <tr>\n <th>\n <span class=\"has-text-white\">Filename</span>\n </th>\n <th>\n <span class=\"has-text-white\">Column Title</span>\n </th>\n <th>\n <span class=\"has-text-white\">Row (term.id)</span>\n </th>\n </tr>\n </thead>\n <tbody class=\"has-background-black has-text-white\">\n <tr *ngFor=\"let data of logs.missingLookups\">\n <td>{{data.filename}}</td>\n <td>{{data.column}}</td>\n <td>{{data.termId}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </ng-container>\n</ng-template>\n", styles: [":host{display:block}::ng-deep tr.has-sub-rows td{border-bottom-style:dotted}::ng-deep td he-node-link{width:190px}::ng-deep td .open-node+he-node-link{width:170px}\n"], components: [{ type: i1__namespace.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { type: DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { type: NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: BlankNodeValueDeltaComponent, selector: "he-blank-node-value-delta", inputs: ["value", "originalValue", "displayType"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i11__namespace.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "placement", "container", "editable", "focusFirst", "showHint", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { type: i1__namespace$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1__namespace$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2__namespace.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1__namespace$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i11__namespace.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }], pipes: { "times": TimesPipe, "default": DefaultPipe, "precision": PrecisionPipe, "keyToLabel": KeyToLabelPipe, "keys": KeysPipe, "pluralize": PluralizePipe, "isArray": IsArrayPipe } });
|
|
5874
5891
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: NodeLogsModelsComponent, decorators: [{
|
|
5875
5892
|
type: i0.Component,
|
|
5876
5893
|
args: [{
|
|
@@ -5941,7 +5958,7 @@
|
|
|
5941
5958
|
'methodModelDescription', 'description',
|
|
5942
5959
|
'primary', 'emissionDuration', 'observations', 'statsDefinition',
|
|
5943
5960
|
'term', 'source', 'variety', 'reliability', 'price', 'currency', 'cost', 'revenue', 'economicValueShare',
|
|
5944
|
-
'impactAssessment'
|
|
5961
|
+
'impactAssessment', 'properties'
|
|
5945
5962
|
];
|
|
5946
5963
|
var tableKeys = [
|
|
5947
5964
|
'inputs', 'transformation', 'value', 'dates', 'methodModel', 'methodTier', 'statsDefinition'
|
|
@@ -7617,6 +7634,7 @@
|
|
|
7617
7634
|
propertyValueType(Object.assign(Object.assign({}, schema), { type: [schema.items.type] })) :
|
|
7618
7635
|
schema.type) : typeof value); };
|
|
7619
7636
|
var propertyTypeParseValue = {
|
|
7637
|
+
undefined: function () { return undefined; },
|
|
7620
7638
|
object: function (val) { return safeJSONParse(val); },
|
|
7621
7639
|
array: function (val, schema) {
|
|
7622
7640
|
var items = schema.items;
|
|
@@ -8149,12 +8167,7 @@
|
|
|
8149
8167
|
});
|
|
8150
8168
|
};
|
|
8151
8169
|
SitesMapsComponent.prototype.centerPolygons = function (polygons) {
|
|
8152
|
-
|
|
8153
|
-
return (polygons === null || polygons === void 0 ? void 0 : polygons.length) ? this.map.googleMap.fitBounds(polygonBounds(polygons)) : null;
|
|
8154
|
-
}
|
|
8155
|
-
catch (err) {
|
|
8156
|
-
return (polygons === null || polygons === void 0 ? void 0 : polygons.length) ? this.map.googleMap.fitBounds(polygonBounds(polygons[0])) : null;
|
|
8157
|
-
}
|
|
8170
|
+
return (polygons === null || polygons === void 0 ? void 0 : polygons.length) ? this.map.googleMap.fitBounds(polygonBounds(polygons)) : null;
|
|
8158
8171
|
};
|
|
8159
8172
|
SitesMapsComponent.prototype.addSiteMarkers = function (sites) {
|
|
8160
8173
|
var siteMarkers = sites.map(siteMarker).filter(Boolean);
|
|
@@ -9054,7 +9067,7 @@
|
|
|
9054
9067
|
var parseLog = function (data) { return ({
|
|
9055
9068
|
modelId: data.model,
|
|
9056
9069
|
impactTermId: data['key/term'] || data.term || data.indicator,
|
|
9057
|
-
|
|
9070
|
+
blankNodeTermId: data.node,
|
|
9058
9071
|
coefficient: +data.coefficient,
|
|
9059
9072
|
value: +data.value * +data.coefficient
|
|
9060
9073
|
}); };
|
|
@@ -9076,10 +9089,10 @@
|
|
|
9076
9089
|
], __read(logs
|
|
9077
9090
|
.sort(function (a, b) { return a.impactTermId.localeCompare(b.impactTermId); })
|
|
9078
9091
|
.flatMap(function (_d) {
|
|
9079
|
-
var impactTermId = _d.impactTermId, impactTermUnits = _d.impactTermUnits, modelId = _d.modelId,
|
|
9092
|
+
var impactTermId = _d.impactTermId, impactTermUnits = _d.impactTermUnits, modelId = _d.modelId, blankNodeTermId = _d.blankNodeTermId, value = _d.value, inputs = _d.inputs;
|
|
9080
9093
|
return __spreadArray([
|
|
9081
|
-
[impactTermId, impactTermUnits, modelId,
|
|
9082
|
-
], __read((inputs.map(function (v) { return [impactTermId, impactTermUnits, modelId,
|
|
9094
|
+
[impactTermId, impactTermUnits, modelId, blankNodeTermId, value, '', '']
|
|
9095
|
+
], __read((inputs.map(function (v) { return [impactTermId, impactTermUnits, modelId, blankNodeTermId, '', v.name, v.value]; }))));
|
|
9083
9096
|
})
|
|
9084
9097
|
.map(function (v) {
|
|
9085
9098
|
var _a;
|
|
@@ -9098,19 +9111,25 @@
|
|
|
9098
9111
|
this.indicators = [];
|
|
9099
9112
|
this.loading = true;
|
|
9100
9113
|
this.terms = [];
|
|
9114
|
+
this.methods = [];
|
|
9101
9115
|
this.noData = false;
|
|
9102
9116
|
}
|
|
9103
9117
|
ImpactAssessmentsIndicatorBreakdownChartComponent.prototype.ngOnInit = function () {
|
|
9104
9118
|
return __awaiter(this, void 0, void 0, function () {
|
|
9105
|
-
var _d, results;
|
|
9119
|
+
var impacts, _d, results;
|
|
9106
9120
|
var _this = this;
|
|
9107
9121
|
return __generator(this, function (_e) {
|
|
9108
9122
|
switch (_e.label) {
|
|
9109
9123
|
case 0:
|
|
9110
|
-
this.terms = this.indicators.map(function (_d) {
|
|
9124
|
+
this.terms = utils.unique(this.indicators.map(function (_d) {
|
|
9111
9125
|
var term = _d.term;
|
|
9112
9126
|
return term;
|
|
9113
|
-
});
|
|
9127
|
+
}).filter(Boolean));
|
|
9128
|
+
this.methods = utils.unique(this.indicators.map(function (_d) {
|
|
9129
|
+
var methodModel = _d.methodModel;
|
|
9130
|
+
return methodModel;
|
|
9131
|
+
}).filter(Boolean));
|
|
9132
|
+
impacts = __spreadArray(__spreadArray([], __read(this.impactAssessment.impacts || [])), __read(this.impactAssessment.endpoints || []));
|
|
9114
9133
|
_d = this;
|
|
9115
9134
|
return [4 /*yield*/, rxjs.of(Object.assign(Object.assign({}, this.impactAssessment), { dataState: api.DataState.recalculated })).pipe(operators.mergeMap(function (node) { return _this.nodeService.getLog(node); }), operators.map(function (value) { return value ? parseLines(value) : []; }), operators.mergeAll(), operators.filter(function (_d) {
|
|
9116
9135
|
var data = _d.data;
|
|
@@ -9118,20 +9137,19 @@
|
|
|
9118
9137
|
}), operators.map(function (_d) {
|
|
9119
9138
|
var data = _d.data;
|
|
9120
9139
|
return parseMessage(data.message);
|
|
9121
|
-
}), operators.filter(function (message) { return 'node' in message; }), operators.map(parseLog), operators.filter(function (log) { return !!log.impactTermId && !!log.
|
|
9122
|
-
var _a
|
|
9140
|
+
}), operators.filter(function (message) { return 'node' in message; }), operators.map(parseLog), operators.filter(function (log) { return !!log.impactTermId && !!log.blankNodeTermId && !isNaN(log.value) && log.value > 0; }), operators.groupBy(function (log) { return [log.impactTermId, log.blankNodeTermId, log.modelId].join('/'); }), operators.mergeMap(function (group) { return group.pipe(operators.toArray()); }), operators.map(function (values) {
|
|
9141
|
+
var _a;
|
|
9123
9142
|
var log = values[0];
|
|
9124
9143
|
var total = values.reduce(function (prev, curr) { return prev + curr.value; }, 0);
|
|
9125
|
-
var
|
|
9126
|
-
.filter(function (v) { return v.term['@id'] === log.
|
|
9127
|
-
var inputs =
|
|
9144
|
+
var blankNodes = (__spreadArray(__spreadArray([], __read(_this.impactAssessment.emissionsResourceUse || [])), __read(_this.impactAssessment.impacts || [])))
|
|
9145
|
+
.filter(function (v) { return v.term['@id'] === log.blankNodeTermId; });
|
|
9146
|
+
var inputs = blankNodes
|
|
9128
9147
|
.filter(function (v) { var _a; return (_a = v.inputs) === null || _a === void 0 ? void 0 : _a.length; })
|
|
9129
9148
|
.map(function (v) { return ({ name: v.inputs.map(function (i) { return i['@id']; }).join(';'), value: v.value * log.coefficient }); });
|
|
9130
9149
|
var inputsValue = inputs.reduce(function (prev, curr) { return prev + curr.value; }, 0);
|
|
9131
|
-
var
|
|
9132
|
-
.filter(function (v) { return v.term['@id'] === log.impactTermId; });
|
|
9150
|
+
var impact = impacts.find(function (v) { return v.term['@id'] === log.impactTermId; });
|
|
9133
9151
|
// logs might exist but impact was not added => skip logs
|
|
9134
|
-
return
|
|
9152
|
+
return impact ? Object.assign(Object.assign({}, log), { impactTermUnits: (_a = impact.term) === null || _a === void 0 ? void 0 : _a.units, value: total, inputs: inputs, inputsValue: inputsValue }) : null;
|
|
9135
9153
|
}), operators.filter(function (log) { return !!log; }), operators.toArray()).toPromise()];
|
|
9136
9154
|
case 1:
|
|
9137
9155
|
_d.logs = (_e.sent());
|
|
@@ -9172,16 +9190,16 @@
|
|
|
9172
9190
|
var _a, _b, _c;
|
|
9173
9191
|
var logs = this.logs
|
|
9174
9192
|
.filter(function (_d) {
|
|
9175
|
-
var impactTermId = _d.impactTermId;
|
|
9176
|
-
return impactTermId === _this.selectedTerm['@id'];
|
|
9193
|
+
var impactTermId = _d.impactTermId, modelId = _d.modelId;
|
|
9194
|
+
return impactTermId === _this.selectedTerm['@id'] && (!_this.selectedMethod || modelId === _this.selectedMethod['@id']);
|
|
9177
9195
|
})
|
|
9178
9196
|
.sort(function (a, b) { return b.value - a.value; });
|
|
9179
9197
|
this.noData = logs.length === 0;
|
|
9180
9198
|
var total = logs.reduce(function (prev, curr) { return prev + curr.value; }, 0);
|
|
9181
9199
|
var labels = logs.map(function (_d) {
|
|
9182
|
-
var
|
|
9200
|
+
var blankNodeTermId = _d.blankNodeTermId;
|
|
9183
9201
|
var _a;
|
|
9184
|
-
return ((_a = _this.emissions.find(function (v) { return v['@id'] ===
|
|
9202
|
+
return ((_a = _this.emissions.find(function (v) { return v['@id'] === blankNodeTermId; })) === null || _a === void 0 ? void 0 : _a.name) || blankNodeTermId;
|
|
9185
9203
|
});
|
|
9186
9204
|
// display the breakdown by input
|
|
9187
9205
|
// const inputs = logs.flatMap(v => v.inputs.map(i => i.name));
|
|
@@ -9264,7 +9282,7 @@
|
|
|
9264
9282
|
return ImpactAssessmentsIndicatorBreakdownChartComponent;
|
|
9265
9283
|
}());
|
|
9266
9284
|
ImpactAssessmentsIndicatorBreakdownChartComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ImpactAssessmentsIndicatorBreakdownChartComponent, deps: [{ token: i0__namespace.NgZone }, { token: i1__namespace$2.DomSanitizer }, { token: HeSearchService }, { token: HeNodeService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
9267
|
-
ImpactAssessmentsIndicatorBreakdownChartComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImpactAssessmentsIndicatorBreakdownChartComponent, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: { impactAssessment: "impactAssessment", indicators: "indicators" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], ngImport: i0__namespace, template: "<div class=\"p-3\" [class.is-hidden]=\"loading || !terms?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}} ({{term.units}})</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a class=\"button is-dark is-outlined is-small\" [href]=\"csvContent\" [download]=\"id + '-logs.csv'\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download All (CSV)</span>\n </a>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <p *ngIf=\"noData\" class=\"has-text-centered\">No breakdown available for {{selectedTerm?.name}}
|
|
9285
|
+
ImpactAssessmentsIndicatorBreakdownChartComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImpactAssessmentsIndicatorBreakdownChartComponent, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: { impactAssessment: "impactAssessment", indicators: "indicators" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], ngImport: i0__namespace, template: "<div class=\"p-3\" [class.is-hidden]=\"loading || !terms?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}} ({{term.units}})</option>\n </select>\n </div>\n </div>\n <div class=\"control is-expanded\" *ngIf=\"methods?.length\">\n <div class=\"select is-fullwidth is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedMethod\" id=\"selectedMethod\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n <option *ngFor=\"let term of methods\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a class=\"button is-dark is-outlined is-small\" [href]=\"csvContent\" [download]=\"id + '-logs.csv'\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download All (CSV)</span>\n </a>\n </div>\n </div>\n\n <p class=\"is-size-7\" *ngIf=\"!selectedMethod\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n\n <div class=\"mt-1\">\n <p *ngIf=\"noData\" class=\"has-text-centered\">\n <span>No breakdown available for {{selectedTerm?.name}}</span>\n <span class=\"pl-1\" *ngIf=\"selectedMethod\">({{selectedMethod.name}})</span>\n <span>.</span>\n </p>\n <div class=\"chart-container h-100\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"loading\">\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-container>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"], components: [{ type: i1__namespace.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i1__namespace$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1__namespace$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1__namespace$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1__namespace$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
9268
9286
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ImpactAssessmentsIndicatorBreakdownChartComponent, decorators: [{
|
|
9269
9287
|
type: i0.Component,
|
|
9270
9288
|
args: [{
|
|
@@ -9413,11 +9431,11 @@
|
|
|
9413
9431
|
this.loading = true;
|
|
9414
9432
|
this.NodeType = schema.NodeType;
|
|
9415
9433
|
this.models = [];
|
|
9416
|
-
this.
|
|
9434
|
+
this.terms = [];
|
|
9417
9435
|
}
|
|
9418
9436
|
ImpactAssessmentsProductsLogsComponent.prototype.ngOnInit = function () {
|
|
9419
9437
|
return __awaiter(this, void 0, void 0, function () {
|
|
9420
|
-
var _a,
|
|
9438
|
+
var _a, terms, showAllEmissions;
|
|
9421
9439
|
return __generator(this, function (_b) {
|
|
9422
9440
|
switch (_b.label) {
|
|
9423
9441
|
case 0:
|
|
@@ -9440,8 +9458,9 @@
|
|
|
9440
9458
|
}
|
|
9441
9459
|
})];
|
|
9442
9460
|
case 2:
|
|
9443
|
-
|
|
9444
|
-
this.
|
|
9461
|
+
terms = (_b.sent()).results;
|
|
9462
|
+
showAllEmissions = this.key !== 'emissionsResourceUse' || (this.filterTermTypes || []).length === 1;
|
|
9463
|
+
this.terms = showAllEmissions ? terms : [];
|
|
9445
9464
|
this.loading = false;
|
|
9446
9465
|
return [2 /*return*/];
|
|
9447
9466
|
}
|
|
@@ -9472,7 +9491,7 @@
|
|
|
9472
9491
|
return ImpactAssessmentsProductsLogsComponent;
|
|
9473
9492
|
}());
|
|
9474
9493
|
ImpactAssessmentsProductsLogsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ImpactAssessmentsProductsLogsComponent, deps: [{ token: HeSearchService }, { token: HeNodeService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
9475
|
-
ImpactAssessmentsProductsLogsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImpactAssessmentsProductsLogsComponent, selector: "he-impact-assessments-products-logs", inputs: { impactAssessment: "impactAssessment", key: "key", filterTermTypes: "filterTermTypes", originalValues: "originalValues", recalculatedValues: "recalculatedValues" }, ngImport: i0__namespace, template: "<he-node-logs-models *ngIf=\"!loading; else loader\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.ImpactAssessment\"\n [nodeKey]=\"key\"\n [originalValues]=\"originalValues\"\n [recalculatedValues]=\"recalculatedValues\"\n [terms]=\"
|
|
9494
|
+
ImpactAssessmentsProductsLogsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImpactAssessmentsProductsLogsComponent, selector: "he-impact-assessments-products-logs", inputs: { impactAssessment: "impactAssessment", key: "key", filterTermTypes: "filterTermTypes", originalValues: "originalValues", recalculatedValues: "recalculatedValues" }, ngImport: i0__namespace, template: "<he-node-logs-models *ngIf=\"!loading; else loader\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.ImpactAssessment\"\n [nodeKey]=\"key\"\n [originalValues]=\"originalValues\"\n [recalculatedValues]=\"recalculatedValues\"\n [terms]=\"terms\"\n [logs]=\"logs\"\n [filteredType]=\"filteredType\"\n [includeAllModels]=\"includeAllModels\"\n></he-node-logs-models>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n", styles: [""], components: [{ type: NodeLogsModelsComponent, selector: "he-node-logs-models", inputs: ["nodeType", "nodeKey", "includeAllModels", "logsUrl", "originalValues", "recalculatedValues", "terms", "logs", "filteredType"] }, { type: i1__namespace.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
9476
9495
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ImpactAssessmentsProductsLogsComponent, decorators: [{
|
|
9477
9496
|
type: i0.Component,
|
|
9478
9497
|
args: [{
|
|
@@ -9500,13 +9519,6 @@
|
|
|
9500
9519
|
View["breakdown"] = "breakdown";
|
|
9501
9520
|
View["logs"] = "logs";
|
|
9502
9521
|
})(View || (View = {}));
|
|
9503
|
-
var isMethodModelAllowed = function (filterMethod) { return function (node) {
|
|
9504
|
-
var _a, _b, _c, _d;
|
|
9505
|
-
return filterMethod
|
|
9506
|
-
? ((_a = node.methodModel) === null || _a === void 0 ? void 0 : _a['@id']) === filterMethod['@id']
|
|
9507
|
-
: (typeof glossary.getDefaultModeId((_b = node.term) === null || _b === void 0 ? void 0 : _b['@id']) === 'undefined' ||
|
|
9508
|
-
((_c = node.methodModel) === null || _c === void 0 ? void 0 : _c['@id']) === glossary.getDefaultModeId((_d = node.term) === null || _d === void 0 ? void 0 : _d['@id']));
|
|
9509
|
-
}; };
|
|
9510
9522
|
var ImpactAssessmentsProductsComponent = /** @class */ (function () {
|
|
9511
9523
|
function ImpactAssessmentsProductsComponent(nodeService) {
|
|
9512
9524
|
this.nodeService = nodeService;
|
|
@@ -9570,28 +9582,28 @@
|
|
|
9570
9582
|
var _this = this;
|
|
9571
9583
|
var indicatorPerImpactAssessment = groupNodesByTerm(this.impactAssessments, this.key, this.originalValues, isMethodModelAllowed(this.selectedMethodModel));
|
|
9572
9584
|
this.indicators = orderBy(grouppedKeys(indicatorPerImpactAssessment), ['value.methodTierOrder', 'key'], ['asc', 'asc'])
|
|
9573
|
-
.filter(function (
|
|
9574
|
-
var value =
|
|
9585
|
+
.filter(function (_b) {
|
|
9586
|
+
var value = _b.value;
|
|
9575
9587
|
return _this.termAllowed(value === null || value === void 0 ? void 0 : value.term);
|
|
9576
9588
|
});
|
|
9577
9589
|
};
|
|
9578
9590
|
ImpactAssessmentsProductsComponent.prototype.loadDataState = function (dataState) {
|
|
9579
9591
|
return __awaiter(this, void 0, void 0, function () {
|
|
9580
|
-
var
|
|
9592
|
+
var _b, _c, _d;
|
|
9581
9593
|
var _this = this;
|
|
9582
|
-
return __generator(this, function (
|
|
9583
|
-
switch (
|
|
9594
|
+
return __generator(this, function (_e) {
|
|
9595
|
+
switch (_e.label) {
|
|
9584
9596
|
case 0:
|
|
9585
|
-
|
|
9586
|
-
|
|
9587
|
-
|
|
9588
|
-
if (
|
|
9597
|
+
_b = this.dataStateValues;
|
|
9598
|
+
_c = dataState;
|
|
9599
|
+
_d = this.dataStateValues[dataState];
|
|
9600
|
+
if (_d) return [3 /*break*/, 2];
|
|
9589
9601
|
return [4 /*yield*/, Promise.all(this.impactAssessments.map(function (node) { return _this.nodeService.get(Object.assign(Object.assign({}, node), { dataState: dataState })); }))];
|
|
9590
9602
|
case 1:
|
|
9591
|
-
|
|
9592
|
-
|
|
9603
|
+
_d = (_e.sent());
|
|
9604
|
+
_e.label = 2;
|
|
9593
9605
|
case 2:
|
|
9594
|
-
|
|
9606
|
+
_b[_c] = _d;
|
|
9595
9607
|
return [2 /*return*/];
|
|
9596
9608
|
}
|
|
9597
9609
|
});
|
|
@@ -9599,11 +9611,11 @@
|
|
|
9599
9611
|
};
|
|
9600
9612
|
ImpactAssessmentsProductsComponent.prototype.updateDataState = function () {
|
|
9601
9613
|
return __awaiter(this, void 0, void 0, function () {
|
|
9602
|
-
return __generator(this, function (
|
|
9603
|
-
switch (
|
|
9614
|
+
return __generator(this, function (_b) {
|
|
9615
|
+
switch (_b.label) {
|
|
9604
9616
|
case 0: return [4 /*yield*/, this.loadDataState(this.dataState)];
|
|
9605
9617
|
case 1:
|
|
9606
|
-
|
|
9618
|
+
_b.sent();
|
|
9607
9619
|
this.impactAssessments = this.dataStateValues[this.dataState].slice();
|
|
9608
9620
|
return [2 /*return*/, this.update()];
|
|
9609
9621
|
}
|
|
@@ -9616,14 +9628,14 @@
|
|
|
9616
9628
|
ImpactAssessmentsProductsComponent.prototype.impactName = function (impact) {
|
|
9617
9629
|
return impact.name || (impact.cycle ? this.cycleLabel(impact.cycle) : impact['@id']) || impact.id;
|
|
9618
9630
|
};
|
|
9619
|
-
ImpactAssessmentsProductsComponent.prototype.cycleLabel = function (
|
|
9620
|
-
var id =
|
|
9631
|
+
ImpactAssessmentsProductsComponent.prototype.cycleLabel = function (_b) {
|
|
9632
|
+
var id = _b["@id"], name = _b.name;
|
|
9621
9633
|
var _a;
|
|
9622
9634
|
return name || ((_a = (this.cycles || []).find(function (v) { return v['@id'] === id; })) === null || _a === void 0 ? void 0 : _a.name);
|
|
9623
9635
|
};
|
|
9624
9636
|
Object.defineProperty(ImpactAssessmentsProductsComponent.prototype, "enableBreakdown", {
|
|
9625
9637
|
get: function () {
|
|
9626
|
-
return !this.isOriginal && this.impactAssessments.length === 1 && this.key
|
|
9638
|
+
return !this.isOriginal && this.impactAssessments.length === 1 && this.key !== 'emissionsResourceUse';
|
|
9627
9639
|
},
|
|
9628
9640
|
enumerable: false,
|
|
9629
9641
|
configurable: true
|
|
@@ -9634,15 +9646,15 @@
|
|
|
9634
9646
|
// Recalculation logs
|
|
9635
9647
|
ImpactAssessmentsProductsComponent.prototype.showRecalculationLogs = function () {
|
|
9636
9648
|
return __awaiter(this, void 0, void 0, function () {
|
|
9637
|
-
return __generator(this, function (
|
|
9638
|
-
switch (
|
|
9649
|
+
return __generator(this, function (_b) {
|
|
9650
|
+
switch (_b.label) {
|
|
9639
9651
|
case 0:
|
|
9640
9652
|
this.loading = true;
|
|
9641
9653
|
// make sure original data is also loaded
|
|
9642
9654
|
return [4 /*yield*/, this.loadDataState(api.DataState.original)];
|
|
9643
9655
|
case 1:
|
|
9644
9656
|
// make sure original data is also loaded
|
|
9645
|
-
|
|
9657
|
+
_b.sent();
|
|
9646
9658
|
this.loading = false;
|
|
9647
9659
|
this.selectedView = View.logs;
|
|
9648
9660
|
return [2 /*return*/];
|
|
@@ -9885,6 +9897,7 @@
|
|
|
9885
9897
|
exports.filterError = filterError;
|
|
9886
9898
|
exports.filterParams = filterParams;
|
|
9887
9899
|
exports.findConfigModels = findConfigModels;
|
|
9900
|
+
exports.findModels = findModels;
|
|
9888
9901
|
exports.findProperty = findProperty;
|
|
9889
9902
|
exports.findPropertyById = findPropertyById;
|
|
9890
9903
|
exports.formatCustomErrorMessage = formatCustomErrorMessage;
|