@hestia-earth/ui-components 0.1.5 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/hestia-earth-ui-components.umd.js +189 -87
- package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
- package/common/common.module.d.ts +8 -7
- package/common/index.d.ts +1 -0
- package/common/issue-confirm/issue-confirm.component.d.ts +6 -3
- package/common/sort-by.pipe.d.ts +7 -0
- package/common/utils.d.ts +1 -0
- package/cycles/cycles-practices/cycles-practices.component.d.ts +1 -0
- package/cycles/cycles-practices-timeline/cycles-practices-timeline.component.d.ts +14 -0
- package/cycles/cycles.module.d.ts +7 -6
- package/cycles/index.d.ts +1 -0
- package/esm2015/common/blank-node-state-notice/blank-node-state-notice.component.js +2 -2
- package/esm2015/common/common.module.js +8 -4
- package/esm2015/common/index.js +2 -1
- package/esm2015/common/issue-confirm/issue-confirm.component.js +9 -2
- package/esm2015/common/sort-by.pipe.js +17 -0
- package/esm2015/common/utils.js +2 -1
- package/esm2015/cycles/cycles-practices/cycles-practices.component.js +12 -10
- package/esm2015/cycles/cycles-practices-timeline/cycles-practices-timeline.component.js +36 -0
- package/esm2015/cycles/cycles.module.js +5 -1
- package/esm2015/cycles/index.js +2 -1
- package/esm2015/files/files-error.model.js +33 -3
- package/esm2015/fontawesome/fontawesome.module.js +3 -3
- package/esm2015/node/node-logs-models/node-logs-models.component.js +2 -2
- package/esm2015/node/node-value-details/node-value-details.component.js +2 -2
- package/esm2015/terms/terms.model.js +4 -3
- package/fesm2015/hestia-earth-ui-components.js +107 -15
- package/fesm2015/hestia-earth-ui-components.js.map +1 -1
- package/files/files-error.model.d.ts +1 -1
- package/package.json +7 -7
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
// free-regular
|
|
393
393
|
freeRegularSvgIcons.faClone, freeRegularSvgIcons.faCircle, freeRegularSvgIcons.faIdBadge,
|
|
394
394
|
// free-solid
|
|
395
|
-
freeSolidSvgIcons.faAngleDoubleLeft, freeSolidSvgIcons.faAngleDoubleRight, freeSolidSvgIcons.faAngleDown, freeSolidSvgIcons.faAngleLeft, freeSolidSvgIcons.faAngleRight, freeSolidSvgIcons.faBookOpen, freeSolidSvgIcons.faBuilding, freeSolidSvgIcons.faCalculator, freeSolidSvgIcons.faChartBar, freeSolidSvgIcons.faCheck, freeSolidSvgIcons.faCircle, freeSolidSvgIcons.faClipboard, freeSolidSvgIcons.faClipboardList, freeSolidSvgIcons.faClone, freeSolidSvgIcons.faComments, freeSolidSvgIcons.faDownload, freeSolidSvgIcons.faDotCircle, freeSolidSvgIcons.faDrawPolygon, freeSolidSvgIcons.faEdit, freeSolidSvgIcons.faEllipsisV, freeSolidSvgIcons.faExclamationTriangle, freeSolidSvgIcons.faExternalLinkAlt, freeSolidSvgIcons.faFilter, freeSolidSvgIcons.faList, freeSolidSvgIcons.faLongArrowAltDown, freeSolidSvgIcons.faLongArrowAltUp, freeSolidSvgIcons.faLongArrowAltLeft, freeSolidSvgIcons.faLongArrowAltRight, freeSolidSvgIcons.faMap, freeSolidSvgIcons.faMapMarked, freeSolidSvgIcons.faMapMarkedAlt, freeSolidSvgIcons.faPlus, freeSolidSvgIcons.faPlusCircle, freeSolidSvgIcons.faSearch, freeSolidSvgIcons.faSeedling, freeSolidSvgIcons.faSpellCheck, freeSolidSvgIcons.faSpinner, freeSolidSvgIcons.faTimes, freeSolidSvgIcons.faUser);
|
|
395
|
+
freeSolidSvgIcons.faAngleDoubleLeft, freeSolidSvgIcons.faAngleDoubleRight, freeSolidSvgIcons.faAngleDown, freeSolidSvgIcons.faAngleLeft, freeSolidSvgIcons.faAngleRight, freeSolidSvgIcons.faBookOpen, freeSolidSvgIcons.faBuilding, freeSolidSvgIcons.faCalculator, freeSolidSvgIcons.faChartBar, freeSolidSvgIcons.faCheck, freeSolidSvgIcons.faCircle, freeSolidSvgIcons.faClipboard, freeSolidSvgIcons.faClipboardList, freeSolidSvgIcons.faClone, freeSolidSvgIcons.faComments, freeSolidSvgIcons.faDownload, freeSolidSvgIcons.faDotCircle, freeSolidSvgIcons.faDrawPolygon, freeSolidSvgIcons.faEdit, freeSolidSvgIcons.faEllipsisV, freeSolidSvgIcons.faExclamationTriangle, freeSolidSvgIcons.faExternalLinkAlt, freeSolidSvgIcons.faFilter, freeSolidSvgIcons.faList, freeSolidSvgIcons.faListAlt, freeSolidSvgIcons.faLongArrowAltDown, freeSolidSvgIcons.faLongArrowAltUp, freeSolidSvgIcons.faLongArrowAltLeft, freeSolidSvgIcons.faLongArrowAltRight, freeSolidSvgIcons.faMap, freeSolidSvgIcons.faMapMarked, freeSolidSvgIcons.faMapMarkedAlt, freeSolidSvgIcons.faPlus, freeSolidSvgIcons.faPlusCircle, freeSolidSvgIcons.faSearch, freeSolidSvgIcons.faSeedling, freeSolidSvgIcons.faSpellCheck, freeSolidSvgIcons.faSpinner, freeSolidSvgIcons.faTimes, freeSolidSvgIcons.faUser);
|
|
396
396
|
}
|
|
397
397
|
return HeFontawesomeModule;
|
|
398
398
|
}());
|
|
@@ -525,6 +525,7 @@
|
|
|
525
525
|
var isEqual = function (a, b) { return JSON.stringify(a) === JSON.stringify(b); };
|
|
526
526
|
exports.Repository = void 0;
|
|
527
527
|
(function (Repository) {
|
|
528
|
+
Repository["frontend"] = "hestia-front-end";
|
|
528
529
|
Repository["glossary"] = "hestia-glossary";
|
|
529
530
|
Repository["models"] = "hestia-engine-models";
|
|
530
531
|
Repository["orchestrator"] = "hestia-engine-orchestrator";
|
|
@@ -565,10 +566,16 @@
|
|
|
565
566
|
var IssueConfirmComponent = /** @class */ (function () {
|
|
566
567
|
function IssueConfirmComponent() {
|
|
567
568
|
this.title = 'Submit Feedback';
|
|
569
|
+
this.isCommunity = false;
|
|
568
570
|
this.closed = new i0.EventEmitter();
|
|
569
571
|
this.Repository = exports.Repository;
|
|
570
572
|
this.Template = exports.Template;
|
|
573
|
+
this.repositories = Object.values(exports.Repository);
|
|
571
574
|
}
|
|
575
|
+
IssueConfirmComponent.prototype.ngOnChanges = function () {
|
|
576
|
+
var _this = this;
|
|
577
|
+
this.repositories = Object.values(exports.Repository).filter(function (value) { return value !== exports.Repository.community || _this.isCommunity; });
|
|
578
|
+
};
|
|
572
579
|
Object.defineProperty(IssueConfirmComponent.prototype, "issueUrl", {
|
|
573
580
|
get: function () {
|
|
574
581
|
return this.repository && this.template ?
|
|
@@ -581,7 +588,7 @@
|
|
|
581
588
|
return IssueConfirmComponent;
|
|
582
589
|
}());
|
|
583
590
|
IssueConfirmComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: IssueConfirmComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
584
|
-
IssueConfirmComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: IssueConfirmComponent, selector: "he-issue-confirm", inputs: { title: "title", repository: "repository", template: "template" }, outputs: { closed: "closed" }, ngImport: i0__namespace, template: "<div class=\"modal is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">{{title}}</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(false)\"></button>\n </header>\n <section class=\"modal-card-body\">\n <p class=\"mb-2\">Please select the type of issue from the list below to start:</p>\n\n <div class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"repository\">Category</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select [(ngModel)]=\"repository\" name=\"repository\" required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n <option *ngFor=\"let
|
|
591
|
+
IssueConfirmComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: IssueConfirmComponent, selector: "he-issue-confirm", inputs: { title: "title", repository: "repository", template: "template", isCommunity: "isCommunity" }, outputs: { closed: "closed" }, usesOnChanges: true, ngImport: i0__namespace, template: "<div class=\"modal is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">{{title}}</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(false)\"></button>\n </header>\n <section class=\"modal-card-body\">\n <p class=\"mb-2\">Please select the type of issue from the list below to start:</p>\n\n <div class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"repository\">Category</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select [(ngModel)]=\"repository\" name=\"repository\" required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n <option *ngFor=\"let repo of repositories\" [value]=\"repo\">\n <ng-container [ngSwitch]=\"repo\">\n <ng-container *ngSwitchCase=\"Repository.glossary\">Glossary of terms / lookup issues</ng-container>\n <ng-container *ngSwitchCase=\"Repository.models\">Calculation issues</ng-container>\n <ng-container *ngSwitchCase=\"Repository.orchestrator\">Orchestration issues</ng-container>\n <ng-container *ngSwitchCase=\"Repository.community\">UI/UX or API issues</ng-container>\n <ng-container *ngSwitchCase=\"Repository.poorenemeck\">Conversion from P&N Spreadsheet</ng-container>\n <ng-container *ngSwitchCase=\"Repository.frontend\">General website isssues (Download, Upload, etc.)</ng-container>\n </ng-container>\n </option>\n </select>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"repository\" class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"template\">Issue</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select [(ngModel)]=\"template\" name=\"template\" required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n <option *ngFor=\"let t of Template | keys\" [value]=\"t.value\">\n <ng-container [ngSwitch]=\"t.value\">\n <ng-container *ngSwitchCase=\"Template.bug\">I found a bug</ng-container>\n <ng-container *ngSwitchCase=\"Template.feature\">I would like a new feature</ng-container>\n </ng-container>\n </option>\n </select>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <p *ngIf=\"issueUrl\">\n <span>Please report the issue on Gitlab using</span>\n <a class=\"pl-1\" [href]=\"issueUrl\" target=\"_blank\">this link</a>.\n </p>\n </section>\n </div>\n</div>\n", styles: [""], 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { 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: i1__namespace$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1__namespace$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "keys": KeysPipe } });
|
|
585
592
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: IssueConfirmComponent, decorators: [{
|
|
586
593
|
type: i0.Component,
|
|
587
594
|
args: [{
|
|
@@ -595,6 +602,8 @@
|
|
|
595
602
|
type: i0.Input
|
|
596
603
|
}], template: [{
|
|
597
604
|
type: i0.Input
|
|
605
|
+
}], isCommunity: [{
|
|
606
|
+
type: i0.Input
|
|
598
607
|
}], closed: [{
|
|
599
608
|
type: i0.Output
|
|
600
609
|
}] } });
|
|
@@ -874,7 +883,6 @@
|
|
|
874
883
|
children: termTypesToChildren([
|
|
875
884
|
schema.TermTermType.animalManagement,
|
|
876
885
|
schema.TermTermType.aquacultureManagement,
|
|
877
|
-
schema.TermTermType.biodiversity,
|
|
878
886
|
schema.TermTermType.cropEstablishment,
|
|
879
887
|
schema.TermTermType.cropResidueManagement,
|
|
880
888
|
schema.TermTermType.excretaManagement,
|
|
@@ -893,6 +901,7 @@
|
|
|
893
901
|
schema.TermTermType.crop,
|
|
894
902
|
schema.TermTermType.cropResidue,
|
|
895
903
|
schema.TermTermType.excreta,
|
|
904
|
+
schema.TermTermType.grass,
|
|
896
905
|
schema.TermTermType.liveAnimal,
|
|
897
906
|
schema.TermTermType.liveAquaticSpecies,
|
|
898
907
|
schema.TermTermType.animalProduct,
|
|
@@ -931,6 +940,8 @@
|
|
|
931
940
|
schema.TermTermType.animalProduct,
|
|
932
941
|
schema.TermTermType.liveAnimal,
|
|
933
942
|
schema.TermTermType.liveAquaticSpecies,
|
|
943
|
+
schema.TermTermType.excreta,
|
|
944
|
+
schema.TermTermType.grass,
|
|
934
945
|
schema.TermTermType.processedFood,
|
|
935
946
|
schema.TermTermType.emission,
|
|
936
947
|
schema.TermTermType.resourceUse,
|
|
@@ -944,7 +955,6 @@
|
|
|
944
955
|
schema.TermTermType.electricity,
|
|
945
956
|
schema.TermTermType.fuel,
|
|
946
957
|
schema.TermTermType.aquacultureManagement,
|
|
947
|
-
schema.TermTermType.biodiversity,
|
|
948
958
|
schema.TermTermType.cropResidueManagement,
|
|
949
959
|
schema.TermTermType.animalManagement,
|
|
950
960
|
schema.TermTermType.waterRegime,
|
|
@@ -1680,7 +1690,7 @@
|
|
|
1680
1690
|
}
|
|
1681
1691
|
Object.defineProperty(BlankNodeStateNoticeComponent.prototype, "show", {
|
|
1682
1692
|
get: function () {
|
|
1683
|
-
return
|
|
1693
|
+
return this.dataState !== api.DataState.original;
|
|
1684
1694
|
},
|
|
1685
1695
|
enumerable: false,
|
|
1686
1696
|
configurable: true
|
|
@@ -4112,6 +4122,25 @@
|
|
|
4112
4122
|
}]
|
|
4113
4123
|
}] });
|
|
4114
4124
|
|
|
4125
|
+
var orderBy$6 = require('lodash.orderby');
|
|
4126
|
+
var SortByPipe = /** @class */ (function () {
|
|
4127
|
+
function SortByPipe() {
|
|
4128
|
+
}
|
|
4129
|
+
SortByPipe.prototype.transform = function (value, keys, orders) {
|
|
4130
|
+
if (orders === void 0) { orders = ['asc']; }
|
|
4131
|
+
return orderBy$6(value, keys, orders);
|
|
4132
|
+
};
|
|
4133
|
+
return SortByPipe;
|
|
4134
|
+
}());
|
|
4135
|
+
SortByPipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SortByPipe, deps: [], target: i0__namespace.ɵɵFactoryTarget.Pipe });
|
|
4136
|
+
SortByPipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SortByPipe, name: "sortBy" });
|
|
4137
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SortByPipe, decorators: [{
|
|
4138
|
+
type: i0.Pipe,
|
|
4139
|
+
args: [{
|
|
4140
|
+
name: 'sortBy'
|
|
4141
|
+
}]
|
|
4142
|
+
}] });
|
|
4143
|
+
|
|
4115
4144
|
var components$7 = [
|
|
4116
4145
|
BlankNodeStateComponent,
|
|
4117
4146
|
BlankNodeStateNoticeComponent,
|
|
@@ -4129,7 +4158,8 @@
|
|
|
4129
4158
|
TimesPipe,
|
|
4130
4159
|
ClickOutsideDirective,
|
|
4131
4160
|
GetPipe,
|
|
4132
|
-
IsArrayPipe
|
|
4161
|
+
IsArrayPipe,
|
|
4162
|
+
SortByPipe
|
|
4133
4163
|
];
|
|
4134
4164
|
var HeCommonModule = /** @class */ (function () {
|
|
4135
4165
|
function HeCommonModule() {
|
|
@@ -4153,7 +4183,8 @@
|
|
|
4153
4183
|
TimesPipe,
|
|
4154
4184
|
ClickOutsideDirective,
|
|
4155
4185
|
GetPipe,
|
|
4156
|
-
IsArrayPipe
|
|
4186
|
+
IsArrayPipe,
|
|
4187
|
+
SortByPipe], imports: [i2.CommonModule, i1$1.FormsModule, i5.RouterModule,
|
|
4157
4188
|
i11.NgbTypeaheadModule, i11.NgbTooltipModule, i11.NgbPopoverModule,
|
|
4158
4189
|
i1$4.GoogleMapsModule,
|
|
4159
4190
|
HeCommonLightModule], exports: [i11.NgbTypeaheadModule, i11.NgbTooltipModule, i11.NgbPopoverModule,
|
|
@@ -4174,7 +4205,8 @@
|
|
|
4174
4205
|
TimesPipe,
|
|
4175
4206
|
ClickOutsideDirective,
|
|
4176
4207
|
GetPipe,
|
|
4177
|
-
IsArrayPipe
|
|
4208
|
+
IsArrayPipe,
|
|
4209
|
+
SortByPipe] });
|
|
4178
4210
|
HeCommonModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: HeCommonModule, imports: [[
|
|
4179
4211
|
i2.CommonModule, i1$1.FormsModule, i5.RouterModule,
|
|
4180
4212
|
i11.NgbTypeaheadModule, i11.NgbTooltipModule, i11.NgbPopoverModule,
|
|
@@ -5836,7 +5868,7 @@
|
|
|
5836
5868
|
return NodeLogsModelsComponent;
|
|
5837
5869
|
}());
|
|
5838
5870
|
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 });
|
|
5839
|
-
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 [editable]=\"false\"\n [ngbTypeahead]=\"suggestTerm\"\n (selectItem)=\"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>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 colspan=\"5\">\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=\"5\">\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>\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>\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>\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 >\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)\" class=\"has-text-{{requirementColor(logs.requirements[key])}}\">\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 } });
|
|
5871
|
+
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 [editable]=\"false\"\n [ngbTypeahead]=\"suggestTerm\"\n (selectItem)=\"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>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 colspan=\"5\">\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=\"5\">\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>\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>\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>\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 >\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 } });
|
|
5840
5872
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: NodeLogsModelsComponent, decorators: [{
|
|
5841
5873
|
type: i0.Component,
|
|
5842
5874
|
args: [{
|
|
@@ -5910,7 +5942,7 @@
|
|
|
5910
5942
|
'impactAssessment'
|
|
5911
5943
|
];
|
|
5912
5944
|
var tableKeys = [
|
|
5913
|
-
'inputs', 'value', 'dates', 'methodModel', 'methodTier', 'statsDefinition'
|
|
5945
|
+
'inputs', 'transformation', 'value', 'dates', 'methodModel', 'methodTier', 'statsDefinition'
|
|
5914
5946
|
];
|
|
5915
5947
|
var NodeValueDetailsComponent = /** @class */ (function () {
|
|
5916
5948
|
function NodeValueDetailsComponent() {
|
|
@@ -6567,6 +6599,47 @@
|
|
|
6567
6599
|
type: i0.Input
|
|
6568
6600
|
}] } });
|
|
6569
6601
|
|
|
6602
|
+
var CyclesPracticesTimelineComponent = /** @class */ (function () {
|
|
6603
|
+
function CyclesPracticesTimelineComponent(el) {
|
|
6604
|
+
this.el = el;
|
|
6605
|
+
this.now = new Date();
|
|
6606
|
+
}
|
|
6607
|
+
Object.defineProperty(CyclesPracticesTimelineComponent.prototype, "practices", {
|
|
6608
|
+
get: function () {
|
|
6609
|
+
return (this.cycle.practices || []).map(function (p) {
|
|
6610
|
+
var _a;
|
|
6611
|
+
return !p.startDate && ((_a = p.dates) === null || _a === void 0 ? void 0 : _a.length) ? Object.assign(Object.assign({}, p), { startDate: p.dates[0] }) : p;
|
|
6612
|
+
});
|
|
6613
|
+
},
|
|
6614
|
+
enumerable: false,
|
|
6615
|
+
configurable: true
|
|
6616
|
+
});
|
|
6617
|
+
CyclesPracticesTimelineComponent.prototype.trackByPractice = function (_index, _b) {
|
|
6618
|
+
var term = _b.term;
|
|
6619
|
+
return term['@id'];
|
|
6620
|
+
};
|
|
6621
|
+
Object.defineProperty(CyclesPracticesTimelineComponent.prototype, "lineWidth", {
|
|
6622
|
+
get: function () {
|
|
6623
|
+
return this.el.nativeElement.offsetWidth - 60;
|
|
6624
|
+
},
|
|
6625
|
+
enumerable: false,
|
|
6626
|
+
configurable: true
|
|
6627
|
+
});
|
|
6628
|
+
return CyclesPracticesTimelineComponent;
|
|
6629
|
+
}());
|
|
6630
|
+
CyclesPracticesTimelineComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CyclesPracticesTimelineComponent, deps: [{ token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6631
|
+
CyclesPracticesTimelineComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesPracticesTimelineComponent, selector: "he-cycles-practices-timeline", inputs: { cycle: "cycle" }, ngImport: i0__namespace, template: "<ul class=\"content pl-4 ml-4 pb-4\">\n <li class=\"is-relative m-0\"\n *ngFor=\"let practice of practices | sortBy:['startDate','endDate']:['asc','asc']; trackBy: trackByPractice\"\n >\n <div class=\"is-relative\"\n [style.width]=\"lineWidth + 'px'\"\n >\n <span *ngIf=\"practice.startDate; else noDate\">{{practice.startDate | date:'YYYY-MM-dd'}}</span>\n <span class=\"px-1\"\n [class.is-invisible]=\"!practice.startDate || !practice.endDate\"\n >-</span>\n <span\n [class.is-invisible]=\"!practice.endDate\"\n >{{(practice.endDate || now) | date:'YYYY-MM-dd'}}</span>\n <span class=\"pl-4\">{{practice.term.name}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"practice\"\n key=\"value\"\n ></he-blank-node-state>\n </div>\n </li>\n</ul>\n\n<ng-template #noDate>\n <span>No date</span>\n</ng-template>\n", styles: ["ul{max-height:400px;overflow-y:auto}ul li{width:4px;padding-top:20px;background:#485fc7}ul li:after{content:\"\";position:absolute;left:50%;bottom:2px;transform:translate(-50%);width:20px;height:20px;border-radius:50%;background:inherit}ul li>div{width:600px;margin-left:24px}ul li>div>span{display:inline-block}ul li>div>span:nth-child(1),ul li>div>span:nth-child(3){width:94px}\n"], components: [{ type: BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["nodeType", "dataKey", "key", "node", "state"] }], directives: [{ type: i2__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "sortBy": SortByPipe, "date": i2__namespace.DatePipe } });
|
|
6632
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CyclesPracticesTimelineComponent, decorators: [{
|
|
6633
|
+
type: i0.Component,
|
|
6634
|
+
args: [{
|
|
6635
|
+
selector: 'he-cycles-practices-timeline',
|
|
6636
|
+
templateUrl: './cycles-practices-timeline.component.html',
|
|
6637
|
+
styleUrls: ['./cycles-practices-timeline.component.scss']
|
|
6638
|
+
}]
|
|
6639
|
+
}], ctorParameters: function () { return [{ type: i0__namespace.ElementRef }]; }, propDecorators: { cycle: [{
|
|
6640
|
+
type: i0.Input
|
|
6641
|
+
}] } });
|
|
6642
|
+
|
|
6570
6643
|
var CyclesPracticesLogsComponent = /** @class */ (function () {
|
|
6571
6644
|
function CyclesPracticesLogsComponent(nodeService) {
|
|
6572
6645
|
this.nodeService = nodeService;
|
|
@@ -6623,6 +6696,7 @@
|
|
|
6623
6696
|
var View$2;
|
|
6624
6697
|
(function (View) {
|
|
6625
6698
|
View["table"] = "table";
|
|
6699
|
+
View["timeline"] = "timeline";
|
|
6626
6700
|
View["logs"] = "logs";
|
|
6627
6701
|
})(View$2 || (View$2 = {}));
|
|
6628
6702
|
var CyclesPracticesComponent = /** @class */ (function () {
|
|
@@ -6669,7 +6743,7 @@
|
|
|
6669
6743
|
return CyclesPracticesComponent;
|
|
6670
6744
|
}());
|
|
6671
6745
|
CyclesPracticesComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CyclesPracticesComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6672
|
-
CyclesPracticesComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesPracticesComponent, selector: "he-cycles-practices", inputs: { originalValues: "originalValues", cycles: "cycles", selected: "selected", dataState: "dataState" }, usesOnChanges: true, ngImport: i0__namespace, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container
|
|
6746
|
+
CyclesPracticesComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesPracticesComponent, selector: "he-cycles-practices", inputs: { originalValues: "originalValues", cycles: "cycles", selected: "selected", dataState: "dataState" }, usesOnChanges: true, ngImport: i0__namespace, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && practices.length\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep\"></div>\n </ng-container>\n <div class=\"column is-narrow\" *ngIf=\"cycles.length === 1\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.timeline\" (click)=\"selectedView = View.timeline\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list-alt\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Timeline view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"practices.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let practice of practices\"\n [attr.title]=\"practice.value.term.name\"\n >\n <he-node-link [node]=\"practice.value.term\">\n <span>{{practice.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let practice of practices\"\n [attr.title]=\"practice.value.term.units\"\n >{{practice.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr *ngIf=\"isSelected(cycle)\">\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let practice of practices\">\n <span *ngIf=\"practice.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: practice.value.values[cycle['@id']], cycle: cycle, key: 'practices' })\"\n >\n <span pointer>{{propertyValue(practice.value.values[cycle['@id']].value, practice.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"practice.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<div class=\"px-3 pb-3\" *ngIf=\"selectedView === View.timeline\">\n <he-cycles-practices-timeline\n [cycle]=\"cycles[0]\"\n ></he-cycles-practices-timeline>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n</div>\n\n<he-cycles-practices-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [cycle]=\"cycles[0]\"\n [originalValues]=\"originalValues[0]?.practices\"\n [recalculatedValues]=\"cycles[0]?.practices\"\n></he-cycles-practices-logs>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-practices.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.practices.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"], 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: CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { type: BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["nodeType", "dataKey", "key", "node", "state"] }, { type: BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted", "showUnchanged"] }, { type: CyclesPracticesTimelineComponent, selector: "he-cycles-practices-timeline", inputs: ["cycle"] }, { type: CyclesPracticesLogsComponent, selector: "he-cycles-practices-logs", inputs: ["cycle", "originalValues", "recalculatedValues"] }, { type: NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { type: NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11__namespace.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }], pipes: { "ellipsis": EllipsisPipe, "default": DefaultPipe, "precision": PrecisionPipe } });
|
|
6673
6747
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CyclesPracticesComponent, decorators: [{
|
|
6674
6748
|
type: i0.Component,
|
|
6675
6749
|
args: [{
|
|
@@ -6814,6 +6888,7 @@
|
|
|
6814
6888
|
CyclesFunctionalUnitMeasureComponent,
|
|
6815
6889
|
CyclesPracticesComponent,
|
|
6816
6890
|
CyclesPracticesLogsComponent,
|
|
6891
|
+
CyclesPracticesTimelineComponent,
|
|
6817
6892
|
CyclesResultComponent
|
|
6818
6893
|
];
|
|
6819
6894
|
var HeCyclesModule = /** @class */ (function () {
|
|
@@ -6831,6 +6906,7 @@
|
|
|
6831
6906
|
CyclesFunctionalUnitMeasureComponent,
|
|
6832
6907
|
CyclesPracticesComponent,
|
|
6833
6908
|
CyclesPracticesLogsComponent,
|
|
6909
|
+
CyclesPracticesTimelineComponent,
|
|
6834
6910
|
CyclesResultComponent], imports: [i2.CommonModule, i1$1.FormsModule,
|
|
6835
6911
|
HeCommonModule,
|
|
6836
6912
|
HeNodeModule], exports: [CyclesActivityComponent,
|
|
@@ -6842,6 +6918,7 @@
|
|
|
6842
6918
|
CyclesFunctionalUnitMeasureComponent,
|
|
6843
6919
|
CyclesPracticesComponent,
|
|
6844
6920
|
CyclesPracticesLogsComponent,
|
|
6921
|
+
CyclesPracticesTimelineComponent,
|
|
6845
6922
|
CyclesResultComponent] });
|
|
6846
6923
|
HeCyclesModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: HeCyclesModule, imports: [[
|
|
6847
6924
|
i2.CommonModule, i1$1.FormsModule,
|
|
@@ -7031,23 +7108,23 @@
|
|
|
7031
7108
|
}]
|
|
7032
7109
|
}] });
|
|
7033
7110
|
|
|
7034
|
-
var
|
|
7111
|
+
var _g;
|
|
7035
7112
|
var mapErrorMessage = 'does not contain latitude and longitude';
|
|
7036
7113
|
var parseDataPath = function (dataPath) {
|
|
7037
7114
|
if (dataPath === void 0) { dataPath = ''; }
|
|
7038
|
-
var
|
|
7115
|
+
var _g = __read(dataPath.split('.')), _ = _g[0], paths = _g.slice(1);
|
|
7039
7116
|
return paths.map(function (path) { return ({ path: path, label: utils.keyToLabel(path.replace(/\[\d+\]/g, '')) }); });
|
|
7040
7117
|
};
|
|
7041
7118
|
var contactUsEmail = 'community@hestia.earth';
|
|
7042
7119
|
var externalLink = function (href, text) { return "<a href=\"" + href + "\" target=\"_blank\">" + text + "</a>"; };
|
|
7043
7120
|
var glossaryLink = function (text) { return externalLink(baseUrl() + "/glossary", text); };
|
|
7044
7121
|
var glossaryTypeLink = function (type) { return externalLink(baseUrl() + "/glossary?termType=" + type, termTypeLabel(type)); };
|
|
7045
|
-
var termLink = function (
|
|
7046
|
-
var id =
|
|
7122
|
+
var termLink = function (_g) {
|
|
7123
|
+
var id = _g.id, name = _g.name;
|
|
7047
7124
|
return externalLink(baseUrl() + "/term/" + id, name);
|
|
7048
7125
|
};
|
|
7049
|
-
var nodeLink = function (
|
|
7050
|
-
var type =
|
|
7126
|
+
var nodeLink = function (_g) {
|
|
7127
|
+
var type = _g["@type"], id = _g["@id"], name = _g.name;
|
|
7051
7128
|
return type && id ? "<a href=\"/" + type.toLowerCase() + "/" + id + "\" target=\"_blank\">" + (name || id) + "</a>" : null;
|
|
7052
7129
|
};
|
|
7053
7130
|
var schemaLink = function (type, title) {
|
|
@@ -7063,39 +7140,44 @@
|
|
|
7063
7140
|
var modelLink = function (term, model) { return "\n <a href=\"" + pathToApiDocsPath(model['@id'], term['@id']) + "\" target=\"_blank\">\n <span class=\"pr-1\">" + model.name + "</span>\n <span>(View Docs)</span>\n </a>\n"; };
|
|
7064
7141
|
var threshold = function (value) { return code(value * 100 + "%"); };
|
|
7065
7142
|
var noTillage = { id: 'noTillage', name: 'No tillage' };
|
|
7066
|
-
var missingNodeErrorMessage = function (
|
|
7067
|
-
var _t =
|
|
7143
|
+
var missingNodeErrorMessage = function (_g) {
|
|
7144
|
+
var _t = _g["@type"], type = _g.type, name = _g.name;
|
|
7068
7145
|
return (_t || type) === 'Term' ?
|
|
7069
7146
|
(name ? "The term \"" + name + "\"" : 'This term') + " doesn't match a term in the " + glossaryLink('Glossary of Terms') + ".\n Please check the " + glossaryLink('Glossary') + " for the correct " + code('@id') + " or " + code('name') + " and spelling."
|
|
7070
7147
|
: "This " + schemaLink(_t || type) + " does not exist in Hestia. If you are trying to link to an existing\n " + schemaLink(_t || type) + " in Hestia, please check the " + code('name') + " or " + code('@id') + " is correct.\n If you are trying to create a new " + schemaLink(_t || type) + ", please identify it with an " + code('id') + " field.";
|
|
7071
7148
|
};
|
|
7072
7149
|
// set message as empty to not display it
|
|
7073
|
-
var customErrorMessage = (
|
|
7150
|
+
var customErrorMessage = (_g = {
|
|
7074
7151
|
'should have required property \'@id\'': function () { return 'does not exist in Hestia.'; },
|
|
7075
7152
|
'should have required property \'@type\'': function () { return ''; },
|
|
7076
7153
|
'should have required property \'id\'': function () { return 'does not exist in Hestia.'; },
|
|
7077
7154
|
'should match exactly one schema in oneOf': function () { return ''; },
|
|
7078
7155
|
'should match some schema in anyOf': function () { return ''; },
|
|
7079
|
-
'should NOT have additional properties': function (
|
|
7080
|
-
var params =
|
|
7156
|
+
'should NOT have additional properties': function (_g, errorCount) {
|
|
7157
|
+
var params = _g.params;
|
|
7081
7158
|
return errorCount === 1 ?
|
|
7082
|
-
"The following field does not exist: " + (params === null || params === void 0 ? void 0 : params.additionalProperty) :
|
|
7159
|
+
"The following field does not exist: " + (params === null || params === void 0 ? void 0 : params.additionalProperty) + " or is not allowed in this case." :
|
|
7083
7160
|
"should not have additional properties";
|
|
7084
7161
|
},
|
|
7085
7162
|
'should match pattern "^\\d{13}$"': function () { return "should be composed of 13 numbers"; },
|
|
7086
7163
|
'should match pattern "^[0-9]{4}(-[0-9]{2})?(-[0-9]{2})?$"': function () { return dateFormatMessage; },
|
|
7087
7164
|
'should match pattern "^([0-9]{4}|-)(-[0-9]{2})?(-[0-9]{2})?$"': function () { return dateFormatMessage; },
|
|
7088
7165
|
'should match pattern "^([0-9]{4}|-)(-[0-9]{2})?(-[0-9]{2})?([T][0-2][0-9]\:[0-5][0-9]\:[0-5][0-9]((\+|\-)[0-1][0-9]:[0-5][0-9])?)?$"': function () { return dateFormatMessage; },
|
|
7166
|
+
'should be linked to an existing node': function (_g) {
|
|
7167
|
+
var params = _g.params;
|
|
7168
|
+
var _a, _b, _c, _d, _e, _f;
|
|
7169
|
+
return "Your submission does not contain the " + ((_a = params === null || params === void 0 ? void 0 : params.node) === null || _a === void 0 ? void 0 : _a.type) + " with " + code("id=" + ((_b = params === null || params === void 0 ? void 0 : params.node) === null || _b === void 0 ? void 0 : _b.id)) + ".\n If you are trying to link to an existing " + ((_c = params === null || params === void 0 ? void 0 : params.node) === null || _c === void 0 ? void 0 : _c.type) + " on the Hestia platform, you must use " + code("@id=" + ((_d = params === null || params === void 0 ? void 0 : params.node) === null || _d === void 0 ? void 0 : _d.id)) + " instead.\n Otherwise you must include a full " + ((_e = params === null || params === void 0 ? void 0 : params.node) === null || _e === void 0 ? void 0 : _e.type) + " with id " + code((_f = params === null || params === void 0 ? void 0 : params.node) === null || _f === void 0 ? void 0 : _f.id) + ".";
|
|
7170
|
+
},
|
|
7089
7171
|
'must be within the country': function () { return "The country provided does not contain the region provided. Please check\n the country for errors or the region for errors, and reference the " + glossaryLink('Glossary of Terms') + "."; }
|
|
7090
7172
|
},
|
|
7091
|
-
|
|
7092
|
-
var dataPath =
|
|
7173
|
+
_g[mapErrorMessage] = function (_g) {
|
|
7174
|
+
var dataPath = _g.dataPath;
|
|
7093
7175
|
return dataPath === '.region' ? "The region provided does not contain the longitude and latitude provided. Please check the\n longitude and latitude for errors or the region for error, and reference the " + glossaryLink('Glossary of Terms') + "." :
|
|
7094
7176
|
"The country provided does not contain the longitude and latitude provided. Please check the longitude and latitude\n for errors or the country for errors, and reference the " + glossaryLink('Glossary of Terms') + ".";
|
|
7095
7177
|
},
|
|
7096
|
-
|
|
7097
|
-
|
|
7098
|
-
var params =
|
|
7178
|
+
_g['sum not equal to 100% for sandContent, siltContent, clayContent'] = function () { return "The sum of Sand, Silt, and Clay content should equal 100% for each soil depth interval."; },
|
|
7179
|
+
_g['is outside the allowed range'] = function (_g, errorCount) {
|
|
7180
|
+
var params = _g.params;
|
|
7099
7181
|
var _a, _b;
|
|
7100
7182
|
return errorCount === 1 ?
|
|
7101
7183
|
((params === null || params === void 0 ? void 0 : params.term) ?
|
|
@@ -7103,111 +7185,129 @@
|
|
|
7103
7185
|
"does not match the possible ranges of sand, silt and clay content.\n Please check the measurement, its depth intervals, and the dates of the measurement.") :
|
|
7104
7186
|
"Each soil texture has a maximum and minimum value for sand, silt, and clay content.\n At least one measurement of sand, silt, or clay content does not match the possible range for the specified soil texture.\n Please check your measurements, their depth intervals, and the dates of the measurements.";
|
|
7105
7187
|
},
|
|
7106
|
-
|
|
7107
|
-
var params =
|
|
7188
|
+
_g['should be equal to one of the allowed values'] = function (_g) {
|
|
7189
|
+
var params = _g.params;
|
|
7108
7190
|
return "must have one of these values: " + (params === null || params === void 0 ? void 0 : params.allowedValues.join(', '));
|
|
7109
7191
|
},
|
|
7110
|
-
|
|
7111
|
-
var params =
|
|
7192
|
+
_g['is not allowed for this characterisedIndicator'] = function (_g, errorCount) {
|
|
7193
|
+
var params = _g.params;
|
|
7112
7194
|
return (errorCount === 1 ?
|
|
7113
7195
|
((params === null || params === void 0 ? void 0 : params.allowedValues.length) ?
|
|
7114
7196
|
"can only be used with one of these methods: " + (params === null || params === void 0 ? void 0 : params.allowedValues.join(', ')) :
|
|
7115
7197
|
"does not currently have any method allowed. Please " + contactUs() + " to change this.") + "." :
|
|
7116
7198
|
"Some Terms are not allowed with the method you selected.") + "\n You can find the list of allowed methods for each Term by clicking on them.";
|
|
7117
7199
|
},
|
|
7118
|
-
|
|
7119
|
-
var dataPath =
|
|
7200
|
+
_g['should contain a valid item'] = function (_g) {
|
|
7201
|
+
var dataPath = _g.dataPath;
|
|
7120
7202
|
var paths = parseDataPath(dataPath);
|
|
7121
7203
|
return paths.length >= 2 ?
|
|
7122
7204
|
"The " + paths[paths.length - 1].path + " related to this " + pluralize__namespace(paths[paths.length - 2].label, 1) + " are invalid" :
|
|
7123
7205
|
"The " + paths[0].path + " are invalid";
|
|
7124
7206
|
},
|
|
7125
|
-
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
|
|
7129
|
-
var dataPath =
|
|
7207
|
+
_g['may be between 0 and 100'] = function () { return 'percentages should be between 0 and 100, not 0 and 1. This may be an error.'; },
|
|
7208
|
+
_g['may not all be set to false'] = function () { return "Every value in the data completeness assessment is " + code('false') + ". You may have forgotten to fill it in.\n For information on how to fill it in, please see the " + schemaLink('Cycle#dataCompleteness', 'schema') + "."; },
|
|
7209
|
+
_g['may not be empty'] = function () { return 'if this value signifies no data, Hestia only accepts "-" or empty for no data'; },
|
|
7210
|
+
_g['may not be 0'] = function (_g, errorCount) {
|
|
7211
|
+
var dataPath = _g.dataPath;
|
|
7130
7212
|
var paths = parseDataPath(dataPath);
|
|
7131
7213
|
return "adding a value " + (errorCount === 1 ? " to every " + paths[0].label + " " : ' ') + " is highly recommended\n as without this it is not possible to calculate the Impact Assessment.\n If the amount produced is zero, we recommend setting value to 0.";
|
|
7132
7214
|
},
|
|
7133
|
-
|
|
7134
|
-
|
|
7135
|
-
|
|
7136
|
-
var params =
|
|
7215
|
+
_g['the sum of above ground crop residue and below ground crop residue must be greater than zero'] = function () { return "For sites of type " + code(schema.SiteSiteType.cropland) + " or " + code(schema.SiteSiteType['permanent pasture']) + ",\n if data completeness is marked true for crop residue,\n the sum of the Above ground crop residue terms should be greater than zero,\n and Below ground crop residue should be greater than zero."; },
|
|
7216
|
+
_g['longFallowPeriod must be lower than 5 years'] = function () { return "Your longFallowPeriod is greater than five years.\n Fallow is defined by FAOSTAT as land left uncultivated for between 1 and 5 years,\n and this definition is used for Hestia also."; },
|
|
7217
|
+
_g['should be within percentage of default value'] = function (_g, errorCount) {
|
|
7218
|
+
var params = _g.params;
|
|
7137
7219
|
return errorCount === 1 ?
|
|
7138
7220
|
"is \u00B1" + threshold(params === null || params === void 0 ? void 0 : params.threshold) + " different to our default value which is " + (params === null || params === void 0 ? void 0 : params.default) + ".\n Please check your uploaded data as this may be an error." :
|
|
7139
7221
|
"is substantially different than our default value. Please check your uploaded data as this may be an error.";
|
|
7140
7222
|
},
|
|
7141
|
-
|
|
7142
|
-
var params =
|
|
7223
|
+
_g['the value provided is not consistent with the model result'] = function (_g, errorCount) {
|
|
7224
|
+
var params = _g.params;
|
|
7143
7225
|
var _a;
|
|
7144
7226
|
return "The expected result for " + code(params === null || params === void 0 ? void 0 : params.term.name) + "\n " + (((_a = params === null || params === void 0 ? void 0 : params.model) === null || _a === void 0 ? void 0 : _a.name) ? "using " + modelLink(params === null || params === void 0 ? void 0 : params.term, params === null || params === void 0 ? void 0 : params.model) + " " : '') + "\n from the data provided in the upload is " + (errorCount === 1 ?
|
|
7145
7227
|
code(utils.toPrecision(params === null || params === void 0 ? void 0 : params.expected, 3)) + ", but the value in the upload is " + code(utils.toPrecision(params === null || params === void 0 ? void 0 : params.current, 3)) + ".\n " + ((params === null || params === void 0 ? void 0 : params.threshold) ? "Our threshold is \u00B1" + threshold(params === null || params === void 0 ? void 0 : params.threshold) + "." : '') + "\n Please either:\n 1) check the " + (params === null || params === void 0 ? void 0 : params.term.termType) + " value you provided;\n 2) check the data you provided which is the input into this model;\n 3) carefully read the documentation to understand if we used a default property as part of the calculations." :
|
|
7146
7228
|
"not consistent with the model result.");
|
|
7147
7229
|
},
|
|
7148
|
-
|
|
7149
|
-
var params =
|
|
7230
|
+
_g['the measurement provided might be in error'] = function (_g, errorCount) {
|
|
7231
|
+
var params = _g.params;
|
|
7150
7232
|
return "The expected value for " + code(params === null || params === void 0 ? void 0 : params.term.name) + " from the data provided in the upload is " + (errorCount === 1 ?
|
|
7151
7233
|
code(utils.toPrecision(params === null || params === void 0 ? void 0 : params.expected, 3)) + ", but the value in the upload is " + code(utils.toPrecision(params === null || params === void 0 ? void 0 : params.current, 3)) + ".\n " + ((params === null || params === void 0 ? void 0 : params.threshold) ? "Our threshold is \u00B1" + threshold(params === null || params === void 0 ? void 0 : params.threshold) + "." : '') :
|
|
7152
7234
|
"not consistent with the model result.");
|
|
7153
7235
|
},
|
|
7154
|
-
|
|
7155
|
-
|
|
7156
|
-
|
|
7157
|
-
|
|
7236
|
+
_g['must be equal to previous product multiplied by the share'] = function () { return "Products from a transformation which are an Input in to the next transformation must follow the following rule:\n " + code('previous.product.value * current.previousTransformationShare / 100 == current.input.value'); },
|
|
7237
|
+
_g['at least one Input must be a Product of the Cycle'] = function () { return "A Transformation converts a Product from a Cycle into another Product.\n Therefore, at least one Input into the Transformation must be a Product of the Cycle."; },
|
|
7238
|
+
_g['must have only one entry with the same term.termType = excretaManagement'] = function () { return "There can only be one Practice of type excretaManagement in a Cycle.\n To represent multiple excreta management systems either use multiple Cycles and link them together,\n or use Transformations within a Cycle and link those together."; },
|
|
7239
|
+
_g['must add the linked inputs to the cycle'] = function (_g, errorCount) {
|
|
7240
|
+
var params = _g.params;
|
|
7241
|
+
var _a, _b;
|
|
7242
|
+
return (errorCount === 1 ?
|
|
7243
|
+
'You have stated some Emissions were created by some Inputs.' :
|
|
7244
|
+
"You have stated that " + code((_a = params === null || params === void 0 ? void 0 : params.term) === null || _a === void 0 ? void 0 : _a.name) + " was created by the following Inputs " + ((_b = params === null || params === void 0 ? void 0 : params.expected) === null || _b === void 0 ? void 0 : _b.map(function (e) { return code(e.name); }).join(' , '))) + ".\n However, these Inputs do not exist in the Cycle.\n Please add these Inputs, even if you do not have a value for them.";
|
|
7245
|
+
},
|
|
7246
|
+
_g['must add the linked transformations to the cycle'] = function (_g, errorCount) {
|
|
7247
|
+
var level = _g.level, params = _g.params;
|
|
7248
|
+
var _a, _b;
|
|
7249
|
+
return (errorCount === 1 ?
|
|
7250
|
+
'You have stated some Emissions were created by some Transformations.' :
|
|
7251
|
+
"You have specified that" + code((_a = params === null || params === void 0 ? void 0 : params.term) === null || _a === void 0 ? void 0 : _a.name) + " was created during a Transformation with the Term name " + code((_b = params === null || params === void 0 ? void 0 : params.expected) === null || _b === void 0 ? void 0 : _b.name) + ".") + ".\n However, we cannot find a Transformation within the Cycle with this Term name.\n " + (level === 'error' ?
|
|
7252
|
+
'Please check the Terms used in the Emissions and/or the Transformations.' :
|
|
7253
|
+
'You may want to add this Transformation.');
|
|
7254
|
+
},
|
|
7255
|
+
_g['every item in the list should be unique'] = function (_g) {
|
|
7256
|
+
var params = _g.params;
|
|
7158
7257
|
return "This Blank Node is duplicated. Every Blank Node should be unique.\n Uniqueness is determined by the following fields: " + ((params === null || params === void 0 ? void 0 : params.keys) || []).map(code).join(', ');
|
|
7159
7258
|
},
|
|
7160
|
-
|
|
7161
|
-
var params =
|
|
7259
|
+
_g['must contain as many items as values'] = function (_g) {
|
|
7260
|
+
var params = _g.params, dataPath = _g.dataPath;
|
|
7162
7261
|
return "The number of " + code(dataPath.split('.').pop()) + " must match the number of " + code('value') + ".\n Currently there are " + (params === null || params === void 0 ? void 0 : params.current) + " " + code(dataPath.split('.').pop()) + " but " + (params === null || params === void 0 ? void 0 : params.expected) + " " + code('value') + ".";
|
|
7163
7262
|
},
|
|
7164
|
-
|
|
7165
|
-
var params =
|
|
7263
|
+
_g['is too generic'] = function (_g) {
|
|
7264
|
+
var params = _g.params;
|
|
7166
7265
|
var _a, _b, _c, _d, _e;
|
|
7167
7266
|
return "You have the following Product " + code((_a = params === null || params === void 0 ? void 0 : params.product) === null || _a === void 0 ? void 0 : _a.name) + " however,\n you have used a generic " + glossaryTypeLink((_b = params === null || params === void 0 ? void 0 : params.term) === null || _b === void 0 ? void 0 : _b.termType) + " term " + code((_c = params === null || params === void 0 ? void 0 : params.term) === null || _c === void 0 ? void 0 : _c.name) + ".\n Use a more specific term for the " + glossaryTypeLink((_d = params === null || params === void 0 ? void 0 : params.term) === null || _d === void 0 ? void 0 : _d.termType) + " which reflects the specific " + glossaryTypeLink((_e = params === null || params === void 0 ? void 0 : params.product) === null || _e === void 0 ? void 0 : _e.termType) + ".";
|
|
7168
7267
|
},
|
|
7169
|
-
|
|
7170
|
-
|
|
7171
|
-
var params =
|
|
7268
|
+
_g['is missing required bibliographic information'] = function () { return "The automatic bibliography search failed for this Bibliography. Either:\n 1) manually fill-in the <b>required</b> bibliographic information as per\n " + schemaLink(schema.SchemaType.Bibliography, 'our schema') + ".\n 2) provide the " + code('documentDOI') + " as well as the " + code('title') + "\n 3) check the " + code('documentDOI') + " and " + code('title') + " for typos against the\n " + externalLink('https://www.mendeley.com', 'Mendeley catalogue'); },
|
|
7269
|
+
_g['should be lower than max size'] = function (_g) {
|
|
7270
|
+
var params = _g.params;
|
|
7172
7271
|
return "The boundary or region is >" + (params === null || params === void 0 ? void 0 : params.expected) + "km2 and is too large to reliably gap fill Measurements.";
|
|
7173
7272
|
},
|
|
7174
|
-
|
|
7175
|
-
var dataPath =
|
|
7273
|
+
_g['an excreta input is required when using an excretaManagement practice'] = function (_g) {
|
|
7274
|
+
var dataPath = _g.dataPath;
|
|
7176
7275
|
var paths = parseDataPath(dataPath);
|
|
7177
7276
|
return "Excreta management is the conversion of excreta to another type of excreta.\n You have added an excretaManagement Practice to this " + paths[0].label + " but there is no excreta Input.\n To represent excreta management, use a " + paths[0].label + " with excreta as an Input and excretaManagement as a Practice.";
|
|
7178
7277
|
},
|
|
7179
|
-
|
|
7180
|
-
|
|
7181
|
-
|
|
7182
|
-
|
|
7183
|
-
|
|
7184
|
-
|
|
7185
|
-
var params =
|
|
7278
|
+
_g['only 1 primary product allowed'] = function () { return 'There can only be one primary product in each Cycle.'; },
|
|
7279
|
+
_g['is not allowed in combination with noTillage'] = function () { return "This operation involves tillage, yet you have specified the Practice " + termLink(noTillage) + ".\n Either change this operation or the Practice."; },
|
|
7280
|
+
_g['should contain a tillage practice'] = function () { return "We recommend specifying the type of tillage used for this Cycle.\n Please see the " + glossaryTypeLink(schema.TermTermType.tillage) + " glossary."; },
|
|
7281
|
+
_g['must set value for every tillage practice'] = function () { return "Either specify a single " + glossaryTypeLink(schema.TermTermType.tillage) + " practice or add a value to all practices."; },
|
|
7282
|
+
_g['sum not equal to 100% for tillage practices'] = function () { return "The sum of " + glossaryTypeLink(schema.TermTermType.tillage) + " practices must equal 100%."; },
|
|
7283
|
+
_g['can only have 1 tillage practice without a value'] = function (_g) {
|
|
7284
|
+
var params = _g.params;
|
|
7186
7285
|
var _a;
|
|
7187
|
-
return "It is not possible for a Cycle to have the following tillage Practices:\n " + ((_a = params === null || params === void 0 ? void 0 : params.current) !== null && _a !== void 0 ? _a : []).map(function (
|
|
7188
|
-
var name =
|
|
7286
|
+
return "It is not possible for a Cycle to have the following tillage Practices:\n " + ((_a = params === null || params === void 0 ? void 0 : params.current) !== null && _a !== void 0 ? _a : []).map(function (_g) {
|
|
7287
|
+
var name = _g.name;
|
|
7189
7288
|
return name;
|
|
7190
7289
|
}).join(' and ') + " at the same time.\n If multiple tillage practices did occur, please specify the percentage of area they occurred on.";
|
|
7191
7290
|
},
|
|
7192
|
-
|
|
7291
|
+
_g['can not be linked to the same Cycle'] = function () { return 'You can not link an Input to the Impact Assessment of the same Cycle.'; },
|
|
7193
7292
|
// deprecated, remove when message is not being used anymore
|
|
7194
|
-
|
|
7195
|
-
var dataPath =
|
|
7293
|
+
_g['must be 0 for product value 0'] = function (_g, errorCount) {
|
|
7294
|
+
var dataPath = _g.dataPath, params = _g.params;
|
|
7196
7295
|
return "If the amount produced is zero, the " + code(dataPath === null || dataPath === void 0 ? void 0 : dataPath.split('.').pop()) + " of " + (errorCount === 1 ? code(params === null || params === void 0 ? void 0 : params.term.name) : 'that product') + " must also be zero.";
|
|
7197
7296
|
},
|
|
7198
|
-
|
|
7199
|
-
var params =
|
|
7297
|
+
_g['economicValueShare must be 0 for product value 0'] = function (_g, errorCount) {
|
|
7298
|
+
var params = _g.params;
|
|
7200
7299
|
return "If the amount produced is zero, the economicValueShare of " + (errorCount === 1 ? code(params === null || params === void 0 ? void 0 : params.term.name) : 'that product') + " must also be zero.";
|
|
7201
7300
|
},
|
|
7202
|
-
|
|
7203
|
-
var params =
|
|
7301
|
+
_g['revenue must be 0 for product value 0'] = function (_g, errorCount) {
|
|
7302
|
+
var params = _g.params;
|
|
7204
7303
|
return "If the amount produced is zero, the revenue of " + (errorCount === 1 ? code(params === null || params === void 0 ? void 0 : params.term.name) : 'that product') + " must also be zero.";
|
|
7205
7304
|
},
|
|
7206
|
-
|
|
7207
|
-
var params =
|
|
7305
|
+
_g['should add a source'] = function (_g) {
|
|
7306
|
+
var params = _g.params;
|
|
7208
7307
|
return "We recommend adding a Source to all data items.\n This can be done by adding the " + code(params === null || params === void 0 ? void 0 : params.current) + " field.\n Sources can also be specified for each data item (i.e., each Input, Emission, Product, Practice, Measurement, or Infrastructure).";
|
|
7209
7308
|
},
|
|
7210
|
-
|
|
7309
|
+
_g['cover crop cycle contains non cover crop product'] = function () { return "You have specified that this crop is a cover crop using a Practice.\n A cover crop is defined as \"a crop which is left in the field without any fraction harvested by the end of the Cycle\".\n The Products of this Cycle are incompatible with this crop being a cover crop.\n Please check the Products or the Practices."; },
|
|
7310
|
+
_g);
|
|
7211
7311
|
var formatCustomErrorMessage = function (message, error, errorCount) {
|
|
7212
7312
|
if (errorCount === void 0) { errorCount = 1; }
|
|
7213
7313
|
var formattedMessage = message && message in customErrorMessage ?
|
|
@@ -7221,23 +7321,23 @@
|
|
|
7221
7321
|
};
|
|
7222
7322
|
var errorHasError = function (error) { return error && (error.level === 'error' || !error.level); };
|
|
7223
7323
|
var errorHasWarning = function (error) { return error && error.level === 'warning'; };
|
|
7224
|
-
var isMissingPropertyError = function (
|
|
7225
|
-
var params =
|
|
7324
|
+
var isMissingPropertyError = function (_g) {
|
|
7325
|
+
var params = _g.params;
|
|
7226
7326
|
return !!params && 'missingProperty' in params;
|
|
7227
7327
|
};
|
|
7228
|
-
var isMissingOneOfError = function (
|
|
7229
|
-
var keyword =
|
|
7328
|
+
var isMissingOneOfError = function (_g) {
|
|
7329
|
+
var keyword = _g.keyword, schemaPath = _g.schemaPath;
|
|
7230
7330
|
return keyword === 'required' && (schemaPath || '').includes('oneOf');
|
|
7231
7331
|
};
|
|
7232
|
-
var isFailingKeywordError = function (
|
|
7233
|
-
var params =
|
|
7332
|
+
var isFailingKeywordError = function (_g) {
|
|
7333
|
+
var params = _g.params;
|
|
7234
7334
|
return !!params && 'failingKeyword' in params;
|
|
7235
7335
|
};
|
|
7236
7336
|
var filterError = function (error) { return [
|
|
7237
7337
|
isFailingKeywordError
|
|
7238
7338
|
].every(function (func) { return !func(error); }); };
|
|
7239
|
-
var missingNodeErrors = function (errors) { return errors.filter(function (
|
|
7240
|
-
var keyword =
|
|
7339
|
+
var missingNodeErrors = function (errors) { return errors.filter(function (_g) {
|
|
7340
|
+
var keyword = _g.keyword, params = _g.params;
|
|
7241
7341
|
return keyword === 'required' && ((params === null || params === void 0 ? void 0 : params.missingProperty) === '@type' || (params === null || params === void 0 ? void 0 : params.missingProperty) === '@id');
|
|
7242
7342
|
}); };
|
|
7243
7343
|
|
|
@@ -9646,6 +9746,7 @@
|
|
|
9646
9746
|
exports.CyclesFunctionalUnitMeasureComponent = CyclesFunctionalUnitMeasureComponent;
|
|
9647
9747
|
exports.CyclesPracticesComponent = CyclesPracticesComponent;
|
|
9648
9748
|
exports.CyclesPracticesLogsComponent = CyclesPracticesLogsComponent;
|
|
9749
|
+
exports.CyclesPracticesTimelineComponent = CyclesPracticesTimelineComponent;
|
|
9649
9750
|
exports.CyclesResultComponent = CyclesResultComponent;
|
|
9650
9751
|
exports.DataTableComponent = DataTableComponent;
|
|
9651
9752
|
exports.DefaultPipe = DefaultPipe;
|
|
@@ -9711,6 +9812,7 @@
|
|
|
9711
9812
|
exports.SitesMeasurementsLogsComponent = SitesMeasurementsLogsComponent;
|
|
9712
9813
|
exports.SkeletonTextComponent = SkeletonTextComponent;
|
|
9713
9814
|
exports.SocialTagsComponent = SocialTagsComponent;
|
|
9815
|
+
exports.SortByPipe = SortByPipe;
|
|
9714
9816
|
exports.TagsInputDirective = TagsInputDirective;
|
|
9715
9817
|
exports.TimesPipe = TimesPipe;
|
|
9716
9818
|
exports.ToastComponent = ToastComponent;
|