@hestia-earth/ui-components 0.4.2 → 0.4.3
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 +109 -33
- package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
- package/common/common.module.d.ts +9 -8
- package/common/index.d.ts +1 -0
- package/common/is-object.pipe.d.ts +7 -0
- package/esm2015/common/common.module.js +5 -1
- package/esm2015/common/index.js +2 -1
- package/esm2015/common/is-object.pipe.js +16 -0
- package/esm2015/node/node-logs-models/node-logs-models.component.js +28 -21
- package/esm2015/node/node-logs-models/node-logs-models.model.js +61 -16
- package/fesm2015/hestia-earth-ui-components.js +93 -26
- package/fesm2015/hestia-earth-ui-components.js.map +1 -1
- package/node/node-logs-models/node-logs-models.component.d.ts +3 -2
- package/node/node-logs-models/node-logs-models.model.d.ts +2 -0
- package/package.json +1 -1
|
@@ -4152,6 +4152,23 @@
|
|
|
4152
4152
|
}]
|
|
4153
4153
|
}] });
|
|
4154
4154
|
|
|
4155
|
+
var IsObjectPipe = /** @class */ (function () {
|
|
4156
|
+
function IsObjectPipe() {
|
|
4157
|
+
}
|
|
4158
|
+
IsObjectPipe.prototype.transform = function (value) {
|
|
4159
|
+
return typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length > 0;
|
|
4160
|
+
};
|
|
4161
|
+
return IsObjectPipe;
|
|
4162
|
+
}());
|
|
4163
|
+
IsObjectPipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: IsObjectPipe, deps: [], target: i0__namespace.ɵɵFactoryTarget.Pipe });
|
|
4164
|
+
IsObjectPipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: IsObjectPipe, name: "isObject" });
|
|
4165
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: IsObjectPipe, decorators: [{
|
|
4166
|
+
type: i0.Pipe,
|
|
4167
|
+
args: [{
|
|
4168
|
+
name: 'isObject'
|
|
4169
|
+
}]
|
|
4170
|
+
}] });
|
|
4171
|
+
|
|
4155
4172
|
var orderBy$6 = require('lodash.orderby');
|
|
4156
4173
|
var SortByPipe = /** @class */ (function () {
|
|
4157
4174
|
function SortByPipe() {
|
|
@@ -4189,6 +4206,7 @@
|
|
|
4189
4206
|
ClickOutsideDirective,
|
|
4190
4207
|
GetPipe,
|
|
4191
4208
|
IsArrayPipe,
|
|
4209
|
+
IsObjectPipe,
|
|
4192
4210
|
SortByPipe
|
|
4193
4211
|
];
|
|
4194
4212
|
var HeCommonModule = /** @class */ (function () {
|
|
@@ -4214,6 +4232,7 @@
|
|
|
4214
4232
|
ClickOutsideDirective,
|
|
4215
4233
|
GetPipe,
|
|
4216
4234
|
IsArrayPipe,
|
|
4235
|
+
IsObjectPipe,
|
|
4217
4236
|
SortByPipe], imports: [i2.CommonModule, i1$1.FormsModule, i5.RouterModule,
|
|
4218
4237
|
i12.NgbTypeaheadModule, i12.NgbTooltipModule, i12.NgbPopoverModule,
|
|
4219
4238
|
i1$4.GoogleMapsModule,
|
|
@@ -4236,6 +4255,7 @@
|
|
|
4236
4255
|
ClickOutsideDirective,
|
|
4237
4256
|
GetPipe,
|
|
4238
4257
|
IsArrayPipe,
|
|
4258
|
+
IsObjectPipe,
|
|
4239
4259
|
SortByPipe] });
|
|
4240
4260
|
HeCommonModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: HeCommonModule, imports: [[
|
|
4241
4261
|
i2.CommonModule, i1$1.FormsModule, i5.RouterModule,
|
|
@@ -5720,7 +5740,6 @@
|
|
|
5720
5740
|
return propertyValues.length ? propertyValues.reduce(function (p, v) { return p + v; }, 0) : undefined;
|
|
5721
5741
|
};
|
|
5722
5742
|
var isRunOrchestrator = function (log) { return !('shouldRunOrchestrator' in log) || log.shouldRunOrchestrator; };
|
|
5723
|
-
var isBackground = function (log) { return (log === null || log === void 0 ? void 0 : log.methodTier) === schema.EmissionMethodTier.background; };
|
|
5724
5743
|
var hasLog = function (log, withOrchestrator) {
|
|
5725
5744
|
if (withOrchestrator === void 0) { withOrchestrator = true; }
|
|
5726
5745
|
return !!log && ('shouldRun' in log ||
|
|
@@ -5747,6 +5766,15 @@
|
|
|
5747
5766
|
})) === null || _a === void 0 ? void 0 : _a.value, id)
|
|
5748
5767
|
: '';
|
|
5749
5768
|
},
|
|
5769
|
+
transformation: function (values, _k, id) {
|
|
5770
|
+
var _a;
|
|
5771
|
+
return values.length
|
|
5772
|
+
? term.propertyValue((_a = values.find(function (_b) {
|
|
5773
|
+
var transformation = _b.transformation;
|
|
5774
|
+
return (transformation === null || transformation === void 0 ? void 0 : transformation['@id']) === id;
|
|
5775
|
+
})) === null || _a === void 0 ? void 0 : _a.value, id)
|
|
5776
|
+
: '';
|
|
5777
|
+
},
|
|
5750
5778
|
default: function (blankNodes, key) {
|
|
5751
5779
|
var value = (blankNodes === null || blankNodes === void 0 ? void 0 : blankNodes.length) ? blankNodes[0][key] : null;
|
|
5752
5780
|
return ['string', 'number', 'boolean', 'undefined'].includes(typeof value)
|
|
@@ -5757,6 +5785,10 @@
|
|
|
5757
5785
|
}
|
|
5758
5786
|
};
|
|
5759
5787
|
var blankNodeValue = function (blankNodes, key, id) { return blankNodeValueByKey[key in blankNodeValueByKey ? key : 'default'](blankNodes, key, id); };
|
|
5788
|
+
var subValueLogKey = function (_b) {
|
|
5789
|
+
var key = _b.key, id = _b.id;
|
|
5790
|
+
return key === 'transformation' ? key : (id || key || null);
|
|
5791
|
+
};
|
|
5760
5792
|
var logSubValue = function (logs, key, prop) { return logs[key][prop] ? (Array.isArray(logs[key][prop]) ?
|
|
5761
5793
|
logs[key][prop].map(function (id) { return ({ key: prop, id: id }); }) :
|
|
5762
5794
|
{ key: prop, id: logs[key][prop] }) : undefined; };
|
|
@@ -5767,15 +5799,47 @@
|
|
|
5767
5799
|
var model = _b.model;
|
|
5768
5800
|
return model;
|
|
5769
5801
|
}) }); }); };
|
|
5802
|
+
/**
|
|
5803
|
+
* Include transformation model (copy Emissions from Transformation to Cycle) as subValue.
|
|
5804
|
+
*
|
|
5805
|
+
* @param emissions
|
|
5806
|
+
* @returns
|
|
5807
|
+
*/
|
|
5808
|
+
var logEmissionTransformations = function (emissions) { return emissions.filter(function (_b) {
|
|
5809
|
+
var transformation = _b.transformation;
|
|
5810
|
+
return !!(transformation === null || transformation === void 0 ? void 0 : transformation['@id']);
|
|
5811
|
+
}).map(function (_b) {
|
|
5812
|
+
var transformation = _b.transformation;
|
|
5813
|
+
return ({
|
|
5814
|
+
id: transformation === null || transformation === void 0 ? void 0 : transformation['@id'],
|
|
5815
|
+
key: 'transformation',
|
|
5816
|
+
configModels: ['cycle']
|
|
5817
|
+
});
|
|
5818
|
+
}); };
|
|
5819
|
+
var includeCycleSubValue = function (subValues) { return subValues.some(function (v) { return v.key !== 'property'; }); };
|
|
5820
|
+
var cycleSubValue = function (_b) {
|
|
5821
|
+
var termId = _b.termId, configModels = _b.configModels, isRequired = _b.isRequired, subValues = _b.subValues, original = _b.original, recalculated = _b.recalculated;
|
|
5822
|
+
var originalValue = reduceValues(original.filter(function (v) { var _a; return !((_a = v.inputs) === null || _a === void 0 ? void 0 : _a.length) && !v.transformation; }), termId);
|
|
5823
|
+
var recalculatedValues = recalculated.filter(function (v) { var _a; return !((_a = v.inputs) === null || _a === void 0 ? void 0 : _a.length) && !v.transformation; });
|
|
5824
|
+
var recalculatedValue = reduceValues(recalculatedValues, termId);
|
|
5825
|
+
return includeCycleSubValue(subValues) && !utils.isEmpty(recalculatedValue) ? {
|
|
5826
|
+
key: 'cycle',
|
|
5827
|
+
configModels: configModels,
|
|
5828
|
+
isRequired: isRequired,
|
|
5829
|
+
originalValue: originalValue,
|
|
5830
|
+
recalculatedValue: recalculatedValue,
|
|
5831
|
+
isRecalculated: isRecalculated$1(recalculatedValues)
|
|
5832
|
+
} : null;
|
|
5833
|
+
};
|
|
5770
5834
|
var logSubValues = function (allLogs, logs, original, recalculated, models, _b) {
|
|
5771
5835
|
var nodeType = _b.nodeType, type = _b.type, termId = _b.termId;
|
|
5772
|
-
return mergeSubValues(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(Object.keys(logs)
|
|
5836
|
+
return mergeSubValues(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(Object.keys(logs)
|
|
5773
5837
|
.filter(function (id) { return logs[id].isProperty; })
|
|
5774
5838
|
.map(function (id) { return ({
|
|
5775
5839
|
id: id,
|
|
5776
5840
|
key: 'property',
|
|
5777
5841
|
configModels: (logs[id].models || []).filter(function (v) { return hasLog(logs[id][v]); })
|
|
5778
|
-
}); }))), __read(Object.keys(logs).flatMap(function (key) { return [
|
|
5842
|
+
}); }))), __read((type === schema.SchemaType.Emission ? logEmissionTransformations(recalculated) : []))), __read(Object.keys(logs).flatMap(function (key) { return [
|
|
5779
5843
|
logSubValue(logs, key, 'input'),
|
|
5780
5844
|
logSubValue(logs, key, 'property')
|
|
5781
5845
|
]
|
|
@@ -5783,9 +5847,9 @@
|
|
|
5783
5847
|
.filter(Boolean)
|
|
5784
5848
|
.map(function (v) { return (Object.assign(Object.assign({}, v), { configModels: v.configModels || [key] })); }); }))), __read(logProperties(original, models))), __read(logProperties(recalculated, models))))
|
|
5785
5849
|
.map(function (_b) {
|
|
5786
|
-
var key = _b.key, id = _b.id, configModels = _b.configModels;
|
|
5787
|
-
|
|
5788
|
-
|
|
5850
|
+
var key = _b.key, id = _b.id, configModels = _b.configModels, originalValue = _b.originalValue, recalculatedValue = _b.recalculatedValue;
|
|
5851
|
+
originalValue = originalValue || blankNodeValue(original, key, id);
|
|
5852
|
+
recalculatedValue = recalculatedValue || blankNodeValue(recalculated, key, id);
|
|
5789
5853
|
return {
|
|
5790
5854
|
key: key,
|
|
5791
5855
|
id: id,
|
|
@@ -5797,13 +5861,12 @@
|
|
|
5797
5861
|
};
|
|
5798
5862
|
})
|
|
5799
5863
|
.filter(function (v) { return v.configModels.length > 0; })
|
|
5800
|
-
.map(function (v) { return v.key === '
|
|
5864
|
+
.map(function (v) { return v.key === 'input' ? dataWithConfigModelLogs(allLogs)(v) : dataWithConfigModelLogs(logs)(v); });
|
|
5801
5865
|
};
|
|
5802
|
-
// const hasKey = (blankNodes: blankNode[], key: string) => (blankNodes || []).some(n => key in n);
|
|
5803
5866
|
var logKeys = function (logs, original, recalculated, models, _b) {
|
|
5804
5867
|
var nodeType = _b.nodeType, type = _b.type, termId = _b.termId;
|
|
5805
5868
|
return Object.keys(logs)
|
|
5806
|
-
.filter(function (key) { return logs[key].isKey; })
|
|
5869
|
+
.filter(function (key) { return logs[key].isKey && key !== 'transformation'; })
|
|
5807
5870
|
.map(function (key) { return ({
|
|
5808
5871
|
key: key,
|
|
5809
5872
|
configModels: (logs[key].models || [])
|
|
@@ -5859,14 +5922,15 @@
|
|
|
5859
5922
|
// handle "input.price"
|
|
5860
5923
|
findMatchingModel(models, modelKeyParams(node, (type === null || type === void 0 ? void 0 : type.toLowerCase()) + "." + (subValue === null || subValue === void 0 ? void 0 : subValue.key))) ||
|
|
5861
5924
|
// handle "input.hestiaAggregatedData"
|
|
5862
|
-
findMatchingModel(models, modelKeyParams(node, (type === null || type === void 0 ? void 0 : type.toLowerCase()) + "." + methodId))
|
|
5925
|
+
findMatchingModel(models, modelKeyParams(node, (type === null || type === void 0 ? void 0 : type.toLowerCase()) + "." + methodId)) ||
|
|
5926
|
+
// handle "transformation"
|
|
5927
|
+
findMatchingModel(models, modelKeyParams(node, subValue === null || subValue === void 0 ? void 0 : subValue.key))
|
|
5863
5928
|
};
|
|
5864
5929
|
};
|
|
5865
5930
|
};
|
|
5866
5931
|
var configModelWithLogs = function (data, logs) { return function (model) { return (Object.assign(Object.assign({}, model), { logs: logs === null || logs === void 0 ? void 0 : logs[model.methodId], status: logStatus(data, logs === null || logs === void 0 ? void 0 : logs[model.methodId]), showLogs: hasLogDetails(data, logs === null || logs === void 0 ? void 0 : logs[model.methodId]) })); }; };
|
|
5867
5932
|
var dataWithConfigModelLogs = function (logs) { return function (data) {
|
|
5868
|
-
var subLogKey = data
|
|
5869
|
-
data.id || data.key : null;
|
|
5933
|
+
var subLogKey = subValueLogKey(data);
|
|
5870
5934
|
var log = subLogKey ? logs[subLogKey] : logs;
|
|
5871
5935
|
return Object.assign(Object.assign({}, data), { configModels: data.configModels.map(function (model) { return Array.isArray(model) ? model.map(configModelWithLogs(data, log)) : configModelWithLogs(data, log)(model); }) });
|
|
5872
5936
|
}; };
|
|
@@ -5913,18 +5977,15 @@
|
|
|
5913
5977
|
var recalculated = recalculatedValues.filter(function (v) { return termId === v.term['@id']; });
|
|
5914
5978
|
var hasData = !!original.length || !!recalculated.length || Object.keys(termLogs).length > 0;
|
|
5915
5979
|
var configModelsData = { nodeType: nodeType, type: type, termId: termId, termType: termType };
|
|
5916
|
-
var configModels = groupParallelModels(config, termId, nodeKey, utils.unique(__spreadArray(
|
|
5917
|
-
var model = _b.model;
|
|
5918
|
-
return model;
|
|
5919
|
-
})))).map(configModelWithDocs(models, configModelsData)));
|
|
5980
|
+
var configModels = groupParallelModels(config, termId, nodeKey, utils.unique(__spreadArray([], __read((termLogs.models || []).filter(function (key) { return isModelLog(termLogs[key]); })))).map(configModelWithDocs(models, configModelsData)));
|
|
5920
5981
|
var keys = logKeys(termLogs, original, recalculated, models, configModelsData);
|
|
5921
5982
|
var subValues = logSubValues(logs, termLogs, original, recalculated, models, configModelsData);
|
|
5922
5983
|
var isRequired = !Object.values(termLogs)
|
|
5923
|
-
.filter(function (v) { return typeof v === 'object' && !Array.isArray(v); })
|
|
5984
|
+
.filter(function (v) { return typeof v === 'object' && !Array.isArray(v) && !v.isKey; })
|
|
5924
5985
|
// ignore models that were never going to run
|
|
5925
5986
|
.filter(isRunOrchestrator)
|
|
5926
5987
|
.every(function (v) { return v.runRequired === false; });
|
|
5927
|
-
|
|
5988
|
+
var nodeLog = dataWithConfigModelLogs(termLogs)({
|
|
5928
5989
|
isOpen: true,
|
|
5929
5990
|
canOpen: keys.length > 0 || subValues.length > 0,
|
|
5930
5991
|
termId: termId,
|
|
@@ -5946,6 +6007,11 @@
|
|
|
5946
6007
|
originalValueByMethodId: groupParallelValues(original, configModels[0], termId),
|
|
5947
6008
|
recalculatedValueByMethodId: groupParallelValues(recalculated, configModels[0], termId)
|
|
5948
6009
|
});
|
|
6010
|
+
var subValue = cycleSubValue(nodeLog);
|
|
6011
|
+
return subValue
|
|
6012
|
+
? Object.assign(Object.assign({}, nodeLog), { modelsInSubValues: true, subValues: __spreadArray([
|
|
6013
|
+
subValue
|
|
6014
|
+
], __read(subValues)) }) : nodeLog;
|
|
5949
6015
|
};
|
|
5950
6016
|
};
|
|
5951
6017
|
var modelCount = function (blankNodeLogs) { return Math.max.apply(Math.max, __spreadArray([
|
|
@@ -5953,6 +6019,12 @@
|
|
|
5953
6019
|
], __read(blankNodeLogs.flatMap(function (v) { return __spreadArray(__spreadArray([
|
|
5954
6020
|
v.configModels.length
|
|
5955
6021
|
], __read((v.subValues.map(function (s) { var _a; return ((_a = s.configModels) === null || _a === void 0 ? void 0 : _a.length) || 0; })))), __read((v.keys.map(function (s) { var _a; return ((_a = s.configModels) === null || _a === void 0 ? void 0 : _a.length) || 0; })))); })))); };
|
|
6022
|
+
var logValueArray = function (value) { return value.includes(';') ?
|
|
6023
|
+
value.split(';').flatMap(function (v) {
|
|
6024
|
+
var res = v.split('_').map(function (vv) { return vv.split(':'); });
|
|
6025
|
+
return res.length <= 1 ? res.flat() : Object.fromEntries(res);
|
|
6026
|
+
}) :
|
|
6027
|
+
null; };
|
|
5956
6028
|
|
|
5957
6029
|
var _b, _c$1;
|
|
5958
6030
|
var nodeTypesLowerCase = Object.values(schema.NodeType).map(function (v) { return v.toLowerCase(); });
|
|
@@ -5970,16 +6042,17 @@
|
|
|
5970
6042
|
_c$1[exports.LogStatus.dataProvided] = 'dark',
|
|
5971
6043
|
_c$1[exports.LogStatus.notRequired] = 'grey',
|
|
5972
6044
|
_c$1);
|
|
5973
|
-
var methodIdLabel = function (methodId) { return methodId
|
|
5974
|
-
({
|
|
5975
|
-
transformation: 'Data From Transformation'
|
|
5976
|
-
|
|
5977
|
-
|
|
5978
|
-
|
|
5979
|
-
|
|
5980
|
-
|
|
5981
|
-
|
|
5982
|
-
|
|
6045
|
+
var methodIdLabel = function (methodId, model) { return (model === null || model === void 0 ? void 0 : model.modelKey) && methodId === 'cycle'
|
|
6046
|
+
? ({
|
|
6047
|
+
transformation: 'Data From Transformation'
|
|
6048
|
+
})[model.modelKey]
|
|
6049
|
+
: methodId
|
|
6050
|
+
? ({
|
|
6051
|
+
transformation: 'Data From Transformation',
|
|
6052
|
+
impact_assessment: 'Data From Cycle'
|
|
6053
|
+
})[methodId] || utils.keyToLabel(methodId)
|
|
6054
|
+
: ''; };
|
|
6055
|
+
var getModelsAt = function (log, index) { return ('modelsInSubValues' in log ? !log.modelsInSubValues || !log.isOpen : true) && log.configModels[index]; };
|
|
5983
6056
|
var requirementKeys = function (requirements) { return Object.keys(requirements).filter(function (k) { return !nodeTypesLowerCase.includes(k); }); };
|
|
5984
6057
|
var requirementColor = function (value) { return !value || ['None', 'False', '0', '0.0'].includes(value) ? 'danger' : 'white'; };
|
|
5985
6058
|
var NodeLogsModelsComponent = /** @class */ (function () {
|
|
@@ -6003,6 +6076,7 @@
|
|
|
6003
6076
|
this.getModelsAt = getModelsAt;
|
|
6004
6077
|
this.requirementKeys = requirementKeys;
|
|
6005
6078
|
this.requirementColor = requirementColor;
|
|
6079
|
+
this.logValueArray = logValueArray;
|
|
6006
6080
|
this.loading = true;
|
|
6007
6081
|
this.blankNodes = [];
|
|
6008
6082
|
this.methodModelsCount = 0;
|
|
@@ -6096,23 +6170,23 @@
|
|
|
6096
6170
|
var _this = this;
|
|
6097
6171
|
setTimeout(function () {
|
|
6098
6172
|
_this.blankNodes = _this.allBlankNodes.filter(function (_b) {
|
|
6099
|
-
var isRequired = _b.isRequired, name = _b.term.name;
|
|
6173
|
+
var isRequired = _b.isRequired, name = _b.term.name, subValues = _b.subValues;
|
|
6100
6174
|
var _a;
|
|
6101
6175
|
return _this.term
|
|
6102
6176
|
? name.toLowerCase().includes(_this.term.toLowerCase())
|
|
6103
|
-
: !_this.onlyRequired || !((_a = _this.filterTermTypes) === null || _a === void 0 ? void 0 : _a.length) || isRequired;
|
|
6177
|
+
: !_this.onlyRequired || !((_a = _this.filterTermTypes) === null || _a === void 0 ? void 0 : _a.length) || isRequired || subValues.some(function (v) { return v.isRequired; });
|
|
6104
6178
|
});
|
|
6105
6179
|
});
|
|
6106
6180
|
};
|
|
6107
6181
|
NodeLogsModelsComponent.prototype.methodName = function (_b) {
|
|
6108
|
-
var methodId = _b.methodId;
|
|
6182
|
+
var methodId = _b.methodId, model = _b.model;
|
|
6109
6183
|
var _a;
|
|
6110
|
-
return ((_a = this.methodsById[methodId]) === null || _a === void 0 ? void 0 : _a.name) || methodIdLabel(methodId);
|
|
6184
|
+
return ((_a = this.methodsById[methodId]) === null || _a === void 0 ? void 0 : _a.name) || methodIdLabel(methodId, model);
|
|
6111
6185
|
};
|
|
6112
6186
|
return NodeLogsModelsComponent;
|
|
6113
6187
|
}());
|
|
6114
6188
|
NodeLogsModelsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: NodeLogsModelsComponent, deps: [{ token: HeNodeService }, { token: HeSearchService }, { token: HeEngineService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6115
|
-
NodeLogsModelsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeLogsModelsComponent, selector: "he-node-logs-models", inputs: { node: "node", nodeKey: "nodeKey", includeAllModels: "includeAllModels", originalValues: "originalValues", recalculatedValues: "recalculatedValues", terms: "terms", filterTermTypes: "filterTermTypes", logsKey: "logsKey" }, 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 <ng-template #defaultOriginalValue>\n <span>{{blankNode.originalValue | precision:3 | default:'-'}}</span>\n </ng-template>\n <ng-container *ngIf=\"blankNode.allParallel; else defaultOriginalValue\">\n <div *ngFor=\"let model of blankNode.configModels[0]\">{{blankNode.originalValueByMethodId[model.methodId] | precision:3 | default:'-'}}</div>\n </ng-container>\n </td>\n <td>\n <ng-container *ngIf=\"!blankNode.isOriginal || blankNode.isRecalculated; else notRecalculated\">\n <ng-template #defaultRecalculatedValue>\n <span>{{blankNode.recalculatedValue | precision:3 | default:'-'}}</span>\n </ng-template>\n <ng-container *ngIf=\"blankNode.allParallel; else defaultRecalculatedValue\">\n <div *ngFor=\"let model of blankNode.configModels[0]\">{{blankNode.recalculatedValueByMethodId[model.methodId] | precision:3 | default:'-'}}</div>\n </ng-container>\n </ng-container>\n </td>\n <td class=\"is-nowrap\">\n <ng-template #defaultDeltaValue>\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 </ng-template>\n <ng-container *ngIf=\"blankNode.allParallel; else defaultDeltaValue\">\n <div *ngFor=\"let model of blankNode.configModels[0]\">\n <he-blank-node-value-delta *ngIf=\"blankNode.originalValueByMethodId[model.methodId] !== null && blankNode.recalculatedValueByMethodId[model.methodId] !== null; else noValue\"\n [value]=\"blankNode.recalculatedValueByMethodId[model.methodId]\"\n [originalValue]=\"blankNode.originalValueByMethodId[model.methodId]\"\n ></he-blank-node-value-delta>\n </div>\n </ng-container>\n </td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {data: blankNode}\"></ng-container>\n </tr>\n\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 || subValue.key === 'impactAssessment'; else notRecalculated\">\n {{subValue.recalculatedValue | precision:3 | default:'-'}}\n </span>\n </td>\n <td>-</td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {data: subValue}\"></ng-container>\n </tr>\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\">\n <span *ngIf=\"subValue.key === 'input'\">{{blankNode.term?.units}}</span>\n </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: {data: 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-data=\"data\">\n <td class=\"blank-node-index-{{i}}\" *ngFor=\"let c of methodModelsCount | times; let i = index\">\n <ng-container *ngIf=\"getModelsAt(data, i); let models; else noValue\">\n <ng-template #modelSerie>\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {model:models}\"></ng-container>\n </ng-template>\n <div *ngIf=\"models | isArray; else modelSerie\">\n <p *ngFor=\"let model of models\">\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {model}\"></ng-container>\n </p>\n </div>\n </ng-container>\n </td>\n</ng-template>\n\n<ng-template #blankNodeModel let-model=\"model\">\n <span\n [class.trigger-popover]=\"model.showLogs\"\n [ngbPopover]=\"logDetails\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"p.isOpen() ? p.close() : (model.showLogs ? p.open({ logs: model.logs }) : null)\"\n >\n <span class=\"is-capitalized\">{{methodName(model)}}</span>\n <span class=\"pl-1\" *ngIf=\"model.logs?.methodTier\">[{{model.logs.methodTier}}]</span>\n <span class=\"pl-1 has-text-{{logColor[model.status]}}\">\n <fa-icon [icon]=\"logIcon[model.status]\"></fa-icon>\n </span>\n <span class=\"pl-2\" *ngIf=\"model.model\">\n (<ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model.model}\"></ng-container>)\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\">Optional data missing:</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\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-1\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\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: i12__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: i12__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 } });
|
|
6189
|
+
NodeLogsModelsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeLogsModelsComponent, selector: "he-node-logs-models", inputs: { node: "node", nodeKey: "nodeKey", includeAllModels: "includeAllModels", originalValues: "originalValues", recalculatedValues: "recalculatedValues", terms: "terms", filterTermTypes: "filterTermTypes", logsKey: "logsKey" }, 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 <ng-template #defaultOriginalValue>\n <span>{{blankNode.originalValue | precision:3 | default:'-'}}</span>\n </ng-template>\n <ng-container *ngIf=\"blankNode.allParallel; else defaultOriginalValue\">\n <div *ngFor=\"let model of blankNode.configModels[0]\">{{blankNode.originalValueByMethodId[model.methodId] | precision:3 | default:'-'}}</div>\n </ng-container>\n </td>\n <td>\n <ng-container *ngIf=\"!blankNode.isOriginal || blankNode.isRecalculated; else notRecalculated\">\n <ng-template #defaultRecalculatedValue>\n <span>{{blankNode.recalculatedValue | precision:3 | default:'-'}}</span>\n </ng-template>\n <ng-container *ngIf=\"blankNode.allParallel; else defaultRecalculatedValue\">\n <div *ngFor=\"let model of blankNode.configModels[0]\">{{blankNode.recalculatedValueByMethodId[model.methodId] | precision:3 | default:'-'}}</div>\n </ng-container>\n </ng-container>\n </td>\n <td class=\"is-nowrap\">\n <ng-template #defaultDeltaValue>\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 </ng-template>\n <ng-container *ngIf=\"blankNode.allParallel; else defaultDeltaValue\">\n <div *ngFor=\"let model of blankNode.configModels[0]\">\n <he-blank-node-value-delta *ngIf=\"blankNode.originalValueByMethodId[model.methodId] !== null && blankNode.recalculatedValueByMethodId[model.methodId] !== null; else noValue\"\n [value]=\"blankNode.recalculatedValueByMethodId[model.methodId]\"\n [originalValue]=\"blankNode.originalValueByMethodId[model.methodId]\"\n ></he-blank-node-value-delta>\n </div>\n </ng-container>\n </td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {data: blankNode}\"></ng-container>\n </tr>\n\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 || subValue.key === 'impactAssessment'; else notRecalculated\">\n {{subValue.recalculatedValue | precision:3 | default:'-'}}\n </span>\n </td>\n <td>-</td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {data: subValue}\"></ng-container>\n </tr>\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\">\n <span *ngIf=\"subValue.key === 'input'\">{{blankNode.term?.units}}</span>\n </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: {data: 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-data=\"data\">\n <td class=\"blank-node-index-{{i}}\" *ngFor=\"let c of methodModelsCount | times; let i = index\">\n <ng-container *ngIf=\"getModelsAt(data, i); let models; else noValue\">\n <ng-template #modelSerie>\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {model:models}\"></ng-container>\n </ng-template>\n <div *ngIf=\"models | isArray; else modelSerie\">\n <p *ngFor=\"let model of models\">\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {model}\"></ng-container>\n </p>\n </div>\n </ng-container>\n </td>\n</ng-template>\n\n<ng-template #blankNodeModel let-model=\"model\">\n <span\n [class.trigger-popover]=\"model.showLogs\"\n [ngbPopover]=\"logDetails\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"p.isOpen() ? p.close() : (model.showLogs ? p.open({ logs: model.logs }) : null)\"\n >\n <span class=\"is-capitalized\">{{methodName(model)}}</span>\n <span class=\"pl-1\" *ngIf=\"model.logs?.methodTier\">[{{model.logs.methodTier}}]</span>\n <span class=\"pl-1 has-text-{{logColor[model.status]}}\">\n <fa-icon [icon]=\"logIcon[model.status]\"></fa-icon>\n </span>\n <span class=\"pl-1\" *ngIf=\"model.model\">\n (<ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model.model}\"></ng-container>)\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 <div class=\"is-requirement\" *ngFor=\"let key of requirementKeys(logs.requirements)\">\n <ng-container *ngTemplateOutlet=\"logLine; context:{key, value:logs.requirements[key]}\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"logs?.logs\">\n <div class=\"is-log\" *ngFor=\"let key of logs.logs | keys\">\n <ng-container *ngTemplateOutlet=\"logLine; context:key\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"logs?.missingLookups?.length\">\n <p class=\"mt-2\">Optional data missing:</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\n<ng-template #logLine let-key=\"key\" let-value=\"value\">\n <ng-container *bindOnce=\"value\">\n <span class=\"pr-1 is-inline-block is-align-middle\">{{key}}:</span>\n <ng-template #singleValue>\n <span class=\"is-inline-block is-align-middle\">{{value}}</span>\n </ng-template>\n <div class=\"is-inline-block is-align-middle\" *ngIf=\"logValueArray(value); let valueArray; else singleValue\">\n <table class=\"table is-bordered has-background-black has-text-white\">\n <thead *ngIf=\"valueArray[0] | isObject\">\n <tr>\n <th class=\"has-text-white\" *ngFor=\"let v of valueArray[0] | keys\">{{v.key}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let v of valueArray\">\n <ng-template #singleArrayValue>\n <td>{{v}}</td>\n </ng-template>\n <ng-container *ngIf=\"v | isObject; else singleArrayValue\">\n <td *ngFor=\"let vv of v | keys\">{{vv.value}}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </div>\n </ng-container>\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-1\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\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: i12__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: i12__namespace.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { type: BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }], pipes: { "times": TimesPipe, "default": DefaultPipe, "precision": PrecisionPipe, "keyToLabel": KeyToLabelPipe, "keys": KeysPipe, "pluralize": PluralizePipe, "isArray": IsArrayPipe, "isObject": IsObjectPipe } });
|
|
6116
6190
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: NodeLogsModelsComponent, decorators: [{
|
|
6117
6191
|
type: i0.Component,
|
|
6118
6192
|
args: [{
|
|
@@ -10118,6 +10192,7 @@
|
|
|
10118
10192
|
exports.ImpactAssessmentsProductsComponent = ImpactAssessmentsProductsComponent;
|
|
10119
10193
|
exports.ImpactAssessmentsProductsLogsComponent = ImpactAssessmentsProductsLogsComponent;
|
|
10120
10194
|
exports.IsArrayPipe = IsArrayPipe;
|
|
10195
|
+
exports.IsObjectPipe = IsObjectPipe;
|
|
10121
10196
|
exports.IssueConfirmComponent = IssueConfirmComponent;
|
|
10122
10197
|
exports.KeyToLabelPipe = KeyToLabelPipe;
|
|
10123
10198
|
exports.KeysPipe = KeysPipe;
|
|
@@ -10217,6 +10292,7 @@
|
|
|
10217
10292
|
exports.linkTypeEnabled = linkTypeEnabled;
|
|
10218
10293
|
exports.listColor = listColor;
|
|
10219
10294
|
exports.locationQuery = locationQuery;
|
|
10295
|
+
exports.logValueArray = logValueArray;
|
|
10220
10296
|
exports.logsKey = logsKey;
|
|
10221
10297
|
exports.lookupUrl = lookupUrl;
|
|
10222
10298
|
exports.lookups = lookups;
|