@hestia-earth/ui-components 0.0.12 → 0.0.13
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 +392 -238
- package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
- package/common/common.module.d.ts +11 -12
- package/common/index.d.ts +0 -1
- package/common/keys.pipe.d.ts +1 -1
- package/common/utils.d.ts +2 -2
- package/cycles/cycles-emissions-logs/cycles-emissions-logs.component.d.ts +0 -1
- package/cycles/cycles-practices/cycles-practices.component.d.ts +39 -0
- package/cycles/cycles-practices-logs/cycles-practices-logs.component.d.ts +20 -0
- package/cycles/cycles.module.d.ts +9 -7
- package/cycles/index.d.ts +2 -0
- package/esm2015/common/common.module.js +1 -5
- package/esm2015/common/index.js +1 -2
- package/esm2015/common/keys.pipe.js +3 -3
- package/esm2015/common/social-tags/social-tags.component.js +2 -3
- package/esm2015/common/utils.js +2 -2
- package/esm2015/cycles/cycles-emissions/cycles-emissions.component.js +2 -2
- package/esm2015/cycles/cycles-emissions-logs/cycles-emissions-logs.component.js +1 -2
- package/esm2015/cycles/cycles-practices/cycles-practices.component.js +119 -0
- package/esm2015/cycles/cycles-practices-logs/cycles-practices-logs.component.js +46 -0
- package/esm2015/cycles/cycles.module.js +9 -1
- package/esm2015/cycles/index.js +3 -1
- package/esm2015/engine/aggregation-engine.service.js +2 -2
- package/esm2015/engine/engine.service.js +2 -2
- package/esm2015/files/files-error-summary.model.js +6 -6
- package/esm2015/node/node-csv-select-headers/node-csv-select-headers.component.js +6 -5
- package/esm2015/search/search.model.js +4 -4
- package/fesm2015/hestia-earth-ui-components.js +300 -188
- package/fesm2015/hestia-earth-ui-components.js.map +1 -1
- package/package.json +1 -1
- package/common/blank-node-diffs/blank-node-diffs.component.d.ts +0 -18
- package/esm2015/common/blank-node-diffs/blank-node-diffs.component.js +0 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hestia-earth-ui-components.js","sources":["../../src/auth/auth.service.ts","../../src/fontawesome/fontawesome.module.ts","../../src/common/social-tags/social-tags.component.ts","../../src/common/social-tags/social-tags.component.html","../../src/common/toast.service.ts","../../src/common/toast/toast.component.ts","../../src/common/toast/toast.component.html","../../src/common/bind-once.directive.ts","../../src/common/default.pipe.ts","../../src/common/utils.ts","../../src/common/ellipsis.pipe.ts","../../src/terms/terms.model.ts","../../src/common/key-to-label.pipe.ts","../../src/common/keys.pipe.ts","../../src/common/pluralize.pipe.ts","../../src/common/precision.pipe.ts","../../src/common/common.light.module.ts","../../src/common/delta-utils.ts","../../src/common/blank-node-value-delta/blank-node-value-delta.component.ts","../../src/common/blank-node-value-delta/blank-node-value-delta.component.html","../../src/common/blank-node-diffs/blank-node-diffs.component.ts","../../src/common/blank-node-diffs/blank-node-diffs.component.html","../../src/common/common.service.ts","../../src/node/node.service.ts","../../src/engine/aggregation-engine.service.ts","../../src/engine/engine.service.ts","../../src/common/blank-node-state/blank-node-state.component.ts","../../src/common/blank-node-state/blank-node-state.component.html","../../src/common/blank-node-state-notice/blank-node-state-notice.component.ts","../../src/common/blank-node-state-notice/blank-node-state-notice.component.html","../../src/common/clipboard/clipboard.component.ts","../../src/common/clipboard/clipboard.component.html","../../src/common/link-key-value/link-key-value.component.ts","../../src/common/link-key-value/link-key-value.component.html","../../src/common/maps-utils.ts","../../src/common/maps-drawing-confirm/maps-drawing-confirm.component.ts","../../src/common/maps-drawing-confirm/maps-drawing-confirm.component.html","../../src/common/popover/popover.component.ts","../../src/common/popover/popover.component.html","../../src/common/popover-confirm/popover-confirm.component.ts","../../src/common/popover-confirm/popover-confirm.component.html","../../src/common/schema-version-link/schema-version-link.component.ts","../../src/common/schema-version-link/schema-version-link.component.html","../../src/common/skeleton-text/skeleton-text.component.ts","../../src/common/skeleton-text/skeleton-text.component.html","../../src/common/unit-converter/unit-converter.component.ts","../../src/common/unit-converter/unit-converter.component.html","../../src/common/click-outside.directive.ts","../../src/common/get.pipe.ts","../../src/tags-input/utils/events.ts","../../src/tags-input/utils/type.ts","../../src/tags-input/utils/dom.ts","../../src/tags-input/utils/uuid.ts","../../src/tags-input/utils/component.ts","../../src/tags-input/defaultOptions.ts","../../src/tags-input/templates/tag.ts","../../src/tags-input/templates/wrapper.ts","../../src/tags-input/templates/dropdown-item.ts","../../src/tags-input/index.ts","../../src/common/tags-input.directive.ts","../../src/common/times.pipe.ts","../../src/common/common.module.ts","../../src/mendeley/mendeley.service.ts","../../src/search/search.model.ts","../../src/search/search.service.ts","../../src/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.ts","../../src/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.html","../../src/bibliographies/bibliographies.module.ts","../../src/common/logs-utils.ts","../../src/cycles/cycles.model.ts","../../src/schema/schema.service.ts","../../src/node/node-csv-select-headers/node-csv-select-headers.component.ts","../../src/node/node-csv-select-headers/node-csv-select-headers.component.html","../../src/node/node-csv-export-confirm/node-csv-export-confirm.component.ts","../../src/node/node-csv-export-confirm/node-csv-export-confirm.component.html","../../src/node/node-diffs/node-diffs.model.ts","../../src/node/node-diffs/node-diffs.component.ts","../../src/node/node-diffs/node-diffs.component.html","../../src/node/node-icon/node-icon.component.ts","../../src/node/node-icon/node-icon.component.html","../../src/node/node-link/node-link.component.ts","../../src/node/node-link/node-link.component.html","../../src/node/node-logs-file/node-logs-file.component.ts","../../src/node/node-logs-file/node-logs-file.component.html","../../src/node/node-logs-models/node-logs-models.component.ts","../../src/node/node-logs-models/node-logs-models.component.html","../../src/node/node-missing-lookup-factors/node-missing-lookup-factors.component.ts","../../src/node/node-missing-lookup-factors/node-missing-lookup-factors.component.html","../../src/node/node-value-details/node-value-details.component.ts","../../src/node/node-value-details/node-value-details.component.html","../../src/node/node.module.ts","../../src/cycles/cycles-functional-unit-measure/cycles-functional-unit-measure.component.ts","../../src/cycles/cycles-functional-unit-measure/cycles-functional-unit-measure.component.html","../../src/cycles/cycles-suggest-form/cycles-suggest-form.component.ts","../../src/cycles/cycles-suggest-form/cycles-suggest-form.component.html","../../src/cycles/cycles-activity-logs/cycles-activity-logs.component.ts","../../src/cycles/cycles-activity-logs/cycles-activity-logs.component.html","../../src/cycles/cycles-activity/cycles-activity.component.ts","../../src/cycles/cycles-activity/cycles-activity.component.html","../../src/cycles/cycles-completeness/cycles-completeness.component.ts","../../src/cycles/cycles-completeness/cycles-completeness.component.html","../../src/cycles/cycles-emissions-chart/cycles-emissions-chart.component.ts","../../src/cycles/cycles-emissions-chart/cycles-emissions-chart.component.html","../../src/cycles/cycles-emissions-logs/cycles-emissions-logs.component.ts","../../src/cycles/cycles-emissions-logs/cycles-emissions-logs.component.html","../../src/cycles/cycles-emissions/cycles-emissions.component.ts","../../src/cycles/cycles-emissions/cycles-emissions.component.html","../../src/cycles/cycles-result/cycles-result.component.ts","../../src/cycles/cycles-result/cycles-result.component.html","../../src/cycles/cycles.module.ts","../../src/files/files-error.model.ts","../../src/files/files-form.model.ts","../../src/files/files-error-summary.model.ts","../../src/sites/sites-maps/sites-maps.component.ts","../../src/sites/sites-maps/sites-maps.component.html","../../src/sites/sites.model.ts","../../src/sites/sites-measurements-logs/sites-measurements-logs.component.ts","../../src/sites/sites-measurements-logs/sites-measurements-logs.component.html","../../src/sites/sites-measurements/sites-measurements.component.ts","../../src/sites/sites-measurements/sites-measurements.component.html","../../src/sites/sites.module.ts","../../src/users/users.service.ts","../../src/files/files-form/files-form.component.ts","../../src/files/files-form/files-form.component.html","../../src/files/files.module.ts","../../src/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.ts","../../src/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.html","../../src/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.ts","../../src/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.html","../../src/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.ts","../../src/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.html","../../src/impact-assessments/impact-assessments-products/impact-assessments-products.component.ts","../../src/impact-assessments/impact-assessments-products/impact-assessments-products.component.html","../../src/impact-assessments/impact-assessments.module.ts","../../src/node/node-csv.service.ts","../../src/search/search.module.ts","../../src/hestia-earth-ui-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeAuthService {\n private _token?: string;\n\n public set token(token: string) {\n this._token = token;\n }\n\n public get headers(): {[header: string]: string} {\n return this._token ? { 'X-ACCESS-TOKEN': this._token } : {};\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome';\nimport {\n faClone as farClone,\n faCircle as farCircle,\n faIdBadge as farIdBadge\n} from '@fortawesome/free-regular-svg-icons';\nimport {\n faAngleDoubleLeft,\n faAngleDoubleRight,\n faAngleDown,\n faAngleLeft,\n faAngleRight,\n faBookOpen,\n faBuilding,\n faCalculator,\n faChartBar,\n faCheck,\n faClipboard,\n faClipboardList,\n faClone,\n faComments,\n faDownload,\n faDrawPolygon,\n faEdit,\n faExclamationTriangle,\n faExternalLinkAlt,\n faFilter,\n faList,\n faLongArrowAltDown,\n faLongArrowAltUp,\n faLongArrowAltLeft,\n faLongArrowAltRight,\n faMap,\n faMapMarked,\n faMapMarkedAlt,\n faPlus,\n faPlusCircle,\n faSearch,\n faSeedling,\n faSpellCheck,\n faSpinner,\n faTimes,\n faUser\n} from '@fortawesome/free-solid-svg-icons';\n\n@NgModule({\n imports: [\n CommonModule,\n FontAwesomeModule\n ],\n exports: [\n FontAwesomeModule\n ]\n})\nexport class HeFontawesomeModule {\n constructor(library: FaIconLibrary) {\n library.addIcons(\n // free-regular\n farClone,\n farCircle,\n farIdBadge,\n // free-solid\n faAngleDoubleLeft,\n faAngleDoubleRight,\n faAngleDown,\n faAngleLeft,\n faAngleRight,\n faBookOpen,\n faBuilding,\n faCalculator,\n faChartBar,\n faCheck,\n faClipboard,\n faClipboardList,\n faClone,\n faComments,\n faDownload,\n faDrawPolygon,\n faEdit,\n faExclamationTriangle,\n faExternalLinkAlt,\n faFilter,\n faList,\n faLongArrowAltDown,\n faLongArrowAltUp,\n faLongArrowAltLeft,\n faLongArrowAltRight,\n faMap,\n faMapMarked,\n faMapMarkedAlt,\n faPlus,\n faPlusCircle,\n faSearch,\n faSeedling,\n faSpellCheck,\n faSpinner,\n faTimes,\n faUser\n );\n }\n}\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { Meta } from '@angular/platform-browser';\n\n@Component({\n selector: 'he-social-tags',\n templateUrl: './social-tags.component.html',\n styleUrls: ['./social-tags.component.scss']\n})\nexport class SocialTagsComponent implements OnInit {\n @Input()\n private config: {\n 'og:type'?: string;\n 'og:url'?: string;\n 'og:title'?: string;\n 'og:description'?: string;\n 'og:image'?: string;\n } = {};\n\n @HostBinding('class')\n public classes = 'is-hidden';\n\n constructor(\n private meta: Meta\n ) { }\n\n ngOnInit() {\n this.meta.addTag({ charset: 'UTF-8' });\n\n const config = {\n 'og:url': window.location.href.split('?')[0],\n ...this.config\n };\n Object.keys(config).map(name => {\n const content = config[name];\n this.meta.updateTag({ name, content });\n if (name === 'og:description') {\n this.meta.updateTag({ name: 'description', content });\n }\n });\n }\n}\n","<span></span>\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nexport interface IToast {\n id: number;\n message: string;\n duration: number;\n color: 'success'|'danger';\n showRawMessage?: boolean;\n}\n\nlet toastId = 0;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeToastService {\n toasts = new ReplaySubject<IToast>(1);\n\n success(message: string, duration = 3000) {\n this.toasts.next({\n id: ++toastId,\n message,\n duration,\n color: 'success',\n showRawMessage: true\n });\n }\n\n error(message: string, showRawMessage = true, duration = 3000) {\n this.toasts.next({\n id: ++toastId,\n message: (`${message}` || '').trim(),\n duration,\n color: 'danger',\n showRawMessage\n });\n }\n}\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { HeToastService, IToast } from '../toast.service';\n\ninterface IToastTimeout extends IToast {\n timeout?: any;\n}\n\n@Component({\n selector: 'he-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss']\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n public toasts: IToastTimeout[] = [];\n\n constructor(\n private toastService: HeToastService\n ) {}\n\n ngOnInit() {\n this.subscriptions.push(this.toastService.toasts.subscribe(toast => this.add(toast)));\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n private add(toast: IToastTimeout) {\n this.toasts.push(toast);\n if (toast.duration) {\n toast.timeout = setTimeout(() => this.dismiss(toast), toast.duration);\n }\n }\n\n public dismiss(toast: IToastTimeout) {\n this.toasts.splice(this.toasts.findIndex(val => val.id === toast.id), 1);\n }\n}\n","<div class=\"mb-3 columns is-centered is-vcentered\">\n <div class=\"notification is-{{toast.color}}\" role=\"alert\" *ngFor=\"let toast of toasts\">\n <button class=\"delete\" aria-label=\"delete\" (click)=\"dismiss(toast)\">\n <span aria-hidden=\"true\">×</span>\n </button>\n <strong [ngSwitch]=\"toast.color\">\n <ng-container *ngSwitchCase=\"'danger'\">\n <ng-container [ngSwitch]=\"toast.message\">\n <span *ngSwitchCase=\"'Unauthorized'\">You are not allowed to perform this action.</span>\n <span *ngSwitchCase=\"'form-invalid'\">Please fix all the errors on this page.</span>\n <span *ngSwitchCase=\"'users-email-already-taken'\">Email already taken.</span>\n <span *ngSwitchCase=\"'users-auth-already-taken'\">Account already connected.</span>\n <span *ngSwitchDefault>\n <span *ngIf=\"toast.showRawMessage\">{{toast.message}}</span>\n <span [class.is-hidden]=\"toast.showRawMessage\">An unknown error occurred. Please try again later.</span>\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <span *ngIf=\"toast.showRawMessage\">{{toast.message}}</span>\n <span [class.is-hidden]=\"toast.showRawMessage\">An unknown error occurred. Please try again later.</span>\n </ng-container>\n </strong>\n </div>\n</div>\n","/* eslint-disable @angular-eslint/directive-selector */\nimport { Directive, Input, EmbeddedViewRef, OnChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[bindOnce]'\n})\nexport class BindOnceDirective implements OnChanges {\n private embeddedViewRef: EmbeddedViewRef<void>;\n\n @Input()\n public bindOnce!: any;\n\n constructor(\n templateRef: TemplateRef<void>,\n viewContainerRef: ViewContainerRef\n ) {\n this.embeddedViewRef = viewContainerRef.createEmbeddedView(templateRef);\n this.embeddedViewRef.detach();\n }\n\n public ngOnChanges() {\n this.embeddedViewRef.detectChanges();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nconst shouldDefault = {\n string: (value: string) => !value,\n number: (value: number) => !value && value !== 0,\n boolean: (value: boolean) => !value,\n object: (value: any) => !value || !Object.keys(value).length,\n undefined: () => true\n};\n\n@Pipe({\n name: 'default'\n})\nexport class DefaultPipe implements PipeTransform {\n transform(value, defaultValue) {\n return shouldDefault[typeof value](value) ? defaultValue : value;\n }\n}\n","const get = require('lodash.get');\nimport { getColor } from 'random-material-color';\nimport {\n NodeType, Term, JSONLD, ICycleJSONLD, ISiteJSONLD, IImpactAssessmentJSONLD, EmissionMethodTier\n} from '@hestia-earth/schema';\nimport { fileToExt } from '@hestia-earth/api';\nimport { isEmpty, unique } from '@hestia-earth/utils';\n\nexport const gitHome = 'https://gitlab.com/hestia-earth';\nexport const gitRawBaseUrl = 'https://glcdn.githack.com/hestia-earth';\nexport const gitBranch = () => ['dev', 'staging'].some(env => baseUrl().includes(env)) ? 'develop' : 'master';\n\nexport const isChrome = () => window.navigator.userAgent.includes('Chrome');\n\nexport const baseUrl = () =>\n window.location.origin.includes('localhost') ?\n 'https://www-dev.hestia.earth' :\n window.location.origin.includes('hestia.earth') ?\n window.location.origin :\n 'https://www.hestia.earth';\n\nexport const isExternal = () => baseUrl() !== window.location.origin;\n\nconst parseErrorStatus = (error: any) => (error?.statusText || '').toLowerCase().replace(/\\s/g, '-');\n\nconst parseErrorMessage = (error: any) =>\n get(error, 'error.error', get(error, 'error.message', get(error, 'error', get(error, 'message', error))));\n\nexport const handleAPIError = (error: any) => {\n try {\n error = parseErrorMessage(error);\n }\n catch (_) { }\n throw error;\n};\n\nexport const errorText = (error: any): string => {\n if (typeof error === 'string') {\n return error;\n }\n const err = parseErrorMessage(error);\n return parseErrorStatus(err) || err;\n};\n\nexport const filterParams = (obj: any) => {\n const res: {\n [x: string]: string;\n } = {};\n Object.keys(obj).sort().forEach(key => {\n const value = obj[key];\n if (value && value !== 'undefined') {\n res[key] = `${value}`;\n }\n });\n return res;\n};\n\nexport const waitFor = (variable: string, callback: () => void) => {\n if (variable in window) {\n return callback();\n }\n setTimeout(() => waitFor(variable, callback), 100);\n};\n\nexport const bottom = (element: HTMLElement) => element.offsetTop + element.getBoundingClientRect().height;\n\nexport const isScrolledBelow = (element: HTMLElement) => element ? window.scrollY > bottom(element) : false;\n\nexport const scrollToEl = (id: string, retries = 0) => {\n const el = document.getElementById(id);\n setTimeout(() => el ? el.scrollIntoView() : (retries < 10 ? scrollToEl(id, retries + 1) : null), 100);\n};\n\nexport const scrollTop = () => window.scrollTo(0, 0);\n\nexport const safeJSONParse = <T>(value: string, defaultValue?: any) => {\n try {\n return typeof value === 'string' ? JSON.parse(value) as T : value;\n }\n catch (err) {\n return defaultValue;\n }\n};\n\nexport const safeJSONStringify = (value: string) => typeof value === 'string' ? value : JSON.stringify(value);\n\nexport const arrayValue = (values: any[], isAverage: boolean) =>\n (values || []).reduce((prev: number, curr) => prev + parseFloat(`${curr}`), 0) / (isAverage ? values.length : 1);\n\nexport const propertyValue = (value: string | number | ((string | number)[]), isAverage = false): number =>\n typeof value === 'undefined' || value === null ?\n null as any :\n (\n Array.isArray(value) ? arrayValue(value, isAverage) : parseFloat(`${value}`)\n );\n\nexport const dataValue = (data: any, index: number, property: string) => {\n try {\n return propertyValue(data[property][index].value);\n }\n catch (err) {\n return null;\n }\n};\n\nexport interface IGroupedNode<T> {\n nodes: T[];\n index: number;\n value: number[];\n dates?: any[];\n sd?: number[];\n min?: number[];\n max?: number[];\n inputs?: any[];\n depthUpper?: number[];\n depthLower?: number[];\n startDate?: string[];\n endDate?: string[];\n};\n\nexport interface IGroupedNodesValues<T> {\n [nodeId: string]: IGroupedNode<T>;\n}\n\nexport interface IGroupedNodesValue<T> {\n term: Term;\n /**\n * Enable ordering ny methodTier\n */\n methodTierOrder: number;\n values: IGroupedNodesValues<T>;\n originalValues: {\n [nodeId: string]: {\n value: number;\n };\n };\n};\n\nexport interface IGroupedNodes<T> {\n [termId: string]: IGroupedNodesValue<T>;\n}\n\nexport interface IGroupedKeys<T> {\n key: string;\n value: IGroupedNodesValue<T>;\n}\n\nexport const grouppedKeys = <T>(value: IGroupedNodes<T>): IGroupedKeys<T>[] =>\n Object.keys(value).map(key => ({ key, value: value[key] }));\n\nconst concatBlankNodeValue = (value: any, newValue: any) => {\n const valueArray = Array.isArray(value) ? value : [value];\n const newValueArray = Array.isArray(newValue) ? newValue : [newValue];\n return [...valueArray, ...newValueArray];\n};\n\nconst methodTierOrder = (methodTier: EmissionMethodTier) => [\n EmissionMethodTier.measured,\n EmissionMethodTier['tier 3'],\n EmissionMethodTier['tier 2'],\n EmissionMethodTier['tier 1'],\n EmissionMethodTier.background\n].indexOf(methodTier);\n\nconst isMethodModelAllowed = (node: any, filterMethod?: Term) =>\n !filterMethod || !node['methodModel'] || node['methodModel']['@id'] === filterMethod['@id'];\n\nexport const grouppedValueKeys = [\n 'dates', 'sd', 'min', 'max', 'inputs', 'depthUpper', 'depthLower', 'startDate', 'endDate',\n 'methodTier', 'methodModel'\n];\n\nexport const groupNodesByTerm = <T extends ICycleJSONLD | IImpactAssessmentJSONLD | ISiteJSONLD, R>(\n nodes: T[] = [],\n key: 'impacts' | 'emissionsResourceUse' | 'inputs' | 'products' | 'emissions' | 'measurements',\n originalValues: T[] = [],\n filterMethod?: Term\n): IGroupedNodes<R> => {\n const groups: IGroupedNodes<R> = nodes.reduce((prev, node, index) => (node[key] || []).reduce((group, blankNode) => {\n if (!isMethodModelAllowed(blankNode, filterMethod)) {\n return group;\n }\n\n const nodeId = node['@id'];\n const termId = blankNode.term['@id'];\n group[termId] = group[termId] || {\n term: blankNode.term,\n methodTierOrder: methodTierOrder(blankNode.methodTier),\n values: {},\n originalValues: {}\n };\n group[termId].values[nodeId] = group[termId].values[nodeId] || { index, nodes: [], value: [] };\n group[termId].values[nodeId].nodes.push(blankNode);\n group[termId].values[nodeId].value = concatBlankNodeValue(\n group[termId].values[nodeId].value,\n blankNode.value\n );\n grouppedValueKeys.forEach(arrayKey => {\n const newValue = get(blankNode, arrayKey, []);\n group[termId].values[nodeId][arrayKey] = [\n ...(group[termId].values[nodeId][arrayKey] || []),\n ...(Array.isArray(newValue) ? newValue : [newValue])\n ];\n });\n return group;\n }, prev), {} as IGroupedNodes<R>);\n\n // compile original values\n Object.values(groups).map(group => {\n Object.keys(group.values).map(nodeId => {\n const { index } = group.values[nodeId];\n const termId = group.term['@id'];\n const originalValue = get(originalValues, `[${index}].${key}`, []).filter((val: any) => val.term['@id'] === termId);\n if (originalValue.length > 0) {\n const value = originalValue.reduce((array: any[], curr: any) => concatBlankNodeValue(\n array,\n curr.value\n ), []);\n group.originalValues[nodeId] = { value: propertyValue(value) };\n }\n });\n });\n\n return groups;\n};\n\nexport const ellipsis = (text = '', maxlength = 20) =>\n text.length > maxlength ? `${text.substring(0, maxlength)}...` : text;\n\nconst mapsQuery = 'https://www.google.com/maps/search/?api=1&query=';\n\nexport const mapsUrl = (location?: { lat?: number; lng?: number; name?: string }) =>\n location ? (\n location.lat && location.lng ?\n `${mapsQuery}${location.lat},${location.lng}` :\n (location.name ? `${mapsQuery}${encodeURI(location.name)}` : undefined)\n ) : undefined;\n\nexport const keyToLabel = (key: string) =>\n `${key[0].toUpperCase()}${\n key.replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/([_])([a-zA-Z])/g, g => ` ${g[1].toUpperCase()}`)\n .substring(1)\n }`;\n\nexport const toDashCase = (value?: string) =>\n value ?\n value\n // handle dates followed by capital letter\n .replace(/([\\d]{4})([A-Z]{1})/g, g => `${g.substring(0, 4)}-${g[4].toLowerCase()}`)\n // handle molecules\n .replace(/([\\d]{1}[A-Z]{1})/g, g => g.toLowerCase())\n // handle all capital letters\n .replace(/([A-Z])/g, g => `-${g[0].toLowerCase()}`)\n // handle years\n .replace(/([0-9]{4})/g, g => `-${g}`) :\n null;\n\nconst nodeDefaultLabel: {\n [type in NodeType]?: (data: JSONLD<any>) => string;\n} = {\n [NodeType.ImpactAssessment]: ({ name, country, endDate, product }: IImpactAssessmentJSONLD) =>\n name ? name.replace(`${product?.name}, `, '') : [\n product?.name,\n country?.name,\n endDate\n ].filter(Boolean).join(', '),\n [NodeType.Site]: ({ name, description }: ISiteJSONLD) => name || description!\n};\n\nexport const defaultLabel = (node?: any) =>\n node ? (\n node['@type'] in nodeDefaultLabel ? nodeDefaultLabel[node['@type']](node) : node.name\n ) || node['@id'] || node.id : '';\n\nexport const itemColor = (index: number) => getColor({ text: `${index}` });\n\nexport const listColor = <T>(_v: T, index: number): string => itemColor(index);\n\nconst reduceValues = (values: any[]) =>\n values.length ? values.reduce((p, v) => p + propertyValue(v.value), 0) : undefined;\n\nexport const formatDiffValues = (originalValues: any[] = [], recalculatedValues: any[] = []) => {\n const originalValuesFiltered = originalValues.filter((value) => !value.deleted);\n const recalculatedValuesFiltered = recalculatedValues.filter((value) => !value.deleted);\n const terms = unique([...originalValuesFiltered, ...recalculatedValuesFiltered].map((v) => v.term['@id'])).sort();\n const values = terms.map((termId) => {\n const original = originalValuesFiltered.filter((v) => termId === v.term['@id']);\n const recalculated = recalculatedValuesFiltered.filter((v) => termId === v.term['@id']);\n const { term } = original[0] || recalculated[0] || { term: { '@id': termId } };\n return {\n term,\n original: reduceValues(original),\n recalculated: reduceValues(recalculated)\n };\n });\n return values;\n};\n\nexport const emptyValue = (value: any) => isEmpty(value) || isNaN(propertyValue(value));\n\nexport const repeat = (times = 0) => (Array.from(Array(times), Math.random));\n\nexport const filenameWithoutExt = (filename = '') => {\n const file = fileToExt(filename, '');\n // remove last .\n return file.endsWith('.') ? file.substring(0, file.length - 1) : file;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { ellipsis } from './utils';\n\n@Pipe({\n name: 'ellipsis'\n})\nexport class EllipsisPipe implements PipeTransform {\n transform(value: any, maxLength?: number): unknown {\n return ellipsis(`${value}`, maxLength);\n }\n}\n","import { Term, ITermJSONLD, TermTermType, isExpandable } from '@hestia-earth/schema';\n\nimport { keyToLabel } from '../common/utils';\n\nexport const termProperties = (term: Term | ITermJSONLD) => Object.keys(term).filter(\n key => !isExpandable(term[key]) && ![\n 'pinned', 'expanded', 'extended', 'selected', 'loading',\n '_score', '@type', '@id', '@context', 'createdAt',\n 'name', 'synonyms', 'termType', 'location', 'properties', 'schemaVersion'\n ].includes(key)\n);\n\nexport const findPropertyById = ({ defaultProperties }: Term | ITermJSONLD, key: keyof ITermJSONLD) =>\n (defaultProperties || []).find(({ term }) => term!['@id'] === key);\n\nexport const termLocationName = ({ gadmFullName }: Term | ITermJSONLD) => ({\n name: gadmFullName || ''\n});\n\nexport const termLocation = ({ latitude, longitude }: Term | ITermJSONLD) => ({\n lat: latitude!,\n lng: longitude!\n});\n\nconst termTypeToLabel: {\n [type in TermTermType]?: string;\n} = {\n [TermTermType.methodEmissionResourceUse]: 'Method (Emissions)',\n [TermTermType.methodMeasurement]: 'Method (Measurement)',\n [TermTermType.pesticideAI]: 'Pesticide Active Ingredient',\n [TermTermType.standardsLabels]: 'Standards & Labels',\n [TermTermType.usdaSoilType]: 'USDA Soil Type'\n};\n\nexport const termTypeLabel = (type: TermTermType | string = 'N/A'): string =>\n type in termTypeToLabel ? termTypeToLabel[type] : keyToLabel(type);\n\nexport interface ITermTypeElem {\n label?: string;\n termType: TermTermType | string;\n children?: ITermTypeElem[];\n visible?: boolean;\n count?: number;\n}\n\nconst termTypesToChildren = (termTypes: TermTermType[]) =>\n termTypes.map(termType => ({ label: termTypeLabel(termType), termType } as ITermTypeElem));\n\nconst groups: {\n [type: string]: ITermTypeElem;\n} = Object.freeze({\n [TermTermType.emission]: {\n label: 'Emissions & Resource Use',\n termType: 'Emissions & Resource Use',\n children: termTypesToChildren([\n TermTermType.emission,\n TermTermType.resourceUse,\n TermTermType.model,\n TermTermType.characterisedIndicator,\n TermTermType.endpointIndicator,\n TermTermType.methodEmissionResourceUse\n ])\n },\n [TermTermType.region]: {\n label: termTypeLabel(TermTermType.region),\n termType: TermTermType.region,\n children: []\n },\n infrastructure: {\n label: 'Infrastructure & Equipment',\n termType: 'Infrastructure & Equipment',\n children: termTypesToChildren([\n TermTermType.building,\n TermTermType.cropProtection,\n TermTermType.cropSupport,\n TermTermType.irrigation,\n TermTermType.machinery\n ])\n },\n input: {\n label: 'Inputs',\n termType: 'Inputs',\n children: termTypesToChildren([\n TermTermType.antibiotic,\n TermTermType.electricity,\n TermTermType.fuel,\n TermTermType.material,\n TermTermType.inorganicFertilizer,\n TermTermType.organicFertilizer,\n TermTermType.other,\n TermTermType.pesticideAI,\n TermTermType.pesticideBrandName,\n TermTermType.soilAmendment,\n TermTermType.transport,\n TermTermType.water\n ])\n },\n [TermTermType.measurement]: {\n label: 'Measurements',\n termType: 'Measurements',\n children: termTypesToChildren([\n TermTermType.measurement,\n TermTermType.soilTexture,\n TermTermType.soilType,\n TermTermType.usdaSoilType,\n TermTermType.methodMeasurement\n ])\n },\n practice: {\n label: 'Practices',\n termType: 'Production Practices',\n children: termTypesToChildren([\n TermTermType.animalManagement,\n TermTermType.aquacultureManagement,\n TermTermType.biodiversity,\n TermTermType.cropEstablishment,\n TermTermType.cropResidueManagement,\n TermTermType.excretaManagement,\n TermTermType.landUseManagement,\n TermTermType.operation,\n TermTermType.standardsLabels,\n TermTermType.system,\n TermTermType.tillage,\n TermTermType.waterRegime,\n ])\n },\n product: {\n label: 'Products',\n termType: 'Products',\n children: termTypesToChildren([\n TermTermType.crop,\n TermTermType.cropResidue,\n TermTermType.excreta,\n TermTermType.liveAnimal,\n TermTermType.liveAquaticSpecies,\n TermTermType.animalProduct,\n TermTermType.processedFood\n ])\n },\n [TermTermType.property]: {\n label: termTypeLabel(TermTermType.property),\n termType: TermTermType.property,\n children: []\n }\n});\n\nexport const termTypeGroups: ITermTypeElem[] = [\n groups.property,\n groups.region,\n groups.input,\n groups.emission,\n groups.product,\n groups.practice,\n groups.measurement,\n groups.infrastructure\n];\n\nconst termToParent: {\n [type in TermTermType]?: string;\n} = {\n [TermTermType.property]: 'Properties',\n [TermTermType.region]: 'Geographies'\n};\n\nexport const termChildToParent = (termType: string): ITermTypeElem =>\n termTypeGroups.find(({ children }) => (children || []).some(child => child.termType === termType)) ||\n { termType: termToParent[termType] };\n\nexport const sortOrder: TermTermType[] = [\n TermTermType.property,\n TermTermType.crop,\n TermTermType.cropResidue,\n TermTermType.animalProduct,\n TermTermType.liveAnimal,\n TermTermType.liveAquaticSpecies,\n TermTermType.processedFood,\n TermTermType.emission,\n TermTermType.resourceUse,\n TermTermType.inorganicFertilizer,\n TermTermType.organicFertilizer,\n TermTermType.soilAmendment,\n TermTermType.soilTexture,\n TermTermType.water,\n TermTermType.material,\n TermTermType.antibiotic,\n TermTermType.electricity,\n TermTermType.fuel,\n TermTermType.aquacultureManagement,\n TermTermType.biodiversity,\n TermTermType.cropResidueManagement,\n TermTermType.animalManagement,\n TermTermType.waterRegime,\n TermTermType.system,\n TermTermType.tillage,\n TermTermType.landUseManagement,\n TermTermType.operation,\n TermTermType.cropEstablishment,\n TermTermType.measurement,\n TermTermType.soilType,\n TermTermType.usdaSoilType,\n TermTermType.methodMeasurement,\n TermTermType.building,\n TermTermType.cropProtection,\n TermTermType.cropSupport,\n TermTermType.irrigation,\n TermTermType.machinery,\n TermTermType.model,\n TermTermType.characterisedIndicator,\n TermTermType.endpointIndicator,\n TermTermType.methodEmissionResourceUse,\n TermTermType.other,\n TermTermType.region,\n TermTermType.pesticideAI,\n TermTermType.pesticideBrandName,\n TermTermType.standardsLabels\n];\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { termTypeLabel } from '../terms/terms.model';\n\n@Pipe({\n name: 'keyToLabel'\n})\nexport class KeyToLabelPipe implements PipeTransform {\n transform(value: string) {\n // using termTypeLabel here which defaults to `keyToLabel` function\n return termTypeLabel(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'keys'\n})\nexport class KeysPipe implements PipeTransform {\n transform(value, sort = false): any {\n const keys = Object.keys(value).map(key => ({ key, value: value[key] }));\n if (sort) {\n keys.sort((a, b) => a.key.localeCompare(b.key));\n }\n return keys;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as pluralize from 'pluralize';\n\n@Pipe({\n name: 'pluralize'\n})\nexport class PluralizePipe implements PipeTransform {\n transform(value: string, times = 0): unknown {\n return pluralize(value, times);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isUndefined, isNumber, toPrecision } from '@hestia-earth/utils';\n\n@Pipe({\n name: 'precision'\n})\nexport class PrecisionPipe implements PipeTransform {\n transform(value: string|number, precision?: string|number) {\n return isUndefined(value) ?\n null : (\n isNumber(value) ?\n `${toPrecision(parseFloat(`${value}`), parseInt(`${precision}`, 10))}`.replace(/\\.00$/, '') :\n value\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { HeFontawesomeModule } from '../fontawesome/fontawesome.module';\n\nimport { SocialTagsComponent } from './social-tags/social-tags.component';\nimport { ToastComponent } from './toast/toast.component';\nimport { BindOnceDirective } from './bind-once.directive';\nimport { DefaultPipe } from './default.pipe';\nimport { EllipsisPipe } from './ellipsis.pipe';\nimport { KeyToLabelPipe } from './key-to-label.pipe';\nimport { KeysPipe } from './keys.pipe';\nimport { PluralizePipe } from './pluralize.pipe';\nimport { PrecisionPipe } from './precision.pipe';\n\nconst components = [\n SocialTagsComponent,\n ToastComponent,\n BindOnceDirective,\n DefaultPipe,\n EllipsisPipe,\n KeysPipe,\n PluralizePipe,\n KeyToLabelPipe,\n PrecisionPipe\n];\n\n@NgModule({\n declarations: components,\n exports: [\n HeFontawesomeModule,\n ...components\n ],\n imports: [\n CommonModule, FormsModule, RouterModule,\n HeFontawesomeModule\n ]\n})\nexport class HeCommonLightModule { }\n","import { propertyValue } from './utils';\n\nconst SUCCESS_CRITERION_MAX_DELTA_PERCENT = 5;\nconst WARNING_CRITERION_MAX_DELTA_PERCENT = 20;\n\nexport enum DeltaColour {\n Success = 'success',\n Warning = 'warning',\n Danger = 'danger'\n}\n\nexport enum DeltaDisplayType {\n absolute = 'absolute',\n percent = 'percent'\n}\n\ntype deltaTypeMapping = {\n [type in DeltaDisplayType]?: (value: number, original: number) => number;\n};\n\nconst deltaPerType: deltaTypeMapping = {\n [DeltaDisplayType.absolute]: (value, original) => value - original,\n [DeltaDisplayType.percent]: (value, original) => ((value - original) / original) * 100\n};\n\nexport const roundValue = (value: any) => +`${value}`.substring(0, 10);\n\nexport const delta = (\n value: any,\n originalValue: any,\n displayType = DeltaDisplayType.percent,\n mapping?: deltaTypeMapping\n) => {\n const vvalue = roundValue(propertyValue(value));\n const voriginalValue = roundValue(propertyValue(originalValue));\n const deltaFuncs = { ...deltaPerType, ...mapping };\n const diff = vvalue === voriginalValue ? 0 : deltaFuncs[displayType]!(vvalue, voriginalValue);\n return Number.isFinite(diff) ? (diff === -0 ? 0 : diff) : 0;\n};\n\nenum PercentDeltaConditions {\n recalculated0 = 'recalculated should be 0',\n original0 = 'original is 0'\n}\n\nconst calculatePercentDeltaConditions: {\n [key in PercentDeltaConditions]: (original: number, recalculated: number) => boolean;\n} = {\n [PercentDeltaConditions.recalculated0]: (original, recalculated) => original > 0 && recalculated === 0,\n [PercentDeltaConditions.original0]: (original, recalculated) => original === 0 && recalculated > 0\n};\n\nconst calculatePercentDeltaResult: {\n [key in PercentDeltaConditions | 'default']: (original: number, recalculated: number) => number;\n} = {\n [PercentDeltaConditions.recalculated0]: (original, recalculated) => (recalculated - original) / (original + 1),\n // Always considered an error so deliberately exceed SUCCESS_CRITERION_MAX_DELTA_PERCENT\n [PercentDeltaConditions.original0]: (original, recalculated) => Math.sign(recalculated - original),\n default: (original, recalculated) => (recalculated - original) / original\n};\n\nexport const calculatePercentDelta = (recalculated: number, original: number) => {\n const matchingCondition =\n Object.values(PercentDeltaConditions).find((value) =>\n calculatePercentDeltaConditions[value](original, recalculated)\n ) || 'default';\n return calculatePercentDeltaResult[matchingCondition](original, recalculated) * 100;\n};\n\nexport const customDeltaFuncs = {\n [DeltaDisplayType.percent]: calculatePercentDelta\n};\n\nexport const evaluateSuccess = (deltaValue: number) =>\n Math.abs(deltaValue) < SUCCESS_CRITERION_MAX_DELTA_PERCENT\n ? DeltaColour.Success\n : Math.abs(deltaValue) < WARNING_CRITERION_MAX_DELTA_PERCENT\n ? DeltaColour.Warning\n : DeltaColour.Danger;\n","import { Component, Input } from '@angular/core';\n\nimport { DeltaDisplayType, delta, customDeltaFuncs, evaluateSuccess } from '../delta-utils';\nimport { emptyValue } from '../utils';\n\n@Component({\n selector: 'he-blank-node-value-delta',\n templateUrl: './blank-node-value-delta.component.html',\n styleUrls: ['./blank-node-value-delta.component.scss']\n})\nexport class BlankNodeValueDeltaComponent {\n @Input()\n private value: any;\n @Input()\n private originalValue: any;\n @Input()\n public displayType = DeltaDisplayType.percent;\n\n public DeltaDisplayType = DeltaDisplayType;\n\n public get hide() {\n return emptyValue(this.value) || emptyValue(this.originalValue);\n }\n\n public get delta() {\n return delta(this.value, this.originalValue, this.displayType, customDeltaFuncs);\n }\n\n public get color() {\n return this.displayType === DeltaDisplayType.percent ? evaluateSuccess(this.delta) : '';\n }\n}\n","<small [class.is-hidden]=\"hide\">\n <span class=\"has-text-{{color}}\">\n <span *ngIf=\"delta > 0\">+</span>\n <ng-container [ngSwitch]=\"displayType\">\n <ng-container *ngSwitchCase=\"DeltaDisplayType.absolute\">\n <span *bindOnce=\"delta\">{{delta | precision:3}}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"DeltaDisplayType.percent\">\n <span *bindOnce=\"delta\">{{delta | number:'1.0-2'}}</span>\n <span>%</span>\n </ng-container>\n </ng-container>\n </span>\n</small>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Term } from '@hestia-earth/schema';\n\nimport { propertyValue, formatDiffValues } from '../utils';\n\ninterface IValue {\n term: Term;\n original?: number;\n recalculated?: number;\n}\n\n@Component({\n selector: 'he-blank-node-diffs',\n templateUrl: './blank-node-diffs.component.html',\n styleUrls: ['./blank-node-diffs.component.scss']\n})\nexport class BlankNodeDiffsComponent implements OnInit {\n @Input()\n public originalValues: any[] = [];\n @Input()\n public recalculatedValues: any[] = [];\n\n public propertyValue = propertyValue;\n public values: IValue[] = [];\n\n ngOnInit() {\n this.values = formatDiffValues(this.originalValues, this.recalculatedValues);\n }\n}\n","<div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-3\" *bindOnce=\"values\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th>Original</th>\n <th>Recalculated</th>\n <th>Difference</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let value of values\"\n [class.has-background-light]=\"!!value.original && value.original !== value.recalculated\"\n >\n <td class=\"width-auto\" [attr.title]=\"value.term.name\">\n <ng-container *ngTemplateOutlet=\"termLink; context: {$implicit: value.term}\"></ng-container>\n </td>\n <td>\n <span>{{value.original === undefined ? '-' : value.original}}</span>\n </td>\n <td>\n <span>{{value.recalculated === undefined ? '-' : value.recalculated}}</span>\n </td>\n <td class=\"is-nowrap\">\n <he-blank-node-value-delta\n [value]=\"value.recalculated\"\n [originalValue]=\"value.original\"\n ></he-blank-node-value-delta>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<ng-template #termLink let-term>\n <a [routerLink]=\"['/', 'term', term['@id']]\" target=\"_blank\">\n <span class=\"is-nowrap has-text-ellipsis\">{{term.name}}</span>\n </a>\n</ng-template>\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\n\nexport const HE_API_BASE_URL = new InjectionToken<string>('HE_API_BASE_URL');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeCommonService {\n constructor(\n @Inject(HE_API_BASE_URL) private _apiBaseUrl: string\n ) {}\n\n public get apiBaseUrl() {\n return this._apiBaseUrl || '/api';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { DataState, nodeTypeToParam } from '@hestia-earth/api';\nimport { ICycleJSONLD, IImpactAssessmentJSONLD, ISiteJSONLD, NodeType, TermTermType } from '@hestia-earth/schema';\n\nimport { termChildToParent } from '../terms/terms.model';\nimport { filterParams, handleAPIError } from '../common/utils';\nimport { HeCommonService } from '../common/common.service';\nimport { baseUrl } from '../common/utils';\nimport { HeAuthService } from '../auth/auth.service';\n\nconst nodeTypeUrl = (apiBaseUrl: string, type?: NodeType) => type ? `${apiBaseUrl}/${nodeTypeToParam(type)}` : '';\n\n/**\n * Get the full url to fetch the node data.\n *\n * @param apiBaseUrl The url of the API hosting the data.\n * @param node The node with a type, id and optionally a dataState\n * @returns The full url.\n */\nexport const nodeUrl = (apiBaseUrl: string, { dataState, ...node }: IJSONNode) =>\n `${nodeTypeUrl(apiBaseUrl, node['@type'] || node.type)}/${node['@id'] || node.id}${\n dataState ? `?dataState=${dataState}` : ''\n }`;\n\nexport const nodeLogsUrl = (apiBaseUrl: string, { dataState, ...node }: IJSONNode) =>\n `${nodeUrl(apiBaseUrl, node)}/log${dataState ? `?dataState=${dataState}` : ''}`;\n\nexport const lookupUrl = (filename: string) =>\n filename.startsWith('http') ? filename : `${baseUrl()}/glossary/lookups/${filename}.csv`;\n\nexport const termTypeLookupUrl = (termType: TermTermType) =>\n `${baseUrl()}/glossary/${termChildToParent(termType).termType}/${termType}.csv`;\n\nexport interface IJSONNode {\n '@type'?: NodeType;\n '@id'?: string;\n type?: NodeType;\n id?: string;\n dataState?: DataState;\n}\n\nexport interface IRelatedNode {\n '@type': NodeType;\n '@id': string;\n [x: string]: string;\n}\n\nexport interface IJSONData {\n [NodeType.Cycle]?: ICycleJSONLD[];\n [NodeType.Site]?: ISiteJSONLD[];\n [NodeType.ImpactAssessment]?: IImpactAssessmentJSONLD[];\n}\n\nexport interface INodeMissingLookupLog {\n filename: string;\n termId: string;\n column: string;\n // attributes linked to the models\n model?: string;\n term?: string;\n key?: string;\n}\n\nexport interface INodeTermLogs {\n [modelKey: string]: {\n isKey: boolean;\n shouldRun?: boolean;\n missingLookups?: INodeMissingLookupLog[];\n requirements?: { [key: string]: any };\n logs?: { [key: string]: any };\n [key: string]: any;\n };\n}\n\nexport interface INodeLogs {\n [term: string]: INodeTermLogs;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeNodeService {\n constructor(\n protected http: HttpClient,\n protected authService: HeAuthService,\n protected commonService: HeCommonService\n ) { }\n\n get$<T>({ dataState, ...node }: IJSONNode) {\n return this.http.get<T>(this.nodeUrl(node), {\n headers: this.authService.headers,\n params: filterParams({ dataState })\n });\n }\n\n get<T>(node: IJSONNode, defaultForState = true) {\n return this.get$<T>(node)\n .toPromise()\n .catch(() => node.dataState && defaultForState ? ((node as any) as T) : ({}) as T);\n }\n\n getLog({ dataState, ...node }: IJSONNode) {\n return this.http.get(`${this.nodeUrl(node)}/log`, {\n headers: this.authService.headers,\n responseType: 'text',\n params: filterParams({ dataState })\n }).pipe(\n catchError(() => of(''))\n );\n }\n\n getMissingLookupsLog({ dataState, ...node }: IJSONNode) {\n return this.http.get<INodeMissingLookupLog[]>(`${this.nodeUrl(node)}/log/lookups`, {\n headers: this.authService.headers,\n params: filterParams({ dataState })\n }).toPromise().catch(handleAPIError);\n }\n\n getModelsLog({ dataState, ...node }: IJSONNode) {\n return this.http.get<any>(`${this.nodeUrl(node)}/log/models`, {\n headers: this.authService.headers,\n params: filterParams({ dataState })\n }).toPromise().catch(handleAPIError);\n }\n\n triggerPipeline({ dataState, ...node }: IJSONNode) {\n return this.http.post(`${this.nodeUrl(node)}/pipeline`, dataState ? { dataState } : {}, {\n headers: this.authService.headers\n }).toPromise().catch(handleAPIError);\n }\n\n downloadRaw<T = any>(url: string, responseType: any = 'json') {\n return this.http.get<T>(url, { responseType })\n .toPromise()\n .catch(() => (responseType === 'json' ? ({}) : '') as T);\n }\n\n public nodeTypeUrl(type: any) {\n return nodeTypeUrl(this.commonService.apiBaseUrl, type);\n }\n\n public nodeUrl(node: IJSONNode) {\n return nodeUrl(this.commonService.apiBaseUrl, node);\n }\n\n public nodeLogsUrl(node: IJSONNode) {\n return nodeLogsUrl(this.commonService.apiBaseUrl, node);\n }\n\n public async downloadLookup(filename: string) {\n try {\n const url = lookupUrl(filename);\n return this.downloadRaw<string>(url, 'text');\n }\n catch (_err) {\n return null;\n }\n }\n\n public async lookupLink(termType: TermTermType) {\n try {\n const data = await this.downloadLookup(termType);\n return data?.startsWith('term.id') ? lookupUrl(termType) : null;\n }\n catch (_err) {\n return null;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { forkJoin, from, of, ReplaySubject } from 'rxjs';\nimport { catchError, map, take } from 'rxjs/operators';\nimport { NodeType, Product, Term, TermTermType } from '@hestia-earth/schema';\nimport * as csvtojson from 'csvtojson';\n\nimport { HeNodeService } from '../node/node.service';\nimport { gitBranch, gitHome, gitRawBaseUrl } from '../common/utils';\n\nconst gitUrl = () => `${gitHome}/hestia-aggregation-engine/-/blob/${gitBranch()}`;\nconst rawUrl = () => `${gitRawBaseUrl}/hestia-aggregation-engine/-/raw/${gitBranch()}`;\n\nexport const lookups = Object.freeze({\n cropYield: 'region-crop-cropGroupingFaostatProduction-yield',\n cropGroupingColumn: 'cropGroupingFaostatProduction'\n});\n\nexport interface IAggregationModel {\n type: NodeType;\n /**\n * Path to the implementation (code) of the model.\n */\n path: string;\n /**\n * Path to the documentation of the model.\n */\n docPath: string;\n dataPath: string;\n '@id'?: string;\n}\n\ninterface IAggregationModelLinks {\n links: IAggregationModel[];\n}\n\nexport interface ILookups {\n crop: any[];\n cropYield: any[];\n}\n\nexport interface ITriggerCountryParams {\n country: Term;\n product: Product;\n '@type'?: NodeType;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeAggregationEngineService {\n private modelsLoading = false;\n private modelsLoaded = false;\n private _models = new ReplaySubject<IAggregationModel[]>(1);\n\n private lookupsLoading = false;\n private lookupsLoaded = false;\n private _lookups = new ReplaySubject<ILookups>(1);\n\n constructor(\n protected http: HttpClient,\n protected nodeService: HeNodeService\n ) {\n this.init();\n }\n\n private async init() {\n await this.loadModels().toPromise();\n }\n\n private loadModels() {\n this.modelsLoading = true;\n return this.http.get<IAggregationModelLinks>(`${rawUrl()}/model-links.json`).pipe(\n catchError(() => of({ links: [] } as IAggregationModelLinks)),\n map(({ links }) => {\n this._models.next(links.map(({ path: modelPath, docPath, ...link }) => ({\n ...link,\n path: `${gitUrl()}/${modelPath}`,\n docPath: `${gitUrl()}/${docPath}`\n })));\n this.modelsLoading = false;\n this.modelsLoaded = true;\n return links;\n })\n );\n }\n\n public get models$() {\n return this.modelsLoading || this.modelsLoaded ? this._models.asObservable() : this.loadModels();\n }\n\n public models() {\n return this.models$.pipe(take(1)).toPromise();\n }\n\n public model$(model: Partial<IAggregationModel>) {\n return this.models$.pipe(\n map(models => models.find(m => Object.keys(model).every(key => model[key] === m[key])))\n );\n }\n\n public model(model: Partial<IAggregationModel>) {\n return this.model$(model).pipe(take(1)).toPromise();\n }\n\n private async loadLookup(filename: string) {\n const data = await this.nodeService.downloadLookup(filename);\n return csvtojson({ delimiter: 'auto' }).fromString(data!);\n }\n\n private loadLookups() {\n return forkJoin({\n cropYield: from(this.loadLookup(lookups.cropYield)),\n crop: from(this.loadLookup(TermTermType.crop))\n }).pipe(\n map(values => {\n this._lookups.next(values);\n this.lookupsLoading = false;\n this.lookupsLoaded = true;\n return values;\n })\n );\n }\n\n public get lookups$() {\n return this.lookupsLoading || this.lookupsLoaded ? this._lookups.asObservable() : this.loadLookups();\n }\n\n public lookups() {\n return this.lookups$.pipe(take(1)).toPromise();\n }\n}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { of, ReplaySubject } from 'rxjs';\nimport { catchError, map, take } from 'rxjs/operators';\nimport { NodeType } from '@hestia-earth/schema';\n\nimport { baseUrl, toDashCase, gitHome, gitRawBaseUrl, gitBranch } from '../common/utils';\n\nexport const HE_ORCHESTRATOR_BASE_URL = new InjectionToken<string>('HE_ORCHESTRATOR_BASE_URL');\n\nconst gitUrl = () => `${gitHome}/hestia-engine-models/-/blob/${gitBranch()}`;\nconst rawUrl = () => `${gitRawBaseUrl}/hestia-engine-models/-/raw/${gitBranch()}`;\n\nexport const findConfigModels = ({ models }: IOrchestratorConfig, modelId: string, modelKey: string) =>\n models.flat().filter(({ value, key }) => modelId.startsWith(value) && (!modelKey || key === modelKey));\n\nexport const pathToApiDocsPath = (model: string, term?: string) =>\n [\n baseUrl(),\n 'docs',\n [\n '#hestia-calculation-models',\n toDashCase(model),\n toDashCase(term)\n ].filter(Boolean).join('-')\n ].join('/');\n\nexport interface IModel {\n /**\n * Path to the implementation (code) of the model.\n */\n path: string;\n /**\n * Path to the documentation of the model.\n */\n docPath: string;\n /**\n * Path to the API Documentation.\n */\n apiDocsPath?: string;\n /**\n * The name of the model used as `methodModel`.\n */\n model: string;\n /**\n * The term the model is associated with.\n */\n term?: string;\n /**\n * A key in the model if term does not exist.\n */\n modelKey?: string;\n}\n\ninterface IModelLinks {\n links: IModel[];\n}\n\nexport interface IOrchestratorModelConfig {\n key: string;\n model: string;\n value: string;\n}\n\nexport interface IOrchestratorConfig {\n models: IOrchestratorModelConfig[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeEngineService {\n private modelsLoading = false;\n private modelsLoaded = false;\n private _models = new ReplaySubject<IModel[]>(1);\n\n constructor(\n @Inject(HE_ORCHESTRATOR_BASE_URL) private _orchestratorBaseUrl: string,\n protected http: HttpClient\n ) {\n this.init();\n }\n\n private async init() {\n await this.loadModels().toPromise();\n }\n\n private loadModels() {\n this.modelsLoading = true;\n return this.http.get<IModelLinks>(`${rawUrl()}/model-links.json`).pipe(\n catchError(() => of({ links: [] } as IModelLinks)),\n map(({ links }) => {\n this._models.next(links.map(({ path, docPath, ...link }) => ({\n ...link,\n path: `${gitUrl()}/${path}`,\n docPath: `${gitUrl()}/${docPath}`,\n apiDocsPath: pathToApiDocsPath(link.model, link.term || link.modelKey)\n })));\n this.modelsLoading = false;\n this.modelsLoaded = true;\n return links;\n })\n );\n }\n\n public get models$() {\n return this.modelsLoading || this.modelsLoaded ? this._models.asObservable() : this.loadModels();\n }\n\n public models() {\n return this.models$.pipe(take(1)).toPromise();\n }\n\n public model$(model: Partial<IModel>) {\n return this.models$.pipe(\n map(models => models.find(m => Object.keys(model).every(key => model[key] === m[key])))\n );\n }\n\n public model(model: Partial<IModel>) {\n return this.model$(model).pipe(take(1)).toPromise();\n }\n\n public ochestratorConfig(type: NodeType) {\n return this.http.get<IOrchestratorConfig>(`${this._orchestratorBaseUrl}/${type}.json`, {\n params: { inline: false }\n }).toPromise();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport {\n Completeness, Infrastructure, Input as HestiaInput, Emission, Measurement, Practice, Product, Property, NodeType\n} from '@hestia-earth/schema';\nimport { of } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { HeAggregationEngineService } from '../../engine/aggregation-engine.service';\nimport { HeEngineService } from '../../engine/engine.service';\nimport { filterParams } from '../utils';\n\ntype blankNode = Completeness | Infrastructure | HestiaInput | Emission | Measurement | Practice | Product | Property;\n\nenum NodeKeyState {\n added = 'added',\n updated = 'updated',\n aggregated = 'aggregated',\n deleted = 'deleted'\n}\n\n@Component({\n selector: 'he-blank-node-state',\n templateUrl: './blank-node-state.component.html',\n styleUrls: ['./blank-node-state.component.scss']\n})\nexport class BlankNodeStateComponent {\n @Input()\n private nodeType?: NodeType;\n @Input()\n private dataKey?: string;\n @Input()\n private key?: string;\n @Input()\n public node?: blankNode;\n /**\n * Force aggregated state.\n */\n @Input()\n public state?: NodeKeyState;\n\n public NodeKeyState = NodeKeyState;\n\n constructor(\n private aggregationEngineService: HeAggregationEngineService,\n private engineService: HeEngineService\n ) { }\n\n public is(state: NodeKeyState) {\n return (\n state === NodeKeyState.aggregated && this.state === state\n ) || (\n state in this.node! && (\n typeof this.node![state] === 'boolean' ?\n this.node![state] :\n this.node![state].includes(this.key)\n )\n );\n }\n\n public get stars() {\n return this.is(NodeKeyState.deleted) ? [0, 1, 2, 3] :\n (this.is(NodeKeyState.aggregated) ? [0, 1, 2] : (\n this.is(NodeKeyState.updated) ? [0, 1] : (\n this.is(NodeKeyState.added) ? [0] : []\n )\n ));\n }\n\n public get showLink() {\n return !!this.dataKey;\n }\n\n private get aggregatedModelParams() {\n return filterParams({\n type: this.nodeType,\n dataPath: [this.dataKey, this.key].filter(Boolean).join('.')\n });\n }\n\n public get aggregatedModel$() {\n return this.aggregationEngineService.model$(this.aggregatedModelParams);\n }\n\n private get modelParams() {\n return filterParams({\n model: 'methodModel' in this.node! ? this.node?.methodModel!['@id'] : undefined,\n term: 'term' in this.node! ? this.node?.term!['@id'] : undefined\n });\n }\n\n private get modelKeyParams() {\n return filterParams({\n model: (this.node!['@type'] || this.node?.type).toLowerCase(),\n modelKey: this.key\n });\n }\n\n public get engineModel$() {\n return this.engineService.model$(this.modelParams).pipe(\n // fallback to modelKey\n mergeMap(value => value ? of(value) : this.engineService.model$(this.modelKeyParams)),\n // defaults to methodModel\n mergeMap(value => value ? of(value) : (\n 'methodModel' in this.node! ? this.engineService.model$({ model: this.node?.methodModel!['@id'] }) : of(null)\n ))\n );\n }\n}\n","<ng-container *bindOnce=\"node\">\n <span *ngFor=\"let star of stars\">*</span>\n\n <ng-container *ngIf=\"showLink\">\n <!-- <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.aggregated)\">\n <ng-container *ngIf=\"aggregatedModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span> -->\n\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.added); else showUpdated\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n </ng-container>\n</ng-container>\n\n<ng-template #showUpdated>\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.updated)\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #docsLink let-model>\n <a [href]=\"model.apiDocsPath || model.docPath || model.path\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <span>Docs</span>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\n\n@Component({\n selector: 'he-blank-node-state-notice',\n templateUrl: './blank-node-state-notice.component.html',\n styleUrls: ['./blank-node-state-notice.component.scss']\n})\nexport class BlankNodeStateNoticeComponent {\n @Input()\n public dataState?: DataState;\n @Input()\n public showDeleted = false;\n\n public get show() {\n return !this.dataState || this.dataState === DataState.recalculated;\n }\n}\n","<p class=\"is-size-7 is-italic\" *ngIf=\"show\">\n <span>Recalculations: * Data Added ** Data Updated *** Data Aggregated</span>\n <span *ngIf=\"showDeleted\" class=\"pl-1\">**** Data Deleted</span>\n</p>\n","import { Component, Input, ViewChild, ElementRef } from '@angular/core';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'he-clipboard',\n templateUrl: './clipboard.component.html',\n styleUrls: ['./clipboard.component.scss']\n})\nexport class ClipboardComponent {\n @ViewChild('valueNode')\n private valueNode?: ElementRef;\n @ViewChild('t')\n private tooltip?: NgbTooltip;\n\n @Input()\n public value?: string;\n @Input()\n public disabled = false;\n @Input()\n public hideText = false;\n @Input()\n public icon = 'clipboard';\n @Input()\n public size = 'md';\n @Input()\n public rotate = 0;\n @Input()\n public clipboardClass = 'no-print px-3';\n\n public onClick($event) {\n $event.stopPropagation();\n $event.preventDefault();\n this.clipboard();\n }\n\n public async clipboard() {\n const { Clipboard } = await import(/* webpackChunkName: \"ts-clipboard\" */ 'ts-clipboard');\n const range = document.createRange();\n range.selectNode(this.valueNode?.nativeElement);\n const selection = window.getSelection();\n selection!.removeAllRanges();\n selection!.addRange(range);\n const val = typeof this.value === 'object' ? JSON.stringify(this.value, null, 2) : this.value;\n Clipboard.copy(val || '');\n setTimeout(() => selection!.removeAllRanges());\n\n if (this.tooltip) {\n this.tooltip.open();\n setTimeout(() => this.tooltip?.close(), 1000);\n }\n }\n}\n","<span #valueNode [class.is-hidden]=\"hideText\">{{value}}</span>\n\n<span [class]=\"clipboardClass\" pointer (click)=\"!disabled && onClick($event)\"\n ngbTooltip=\"Copied!\" triggers=\"manual\" placement=\"bottom\" container=\"body\" #t=\"ngbTooltip\"\n>\n <fa-icon [icon]=\"icon\" [size]=\"size\" [rotate]=\"rotate\"></fa-icon>\n</span>\n","import { Component, Input } from '@angular/core';\nimport { isExpandable, NodeType } from '@hestia-earth/schema';\nimport { isUndefined } from '@hestia-earth/utils';\n\nimport { baseUrl } from '../utils';\n\nconst stringMapper: {\n [type: string]: (value?: any) => string;\n} = {\n undefined: () => '',\n object: value => Array.isArray(value) ? value.map(toString).join(', ') : (\n value instanceof Date ? value.toJSON() : (\n isExpandable(value) ? value.name || value['@id'] : JSON.stringify(value, null, 2)\n )\n )\n};\n\nconst toString = (value: any) => typeof value in stringMapper ? stringMapper[typeof value](value) : value.toString();\n\n@Component({\n selector: 'he-link-key-value',\n templateUrl: './link-key-value.component.html',\n styleUrls: ['./link-key-value.component.scss']\n})\nexport class LinkKeyValueComponent {\n @Input()\n public node: any;\n @Input()\n public nodeType?: NodeType;\n @Input()\n public dataKey?: string;\n @Input()\n public key?: string;\n\n public baseUrl = baseUrl();\n\n public get type() {\n return this.node['@type'] || this.node.type;\n }\n\n public get value() {\n return this.node[this.key!];\n }\n\n public get valueString() {\n return toString(this.value);\n }\n\n public get valueLink() {\n return isExpandable(this.value) && this.value['@id'] ?\n [baseUrl(), this.value['@type'].toLowerCase(), this.value['@id']].join('/') :\n null;\n }\n\n public get isUndefined() {\n return isUndefined(this.value);\n }\n}\n","<ng-container *ngIf=\"!isUndefined\">\n <ng-container *bindOnce=\"node\">\n <a [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n <span class=\"pr-2\">:</span>\n <a [href]=\"valueLink\" *ngIf=\"valueLink; else showString\">{{valueString}}</a>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"\n ></he-blank-node-state>\n </ng-container>\n</ng-container>\n\n<ng-template #showString>\n {{valueString | precision:3}}\n</ng-template>\n","export const locationQuery = (bounds: google.maps.LatLngBounds, searchField = 'location') => {\n const topRight = bounds.getNorthEast();\n const bottomLeft = bounds.getSouthWest();\n return {\n geo_bounding_box: {\n [searchField]: {\n top_left: { lat: topRight.lat(), lon: bottomLeft.lng() },\n bottom_right: { lat: bottomLeft.lat(), lon: topRight.lng() },\n }\n }\n };\n};\n\nexport const fillColor = '#00F';\nexport const strokeColor = '#00A';\n\nexport const fillStyle = {\n fillColor,\n fillOpacity: 0.6\n};\n\nexport const strokeStyle = {\n strokeColor,\n strokeOpacity: 0.6,\n strokeWeight: 1\n};\n\nexport const clustererImage = 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m';\n\n\nconst getCoordinatesForPercent = (percent: number) => {\n const x = Math.cos(2 * Math.PI * percent);\n const y = Math.sin(2 * Math.PI * percent);\n return [x, y];\n};\n\ninterface IMarkerPieConfig {\n percent: number;\n color: string;\n}\n\nconst pieUrl = (configs: IMarkerPieConfig[], size: number) => {\n let cumulativePercent = 0;\n\n return 'data:image/svg+xml;utf-8,' + encodeURIComponent(`\n <svg width=\"${size}\" height=\"${size}\" viewBox=\"-1 -1 2 2\" xmlns=\"http://www.w3.org/2000/svg\">${\n configs.map(({ percent, color }) => {\n const [startX, startY] = getCoordinatesForPercent(cumulativePercent);\n cumulativePercent += percent;\n const [endX, endY] = getCoordinatesForPercent(cumulativePercent);\n const largeArcFlag = percent > .5 ? 1 : 0;\n const pathData = [\n `M ${startX} ${startY}`, // Move\n `A 1 1 0 ${largeArcFlag} 1 ${endX} ${endY}`, // Arc\n `L 0 0`, // Line\n ].join(' ');\n return `<path fill=\"${color}\" d=\"${pathData}\"></path>`;\n }).join('')}</svg>\n `.trim());\n};\n\nexport const markerPie = (configs: IMarkerPieConfig[], size = 7) => ({\n anchor: new google.maps.Point(size / 2, size / 2),\n url: pieUrl(configs, size),\n labelOrigin: new google.maps.Point(0, -2)\n});\n\nexport const markerIcon = (scale = 7): google.maps.Symbol => ({\n path: google.maps.SymbolPath.CIRCLE,\n ...fillStyle,\n ...strokeStyle,\n scale,\n labelOrigin: new google.maps.Point(0, -2)\n});\n\nexport const createMarker = (\n position?: google.maps.LatLng | google.maps.ReadonlyLatLngLiteral, text = '', color = fillColor, scale?: number\n) => (\n position && position.lat && position.lng ? new google.maps.Marker({\n position,\n label: { color, text },\n icon: markerIcon(scale)\n }) : undefined\n) as google.maps.Marker;\n\ninterface IPolygon {\n type: 'Polygon';\n coordinates: number[][][];\n}\n\ninterface IMultiPolygon {\n type: 'MultiPolygon';\n coordinates: number[][][];\n}\n\ntype geometry = IPolygon | IMultiPolygon;\n\nexport interface IFeature {\n type: 'Feature';\n properties: any;\n geometry: geometry;\n}\n\nexport interface IFeatureCollection {\n type: 'FeatureCollection';\n features: IFeature[];\n}\n\ninterface GeometryCollection {\n type: 'GeometryCollection';\n geometries: geometry[];\n}\n\ntype feature = IFeature | IFeatureCollection | GeometryCollection;\n\nconst feature: IFeature = Object.freeze({\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Polygon',\n coordinates: []\n }\n});\n\nexport const defaultFeature = (): IFeature => ({ ...feature });\n\nexport const pointToCoordinates = (point: google.maps.LatLng) => [point.lng(), point.lat()];\n\nexport const coordinatesToPoint = (values: (number | number[])[]) =>\n Array.isArray(values[0]) ?\n values.map((v: any) => coordinatesToPoint(v)) :\n new google.maps.LatLng((values as number[])[1], (values as number[])[0]);\n\nexport const polygonToCoordinates = (polygon: google.maps.Polygon) => polygon.getPaths().getArray().map(path => {\n const points = path.getArray();\n return [\n ...points.map(pointToCoordinates),\n pointToCoordinates(points[0])\n ];\n})[0];\n\nconst coordinatesToPolygon = (coordinates: number[][]) => new google.maps.Polygon({\n paths: coordinates.map(coordinatesToPoint).filter(Boolean),\n ...strokeStyle\n});\n\nexport const addPolygonToFeature = (feat: feature, polygon: google.maps.Polygon) =>\n feat.type === 'FeatureCollection' ?\n feat.features.push(addPolygonToFeature(defaultFeature(), polygon)) : (\n feat.type === 'GeometryCollection' ?\n feat.geometries.map(geometry => (geometry.coordinates || []).push(polygonToCoordinates(polygon))) :\n (feat.geometry?.coordinates || []).push(polygonToCoordinates(polygon))\n )\n ;\n\nexport const polygonsFromFeature = (feat: feature): google.maps.Polygon[] =>\n feat.type === 'FeatureCollection' ?\n feat.features.flatMap(polygonsFromFeature) : (\n feat.type === 'GeometryCollection' ?\n feat.geometries.flatMap(geometry => (geometry.coordinates || []).map(coordinatesToPolygon)) :\n (feat.geometry?.coordinates || []).map(coordinatesToPolygon)\n );\n\nexport const polygonBounds = (polygon?: google.maps.Polygon | google.maps.Polygon[]) =>\n polygon ?\n Array.isArray(polygon) ?\n polygon.reduce((prev, curr) => prev.extend(polygonBounds(curr)), new google.maps.LatLngBounds()) :\n (polygon.getPath()?.getArray() || []).reduce((prev, curr) => prev.extend(curr), new google.maps.LatLngBounds()) :\n undefined;\n","import { Component, OnInit, AfterViewInit, OnDestroy, Output, EventEmitter, Input, ViewChild } from '@angular/core';\nimport { GoogleMap } from '@angular/google-maps';\nimport { isNumber } from '@hestia-earth/utils';\n\nimport {\n IFeature, IFeatureCollection, defaultFeature, addPolygonToFeature, polygonsFromFeature, strokeStyle\n} from '../maps-utils';\n\n@Component({\n selector: 'he-maps-drawing-confirm',\n templateUrl: './maps-drawing-confirm.component.html',\n styleUrls: ['./maps-drawing-confirm.component.scss']\n})\nexport class MapsDrawingConfirmComponent implements OnInit, AfterViewInit, OnDestroy {\n private listeners: google.maps.MapsEventListener[] = [];\n private shapes: (google.maps.Marker | google.maps.Polygon)[] = [];\n\n private feature: IFeature | IFeatureCollection = defaultFeature();\n private coordinates?: google.maps.LatLngLiteral;\n\n @ViewChild(GoogleMap)\n private map?: GoogleMap;\n\n @Input()\n public value?: string;\n @Input()\n public modes: google.maps.drawing.OverlayType[] = [google.maps.drawing.OverlayType.POLYGON];\n @Input()\n public center = { lat: 0, lng: 0 };\n @Input()\n public zoom = 3;\n\n @Output()\n public closed = new EventEmitter<google.maps.LatLngLiteral | string>();\n\n public options: google.maps.MapOptions = {\n fullscreenControl: false,\n mapTypeControl: true,\n streetViewControl: false,\n zoomControl: true,\n zoomControlOptions: {\n position: google.maps.ControlPosition.TOP_RIGHT\n }\n };\n\n ngOnInit() {\n this.feature = this.value && !isNumber(this.value) ? JSON.parse(this.value) : this.feature;\n }\n\n ngAfterViewInit() {\n const polygons = polygonsFromFeature(this.feature);\n polygons.map(polygon => polygon.setMap(this.map?.googleMap!));\n const drawingManager = new google.maps.drawing.DrawingManager({\n drawingControlOptions: {\n position: google.maps.ControlPosition.TOP_CENTER,\n drawingModes: this.modes\n },\n polygonOptions: strokeStyle\n });\n drawingManager.setMap(this.map?.googleMap!);\n this.listeners.push(google.maps.event.addListener(drawingManager, 'polygoncomplete', polygon =>\n this.onPolygonAdded(polygon)\n ));\n this.listeners.push(google.maps.event.addListener(drawingManager, 'markercomplete', marker =>\n this.onMarkerAdded(marker)\n ));\n }\n\n ngOnDestroy() {\n this.listeners.map(listener => google.maps.event.removeListener(listener));\n }\n\n private onPolygonAdded(polygon: google.maps.Polygon) {\n this.shapes.push(polygon);\n addPolygonToFeature(this.feature, polygon);\n }\n\n private onMarkerAdded(marker: google.maps.Marker) {\n this.shapes.push(marker);\n const position = marker.getPosition();\n this.coordinates = position?.toJSON();\n }\n\n public confirm() {\n this.closed.next(this.coordinates || JSON.stringify(this.feature));\n }\n\n public clear() {\n this.shapes.map(shape => shape.setMap(null));\n this.coordinates = undefined;\n this.feature = defaultFeature();\n }\n}\n","<div class=\"modal is-large 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\">Draw on Map</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(value)\"></button>\n </header>\n <section class=\"modal-card-body p-0\">\n <google-map\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"center\"\n [options]=\"options\"\n ></google-map>\n </section>\n <footer class=\"modal-card-foot\">\n <button class=\"button is-primary\" (click)=\"confirm()\">\n <span>Confirm</span>\n </button>\n <button class=\"button\" (click)=\"closed.next(value)\">\n <span>Close</span>\n </button>\n <button class=\"button is-danger is-outlined\" (click)=\"clear()\">\n <fa-icon class=\"mr-2\" icon=\"times\"></fa-icon>\n <span>Clear</span>\n </button>\n </footer>\n </div>\n</div>\n","import { Component, HostListener, Input, TemplateRef } from '@angular/core';\n\nexport interface ContentContext {\n message: string;\n data: any;\n}\n\n@Component({\n selector: 'he-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss']\n})\nexport class PopoverComponent {\n @Input()\n public message = '';\n @Input()\n public content?: TemplateRef<ContentContext>;\n @Input()\n public data: any = {};\n @Input()\n public position: 'top'|'right'|'bottom'|'left' = 'left';\n\n @HostListener('click', ['$event'])\n onClick($event) {\n $event.stopPropagation();\n this.active = true;\n }\n\n public active = false;\n}\n","<div class=\"is-inline-block popover is-popover-{{position}}\" [class.is-popover-active]=\"active\">\n <ng-content></ng-content>\n\n <div class=\"popover-content\">\n\n <ng-template\n [ngTemplateOutlet]=\"content || ct\"\n [ngTemplateOutletContext]=\"{message: message, data: data}\"\n ></ng-template>\n\n <footer>\n <ng-content select=\"[actions]\"></ng-content>\n <button class=\"button is-small\" (click)=\"$event.stopPropagation(); active = false\">\n <span>Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #ct>\n <p class=\"mb-2 is-pre-wrap\" [innerHtml]=\"message\"></p>\n</ng-template>\n","import { Component, TemplateRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\n\nimport { ContentContext, PopoverComponent } from '../popover/popover.component';\n\n@Component({\n selector: 'he-popover-confirm',\n templateUrl: './popover-confirm.component.html',\n styleUrls: ['./popover-confirm.component.scss']\n})\nexport class PopoverConfirmComponent {\n @ViewChild(PopoverComponent)\n private popover?: PopoverComponent;\n\n @Input()\n public message?: string;\n @Input()\n public content?: TemplateRef<ContentContext>;\n @Input()\n public position?: string;\n @Input()\n public popoverClass?: string;\n\n @Output()\n public confirmed = new EventEmitter<any>();\n\n public data: any = {};\n\n public confirm() {\n this.confirmed.next(this.data);\n this.popover!.active = false;\n }\n}\n","<he-popover [message]=\"message\" [content]=\"content\" [data]=\"data\" [position]=\"position\" [class]=\"popoverClass\">\n <ng-content></ng-content>\n\n <ng-container actions>\n <button class=\"button is-small is-primary mr-2\" (click)=\"$event.stopPropagation(); confirm()\">\n <span>Confirm</span>\n </button>\n </ng-container>\n</he-popover>\n","import { Component, Input } from '@angular/core';\n\nimport { baseUrl } from '../utils';\n\n@Component({\n selector: 'he-schema-version-link',\n templateUrl: './schema-version-link.component.html',\n styleUrls: ['./schema-version-link.component.scss']\n})\nexport class SchemaVersionLinkComponent {\n @Input()\n private node: any;\n @Input()\n public showExternalLink = true;\n @Input()\n public linkClass = '';\n @Input()\n public text?: string;\n\n public get url() {\n return [\n baseUrl(),\n 'schema',\n this.node.schemaVersion,\n this.node['@type']\n ].filter(Boolean).join('/');\n }\n}\n","<ng-container *bindOnce=\"url\">\n <a [href]=\"url\" target=\"_blank\" [class]=\"linkClass\" (click)=\"$event.stopPropagation()\">\n <ng-content></ng-content>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\" *ngIf=\"showExternalLink\"></fa-icon>\n </a>\n</ng-container>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'he-skeleton-text',\n templateUrl: './skeleton-text.component.html',\n styleUrls: ['./skeleton-text.component.scss']\n})\nexport class SkeletonTextComponent {\n @Input()\n private animated = true;\n @Input()\n private width = 100;\n @Input()\n private height = 'inherit';\n\n @HostBinding('class.is-animated')\n get isAnimated() {\n return this.animated;\n }\n\n @HostBinding('style.width')\n get hasWidth() {\n return `${this.width}%`;\n }\n\n @HostBinding('style.height')\n get hasHeight() {\n return this.height;\n }\n}\n","<span> </span>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Term } from '@hestia-earth/schema';\nimport { IConvertArgs, ConvertUnits, converters, convertValue, isNumber, isBoolean } from '@hestia-earth/utils';\n\nconst parsePropertyValue = (value: any) =>\n isNumber(value) ? +value : (\n isBoolean(value) ? value.toString() === 'true' : value\n );\n\nconst parseResult = (value: number) => isNaN(value) ? '' : `${value}`.replace(',', '.');\n\ninterface IArg {\n key: string;\n value: any;\n}\n\n@Component({\n selector: 'he-unit-converter',\n templateUrl: './unit-converter.component.html',\n styleUrls: ['./unit-converter.component.scss']\n})\nexport class UnitConverterComponent implements OnInit {\n @Input()\n private term?: Term;\n\n @Input()\n public value = 1;\n @Input()\n public fromUnits?: ConvertUnits;\n @Input()\n public toUnits?: ConvertUnits;\n\n public ConvertUnits = ConvertUnits;\n public result = '';\n public arguments: IArg[] = [];\n\n ngOnInit() {\n return this.updateValue();\n }\n\n private get args() {\n return (this.term?.defaultProperties || []).reduce((prev, prop) => ({\n ...prev,\n [prop.term?.name?.toLowerCase()!]: parsePropertyValue(prop.value)\n }), {} as IConvertArgs);\n }\n\n public get units() {\n return this.fromUnits ?\n Object.values(ConvertUnits).filter(v => v in converters[this.fromUnits!]) :\n [];\n }\n\n private requireArgs(keys: (keyof IConvertArgs)[]) {\n const args = this.args;\n this.arguments = keys.map(key => ({ key, value: args[key] || '' }));\n }\n\n public updateUnits() {\n let requiredKeys: (keyof IConvertArgs)[] = [];\n if (this.fromUnits === ConvertUnits.kg || this.toUnits === ConvertUnits.kg) {\n requiredKeys = ['density'];\n }\n this.requireArgs(requiredKeys);\n return this.updateValue();\n }\n\n public updateValue() {\n if (!this.fromUnits || !this.toUnits) {\n return;\n }\n\n const args = {\n ...this.args,\n ...this.arguments.reduce((prev, { key, value }) => ({ ...prev, [key]: value }), {})\n };\n try {\n this.result = parseResult(convertValue(this.value, this.fromUnits, this.toUnits, args));\n }\n catch (_) {}\n }\n}\n","<div class=\"columns mb-0\">\n <div class=\"column\">\n <label class=\"label has-text-white\" for=\"value\">Value</label>\n </div>\n <div class=\"column\">\n <label class=\"label has-text-white\" for=\"result\">Convert To</label>\n </div>\n</div>\n\n<div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <input type=\"number\" class=\"input\" [(ngModel)]=\"value\" name=\"value\" id=\"value\"\n (input)=\"updateValue()\"\n >\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth\">\n <select [(ngModel)]=\"fromUnits\" name=\"fromUnits\" id=\"fromUnits\"\n (change)=\"updateUnits()\"\n >\n <option [value]=\"undefined\">Unit</option>\n <option *ngFor=\"let unit of ConvertUnits | keys\" [value]=\"unit.value\">{{unit.key}}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <input type=\"string\" class=\"input\" [value]=\"result\" name=\"result\" id=\"result\" readonly>\n </div>\n <div class=\"control\">\n <div class=\"select is-fullwidth\">\n <select [(ngModel)]=\"toUnits\" name=\"toUnits\" id=\"toUnits\"\n (change)=\"updateUnits()\"\n >\n <option [value]=\"undefined\">Unit</option>\n <option *ngFor=\"let unit of units\" [value]=\"unit\">{{unit}}</option>\n </select>\n </div>\n </div>\n <div class=\"control\">\n <he-clipboard clipboardClass=\"button is-white px-2\"\n [value]=\"result\" [disabled]=\"!result\" [hideText]=\"true\"\n ></he-clipboard>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"field is-horizontal\" *ngFor=\"let arg of arguments\">\n <div class=\"field-label is-normal\">\n <label class=\"label has-text-white\" [for]=\"arg.key\">\n <span class=\"is-capitalized\">{{arg.key}}</span>\n <span class=\"has-text-danger pl-1\">*</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control\">\n <input type=\"string\" class=\"input is-small\"\n [(ngModel)]=\"arg.value\" [id]=\"arg.key\"\n (input)=\"updateValue()\"\n placeholder=\"Required for conversion\"\n >\n </div>\n </div>\n </div>\n</div>\n","/* eslint-disable @angular-eslint/directive-selector */\nimport { Directive, HostListener, ElementRef, Output, EventEmitter } from '@angular/core';\n\n@Directive({\n selector: '[clickOutside]'\n})\nexport class ClickOutsideDirective {\n @Output()\n public clickOutside = new EventEmitter<void>();\n\n constructor(private elementRef: ElementRef) {}\n\n @HostListener('document:click', ['$event'])\n onClick(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.clickOutside.emit();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nconst get = require('lodash.get');\n\n@Pipe({\n name: 'get'\n})\nexport class GetPipe implements PipeTransform {\n transform(value: any, key: string, defaultValue: any = ''): any {\n return get(value, key, defaultValue);\n }\n}\n","/* eslint-disable */\n/**\n * @class EventEmitter\n *\n * @property {Array} _listeners\n */\nexport default class EventEmitter {\n private _listeners;\n /**\n * Construct EventEmitter\n *\n * @param listeners\n */\n constructor(listeners = []) {\n this._listeners = new Map(listeners);\n }\n\n /**\n * Destroys EventEmitter\n */\n destroy() {\n this._listeners = {};\n }\n\n /**\n * Count listeners registered for the provided eventName\n *\n * @param eventName\n */\n listenerCount(eventName) {\n if (!this._listeners.has(eventName)) {\n return 0;\n }\n\n return this._listeners.get(eventName).length;\n }\n\n /**\n * Subscribes on event eventName specified function\n *\n * @param eventName\n * @param listener\n */\n on(eventName, listener) {\n this._addListener(eventName, listener, false);\n }\n\n /**\n * Subscribes on event name specified function to fire only once\n *\n * @param eventName\n * @param listener\n */\n once(eventName, listener) {\n this._addListener(eventName, listener, true);\n }\n\n /**\n * Removes event with specified eventName.\n *\n * @param eventName\n */\n off(eventName) {\n this._removeListeners(eventName);\n }\n\n /**\n * Emits event with specified name and params.\n *\n * @param eventName\n * @param eventArgs\n */\n emit(eventName, ...eventArgs) {\n return this._applyEvents(eventName, eventArgs);\n }\n\n /**\n * Register a new listener\n *\n * @param eventName\n * @param listener\n * @param once\n */\n _addListener(eventName, listener, once = false) {\n if (Array.isArray(eventName)) {\n eventName.forEach(e => this._addListener(e, listener, once));\n } else {\n eventName = eventName.toString();\n const split = eventName.split(/,|, | /);\n\n if (split.length > 1) {\n split.forEach(e => this._addListener(e, listener, once));\n } else {\n if (!Array.isArray(this._listeners.get(eventName))) {\n this._listeners.set(eventName, []);\n }\n\n (this._listeners.get(eventName)).push({\n once,\n fn: listener\n });\n }\n }\n }\n\n /**\n *\n * @param eventName\n */\n _removeListeners(eventName: any = null) {\n if (eventName !== null) {\n if (Array.isArray(eventName)) {\n eventName.forEach(e => this._removeListeners(e));\n } else {\n eventName = eventName.toString();\n const split = eventName.split(/,|, | /);\n\n if (split.length > 1) {\n split.forEach(e => this._removeListeners(e));\n } else {\n this._listeners.delete(eventName);\n }\n }\n } else {\n this._listeners = new Map();\n }\n }\n\n /**\n * Applies arguments to specified event\n *\n * @param eventName\n * @param eventArguments\n * @protected\n */\n _applyEvents(eventName, eventArguments) {\n let result = eventArguments;\n\n if (this._listeners.has(eventName)) {\n const listeners = this._listeners.get(eventName);\n const removableListeners = [];\n\n listeners.forEach((listener, index) => {\n if (result = listener.fn.apply(null, eventArguments)) {\n if (listener.once) {\n (removableListeners as any).unshift(index);\n }\n }\n });\n\n removableListeners.forEach(index => {\n listeners.splice(index, 1);\n });\n\n return result;\n }\n\n return result[0];\n }\n}\n","export const isFunction = unknown => typeof unknown === 'function';\nexport const isString = unknown => (\n typeof unknown === 'string' ||\n ((!!unknown && typeof unknown === 'object') && Object.prototype.toString.call(unknown) === '[object String]'));\nexport const isObject = unknown => (\n (typeof unknown === 'function' || (typeof unknown === 'object' && !!unknown)) && !Array.isArray(unknown));\n// Returns true if the value has a \"then\" function. Adapted from\n// https://github.com/graphql/graphql-js/blob/499a75939f70c4863d44149371d6a99d57ff7c35/src/jsutils/isPromise.js\nexport const isPromise = value => Boolean(value && typeof value.then === 'function');\n\nexport const isNode = unknown => {\n try {\n Node.prototype.cloneNode.call(unknown, false);\n return true;\n } catch (err) {\n return false;\n }\n};\n\n/**\n * Convert String (false,False,True,true,no,yes,0,1) to real Boolean\n *\n * @param val\n */\nexport const BooleanParse = (val) => {\n const falsy = /^(?:f(?:alse)?|no?|0+)$/i;\n return !falsy.test(val) && !!val;\n};\n\n/**\n * Check if given query selector is valid\n *\n * @param selector\n */\nexport const isSelectorValid = selector => {\n const queryCheck = s => document.createDocumentFragment().querySelector(s);\n try {\n queryCheck(selector);\n } catch {\n return false;\n }\n\n return true;\n};\n","/* eslint-disable */\nimport { isFunction, isNode, isString } from './type';\n\n/**\n * querySelector under steroid\n * Can use as selector:\n * - function\n * - DOM Node\n * - String\n *\n * @param selector\n * @param node\n */\nexport const querySelector = (selector, node) => {\n if (isFunction(selector)) {\n return selector(node);\n }\n\n if (isNode(selector)) {\n return selector;\n }\n\n if (isString(selector)) {\n if (!node || !isNode(node) || node.nodeType !== 1) {\n node = document;\n }\n\n return node.querySelector(selector);\n }\n\n if (Array.isArray(selector) || (typeof NodeList !== 'undefined' && NodeList.prototype.isPrototypeOf(selector))) {\n return selector[0];\n }\n};\n\n/**\n * querySelectorAll under steroid\n * Can use as selector:\n * - function\n * - DOM Node\n * - String\n *\n * @param selector\n * @param node\n */\nexport const querySelectorAll = (selector, node) => {\n if (isFunction(selector)) {\n return selector(node);\n }\n\n if (isNode(selector)) {\n return [selector];\n }\n\n if (isString(selector)) {\n if (!node || !isNode(node) || node.nodeType !== 1) {\n node = document;\n }\n\n return node.querySelectorAll(selector);\n }\n\n if (typeof NodeList !== 'undefined' && NodeList.prototype.isPrototypeOf(selector)) {\n return selector;\n }\n return [];\n};\n\n// Convert dataset into Object\nexport const optionsFromDataset = (node, defaultOptions = {}) => {\n if (isNode(node)) {\n return node.dataset ? Object.keys(node.dataset)\n .filter(key => Object.keys(defaultOptions).includes(key))\n .reduce((obj, key) => ({\n ...obj,\n [key]: node.dataset[key]\n }), {}) : {};\n }\n return {};\n};\n\n/**\n * Copy HTML attributes from a source element to a target element\n *\n * @param target\n * @param source\n * @param except list of attributes to skip (separated by space)\n */\nexport const cloneAttributes = (target, source, except: any = null) => {\n if (except !== null) {\n except = except.split(' ');\n }\n\n [...source.attributes].forEach(attr => {\n if (!except.includes(attr.nodeName)) {\n target.setAttribute(attr.nodeName === 'id' ? 'data-id' : attr.nodeName, attr.nodeValue);\n }\n });\n};\n\n/**\n * Escapes string for insertion into HTML, replacing special characters with HTML\n * entities.\n *\n * @param string\n */\nexport const escape = (string) => isString(string) ?\n string.replace(/(['\"<>])/g, (char) => ({\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n }[char]))\n : string;\n","/* eslint-disable */\nexport default (prefix = '') => (prefix + (1e7 + -1e3 + -4e3 + -8e3 + -1e11)).replace(/[018]/g, c => (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16));\n","/* eslint-disable */\nimport EventEmitter from './events';\nimport { optionsFromDataset, querySelectorAll, querySelector } from './dom';\nimport uuid from './uuid';\n\nexport default class Component extends EventEmitter {\n protected element: any;\n protected id: string;\n protected options: any;\n\n constructor(element, options = {}, defaultOptions = {}) {\n super();\n\n this.element = querySelector(element, document);\n\n // An invalid selector or non-DOM node has been provided.\n if (!this.element) {\n throw new Error(`An invalid selector or non-DOM node has been provided for ${this.constructor.name}.`);\n }\n this.id = uuid('c-');\n\n this.options = {\n ...defaultOptions,\n ...options,\n ...optionsFromDataset(this.element, defaultOptions) // Use Element dataset values to override options\n };\n }\n\n /**\n * Initiate all DOM element corresponding to selector\n *\n * @method\n * @return Array of all Plugin instances\n */\n static attach(selector: any = null, options = {}, node: any = null) {\n const instances = new Array();\n\n if (selector !== null) {\n querySelectorAll(selector, node).forEach(element => {\n // Check if plugin has already been instantiated for element\n if (typeof element[this.name] === 'undefined') { // If no then instantiate it and register it in element\n instances.push(new this(element, {\n selector,\n ...options\n }));\n } else { // If Yes then return the existing instance\n instances.push(element[this.name]);\n }\n });\n\n if (typeof window[this.name] === 'undefined') {\n window[this.name] = {\n observers: []\n };\n }\n\n if (window[this.name]['observers'] && !window[this.name]['observers'].includes(selector)) {\n this.observeDom(selector, options);\n\n window[this.name]['observers'].push(selector);\n }\n }\n\n return instances;\n }\n\n /**\n * Observe DOM mutations to automatically initialize plugin on new elements when added to the DOM\n *\n * @param selector\n * @param options\n */\n static observeDom(selector, options) {\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n for (let i = 0; i < mutation.addedNodes.length; i++) {\n if (typeof window[this.name] !== 'undefined') {\n this.attach(selector, options, mutation.addedNodes[i]);\n }\n }\n });\n });\n\n if (typeof document !== 'undefined') {\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n }\n }\n\n static _interface(name = null, options = {}) {\n if (typeof name === 'string') {\n if (typeof this[name] === 'undefined') {\n throw new TypeError(`No method named \"${name}\"`);\n }\n\n return (this[name] as any)(options);\n }\n\n return this;\n }\n}\n","const defaultOptions = {\n\tallowDuplicates: false,\t\t\t\t\t// Are duplicate tags allowed ?\n\tcaseSensitive: true,\t\t\t\t\t// Is duplicate tags identification case sensitive ?\n\tclearSelectionOnTyping: false,\t\t\t// Should selected tag be cleared when typing a new input ?\n\tcloseDropdownOnItemSelect: true,\t\t// Should dropdown be closed once an item has been clicked ?\n\tdelimiter: ',',\t\t\t\t\t\t\t// Multiple tags delimiter\n\tfreeInput: true,\t\t\t\t\t\t// Should user be able to input new tag manually ?\n\thighlightDuplicate: true,\t\t\t\t// Should we temporarly highlight identified duplicate tags ?\n\thighlightMatchesString: true,\t\t\t// Should we highlight identified matches strings when searching ?\n\titemValue: undefined,\t\t\t\t\t// What is the object property to use as value when we work with Object tags ?\n \titemText: undefined,\t\t\t\t\t// What is the object property to use as text when we work with Object tags ?\n\tmaxTags: undefined,\t\t\t\t\t\t// Maximum number of tags allowed\n\tmaxChars: undefined,\t\t\t\t\t// Maximum of characters allowed for a single tag\n\tminChars: 1,\t\t\t\t\t\t\t// Minimum of characters before processing a new tag\n\tnoResultsLabel: 'No results found',\t\t// Customize the dropdown placecholer when no results found\n\tplaceholder: '',\t\t\t\t\t\t// Customize the input placholder\n\tremovable: true,\t\t\t\t\t\t// Are tags removable ?\n\tsearchMinChars: 1,\t\t\t\t\t\t// How many characters should we enter before starting dynamic search ?\n\tsearchOn: 'text',\t\t\t\t\t\t// On what dropdown item data do we search the entered value : 'value' or 'text' ?\n\tselectable: true,\t\t\t\t\t\t// Are tags selectable ?\n\tsource: undefined,\t\t\t\t\t\t// Array/Function/Promise to get external data\n\ttagClass: 'is-rounded',\t\t\t\t\t// Customize tags style by passing classes - They will be added to the tag element\n\ttrim: true\t\t\t\t\t\t\t\t// Should we trim value before processing them ?\n};\n\nexport default defaultOptions;\n","import { escape } from '../utils/dom';\n\nexport default (data) =>\n `<span class=\"tag ${escape(data.style)}\" data-value=\"${escape(data.value)}\">\n ${escape(data.text)}\n ${data.removable ? '<div class=\"delete is-small\" data-tag=\"delete\"></div>' : ''}\n </span>`;\n","import { escape } from '../utils/dom';\n\nexport default (data) =>\n `<div class=\"tags-input\">\n <input class=\"input\" type=\"text\" placeholder=\"${escape(data.placeholder)}\">\n <div id=\"${escape(data.uuid)}-list\" class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <span class=\"dropdown-item empty-title\">${escape(data.emptyTitle)}</span>\n </div>\n </div>\n </div>`;\n","import { escape } from '../utils/dom';\n\nexport default (data) =>\n `<a href=\"javascript:void(0);\" class=\"dropdown-item\" data-value=\"${\n escape(data.value)\n }\" data-text=\"${escape(data.text)}\">${escape(data.text)}</a>`;\n","/* eslint-disable */\nimport Component from './utils/component';\nimport { cloneAttributes } from './utils/dom';\nimport { isString, BooleanParse, isObject, isPromise, isFunction } from './utils/type';\nimport defaultOptions from './defaultOptions';\nimport tagTemplate from './templates/tag';\nimport containerTemplate from './templates/wrapper';\nimport dropdownItemTemplate from './templates/dropdown-item';\n\n// TODO: add pattern or function to valdiate value before adding\n\nexport default class BulmaTagsInput extends Component {\n private _items: any[];\n private _selected;\n private _isSelect;\n private _isMultiple;\n private _objectItems;\n private _input;\n private _manualInputAllowed;\n private _filterInputAllowed;\n private source;\n private container;\n private dropdown;\n private dropdownEmptyOption;\n\n constructor(element, options = {}) {\n super(element, options, defaultOptions);\n\n // Convert Boolean string options to full Boolean\n this.options.allowDuplicates = BooleanParse(this.options.allowDuplicates);\n this.options.caseSensitive = BooleanParse(this.options.caseSensitive);\n this.options.clearSelectionOnTyping = BooleanParse(this.options.clearSelectionOnTyping);\n this.options.closeDropdownOnItemSelect = BooleanParse(this.options.closeDropdownOnItemSelect);\n this.options.freeInput = BooleanParse(this.options.freeInput);\n this.options.highlightDuplicate = BooleanParse(this.options.highlightDuplicate);\n this.options.highlightMatchesString = BooleanParse(this.options.highlightMatchesString);\n this.options.removable = BooleanParse(this.options.removable);\n this.options.searchOn = this.options.searchOn.toLowerCase();\n this.options.selectable = BooleanParse(this.options.selectable);\n this.options.trim = BooleanParse(this.options.trim);\n\n //Bind events to current class\n this._onDocumentClick = this._onDocumentClick.bind(this);\n this._onInputChange = this._onInputChange.bind(this);\n this._onInputClick = this._onInputClick.bind(this);\n this._onInputFocusOut = this._onInputFocusOut.bind(this);\n this._onInputFocusIn = this._onInputFocusIn.bind(this);\n this._onInputKeyDown = this._onInputKeyDown.bind(this);\n this._onInputKeyPress = this._onInputKeyPress.bind(this);\n this._onOriginalInputChange = this._onOriginalInputChange.bind(this);\n this._onTagDeleteClick = this._onTagDeleteClick.bind(this);\n this._onTagClick = this._onTagClick.bind(this);\n this._onDropdownItemClick = this._onDropdownItemClick.bind(this);\n\n // Define internal variables\n this._items = [];\n this._selected = -1; // index of selected item\n\n // Initiate plugin\n this._init();\n }\n\n /**\n * Initiate all DOM element corresponding to selector\n *\n * @method\n * @return Array of all Plugin instances\n */\n static attach(selector = 'input[data-type=\"tags\"], input[type=\"tags\"], select[data-type=\"tags\"], select[type=\"tags\"]', options = {}, container = null) {\n return super.attach(selector, options, container);\n }\n\n /**\n * Initiate plugin\n *\n * @method init\n * @return\n */\n _init() {\n // Detect if original input was a Select element\n this._isSelect = (this.element.tagName === 'SELECT');\n this._isMultiple = (this._isSelect && this.element.hasAttribute('multiple'));\n\n // Detect if we work with Object items or not\n // Object Items is forced when working with select element\n this._objectItems = (typeof this.options.itemValue !== 'undefined') || this._isSelect;\n this.options.itemValue = this.options.itemValue ? this.options.itemValue : (this._isSelect ? 'value' : undefined);\n this.options.itemText = this.options.itemText ? this.options.itemText : (this._isSelect ? 'text' : undefined);\n // If no itemText pass then use itemValue as itemText\n if (typeof this.options.itemText === 'undefined') {\n this.options.itemText = this.options.itemValue;\n }\n\n // Force freeInput to False if working with object items\n this.options.freeInput = this._objectItems ? false : this.options.freeInput;\n\n // Init search engine\n this.source = null;\n if (typeof this.options.source !== 'undefined') {\n // Fix searchOn option if wrong\n if (!['value', 'text'].includes(this.options.searchOn)) {\n this.options.searchOn = defaultOptions.searchOn;\n }\n\n if (isPromise(this.options.source)) {\n this.source = this.options.source;\n } else if (isFunction(this.options.source)) {\n this.source = value => Promise.resolve(this.options.source(value));\n } else if (Array.isArray(this.options.source)) {\n this.source = value => Promise.resolve(this.options.source.filter(i => {\n const val = (this._objectItems ? i[this.options.itemValue] : i);\n\n return this.options.caseSensitive ? val.includes(value) : val.toLowerCase().includes(value.toLowerCase());\n }));\n }\n }\n\n // Determine allowed input modes\n this._manualInputAllowed = !this._isSelect && this.options.freeInput;\n this._filterInputAllowed = this._isSelect || this.source;\n\n this._build();\n }\n\n /**\n * Build TagsInput DOM elements\n */\n _build() {\n // Create TagsInput DOM\n const containerFragment = document.createRange().createContextualFragment(containerTemplate({\n emptyTitle: typeof this.options.noResultsLabel !== 'undefined' ? this.options.noResultsLabel : 'No results found',\n placeholder: this.element.placeholder ? this.element.placeholder : this.options.placeholder,\n uuid: this.id\n }));\n\n this.container = containerFragment.firstElementChild;\n this._input = this.container.querySelector('input');\n this.dropdown = this.container.querySelector(`#${this.id}-list .dropdown-content`);\n this.dropdownEmptyOption = this.dropdown.querySelector('.empty-title');\n\n // Clone attributes between original and new input\n cloneAttributes(this._input, this.element, 'data-type multiple name type value');\n\n if (this.element.disabled) {\n this.container.setAttribute('disabled', 'disabled');\n this.options.removable = false;\n this.options.selectable = false;\n }\n\n // Propagate original input disabled attribute to the container\n if (this._input.getAttribute('disabled') || this._input.classList.contains('is-disabled')) {\n this.container.setAttribute('disabled', 'disabled');\n }\n\n if (!this._manualInputAllowed) {\n this.container.classList.add(this._filterInputAllowed ? 'is-filter' : 'no-input');\n }\n\n // Remove dropdown if no source or original input is not a select element\n if (!this._isSelect && typeof this.options.source === 'undefined') {\n this.dropdown.remove();\n this.dropdown = null;\n this._input.setAttribute('list', null);\n }\n\n // Initialize plugin value from original input value\n if (this._isSelect) {\n Array.from(this.element.options).forEach((option: any) => {\n if (option.selected) {\n // HTML Option element contains value and text properties\n // Add it silently to not propagate to the original element\n this.add(option.value ? option : {\n value: option.text,\n text: option.text\n }, true);\n }\n\n this._createDropdownItem(option);\n });\n } else {\n // We have on input element\n if (this.element.value.length) {\n this.add(this._objectItems ? JSON.parse(this.element.value) : this.element.value, true);\n }\n }\n\n this._bindEvents();\n\n // Insert container right before original input and make original input hidden\n this.element.parentNode.insertBefore(this.container, this.element);\n\n // Hide original input (type=\"hidden\" only works on select)\n this.element.style.display = 'none';\n }\n\n /**\n * Bind all events listener\n */\n _bindEvents() {\n // Bind document click event to close dropdown\n document.addEventListener('click', this._onDocumentClick);\n\n // Bind event handlers to orginal input\n this.element.addEventListener('change', this._onOriginalInputChange);\n\n // Bind event handlers to internal input\n this._input.addEventListener('input', this._onInputChange);\n this._input.addEventListener('click', this._onInputClick);\n this._input.addEventListener('keydown', this._onInputKeyDown);\n this._input.addEventListener('keypress', this._onInputKeyPress);\n this._input.addEventListener('focusout', this._onInputFocusOut);\n this._input.addEventListener('focusin', this._onInputFocusIn);\n }\n\n /**\n * Check if caret is at the beginning of the input value\n */\n _caretAtStart() {\n try {\n return this._input.selectionStart === 0 && this._input.selectionEnd === 0;\n } catch (e) {\n return this._input.value === '';\n }\n }\n\n /**\n * Check value length constraint if option activated\n *\n * @param item\n */\n _checkLength(item) {\n const value = this._objectItems ? item[this.options.itemValue] : item;\n\n if (!isString(value)) {\n return true;\n }\n\n return value.length >= this.options.minChars && (typeof this.options.maxChars === 'undefined' || value.length <= this.options.maxChars);\n }\n\n /**\n * Close dropdown\n */\n _closeDropdown() {\n if (this.dropdown) {\n this.emit('before.dropdown.close', this);\n\n this.container.classList.remove('is-active');\n\n this.emit('after.dropdown.close', this);\n }\n }\n\n /**\n * Create a new dropdown item based on given item data\n *\n * @param item\n */\n _createDropdownItem(item) {\n if (this.dropdown) {\n // TODO: add possibility to provide template through options\n const dropdownItemFragment = document.createRange().createContextualFragment(dropdownItemTemplate({\n text: item.text,\n value: item.value\n }));\n const dropdownItem = dropdownItemFragment.firstElementChild;\n\n // Save item data into dataset\n (dropdownItem as any).dataset.value = item.value;\n (dropdownItem as any).dataset.text = item.text;\n\n dropdownItem!.addEventListener('click', this._onDropdownItemClick);\n\n this.dropdown.append(dropdownItem);\n }\n }\n\n /**\n * Create a new tag and add it to the DOM\n *\n * @param string value\n */\n _createTag(item) {\n const tagFragment = document.createRange().createContextualFragment(tagTemplate({\n removable: this.options.removable,\n style: this.options.tagClass,\n text: item.text,\n value: item.value\n }));\n const tag = tagFragment.firstElementChild;\n\n // Attach tag click event to select it\n tag!.addEventListener('click', this._onTagClick);\n\n if (this.options.removable) {\n // Find delete button and attach click event\n const deleteButton = tag!.querySelector('.delete');\n if (deleteButton) {\n deleteButton.addEventListener('click', this._onTagDeleteClick);\n }\n }\n\n // insert new tag at the end (ie just before input)\n this.container.insertBefore(tag, this._input);\n }\n\n /**\n * Remove all dropdown items except the empty title\n */\n _emptyDropdown() {\n if (this.dropdown) {\n Array.from(this.dropdown.children).filter((child: any) => !child.classList.contains('empty-title')).forEach((child: any) => {\n child.remove();\n });\n }\n }\n\n /**\n * Find needle into a string and wrap it with <mark> HTML tag\n *\n * @param string\n * @param needle\n */\n _highlightMatchesInString(string, needle) {\n const reg = '(' + needle + ')(?![^<]*>|[^<>]*</)'; // explanation: http://stackoverflow.com/a/18622606/1147859\n const regex = new RegExp(reg, 'i');\n\n // If the regex doesn't match the string just return initial string\n if (!string.match(regex)) {\n return string;\n }\n\n // Otherwise, get to highlighting\n const matchStartPosition = string.match(regex).index;\n const matchEndPosition = matchStartPosition + string.match(regex)[0].toString().length;\n const originalTextFoundByRegex = string.substring(matchStartPosition, matchEndPosition);\n string = string.replace(regex, `<mark class=\"is-highlighted\">${originalTextFoundByRegex}</mark>`);\n\n return string;\n }\n\n /**\n * Open dropdown\n */\n _openDropdown() {\n if (this.dropdown) {\n this.container.classList.add('is-active');\n }\n }\n\n /**\n * Propagate internal input changes to the original input\n */\n _propagateChange() {\n if (!this._isSelect) {\n // If original element is an input element\n this.element.value = this.value;\n } else {\n // If original element is a select element\n Array.from(this.element.options).forEach((option: any) => {\n option.setAttribute('selected', undefined);\n option.selected = false;\n\n // If option has been added by TagsInput then we remove it\n // Otherwise it is an original option\n if (typeof option.dataset.source !== 'undefined') {\n option.remove();\n }\n });\n\n // Update original element options selected attributes\n this._items.forEach(item => {\n this._updateSelectOptions({\n value: this._objectItems ? item[this.options.itemValue] : item,\n text: this._objectItems ? item[this.options.itemText] : item\n });\n });\n }\n\n // Trigger Change event manually (because original input is now hidden)\n // Trick: Passes current class constructor name to prevent loop with _onOriginalInputChange handler)\n const changeEvent = new CustomEvent('change', {\n detail: this.constructor.name\n });\n this.element.dispatchEvent(changeEvent);\n }\n\n /**\n * Trim value if option activated\n *\n * @param item\n */\n _trim(item) {\n if (this.options.trim) {\n if (this._objectItems) {\n if (isString(item[this.options.itemValue])) {\n item[this.options.itemValue] = item[this.options.itemValue].trim();\n }\n\n if (isString(item[this.options.itemText])) {\n item[this.options.itemText] = item[this.options.itemText].trim();\n }\n } else {\n item = item.trim();\n }\n }\n\n return item;\n }\n\n /**\n * Filter Dropdown items to be compliant with already selected items and current input value\n * Filtering is made on Text by default (can be changed with option)\n */\n _filterDropdownItems(value: any = null) {\n if (this.dropdown) {\n if (this.emit('before.dropdown.filter', this)) {\n Array.from(this.dropdown.children).filter((child: any) => !child.classList.contains('empty-title')).forEach((child: any) => {\n const childValue = child.dataset[this.options.searchOn];\n\n // Remove highlights\n if (this.options.highlightMatchesString) {\n child.textContent = child.textContent.replace(/<\\/?(mark\\s?(class=\"is\\-highlighted\")?)?>]*>?/gm, '');\n }\n\n // If value is found in dropdown\n if ((value && value.length)) {\n if (this.options.caseSensitive) {\n child.style.display = childValue.includes(value) ? 'block' : 'none';\n } else {\n child.style.display = childValue.toLowerCase().includes(value.toLowerCase()) ? 'block' : 'none';\n }\n\n if (this.options.highlightMatchesString) {\n child.innerHTML = this._highlightMatchesInString(child.innerHTML, value);\n }\n } else {\n child.style.display = 'block';\n }\n\n if (!this.options.allowDuplicates || (this._isSelect && !this._isMultiple)) {\n const hasValue = this.options.searchOn === 'value' ? this.hasValue(childValue) : this.hasText(childValue);\n\n child.style.display = hasValue ? 'none' : child.style.display;\n }\n });\n\n const hasActiveItems = Array.from(this.dropdown.children).filter((child: any) => !child.classList.contains('empty-title')).some((child: any) => child.style.display !== 'none');\n if (hasActiveItems) {\n this.dropdownEmptyOption.style.display = 'none';\n } else {\n this.dropdownEmptyOption.style.display = 'block';\n }\n\n this.emit('after.dropdown.filter', this);\n\n return hasActiveItems;\n }\n }\n\n return true;\n }\n\n /**\n * Update original select option based on given item\n *\n * @param item\n */\n _updateSelectOptions(item) {\n if (this._isSelect) {\n // Check to see if the tag exists in its raw or uri-encoded form\n let option = this.element.querySelector(`option[value=\"${encodeURIComponent(item.value)}\"]`) || this.element.querySelector(`option[value=\"${item.value}\"]`);\n\n // add <option /> if item represents a value not present in one of the <select />'s options\n if (!option) {\n const optionFragment = document.createRange().createContextualFragment(`<option value=\"${item.value}\" data-source=\"${this.id}\" selected>${item.text}</option>`);\n option = optionFragment.firstElementChild;\n\n this.element.add(option);\n }\n\n // mark option as selected\n option.setAttribute('selected', 'selected');\n option.selected = true;\n }\n }\n\n /**\n * Add given item\n * item = 'john'\n * item = 'john,jane'\n * item = ['john', 'jane']\n * item = [{\n * \"value\": \"1\",\n * \"text\": \"John\"\n * }, {\n * \"value\": \"2\",\n * \"text\": \"Jane\"\n * }]\n *\n * @param item\n * @param silently Should the change be propagated to the original element\n */\n add(items, silently = false) {\n // Check if number of items is limited ans reached\n if (typeof this.options.maxTags !== 'undefined' && this._items.length >= this.options.maxTags) {\n return this;\n }\n\n // Make sure to work with an array of items\n items = Array.isArray(items) ? items : isObject(items) ? [items] : items.split(this.options.delimiter);\n\n // If string items are expected then check every item is a string\n if (!this._objectItems && (items.filter(item => isString(item)).length !== items.length)) {\n throw ('Item must be a string or an array of strings');\n }\n\n // If object items are expected then check every item is an object\n if (this._objectItems && (items.filter(item => isObject(item)).length !== items.length)) {\n throw ('Item must be an object or an array of objects');\n }\n\n items.forEach(item => {\n item = this._trim(item);\n\n // Check if item respects min/max chars\n if (this._checkLength(item)) {\n\n // If original input is a non multiple select element\n if (this._isSelect && !this._isMultiple && this._items.length > 0) {\n this.removeAtIndex(0);\n this.element.remove(this.element.selectedIndex);\n }\n\n // check if duplicates are allowed or not\n if (item = this.emit('before.add', item)) {\n if (this.options.allowDuplicates || !this.has(item)) {\n const itemData = {\n value: this._objectItems ? item[this.options.itemValue] : item,\n text: this._objectItems ? item[this.options.itemText] : item\n };\n\n const tag = this._createTag(itemData);\n\n // save item into the internal array\n this._items.push(item);\n\n if (!silently) {\n // Propagate change event to the original input\n this._propagateChange();\n\n this.emit('after.add', {\n item,\n tag\n });\n }\n } else {\n if (this.options.highlightDuplicate) {\n const duplicateTag: any = Array.from(this.container.children).filter((child: any) => child.classList.contains('tag'))[this.indexOf(item)];\n\n if (duplicateTag) {\n duplicateTag.classList.add('is-duplicate');\n setTimeout(() => {\n duplicateTag.classList.remove('is-duplicate');\n }, 1250);\n }\n }\n\n this.emit('item.duplicate', item);\n }\n }\n }\n });\n\n return this;\n }\n\n /**\n * Unselect the selected item\n */\n clearSelection() {\n if (this._selected >= 0) {\n const item = this._items[this._selected];\n const tag: any = Array.from(this.container.children).filter((child: any) => child.classList.contains('tag'))[this._selected];\n\n if (this.emit('before.unselect', {\n item,\n tag\n })) {\n if (tag) {\n tag.classList.remove('is-selected');\n }\n\n this._selected = -1;\n\n this.emit('after.unselect', {\n item,\n tag\n });\n }\n }\n\n return this;\n }\n\n /**\n * Shortcut to removeAll method\n */\n flush() {\n return this.removeAll();\n }\n\n /**\n * Sets focus on the input\n */\n focus() {\n this.container.classList.add('is-focused');\n this._input.focus();\n\n return this;\n }\n\n /**\n * Check if given item is present\n *\n * @param item\n */\n has(item) {\n item = this._trim(item);\n\n if (this._objectItems) {\n return this._items.some(i => this.options.caseSensitive || !isString(i[this.options.itemValue]) ? i[this.options.itemValue] === item[this.options.itemValue] : i[this.options.itemValue].toLowerCase() === item[this.options.itemValue].toLowerCase());\n } else {\n return this.hasValue(item);\n }\n }\n\n /**\n * Check if given text is present\n *\n * @param value\n */\n hasText(value) {\n if (this.options.trim) {\n value = value.trim();\n }\n\n return this._items.some(i => {\n const val = (this._objectItems ? i[this.options.itemText] : i);\n\n return this.options.caseSensitive ? val === value : val.toLowerCase() === value.toLowerCase();\n });\n }\n\n /**\n * Check if given value is present\n *\n * @param value\n */\n hasValue(value) {\n if (this.options.trim) {\n value = value.trim();\n }\n\n return this._items.some(i => {\n const val = (this._objectItems ? i[this.options.itemValue] : i);\n\n return this.options.caseSensitive ? val === value : val.toLowerCase() === value.toLowerCase();\n });\n }\n\n /**\n * Get index of given item\n *\n * @param item\n */\n indexOf(item) {\n item = this._trim(item);\n\n if (this._objectItems) {\n if (!isObject(item)) {\n throw ('Item must be an object');\n }\n\n return this._items.map(function (e) { return e.value; }).indexOf(item.value);\n } else {\n return this._items.indexOf(item);\n }\n }\n\n /**\n * Returns the internal input element\n */\n input() {\n return this._input;\n }\n\n /**\n * Get items\n */\n items() {\n return this._items;\n }\n\n /**\n * Remove given item\n * item = 'john'\n * item = 'john,jane'\n *\n * @param String item\n */\n remove(items) {\n if (this.options.removable) {\n // Make sure to work with an array of items\n items = Array.isArray(items) ? items : isObject(items) ? [items] : items.split(this.options.delimiter);\n\n // If string items are expected then check every item is a string\n if (!this._objectItems && (items.filter(item => isString(item)).length !== items.length)) {\n throw ('Item must be a string or an array of strings');\n }\n // If object items are expected then check every item is an object\n if (this._objectItems && (items.filter(item => isObject(item)).length !== items.length)) {\n throw ('Item must be an object or an array of objects');\n }\n\n items.forEach(item => {\n let index = this.indexOf(item);\n\n while (index >= 0) {\n this.removeAtIndex(index);\n\n index = this.indexOf(item);\n }\n });\n }\n\n return this;\n }\n\n /**\n * Remove all tags at once\n */\n removeAll() {\n if (this.options.removable) {\n if (this.emit('before.flush', this._items)) {\n this.clearSelection();\n\n Array.from(this.container.children).filter((child: any) => child.classList.contains('tag')).forEach((tag: any) => tag.remove());\n\n this._items = [];\n\n this._filterDropdownItems();\n\n this._propagateChange();\n\n this.emit('after.flush', this._items);\n }\n }\n\n return this;\n }\n\n /**\n * Remove item at given index\n *\n * @param Integer index\n */\n removeAtIndex(index, clearSelection = true) {\n if (this.options.removable && !isNaN(index) && index >= 0 && index < this._items.length) {\n const tag: any = Array.from(this.container.children).filter((child: any) => child.classList.contains('tag'))[index];\n const item = this._items[index];\n\n if (this.emit('before.remove', item)) {\n if (clearSelection) {\n this.clearSelection();\n }\n\n if (tag) {\n tag.remove();\n }\n\n // If original input is a select element\n // then deselect related option\n if (this._isSelect) {\n this.element.options[index].selected = false;\n }\n\n if (this._selected == index) {\n this._selected = -1;\n } else if (this._selected >= 0) {\n // One item less so selected index is\n this._selected -= 1;\n }\n\n this._items.splice(index, 1);\n\n this._filterDropdownItems();\n\n this._propagateChange();\n\n this.emit('after.remove', item);\n }\n }\n\n return this;\n }\n\n /**\n * Select given item\n *\n * @param item\n */\n select(items) {\n if (this.options.selectable) {\n // Make sure to work with an array of items\n items = Array.isArray(items) ? items : isObject(items) ? [items] : items.split(this.options.delimiter);\n\n // If string items are expected then check every item is a string\n if (!this._objectItems && (items.filter(item => isString(item)).length !== items.length)) {\n throw ('Item must be a string or an array of strings');\n }\n // If object items are expected then check every item is an object\n if (this._objectItems && (items.filter(item => isObject(item)).length !== items.length)) {\n throw ('Item must be an object or an array of objects');\n }\n\n items.forEach(item => {\n this.selectAtIndex(this.indexOf(item));\n });\n }\n\n return this;\n }\n\n /**\n * Select tag at given index\n *\n * @param Integer index\n */\n selectAtIndex(index) {\n if (this.options.selectable) {\n // Clear selection\n this.clearSelection();\n\n if (!isNaN(index) && index >= 0 && index < this._items.length) {\n const tag: any = Array.from(this.container.children).filter((child: any) => child.classList.contains('tag'))[index];\n const item = this._items[index];\n\n if (this.emit('before.select', {\n item,\n tag\n })) {\n if (tag) {\n tag.classList.add('is-selected');\n }\n\n this._selected = index;\n\n this.emit('after.select', {\n item,\n tag\n });\n }\n }\n }\n\n return this;\n }\n\n /**\n * Get selected item\n */\n get selected() {\n if (this._selected >= 0) {\n return this._items[this._selected];\n } else {\n return null;\n }\n }\n\n /**\n * Get selected item index\n */\n get selectedIndex() {\n return this._selected;\n }\n\n /**\n * Get value\n */\n get value() {\n if (!this._isSelect) {\n if (this._objectItems) {\n return this._items.map(item => item.value).join(this.options.delimiter);\n } else {\n return this._items.join(this.options.delimiter);\n }\n } else {\n return Array.from(this.element.options).filter((option: any) => option.selected).map((option: any) => option.value);\n }\n }\n\n /**\n * Set value\n */\n set value(string) {\n this.removeAll();\n this.add(string);\n }\n\n /**\n * Document click event handler\n *\n * @param e\n */\n _onDocumentClick(e) {\n if (this.dropdown) {\n // If we click on element inside container then do nothing\n if (this.container.contains(e.target)) {\n return;\n }\n\n // Tag and delete button already deleted when event triggered\n // So we check if target is a tag delete button\n if (e.target.dataset.tag && e.target.dataset.tag === 'delete') {\n return;\n }\n\n // Click outside dropdown so close it\n this._closeDropdown();\n }\n }\n\n /**\n * Input focus lost event handler\n *\n * @param e\n */\n _onDropdownItemClick(e) {\n e.preventDefault();\n\n if (this.dropdown) {\n if (this._objectItems) {\n const item = {};\n item[this.options.itemText] = e.currentTarget.dataset.text;\n item[this.options.itemValue] = e.currentTarget.dataset.value;\n\n this.add(item);\n } else {\n this.add(e.currentTarget.dataset.value);\n }\n\n this._filterDropdownItems();\n this._input.value = '';\n this._input.focus();\n\n if (this.options.closeDropdownOnItemSelect) {\n this._closeDropdown();\n }\n }\n }\n\n /**\n * Input change event handler\n *\n * @param e\n */\n _onInputChange(e) {\n this._filterDropdownItems(this._input.value);\n }\n\n /**\n * Input click event handler\n *\n * @param e\n */\n _onInputClick(e) {\n e.preventDefault();\n\n if (!this.source || this._input.value.length >= this.options.searchMinChars) {\n this._openDropdown();\n this._filterDropdownItems();\n }\n }\n\n /**\n * Input focus event handler\n *\n * @param e\n */\n _onInputFocusIn(e) {\n e.preventDefault();\n\n if (this.container.getAttribute('disabled') !== null || this.container.classList.contains('is-disabled')) {\n this._input.blur();\n\n return false;\n }\n\n this.container.classList.add('is-focused');\n }\n\n /**\n * Input focus lost event handler\n *\n * @param e\n */\n _onInputFocusOut(e) {\n e.preventDefault();\n\n this.container.classList.remove('is-focused');\n }\n\n /**\n * Input Keydown event handler\n *\n * @param e\n */\n _onInputKeyDown(e) {\n const key = e.charCode || e.keyCode || e.which;\n\n switch (key) {\n // BACKSPACE\n case 8:\n if (this.options.removable) {\n if (this._caretAtStart() && this._selected >= 0) {\n const currentItemIndex = this._selected;\n // If tag was selected then select next (or previous if next does not exists)\n if (currentItemIndex >= 0) {\n this.selectAtIndex(currentItemIndex + 1 < this._items.length ? currentItemIndex + 1 : currentItemIndex - 1);\n }\n\n this.removeAtIndex(currentItemIndex, false);\n }\n }\n\n if (this.source && (this._input.value.length) < this.options.searchMinChars) {\n this._closeDropdown();\n }\n break;\n // ESCAPE\n case 27:\n if (this._selected >= 0) {\n this.clearSelection();\n }\n\n this._closeDropdown();\n break;\n // DELETE\n case 46:\n if (this.options.removable) {\n if (this._caretAtStart() && this._selected >= 0) {\n const currentItemIndex = this._selected;\n\n // If tag was selected then select next (or previous if next does not exists)\n if (currentItemIndex >= 0) {\n this.selectAtIndex(currentItemIndex + 1 < this._items.length ? currentItemIndex + 1 : currentItemIndex - 1);\n }\n\n this.removeAtIndex(currentItemIndex, false);\n }\n }\n\n if (this.source && (this._input.value.length) < this.options.searchMinChars) {\n this._closeDropdown();\n }\n break;\n // LEFT ARROW\n case 37:\n if (!this._input.value.length) {\n if (this._selected < 0) {\n this.selectAtIndex(this._items.length - 1);\n } else {\n this.selectAtIndex(this._selected - 1 >= 0 ? this._selected - 1 : this._items.length - 1);\n }\n }\n break;\n // RIGHT ARROW\n case 39:\n if (!this._input.value.length) {\n if (this._selected < 0) {\n this.selectAtIndex(0);\n } else {\n this.selectAtIndex(this._selected + 1 >= this._items.length ? 0 : this._selected + 1);\n }\n }\n break;\n default:\n if (this.options.clearSelectionOnTyping) {\n this.clearSelection();\n }\n // ignore\n }\n }\n\n /**\n * Input Keypress event handler\n *\n * @param e\n */\n _onInputKeyPress(e) {\n const key = e.charCode || e.keyCode || e.which;\n let value = this._trim(this._input.value) + String.fromCharCode(key);\n\n if (!this._manualInputAllowed && !this._filterInputAllowed) {\n e.preventDefault();\n\n return false;\n }\n\n // ENTER\n if (!value.length && key !== 13) {\n return false;\n }\n\n if (this._filterInputAllowed) {\n this._filterDropdownItems(value as any);\n }\n\n if (this._filterInputAllowed && this.source && value.length >= this.options.searchMinChars && key !== 13) {\n this._openDropdown();\n this.dropdown.classList.add('is-loading');\n this._emptyDropdown();\n\n this.source(value).then(results => {\n results = this.emit('on.results.received', results);\n\n if (results.length) {\n results.forEach(result => {\n const item = {\n value: null,\n text: null\n };\n\n if (!isObject(result)) {\n item.value = result;\n item.text = result;\n } else {\n item.value = result[this.options.itemValue];\n item.text = result[this.options.itemText];\n }\n\n this._createDropdownItem(item);\n });\n }\n\n this._filterDropdownItems(value as any);\n\n this.dropdown.classList.remove('is-loading');\n });\n }\n\n if (this._manualInputAllowed && (value.includes(this.options.delimiter) || key == 13)) {\n // Prevent default behavior (ie: add char into input value)\n e.preventDefault();\n\n // Split value by delimiter in case we copy/paste multiple values\n const values = value.split(this.options.delimiter);\n values.forEach(value => {\n // check if empty text when delimiter is removed\n if ((value = value.replace(this.options.delimiter, '')) != '') {\n // push to array and remove delimiter\n this.add(value);\n }\n });\n\n value = '';\n // clear input\n this._input.value = '';\n\n this._closeDropdown();\n\n return false;\n }\n }\n\n /**\n * Original input change event handler\n * CAUTION: because original input is now hidden the change event must be triggered manually on change\n * Example how to trigger change event manually\n * var changeEvent = new Event('change');\n * input.dispatchEvent(changeEvent);\n *\n * @param e\n */\n _onOriginalInputChange(e) {\n if (!e.detail || isString(e.detail) && e.detail !== this.constructor.name) {\n this.value = e.currentTarget.value;\n }\n }\n\n /**\n * Tag click event handler\n *\n * @param e\n */\n _onTagClick(e) {\n e.preventDefault();\n\n if (e.currentTarget.classList.contains('delete')) {\n return false;\n }\n\n if (this.container.getAttribute('disabled') !== null || this.container.classList.contains('is-disabled')) {\n return false;\n }\n\n this._input.focus();\n\n if (this.options.selectable) {\n const tag = e.currentTarget.closest('.tag');\n\n if (tag) {\n const tagIndex = Array.from(this.container.children).indexOf(tag);\n if (tagIndex === this._selected) {\n this.clearSelection();\n } else {\n this.selectAtIndex(tagIndex);\n }\n }\n }\n }\n\n /**\n * Delete tag button click event handler\n *\n * @param e\n */\n _onTagDeleteClick(e) {\n e.preventDefault();\n\n if (this.container.getAttribute('disabled') !== null || this.container.classList.contains('is-disabled')) {\n return false;\n }\n\n const tag = e.currentTarget.closest('.tag');\n\n if (tag) {\n this.removeAtIndex(Array.from(this.container.children).indexOf(tag));\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport BulmaTagsInput from '../tags-input';\n\ninterface ITagsInputOptions {\n enabled?: boolean;\n items?: any;\n allowDuplicates?: boolean;\n\tcaseSensitive?: boolean;\n\tclearSelectionOnTyping?: boolean;\n\tcloseDropdownOnItemSelect?: boolean;\n\tdelimiter?: string;\n\tfreeInput?: boolean;\n\thighlightDuplicate?: boolean;\n\thighlightMatchesString?: boolean;\n\titemValue?: string;\n itemText?: string;\n\tmaxTags?: number;\n\tmaxChars?: number;\n\tminChars?: number;\n\tnoResultsLabel?: string;\n\tplaceholder?: string;\n\tremovable?: boolean;\n\tsearchMinChars?: number;\n\tsearchOn?: 'text'|'value';\n\tselectable?: boolean;\n\tsource?: any;\n\ttagClass?: string;\n\ttrim?: boolean;\n}\n\nconst restrictToType: {\n [type: string]: (value: string) => string|number|boolean;\n} = {\n number: val => parseFloat(val) === +val ? val : false\n};\n\ninterface IEvent {\n event: any;\n listener: any;\n}\n\n@Directive({\n selector: '[appTagsInput]'\n})\nexport class TagsInputDirective implements AfterViewInit, OnDestroy {\n private tagsInput?: BulmaTagsInput;\n private inputEvents: IEvent[] = [];\n\n @Input()\n private appTagsInput: ITagsInputOptions = {};\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit() {\n const { enabled } = this.appTagsInput;\n const { localName } = this.input;\n setTimeout(() => !this.tagsInput && enabled && localName === 'input' && this.enableTagsInput());\n }\n\n ngOnDestroy() {\n this.inputEvents.map(({ event, listener }) => this.tagsInputInput.removeEventListener(event, listener));\n this.inputEvents = [];\n this.tagsInput = undefined;\n }\n\n private get input() {\n return this.elementRef.nativeElement as HTMLInputElement;\n }\n\n private get tagsInputNode() {\n return this.elementRef.nativeElement.parentNode.querySelectorAll('.tags-input')[0];\n }\n\n private get tagsInputInput() {\n return this.tagsInputNode.querySelectorAll('.input')[0] as HTMLInputElement;\n }\n\n private setInputEvent({ event, listener }: IEvent) {\n this.tagsInputInput.addEventListener(event, listener);\n this.inputEvents.push({ event, listener });\n }\n\n private mapValue(value: string) {\n return this.appTagsInput.items.type in restrictToType ? restrictToType[this.appTagsInput.items.type](value) : value;\n }\n\n private addInputValue(value?: string) {\n if (value && this.mapValue(value)) {\n this.tagsInput!.add(value);\n this.tagsInputInput.value = '';\n }\n }\n\n private enableTagsInput() {\n try {\n const { enabled, items, ...options } = this.appTagsInput;\n this.tagsInput = new BulmaTagsInput(this.input, options);\n\n // TODO: remove when fixed, @see https://github.com/CreativeBulma/bulma-tagsinput/issues/23\n const classes = ['is-small', 'is-large'].filter(v => this.input.classList.contains(v));\n classes.map(v => this.tagsInputNode.classList.add(v));\n\n // regex pattern matching\n this.tagsInput.on('before.add', value => this.mapValue(value));\n\n // add item on blur if value\n const onBlur = () => this.addInputValue(this.tagsInputInput.value);\n this.setInputEvent({ event: 'blur', listener: onBlur });\n }\n catch (err) {\n console.error(err);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'times'\n})\nexport class TimesPipe implements PipeTransform {\n transform(times: number): unknown {\n return (new Array(times)).fill(1);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap';\nimport { GoogleMapsModule } from '@angular/google-maps';\n\nimport { HeCommonLightModule } from './common.light.module';\n\nimport { BlankNodeDiffsComponent } from './blank-node-diffs/blank-node-diffs.component';\nimport { BlankNodeStateComponent } from './blank-node-state/blank-node-state.component';\nimport { BlankNodeStateNoticeComponent } from './blank-node-state-notice/blank-node-state-notice.component';\nimport { BlankNodeValueDeltaComponent } from './blank-node-value-delta/blank-node-value-delta.component';\nimport { ClipboardComponent } from './clipboard/clipboard.component';\nimport { LinkKeyValueComponent } from './link-key-value/link-key-value.component';\nimport { MapsDrawingConfirmComponent } from './maps-drawing-confirm/maps-drawing-confirm.component';\nimport { PopoverComponent } from './popover/popover.component';\nimport { PopoverConfirmComponent } from './popover-confirm/popover-confirm.component';\nimport { SchemaVersionLinkComponent } from './schema-version-link/schema-version-link.component';\nimport { SkeletonTextComponent } from './skeleton-text/skeleton-text.component';\nimport { UnitConverterComponent } from './unit-converter/unit-converter.component';\nimport { ClickOutsideDirective } from './click-outside.directive';\nimport { GetPipe } from './get.pipe';\nimport { TagsInputDirective } from './tags-input.directive';\nimport { TimesPipe } from './times.pipe';\n\nconst components = [\n ClipboardComponent,\n PopoverComponent,\n PopoverConfirmComponent,\n TagsInputDirective,\n LinkKeyValueComponent,\n MapsDrawingConfirmComponent,\n BlankNodeStateComponent,\n BlankNodeStateNoticeComponent,\n BlankNodeValueDeltaComponent,\n SchemaVersionLinkComponent,\n UnitConverterComponent,\n BlankNodeDiffsComponent,\n TimesPipe,\n ClickOutsideDirective,\n SkeletonTextComponent,\n GetPipe\n];\n\n@NgModule({\n declarations: components,\n exports: [\n NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,\n GoogleMapsModule,\n HeCommonLightModule,\n ...components\n ],\n imports: [\n CommonModule, FormsModule, RouterModule,\n NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,\n GoogleMapsModule,\n HeCommonLightModule\n ]\n})\nexport class HeCommonModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Bibliography } from '@hestia-earth/schema';\n\nimport { filterParams, handleAPIError } from '../common/utils';\nimport { HeCommonService } from '../common/common.service';\n\ninterface IMendeleySearchParams {\n title?: string;\n limit?: number;\n doi?: string;\n scopus?: string;\n}\n\nexport class MendeleySearchResult {\n count = 0;\n results: Partial<Bibliography>[] = [];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeMendeleyService {\n constructor(\n protected http: HttpClient,\n protected commonService: HeCommonService\n ) {}\n\n private get path() {\n return `${this.commonService.apiBaseUrl}/mendeley`;\n }\n\n find(params: IMendeleySearchParams) {\n return this.http.get<MendeleySearchResult>(this.path, { params: filterParams(params) });\n }\n\n get(id: string) {\n return this.http.get<Bibliography>(`${this.path}/${id}`).toPromise().catch(handleAPIError);\n }\n}\n","import { NodeType, TermTermType, nestedSearchableKeys } from '@hestia-earth/schema';\n\nexport type searchableType = NodeType.Cycle | NodeType.Source;\n\nexport const searchableTypes: searchableType[] = [\n NodeType.Cycle,\n NodeType.Source\n];\n\ntype multiMatchType = 'best_fields' | 'most_fields' | 'cross_fields' | 'phrase' | 'phrase_prefix' | 'bool_prefix';\ntype multiMatchAnalyzer = 'standard';\n\nexport interface ISearchFilters {\n [key: string]: (string | number)[];\n}\n\nexport const serializeSearchFilters = (filters: ISearchFilters) =>\n Object.keys(filters || {})\n .filter(key => filters[key].length)\n .map(key => `${key}=${filters[key].filter(Boolean).join('|')}`)\n .join(';');\n\nexport const deserializeSearchFilters = (filters: string): ISearchFilters =>\n (filters || '').split(';').reduce((prev: any, curr) => {\n const [key, values] = curr.split('=');\n prev[key] = (values || '').split('|').filter(Boolean);\n return prev;\n }, {});\n\nexport const matchType = (type: NodeType | string) => Object.freeze({\n match: { '@type': type }\n});\n\nexport const matchTermType = (termType: TermTermType | string) => Object.freeze({\n match: { termType }\n});\n\nexport const matchRegex = (key: string, value: string | RegExp) => Object.freeze({\n regexp: { [key]: { value: value.toString() } }\n});\n\nexport const matchQuery = (key: string, value: any, boost?: number) => Object.freeze({\n match: {\n [key]: {\n query: value,\n ...(boost ? { boost } : {})\n }\n }\n});\n\nexport const matchExactQuery = (key: string, value: any, boost?: number) => matchQuery(`${key}.keyword`, value, boost);\n\nexport const matchNameNormalized = (query: string, boost = 20) => Object.freeze({\n match: { nameNormalized: { query, boost } }\n});\n\nexport const numberGte = (key: string, value: number) => Object.freeze({\n range: { [key]: { gte: value } }\n});\n\nexport const multiMatchQuery = (\n query: string, fields: string[], type: multiMatchType = 'best_fields', boost?: number, analyzer?: multiMatchAnalyzer\n) => Object.freeze({\n multi_match: {\n query,\n fields,\n type,\n ...(boost ? { boost } : {}),\n ...(analyzer ? { analyzer } : {})\n }\n});\n\nexport const matchPhraseQuery = (query: string, boost?: number, ...fields: string[]) =>\n fields.length ? multiMatchQuery(query, fields, 'phrase', boost) : matchExactQuery('name', query, boost);\n\nexport const matchPhrasePrefixQuery = (query: string, boost = 2, ...fields: string[]) =>\n fields.length ?\n multiMatchQuery(query, fields, 'phrase_prefix', boost) :\n Object.freeze({\n match_phrase_prefix: {\n nameSearchAsYouType: {\n query,\n boost\n }\n }\n });\n\nexport const matchBoolPrefixQuery = (query: string, boost = 1, ...fields: string[]) =>\n fields.length ?\n multiMatchQuery(query, fields, 'bool_prefix', boost) :\n Object.freeze({\n match_bool_prefix: {\n name: {\n query,\n boost\n }\n }\n });\n\nexport const wildcardQuery = (query: string, boost = 3, ...fields: string[]) => Object.freeze({\n simple_query_string: {\n query: `*${query}*`,\n fields,\n analyze_wildcard: true,\n boost\n }\n});\n\nconst matchCountryLevel = { match: { gadmLevel: 0 } };\n\nexport const matchGlobalRegion = { regexp: { '@id': 'region-*' } };\n\nexport const matchCountry = Object.freeze({\n bool: {\n should: [\n matchCountryLevel,\n matchGlobalRegion\n ],\n minimum_should_match: 1\n }\n});\n\nexport const countriesQuery = Object.freeze({\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.region),\n matchCountryLevel\n ]\n }\n});\n\nexport const allCountriesQuery = Object.freeze({\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.region)\n ],\n ...matchCountry.bool\n }\n});\n\nexport const matchRegion = numberGte('gadmLevel', 1);\n\nexport const regionsQuery = Object.freeze({\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.region),\n matchRegion\n ]\n }\n});\n\nexport const worldRegion = Object.freeze({\n '@id': 'region-world',\n name: 'World'\n});\n\nexport const cropsQuery = Object.freeze({\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.crop)\n ]\n }\n});\n\nexport const matchAggregatedQuery = matchQuery('aggregated', true);\n\nconst isNestedKey = (key: string) => nestedSearchableKeys.includes(key.split('.')[0]);\n\nexport const matchNestedKey = (key: string, query: any) =>\n isNestedKey(key) ? {\n nested: { path: key.split('.')[0], query }\n } : query;\n\n/**\n * List of fields to return in the search results.\n */\nexport const searchResultsFields: {\n [type in searchableType]: string[];\n} = Object.freeze({\n [NodeType.Cycle]: [\n 'description', 'dataDescription', 'endDate',\n 'emissionsCount', 'inputsCount', 'productsCount',\n 'site.location', 'site.country.name', 'site.region.name'\n ],\n [NodeType.Source]: ['bibliography.title', 'bibliography.documentDOI'],\n [NodeType.ImpactAssessment]: ['emissionsResourceUseCount', 'impactsCount', 'country.name']\n});\n\n/**\n * List of fields to search in.\n */\nconst searchFields: {\n [type in searchableType]: string[];\n} = Object.freeze({\n [NodeType.Cycle]: ['name', 'description', 'dataDescription'],\n [NodeType.Source]: ['name', 'bibliography.title'],\n [NodeType.ImpactAssessment]: ['name', 'product.name', 'country.name']\n});\n\nconst searchFieldsNested: {\n [type in searchableType]: string[];\n} = Object.freeze({\n [NodeType.Cycle]: [\n 'inputs.term.name',\n 'emissions.term.name',\n 'practices.term.name'\n ],\n [NodeType.Source]: [],\n [NodeType.ImpactAssessment]: [\n 'emissionsResourceUse.term.name',\n 'impacts.term.name'\n ]\n});\n\n/**\n * Specific strict queries per type.\n */\nconst searchQueries: {\n [type in searchableType]: { must: any[]; must_not: any[] };\n} = {\n [NodeType.Cycle]: { must: [], must_not: [matchAggregatedQuery] },\n [NodeType.Source]: { must: [], must_not: [matchAggregatedQuery] }\n};\n\nconst searchFiltersKeys: {\n [type in searchableType]: (key: string) => string;\n} = {\n [NodeType.Cycle]: key => key,\n [NodeType.Source]: key => key\n};\n\n/* eslint-disable complexity */\nexport const searchQuery = (type: searchableType, query?: string, filters?: ISearchFilters, aggregated?: boolean) => {\n const boolQuery: any = ({\n must: [\n matchType(type),\n aggregated ? matchAggregatedQuery : null\n ].filter(Boolean),\n ...(query ? {\n should: [\n matchPhraseQuery(query, 100, ...searchFields[type]), // make sure exact matches come first\n matchPhrasePrefixQuery(query, 20, ...searchFields[type]),\n matchBoolPrefixQuery(query, 10, ...searchFields[type]),\n ...searchFieldsNested[type].map(field => matchNestedKey(field, matchBoolPrefixQuery(query, 1, field)))\n ],\n minimum_should_match: 1\n } : {}),\n must_not: [\n aggregated ? null : matchAggregatedQuery\n ].filter(Boolean)\n });\n const keys = Object.keys(filters || {}).filter(key => filters![key].length);\n return {\n bool: keys.length ? {\n must: keys.map(key => {\n const filterKey = searchFiltersKeys[type](key);\n return {\n bool: {\n should: filters![key]\n .map(value => matchNestedKey(filterKey, matchExactQuery(filterKey, value)))\n .map(must => {\n const localQuery = JSON.parse(JSON.stringify(boolQuery));\n localQuery.must.push(must);\n return { bool: localQuery };\n }),\n minimum_should_match: 1\n }\n };\n })\n } : boolQuery\n };\n};\n/* eslint-enable complexity */\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport {\n JSONLD, NodeType, ICycleJSONLD, ISourceJSONLD, ITermJSONLD, Source, SchemaType, IImpactAssessmentJSONLD\n} from '@hestia-earth/schema';\n\nimport { HeCommonService } from '../common/common.service';\nimport {\n matchType, matchPhraseQuery, matchPhrasePrefixQuery, matchQuery, searchableType, searchableTypes, matchBoolPrefixQuery\n} from './search.model';\n\nexport type searchResult = ICycleJSONLD | ISourceJSONLD | IImpactAssessmentJSONLD | ITermJSONLD;\n\nexport type sortOrders = 'asc' | 'desc';\n\ninterface ISearchParamSort {\n [key: string]: sortOrders;\n}\n\ninterface ISearchScript {\n _script: {\n type?: string;\n order?: sortOrders;\n script: string;\n };\n}\n\nexport interface ISearchParams {\n limit?: number;\n offset?: number;\n fields?: string[];\n sort?: ISearchParamSort[] | ISearchScript;\n query?: any;\n}\n\nexport interface ISearchResultExtended {\n _score: number;\n createdAt: string;\n // geospacial search\n location?: {\n lat: number;\n lon: number;\n };\n // used in search\n properties?: string[];\n expanded?: boolean;\n extended?: boolean;\n pinned?: boolean;\n loading?: boolean;\n selected?: boolean;\n // count for lists\n inputsCount?: number;\n emissionsCount?: number;\n productsCount?: number;\n}\n\nexport interface ISearchResults<C extends JSONLD<T>, T extends NodeType = searchableType> {\n /**\n * Amount of time the query took\n */\n time: number;\n /**\n * Numnber of results\n */\n count: number;\n results: (C & ISearchResultExtended)[];\n}\n\nconst emptySearchResult = <C extends JSONLD<T>, T extends NodeType>() => ({\n time: 0,\n count: 0,\n results: []\n} as ISearchResults<C, T>);\n\nexport const MAX_RESULTS = 10000;\n\nexport const suggestMatchQuery = (query: string) => [\n matchPhraseQuery(query, 10),\n matchQuery('nameNormalized', query, 8),\n matchPhrasePrefixQuery(query, 2)\n];\n\nexport const suggestQuery = <T extends NodeType = searchableType>(\n query: string, type?: T, extraQueries: any[] = []\n) => ({\n bool: {\n must: extraQueries,\n should: (type ? [type] : searchableTypes).map(v => ({\n bool: {\n must: [matchType(v)],\n should: suggestMatchQuery(query),\n minimum_should_match: 1\n }\n })),\n minimum_should_match: 1\n }\n});\n\nconst suggestSourceQuery = (query: string, fields: string[]) => ({\n bool: {\n must: [matchType(NodeType.Source)],\n should: [\n matchPhraseQuery(query, 100, ...fields),\n matchPhrasePrefixQuery(query, 20, ...fields),\n matchBoolPrefixQuery(query, 10, ...fields)\n ],\n minimum_should_match: 1\n }\n});\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeSearchService {\n constructor(\n protected http: HttpClient,\n protected commonService: HeCommonService\n ) { }\n\n public search<C extends JSONLD<T>, T extends NodeType = searchableType>(params: ISearchParams) {\n return this.http.post<ISearchResults<C, T>>(`${this.commonService.apiBaseUrl}/search`, params)\n .pipe(\n catchError(() => of(emptySearchResult<C, T>()))\n )\n .toPromise();\n }\n\n public count(params = {}) {\n return this.http.post<number>(`${this.commonService.apiBaseUrl}/count`, params).toPromise().catch(() => 0);\n }\n\n public get$<C extends JSONLD<T>, T extends NodeType>(type: T, id: string) {\n return this.http.post<ISearchResults<C, T>>(`${this.commonService.apiBaseUrl}/search`, {\n limit: 1,\n query: {\n bool: {\n must: [{ match: { '@type': type } }, { match: { '@id': id } }]\n }\n }\n })\n .pipe(\n catchError(() => of(emptySearchResult<C, T>())),\n map(({ results }) => results[0] || null)\n );\n }\n\n public get<C extends JSONLD<T>, T extends NodeType>(type: T, id: string) {\n return this.get$<C, T>(type, id).toPromise();\n }\n\n public suggest<C extends JSONLD<T>, T extends NodeType = searchableType>(\n term: string, type?: T, extraQueries: any[] = [], fullQuery?: any, limit = 10, includes: string[] = []\n ) {\n const query = fullQuery || suggestQuery(term, type, extraQueries);\n return this.http.post<ISearchResults<C, T>>(`${this.commonService.apiBaseUrl}/search`, {\n limit,\n fields: ['name', '@id', type ? '' : '@type', 'termType', 'aggregated', ...includes].filter(val => !!val),\n query\n })\n .pipe(\n catchError(() => of(emptySearchResult<C, T>())),\n map(({ results }) => results.map(({ _score, ...res }) => res))\n );\n }\n\n public suggestSource(term: string, limit = 5, fields = ['bibliography.title'], includes = ['bibliography.title']) {\n return this.suggest(term, NodeType.Source, [], suggestSourceQuery(term, fields), limit, includes)\n .pipe(\n map((sources: Partial<Source>[]) => sources.map(source => ({\n ...source,\n bibliography: {\n // needed to create a nested property\n type: SchemaType.Bibliography,\n ...source.bibliography\n }\n } as Partial<Source>)))\n );\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, AfterViewInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { catchError, debounceTime, distinctUntilChanged, map, switchMap, tap } from 'rxjs/operators';\nimport { Observable, of, Subscription, zip } from 'rxjs';\nimport { Bibliography, Source } from '@hestia-earth/schema';\n\nimport { HeMendeleyService } from '../../mendeley/mendeley.service';\nimport { HeSearchService } from '../../search/search.service';\n\ntype searchByFields = 'title' | 'documentDOI' | 'scopus';\ntype Result = Partial<Source> | Partial<Bibliography>;\n\n@Component({\n selector: 'he-bibliographies-search-confirm',\n templateUrl: './bibliographies-search-confirm.component.html',\n styleUrls: ['./bibliographies-search-confirm.component.scss']\n})\nexport class BibliographiesSearchConfirmComponent implements AfterViewInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n @Input()\n private search?: string;\n @Input()\n private searchSources = true;\n @Input()\n private searchBibliographies = true;\n @Input()\n public searchBy: searchByFields = 'title';\n\n @Output()\n private closed = new EventEmitter<any>();\n\n public formGroup: FormGroup;\n public loading = true;\n\n public results: Observable<Result[]>;\n public selectedResult?: Result;\n public hasResults = false;\n\n constructor(\n formBuilder: FormBuilder,\n private mendeleyService: HeMendeleyService,\n private searchService: HeSearchService\n ) {\n this.formGroup = formBuilder.group({\n search: ['', Validators.required]\n });\n this.results = this.searchControl!.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n tap(() => {\n this.loading = true;\n this.selectedResult = undefined;\n }),\n switchMap(term => term.length > 1 ? this.runSearch(term) : of([] as any)),\n tap(values => {\n this.loading = false;\n this.hasResults = values.length > 0;\n })\n );\n }\n\n ngAfterViewInit() {\n this.searchControl!.setValue(this.search || '');\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n private get searchLimit() {\n return this.searchSources && this.searchBibliographies ? 5 : 10;\n }\n\n private runSearchSources(term: string) {\n const fields = [`bibliography.${this.searchBy}`];\n const includes = ['bibliography.title', 'bibliography.documentDOI', 'bibliography.scopus'];\n return this.searchSources ? this.searchService.suggestSource(term, this.searchLimit, fields, includes) : of([]);\n }\n\n private runSearchBibliographies(term: string) {\n // scopus\n const params = this.searchBy === 'title' ? { title: term } : (\n this.searchBy === 'documentDOI' ? { doi: term } : { scopus: term }\n );\n return this.searchBibliographies ? this.mendeleyService.find({ ...params, limit: this.searchLimit }).pipe(\n map(({ results }: any) => results)\n ) : of([]);\n }\n\n private runSearch(term: string) {\n return zip(\n this.runSearchSources(term),\n this.runSearchBibliographies(term)\n ).pipe(\n catchError(() => of([])),\n map(res => res.flat())\n );\n }\n\n public searchFocus(e: Event) {\n e.stopPropagation();\n setTimeout(() => {\n const inputEvent = new Event('input');\n e.target?.dispatchEvent(inputEvent);\n }, 0);\n }\n\n public get searchControl() {\n return this.formGroup.get('search');\n }\n\n public resetSearch() {\n this.searchControl!.setValue('');\n }\n\n public selectResult(result: Result) {\n this.selectedResult = result;\n }\n\n public confirm() {\n this.closed.next(this.selectedResult);\n }\n\n public cancel() {\n this.closed.next(null);\n }\n}\n","<div class=\"modal is-large 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\">Search Bibliographies</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"cancel()\"></button>\n </header>\n <section class=\"modal-card-body\">\n <form [formGroup]=\"formGroup\" novalidate>\n <div class=\"field has-addons\">\n <div class=\"control is-expanded has-icons-right\">\n <input class=\"input search-input\"\n [attr.placeholder]=\"'Search bibliography by ' + searchBy\"\n formControlName=\"search\" name=\"randomname\" autocomplete=\"off\"\n (focus)=\"searchFocus($event)\"\n >\n <a class=\"icon is-small is-right\" (click)=\"!loading && resetSearch()\" [ngSwitch]=\"loading\">\n <fa-icon *ngSwitchCase=\"true\" icon=\"spinner\" [pulse]=\"true\"></fa-icon>\n <fa-icon *ngSwitchCase=\"false\" icon=\"times\"></fa-icon>\n </a>\n </div>\n </div>\n </form>\n\n <div class=\"mt-2\">\n <span [class.is-hidden]=\"loading || !searchControl?.value || hasResults\">\n No bibliographies found matching query.\n </span>\n\n <ul>\n <li *ngFor=\"let result of results | async\">\n <a class=\"is-block p-1 search-result\" (click)=\"selectResult(result)\"\n [class.is-active]=\"selectedResult === result\"\n >\n <ngb-highlight\n [result]=\"result.bibliography ? result.bibliography.title : result.title\"\n [term]=\"searchControl?.value\"\n ></ngb-highlight>\n\n <span class=\"px-1\">-</span>\n\n <span class=\"px-1\"><i>{{result.name}}</i></span>\n\n <span class=\"px-1\"\n *ngIf=\"result.bibliography?.documentDOI || result.documentDOI\"\n >- <b>documentDOI:</b>\n </span>\n <ngb-highlight\n [result]=\"result.bibliography ? result.bibliography.documentDOI : result.documentDOI\"\n [term]=\"searchControl?.value\"\n ></ngb-highlight>\n\n <span class=\"px-1\"\n *ngIf=\"result.bibliography?.scopus || result.scopus\"\n >- <b>scopus:</b>\n </span>\n <ngb-highlight\n [result]=\"result.bibliography?.scopus || result.scopus\"\n [term]=\"searchControl?.value\"\n ></ngb-highlight>\n\n <span>\n <ng-container *ngTemplateOutlet=\"mendeleyLink; context: {$implicit: result.bibliography ? result.bibliography.mendeleyID : result.mendeleyID}\"></ng-container>\n </span>\n </a>\n </li>\n </ul>\n </div>\n </section>\n <footer class=\"modal-card-foot\">\n <button class=\"button is-primary\" (click)=\"confirm()\" [disabled]=\"!selectedResult\">\n <span>Confirm</span>\n </button>\n <button class=\"button\" (click)=\"cancel()\">\n <span>Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #mendeleyLink let-id>\n <a *ngIf=\"id\" [href]=\"'https://www.mendeley.com/catalogue/' + id\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { HeCommonModule } from '../common/common.module';\n\nimport {\n BibliographiesSearchConfirmComponent\n} from './bibliographies-search-confirm/bibliographies-search-confirm.component';\n\nconst components = [\n BibliographiesSearchConfirmComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, ReactiveFormsModule,\n HeCommonModule\n ]\n})\nexport class HeBibliographiesModule { }\n","import { json2csvAsync } from 'json-2-csv';\n\nexport enum Level {\n debug = 'DEBUG',\n info = 'INFO',\n warning = 'WARNING',\n error = 'ERROR'\n}\n\nexport const levels = Object.values(Level);\n\nexport interface ILine {\n code: string;\n data: any;\n class: string;\n level: Level;\n}\n\nconst parseLine = (text: string) => {\n try {\n return JSON.parse(text);\n }\n catch (err) {\n return { level: Level.debug };\n }\n};\n\nconst levelToClass = {\n [Level.debug]: 'has-text-info',\n [Level.error]: 'has-text-danger',\n [Level.info]: '',\n [Level.warning]: 'has-text-warning'\n};\n\nexport const parseData = (data: any) => ({\n code: JSON.stringify(data),\n data,\n class: levelToClass[data.level],\n level: data.level\n} as ILine);\n\nexport const parseLines = (text: any) =>\n typeof text === 'string' ?\n (text || '').trim().split('\\n').filter(Boolean).map(parseLine).map(parseData) :\n [parseData(text)];\n\nconst csvKey = (key: string) => ({\n key: 'key/term',\n term: 'key/term',\n time: '',\n unit: ''\n}[key] || key).trim();\n\nconst csvValue = (value: string) => (value || '').replace('[', '').replace(']', '').trim();\n\nexport const parseMessage = (message: string) => message.split(',').reduce((prev, parts) => {\n const [key, value] = parts.split('=');\n const val = csvValue(value);\n return {\n ...prev,\n ...(key && val ? { [csvKey(key)]: val } : {})\n };\n}, {});\n\nconst formatLine = ({ data: { timestamp, message } }: ILine) => ({\n timestamp,\n ...parseMessage(message)\n});\n\nexport const toCsv = (lines: ILine[]) =>\n json2csvAsync(lines.map(formatLine).filter(data => Object.keys(data).length > 1), {\n emptyFieldValue: ''\n });\n","import { NodeType, ICycleJSONLD } from '@hestia-earth/schema';\n\nexport interface ICycleJSONLDExtended extends ICycleJSONLD {\n related: {\n [type in NodeType]?: string[];\n };\n}\n\nexport const primaryProduct = ({ products }: Partial<ICycleJSONLD>) => (products || []).find(({ primary }) => primary);\n","/* eslint-disable complexity */\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { from, of, ReplaySubject } from 'rxjs';\nimport { catchError, map, mergeMap, reduce, take } from 'rxjs/operators';\nimport { isEmpty, isUndefined, isEqual } from '@hestia-earth/utils';\nimport { SchemaType, NodeType, SCHEMA_VERSION, sortConfig, sortKeysByType } from '@hestia-earth/schema';\nimport {\n definitions, definition, IDefinition, IDefinitionObject, IDefinitionArray, IDefinitionProperties\n} from '@hestia-earth/json-schema';\nimport { headersFromCsv } from '@hestia-earth/schema-convert';\n\nimport { baseUrl } from '../common/utils';\n\nexport const linkTypeEnabled = (type: SchemaType | NodeType) => [\n NodeType.Cycle,\n NodeType.ImpactAssessment,\n NodeType.Site,\n NodeType.Source,\n NodeType.Term\n].includes(type as NodeType);\n\nexport const refToSchemaType = (ref = '') =>\n ref.startsWith('http') ? ref : ref.substring(2).replace('-deep', '').replace('.json#', '') as SchemaType;\n\nexport const definitionToSchemaType = ({ title, $ref }: IDefinitionObject) =>\n (title || refToSchemaType($ref)) as SchemaType;\n\nconst schemaTypeProperties = (properties: IDefinitionProperties, schemaType?: SchemaType) => schemaType ? [\n 'type',\n ...('id' in properties && schemaType !== SchemaType.Term ? ['id'] : [])\n] : [];\n\nconst definitionToSchema = ({ required, properties }: IDefinitionObject) => ({\n required: required || [],\n properties: properties || {}\n});\n\nexport const schemaRequiredProperties = (schemas: definitions, def: IDefinitionObject) => {\n const schemaType = definitionToSchemaType(def);\n const { required, properties } = schemaType in schemas ?\n (schemas[schemaType] as IDefinitionObject) :\n definitionToSchema(def);\n // remove internal properties\n const props = (required || []).filter(key => !properties[key].internal);\n return {\n schemaType,\n properties: [\n ...props,\n ...schemaTypeProperties(properties, schemaType)\n ].map(key => ({ key, value: properties[key] }))\n };\n};\n\nexport const valueTypeToDefault = {\n number: '',\n integer: '',\n boolean: false,\n string: ''\n};\n\nexport const nestingTypeEnabled = (schemaType: SchemaType) => ![\n SchemaType.Cycle,\n SchemaType.ImpactAssessment,\n SchemaType.Organisation,\n SchemaType.Site,\n SchemaType.Source\n].includes(schemaType);\n\nexport const nestingEnabled = (schemaType: SchemaType, key: string) =>\n nestingTypeEnabled(schemaType) || ['type', 'id'].includes(key);\n\nexport const schemaTypeToDefaultValue = (schemas: definitions, prop: definition, nested = false): any => {\n const mappings: {\n [key: string]: () => any;\n } = {\n object: () => {\n const { schemaType, properties } = schemaRequiredProperties(schemas, prop as IDefinitionObject);\n return properties\n .filter(({ key }) => !nested || nestingEnabled(schemaType, key))\n .map(({ key, value }) => ({ key, value: schemaTypeToDefaultValue(schemas, value, true) }))\n .reduce((prev, curr) => ({ ...prev, [curr.key]: curr.value }), {});\n },\n array: () => {\n const { items } = prop as IDefinitionArray;\n return [schemaTypeToDefaultValue(schemas, items, true)];\n },\n default: () => prop.default || (valueTypeToDefault as any)[prop.type as string]\n };\n const mapped = !prop.type ? mappings.object : (\n prop.type as string in mappings ? mappings[prop.type as string] : mappings.default\n );\n return mapped();\n};\n\nconst typePropertiesKeys: {\n [type in SchemaType]?: string[];\n} = {\n [SchemaType.Term]: ['type', 'id', '@id', 'name']\n};\n\nexport const availableProperties = (\n schema: definition, schemaType: SchemaType, value: any, isTopLevel = true, skipExistingNode = true\n) => {\n const { properties } = 'properties' in schema ? schema : { properties: {} };\n const keys = schemaType in typePropertiesKeys ? typePropertiesKeys[schemaType] : Object.keys(properties || {});\n const internalProps = keys?.filter(prop => properties[prop].internal);\n const existing = [\n ...(isEmpty(value) ? [] : Object.keys(value).filter(v => !isEmpty(value[v]) || value[v] === '')),\n ...internalProps!,\n ...(isTopLevel ? [] : ['@id']),\n '@type'\n ];\n const available = keys?.filter(prop => !existing.includes(prop)).reduce((prev: any, prop) => {\n prev[prop] = properties[prop];\n return prev;\n }, {});\n // avoid editing an existing node\n const isExistingNode = !isUndefined(value) && !isUndefined(value['@type'] || value.type) && !isUndefined(value['@id']);\n return isExistingNode && skipExistingNode ? {} : available;\n};\n\nexport const isSchemaIri = (schema?: IDefinitionObject) =>\n isEqual(Object.keys(schema?.properties || {}), ['@id']) && isEqual((schema?.required || []), ['@id']);\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeSchemaService {\n private schemasLoading = false;\n private schemasLoaded = false;\n private _schemas = new ReplaySubject<definitions>(1);\n\n private sortConfigLoading = false;\n private sortConfigLoaded = false;\n private _sortConfig = new ReplaySubject<sortConfig>(1);\n\n constructor(\n protected http: HttpClient\n ) { }\n\n private loadSchemas() {\n this.schemasLoading = true;\n return from(Object.values(SchemaType)).pipe(\n mergeMap(type => this.http.get<IDefinition>(\n `${baseUrl()}/schema/${SCHEMA_VERSION}/json-schema/${type}.json`\n ).pipe(\n map(schema => ({ type, schema })),\n catchError(() => of({ type, schema: { properties: [] } }))\n )),\n reduce((prev, { type, schema }) => ({ ...prev, [type]: schema }), {} as definitions),\n map(data => {\n this._schemas.next(data);\n this.schemasLoading = false;\n this.schemasLoaded = true;\n return data;\n })\n );\n }\n\n public get schemas$() {\n return this.schemasLoading || this.schemasLoaded ? this._schemas.asObservable() : this.loadSchemas();\n }\n\n public schemas() {\n return this.schemas$.pipe(take(1)).toPromise();\n }\n\n private loadSortConfig() {\n this.sortConfigLoading = true;\n return this.http.get<sortConfig>(`${baseUrl()}/schema/${SCHEMA_VERSION}/sort-config/config.json`).pipe(\n catchError(() => of((undefined as any) as sortConfig)),\n map(data => {\n this._sortConfig.next(data);\n this.sortConfigLoading = false;\n this.sortConfigLoaded = true;\n return data;\n })\n );\n }\n\n public get sortConfig$() {\n return this.sortConfigLoading || this.sortConfigLoaded ? this._sortConfig.asObservable() : this.loadSortConfig();\n }\n\n public sortConfig() {\n return this.sortConfig$.pipe(take(1)).toPromise();\n }\n\n /**\n * Parse and sort (if possible) headers from CSV content according to the schema order.\n * This will load the sort configuration according to the current schema version.\n *\n * @param csvContent The content as a string\n * @returns List of strings as Observable when parsing / sorting is done.\n */\n public async parseHeaders(csvContent: string) {\n const headers = headersFromCsv(csvContent);\n try {\n const config = await this.sortConfig();\n return sortKeysByType(headers, 'asc', config);\n }\n catch (err) {\n return headers;\n }\n };\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { definitions } from '@hestia-earth/json-schema';\nimport { isDefaultCSVSelected, isCSVIncluded } from '@hestia-earth/json-schema/schema-utils';\n\nimport { HeSchemaService } from '../../schema/schema.service';\n\ninterface IHeader {\n header: string;\n selected: boolean;\n}\n\ninterface IGroupedHeaders {\n [group: string]: {\n selected: boolean;\n partialSelected: boolean;\n open: boolean;\n headers: IHeader[];\n };\n}\n\nconst headerGroup = (header: string) => {\n const parts = header.split('.');\n return parts.length === 2 ? '' : [parts[0], parts[1]].join('.');\n};\n\nconst termFields = [\n '@id', 'name', 'units', 'termType'\n];\n\nconst isTermField = (field: string) => ({ header }: IHeader) => [\n 'term', 'methodModel', 'country', 'product', 'operation', 'key'\n].some(parent => header.endsWith([parent, field].join('.')));\n\n@Component({\n selector: 'he-node-csv-select-headers',\n templateUrl: './node-csv-select-headers.component.html',\n styleUrls: ['./node-csv-select-headers.component.scss']\n})\nexport class NodeCsvSelectHeadersComponent implements OnInit {\n @Input()\n private csv = '';\n @Input()\n private keys?: string[];\n @Input()\n private includeDefaultCSV = false;\n\n @Output()\n public headersChanged = new EventEmitter<string[]>();\n\n public headers: IGroupedHeaders = {};\n public allSelected = false;\n\n public showSelectTermFields = false;\n public termFields = termFields;\n public termFieldSelected: any = {};\n\n constructor(\n private schemaService: HeSchemaService\n ) {}\n\n async ngOnInit() {\n const schemas = await this.schemaService.schemas();\n const isSelected = await this.isSelected(schemas);\n const headers = await this.schemaService.parseHeaders(this.csv);\n this.headers = headers.filter(isCSVIncluded(schemas)).reduce((prev, header) => {\n const group = headerGroup(header);\n prev[group] = prev[group] || { headers: [], selected: false, partialSelected: false, open: true };\n prev[group].headers.push({ header, selected: isSelected(header) });\n return prev;\n }, {} as IGroupedHeaders);\n Object.keys(this.headers).map(groupKey => this.updateGroupHeader(groupKey));\n this.termFieldSelected = termFields.reduce((prev, curr) => ({ ...prev, [curr]: curr === '@id' }), {});\n this.reresh();\n }\n\n private async isSelected(schemas: definitions) {\n const isSelected = this.includeDefaultCSV ? () => true : isDefaultCSVSelected(schemas);\n return (key: string) => (!this.keys?.length || this.keys.some(v => key.startsWith(v))) && isSelected(key);\n }\n\n public dropHeader(event: CdkDragDrop<IHeader[]>, groupKey: string) {\n moveItemInArray(this.headers[groupKey].headers, event.previousIndex, event.currentIndex);\n this.headersChanged.emit(this.selectedHeaders);\n }\n\n private updateAllSelected() {\n this.allSelected = Object.keys(this.headers).every(key => this.headers[key].selected);\n }\n\n public toggleAll() {\n return Object.keys(this.headers).map(key => {\n const group = this.headers[key];\n group.selected = this.allSelected;\n return this.updateGroup(key);\n });\n }\n\n public updateGroup(groupKey: string) {\n const group = this.headers[groupKey];\n group.headers.map(header => header.selected = group.selected);\n }\n\n public updateGroupHeader(groupKey: string) {\n const group = this.headers[groupKey];\n const allSelected = group.headers.every(({ selected }) => selected);\n group.selected = allSelected;\n group.partialSelected = !allSelected && group.headers.some(({ selected }) => selected);\n }\n\n public get selectedHeaders() {\n return Object.values(this.headers)\n .flatMap(({ headers }) => headers)\n .filter(({ selected }) => selected)\n .map(({ header }) => header);\n }\n\n public reresh() {\n this.updateAllSelected();\n this.headersChanged.emit(this.selectedHeaders);\n }\n\n // Term fields\n\n public toggleTermField(field: string) {\n const selected = this.termFieldSelected[field];\n return Object.keys(this.headers).map(key => {\n const group = this.headers[key];\n group.headers.filter(isTermField(field)).map(header => header.selected = selected);\n return this.updateGroupHeader(key);\n });\n }\n}\n","<p class=\"mb-2\">Please select which columns you would like to include:</p>\n\n<p class=\"my-2 is-size-7\"><i>You can drag and drop the headers to sort them as they would appear in the CSV file.</i></p>\n\n<div class=\"columns toggle-all mx-4 pb-1 mb-0\">\n <div class=\"column\">\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"allSelected\"\n (change)=\"toggleAll(); reresh()\"\n >\n <span class=\"ml-2\">Toggle All</span>\n </label>\n </div>\n\n <div class=\"column is-narrow has-text-right\">\n <div class=\"dropdown is-right has-text-left\"\n [class.is-active]=\"showSelectTermFields\"\n (clickOutside)=\"showSelectTermFields = false\"\n >\n <div class=\"dropdown-trigger\" (click)=\"showSelectTermFields = !showSelectTermFields\">\n <button class=\"button is-small\"\n aria-haspopup=\"true\" aria-controls=\"select-menu\"\n >\n <span>Toggle Term Fields</span>\n <span class=\"icon is-small\">\n <fa-icon icon=\"filter\" aria-hidden=\"true\"></fa-icon>\n </span>\n </button>\n </div>\n <div class=\"dropdown-menu\" id=\"select-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <a class=\"dropdown-item\"\n *ngFor=\"let field of termFields\"\n >\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"termFieldSelected[field]\"\n (change)=\"toggleTermField(field)\"\n >\n <span class=\"ml-2\">{{field}}</span>\n </label>\n </a>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"drag-container\">\n <div class=\"card\" *ngFor=\"let group of headers | keys\">\n <header class=\"card-header\" *ngIf=\"group.key\">\n <div class=\"card-header-title\">\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [indeterminate]=\"group.value.partialSelected\"\n [(ngModel)]=\"group.value.selected\"\n (change)=\"updateGroup(group.key); reresh()\"\n >\n <span class=\"ml-2\">{{group.key}}</span>\n </label>\n </div>\n <span class=\"card-header-icon has-text-link\" aria-label=\"open / close\"\n (click)=\"group.value.open = !group.value.open\" pointer\n >\n <span class=\"icon\">\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!group.value.open\"></fa-icon>\n <fa-icon icon=\"angle-left\" [class.is-hidden]=\"group.value.open\"></fa-icon>\n </span>\n </span>\n </header>\n\n <div class=\"card-content p-3\" [class.is-hidden]=\"!group.value.open\">\n <ul cdkDropList (cdkDropListDropped)=\"dropHeader($event, group.key)\">\n <li *ngFor=\"let header of group.value.headers\" cdkDrag>\n <label class=\"checkbox ml-2\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"header.selected\"\n (change)=\"updateGroupHeader(group.key); reresh()\"\n >\n <span class=\"ml-2\">{{header.header}}</span>\n </label>\n </li>\n </ul>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { fileToExt, SupportedExtensions } from '@hestia-earth/api';\nimport { JSON as HestiaJson } from '@hestia-earth/schema';\nimport { toCsv } from '@hestia-earth/schema-convert';\n\ninterface INodeIncluded {\n node: HestiaJson<any>;\n included: boolean;\n}\n\n@Component({\n selector: 'he-node-csv-export-confirm',\n templateUrl: './node-csv-export-confirm.component.html',\n styleUrls: ['./node-csv-export-confirm.component.scss']\n})\nexport class NodeCsvExportConfirmComponent implements OnInit {\n private headers: string[] = [];\n\n @Input()\n private nodes: HestiaJson<any>[] = [];\n @Input()\n private filename = 'download';\n @Input()\n public headerKeys?: string[];\n @Input()\n public extension = SupportedExtensions.csv;\n @Input()\n public isUpload = true;\n\n @Output()\n public closed = new EventEmitter<boolean>();\n\n public csvData?: string;\n public csvContent?: SafeResourceUrl;\n public showIncludeNodes = false;\n public includedNodes: INodeIncluded[] = [];\n\n constructor(\n private domSanitizer: DomSanitizer\n ) { }\n\n ngOnInit() {\n this.includedNodes = this.nodes.map(node => ({ node, included: true }));\n this.csvData = toCsv(this.nodes || [], !this.isUpload);\n }\n\n public get included() {\n return this.includedNodes.filter(({ included }) => included);\n }\n\n public headersUpdated(headers: string[]) {\n this.headers = headers;\n return this.updateCsvContent();\n }\n\n public updateCsvContent() {\n const nodes = this.included.map(({ node }) => node);\n const data = toCsv(nodes, !this.isUpload, false, this.headers);\n this.csvContent = this.headers.length ? this.domSanitizer.bypassSecurityTrustResourceUrl(\n `data:text/html;charset=utf-8,${encodeURIComponent(data)}`\n ) : undefined;\n }\n\n public get downloadFilename() {\n return fileToExt(this.filename, this.extension);\n }\n}\n","<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\">Export as CSV</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(true)\"></button>\n </header>\n <section class=\"modal-card-body\">\n <div class=\"notification is-info\" role=\"alert\" *ngIf=\"isUpload\">\n <span>After Download, you can edit and</span>\n <a class=\"px-1\" routerLink=\"../\">upload the CSV file</a>\n <span>to submit your content on the Hestia platform, and your draft will remain unchanged.</span>\n\n <p>\n <span>Alternatively, you can import the CSV file right back by clicking on the \"Import from CSV\" button and selecting the exported file.</span>\n </p>\n </div>\n\n <ng-container *ngIf=\"!isUpload && includedNodes.length > 1\">\n <p class=\"mb-2\">\n <b>{{includedNodes.length}}</b>\n <span class=\"px-1\">Nodes will be included in your download.</span>\n <a (click)=\"showIncludeNodes = !showIncludeNodes\">\n <ng-container *ngIf=\"!showIncludeNodes\">Show list</ng-container>\n <ng-container *ngIf=\"showIncludeNodes\">Hide list</ng-container>\n </a>\n </p>\n\n <div class=\"table-container\" *ngIf=\"showIncludeNodes\">\n <table class=\"table is-fullwidth is-hoverable mb-0\">\n <thead class=\"has-background-black\">\n <tr>\n <th>\n <span class=\"has-text-white\">@type</span>\n </th>\n <th>\n <span class=\"has-text-white\">@id</span>\n </th>\n <th>\n <span class=\"has-text-white\">Name</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of includedNodes\">\n <td>\n <span *bindOnce=\"node\">{{node.node['@type']}}</span>\n </td>\n <td>\n <span *bindOnce=\"node\">{{node.node['@id']}}</span>\n </td>\n <td>\n <span *bindOnce=\"node\">{{node.node.name}}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </ng-container>\n\n <he-node-csv-select-headers [class.is-hidden]=\"isUpload\"\n [csv]=\"csvData\" [keys]=\"headerKeys\" [includeDefaultCSV]=\"isUpload\"\n (headersChanged)=\"headersUpdated($event)\"\n ></he-node-csv-select-headers>\n </section>\n <footer class=\"modal-card-foot\">\n <a class=\"button is-success\" target=\"_blank\"\n [attr.disabled]=\"csvContent ? null : true\"\n [href]=\"csvContent\"\n [attr.download]=\"csvContent ? downloadFilename : null\"\n (click)=\"closed.next(true)\"\n >\n <fa-icon class=\"mr-2\" icon=\"download\"></fa-icon>\n <span>Download CSV</span>\n </a>\n <button class=\"button\" (click)=\"closed.next(true)\">\n <span>Cancel</span>\n </button>\n </footer>\n </div>\n</div>\n","export enum DiffsDisplayType {\n diffs = 'diffs',\n sideBySide = 'side-by-side'\n}\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { NodeType, JSONLD } from '@hestia-earth/schema';\nimport { create, formatters } from 'jsondiffpatch';\nconst omit = require('lodash.omit');\n\nimport { DiffsDisplayType } from './node-diffs.model';\nimport { HeNodeService } from '../node.service';\n\nconst ignoreProperties = [\n '@type', '@id', 'type', 'id'\n];\n\nconst excludeProperties = [\n // properties for indexed Node\n '@context', 'uploadDate', 'validationDate', 'validationBy', 'schemaVersion', 'originalId', 'dataPrivate'\n];\n\nconst customDiff = create({\n propertyFilter: name => !ignoreProperties.includes(name) && !excludeProperties.includes(name)\n});\n\n@Component({\n selector: 'he-node-diffs',\n templateUrl: './node-diffs.component.html',\n styleUrls: ['./node-diffs.component.scss']\n})\nexport class NodeDiffsComponent implements OnInit {\n @Input()\n private data: any;\n @Input()\n private id?: string;\n @Input()\n private type?: NodeType;\n @Input()\n public displayType = DiffsDisplayType.diffs;\n\n @Output()\n private diffsLoaded = new EventEmitter<string>();\n\n public DiffsDisplayType = DiffsDisplayType;\n public loading = true;\n public left?: JSONLD<NodeType>;\n public right: any;\n public diffHtml?: string;\n\n constructor(\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.right = this.data;\n const type = this.data?.type || this.type;\n this.left = await this.nodeService.get<JSONLD<NodeType>>({ '@type': type, '@id': this.id });\n this.loadDiffs();\n this.loading = false;\n }\n\n private loadDiffs() {\n this.left = omit(this.left, excludeProperties);\n this.right = omit(this.right, excludeProperties);\n const delta = customDiff.diff(this.left, this.right);\n const diffs = formatters.html.format(delta!, this.left);\n this.diffsLoaded.emit(diffs);\n this.diffHtml = diffs || '<p>No difference.</p>';\n }\n}\n","<div *ngIf=\"loading\" class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n</div>\n\n<ng-container *ngIf=\"left && right\">\n <ng-container [ngSwitch]=\"displayType\">\n <div *ngSwitchCase=\"DiffsDisplayType.diffs\" [innerHTML]=\"diffHtml\"></div>\n\n <div *ngSwitchCase=\"DiffsDisplayType.sideBySide\" class=\"columns\">\n <div class=\"column is-6\">\n <pre class=\"has-background-black has-text-white\"><code>{{left | json}}</code></pre>\n </div>\n <div class=\"column is-6\">\n <pre class=\"has-background-black has-text-white\"><code>{{right | json}}</code></pre>\n </div>\n </div>\n </ng-container>\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { NodeType } from '@hestia-earth/schema';\n\nconst nodeTypeToIcon: {\n [type in NodeType]: string;\n} = {\n [NodeType.Actor]: 'user',\n [NodeType.Cycle]: 'seedling',\n [NodeType.ImpactAssessment]: 'clipboard-list',\n [NodeType.Organisation]: 'building',\n [NodeType.Site]: 'map-marked',\n [NodeType.Source]: 'book-open',\n [NodeType.Term]: 'spell-check'\n};\n\n@Component({\n selector: 'he-node-icon',\n templateUrl: './node-icon.component.html',\n styleUrls: ['./node-icon.component.scss']\n})\nexport class NodeIconComponent {\n @Input()\n private type?: NodeType;\n @Input()\n public size = 'lg';\n\n public get icon() {\n return this.type ? nodeTypeToIcon[this.type] : null;\n }\n}\n","<ng-container *ngIf=\"icon\">\n <fa-icon [icon]=\"icon\" [size]=\"size\"></fa-icon>\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { JSONLD, NodeType } from '@hestia-earth/schema';\n\nimport { linkTypeEnabled } from '../../schema/schema.service';\nimport { baseUrl, isExternal } from '../../common/utils';\n\n@Component({\n selector: 'he-node-link',\n templateUrl: './node-link.component.html',\n styleUrls: ['./node-link.component.scss']\n})\nexport class NodeLinkComponent {\n @Input()\n public node?: JSONLD<NodeType>;\n @Input()\n public showExternalLink = false;\n\n public baseUrl = baseUrl();\n\n public get showLink() {\n return this.node && linkTypeEnabled(this.node['@type']);\n }\n\n public get target() {\n return this.showExternalLink || isExternal() ? '_blank' : '_self';\n }\n}\n","<a *ngIf=\"showLink; else content\"\n [href]=\"baseUrl + '/' + node!['@type'].toLowerCase() + '/' + node!['@id']\"\n [target]=\"target\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <fa-icon class=\"no-print ml-2 is-align-middle\" icon=\"external-link-alt\" size=\"sm\" *ngIf=\"showExternalLink\"></fa-icon>\n</a>\n\n<ng-template #content>\n <span class=\"is-align-middle\" #placeholder><ng-content></ng-content></span>\n <span class=\"is-align-middle\" *ngIf=\"placeholder.children.length === 0\">{{node!['@id']}}</span>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable, of } from 'rxjs';\nimport { map, mergeMap, tap } from 'rxjs/operators';\nimport { DataState, fileToExt } from '@hestia-earth/api';\nimport { JSONLD, NodeType } from '@hestia-earth/schema';\n\nimport { HeNodeService } from '../node.service';\nimport { ILine, Level, levels, parseLines, toCsv } from '../../common/logs-utils';\n\n@Component({\n selector: 'he-node-logs-file',\n templateUrl: './node-logs-file.component.html',\n styleUrls: ['./node-logs-file.component.scss']\n})\nexport class NodeLogsFileComponent implements OnInit {\n private allLogs: ILine[] = [];\n\n @Input()\n public node?: JSONLD<NodeType>;\n @Input()\n public dataState?: DataState;\n\n public showFilters = false;\n public Level = Level;\n public modelFilter = '';\n public termFilter = '';\n public selectedLevel = Level.info;\n public loading = false;\n public nodeLog?: Observable<string>;\n public nodeLogLines: ILine[] = [];\n public csvContent?: SafeResourceUrl;\n public fileToExt = fileToExt;\n\n constructor(\n private domSanitizer: DomSanitizer,\n private nodeService: HeNodeService\n ) { }\n\n ngOnInit() {\n this.nodeLog = of({\n ...this.node,\n dataState: this.dataState\n }).pipe(\n tap(() => this.loading = true),\n mergeMap(node => this.nodeService.getLog(node)),\n map(value => value || 'No logs.'),\n tap(value => {\n this.allLogs = parseLines(value).filter(({ data }) => data.logger === 'hestia_earth.models');\n this.updateCsvContent();\n this.applyFilters();\n }),\n tap(() => this.loading = false)\n );\n }\n\n private async updateCsvContent() {\n this.csvContent = this.domSanitizer.bypassSecurityTrustResourceUrl(\n `data:text/html;charset=utf-8,${encodeURIComponent(await toCsv(this.allLogs))}`\n );\n }\n\n public applyFilters() {\n this.nodeLogLines = this.allLogs\n .filter(({ level }) => levels.indexOf(level) >= levels.indexOf(this.selectedLevel))\n .filter(({ code }) =>\n (!this.modelFilter || code.toLocaleLowerCase().includes(`model=${this.modelFilter.toLowerCase()}`)) &&\n (!this.termFilter || code.toLocaleLowerCase().includes(`term=${this.termFilter.toLowerCase()}`))\n );\n }\n}\n","<div class=\"is-relative\">\n <div class=\"copy-clipboard\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <he-clipboard clipboardClass=\"button is-link is-small\"\n [value]=\"nodeLog | async\" [hideText]=\"true\" [icon]=\"['far', 'clone']\" size=\"lg\" rotate=\"180\"\n ></he-clipboard>\n </div>\n <ng-container *ngIf=\"showFilters\">\n <div class=\"control\">\n <input class=\"input is-link is-small\"\n [(ngModel)]=\"modelFilter\" id=\"modelFilter\"\n (input)=\"applyFilters()\"\n placeholder=\"Filter by Method / Model\"\n >\n </div>\n <div class=\"control\">\n <input class=\"input is-link is-small\"\n [(ngModel)]=\"termFilter\" id=\"termFilter\"\n (input)=\"applyFilters()\"\n placeholder=\"Filter by Term\"\n >\n </div>\n <div class=\"control\">\n <div class=\"select is-link is-small\">\n <select (change)=\"applyFilters()\"\n [(ngModel)]=\"selectedLevel\" id=\"selectedLevel\"\n >\n <option *ngFor=\"let level of Level | keys\" [value]=\"level.value\">{{level.value}}</option>\n </select>\n </div>\n </div>\n </ng-container>\n <div class=\"control\">\n <button class=\"button is-small\" (click)=\"showFilters = !showFilters\"\n [ngbTooltip]=\"showFilters ? 'Hide filters' : 'Show filters'\" placement=\"bottom\" container=\"body\"\n >\n <fa-icon icon=\"filter\"></fa-icon>\n </button>\n </div>\n <div class=\"control pl-3\">\n <a class=\"button is-dark is-outlined is-small\" target=\"_blank\"\n [href]=\"csvContent\"\n [download]=\"fileToExt(node!['@id'], 'csv')\"\n >\n <fa-icon class=\"mr-2\" icon=\"download\"></fa-icon>\n <span>Download (CSV)</span>\n </a>\n </div>\n </div>\n </div>\n\n <pre class=\"pl-3 pt-3 ml-3\"><code class=\"is-block {{line.class}}\" *ngFor=\"let line of nodeLogLines\">{{line.data.timestamp}} {{('[' + line.data.level + ']:').padEnd(9, ' ')}} {{line.data.message}}</code></pre>\n</div>\n","/* eslint-disable complexity */\nimport { Component, Input, OnInit } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { distinct, filter, reduce, toArray, map, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport { Emission, ITermJSONLD, Product, Input as HestiaInput, NodeType, TermTermType } from '@hestia-earth/schema';\nimport { unique } from '@hestia-earth/utils';\nconst get = require('lodash.get');\nconst orderBy = require('lodash.orderby');\n\nimport { INodeLogs, INodeTermLogs } from '../node.service';\nimport { HeEngineService, IOrchestratorConfig, findConfigModels } from '../../engine/engine.service';\nimport { matchTermType, matchType } from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { isExternal, keyToLabel, propertyValue } from '../../common/utils';\n\ntype subValueKeys = 'input' | 'property';\n\ninterface IBlankNodeLogSubValue {\n key: subValueKeys;\n value: any;\n configModels: string[];\n}\n\ninterface IBlankNodeLog {\n isOpen: boolean;\n canOpen: boolean;\n term: ITermJSONLD;\n configModels: string[];\n original: number;\n recalculated: number;\n isRecalculated: boolean;\n hasData: boolean;\n logs?: INodeTermLogs;\n keys: string[];\n subValues: IBlankNodeLogSubValue[];\n}\n\nconst reduceValues = (values: any[]) =>\n values.length ? values.reduce((p, v) => p + propertyValue(v.value), 0) : null;\n\nconst logSubValue = (logs: INodeTermLogs, key: string, prop: subValueKeys) => logs[key][prop] ? {\n key: prop, value: logs[key][prop], configModels: [key]\n} as IBlankNodeLogSubValue : undefined;\n\nconst logSubValues = (logs: INodeTermLogs): IBlankNodeLogSubValue[] =>\n Object.keys(logs)\n .flatMap(key => [\n logSubValue(logs, key, 'input'),\n logSubValue(logs, key, 'property')\n ])\n .filter(Boolean) as any;\n\nconst logKeys = (logs: INodeTermLogs) => Object.keys(logs).filter(key => logs[key].isKey);\n\n@Component({\n selector: 'he-node-logs-models',\n templateUrl: './node-logs-models.component.html',\n styleUrls: ['./node-logs-models.component.scss']\n})\nexport class NodeLogsModelsComponent implements OnInit {\n private config?: IOrchestratorConfig;\n private models: ITermJSONLD[] = [];\n private allTerms: ITermJSONLD[] = [];\n private allBlankNodes: IBlankNodeLog[] = [];\n\n @Input()\n private nodeType?: NodeType;\n /**\n * Restrict models by key.\n */\n @Input()\n private nodeKey?: string;\n @Input()\n public logsUrl?: string;\n @Input()\n public originalValues: (Emission | Product | HestiaInput)[] = [];\n @Input()\n private recalculatedValues: (Emission | Product | HestiaInput)[] = [];\n @Input()\n private terms: ITermJSONLD[] = [];\n @Input()\n private logs?: INodeLogs;\n @Input()\n public filteredType?: string;\n\n public isExternal = isExternal();\n public loading = true;\n public blankNodes: IBlankNodeLog[] = [];\n public methodModelsCount = 0;\n public methodsById?: any;\n public onlyWithData = true;\n\n public term?: string;\n public suggestTerm = (text$: Observable<string>) =>\n text$.pipe(\n distinctUntilChanged(),\n switchMap(v => this.suggestByTerm(v)),\n );\n\n constructor(\n private searchService: HeSearchService,\n private hestiaEngineService: HeEngineService\n ) { }\n\n async ngOnInit() {\n this.config = await this.hestiaEngineService.ochestratorConfig(this.nodeType!);\n\n const { results: models } = await this.searchService.search<ITermJSONLD, NodeType.Term>({\n fields: ['@type', '@id', 'name'],\n limit: 1000,\n query: {\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.model)\n ]\n }\n }\n });\n this.models = models;\n\n this.methodsById = await from(this.models).pipe(\n filter(v => !!v),\n distinct(v => v['@id']),\n reduce((prev, curr) => ({ ...prev, [curr['@id']]: curr }), {})\n ).toPromise();\n\n const originalValues = (this.originalValues || []).filter(value => !(value as any).deleted);\n const recalculatedValues = (this.recalculatedValues || []).filter(value => !(value as any).deleted);\n this.allTerms = await this.fetchAllTerms();\n this.allBlankNodes = this.allTerms.flatMap(term => {\n const emissionLogs = get(this.logs, term['@id'], {}) as INodeTermLogs;\n const original = originalValues.filter(v => term['@id'] === v.term!['@id']);\n const recalculated = recalculatedValues.filter(v => term['@id'] === v.term!['@id']);\n const hasData = !!original.length || !!recalculated.length || Object.keys(emissionLogs).length > 0;\n const configModels = unique([\n ...findConfigModels(this.config!, term['@id'], this.nodeKey!).map(({ model }) => model),\n ...Object.keys(emissionLogs)\n ]).filter(key => !(\n key in emissionLogs\n ) || (\n !emissionLogs[key].isKey && !emissionLogs[key].input && !emissionLogs[key].property\n ));\n const keys = logKeys(emissionLogs);\n const subValues = logSubValues(emissionLogs);\n return {\n isOpen: true,\n canOpen: keys.length > 0 || subValues.length > 0,\n term,\n configModels,\n original: reduceValues(original),\n recalculated: reduceValues(recalculated),\n isRecalculated: !recalculated.length || recalculated.some(v => (v.added || []).includes('value')),\n hasData,\n logs: emissionLogs,\n keys,\n subValues\n };\n });\n this.methodModelsCount = Math.max.apply(Math.max, this.allBlankNodes.flatMap(v => [\n v.configModels.length,\n v.keys.length,\n ...v.subValues.map(s => s.configModels.length)\n ]));\n\n this.filterResults();\n\n this.loading = false;\n }\n\n private async fetchAllTerms() {\n return from(\n this.terms.length ?\n this.terms :\n [\n ...(this.originalValues || []).map(({ term }) => term),\n ...(this.recalculatedValues || []).map(({ term }) => term)\n ]\n ).pipe(\n distinct(v => v!['@id']),\n toArray(),\n map(v => orderBy(v, ['name'], ['asc']))\n ).toPromise();\n }\n\n private suggestByTerm(term: string) {\n return from(this.allTerms).pipe(\n map(v => v.name),\n filter(v => v.toLowerCase().includes(term.toLowerCase())),\n toArray()\n );\n }\n\n public trackByBlankNode(_index: number, node: IBlankNodeLog) {\n return node.term['@id'];\n }\n\n public togglePopover(popover, context) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n public validSubValue(node: IBlankNodeLog, index: number, subValue?: IBlankNodeLogSubValue) {\n const methodId = this.getMethodIdAt(node, index, subValue);\n return !subValue?.value || get(node.logs![methodId], subValue?.key, null) === subValue?.value;\n }\n\n public getMethodIdAt(node: IBlankNodeLog, index: number, subValue?: IBlankNodeLogSubValue) {\n const { configModels } = subValue || node;\n return configModels[index];\n }\n\n public methodName({ logs }: IBlankNodeLog, methodId: string) {\n return this.methodsById[methodId]?.name || logs![methodId]?.key || keyToLabel(methodId);\n }\n\n public hasLog({ logs }: IBlankNodeLog, methodId: string) {\n return methodId in logs! && 'shouldRun' in logs![methodId];\n }\n\n public hasLogDetails({ logs }: IBlankNodeLog, methodId: string) {\n const log = logs![methodId];\n return log?.requirements || log?.logs || log?.missingLookups?.length;\n }\n\n public logColor(node: IBlankNodeLog, methodId: string) {\n return this.hasLog(node, methodId) ? (\n node.logs![methodId].shouldRun ? 'success' : 'danger'\n ) : 'dark';\n }\n\n public requirementColor(value: any) {\n return !value || ['None', 'False', '0', '0.0'].includes(value) ? 'danger' : 'white';\n }\n\n public filterResults() {\n setTimeout(() => {\n this.blankNodes = this.allBlankNodes.filter(({ hasData, term: { name } }) =>\n (!this.onlyWithData || hasData) &&\n (!this.term || name === this.term)\n );\n });\n }\n}\n","<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 <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table\">\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 *ngIf=\"originalValues?.length\">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 <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.original | precision:3 | default:'-'}}</span>\n </td>\n <td>\n <span *ngIf=\"blankNode.isRecalculated; else notUpdated\">\n {{blankNode.recalculated | precision:3 | default:'-'}}\n </span>\n </td>\n <td *ngIf=\"originalValues?.length\" class=\"is-nowrap\">\n <he-blank-node-value-delta *ngIf=\"blankNode.isRecalculated\"\n [value]=\"blankNode.recalculated\"\n [originalValue]=\"blankNode.original\"\n ></he-blank-node-value-delta>\n </td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {blankNode: blankNode}\"></ng-container>\n </tr>\n\n <tr\n *ngIf=\"blankNode.keys?.length\"\n [class.is-hidden]=\"!blankNode.isOpen\"\n [class.has-sub-rows]=\"blankNode.subValues?.length\"\n >\n <td class=\"width-auto\">\n <div class=\"pl-3 has-text-left\">\n <span>Fields</span>\n </div>\n </td>\n <td [attr.colspan]=\"originalValues?.length ? 3 : 2\"></td>\n <td *ngFor=\"let key of blankNode.keys\">\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {blankNode: blankNode, methodId: key}\"></ng-container>\n </td>\n <td *ngIf=\"methodModelsCount > blankNode.keys.length\" [attr.colspan]=\"methodModelsCount - blankNode.keys.length\"></td>\n </tr>\n\n <tr\n *ngFor=\"let subValue of blankNode.subValues\"\n [class.is-hidden]=\"!blankNode.isOpen\"\n >\n <td>\n <div class=\"pl-3 has-text-left\">\n <span class=\"is-inline-block is-nowrap has-text-ellipsis\">{{subValue.key | keyToLabel}}: {{subValue.value | keyToLabel}}</span>\n </div>\n </td>\n <td [attr.colspan]=\"originalValues?.length ? 3 : 2\"></td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {blankNode: blankNode, subValue: subValue}\"></ng-container>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\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 <span>Models:</span>\n </div>\n <div class=\"column is-narrow has-text-success\">\n <fa-icon icon=\"check\"></fa-icon>\n <span class=\"pl-1\">successful</span>\n </div>\n <div class=\"column is-narrow has-text-danger\">\n <fa-icon icon=\"times\"></fa-icon>\n <span class=\"pl-1\">failed</span>\n </div>\n <div class=\"column is-narrow has-text-dark\">\n <fa-icon [icon]=\"['far', 'circle']\"></fa-icon>\n <span class=\"pl-1\">not run (model higher up hierarchy run instead)</span>\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 recalculated {{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 *ngFor=\"let c of methodModelsCount | times; let i = index\">\n <ng-container *ngIf=\"validSubValue(blankNode, i, subValue)\">\n <ng-container *ngIf=\"getMethodIdAt(blankNode, i, subValue); let methodId\">\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {blankNode: blankNode, methodId: methodId}\"></ng-container>\n </ng-container>\n </ng-container>\n </td>\n</ng-template>\n\n<ng-template #blankNodeModel let-blankNode=\"blankNode\" let-methodId=\"methodId\">\n <span\n [class.trigger-popover]=\"hasLogDetails(blankNode, methodId)\"\n [ngbPopover]=\"logDetails\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"hasLogDetails(blankNode, methodId) ? togglePopover(p, { log: blankNode.logs[methodId] }) : null\"\n >\n <span class=\"is-capitalized\">{{methodName(blankNode, methodId)}}</span>\n <span class=\"pl-1\" *ngIf=\"hasLog(blankNode, methodId) && blankNode.logs[methodId].methodTier\">[{{blankNode.logs[methodId].methodTier}}]</span>\n <span class=\"pl-1 has-text-{{logColor(blankNode, methodId)}}\">\n <fa-icon *ngIf=\"!hasLog(blankNode, methodId)\" [icon]=\"['far', 'circle']\"></fa-icon>\n <fa-icon *ngIf=\"hasLog(blankNode, methodId)\" [icon]=\"blankNode.logs[methodId].shouldRun ? 'check' : 'times'\"></fa-icon>\n </span>\n </span>\n</ng-template>\n\n<ng-template #notUpdated>\n <span>not updated</span>\n</ng-template>\n\n<ng-template #logDetails let-log=\"log\">\n <ng-container *ngIf=\"log.requirements\">\n <p *ngFor=\"let key of log.requirements | keys\" class=\"has-text-{{requirementColor(key.value)}}\">\n {{key.key}}: {{key.value}}\n </p>\n </ng-container>\n <ng-container *ngIf=\"log.logs\">\n <p *ngFor=\"let key of log.logs | keys\">\n {{key.key}}: {{key.value}}\n </p>\n </ng-container>\n <ng-container *ngIf=\"log.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 log.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","import { Component, Input, OnInit } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { JSONLD, NodeType } from '@hestia-earth/schema';\n\nimport { INodeMissingLookupLog, HeNodeService } from '../node.service';\n\n@Component({\n selector: 'he-node-missing-lookup-factors',\n templateUrl: './node-missing-lookup-factors.component.html',\n styleUrls: ['./node-missing-lookup-factors.component.scss']\n})\nexport class NodeMissingLookupFactorsComponent implements OnInit {\n @Input()\n public node?: JSONLD<NodeType>;\n\n public loading = true;\n public logs: INodeMissingLookupLog[] = [];\n\n constructor(\n public nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.loading = true;\n this.logs = await this.nodeService.getMissingLookupsLog({\n ...this.node,\n dataState: DataState.recalculated\n });\n this.loading = false;\n }\n}\n","<div *ngIf=\"!loading; else loader\" class=\"table-container data-table-container\">\n <table class=\"table is-fullwidth is-hoverable 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 <th>\n <span class=\"has-text-white\">Model</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngIf=\"!logs.length\">\n <td colspan=\"3\">\n <span>No missing lookup factors.</span>\n </td>\n </tr>\n <tr *ngFor=\"let log of logs\">\n <td>{{log.filename}}</td>\n <td>\n <span *ngIf=\"log.column; else na\">{{log.column}}</span>\n </td>\n <td>\n <span *ngIf=\"log.termId; else na\">{{log.termId}}</span>\n </td>\n <td>\n <ng-container *ngIf=\"log.model; else na\">\n <span>{{log.model}}</span>\n <span class=\"pl-1\" *ngIf=\"log.key\">/ {{log.key}}</span>\n <span class=\"pl-1\" *ngIf=\"log.term && log.term !== log.termId\">/ {{log.term}}</span>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n\n<ng-template #na>\n <span>-</span>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NodeType } from '@hestia-earth/schema';\n\nimport { grouppedValueKeys, IGroupedNode } from '../../common/utils';\nimport { baseUrl } from '../../common/utils';\n\nconst additionalKeys = [\n 'methodModelDescription', 'description',\n 'primary', 'emissionDuration', 'observations', 'statsDefinition',\n 'term', 'source', 'variety', 'reliability', 'price', 'currency', 'cost', 'revenue', 'economicValueShare',\n 'impactAssessment'\n];\nconst tableKeys = ['inputs', 'value', 'methodModel', 'methodTier', 'statsDefinition'];\n\n@Component({\n selector: 'he-node-value-details',\n templateUrl: './node-value-details.component.html',\n styleUrls: ['./node-value-details.component.scss']\n})\nexport class NodeValueDetailsComponent<T> implements OnInit {\n @Input()\n public data?: IGroupedNode<T>;\n @Input()\n public nodeType?: NodeType;\n @Input()\n public dataKey?: string;\n\n public baseUrl = baseUrl();\n public keys = ['value', ...grouppedValueKeys];\n public additionalKeys = additionalKeys;\n public tableKeys = tableKeys;\n\n public get type() {\n return this.data?.nodes[0]['@type'];\n }\n\n ngOnInit() {\n this.tableKeys = tableKeys.filter(key => (this.data?.nodes || []).some(node => key in node));\n }\n}\n","<ng-container *bindOnce=\"data\">\n <ng-container *ngIf=\"data?.nodes?.length === 1; else showTable\">\n <ng-container *ngFor=\"let key of keys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n <ng-container *ngFor=\"let key of additionalKeys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #showTable>\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" key=\"term\"></he-link-key-value>\n\n <div class=\"table-container mt-2\">\n <table class=\"table is-narrow\">\n <thead>\n <th *ngFor=\"let key of tableKeys\">\n <a [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n </th>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of data!.nodes\">\n <td *ngFor=\"let key of tableKeys\">\n <he-link-key-value [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { HeCommonModule } from '../common/common.module';\n\nimport { NodeCsvExportConfirmComponent } from './node-csv-export-confirm/node-csv-export-confirm.component';\nimport { NodeCsvSelectHeadersComponent } from './node-csv-select-headers/node-csv-select-headers.component';\nimport { NodeDiffsComponent } from './node-diffs/node-diffs.component';\nimport { NodeIconComponent } from './node-icon/node-icon.component';\nimport { NodeLinkComponent } from './node-link/node-link.component';\nimport { NodeLogsFileComponent } from './node-logs-file/node-logs-file.component';\nimport { NodeLogsModelsComponent } from './node-logs-models/node-logs-models.component';\nimport { NodeMissingLookupFactorsComponent } from './node-missing-lookup-factors/node-missing-lookup-factors.component';\nimport { NodeValueDetailsComponent } from './node-value-details/node-value-details.component';\n\nconst components = [\n NodeIconComponent,\n NodeLinkComponent,\n NodeCsvExportConfirmComponent,\n NodeCsvSelectHeadersComponent,\n NodeDiffsComponent,\n NodeLogsFileComponent,\n NodeLogsModelsComponent,\n NodeMissingLookupFactorsComponent,\n NodeValueDetailsComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, RouterModule, FormsModule,\n DragDropModule,\n HeCommonModule\n ]\n})\nexport class HeNodeModule { }\n","import { Component, Input } from '@angular/core';\nimport { ICycleJSONLD, CycleFunctionalUnit } from '@hestia-earth/schema';\n\n@Component({\n selector: 'he-cycles-functional-unit-measure',\n templateUrl: './cycles-functional-unit-measure.component.html',\n styleUrls: ['./cycles-functional-unit-measure.component.scss']\n})\nexport class CyclesFunctionalUnitMeasureComponent {\n @Input()\n public cycle?: ICycleJSONLD;\n\n public CycleFunctionalUnit = CycleFunctionalUnit;\n}\n","<span class=\"pl-1\" [ngSwitch]=\"cycle?.functionalUnit\">\n <ng-container *ngSwitchCase=\"CycleFunctionalUnit['1 ha']\">1 hectare</ng-container>\n <ng-container *ngSwitchDefault>relative</ng-container>\n</span>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { ICycleJSONLD, NodeType } from '@hestia-earth/schema';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';\n\nimport { HeNodeService } from '../../node/node.service';\nimport { HeSearchService } from '../../search/search.service';\nimport {\n matchType, matchExactQuery, matchPhraseQuery, matchPhrasePrefixQuery, matchBoolPrefixQuery, matchAggregatedQuery\n} from '../../search/search.model';\n\nconst MIN_TYPEAHEAD_LENGTH = 1;\n\n@Component({\n selector: 'he-cycles-suggest-form',\n templateUrl: './cycles-suggest-form.component.html',\n styleUrls: ['./cycles-suggest-form.component.scss']\n})\nexport class CyclesSuggestFormComponent {\n @Input()\n private cycles: ICycleJSONLD[] = [];\n @Output()\n private cycleAdded = new EventEmitter<ICycleJSONLD>();\n\n public form = this.formBuilder.group({\n search: ['', Validators.required]\n });\n public loading = false;\n public suggesting = false;\n public formatter = ({ '@id': id }: any) => id;\n public suggestCycle = (text$: Observable<string>) =>\n text$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n tap(() => this.suggesting = true),\n switchMap(term => this.suggest(term)),\n tap(() => this.suggesting = false)\n );\n\n constructor(\n private formBuilder: FormBuilder,\n private nodeService: HeNodeService,\n private searchService: HeSearchService\n ) { }\n\n private suggest(term: string) {\n return term.length < MIN_TYPEAHEAD_LENGTH ?\n of([]) :\n this.searchService.suggest(term, NodeType.Cycle, [], {\n bool: {\n must: [\n matchType(NodeType.Cycle),\n matchAggregatedQuery\n ],\n must_not: this.cycles.map(({ '@id': id }) => matchExactQuery('@id', id)),\n should: [\n matchPhraseQuery(term, 100, '@id', 'name'),\n matchPhrasePrefixQuery(term, 20, '@id', 'name'),\n matchBoolPrefixQuery(term, 10, '@id', 'name')\n ],\n minimum_should_match: 1\n }\n }, 10, ['name', 'site.country.name', 'products.name', 'endDate']);\n }\n\n private loadCycle(id: string) {\n return this.nodeService.get<ICycleJSONLD>({\n '@type': NodeType.Cycle,\n '@id': id\n }, false);\n }\n\n public async submit() {\n this.loading = true;\n const { search: { '@id': id } } = this.form.value;\n const cycle = await this.loadCycle(id);\n this.cycleAdded.emit(cycle);\n this.form.get('search')?.setValue('');\n this.form.updateValueAndValidity();\n this.loading = false;\n }\n}\n","<form class=\"mt-2\" [formGroup]=\"form\" (submit)=\"form.valid && submit()\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Compare with Aggregated Cycle</span>\n </div>\n <div class=\"control is-expanded\" [class.has-icons-right]=\"suggesting || loading\">\n <input class=\"input is-small\"\n placeholder=\"Search by name or id\"\n formControlName=\"search\" name=\"search\"\n\n [ngbTypeahead]=\"suggestCycle\"\n [inputFormatter]=\"formatter\"\n [resultTemplate]=\"suggestion\"\n [focusFirst]=\"true\"\n >\n <span class=\"icon is-small is-right has-text-grey-dark\" [class.is-hidden]=\"!(suggesting || loading)\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"sm\"></fa-icon>\n </span>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" type=\"submit\" [disabled]=\"suggesting || loading\">\n <fa-icon icon=\"plus\"></fa-icon>\n </button>\n </div>\n </div>\n</form>\n\n<ng-template #suggestion let-cycle=\"result\" let-t=\"term\">\n <div class=\"is-block\">\n <ngb-highlight [result]=\"cycle.name\" [term]=\"t\"></ngb-highlight>\n </div>\n <div class=\"columns is-flex\">\n <div class=\"column\" *ngIf=\"cycle.site?.country?.name\">\n <span class=\"pr-1 has-text-underline\">Country:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"cycle.site.country.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <!-- <div class=\"column\" *ngIf=\"impact.product\">\n <span class=\"pr-1 has-text-underline\">Product:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.product.name\" [term]=\"t\"></ngb-highlight></span>\n </div> -->\n <div class=\"column\" *ngIf=\"cycle.endDate\">\n <span class=\"pr-1 has-text-underline\">Date:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"cycle.endDate\" [term]=\"t\"></ngb-highlight></span>\n </div>\n </div>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ICycleJSONLD, NodeType } from '@hestia-earth/schema';\nimport { DataState } from '@hestia-earth/api';\n\nimport { HeNodeService } from '../../node/node.service';\n\nenum Tab {\n inputs = 'Inputs',\n products = 'Products'\n}\n\n@Component({\n selector: 'he-cycles-activity-logs',\n templateUrl: './cycles-activity-logs.component.html',\n styleUrls: ['./cycles-activity-logs.component.scss']\n})\nexport class CyclesActivityLogsComponent implements OnInit {\n @Input()\n public original?: ICycleJSONLD;\n @Input()\n public recalculated?: ICycleJSONLD;\n\n public loading = true;\n public NodeType = NodeType;\n public logsUrl?: string;\n public logs: any;\n public Tab = Tab;\n public selectedTab = Tab.inputs;\n\n constructor(\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.logsUrl = this.nodeService.nodeLogsUrl(this.node);\n this.logs = await this.nodeService.getModelsLog(this.node);\n this.loading = false;\n }\n\n private get node() {\n return {\n ...this.original,\n dataState: DataState.recalculated\n };\n }\n}\n","<ng-container *ngIf=\"!loading; else loader\">\n <div class=\"tabs mb-1\">\n <ul>\n <li [class.is-active]=\"selectedTab === Tab.inputs\">\n <a (click)=\"selectedTab = Tab.inputs\">Inputs</a>\n </li>\n <li [class.is-active]=\"selectedTab === Tab.products\">\n <a (click)=\"selectedTab = Tab.products\">Products</a>\n </li>\n </ul>\n </div>\n\n <he-node-logs-models [class.is-hidden]=\"selectedTab !== Tab.inputs\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.Cycle\"\n [originalValues]=\"original?.inputs\"\n [recalculatedValues]=\"recalculated?.inputs\"\n [logs]=\"logs\"\n ></he-node-logs-models>\n\n <he-node-logs-models [class.is-hidden]=\"selectedTab !== Tab.products\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.Cycle\"\n [originalValues]=\"original?.products\"\n [recalculatedValues]=\"recalculated?.products\"\n [logs]=\"logs\"\n ></he-node-logs-models>\n</ng-container>\n\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { ICycleJSONLD, Input as HestiaInput, Product } from '@hestia-earth/schema';\nconst orderBy = require('lodash.orderby');\n\nimport { propertyValue, groupNodesByTerm, IGroupedKeys, grouppedKeys } from '../../common/utils';\nimport { baseUrl } from '../../common/utils';\n\nenum View {\n table = 'table',\n logs = 'logs'\n}\n\n@Component({\n selector: 'he-cycles-activity',\n templateUrl: './cycles-activity.component.html',\n styleUrls: ['./cycles-activity.component.scss']\n})\nexport class CyclesActivityComponent implements OnChanges {\n @Input()\n public originalValues: ICycleJSONLD[] = [];\n @Input()\n public cycles: ICycleJSONLD[] = [];\n @Input()\n public dataState?: DataState;\n @Input()\n public enableCompare = true;\n\n public baseUrl = baseUrl();\n public propertyValue = propertyValue;\n public showDownload = false;\n public View = View;\n public selectedView = View.table;\n\n public inputs: IGroupedKeys<HestiaInput>[] = [];\n public products: IGroupedKeys<Product>[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if ('cycles' in changes) {\n return this.update();\n }\n if ('dataState' in changes) {\n this.selectedView = View.table;\n }\n }\n\n public trackById(_index: number, item: ICycleJSONLD) {\n return item['@id'];\n }\n\n public get isOriginal() {\n return this.dataState === DataState.original;\n }\n\n private update() {\n const inputsPerCycle = groupNodesByTerm<ICycleJSONLD, HestiaInput>(this.cycles, 'inputs', this.originalValues);\n this.inputs = orderBy(grouppedKeys(inputsPerCycle), ['key'], ['asc']);\n const productsPerCycle = groupNodesByTerm<ICycleJSONLD, Product>(this.cycles, 'products', this.originalValues);\n this.products = orderBy(grouppedKeys(productsPerCycle), ['key'], ['asc']);\n }\n\n public togglePopover(popover: any, context: any) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n // Add from suggestion\n\n public async addCycle(cycle: ICycleJSONLD) {\n this.cycles = [\n ...this.cycles,\n cycle\n ];\n return this.update();\n }\n}\n","<ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-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\" *ngIf=\"!isOriginal && cycles.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{inputs.length + products.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngFor=\"let product of products\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span>{{product.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n <th *ngFor=\"let input of inputs\"\n [attr.title]=\"input.value.term.name\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span>{{input.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th>\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let product of products\"\n [attr.title]=\"product.value.term.units\"\n >{{product.value.term.units}}</th>\n <th *ngFor=\"let input of inputs\"\n [attr.title]=\"input.value.term.units\"\n >{{input.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"cycle.name\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{cycle.name || cycle.id}}</span>\n </he-node-link>\n </td>\n <td>\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let product of products\">\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"product.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let input of inputs\">\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"input.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n\n <he-cycles-suggest-form *ngIf=\"enableCompare\" [cycles]=\"cycles\" (cycleAdded)=\"addCycle($event)\"></he-cycles-suggest-form>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [original]=\"originalValues[0]\"\n [recalculated]=\"cycles[0]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.inputs.', 'cycle.products.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { ICycleJSONLD } from '@hestia-earth/schema';\n\nimport { defaultLabel, keyToLabel } from '../../common/utils';\nimport { baseUrl } from '../../common/utils';\n\nconst ignoreKeys = [\n '@type', 'added', 'updated', 'addedVersion', 'updatedVersion'\n];\n\n@Component({\n selector: 'he-cycles-completeness',\n templateUrl: './cycles-completeness.component.html',\n styleUrls: ['./cycles-completeness.component.scss']\n})\nexport class CyclesCompletenessComponent {\n @Input()\n public cycles: ICycleJSONLD[] = [];\n @Input()\n public dataState?: DataState;\n\n public baseUrl = baseUrl();\n public defaultLabel = defaultLabel;\n public keyToLabel = keyToLabel;\n\n public trackById(_index: number, item: ICycleJSONLD) {\n return item['@id'];\n }\n\n public get completenessKeys() {\n const [cycle] = this.cycles;\n return Object.keys(cycle?.dataCompleteness || {}).filter(key => !ignoreKeys.includes(key)).sort();\n }\n}\n","<div class=\"p-3\" *ngIf=\"cycles.length; else emptyTable\">\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{cycles.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let completeness of completenessKeys\"\n [attr.title]=\"completeness\"\n ><a [href]=\"baseUrl + '/schema/Completeness#' + completeness\" target=\"_blank\">{{keyToLabel(completeness)}}</a></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let completeness of completenessKeys\">\n <span>{{cycle.dataCompleteness[completeness] ? 'Complete' : 'Incomplete'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"cycle.dataCompleteness\"\n [key]=\"completeness\"\n ></he-blank-node-state>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n</div>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n</ng-template>\n","import { Component, Input, ViewChild, OnChanges, SimpleChanges, AfterViewInit, ElementRef } from '@angular/core';\nimport { Emission, ICycleJSONLD, Term } from '@hestia-earth/schema';\nimport { Chart } from 'chart.js';\n\nimport { groupNodesByTerm, IGroupedNodes, IGroupedNodesValues, itemColor, propertyValue } from '../../common/utils';\n\nconst cycleValue = (cycle: ICycleJSONLD, values: IGroupedNodesValues<Emission>) =>\n (values[cycle['@id']]?.nodes[0] || { value: [0] }).value;\n\nconst cycleName = (cycle: ICycleJSONLD, index: number) => `${index + 1}. ${cycle.name}`;\n\nconst cycleDataset = (values: IGroupedNodesValues<Emission>) => (cycle: ICycleJSONLD, index: number) => {\n const label = cycleName(cycle, index);\n const color = itemColor(index);\n const data = [propertyValue(cycleValue(cycle, values)!)];\n return {\n label,\n axis: 'y',\n data,\n backgroundColor: color,\n borderColor: color\n };\n};\n\n@Component({\n selector: 'he-cycles-emissions-chart',\n templateUrl: './cycles-emissions-chart.component.html',\n styleUrls: ['./cycles-emissions-chart.component.scss']\n})\nexport class CyclesEmissionsChartComponent implements AfterViewInit, OnChanges {\n @ViewChild('chart')\n private chartRef?: ElementRef;\n private chart: any;\n\n @Input()\n private cycles: ICycleJSONLD[] = [];\n\n public emissionPerCycle: IGroupedNodes<Emission> = {};\n public terms: Term[] = [];\n public selectedTerm?: Term;\n\n ngAfterViewInit() {\n return this.init();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('cycles' in changes && !changes.cycles.firstChange) {\n return this.init();\n }\n }\n\n private init() {\n this.emissionPerCycle = groupNodesByTerm<ICycleJSONLD, Emission>(this.cycles, 'emissions');\n this.terms = Object.values(this.emissionPerCycle)\n .filter(({ values }) => Object.values(values).some(({ nodes: [{ value }] }) => propertyValue(value!) > 0))\n .map(({ term }) => term);\n this.selectedTerm = this.terms.includes(this.selectedTerm!) ? this.selectedTerm : this.terms[0];\n return this.selectedTerm ? this.updateChart() : null;\n }\n\n public updateChart() {\n const labels: string[] = [this.selectedTerm?.name ?? ''];\n const { values } = this.emissionPerCycle[(this.selectedTerm as any)['@id']];\n const datasets = this.cycles.map(cycleDataset(values));\n\n if (this.chart) {\n this.chart.destroy();\n }\n this.chart = new Chart(this.chartRef?.nativeElement, {\n type: 'bar',\n data: {\n labels,\n datasets\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false\n },\n scales: {\n xAxes: [{\n display: false\n }],\n yAxes: [{\n position: 'left',\n ticks: {\n min: 0\n }\n }]\n }\n }\n });\n }\n}\n","<div class=\"p-3\" [class.is-hidden]=\"!terms?.length\">\n <div class=\"field is-horizontal\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"selectedTerm\">\n <span>Select a column</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"control\">\n <div class=\"select is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"chart-container\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { Emission, ICycleJSONLD, ITermJSONLD, NodeType, TermTermType } from '@hestia-earth/schema';\n\nimport { matchTermType, matchType } from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { HeNodeService } from '../../node/node.service';\n\n@Component({\n selector: 'he-cycles-emissions-logs',\n templateUrl: './cycles-emissions-logs.component.html',\n styleUrls: ['./cycles-emissions-logs.component.scss']\n})\nexport class CyclesEmissionsLogsComponent implements OnInit {\n @Input()\n private cycle?: ICycleJSONLD;\n @Input()\n public originalValues: Emission[] = [];\n @Input()\n public recalculatedValues: Emission[] = [];\n\n public loading = true;\n public logsUrl?: string;\n public NodeType = NodeType;\n public logs: any;\n public models: ITermJSONLD[] = [];\n public emissions: ITermJSONLD[] = [];\n\n constructor(\n private searchService: HeSearchService,\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.logsUrl = this.nodeService.nodeLogsUrl(this.node);\n this.logs = await this.nodeService.getModelsLog(this.node);\n\n const { results: emissions } = await this.searchService.search<ITermJSONLD, NodeType.Term>({\n fields: ['@type', '@id', 'name'],\n limit: 1000,\n query: {\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.emission)\n ]\n }\n }\n });\n this.emissions = emissions;\n\n this.loading = false;\n }\n\n private get node() {\n return {\n ...this.cycle,\n dataState: DataState.recalculated\n };\n }\n}\n","<he-node-logs-models *ngIf=\"!loading; else loader\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.Cycle\"\n [originalValues]=\"originalValues\"\n [recalculatedValues]=\"recalculatedValues\"\n [terms]=\"emissions\"\n [logs]=\"logs\"\n filteredType=\"Emission\"\n></he-node-logs-models>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { ICycleJSONLD, Emission } from '@hestia-earth/schema';\nconst orderBy = require('lodash.orderby');\n\nimport { propertyValue, groupNodesByTerm, IGroupedKeys, grouppedKeys, itemColor } from '../../common/utils';\nimport { baseUrl } from '../../common/utils';\n\nenum View {\n table = 'table',\n chart = 'chart',\n logs = 'logs'\n}\n\n@Component({\n selector: 'he-cycles-emissions',\n templateUrl: './cycles-emissions.component.html',\n styleUrls: ['./cycles-emissions.component.scss']\n})\nexport class CyclesEmissionsComponent implements OnChanges {\n @Input()\n public originalValues: ICycleJSONLD[] = [];\n @Input()\n public cycles: ICycleJSONLD[] = [];\n @Input()\n public dataState?: DataState;\n @Input()\n public enableCompare = true;\n\n public baseUrl = baseUrl();\n public propertyValue = propertyValue;\n public itemColor = itemColor;\n public showDownload = false;\n public View = View;\n public selectedView = View.table;\n public selectedCycles: ICycleJSONLD[] = [];\n\n public emissions: IGroupedKeys<Emission>[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if ('cycles' in changes) {\n return this.update();\n }\n if ('dataState' in changes) {\n this.selectedView = View.table;\n }\n }\n\n public trackById(_index: number, item: ICycleJSONLD) {\n return item['@id'];\n }\n\n public get isOriginal() {\n return this.dataState === DataState.original;\n }\n\n private update() {\n const emissionsPerCycle = groupNodesByTerm<ICycleJSONLD, Emission>(this.cycles, 'emissions', this.originalValues);\n this.emissions = orderBy(grouppedKeys(emissionsPerCycle), ['value.methodTierOrder', 'key'], ['asc', 'asc']);\n this.selectAllCycles();\n }\n\n public togglePopover(popover: any, context: any) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n // Add from suggestion\n\n public async addCycle(cycle: ICycleJSONLD) {\n this.cycles = [\n ...this.cycles,\n cycle\n ];\n return this.update();\n }\n\n // Cycle selection\n\n private selectAllCycles() {\n this.selectedCycles = this.cycles.slice();\n }\n\n private unselectAllCycles() {\n this.selectedCycles = [];\n }\n\n public toggleAllCycles() {\n return this.selectedCycles.length ? this.selectAllCycles() : this.unselectAllCycles();\n }\n\n private selectCycle(cycle: ICycleJSONLD) {\n this.selectedCycles = [\n ...this.selectedCycles,\n cycle\n ];\n }\n\n private unselectCycle(index: number) {\n this.selectedCycles.splice(index, 1);\n this.selectedCycles = this.selectedCycles.slice();\n }\n\n public toggleCycle(cycle: ICycleJSONLD) {\n const index = this.selectedCycles.indexOf(cycle);\n return index >= 0 ? this.unselectCycle(index) : this.selectCycle(cycle);\n }\n\n public isSelected(cycle: ICycleJSONLD) {\n return this.selectedCycles.includes(cycle);\n }\n}\n","<ng-container *ngIf=\"emissions.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-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\" *ngIf=\"cycles.length > 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal && cycles.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{emissions.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngFor=\"let emission of emissions\"\n [attr.title]=\"emission.value.term.name\"\n >\n <he-node-link [node]=\"emission.value.term\">\n <span>{{emission.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th>\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let emission of emissions\"\n [attr.title]=\"emission.value.term.units\"\n >{{emission.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"cycle.name\" [style.border-left-color]=\"itemColor(i)\">\n <label *ngIf=\"enableCompare\" class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n (change)=\"toggleCycle(cycle)\"\n [checked]=\"isSelected(cycle)\"\n >\n </label>\n <he-node-link class=\"is-inline-block\" [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{cycle.name || cycle.id}}</span>\n </he-node-link>\n </td>\n <td>\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let emission of emissions\">\n <span *ngIf=\"emission.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: emission.value.values[cycle['@id']], cycle: cycle, key: 'emissions' })\"\n >\n <span pointer>{{propertyValue(emission.value.values[cycle['@id']].value) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"emission.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n\n <he-cycles-suggest-form *ngIf=\"enableCompare\" [cycles]=\"cycles\" (cycleAdded)=\"addCycle($event)\"></he-cycles-suggest-form>\n </div>\n\n <he-cycles-emissions-chart *ngIf=\"cycles.length > 1\" [class.is-hidden]=\"selectedView !== View.chart\"\n [cycles]=\"selectedCycles\"\n ></he-cycles-emissions-chart>\n\n <he-cycles-emissions-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [cycle]=\"cycles[0]\"\n [originalValues]=\"originalValues[0]?.emissions\"\n [recalculatedValues]=\"cycles[0]?.emissions\"\n ></he-cycles-emissions-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-emissions.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.emissions.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\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>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n","import { Component, Input, AfterViewInit, ViewChild, OnChanges, SimpleChanges, ElementRef } from '@angular/core';\nimport { ICycleJSONLD, Product } from '@hestia-earth/schema';\nimport { Chart } from 'chart.js';\n\nimport { propertyValue, ellipsis, groupNodesByTerm, itemColor } from '../../common/utils';\n\n@Component({\n selector: 'he-cycles-result',\n templateUrl: './cycles-result.component.html',\n styleUrls: ['./cycles-result.component.scss']\n})\nexport class CyclesResultComponent implements AfterViewInit, OnChanges {\n @ViewChild('chart')\n private chartRef?: ElementRef;\n private chart: any;\n @Input()\n private cycles: ICycleJSONLD[] = [];\n\n ngAfterViewInit() {\n Chart.scaleService.updateScaleDefaults('category', {\n ticks: {\n callback: tick => ellipsis(`${tick}`, 25)\n }\n });\n return this.init();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('cycles' in changes && !changes.cycles.firstChange) {\n return this.init();\n }\n }\n\n private init() {\n const labels = this.cycles.map(({ name }, index) => `${index + 1}. ${name}`);\n const productsPerCycle = groupNodesByTerm<ICycleJSONLD, Product>(this.cycles, 'products');\n const datasets = Object.values(productsPerCycle).map(({ term: { name, units }, values }, index) => {\n const color = itemColor(index);\n return {\n label: `${name}${units ? ` (in ${units})` : ''}`,\n backgroundColor: color,\n borderColor: color,\n barPercentage: 0.5,\n data: this.cycles.map(({ '@id': id }) => values[id] ? propertyValue(values[id].value) : 0)\n };\n });\n this.updateChart(datasets as any, labels as any);\n }\n\n private updateChart(datasets = [], labels = []) {\n if (this.chart) {\n this.chart.destroy();\n }\n this.chart = new Chart(this.chartRef?.nativeElement, {\n type: 'horizontalBar',\n data: {\n labels,\n datasets\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: true\n },\n tooltips: {\n callbacks: {\n title: (tooltipItems, data) => data.labels![tooltipItems[0].index!] as any\n }\n },\n scales: {\n xAxes: [{\n ticks: {\n min: 0\n }\n }],\n yAxes: [{\n position: 'left',\n scaleLabel: {\n display: true,\n labelString: 'Cycle'\n }\n }]\n }\n }\n });\n }\n}\n","<div class=\"chart-container\">\n <canvas #chart>{{chart}}</canvas>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { HeCommonModule } from '../common/common.module';\nimport { HeNodeModule } from '../node/node.module';\n\nimport { CyclesActivityComponent } from './cycles-activity/cycles-activity.component';\nimport { CyclesActivityLogsComponent } from './cycles-activity-logs/cycles-activity-logs.component';\nimport { CyclesCompletenessComponent } from './cycles-completeness/cycles-completeness.component';\nimport { CyclesEmissionsChartComponent } from './cycles-emissions-chart/cycles-emissions-chart.component';\nimport { CyclesEmissionsLogsComponent } from './cycles-emissions-logs/cycles-emissions-logs.component';\nimport { CyclesEmissionsComponent } from './cycles-emissions/cycles-emissions.component';\nimport { CyclesFunctionalUnitMeasureComponent } from './cycles-functional-unit-measure/cycles-functional-unit-measure.component';\nimport { CyclesResultComponent } from './cycles-result/cycles-result.component';\nimport { CyclesSuggestFormComponent } from './cycles-suggest-form/cycles-suggest-form.component';\n\nconst components = [\n CyclesActivityComponent,\n CyclesActivityLogsComponent,\n CyclesCompletenessComponent,\n CyclesEmissionsComponent,\n CyclesEmissionsChartComponent,\n CyclesEmissionsLogsComponent,\n CyclesFunctionalUnitMeasureComponent,\n CyclesResultComponent,\n CyclesSuggestFormComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, FormsModule, ReactiveFormsModule,\n HeCommonModule,\n HeNodeModule\n ]\n})\nexport class HeCyclesModule { }\n","/* eslint-disable complexity */\nimport * as pluralize from 'pluralize';\nimport { SchemaType, SiteSiteType, Term, TermTermType } from '@hestia-earth/schema';\nimport { toPrecision } from '@hestia-earth/utils';\n\nimport { termTypeLabel } from '../terms/terms.model';\nimport { pathToApiDocsPath } from '../engine/engine.service';\nimport { baseUrl, keyToLabel } from '../common/utils';\n\n// TODO: add more validation keyword and params\nexport type validationErrorLevel = 'error' | 'warning';\nexport type validationErrorParam = 'missingProperty' | 'type' | 'term' | 'model' | 'product' | 'range' |\n 'allowedValues' | 'additionalProperty' | 'expected' | 'default' | 'current' | 'percentage' | 'keys' | 'threshold';\nexport type validationErrorKeyword = 'required' | 'type' | 'if' | 'then';\n\nexport interface IValidationError {\n index?: number;\n nodeIndex?: number;\n level?: validationErrorLevel;\n dataPath?: string;\n schemaPath?: string;\n keyword?: validationErrorKeyword;\n message: string;\n params?: { [key in validationErrorParam]?: any };\n mapError?: boolean;\n}\n\nexport interface IValidationErrorWithIndex {\n error: IValidationError[];\n index: number;\n changed?: boolean;\n}\n\nconst mapErrorMessage = 'does not contain latitude and longitude';\n\nexport const parseDataPath = (dataPath = '') => {\n const [_, ...paths] = dataPath.split('.');\n return paths.map(path => ({ path, label: keyToLabel(path.replace(/\\[\\d+\\]/g, '')) }));\n};\n\nconst contactUsEmail = 'community@hestia.earth';\nconst externalLink = (href: string, text: string) => `<a href=\"${href}\" target=\"_blank\">${text}</a>`;\nconst glossaryLink = (text: string) =>\n externalLink(`${baseUrl()}/glossary`, text);\nconst glossaryTypeLink = (type: TermTermType) =>\n externalLink(`${baseUrl()}/glossary?termType=${type}`, termTypeLabel(type));\nconst termLink = ({ id, name }: Partial<Term>) =>\n externalLink(`${baseUrl()}/term/${id}`, name!);\nexport const nodeLink = ({ '@type': type, '@id': id, name }) =>\n type && id ? `<a href=\"/${type.toLowerCase()}/${id}\" target=\"_blank\">${name || id}</a>` : null;\nconst schemaLink = (type: string, title = type) => `<a href=\"${baseUrl()}/schema/${type}\" target=\"_blank\">${title}</a>`;\nexport const code = (text: string | number | boolean) => `<code>${text}</code>`;\nconst dateFormatMessage =\n `should follow the ISO 8601 date format, e.g. ${code(2000)}, or ${code('2000-12')}, or ${code('2000-12-30')}`;\nconst contactUs = (text = 'contact us') => `<a href=\"mailto:${contactUsEmail}\">${text}</a>`;\nconst modelLink = (term: Term, model: Term) => `\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`;\nconst threshold = (value: number) => code(`${value * 100}%`);\n\nconst noTillage: Partial<Term> = {id: 'noTillage', name: 'No tillage'};\n\nexport const missingNodeErrorMessage = ({ '@type': _t, type, name }: any) =>\n (_t || type) === 'Term' ?\n `${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.`\n : `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.`;\n\n// set message as empty to not display it\nconst customErrorMessage: {\n [key: string]: (error: IValidationError, errorCount: number) => string;\n} = {\n 'should have required property \\'@id\\'': () => 'does not exist in Hestia.',\n 'should have required property \\'@type\\'': () => '',\n 'should have required property \\'id\\'': () => 'does not exist in Hestia.',\n 'should match exactly one schema in oneOf': () => '',\n 'should match some schema in anyOf': () => '',\n 'should NOT have additional properties': ({ params }, errorCount) =>\n errorCount === 1 ?\n `The following field does not exist: ${params?.additionalProperty}` :\n `should not have additional properties`,\n 'should match pattern \"^\\\\d{13}$\"': () => `should be composed of 13 numbers`,\n 'should match pattern \"^[0-9]{4}(-[0-9]{2})?(-[0-9]{2})?$\"': () => dateFormatMessage,\n 'should match pattern \"^([0-9]{4}|-)(-[0-9]{2})?(-[0-9]{2})?$\"': () => dateFormatMessage,\n 'must be within the country': () => `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')}.`,\n [mapErrorMessage]: ({ dataPath }) =>\n 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')}.` :\n `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')}.`,\n 'sum not equal to 100% for sandContent, siltContent, clayContent':\n () => `The sum of Sand, Silt, and Clay content should equal 100% for each soil depth interval.`,\n 'is outside the allowed range': ({ params }, errorCount) =>\n errorCount === 1 ?\n (\n params?.term ?\n `for this measurement,\n the maximum ${code(params?.term['@id'] || params?.term.name)} is ${params?.range?.max} and the minimum is ${params?.range?.min}` :\n `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.`\n ) :\n `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.`,\n 'should be equal to one of the allowed values':\n ({ params }) => `must have one of these values: ${params?.allowedValues.join(', ')}`,\n 'is not allowed for this characterisedIndicator': ({ params }, errorCount) =>\n `${errorCount === 1 ?\n `${\n params?.allowedValues.length ?\n `can only be used with one of these methods: ${params?.allowedValues.join(', ')}` :\n `does not currently have any method allowed. Please ${contactUs()} to change this.`\n }.` :\n `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.`,\n 'should contain a valid item': ({ dataPath }) => {\n const paths = parseDataPath(dataPath!);\n return paths.length >= 2 ?\n `The ${paths[paths.length - 1].path} related to this ${pluralize(paths[paths.length - 2].label, 1)} are invalid` :\n `The ${paths[0].path} are invalid`;\n },\n 'may be between 0 and 100': () => 'percentages should be between 0 and 100, not 0 and 1. This may be an error.',\n 'may not all be set to false': () =>\n `You may have forgotten to fill in the data completeness assessment.\n For information on how to fill it in, please see the ${schemaLink('Cycle#dataCompleteness', 'schema')}.`,\n 'may not be empty': () => 'if this value signifies no data, Hestia only accepts \"-\" or empty for no data',\n 'may not be 0': ({ dataPath }, errorCount) => {\n const paths = parseDataPath(dataPath!);\n 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.`;\n },\n 'the sum of above ground crop residue and below ground crop residue must be greater than zero': () =>\n `For sites of type ${code(SiteSiteType.cropland)} or ${code(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.`,\n 'longFallowPeriod must be lower than 5 years': () =>\n `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.`,\n 'should be within percentage of default value': ({ params }, errorCount) =>\n errorCount === 1 ?\n `is ±${threshold(params?.threshold)} different to our default value which is ${params?.default}.\n Please check your uploaded data as this may be an error.` :\n `is substantially different than our default value. Please check your uploaded data as this may be an error.`,\n 'the value provided is not consistent with the model result': ({ params }, errorCount) =>\n `The expected result for ${code(params?.term.name)}\n ${params?.model?.name ? `using ${modelLink(params?.term, params?.model)} ` : ''}\n from the data provided in the upload is ${\n errorCount === 1 ?\n `${code(toPrecision(params?.expected, 3))}, but the value in the upload is ${code(toPrecision(params?.current, 3))}.\n ${params?.threshold ? `Our threshold is ±${threshold(params?.threshold)}.` : ''}\n Please either:\n 1) check the ${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.` :\n `not consistent with the model result.`\n }`,\n 'the measurement provided might be in error': ({ params }, errorCount) =>\n `The expected value for ${code(params?.term.name)} from the data provided in the upload is ${\n errorCount === 1 ?\n `${code(toPrecision(params?.expected, 3))}, but the value in the upload is ${code(toPrecision(params?.current, 3))}.\n ${params?.threshold ? `Our threshold is ±${threshold(params?.threshold)}.` : ''}` :\n `not consistent with the model result.`\n }`,\n 'must be equal to previous product multiplied by the share': () =>\n `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')}`,\n 'must have only one entry with the same term.termType = excretaManagement': () =>\n `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.`,\n 'every item in the list should be unique': ({ params }) =>\n `This Blank Node is duplicated. Every Blank Node should be unique.\n Uniqueness is determined by the following fields: ${\n (params?.keys || []).map(code).join(', ')\n }`,\n 'must contain as many items as values': ({ params }) =>\n `The number of dates must match the number of values.\n Currently there are ${params?.current} dates but ${params?.expected} values.`,\n 'is too generic': ({ params }) =>\n `You have the following Product ${code(params?.product?.name)} however,\n you have used a generic ${glossaryTypeLink(params?.term?.termType)} term ${code(params?.term?.name)}.\n Use a more specific term for the ${\n glossaryTypeLink(params?.term?.termType)\n } which reflects the specific ${\n glossaryTypeLink(params?.product?.termType)\n }.`,\n 'is missing required bibliographic information': () =>\n `The automatic bibliography search failed for this Bibliography. Either:\n 1) manually fill-in the <b>required</b> bibliographic information as per\n ${schemaLink(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')}`,\n 'should be lower than max size': ({ params }) =>\n `The boundary or region is >${params?.expected}km2 and is too large to reliably gap fill Measurements.`,\n 'an excreta input is required when using an excretaManagement practice': ({ dataPath }) => {\n const paths = parseDataPath(dataPath!);\n 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.`;\n },\n 'only 1 primary product allowed': () => 'There can only be one primary product in each Cycle.',\n 'is not allowed in combination with noTillage': () =>\n `This operation involves tillage, yet you have specified the Practice ${termLink(noTillage)}.\n Either change this operation or the Practice.`,\n 'should contain a tillage practice': () =>\n `We recommend specifying the type of tillage used for this Cycle.\n Please see the ${glossaryTypeLink(TermTermType.tillage)} glossary.`,\n 'must set value for every tillage practice': () =>\n `Either specify a single ${glossaryTypeLink(TermTermType.tillage)} practice or add a value to all practices.`,\n 'sum not equal to 100% for tillage practices': () =>\n `The sum of ${glossaryTypeLink(TermTermType.tillage)} practices must equal 100%.`,\n 'can only have 1 tillage practice without a value': ({ params }) =>\n `It is not possible for a Cycle to have the following tillage Practices:\n ${(params?.current ?? []).map(({ name }) => name).join(' and ')} at the same time.\n If multiple tillage practices did occur, please specify the percentage of area they occurred on.`,\n 'can not be linked to the same Cycle': () => 'You can not link an Input to the Impact Assessment of the same Cycle.',\n 'must be 0 for product value 0': ({ dataPath, params }, errorCount) =>\n `If the amount produced is zero, the ${code(dataPath?.split('.').pop()!)} of ${\n errorCount === 1 ? code(params?.term.name) : 'that product'\n } must also be zero.`\n};\n\nexport const formatCustomErrorMessage = (message?: string, error?: IValidationError, errorCount = 1) => {\n const formattedMessage = message && message in customErrorMessage ?\n customErrorMessage[message](error!, errorCount) :\n message;\n return formattedMessage ? `<p class=\"is-normal\">${formattedMessage}</p>` : '';\n};\n\nexport const formatError = (error?: IValidationError, errorCount = 1): IValidationError | undefined => error ? ({\n level: 'error',\n ...error,\n mapError: error.message === mapErrorMessage,\n message: formatCustomErrorMessage(error.message, error, errorCount)\n}) : undefined;\n\nexport const errorHasError = (error?: IValidationError) => error && (error.level === 'error' || !error.level);\n\nexport const errorHasWarning = (error?: IValidationError) => error && error.level === 'warning';\n\nexport const isMissingPropertyError = ({ params }: IValidationError) => !!params && 'missingProperty' in params;\n\nexport const isMissingOneOfError = ({ keyword, schemaPath }: IValidationError) =>\n keyword === 'required' && (schemaPath || '').includes('oneOf');\n\nconst isFailingKeywordError = ({ params }: IValidationError) => !!params && 'failingKeyword' in params;\n\nexport const filterError = (error: IValidationError) => [\n isFailingKeywordError\n].every(func => !func(error));\n\nexport const missingNodeErrors = (errors: IValidationError[]) =>\n errors.filter(({ keyword, params }) =>\n keyword === 'required' && (params?.missingProperty === '@type' || params?.missingProperty === '@id')\n );\n","/* eslint-disable complexity */\nconst get = require('lodash.get');\nimport * as moment from 'moment';\nimport 'moment/locale/en-gb';\nimport { v4 as uuidv4 } from 'uuid';\nimport { diffInDays, isNumber } from '@hestia-earth/utils';\nimport {\n JSON as HestiaJson, SchemaType, NodeType, isTypeNode, isTypeValid, isExpandable,\n Site, Organisation, Property, typeToSchemaType\n} from '@hestia-earth/schema';\nimport {\n definitions, definition, IDefinitionObject, IDefinitionArray, genericType\n} from '@hestia-earth/json-schema';\n\nimport {\n IValidationError, formatCustomErrorMessage, formatError,\n missingNodeErrorMessage, isMissingPropertyError, errorHasError, errorHasWarning, validationErrorLevel,\n missingNodeErrors, isMissingOneOfError\n} from './files-error.model';\nimport {\n schemaRequiredProperties, valueTypeToDefault, definitionToSchemaType, availableProperties,\n nestingTypeEnabled, nestingEnabled, linkTypeEnabled, isSchemaIri\n} from '../schema/schema.service';\nimport { matchCountry } from '../search/search.model';\nimport { baseUrl, mapsUrl, safeJSONParse, safeJSONStringify } from '../common/utils';\n\nexport const ARRAY_DELIMITER = ';';\nconst privateKeys = [\n 'filepath'\n];\n\nexport type suggestionType = NodeType | 'select' | 'default';\nexport const defaultSuggestionType: suggestionType = 'default';\n\ninterface INodePropertySuggestion {\n type?: suggestionType;\n queries?: any[];\n values?: string[];\n parentLevel?: number;\n isLinkNode?: boolean;\n isUniqueKey?: string;\n}\n\ninterface INewProperty {\n name?: string;\n prop?: definition;\n}\n\nexport interface IErrorProperty {\n level?: validationErrorLevel;\n message?: string;\n}\n\nexport interface INodeProperty {\n /**\n * Whether or not this property was added by the user\n */\n id: string;\n isAdded?: boolean;\n schemaType: SchemaType;\n key: string;\n fullKey: string;\n value: any;\n addPropertyEnabled: boolean;\n suggestions?: INodePropertySuggestion;\n schema?: definition;\n error?: IValidationError;\n hasError?: boolean;\n hasWarning?: boolean;\n editable?: boolean;\n closedVisible?: boolean;\n newProperty?: INewProperty;\n newError?: IErrorProperty;\n isRequired?: boolean;\n isHidden?: boolean;\n isArray?: boolean;\n isExpandable?: boolean;\n isOpen?: boolean;\n properties: INodeProperty[];\n placeholder?: string;\n externalUrl?: {\n url?: string;\n title: string;\n // default is external-link-alt\n icon?: string;\n urlParamValue?: boolean;\n };\n // making changes on the property\n loading?: boolean;\n // user made changes to the original value\n changed?: boolean;\n}\n\nconst stringValue = (value: any) => (typeof value === 'undefined' || value === null ? '' : value).toString();\nconst nonExpandableArrayDataPath = (key: string) => key.replace(/\\[\\d+\\]$/, '');\nexport const keyToDataPath = (key: string) => key?.length ? `.${key}` : '';\nexport const dataPathToKey = (dataPath = '', trimArray = false) =>\n trimArray ? nonExpandableArrayDataPath(dataPath.substring(1)) : dataPath.substring(1);\nexport const parentKey = (key: string) => {\n const keys = (key.startsWith('.') ? key.substring(1) : key).split('.');\n keys.pop();\n return keys.join('.');\n};\n\n/**\n * Sort properties having errors, type, id, ...properties (simple), and finally the groups\n *\n * @param a {INodeProperty}\n * @param b {INodeProperty}\n */\nexport const sortProperties = (a: INodeProperty, b: INodeProperty) => {\n if (isNumber(a.key) && isNumber(b.key)) {\n return +a.key - +b.key;\n }\n if (a.isExpandable) {\n return b.isExpandable ? a.key.localeCompare(b.key) : 1;\n }\n if (b.isExpandable) {\n return -1;\n }\n if (!a.key) {\n return -1;\n }\n const aKey = a.key.replace('@', '');\n const bKey = b.key.replace('@', '');\n if (aKey === 'type') {\n return -1;\n }\n if (bKey === 'type') {\n return 1;\n }\n if (aKey === 'id' && bKey !== 'type') {\n return -1;\n }\n if (a.hasError || a.hasWarning) {\n return -1;\n }\n return a.key.localeCompare(b.key);\n};\n\nconst defaultPropertyError: {\n [key: string]: (error: any, property: INodeProperty) => string | undefined;\n} = {\n max: ({ max }) => `should be <= ${max}`,\n min: ({ min }) => `should be >= ${min}`,\n pattern: ({ requiredPattern }) => `should match pattern \"${requiredPattern}\"`,\n required: (_e, { schemaType }) => schemaType ? `should be set or linked to another ${schemaType}` : undefined\n};\n\nexport const formatPropertyError = (errors: any, property: INodeProperty) => {\n const key = Object.keys(errors)[0];\n return key in defaultPropertyError ? formatCustomErrorMessage(defaultPropertyError[key](errors[key], property)) : '';\n};\n\nexport const hasError = value => Array.isArray(value) ? value.some(hasError) : value.hasError;\n\nexport const hasWarning = value => Array.isArray(value) ? value.some(hasWarning) : value.hasWarning;\n\nconst compileSuggestionQueries = (key: string, allOf: any[]) => {\n const conditions = (allOf || [])\n .filter(v => (v.if?.required || []).includes(key))\n .map(v => v.then?.properties[key])\n .map(v => v?.items?.properties || v?.properties)\n .filter(Boolean);\n return conditions.length ? [{\n bool: {\n should: conditions.flatMap(cond => Object.keys(cond).flatMap(k => (cond[k].enum || []).map(v => ({\n match: { [k]: v }\n })))),\n minimum_should_match: 1\n }\n }] : [];\n};\n\n// default suggest for linking nodes together using the `id` field\nconst suggestLinkNodes = (type: NodeType, fullKey: string): INodePropertySuggestion | undefined => {\n const keys = fullKey.split('.');\n const key = keys.pop();\n return key === 'id' && keys.length >= 1 ? { type, isLinkNode: true } : undefined;\n};\n\nconst suggestExistingNode = (type: NodeType, fullKey: string): INodePropertySuggestion | undefined => {\n const keys = fullKey.split('.');\n const key = keys.pop()!;\n return keys.length >= 1 && ['@id', 'openLCAId'].includes(key) ? { type, isUniqueKey: '@id' } : undefined;\n};\n\nconst defaultNodeTypeSuggestion = (type: NodeType) => (fullKey: string) =>\n suggestLinkNodes(type, fullKey) || suggestExistingNode(type, fullKey);\n\nconst termSuggestions = (parent: string, { allOf }: IDefinitionObject) => ({\n type: NodeType.Term,\n queries: [\n ...compileSuggestionQueries(nonExpandableArrayDataPath(parent), allOf!),\n ...(['country'].includes(parent) ? [matchCountry] : [])\n ]\n});\n\nexport const formatLinkNodesSuggestions = (nodeMap: { [type in NodeType]?: string[] }, type: NodeType) =>\n (nodeMap[type] || []).map(id => ({ type, id, name: `Link with ${type}: ${id}` }));\n\nconst typeToSuggestion: {\n [type in SchemaType|NodeType|genericType|'integer']?: (\n fullKey: string, parentSchema?: definition, schema?: definition\n ) => INodePropertySuggestion|any;\n} = {\n [NodeType.Actor]: defaultNodeTypeSuggestion(NodeType.Actor),\n [NodeType.Cycle]: defaultNodeTypeSuggestion(NodeType.Cycle),\n [NodeType.ImpactAssessment]: defaultNodeTypeSuggestion(NodeType.ImpactAssessment),\n [NodeType.Organisation]: defaultNodeTypeSuggestion(NodeType.Organisation),\n [NodeType.Site]: defaultNodeTypeSuggestion(NodeType.Site),\n [NodeType.Source]: defaultNodeTypeSuggestion(NodeType.Source),\n [NodeType.Term]: (fullKey, parentSchema) => {\n const keys = fullKey.split('.');\n const key = keys.pop()!;\n return ['name'].includes(key) && keys.length >= 1 ?\n termSuggestions(keys.pop()!, parentSchema as IDefinitionObject) :\n defaultNodeTypeSuggestion(NodeType.Term)(fullKey);\n },\n [SchemaType.Bibliography]: (fullKey) => {\n const keys = fullKey.split('.');\n const key = keys.pop()!;\n const parent = keys.pop()!;\n // prevent replacing a top-level source\n return ['title', 'documentDOI', 'scopus'].includes(key) && parent === 'bibliography' && keys.length >= 1 ? {\n type: NodeType.Source,\n parentLevel: 1\n } : undefined;\n },\n number: (_a, _b, schema) => {\n const values = (schema as any).const ? [(schema as any).const] : [];\n return {\n type: values.length > 0 ? 'select' : defaultSuggestionType,\n // exclude suggesting SchemaType\n values\n };\n },\n integer: (_a, _b, schema) => {\n const values = (schema as any).const ? [(schema as any).const] : [];\n return {\n type: values.length > 0 ? 'select' : defaultSuggestionType,\n // exclude suggesting SchemaType\n values\n };\n },\n string: (fullKey, _b, schema) => {\n // exclude suggesting SchemaType\n const values = (schema as any).const ?\n [(schema as any).const] :\n ((schema as any).enum || []).filter(val => !Object.values(SchemaType).includes(val));\n const key = fullKey.split('.').pop();\n return {\n type: values.length > 0 && key !== 'type' ? 'select' : defaultSuggestionType,\n values\n };\n },\n boolean: (_a) => ({\n type: 'select',\n values: ['true', 'false']\n })\n};\n\nconst enableSuggestions = (\n parentSchema: definition, type: SchemaType | NodeType | genericType, fullKey: string, schema?: definition\n) => {\n const suggestion = type in typeToSuggestion ? typeToSuggestion[type]!(fullKey, parentSchema) : undefined;\n return suggestion || (\n schema && schema.type as genericType in typeToSuggestion ?\n typeToSuggestion[schema.type as genericType]!(fullKey, parentSchema, schema) :\n undefined\n );\n};\n\nconst formatProperty = (prop: Property) => ({\n '@type': SchemaType.Property,\n ...prop,\n term: {\n '@type': NodeType.Term,\n ...prop.term\n }\n});\n\nexport const formatSuggestion = ({ defaultProperties, ...node }: any) => ({\n ...node,\n ...(defaultProperties ? { defaultProperties: defaultProperties.map(formatProperty) } : {})\n});\n\nexport const nodeAvailableProperties = (\n node: HestiaJson<SchemaType>, { fullKey, schema, schemaType }: Partial<INodeProperty>\n) => availableProperties(schema!, schemaType!, fullKey ? get(node, fullKey, {}) : node, fullKey!.length > 0);\n\nexport const isAddPropertyEnabled = (\n node: HestiaJson<SchemaType>, schemaType: SchemaType, schema: definition, fullKey = ''\n) => !!schema &&\n !!Object.keys(nodeAvailableProperties(node, { fullKey, schema })).length &&\n (!fullKey || nestingTypeEnabled(schemaType));\n\nconst editableKey = (key: string) => !['type', '@type', 'termType'].includes(key);\n\nexport const propertyId = () => uuidv4();\n\nconst propertyUrl = (node: HestiaJson<SchemaType>, key: string) =>\n ['@id', 'name'].includes(key) && linkTypeEnabled(node['@type']) ?\n {\n url: `${baseUrl()}/${node['@type'].toLowerCase()}/${node['@id']}`,\n title: 'Open'\n } :\n (\n node.type === SchemaType.Term && ['name'].includes(key) ? {\n url: `${baseUrl()}/glossary?query=`,\n urlParamValue: true,\n title: 'Search in Glossary'\n } : undefined\n );\n\nconst propertyMapsUrl = (node: Site | Organisation, key: string, value) =>\n ['type'].includes(key) && [\n SchemaType.Site.toString(),\n SchemaType.Organisation.toString()\n ].includes(stringValue(value) || node.type) ?\n {\n url: mapsUrl({ lat: node.latitude, lng: node.longitude }),\n title: 'View on maps',\n icon: 'map'\n } :\n undefined;\n\nconst propertyExternalUrl = (node: HestiaJson<SchemaType>, key: string, value: any) =>\n propertyUrl(node, key) ||\n propertyMapsUrl(node as any, key, value);\n\nconst arrayPlaceholder = (valueType: genericType) => `Type a ${valueType} then press Enter`;\n\nconst defaultPlaceholder = ({ type, examples }: any, valueType: genericType) => examples?.length ? (\n Array.isArray(examples[0]) ? arrayPlaceholder(valueType) : examples[0]\n) : `Must be of type ${type || valueType}`;\n\nconst schemaPlacholder = (schema: any, fullKey: string) => {\n const [parent, ...keys] = fullKey.split('.');\n const properties = schema.properties || {};\n const { examples } = parent in properties ? properties[parent] : { examples: [] };\n return examples?.length && typeof examples[0] === 'object' ? get(examples[0], keys.join('.'), null): null;\n};\n\nconst propertyPlaceholder = (schema: any, valueType: genericType, fullKey = '', parentSchema?: any) =>\n schema.type === 'array' ?\n arrayPlaceholder(valueType) : (\n parentSchema && fullKey?.length ? schemaPlacholder(parentSchema, fullKey) : null\n ) || defaultPlaceholder(schema, valueType);\n\nconst propertyTypeValue: {\n [type: string]: (value: any, schema: definition) => any;\n} = {\n object: val => safeJSONStringify(val),\n array: (val, schema) => {\n const { items } = schema as IDefinitionArray;\n return '$ref' in items ? val : (\n Array.isArray(val) ?\n val.map(value => propertyValue(items, value)).join(ARRAY_DELIMITER) :\n val\n );\n },\n json: val => val || '',\n string: val => (`${val}` || '').trim(),\n number: val => +(`${val}` || '0'),\n integer: val => +(`${val}` || '0'),\n boolean: val => (`${val}` || '').toLowerCase() === 'true'\n};\n\nconst propertyValue = (schema: definition, value: any) =>\n schema.type ? (\n Array.isArray(schema.type) ?\n propertyTypeValue[typeof value](value, schema) :\n propertyTypeValue[schema.type as string](value, schema)\n ) :\n safeJSONStringify(value);\n\nconst propertyValueType = (schema: definition, value?: any) =>\n (schema.type ? (\n Array.isArray(schema.type) ?\n schema.type[0] :\n schema.type === 'array' ?\n propertyValueType({ ...schema, type: [schema.items.type as genericType] }) :\n schema.type\n ) : typeof value) as genericType;\n\nconst propertyTypeParseValue: {\n [type: string]: (value: any, schema: definition) => any;\n} = {\n object: val => safeJSONParse(val),\n array: (val, schema) => {\n const { items } = schema as IDefinitionArray;\n return '$ref' in items ? val : (\n !val || Array.isArray(val) ? val : val.split(ARRAY_DELIMITER).map(value => parseNewValue(items, value))\n );\n },\n json: val => val || '',\n string: val => (`${val}` || '').trim(),\n number: val => +(`${val}` || '0'),\n integer: val => +(`${val}` || '0'),\n boolean: val => (`${val}` || '').toLowerCase() === 'true'\n};\n\n/**\n * Convert value to the final type in the schema.\n *\n * @param schema Definition of the value.\n * @param value\n * @returns Value in the correct format.\n */\nexport const parseNewValue = (schema: definition, value: any) =>\n schema.type ? (\n Array.isArray(schema.type) ?\n propertyTypeParseValue[typeof value](value, schema) :\n propertyTypeParseValue[schema.type as string](value, schema)\n ) : value;\n\nconst isOpenDefault = (schemaType: SchemaType) => [\n SchemaType.Term\n].includes(schemaType);\n\n// can the property be seen when the group is closed\nconst isKeyClosedVisible = (key: string) => ['type', 'id', '@type', '@id'].includes(key);\n\nconst isKeyHidden = (key: string) => ['type', '@type'].includes(key);\n\nconst isKeyRequired = (key: string, def?: IDefinitionObject) =>\n ['type', 'id'].includes(key) || (def?.required || []).includes(key);\n\nexport const propertyError = (errors: IValidationError[]) => (dataPath: string, nonExpandableArray = false) =>\n errors.find(error =>\n (\n error.dataPath === dataPath || (\n nonExpandableArray && nonExpandableArrayDataPath(error.dataPath!) === nonExpandableArrayDataPath(dataPath)\n )\n ) && (dataPath.length > 0 || !isMissingPropertyError(error))\n );\n\nconst missingPropertyErrors = (\n node: HestiaJson<SchemaType>, errors: IValidationError[], parent = ''\n): INodeProperty[] => {\n const allErrors = errors.filter(error =>\n error.dataPath === keyToDataPath(parent) && isMissingPropertyError(error)\n );\n // check for node not found errors\n const missingNode = missingNodeErrors(allErrors);\n return missingNode.length === 2 ? [{\n id: propertyId(),\n schemaType: node.type,\n suggestions: { type: defaultSuggestionType },\n key: '',\n fullKey: parent,\n value: '',\n error: {\n level: 'error',\n message: missingNodeErrorMessage(node)\n },\n hasError: true,\n properties: [],\n addPropertyEnabled: false\n }] : allErrors.map(error => {\n const { missingProperty } = error.params!;\n const fullKey = parent ? `${parent}.${missingProperty}` : missingProperty;\n const missingOneOf = isMissingOneOfError(error);\n return {\n id: propertyId(),\n schemaType: node.type,\n suggestions: { type: defaultSuggestionType },\n key: missingProperty,\n fullKey,\n value: 'Add field to fix',\n editable: false,\n error: formatError(error),\n hasError: missingOneOf ? false : errorHasError(error),\n hasWarning: missingOneOf || errorHasWarning(error),\n properties: [],\n addPropertyEnabled: true\n };\n });\n};\n\nconst propertyFromNode = (\n schemas: definitions, errors: IValidationError[], nodeSchema: definition, deepEditable: boolean, parent = '', node: any\n) => (key: string) => {\n const value = node[key];\n const expandable = isExpandable(value);\n const isArray = Array.isArray(value);\n const nonExpandableArray = isArray && !expandable;\n const fullKey = Array.isArray(node) ? `${parent}[${key}]` : [\n parent,\n key\n ].filter(Boolean).join('.');\n const nodeType = node.type || node['@type'];\n const schemaType = expandable ? (\n isArray && value.length ? value[0].type || value[0]['@type'] : value.type || value['@type']\n ) : nodeType;\n const schema = (schemas && isTypeValid({ type: schemaType }) ? (\n expandable ? schemas[schemaType] : schemas[schemaType].properties[key]\n ) : null) || {};\n const isIri = isSchemaIri(schema);\n const error = propertyError(errors)(keyToDataPath(fullKey), nonExpandableArray);\n const parentSchema = expandable ? (\n // TODO: for non-array, should be schema unless last recursion\n isArray ? schema : nodeSchema\n ) : nodeSchema;\n const properties = expandable || isIri ?\n recursiveProperties(schemas, errors, parentSchema, deepEditable, fullKey)(value) : [];\n const inError = errorHasError(error) || hasError(properties);\n const inWarning = errorHasWarning(error) || hasWarning(properties);\n const editable = isTypeNode(node['@type']) || (expandable && isTypeNode(value['@type'])) ?\n false :\n (\n // prevent editing/adding new properties on existing sub-nodes\n !deepEditable && isTypeNode(schemaType) && (\n expandable ? value.type !== NodeType.Term : parent && node.type !== NodeType.Term\n ) ?\n false :\n // handle IRI\n (!schemaType && key === '@id') || editableKey(key)\n );\n const valueType = propertyValueType(schema, value);\n return {\n id: propertyId(),\n schemaType: isIri ? null : schemaType,\n schema,\n key,\n fullKey,\n value: propertyValue(schema, value),\n editable: inError || editable,\n suggestions: enableSuggestions(nodeSchema, node.type, fullKey, schema),\n addPropertyEnabled: isAddPropertyEnabled(node, schemaType, schema, fullKey),\n newProperty: {},\n newError: { level: 'warning' },\n error: formatError(error),\n isHidden: parent && isKeyHidden(key),\n closedVisible: isKeyClosedVisible(key),\n hasError: inError,\n hasWarning: inWarning,\n isRequired: isKeyRequired(key, schemas[nodeType]),\n isArray,\n isExpandable: expandable,\n isOpen: isOpenDefault(schemaType),\n properties,\n placeholder: propertyPlaceholder(schema, valueType, fullKey, parentSchema),\n externalUrl: propertyExternalUrl(node, key, value)\n } as INodeProperty;\n};\n\nexport const singleProperty = (schemas: definitions, errors: IValidationError[], node: any, fullKey: string) => {\n const [_t, ...keys] = fullKey.split('.');\n const key = keys.pop()!;\n const parent = keys.join('.');\n const parentNode = parent.length ? get(node, parent) : node;\n const schemaType = typeToSchemaType(parentNode.type || parentNode['@type']);\n const parentSchema = schemas[schemaType];\n return propertyFromNode(schemas, errors, parentSchema, true, parent, parentNode)(key);\n};\n\nexport const recursiveProperties = (\n schemas: definitions, errors: IValidationError[], nodeSchema: definition, deepEditable: boolean, parent = ''\n) => (node: any): INodeProperty[] =>\n Object.keys(node)\n .filter(key => !privateKeys.includes(key))\n .map(propertyFromNode(schemas, errors, nodeSchema, deepEditable, parent, node))\n .concat(...missingPropertyErrors(node, errors, parent))\n .sort(sortProperties);\n\nconst fullKeyParts = (fullKey: string) => fullKey.split('.').flatMap(val => {\n if (val.endsWith(']')) {\n const [key, index] = val.split('[');\n return [key, index.replace(']', '')];\n }\n return val;\n});\n\nexport const updateProperties = ({ properties }: Partial<INodeProperty>, updater: (prop: INodeProperty) => INodeProperty) =>\n (properties || []).map(prop => updateProperties(updater(prop), updater));\n\nexport const typeToNewProperty = (\n schemas: definitions, schema: definition, nodeSchema: definition, node: any, fullKey: string\n): INodeProperty => {\n const key = fullKeyParts(fullKey).pop()!;\n const mappings: {\n [key: string]: () => INodeProperty;\n } = {\n object: () => {\n const { schemaType, properties } = schemaRequiredProperties(schemas, schema as IDefinitionObject);\n node[key] = node[key] || {};\n node[key].type = schemaType;\n // TODO: handle load schemas from http source\n if (schemaType.startsWith('http')) {\n return typeToNewProperty(schemas, { type: 'json' } as any, nodeSchema, node, fullKey);\n }\n // TODO: handle nodeSchema should be schema unless last recursion\n const props = properties\n .filter(prop => nestingEnabled(schemaType, prop.key) && !!prop.value)\n .map(\n v => ({\n ...typeToNewProperty(schemas, v.value, nodeSchema, node[key], `${fullKey}.${v.key}`),\n isRequired: true\n })\n );\n const value = props.reduce((prev, curr) => ({ ...prev, [curr.key]: curr.value }), {});\n return {\n id: propertyId(),\n isAdded: true,\n schema: schemas[schemaType],\n schemaType,\n key,\n fullKey,\n value,\n editable: editableKey(key),\n isHidden: isKeyHidden(key),\n closedVisible: isKeyClosedVisible(key),\n suggestions: enableSuggestions(nodeSchema, schemaType, fullKey),\n properties: props.sort(sortProperties),\n addPropertyEnabled: isAddPropertyEnabled(node, schemaType, schemas[schemaType], key),\n newProperty: {},\n newError: { level: 'warning' },\n isRequired: isKeyRequired(key, schema as any),\n isArray: false,\n isExpandable: true,\n isOpen: isOpenDefault(schemaType)\n };\n },\n array: () => {\n const { items } = schema as IDefinitionArray;\n // array of string, number and boolean\n if (items.type) {\n return mappings.default();\n }\n const schemaType = definitionToSchemaType(items as IDefinitionObject);\n node[key] = node[key] || [];\n node[key].push({ });\n const property = typeToNewProperty(schemas, items, schemas[schemaType], node[key][0], `${fullKey}[0]`);\n return {\n id: propertyId(),\n isAdded: true,\n schema,\n schemaType,\n key,\n fullKey,\n value: [property.value],\n editable: editableKey(key),\n isHidden: isKeyHidden(key),\n closedVisible: isKeyClosedVisible(key),\n suggestions: undefined,\n properties: [property],\n newProperty: {},\n newError: { level: 'warning' },\n isArray: true,\n isExpandable: true,\n addPropertyEnabled: false\n };\n },\n default: () => {\n const valueType = propertyValueType(schema);\n const value = schema.default || (schema as any).const || valueTypeToDefault[valueType];\n node[key] = value;\n return {\n id: propertyId(),\n isAdded: true,\n schema,\n schemaType: node.type,\n key,\n fullKey,\n value: propertyValue(schema, value),\n editable: editableKey(key),\n isHidden: isKeyHidden(key),\n closedVisible: isKeyClosedVisible(key),\n suggestions: enableSuggestions(nodeSchema, node.type, fullKey, schema),\n placeholder: propertyPlaceholder(schema, valueType, fullKey, nodeSchema),\n externalUrl: propertyExternalUrl(node, key, value),\n properties: [],\n addPropertyEnabled: false\n };\n }\n };\n const mapped = !schema.type ? mappings.object : (\n schema.type as string in mappings ? mappings[schema.type as string] : mappings.default\n );\n return mapped();\n};\n\nexport const findProperty = (properties: INodeProperty[], fullKey: string) => {\n for (const p of properties) {\n if (p.fullKey === fullKey) {\n return p;\n }\n const childP = findProperty(p.properties, fullKey);\n if (childP) {\n return childP;\n }\n }\n return null;\n};\n\nexport const parentProperty = (properties: INodeProperty[], property: INodeProperty) => {\n const allKeys = property.fullKey.split('.');\n [...new Array(property.suggestions?.parentLevel || 0)].map(() => allKeys.pop());\n const parentKeys = fullKeyParts(allKeys.join('.'));\n parentKeys.pop();\n const parent = (parentKeys.reduce((prev, curr, currIndex): any => {\n const prop = prev.find(v => v.key === curr);\n return currIndex === parentKeys.length - 1 ? (prop || {} as INodeProperty) : (prop!.properties || []);\n }, properties) as any) as INodeProperty;\n return Array.isArray(parent) ? property : parent;\n};\n\nexport const nestedProperty = ({ properties }: INodeProperty, nestedKey: string) =>\n properties.find(({ key }) => key === nestedKey);\n\nexport const siblingProperty = (properties: INodeProperty[], property: INodeProperty, siblingKey: string) => {\n const parent = parentProperty(properties, property);\n const parentProperties = parent === property ? properties : parent.properties;\n return parentProperties.find(prop => prop.key === siblingKey);\n};\n\nexport const groupChanged = (properties: INodeProperty[], key: string, value?: any) => {\n try {\n const parentKeys = fullKeyParts(key);\n parentKeys.reduce((prev, curr, currIndex) => {\n if (currIndex === parentKeys.length - 1 && value === null) {\n return prev.splice(prev.findIndex(v => v.key === curr), 1);\n }\n else {\n const prop = prev.find(v => v.key === curr)!;\n prop.changed = true;\n return prop.properties;\n }\n }, properties);\n }\n catch (_err) {}\n};\n\nexport const refreshPropertyKeys = (property: INodeProperty) =>\n property.properties.map((prop, i) => {\n prop.fullKey = `${property.fullKey}${property.isArray ? `[${i}]` : `.${prop.key}`}`;\n prop.key = property.isArray ? `${i}` : prop.key;\n return refreshPropertyKeys(prop);\n });\n\nexport const calculateCycleDurationEnabled = (properties: INodeProperty[], property: INodeProperty) => {\n const startDate = siblingProperty(properties, property, 'startDate');\n const endDate = siblingProperty(properties, property, 'endDate');\n return !!startDate?.value && !!endDate?.value;\n};\n\nexport const calculateCycleDuration = (properties: INodeProperty[], property: INodeProperty) => {\n const startDate = siblingProperty(properties, property, 'startDate')!;\n const endDate = siblingProperty(properties, property, 'endDate')!;\n return diffInDays(startDate.value, endDate.value);\n};\n\nexport const calculateCycleStartDateEnabled = (properties: INodeProperty[], property: INodeProperty) => {\n const cycleDuration = siblingProperty(properties, property, 'cycleDuration');\n const endDate = siblingProperty(properties, property, 'endDate');\n return !!cycleDuration?.value && !!endDate?.value;\n};\n\nexport const calculateCycleStartDate = (properties: INodeProperty[], property: INodeProperty) => {\n const cycleDuration = siblingProperty(properties, property, 'cycleDuration')!;\n const endDate = siblingProperty(properties, property, 'endDate')!;\n return moment(endDate.value).locale('en-gb').subtract(cycleDuration.value, 'days').format('YYYY-MM-DD');\n};\n","import { from } from 'rxjs';\nimport { filter, map, mergeMap, reduce, toArray } from 'rxjs/operators';\nconst get = require('lodash.get');\nimport { JSON as HestiaJson, SchemaType } from '@hestia-earth/schema';\nimport { unique } from '@hestia-earth/utils';\n\nimport {\n IValidationError, IValidationErrorWithIndex, validationErrorLevel,\n code, filterError, formatError, nodeLink, parseDataPath\n} from './files-error.model';\nimport { dataPathToKey } from './files-form.model';\n\ninterface ISummaryError {\n node: HestiaJson<SchemaType>;\n error: IValidationError;\n term?: any;\n}\n\ninterface ISummaryGrouped {\n [message: string]: {\n level: validationErrorLevel;\n paths: {\n [type: string]: ISummaryError[];\n };\n };\n}\n\nexport interface ISummary {\n level: validationErrorLevel;\n path: string;\n message: string;\n formattedMessage: string;\n count: number;\n showErrors: boolean;\n errors: ISummaryError[];\n terms?: string;\n}\n\nconst nodeTerm = (node: HestiaJson<SchemaType>, key: string) => {\n const termType = get(node, `${key}.type`, get(node, `${key}.@type`, null));\n return termType === SchemaType.Term ? get(node, key, null) : null;\n};\n\nconst findNodeTerm = (node: HestiaJson<SchemaType>, { dataPath }: IValidationError) =>\n nodeTerm(node, dataPathToKey(dataPath)) ||\n nodeTerm(node, `${dataPathToKey(dataPath)}.term`) ||\n nodeTerm(node, dataPathToKey(dataPath, true)) ||\n nodeTerm(node, `${dataPathToKey(dataPath, true)}.term`);\n\nconst uniqueTerms = (errors: ISummaryError[]) => unique(\n errors\n .map(({ term }) => term ? nodeLink(term) || code(term.name || term['@id'] || term.id) : null)\n .filter(Boolean)\n);\n\nconst summaryShowErrors = (summaryData: ISummary[], { path, level, message }: Partial<ISummary>) =>\n summaryData.find(summary =>\n summary.path === path && summary.level === level && summary.message === message\n )?.showErrors || true;\n\n/**\n * Build the summary objects.\n *\n * @param nodes The list of nodes.\n * @param errors The list of errors per node.\n * @param summaryData The previously computed summary objects.\n * @returns\n */\nexport const buildSummary = (\n nodes: HestiaJson<SchemaType>[] = [],\n errors: (IValidationError[] | IValidationErrorWithIndex)[] = [],\n summaryData: ISummary[] = []\n) =>\n from(errors).pipe(\n mergeMap(error => 'error' in error ? (error as IValidationErrorWithIndex).error : error),\n filter(filterError),\n reduce((prev, error) => {\n const { message } = error;\n const [dataPath] = parseDataPath(error.dataPath);\n const node = get(nodes, error.nodeIndex, null);\n const label = dataPath ? dataPath.label : node?.type;\n const term = error.params?.term || findNodeTerm(node, error);\n prev[message] = prev[message] || { level: error.level, paths: {} };\n prev[message].paths[label] = prev[message].paths[label] || [];\n prev[message].paths[label].push({ node, error, term });\n return prev;\n }, {} as ISummaryGrouped),\n mergeMap(data => from(Object.keys(data)).pipe(\n filter(message => !!message),\n mergeMap(message => Object.keys(data[message].paths).map(path => ({\n level: data[message].level,\n path,\n message,\n formattedMessage: formatError(data[message].paths[path][0].error, data[message].paths[path].length)?.message,\n terms: uniqueTerms(data[message].paths[path]).join(' ; '),\n errors: data[message].paths[path],\n count: data[message].paths[path].length,\n showErrors: summaryShowErrors(summaryData, { level: data[message].level, path, message })\n } as ISummary))),\n filter(({ formattedMessage }) => !!formattedMessage)\n )),\n toArray(),\n map(values => values.sort(({ level }) => level === 'error' ? -1 : 1))\n );\n","import { Component, AfterViewInit, Input, ViewChild, OnInit } from '@angular/core';\nimport { GoogleMap } from '@angular/google-maps';\nimport MarkerClusterer from '@google/markerclustererplus';\nimport { JSONLD, NodeType, ISiteJSONLD, Site, IOrganisationJSONLD, Organisation } from '@hestia-earth/schema';\nimport { unique } from '@hestia-earth/utils';\n\nimport { HeNodeService } from '../../node/node.service';\nimport { termLocation, termLocationName } from '../../terms/terms.model';\nimport { clustererImage, createMarker, polygonsFromFeature, polygonBounds, strokeStyle } from '../../common/maps-utils';\nimport { baseUrl, waitFor } from '../../common/utils';\n\ntype site = ISiteJSONLD | Site | IOrganisationJSONLD | Organisation;\n\nconst isSite = ({ '@type': type, '@id': id }: any) => type === NodeType.Site && !!id;\n\nconst siteLocation = ({ latitude, longitude }: site) => latitude && longitude ? ({\n lat: latitude,\n lng: longitude\n}) : undefined;\n\nconst siteDefaultLocation = ({ region, country }: site) => {\n const markers = [\n region ? createMarker(termLocation(region), termLocationName(region).name, undefined, 20) : undefined,\n country ? createMarker(termLocation(country), termLocationName(country).name, undefined, 40) : undefined\n ].filter(Boolean);\n return (markers.length ? markers[0] : undefined) as google.maps.Marker;\n};\n\nconst siteMarker = (site: site) => createMarker(site ? siteLocation(site) : undefined, site.name);\n\nconst sitePolygon = ({ boundary }: site) => (\n boundary ? polygonsFromFeature(boundary) : undefined\n) as google.maps.Polygon[];\n\nconst regions = (sites: site[]): string[] => unique(\n sites.map(({ country, region }) => region ? region['@id'] : (country ? country['@id'] : null)).filter(Boolean)\n);\n\nconst defaultCenter = { lat: 0, lng: 0 };\n\n@Component({\n selector: 'he-sites-maps',\n templateUrl: './sites-maps.component.html',\n styleUrls: ['./sites-maps.component.scss']\n})\nexport class SitesMapsComponent<C extends JSONLD<T>, T extends NodeType> implements OnInit, AfterViewInit {\n public loaded = false;\n\n @ViewChild(GoogleMap)\n private map?: GoogleMap;\n @Input()\n private loadPolygons = true;\n @Input()\n private sites: site[] = [];\n @Input()\n private nodes: C[] = [];\n @Input()\n public center = defaultCenter;\n @Input()\n public zoom = 2;\n @Input()\n public showNotice = true;\n\n public googleLoaded = false;\n public showNoLocation = false;\n\n constructor(\n private nodeService: HeNodeService\n ) { }\n\n ngOnInit() {\n waitFor('google', () => {\n this.googleLoaded = true;\n setTimeout(() => !this.loaded && this.loadData());\n });\n }\n\n ngAfterViewInit() {\n return this.googleLoaded && this.loadData();\n }\n\n private async loadData() {\n // loaded data as geojson\n this.map!.googleMap!.data.setStyle(() => ({ ...strokeStyle, strokeOpacity: 0.1 }));\n\n const sites = await this.getSites();\n const markers = this.addSiteMarkers(sites);\n // add the site.boundary if exist\n const polygons = sites.flatMap(sitePolygon).filter(Boolean);\n polygons.map(polygon => polygon?.setMap(this.map!.googleMap!));\n this.loaded = true;\n\n // add the default site polygons from GADM region if any\n const termPolygons = (await Promise.all(regions(sites).map(v => this.addTermsPolygons(v)))).flat();\n\n this.showNoLocation = markers.length === 0 && polygons.length === 0 && termPolygons.length === 0;\n return markers.length ?\n this.centerMarker(markers[0]!) :\n this.centerPolygons(polygons.length ? polygons : termPolygons);\n }\n\n private addMarkers(markers: google.maps.Marker[], cluster = false) {\n return cluster ?\n new MarkerClusterer(this.map!.googleMap!, markers, { imagePath: clustererImage }) :\n markers.map(marker => marker.setMap(this.map!.googleMap!));\n }\n\n private async addTermsPolygons(id: string) {\n return this.loadPolygons ? await this.termPolygons(id) : [];\n }\n\n private centerMarker(marker: google.maps.Marker) {\n const center = marker.getPosition();\n this.center = center ? { lat: center.lat(), lng: center.lng() } : defaultCenter;\n }\n\n private centerPolygons(polygons: google.maps.Polygon[]) {\n try {\n return polygons.length ? this.map!.googleMap!.fitBounds(polygonBounds(polygons)) : null;\n }\n catch (err) {\n if (polygons.length) {\n this.map!.googleMap!.fitBounds(polygonBounds(polygons[0]));\n this.zoom = 3;\n }\n }\n }\n\n private addSiteMarkers(sites: site[]) {\n const siteMarkers = sites.map(siteMarker).filter(Boolean);\n const markers = siteMarkers.length ? siteMarkers : sites.map(siteDefaultLocation).filter(Boolean);\n this.addMarkers(markers, !!siteMarkers.length);\n return markers;\n }\n\n private async loadSite(node: any) {\n // means the site was already downloaded\n return 'schemaVersion' in node ? node : await this.nodeService.get<ISiteJSONLD | IOrganisationJSONLD>(node);\n }\n\n private async siteData(node: any) {\n return [\n NodeType.Site,\n NodeType.Organisation\n ].includes(node.type) ? node : (\n isSite(node) ?\n this.loadSite(node) : (\n 'site' in node && isSite(node.site) ?\n this.loadSite(node.site) :\n this.siteData(await this.loadSite(node))\n )\n );\n }\n\n private getSites(): Promise<site[]> {\n const nodes: any[] = this.sites && this.sites.length ? this.sites : this.nodes;\n return Promise.all(nodes.map(node => this.siteData(node)));\n }\n\n private async termPolygons(id: string) {\n try {\n const data = await this.nodeService.downloadRaw(`${baseUrl()}/gadm/${id}.geojson`);\n const polygons = polygonsFromFeature(data);\n polygons.map(polygon => polygon.setMap(this.map!.googleMap!));\n return polygons;\n }\n catch (_err) {\n // ignore error if the file does not exist\n return [];\n }\n }\n}\n","<google-map *ngIf=\"googleLoaded\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"center\"\n></google-map>\n\n<p *ngIf=\"showNotice\" class=\"mt-2 is-italic is-size-7\">The information provided might not be complete</p>\n\n<div class=\"no-location has-text-center has-text-light\" *ngIf=\"showNoLocation\">\n <span>No precise location data</span>\n</div>\n","import { NodeType, ISiteJSONLD, Measurement } from '@hestia-earth/schema';\n\nimport { IGroupedNode, propertyValue } from '../common/utils';\n\nexport interface ISiteJSONLDExtended extends ISiteJSONLD {\n related: {\n [type in NodeType]?: string[];\n };\n}\n\nexport const maxAreaSize = 5000;\n\nexport const siteTooBig = ({ area }: ISiteJSONLD) => area && area / 100 > maxAreaSize;\n\nconst hasMultipleValues = (values: any[]) => (values || []).length > 1;\n\nconst weighedAverage = ({ value, depthLower, depthUpper }: Partial<IGroupedNode<Measurement>>) =>\n value!.reduce((prev, curr, index) => prev + (curr * (depthLower![index] - depthUpper![index])), 0) /\n value!.reduce((prev, _curr, index) => prev + (depthLower![index] - depthUpper![index]), 0);\n\nexport const measurementValue = ({ value, depthLower, depthUpper }: IGroupedNode<Measurement>) =>\n hasMultipleValues(value) && hasMultipleValues(depthLower!) && hasMultipleValues(depthUpper!) ?\n weighedAverage({ value, depthLower, depthUpper }) :\n propertyValue(value);\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ISiteJSONLD, ITermJSONLD, Measurement, NodeType, TermTermType } from '@hestia-earth/schema';\nimport { DataState } from '@hestia-earth/api';\n\nimport { matchTermType, matchType } from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { HeNodeService } from '../../node/node.service';\n\n@Component({\n selector: 'he-sites-measurements-logs',\n templateUrl: './sites-measurements-logs.component.html',\n styleUrls: ['./sites-measurements-logs.component.scss']\n})\nexport class SitesMeasurementsLogsComponent implements OnInit {\n @Input()\n public site?: ISiteJSONLD;\n @Input()\n public originalValues: Measurement[] = [];\n @Input()\n public recalculatedValues: Measurement[] = [];\n\n public loading = true;\n public NodeType = NodeType;\n public logsUrl?: string;\n public logs: any;\n public models: ITermJSONLD[] = [];\n public measurements: ITermJSONLD[] = [];\n\n constructor(\n private searchService: HeSearchService,\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.logsUrl = this.nodeService.nodeLogsUrl(this.node);\n this.logs = await this.nodeService.getModelsLog(this.node);\n\n const { results: measurements } = await this.searchService.search<ITermJSONLD, NodeType.Term>({\n fields: ['@type', '@id', 'name'],\n limit: 1000,\n query: {\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.measurement)\n ]\n }\n }\n });\n this.measurements = measurements;\n\n this.loading = false;\n }\n\n private get node() {\n return {\n ...this.site,\n dataState: DataState.recalculated\n };\n }\n}\n","<he-node-logs-models *ngIf=\"!loading; else loader\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.Site\"\n [originalValues]=\"originalValues\"\n [recalculatedValues]=\"recalculatedValues\"\n [terms]=\"measurements\"\n [logs]=\"logs\"\n filteredType=\"Measurement\"\n></he-node-logs-models>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { ISiteJSONLD, Measurement } from '@hestia-earth/schema';\nconst orderBy = require('lodash.orderby');\n\nimport { measurementValue, maxAreaSize, siteTooBig } from '../sites.model';\nimport { defaultLabel, groupNodesByTerm, IGroupedKeys, grouppedKeys } from '../../common/utils';\n\nenum View {\n table = 'table',\n logs = 'logs'\n}\n\n@Component({\n selector: 'he-sites-measurements',\n templateUrl: './sites-measurements.component.html',\n styleUrls: ['./sites-measurements.component.scss']\n})\nexport class SitesMeasurementsComponent implements OnChanges {\n @Input()\n public originalValues: ISiteJSONLD[] = [];\n @Input()\n public sites: ISiteJSONLD[] = [];\n @Input()\n public dataState?: DataState;\n\n public showDownload = false;\n public View = View;\n public selectedView = View.table;\n public maxAreaSize = maxAreaSize;\n public siteTooBig = siteTooBig;\n public defaultLabel = defaultLabel;\n public measurementValue = measurementValue;\n\n public measurements: IGroupedKeys<Measurement>[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if ('sites' in changes) {\n return this.update();\n }\n if ('dataState' in changes) {\n this.selectedView = View.table;\n }\n }\n\n public trackById(_index: number, item: ISiteJSONLD) {\n return item['@id'];\n }\n\n public get isOriginal() {\n return this.dataState === DataState.original;\n }\n\n private update() {\n const measurementsPerSite = groupNodesByTerm<ISiteJSONLD, Measurement>(\n this.sites, 'measurements', this.originalValues\n );\n this.measurements = orderBy(grouppedKeys(measurementsPerSite), ['key'], ['asc']);\n }\n\n public togglePopover(popover, context) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n public get showAreaTooBig() {\n return this.dataState === DataState.recalculated && (this.sites || []).some(siteTooBig);\n }\n}\n","<ng-container *ngIf=\"measurements.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-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\" *ngIf=\"!isOriginal && sites.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{measurements.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let measurement of measurements\"\n [attr.title]=\"measurement.value.term.name\"\n >\n <he-node-link [node]=\"measurement.value.term\">\n <span>{{measurement.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let measurement of measurements\"\n [attr.title]=\"measurement.value.term.units\"\n >{{measurement.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let site of sites; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(site)\">\n <he-node-link [node]=\"site\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(site)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let measurement of measurements\">\n <span *ngIf=\"measurement.value.values[site['@id']]\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: measurement.value.values[site['@id']], site: site, key: 'measurements' })\"\n >\n <span pointer>{{measurementValue(measurement.value.values[site['@id']]) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"measurement.value.values[site['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n <span *ngIf=\"!measurement.value.values[site['@id']]\">\n <span>-</span>\n <sup class=\"pl-1\" *ngIf=\"siteTooBig(site)\">(1)</sup>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n\n <p class=\"is-size-7 is-italic\" *ngIf=\"showAreaTooBig\">\n (1) This region is >{{maxAreaSize}}km2 and is too large to reliably gap fill Measurements.\n </p>\n </div>\n\n <he-sites-measurements-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [site]=\"sites[0]\"\n [originalValues]=\"originalValues[0].measurements\"\n [recalculatedValues]=\"sites[0].measurements\"\n ></he-sites-measurements-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"sites\" filename=\"site-measurements.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['site.id', 'site.@id', 'site.measurements.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\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=\"site\" let-data=\"data\" let-key=\"key\">\n <p><b>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { HeCommonModule } from '../common/common.module';\nimport { HeNodeModule } from '../node/node.module';\n\nimport { SitesMapsComponent } from './sites-maps/sites-maps.component';\nimport { SitesMeasurementsComponent } from './sites-measurements/sites-measurements.component';\nimport { SitesMeasurementsLogsComponent } from './sites-measurements-logs/sites-measurements-logs.component';\n\nconst components = [\n SitesMapsComponent,\n SitesMeasurementsComponent,\n SitesMeasurementsLogsComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, ReactiveFormsModule,\n HeCommonModule,\n HeNodeModule\n ]\n})\nexport class HeSitesModule { }\n","import { Injectable } from '@angular/core';\nimport { User } from '@hestia-earth/api';\n\nconst user = {} as User;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeUsersService {\n public get loggedInUser() {\n return Promise.resolve(user);\n }\n}\n","/* eslint-disable complexity */\nimport { Component, OnInit, Input, Output, EventEmitter, ElementRef } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport * as pluralize from 'pluralize';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nconst get = require('lodash.get');\nimport { JSON as HestiaJson, SchemaType, NodeType, Bibliography, Source } from '@hestia-earth/schema';\nimport { definitions, definition } from '@hestia-earth/json-schema';\nimport { isEmpty } from '@hestia-earth/utils';\n\nimport {\n IErrorProperty, INodeProperty,\n formatPropertyError, propertyError, hasError, hasWarning,\n formatSuggestion, formatLinkNodesSuggestions, suggestionType, defaultSuggestionType,\n recursiveProperties, typeToNewProperty, propertyId,\n isAddPropertyEnabled, nodeAvailableProperties, sortProperties,\n groupChanged, parentProperty, siblingProperty, updateProperties, refreshPropertyKeys, keyToDataPath, findProperty,\n calculateCycleDurationEnabled, calculateCycleDuration,\n calculateCycleStartDateEnabled, calculateCycleStartDate, parseNewValue\n} from '../files-form.model';\nimport { IValidationError, errorHasError, errorHasWarning, filterError, formatError } from '../files-error.model';\nimport { HeUsersService } from '../../users/users.service';\nimport { HeSearchService } from '../../search/search.service';\nimport { matchType, matchPhraseQuery, matchPhrasePrefixQuery, matchBoolPrefixQuery } from '../../search/search.model';\nimport { safeJSONParse } from '../../common/utils';\n\nconst MIN_TYPEAHEAD_LENGTH = 2;\nconst populateTermFields = [\n 'termType', 'units',\n 'defaultProperties.term.name', 'defaultProperties.term.units', 'defaultProperties.value'\n];\n\ntype suggestFunc = (term: string, property: INodeProperty) => Observable<any[]>;\n\n@Component({\n selector: 'he-files-form',\n templateUrl: './files-form.component.html',\n styleUrls: ['./files-form.component.scss']\n})\nexport class FilesFormComponent implements OnInit {\n @Input()\n private schemas?: definitions;\n @Input()\n private errors: IValidationError[] = [];\n @Input()\n public node?: HestiaJson<SchemaType>;\n @Input()\n public nodeMap: { [type in NodeType]?: string[] } = {};\n @Input()\n public editable = false;\n @Input()\n public errorMode = false;\n @Input()\n public deepEditable = true;\n @Input()\n public errorsEditable = false;\n\n @Output()\n private nodeChange = new EventEmitter<{ key: string; value: any }>();\n @Output()\n private nodeErorrResolved = new EventEmitter<number>();\n @Output()\n private nodeErrorAdded = new EventEmitter<IValidationError>();\n\n public NodeType = NodeType;\n public SchemaType = SchemaType;\n public isOpen = true;\n public mapVisible = false;\n public pluralize = pluralize;\n public formatPropertyError = formatPropertyError;\n public mapDrawingProperty?: INodeProperty;\n public bibliographiesSearchProperty?: INodeProperty;\n public nodeProperty?: INodeProperty;\n public properties: INodeProperty[] = [];\n\n public formatter = (value: any) =>\n typeof value === 'object' ? ('bibliography' in value ? value.bibliography?.title : value.name) : value;\n\n public suggestNewProperty = (fullKey: string) => (text$: Observable<string>) =>\n text$.pipe(\n distinctUntilChanged(),\n switchMap(\n term => of(this.newProperties(findProperty(this.properties, fullKey) || this.nodeProperty, term))\n )\n );\n\n private suggestExistingNode = (type: NodeType, term: string, uniqueKey = '@id') =>\n term.length < MIN_TYPEAHEAD_LENGTH ?\n of([]) :\n this.searchService.suggest(term, type, [], {\n bool: {\n must: [matchType(type)],\n should: [\n matchPhraseQuery(term, 100, uniqueKey),\n matchPhrasePrefixQuery(term, 20, uniqueKey),\n matchBoolPrefixQuery(term, 10, uniqueKey)\n ],\n minimum_should_match: 1\n }\n }, 5, populateTermFields);\n\n private suggestNode = (type: NodeType, suggestDefault?: suggestFunc) => (term: string, property: INodeProperty) =>\n (property.suggestions?.isUniqueKey ? (\n this.suggestExistingNode(type, term, property.suggestions.isUniqueKey)\n ) : (\n property.suggestions?.isLinkNode ?\n of(formatLinkNodesSuggestions(this.nodeMap, type)) : (\n suggestDefault ? suggestDefault(term, property) : of([])\n )\n )).pipe(\n map((res: any) => res.map(formatSuggestion))\n );\n\n private suggester: {\n [type in suggestionType]?: suggestFunc;\n } = {\n default: (term, property) => of(\n (property?.suggestions?.values || [])\n .map(v => `${v}`)\n .filter(v => v.toLowerCase().includes(term.toLowerCase()))\n .map(name => ({ name }))\n ),\n [NodeType.Actor]: this.suggestNode(NodeType.Actor),\n [NodeType.Cycle]: this.suggestNode(NodeType.Cycle),\n [NodeType.ImpactAssessment]: this.suggestNode(NodeType.ImpactAssessment),\n [NodeType.Organisation]: this.suggestNode(NodeType.Organisation),\n [NodeType.Site]: this.suggestNode(NodeType.Site),\n [NodeType.Source]: this.suggestNode(NodeType.Source, (term, { key }) =>\n term.length < MIN_TYPEAHEAD_LENGTH ?\n of([]) :\n this.searchService.suggestSource(term, 5, [`bibliography.${key}`], [`bibliography.${key}`])\n ),\n [NodeType.Term]: this.suggestNode(NodeType.Term, (term, { suggestions }) =>\n term.length < MIN_TYPEAHEAD_LENGTH ?\n of([]) :\n this.searchService.suggest(term, NodeType.Term, suggestions?.queries || [], null, 5, populateTermFields)\n )\n };\n public propertySuggest = (fullKey: string, suggestType: suggestionType) => (text$: Observable<string>) =>\n text$.pipe(\n debounceTime(suggestType === defaultSuggestionType ? 0 : 300),\n distinctUntilChanged(),\n mergeMap(term => {\n const property = findProperty(this.properties, fullKey);\n return property?.editable && suggestType in this.suggester ?\n of(term).pipe(\n tap(() => property.loading = true),\n switchMap(() => this.suggester[suggestType]!(term, property)),\n tap(() => property.loading = false)\n ) :\n of([]);\n }),\n );\n\n constructor(\n public ref: ElementRef,\n private searchService: HeSearchService,\n private usersService: HeUsersService\n ) { }\n\n ngOnInit() {\n const schemaType = this.node!.type || this.node!['@type'];\n const schema = this.schemas ? this.schemas[schemaType] : {} as definition;\n const errors = this.errors.filter(filterError);\n const error = propertyError(errors)('');\n this.nodeProperty = this.schemas ? {\n id: propertyId(),\n schema,\n schemaType,\n editable: !!this.node!.type,\n fullKey: '',\n key: '',\n value: {},\n error: formatError(error),\n hasError: errorHasError(error),\n hasWarning: errorHasWarning(error),\n suggestions: {},\n newProperty: {},\n newError: { level: 'warning' },\n properties: [],\n addPropertyEnabled: isAddPropertyEnabled(this.node!, schemaType, schema)\n } : undefined;\n const recurser = recursiveProperties(this.schemas!, errors, schema, this.deepEditable);\n this.properties = recurser(this.node);\n }\n\n public trackByIndex(index: number, _value: any) {\n return index;\n }\n\n public trackByProperty(_index: number, { id, fullKey }: INodeProperty) {\n return [fullKey, id].join('_');\n }\n\n public hasAddons(property: INodeProperty) {\n return property && (\n this.enableAddError(property) ||\n (this.editable && property.editable) ||\n this.addPropertyEnabled(property) ||\n this.isRequired(property) ||\n property.externalUrl?.url ||\n this.mapDrawingModes(property).length ||\n this.unitConverterEnabled(property)\n );\n }\n\n public isRequired({ value, isRequired }: INodeProperty) {\n return isRequired && isEmpty(value);\n }\n\n // --- Errors\n\n public enableAddError(property: INodeProperty) {\n return this.errorsEditable && !property.hasError && !property.hasWarning;\n }\n\n public addError(property: INodeProperty, { message, level }: IErrorProperty) {\n if (!message) {\n return;\n }\n const keys = property.fullKey.split('.');\n keys.pop();\n const error: IValidationError = property.isAdded ? {\n message,\n level: level || 'error',\n dataPath: keyToDataPath(keys.join('.')),\n params: {\n missingProperty: property.key\n }\n } : {\n message,\n level: level || 'error',\n dataPath: keyToDataPath(property.fullKey)\n };\n property.newError = { level: 'warning' };\n property.error = error;\n property.hasError = errorHasError(error);\n property.hasWarning = errorHasWarning(error);\n this.nodeErrorAdded.emit(error);\n }\n\n public editError(property: INodeProperty) {\n property.newError = property.error;\n }\n\n public resolveError(property: INodeProperty) {\n const index = property.error?.index;\n property.error = undefined;\n property.hasError = hasError(property.properties);\n property.hasWarning = hasWarning(property.properties);\n this.nodeErorrResolved.emit(index);\n return groupChanged(this.properties, property.fullKey);\n }\n\n // ---\n\n public typeaheadFocus(e: Event) {\n if (e.bubbles) {\n return;\n }\n e.stopPropagation();\n setTimeout(() => {\n const inputEvent = new Event('input');\n e.target?.dispatchEvent(inputEvent);\n }, 0);\n }\n\n public addPropertyEnabled(property: INodeProperty) {\n return this.editable && !this.errorsEditable && property.addPropertyEnabled;\n }\n\n private newProperties(property: INodeProperty, field: string) {\n const properties = nodeAvailableProperties(this.node!, property);\n return Object.keys(properties)\n .filter(prop => prop.toLowerCase().includes(field.toLowerCase()))\n .map(name => ({ name, prop: properties[name] }));\n }\n\n private replacePropertyData(property: INodeProperty, data: any, editable?: boolean, replaceParent = true) {\n const parent = replaceParent ? parentProperty(this.properties, property) : property;\n const properties = recursiveProperties(\n this.schemas!, [], this.schemas![this.node!.type], this.deepEditable, parent.fullKey\n )(data);\n updateProperties({ properties }, prop => {\n prop.editable = typeof editable === 'undefined' ? prop.editable : editable;\n return prop;\n });\n parent.editable = typeof editable === 'undefined' ? parent.editable : editable;\n parent.properties = properties;\n parent.value = data;\n return this.propertyChanged(data, parent);\n }\n\n public suggestionSelected({ '@id': _id, name, type, id, ...data }, property: INodeProperty) {\n return _id ?\n // suggestions from existing nodes\n this.replacePropertyData(property, { '@id': _id, '@type': property.suggestions?.type, name, ...data }, false) :\n (\n // suggestion from linked nodes\n type && id ?\n this.replacePropertyData(property, { type, id, ...data }, true) :\n // suggestion by name => enum values\n this.propertyChanged(name, property)\n );\n }\n\n public addArrayGroup(array: INodeProperty) {\n const prop = this.schemas![array.schemaType];\n const value = get(this.node, array.fullKey);\n const newProperty = typeToNewProperty(\n this.schemas!, prop, prop, value, `${array.fullKey}[${array.properties.length}]`\n );\n array.properties.push(newProperty);\n this.nodeChange.emit({ key: array.fullKey, value });\n return groupChanged(this.properties, array.fullKey);\n }\n\n public duplicateArrayGroup(array: INodeProperty, property: INodeProperty) {\n const index = +property.key;\n const newProperty: INodeProperty = JSON.parse(JSON.stringify(property));\n newProperty.id = propertyId();\n const value = [...get(this.node, array.fullKey)];\n value.splice(index, 0, safeJSONParse(newProperty.value));\n array.properties.splice(index, 0, newProperty);\n // need to change key on every properties recursively\n refreshPropertyKeys(array);\n this.nodeChange.emit({ key: array.fullKey, value });\n return groupChanged(this.properties, array.fullKey);\n }\n\n public removeArrayGroup(array: INodeProperty, { key }: INodeProperty) {\n const index = +key;\n const value = [...get(this.node, array.fullKey)];\n value.splice(index, 1);\n array.properties.splice(index, 1);\n // need to change key on every properties recursively\n refreshPropertyKeys(array);\n this.nodeChange.emit({ key: array.fullKey, value });\n // if no more values, remove parent group entirely\n return array.properties.length ? null : this.propertyChanged(null, array);\n }\n\n private moveArrayGroupToPosition(array: INodeProperty, currentIndex: number, newIndex: number) {\n const value = [...get(this.node, array.fullKey)];\n moveItemInArray(value, currentIndex, newIndex);\n moveItemInArray(array.properties, currentIndex, newIndex);\n // need to change key on every properties recursively\n refreshPropertyKeys(array);\n this.nodeChange.emit({ key: array.fullKey, value });\n return groupChanged(this.properties, array.fullKey);\n }\n\n public moveArrayGroupUp(array: INodeProperty, { key }: INodeProperty) {\n const index = +key;\n return this.moveArrayGroupToPosition(array, index, index - 1);\n }\n\n public moveArrayGroupDown(array: INodeProperty, { key }: INodeProperty) {\n const index = +key;\n return this.moveArrayGroupToPosition(array, index, index + 1);\n }\n\n public propertyChanged(value: any, property: INodeProperty) {\n groupChanged(this.properties, property.fullKey, value);\n property.addPropertyEnabled = isAddPropertyEnabled(\n this.node!, property.schemaType, property.schema!, property.fullKey\n );\n\n if (value === null) {\n value = undefined;\n }\n else {\n property.value = value;\n property.changed = true;\n }\n\n this.nodeChange.emit({ key: property.fullKey, value: parseNewValue(property.schema!, value) });\n }\n\n private addDefaultProperty(property: INodeProperty, key: string, def: definition) {\n const node = property.key ? get(this.node, property.fullKey) : this.node;\n const fullKey = property.key ? `${property.fullKey}.${key}` : key;\n const properties = property.key ? property.properties : this.properties;\n const newProperty = typeToNewProperty(this.schemas!, def, this.schemas![property.schemaType], node, fullKey);\n const existingPropertyIndex = properties.findIndex(v => v.fullKey === fullKey);\n existingPropertyIndex >= 0 ? (properties[existingPropertyIndex] = newProperty) : properties.push(newProperty);\n properties.sort(sortProperties);\n return this.propertyChanged(newProperty.value, newProperty);\n }\n\n public addMissingProperty(property: INodeProperty) {\n const parent = parentProperty(this.properties, property);\n const newProperty = parent === property ? this.nodeProperty! : parent;\n const newProperties = this.newProperties(newProperty, property.key);\n newProperty.newProperty = newProperties[0];\n return newProperty.newProperty ? this.addProperty(newProperty) : null;\n }\n\n public addProperty(property: INodeProperty) {\n const { name, prop } = property.newProperty!;\n property.newProperty = {};\n return name === '@id' ?\n this.replacePropertyData(property, { '@id': '', type: property.schemaType }, undefined, false) :\n this.addDefaultProperty(property, name!, prop!);\n }\n\n private updatePropertyCoordinates(property: INodeProperty, value: google.maps.LatLngLiteral) {\n const latitude = siblingProperty(this.properties, property, 'latitude');\n const longitude = siblingProperty(this.properties, property, 'longitude');\n return [\n latitude ? this.propertyChanged(value.lat, latitude) : null,\n longitude ? this.propertyChanged(value.lng, longitude) : null\n ];\n }\n\n // Map\n\n public get showMap() {\n return (!this.editable || this.errorMode) && [SchemaType.Site, SchemaType.Organisation].includes(this.node!.type);\n }\n\n public mapDrawingModes({ key }: INodeProperty) {\n return ['boundary'].includes(key) ? [\n google.maps.drawing.OverlayType.POLYGON\n ] : ([\n 'latitude', 'longitude'\n ].includes(key) ? [\n google.maps.drawing.OverlayType.MARKER\n ] : []);\n }\n\n public onMapDrawingClosed(newValue) {\n const property = this.mapDrawingProperty;\n this.mapDrawingProperty = undefined;\n return ['latitude', 'longitude'].includes(property!.key) ?\n this.updatePropertyCoordinates(property!, newValue) :\n this.propertyChanged(newValue, property!);\n }\n\n // Bibliography Search\n\n public bibliographiesSearchKey({ key, schemaType }: INodeProperty) {\n const validSchema = [SchemaType.Bibliography].includes(schemaType);\n const valieKey = ['title', 'documentDOI', 'scopus'].includes(key);\n return validSchema && valieKey ? key : null;\n }\n\n private updateBibliography(value: Partial<Bibliography>) {\n const parent = parentProperty(this.properties, this.bibliographiesSearchProperty!);\n const newValue = this.bibliographiesSearchSources ? {\n ...parent.value,\n bibliography: value\n } : value;\n this.replacePropertyData(this.bibliographiesSearchProperty!, newValue, true);\n return undefined;\n }\n\n private updateSource(value: Partial<Source>) {\n // cannot replace a top-level source\n this.bibliographiesSearchSources && this.replacePropertyData(this.bibliographiesSearchProperty!, {\n '@type': NodeType.Source,\n ...value\n }, !('@id' in value));\n return undefined;\n }\n\n public get bibliographiesSearchSources() {\n return this.bibliographiesSearchProperty!.fullKey.split('.').length > 2;\n }\n\n public onBibliographiesSearchClosed(value?: Partial<Source> | Partial<Bibliography>) {\n this.bibliographiesSearchProperty = value ? (\n value.type === SchemaType.Bibliography ?\n this.updateBibliography(value) :\n this.updateSource(value as Partial<Source>)\n ) : undefined;\n }\n\n // Actor.@id\n\n public async setUserActorId(property: INodeProperty) {\n const { actorId, name } = await this.usersService.loggedInUser;\n return this.replacePropertyData(property, { '@id': actorId, '@type': NodeType.Actor, name }, false);\n }\n\n // Cycle.cycleDuration\n\n public calculateCycleDurationEnabled(property: INodeProperty) {\n return calculateCycleDurationEnabled(this.properties, property);\n }\n\n public calculateCycleDuration(property: INodeProperty) {\n const duration = calculateCycleDuration(this.properties, property);\n return this.propertyChanged(duration, property);\n }\n\n // Cycle.startDate\n\n public calculateCycleStartDateEnabled(property: INodeProperty) {\n return calculateCycleStartDateEnabled(this.properties, property);\n }\n\n public calculateCycleStartDate(property: INodeProperty) {\n const startDate = calculateCycleStartDate(this.properties, property);\n return this.propertyChanged(startDate, property);\n }\n\n // Units converter\n\n public unitConverterEnabled(property: INodeProperty) {\n return this.editable && property.editable && ['value', 'min', 'max', 'sd'].includes(property.key);\n }\n\n public openUnitConverter(popover, property: INodeProperty) {\n const value = property.value;\n const termProperty = siblingProperty(this.properties, property, 'term');\n const term = safeJSONParse(termProperty?.value);\n const units = term?.units;\n return popover.isOpen() ? popover.close() : popover.open({ value, term, units });\n }\n}\n","<div class=\"card\">\n <div class=\"card-toggle p-4\" (click)=\"isOpen = !isOpen\" pointer>\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!isOpen\"></fa-icon>\n <fa-icon icon=\"angle-right\" [class.is-hidden]=\"isOpen\"></fa-icon>\n <span *ngIf=\"nodeProperty\" class=\"is-px-2\"\n [class.has-text-danger]=\"nodeProperty.hasError\"\n [class.has-text-warning]=\"nodeProperty.hasWarning\"\n >\n <he-node-icon [type]=\"nodeProperty.schemaType\"></he-node-icon>\n </span>\n </div>\n\n <ng-container *ngIf=\"editable && isOpen && nodeProperty\">\n <ng-container *ngTemplateOutlet=\"showNewProperty; context: {$implicit: nodeProperty}\"></ng-container>\n </ng-container>\n\n <div class=\"card-content\">\n <ng-container *ngIf=\"isOpen\">\n <div class=\"pb-3 mb-2\" *ngIf=\"errorsEditable\">\n <ng-container *ngTemplateOutlet=\"nodeErrorForm; context: {$implicit: nodeProperty}\"></ng-container>\n </div>\n\n <div class=\"mb-4\" *ngIf=\"nodeProperty?.error\">\n <ng-container *ngTemplateOutlet=\"propertyError; context: {property: nodeProperty, edit: true}\"></ng-container>\n </div>\n </ng-container>\n\n <div class=\"columns is-multiline\">\n <ng-container *ngFor=\"let property of properties; trackBy: trackByProperty\">\n <ng-container *ngTemplateOutlet=\"showProperty; context: {$implicit: property}\"></ng-container>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"isOpen\">\n <ng-container *ngTemplateOutlet=\"propertyMap; context: {$implicit: nodeProperty}\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<he-maps-drawing-confirm *ngIf=\"!!mapDrawingProperty\"\n [value]=\"mapDrawingProperty.value\" [modes]=\"mapDrawingModes(mapDrawingProperty)\"\n (closed)=\"onMapDrawingClosed($event)\"\n></he-maps-drawing-confirm>\n\n<he-bibliographies-search-confirm *ngIf=\"!!bibliographiesSearchProperty\"\n [search]=\"bibliographiesSearchProperty.value\"\n [searchBy]=\"bibliographiesSearchKey(bibliographiesSearchProperty)\"\n [searchSources]=\"bibliographiesSearchSources\"\n (closed)=\"onBibliographiesSearchClosed($event)\"\n></he-bibliographies-search-confirm>\n\n<ng-template #labelDescription let-property>\n <span\n class=\"trigger-popover\"\n [ngbPopover]=\"property.schema?.description\" [autoClose]=\"'outside'\"\n triggers=\"hover\" placement=\"right\" container=\"body\"\n >\n <span>{{property.key}}</span>\n </span>\n</ng-template>\n\n<ng-template #labelDefault let-property>\n <span>{{property.key}}</span>\n</ng-template>\n\n<ng-template #showProperty let-property>\n <ng-container *ngIf=\"(isOpen || property.closedVisible) && !property.isHidden\">\n <div class=\"column is-6\"\n [id]=\"property.fullKey + '_' + property.id\"\n [class.is-12]=\"property.properties.length || !property.key\"\n [ngSwitch]=\"!!property.properties.length\"\n >\n <div class=\"columns is-multiline is-variable is-1\" *ngSwitchCase=\"false\">\n <div class=\"column is-3 py-1\" *ngIf=\"property.key\">\n <label class=\"label has-text-right-tablet has-text-ellipsis\"\n *bindOnce=\"property\"\n [for]=\"property.id\"\n >\n <ng-container\n *ngTemplateOutlet=\"property.schema?.description && editable && property.editable ? labelDescription : labelDefault; context: {$implicit: property}\">\n </ng-container>\n </label>\n </div>\n\n <div class=\"column is-9 py-1\" [class.is-12]=\"!property.key\">\n <div class=\"field\">\n <ng-container *ngTemplateOutlet=\"inputForm; context: {$implicit: property}\"></ng-container>\n\n <ng-container *ngIf=\"(editable || errorsEditable) && (property.hasError || property.hasWarning)\">\n <ng-container *ngTemplateOutlet=\"propertyError; context: {property: property, edit: false}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div class=\"panel\" *ngSwitchCase=\"true\"\n [class.is-link]=\"errorMode && property.changed\"\n [class.is-danger]=\"!property.changed && property.hasError\"\n [class.is-warning]=\"!property.changed && property.hasWarning\"\n [class.is-default]=\"!property.changed && !property.hasError && !property.hasWarning\"\n >\n <div class=\"open-group panel-heading py-0\"\n (click)=\"property.isOpen = !property.isOpen\" pointer\n [class.is-open]=\"property.isOpen\"\n [class.has-text-white]=\"(errorMode && property.changed) || property.hasError || property.hasWarning\"\n >\n <div class=\"columns is-mobile is-vcentered\">\n <span class=\"column is-narrow py-1 my-0\">\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!property.isOpen\"></fa-icon>\n <fa-icon icon=\"angle-right\" [class.is-hidden]=\"property.isOpen\"></fa-icon>\n </span>\n <span class=\"column py-1 my-0\">\n <span class=\"is-size-6\">{{property.key}}</span>\n </span>\n <span *ngIf=\"property.schemaType\" class=\"column is-narrow py-1 my-0\">\n <span class=\"tags mb-0 has-addons\">\n <span class=\"tag mb-0 is-light\">Type</span>\n <span class=\"tag mb-0 is-white\">\n <he-schema-version-link linkClass=\"is-small\" [node]=\"{'@type': property.schemaType}\">\n <span>{{property.schemaType}}</span>\n </he-schema-version-link>\n </span>\n </span>\n </span>\n <he-popover-confirm class=\"column is-narrow py-1 my-0 px-0\"\n *ngIf=\"editable && !errorsEditable\"\n ngbTooltip=\"Remove group\" placement=\"top\"\n [message]=\"'<p>This will remove the group completely.</p>' + (property.isRequired ? '<p><u>Warning: this field is required.</u></p>' : '') + '<p>Do you confirm?</p>'\"\n popoverClass=\"px-3\"\n (confirmed)=\"propertyChanged(null, property)\"\n >\n <fa-icon icon=\"times\" size=\"sm\"></fa-icon>\n </he-popover-confirm>\n </div>\n </div>\n <div class=\"panel-block is-block p-0\" *ngIf=\"property.isOpen\">\n <ng-container [ngSwitch]=\"property.isArray\">\n <div class=\"px-3 pt-4\" *ngIf=\"property.error\">\n <ng-container *ngTemplateOutlet=\"propertyError; context: {property: property, edit: true}\"></ng-container>\n </div>\n\n <div class=\"mt-3\" *ngSwitchCase=\"false\">\n <p class=\"help py-1 px-2\" *ngIf=\"editable && !property.editable\">\n To change the {{property.key}}, please delete it first, then add the field again\n </p>\n <ng-container *ngIf=\"editable && property.editable\">\n <ng-container [ngSwitch]=\"property.schema?.title\">\n <p class=\"help py-1 px-2\" *ngSwitchCase=\"'Bibliography'\">\n Search by Title or Document DOI to auto-populate the fields using the Mendeley catalogue\n </p>\n </ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"showNewProperty; context: {$implicit: property}\"></ng-container>\n\n <div class=\"px-3 mt-1\" *ngIf=\"errorsEditable\">\n <ng-container *ngTemplateOutlet=\"nodeErrorForm; context: {$implicit: property}\"></ng-container>\n </div>\n\n <div class=\"property-group py-2 px-3 mt-2\">\n <div class=\"columns is-multiline mb-0\">\n <ng-container *ngFor=\"let prop2 of property.properties; trackBy: trackByProperty\">\n <ng-container *ngTemplateOutlet=\"showProperty; context: {$implicit: prop2}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div class=\"py-2 px-3 mt-2\" *ngSwitchCase=\"true\">\n <div class=\"mt-1\" *ngIf=\"errorsEditable\">\n <ng-container *ngTemplateOutlet=\"nodeErrorForm; context: {$implicit: property}\"></ng-container>\n </div>\n\n <ng-container *ngFor=\"let prop2 of property.properties; trackBy: trackByProperty\">\n <div class=\"card p-0 my-4\" *ngIf=\"prop2.key\"\n [id]=\"prop2.fullKey + '_' + prop2.id\"\n >\n <div class=\"property-array-number\">\n <div class=\"tags has-addons\">\n <span class=\"tag is-dark\">{{prop2.key}}</span>\n <ng-container *ngIf=\"editable && !errorsEditable && property.editable\">\n <span class=\"tag is-info\" pointer\n (click)=\"duplicateArrayGroup(property, prop2)\"\n [ngbTooltip]=\"'Duplicate ' + pluralize(property.key, 1)\" placement=\"top\"\n >\n <fa-icon icon=\"clone\" size=\"sm\"></fa-icon>\n </span>\n <span class=\"tag is-light\" pointer\n *ngIf=\"prop2.key !== '0'\"\n (click)=\"moveArrayGroupUp(property, prop2)\"\n ngbTooltip=\"Move Up\" placement=\"top\"\n >\n <fa-icon icon=\"long-arrow-alt-up\" size=\"sm\"></fa-icon>\n </span>\n <span class=\"tag is-light\" pointer\n *ngIf=\"prop2.key !== property.properties.length - 1\"\n (click)=\"moveArrayGroupDown(property, prop2)\"\n ngbTooltip=\"Move Down\" placement=\"top\"\n >\n <fa-icon icon=\"long-arrow-alt-down\" size=\"sm\"></fa-icon>\n </span>\n <he-popover-confirm class=\"tag is-delete\"\n [ngbTooltip]=\"'Remove ' + pluralize(property.key, 1)\" placement=\"top\"\n message=\"This will remove the group completely. Do you confirm?\" position=\"right\"\n (confirmed)=\"removeArrayGroup(property, prop2)\"\n ></he-popover-confirm>\n </ng-container>\n </div>\n </div>\n\n <ng-container *ngTemplateOutlet=\"showNewProperty; context: {$implicit: prop2}\"></ng-container>\n\n <div class=\"px-4 mt-2\" *ngIf=\"errorsEditable\">\n <ng-container *ngTemplateOutlet=\"nodeErrorForm; context: {$implicit: prop2}\"></ng-container>\n </div>\n\n <div class=\"px-4 mt-2\" *ngIf=\"prop2.error\">\n <ng-container *ngTemplateOutlet=\"propertyError; context: {property: prop2, edit: true}\"></ng-container>\n </div>\n\n <div class=\"property-group card-content p-3\">\n <div class=\"columns is-multiline my-0\">\n <ng-container *ngFor=\"let prop3 of prop2.properties; trackBy: trackByProperty\">\n <ng-container *ngTemplateOutlet=\"showProperty; context: {$implicit: prop3}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <button class=\"button is-dark is-outlined is-small\" type=\"button\"\n *ngIf=\"editable && !errorsEditable\"\n (click)=\"addArrayGroup(property)\"\n >\n <fa-icon icon=\"plus-circle\"></fa-icon>\n <span class=\"pl-2\">Add</span>\n <span class=\"pl-1\">{{property.key | pluralize:1}}</span>\n </button>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #inputForm let-property>\n <ng-container *ngIf=\"property.key\">\n <ng-container [ngSwitch]=\"property.suggestions?.type\">\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container *ngTemplateOutlet=\"inputSelect; context: {$implicit: property}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"inputInput; context: {$implicit: property}\"></ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #inputInput let-property>\n <div class=\"field mb-0\" [class.has-addons]=\"hasAddons(property)\">\n <div class=\"control is-expanded\"\n [class.has-icons-right]=\"property.loading\"\n >\n <input class=\"input is-small search-input\"\n [class.is-dark]=\"property.key === 'type'\"\n [class.is-link]=\"errorMode && property.changed\"\n [class.is-danger]=\"(!property.changed && property.hasError) || isRequired(property)\"\n [class.is-warning]=\"!property.changed && property.hasWarning\"\n\n [(ngModel)]=\"property.value\" #propertyModel=\"ngModel\"\n [type]=\"property.schema?.type === 'number' ? 'number' : 'string'\"\n [id]=\"property.id\"\n name=\"randomname\"\n [readonly]=\"!editable || !property.editable || property.schema?.internal\"\n [placeholder]=\"property.placeholder\"\n [appTagsInput]=\"{enabled: editable && property.editable && property.schema?.type === 'array', items: property.schema?.items, delimiter: ';', allowDuplicates: true, placeholder: property.placeholder}\"\n (change)=\"propertyChanged($event.target.value, property)\"\n\n [pattern]=\"property.schema?.pattern\"\n [required]=\"property.fullKey.endsWith('id') && property.fullKey !== 'id'\"\n [min]=\"property.schema?.minimum\"\n [max]=\"property.schema?.maximum\"\n\n [ngbTypeahead]=\"propertySuggest(property.fullKey, property.suggestions?.type)\"\n [resultTemplate]=\"suggestion\"\n [inputFormatter]=\"formatter\"\n [focusFirst]=\"true\"\n (focus)=\"editable && property.editable && typeaheadFocus($event)\"\n (selectItem)=\"suggestionSelected($event.item, property)\"\n >\n\n <span class=\"icon is-small is-right has-text-grey-dark\" [class.is-hidden]=\"!property.loading\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"sm\"></fa-icon>\n </span>\n </div>\n <ng-container *ngTemplateOutlet=\"inputAddons; context: {$implicit: property}\"></ng-container>\n </div>\n <p class=\"help is-danger-light\"\n *ngIf=\"!property.hasError && propertyModel.invalid\"\n >\n <span *bindOnce=\"propertyModel.errors\" [innerHTML]=\"formatPropertyError(propertyModel.errors, property)\"></span>\n </p>\n</ng-template>\n\n<ng-template #inputSelect let-property>\n <div class=\"field mb-0\" [class.has-addons]=\"hasAddons(property)\">\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\"\n [class.is-link]=\"errorMode && property.changed\"\n [class.is-danger]=\"(!property.changed && property.hasError) || isRequired(property)\"\n [class.is-warning]=\"!property.changed && property.hasWarning\"\n >\n <select\n [(ngModel)]=\"property.value\" #propertyModel=\"ngModel\"\n [id]=\"property.id\"\n name=\"randomname\"\n [disabled]=\"!editable || !property.editable || property.schema?.internal\"\n (change)=\"propertyChanged($event.target.value, property)\"\n >\n <option value=\"\">Select</option>\n <ng-container *bindOnce=\"property.suggestions\">\n <option *ngFor=\"let value of property.suggestions.values; trackBy: trackByIndex\" [value]=\"value\">{{value}}</option>\n </ng-container>\n </select>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"inputAddons; context: {$implicit: property}\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #removeFieldAddon let-property>\n <div class=\"control\" *ngIf=\"!errorsEditable && !property.isRequired\">\n <a class=\"button is-small\" title=\"Remove field\"\n [class.is-outlined]=\"!property.changed && (property.hasError || property.hasWarning)\"\n [class.is-danger]=\"!property.changed && property.hasError\"\n [class.is-warning]=\"!property.changed && property.hasWarning\"\n (click)=\"$event.stopPropagation(); propertyChanged(null, property)\"\n >\n <fa-icon icon=\"times\"></fa-icon>\n </a>\n </div>\n</ng-template>\n\n<ng-template #inputAddons let-property>\n <he-popover-confirm class=\"control\"\n *ngIf=\"enableAddError(property)\"\n position=\"left\"\n [content]=\"popupErrorForm\"\n (confirmed)=\"addError(property, $event)\"\n >\n <span class=\"button is-small\">\n <fa-icon icon=\"comments\"></fa-icon>\n </span>\n </he-popover-confirm>\n\n <ng-container *ngIf=\"editable && property.editable\">\n <ng-container [ngSwitch]=\"property.schemaType\">\n <ng-container *ngSwitchCase=\"SchemaType.Actor\">\n <ng-container *ngTemplateOutlet=\"actorAddons; context: {$implicit: property}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"SchemaType.Cycle\">\n <ng-container *ngTemplateOutlet=\"cycleAddons; context: {$implicit: property}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *bindOnce=\"property\">\n <div class=\"control\" *ngIf=\"mapDrawingModes(property).length\">\n <button class=\"button is-small\" title=\"Pick on Map\"\n (click)=\"mapDrawingProperty = property\"\n >\n <fa-icon icon=\"map-marked-alt\"></fa-icon>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"bibliographiesSearchKey(property)\">\n <button class=\"button is-small\" title=\"Advanced Search\"\n (click)=\"bibliographiesSearchProperty = property\"\n >\n <fa-icon icon=\"search\"></fa-icon>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"removeFieldAddon; context: {$implicit: property}\"></ng-container>\n </ng-container>\n <div class=\"control\" *ngIf=\"addPropertyEnabled(property)\">\n <a class=\"button is-small is-danger\" title=\"Add field\"\n (click)=\"$event.stopPropagation(); addMissingProperty(property)\"\n >\n <fa-icon icon=\"plus-circle\"></fa-icon>\n <span class=\"pl-2\">Add</span>\n </a>\n </div>\n <div class=\"control\" *ngIf=\"isRequired(property)\">\n <label class=\"button is-small is-danger\" [for]=\"property.id\"\n ngbTooltip=\"This field is required\" placement=\"top\"\n >\n <fa-icon icon=\"exclamation-triangle\"></fa-icon>\n </label>\n </div>\n <ng-container *ngIf=\"property.externalUrl?.url\">\n <div class=\"control\">\n <a class=\"button is-small\"\n [href]=\"property.externalUrl.url + (property.externalUrl.urlParamValue ? property.value : '')\"\n target=\"_blank\"\n [title]=\"property.externalUrl.title\"\n [ngClass]=\"{'is-dark is-outlined': property.key === 'type'}\"\n [attr.disabled]=\"property.externalUrl.urlParamValue && !property.value ? true : null\"\n >\n <fa-icon [icon]=\"property.externalUrl.icon || 'external-link-alt'\"></fa-icon>\n </a>\n </div>\n </ng-container>\n <ng-container *ngIf=\"unitConverterEnabled(property)\">\n <div class=\"control\">\n <button class=\"button is-small\" title=\"Open calculator\"\n [ngbPopover]=\"convertUnits\" autoClose=\"outside\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"bottom\" container=\"body\"\n (click)=\"openUnitConverter(p, property)\"\n >\n <fa-icon icon=\"calculator\"></fa-icon>\n </button>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #actorAddons let-property>\n <div class=\"control\" *ngIf=\"property.key === '@id'\">\n <button class=\"button is-small\" title=\"Add myself as Actor\"\n (click)=\"setUserActorId(property)\"\n >\n <fa-icon [icon]=\"['far', 'id-badge']\"></fa-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #cycleAddons let-property>\n <div class=\"control\" *ngIf=\"property.key === 'cycleDuration'\">\n <button class=\"button is-small\" title=\"Calculate value from startDate and endDate\"\n (click)=\"calculateCycleDuration(property)\"\n [disabled]=\"!calculateCycleDurationEnabled(property)\"\n >\n <fa-icon icon=\"calculator\"></fa-icon>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"property.key === 'startDate'\">\n <button class=\"button is-small\" title=\"Calculate value from endDate and cycleDuration\"\n (click)=\"calculateCycleStartDate(property)\"\n [disabled]=\"!calculateCycleStartDateEnabled(property)\"\n >\n <fa-icon icon=\"calculator\"></fa-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #showNewProperty let-property>\n <header class=\"card-header\" *ngIf=\"editable && property.editable && (property.addPropertyEnabled || deepEditable); else padder\">\n <form class=\"py-3 px-4 is-flex-grow-1\" (submit)=\"addProperty(property)\" novalidate>\n <div class=\"field is-horizontal\">\n <div class=\"field-label is-small\">\n <label class=\"label\" [for]=\"property.id + '_new'\">\n <span>Add new field</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"field has-addons\">\n <div class=\"control is-expanded\">\n <input class=\"input is-small\"\n [(ngModel)]=\"property.newProperty\"\n [id]=\"property.id + '_new'\"\n name=\"randomname\"\n placeholder=\"Search and select field from results\"\n\n [ngbTypeahead]=\"suggestNewProperty(property.fullKey)\"\n [resultTemplate]=\"suggestion\"\n [inputFormatter]=\"formatter\"\n [focusFirst]=\"false\"\n [editable]=\"false\"\n (focus)=\"typeaheadFocus($event)\"\n >\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" type=\"submit\"\n [disabled]=\"!property.newProperty || !property.newProperty.name\"\n >\n <fa-icon icon=\"plus\"></fa-icon>\n <span class=\"pl-2\">Add</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </form>\n </header>\n</ng-template>\n\n<ng-template #propertyError let-property=\"property\" let-edit=\"edit\">\n <p class=\"help\"\n [class.is-danger]=\"property.hasError\"\n [class.is-warning]=\"property.hasWarning\"\n *ngIf=\"property.error\"\n >\n <span class=\"is-pre-wrap\" *bindOnce=\"property.error\" [innerHTML]=\"property.error.message\"></span>\n <a class=\"pl-2\"\n *ngIf=\"edit && errorsEditable && property.error.index >= 0\"\n (click)=\"editError(property)\"\n >\n <fa-icon class=\"pr-2\" icon=\"edit\"></fa-icon>\n <span>Edit</span>\n </a>\n <a class=\"pl-2\"\n *ngIf=\"(property.hasWarning || errorsEditable) && property.error.index >= 0\"\n (click)=\"resolveError(property)\"\n >\n <fa-icon class=\"pr-2\" icon=\"check\"></fa-icon>\n <span>Resolved</span>\n </a>\n </p>\n</ng-template>\n\n<ng-template #propertyMap let-property>\n <div class=\"panel is-default\" *ngIf=\"showMap\">\n <div class=\"open-group panel-heading py-0\"\n (click)=\"mapVisible = !mapVisible\" pointer\n [class.is-open]=\"mapVisible\"\n >\n <div class=\"columns is-mobile is-vcentered mb-0\">\n <span class=\"column is-narrow py-1 my-0\">\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!mapVisible\"></fa-icon>\n <fa-icon icon=\"angle-right\" [class.is-hidden]=\"mapVisible\"></fa-icon>\n </span>\n <span class=\"column py-1 my-0\">\n <span class=\"is-size-6\">View on Map</span>\n </span>\n </div>\n </div>\n <div class=\"panel-block is-block p-0\" [class.is-hidden]=\"!mapVisible\">\n <he-sites-maps [sites]=\"[node]\" [showNotice]=\"false\"></he-sites-maps>\n </div>\n </div>\n</ng-template>\n\n<ng-template #nodeErrorForm let-property>\n <ng-container *ngIf=\"property.newError && property.editable\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <div class=\"select is-small\">\n <select [(ngModel)]=\"property.newError.level\">\n <option [value]=\"undefined\">Select Level</option>\n <option value=\"error\">Error</option>\n <option value=\"warning\">Warning</option>\n </select>\n </div>\n </div>\n <div class=\"control is-expanded\">\n <textarea class=\"textarea is-small\"\n [(ngModel)]=\"property.newError.message\"\n placeholder=\"Enter your message here\"\n rows=\"1\"\n ></textarea>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\"\n [disabled]=\"!property.newError.level || !property.newError.message\"\n (click)=\"addError(property, property.newError)\"\n >\n <fa-icon icon=\"plus-circle\"></fa-icon>\n <span class=\"pl-2\">Add</span>\n </button>\n </div>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #popupErrorForm let-data=\"data\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <div class=\"select\">\n <select [(ngModel)]=\"data.level\">\n <option [value]=\"undefined\">Select Level</option>\n <option value=\"error\">Error</option>\n <option value=\"warning\">Warning</option>\n </select>\n </div>\n </div>\n <div class=\"control\">\n <input class=\"input\"\n [(ngModel)]=\"data.message\"\n placeholder=\"Enter your message here\"\n >\n </div>\n </div>\n</ng-template>\n\n<ng-template #suggestion let-r=\"result\" let-t=\"term\">\n <ngb-highlight\n [title]=\"r.bibliography?.title || r.bibliography?.documentDOI || r.bibliography?.scopus || r.name\"\n [result]=\"r.bibliography?.title || r.bibliography?.documentDOI || r.bibliography?.scopus || r.name\"\n [term]=\"t\"\n ></ngb-highlight>\n</ng-template>\n\n<ng-template #padder>\n <div class=\"pt-1\"></div>\n</ng-template>\n\n<ng-template #convertUnits let-value=\"value\" let-term=\"term\" let-units=\"units\">\n <he-unit-converter [value]=\"value\" [term]=\"term\" [toUnits]=\"units\"></he-unit-converter>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { HeCommonModule } from '../common/common.module';\nimport { HeNodeModule } from '../node/node.module';\nimport { HeBibliographiesModule } from '../bibliographies/bibliographies.module';\nimport { HeSitesModule } from '../sites/sites.module';\n\nimport { FilesFormComponent } from './files-form/files-form.component';\n\nconst components = [\n FilesFormComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, FormsModule,\n HeCommonModule,\n HeNodeModule,\n HeBibliographiesModule,\n HeSitesModule\n ]\n})\nexport class HeFilesModule { }\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { of } from 'rxjs';\nimport { filter, groupBy, map, mergeAll, mergeMap, toArray } from 'rxjs/operators';\nimport { Chart } from 'chart.js';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport { DataState } from '@hestia-earth/api';\nimport { IImpactAssessmentJSONLD, Indicator, ITermJSONLD, NodeType, Term, TermTermType } from '@hestia-earth/schema';\nimport { toPrecision } from '@hestia-earth/utils';\n\nimport { matchTermType, matchType } from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { HeNodeService } from '../../node/node.service';\nimport { Level, parseLines, parseMessage } from '../../common/logs-utils';\nimport { listColor } from '../../common/utils';\n\ninterface ILog {\n indicator: string;\n emission: string;\n value: number;\n}\n\nconst parseLog = (data: any): ILog => ({\n indicator: data['key/term'],\n emission: data.node,\n value: +data.value * +data.coefficient\n});\n\nconst filterTermTypes = [\n TermTermType.emission,\n TermTermType.characterisedIndicator\n];\n\nconst toCsv = (logs: ILog[]) => [\n [\n 'Indicator',\n 'Emission',\n 'Value'\n ].join(','),\n ...logs\n .sort((a, b) => a.indicator.localeCompare(b.indicator))\n .map(({ indicator, emission, value }) => [indicator, emission, value].join(','))\n].join('\\n');\n\n@Component({\n selector: 'he-impact-assessments-indicator-breakdown-chart',\n templateUrl: './impact-assessments-indicator-breakdown-chart.component.html',\n styleUrls: ['./impact-assessments-indicator-breakdown-chart.component.scss']\n})\nexport class ImpactAssessmentsIndicatorBreakdownChartComponent implements OnInit {\n private logs: ILog[] = [];\n private emissions: ITermJSONLD[] = [];\n\n @ViewChild('chart')\n private chartRef?: ElementRef;\n private chart: any;\n\n @Input()\n public impactAssessment?: IImpactAssessmentJSONLD;\n @Input()\n public indicators: Indicator[] = [];\n\n public loading = true;\n public terms: Term[] = [];\n public selectedTerm?: Term;\n public noData = false;\n public csvContent?: SafeResourceUrl;\n\n constructor(\n private domSanitizer: DomSanitizer,\n private searchService: HeSearchService,\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.terms = this.indicators.map(({ term }) => term!);\n\n this.logs = (await of({\n ...this.impactAssessment,\n dataState: DataState.recalculated\n }).pipe(\n mergeMap(node => this.nodeService.getLog(node)),\n map(value => value ? parseLines(value) : []),\n mergeAll(),\n filter(({ data }) => data.logger === 'hestia_earth.models' && data.level === Level.debug),\n map(({ data }) => parseMessage(data.message)),\n filter(message => 'node' in message),\n map(parseLog),\n filter(log => !isNaN(log.value) && log.value > 0),\n groupBy(log => [log.indicator, log.emission].join('/')),\n mergeMap(group => group.pipe(toArray())),\n map(values => {\n const total = values.reduce((prev, curr) => prev + curr.value, 0);\n return { ...values[0], value: total };\n }),\n toArray()\n ).toPromise()) as ILog[];\n this.csvContent = this.domSanitizer.bypassSecurityTrustResourceUrl(\n `data:text/html;charset=utf-8,${encodeURIComponent(toCsv(this.logs))}`\n );\n\n const { results: emissions } = await this.searchService.search<ITermJSONLD, NodeType.Term>({\n fields: ['@type', '@id', 'name'],\n limit: 1000,\n query: {\n bool: {\n must: [\n matchType(NodeType.Term)\n ],\n should: filterTermTypes.map(termType => matchTermType(termType)),\n minimum_should_match: 1\n }\n }\n });\n this.emissions = emissions;\n\n this.loading = false;\n\n this.selectedTerm = this.terms[0];\n this.updateChart();\n }\n\n public get id() {\n return this.impactAssessment!['@id'] || (this.impactAssessment as any).id;\n }\n\n public updateChart() {\n const logs = this.logs\n .filter(({ indicator }) => indicator === this.selectedTerm!['@id'])\n .sort((a, b) => b.value - a.value);\n this.noData = logs.length === 0;\n\n const labels = logs.map(({ emission }) => this.emissions.find(v => v['@id'] === emission)?.name || emission);\n const datasets = [{\n label: this.selectedTerm?.name ?? '',\n data: logs.map(({ value }) => value),\n backgroundColor: logs.map(listColor),\n borderColor: logs.map(listColor)\n }];\n const total = logs.reduce((prev, curr) => prev + curr.value, 0);\n\n if (this.chart) {\n this.chart.destroy();\n }\n this.chart = new Chart(this.chartRef?.nativeElement, {\n type: 'horizontalBar',\n data: {\n labels,\n datasets\n },\n plugins: [ChartDataLabels],\n options: {\n plugins: {\n datalabels: {\n color: 'black',\n formatter: (value) => {\n const ratio = toPrecision(value * 100 / total, 2);\n return `${toPrecision(value, 3)} (${ratio}%)`;\n },\n align: 'end'\n }\n },\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false\n },\n tooltips: {\n enabled: false,\n callbacks: {\n title: (tooltipItems, data) => data.datasets![tooltipItems[0].datasetIndex!]?.label || '',\n label: (tooltipItem) => {\n const value = +(tooltipItem.value || '0');\n const ratio = toPrecision(value * 100 / total, 2);\n return `${toPrecision(value, 3)} (${ratio}%)`;\n }\n }\n },\n scales: {\n xAxes: [{\n display: true\n }],\n yAxes: [{\n position: 'left'\n }]\n }\n }\n });\n }\n}\n","<div class=\"p-3\" [class.is-hidden]=\"loading || !terms?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}} ({{term.units}})</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a class=\"button is-dark is-outlined is-small\" [href]=\"csvContent\" [download]=\"id + '-logs.csv'\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download All (CSV)</span>\n </a>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <p *ngIf=\"noData\" class=\"has-text-centered\">No breakdown available for {{selectedTerm?.name}}.</p>\n <div class=\"chart-container h-100\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"loading\">\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-container>\n","import { Component, Input, AfterViewInit, OnChanges, ViewChild, SimpleChanges, ElementRef } from '@angular/core';\nimport { IImpactAssessmentJSONLD, Indicator, Term, TermTermType } from '@hestia-earth/schema';\nimport { Chart } from 'chart.js';\n\nimport {\n IGroupedNodes, groupNodesByTerm, defaultLabel, itemColor, listColor, IGroupedNodesValues\n} from '../../common/utils';\n\nconst impactValue = (impact: IImpactAssessmentJSONLD, values: IGroupedNodesValues<Indicator>) =>\n (values[impact['@id']]?.nodes[0] || { value: 0 }).value;\n\nconst impactName = (impact: IImpactAssessmentJSONLD, index: number) => `${index + 1}. ${defaultLabel(impact)}`;\n\nconst impactAssessmentDataset = (values: IGroupedNodesValues<Indicator>) => (\n impact: IImpactAssessmentJSONLD, index: number\n) => {\n const label = impactName(impact, index);\n const color = itemColor(index);\n const data = [impactValue(impact, values)];\n return {\n label,\n axis: 'y',\n data,\n backgroundColor: color,\n borderColor: color\n };\n};\n\n@Component({\n selector: 'he-impact-assessments-indicators-chart',\n templateUrl: './impact-assessments-indicators-chart.component.html',\n styleUrls: ['./impact-assessments-indicators-chart.component.scss']\n})\nexport class ImpactAssessmentsIndicatorsChartComponent implements AfterViewInit, OnChanges {\n @ViewChild('barChart')\n private barChartRef?: ElementRef;\n private barChart: any;\n\n @ViewChild('pieChart')\n private pieChartRef?: ElementRef;\n private pieChart: any;\n\n @Input()\n private impactAssessments: IImpactAssessmentJSONLD[] = [];\n @Input()\n private key: 'impacts' | 'emissionsResourceUse' = 'impacts';\n @Input()\n public filterTermTypes?: TermTermType[];\n\n public indicatorPerImpactAssessment: IGroupedNodes<Indicator> = {};\n public terms: Term[] = [];\n public selectedTerm?: Term;\n\n ngAfterViewInit() {\n return this.init();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('impactAssessments' in changes && !changes.impactAssessments.firstChange) {\n return this.init();\n }\n }\n\n private termAllowed(term?: Term) {\n return !this.filterTermTypes?.length || (this.filterTermTypes || []).includes(term?.termType!);\n }\n\n private init() {\n this.indicatorPerImpactAssessment = groupNodesByTerm<IImpactAssessmentJSONLD, Indicator>(\n this.impactAssessments, this.key\n );\n this.terms = Object.values(this.indicatorPerImpactAssessment)\n .filter(({ term, values }: any) =>\n this.termAllowed(term) && Object.values(values).some(({ nodes: [{ value }] }: any) => value > 0)\n )\n .map(({ term }: any) => term);\n this.selectedTerm = this.terms.includes(this.selectedTerm!) ? this.selectedTerm : this.terms[0];\n return this.selectedTerm ? this.updateCharts() : null;\n }\n\n private updateBarChart() {\n const labels = [this.selectedTerm?.name ?? ''];\n const { values } = this.indicatorPerImpactAssessment[this.selectedTerm!['@id']];\n const datasets = this.impactAssessments.map(impactAssessmentDataset(values));\n\n if (this.barChart) {\n this.barChart.destroy();\n }\n this.barChart = new Chart(this.barChartRef?.nativeElement, {\n type: 'bar',\n data: {\n labels,\n datasets\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false\n },\n scales: {\n xAxes: [{\n display: false\n }],\n yAxes: [{\n position: 'left',\n ticks: {\n min: 0\n }\n }]\n }\n }\n });\n }\n\n private updatePieChart() {\n const { values } = this.indicatorPerImpactAssessment[this.selectedTerm!['@id']];\n const labels = this.impactAssessments.map(impactName);\n const colors = this.impactAssessments.map(listColor);\n const data = this.impactAssessments.map(impact => impactValue(impact, values));\n const datasets = [{\n label: this.selectedTerm?.name ?? '',\n data,\n backgroundColor: colors as string[],\n hoverOffset: 4\n }];\n\n if (this.pieChart) {\n this.pieChart.destroy();\n }\n this.pieChart = new Chart(this.pieChartRef?.nativeElement, {\n type: 'pie',\n data: {\n labels,\n datasets\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false\n },\n layout: {\n padding: 0\n }\n }\n });\n }\n\n public updateCharts() {\n this.updateBarChart();\n this.updatePieChart();\n }\n}\n","<div class=\"p-3\" [class.is-hidden]=\"!terms?.length\">\n <div class=\"field is-horizontal\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"selectedTerm\">\n <span>Select a column</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"control\">\n <div class=\"select is-small\">\n <select (change)=\"updateCharts()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"columns h-100\">\n <div class=\"column is-12 chart-container\">\n <canvas #barChart></canvas>\n </div>\n <div class=\"column is-4 chart-container is-hidden\">\n <canvas #pieChart></canvas>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { Emission, IImpactAssessmentJSONLD, ITermJSONLD, NodeType, TermTermType } from '@hestia-earth/schema';\n\nimport { matchTermType, matchType } from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { HeNodeService } from '../../node/node.service';\n\n@Component({\n selector: 'he-impact-assessments-products-logs',\n templateUrl: './impact-assessments-products-logs.component.html',\n styleUrls: ['./impact-assessments-products-logs.component.scss']\n})\nexport class ImpactAssessmentsProductsLogsComponent implements OnInit {\n @Input()\n private impactAssessment?: IImpactAssessmentJSONLD;\n @Input()\n public key?: string;\n @Input()\n public filterTermTypes?: TermTermType[];\n @Input()\n public originalValues: Emission[] = [];\n @Input()\n public recalculatedValues: Emission[] = [];\n\n public loading = true;\n public logsUrl?: string;\n public NodeType = NodeType;\n public logs: any;\n public models: ITermJSONLD[] = [];\n public emissions: ITermJSONLD[] = [];\n\n constructor(\n private searchService: HeSearchService,\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.logsUrl = this.nodeService.nodeLogsUrl(this.node);\n this.logs = await this.nodeService.getModelsLog(this.node);\n\n const { results: emissions } = await this.searchService.search<ITermJSONLD, NodeType.Term>({\n fields: ['@type', '@id', 'name'],\n limit: 1000,\n query: {\n bool: {\n must: [\n matchType(NodeType.Term)\n ],\n should: (this.filterTermTypes || []).map(termType => matchTermType(termType)),\n minimum_should_match: 1\n }\n }\n });\n this.emissions = emissions;\n\n this.loading = false;\n }\n\n private get node() {\n return {\n ...this.impactAssessment,\n dataState: DataState.recalculated\n };\n }\n}\n","<he-node-logs-models *ngIf=\"!loading; else loader\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.ImpactAssessment\"\n [nodeKey]=\"key\"\n [originalValues]=\"originalValues\"\n [recalculatedValues]=\"recalculatedValues\"\n [terms]=\"emissions\"\n [logs]=\"logs\"\n filteredType=\"Emission\"\n></he-node-logs-models>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';\nimport { DataState } from '@hestia-earth/api';\nimport {\n NodeType, ICycleJSONLD, IImpactAssessmentJSONLD, Indicator, Cycle, TermTermType, Term\n} from '@hestia-earth/schema';\nconst orderBy = require('lodash.orderby');\nimport { unique } from '@hestia-earth/utils';\n\nimport { HeNodeService } from '../../node/node.service';\nimport {\n matchType, matchExactQuery, matchPhraseQuery, matchPhrasePrefixQuery, matchBoolPrefixQuery, matchAggregatedQuery\n} from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { HeToastService } from '../../common/toast.service';\nimport { propertyValue, groupNodesByTerm, itemColor, IGroupedKeys, grouppedKeys, baseUrl } from '../../common/utils';\n\nconst MIN_TYPEAHEAD_LENGTH = 1;\n\nenum View {\n table = 'table',\n chart = 'chart',\n breakdown = 'breakdown',\n logs = 'logs'\n}\n\n@Component({\n selector: 'he-impact-assessments-products',\n templateUrl: './impact-assessments-products.component.html',\n styleUrls: ['./impact-assessments-products.component.scss']\n})\nexport class ImpactAssessmentsProductsComponent implements OnChanges {\n private dataStateValues: {\n [dataState in DataState]?: IImpactAssessmentJSONLD[];\n } = {};\n @Input()\n private cycles?: ICycleJSONLD[];\n\n @Input()\n public impactAssessments: IImpactAssessmentJSONLD[] = [];\n @Input()\n public key: 'impacts' | 'emissionsResourceUse' = 'impacts';\n @Input()\n public dataState?: DataState;\n @Input()\n public enableCompare = true;\n @Input()\n public filterTermTypes?: TermTermType[];\n @Input()\n public enableFilterMethodModel = false;\n\n public propertyValue = propertyValue;\n public itemColor = itemColor;\n public baseUrl = baseUrl();\n public showDownload = false;\n public View = View;\n public selectedView = View.table;\n\n public methodModels: Term[] = [];\n public selectedMethodModel?: Term;\n\n public indicators: IGroupedKeys<Indicator>[] = [];\n\n // Adding impacts to compare\n public form = this.formBuilder.group({\n search: ['', Validators.required]\n });\n public selectedImpactAssessments: IImpactAssessmentJSONLD[] = [];\n public loading = false;\n public suggesting = false;\n public formatter = ({ '@id': id }) => id;\n public suggestImpactAssessment = (text$: Observable<string>) =>\n text$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n tap(() => this.suggesting = true),\n switchMap(term => this.suggest(term)),\n tap(() => this.suggesting = false)\n );\n\n constructor(\n private formBuilder: FormBuilder,\n private nodeService: HeNodeService,\n private searchService: HeSearchService,\n private toastService: HeToastService\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if ('impactAssessments' in changes) {\n this.dataStateValues[this.dataState!] = changes.impactAssessments.currentValue.slice();\n this.selectAllImpacts();\n return this.update();\n }\n if ('dataState' in changes) {\n this.selectedView = View.table;\n return this.updateDataState();\n }\n }\n\n public trackById(_index: number, item: IImpactAssessmentJSONLD) {\n return item['@id'];\n }\n\n public get isOriginal() {\n return this.dataState === DataState.original;\n }\n\n public get originalValues() {\n return (this.isOriginal ? null : this.dataStateValues[DataState.original]) || [];\n }\n\n private termAllowed(term?: Term) {\n return !this.filterTermTypes?.length || (this.filterTermTypes || []).includes(term?.termType!);\n }\n\n private update() {\n this.updateImpacts();\n this.enableFilterMethodModel && this.updateMethodModels();\n }\n\n private updateMethodModels() {\n const methodModels = this.impactAssessments\n .flatMap(impact => (impact[this.key] || []).map(v => v.methodModel))\n .filter(Boolean);\n this.methodModels = unique(methodModels as Term[]);\n }\n\n public updateImpacts() {\n const indicatorPerImpactAssessment = groupNodesByTerm<IImpactAssessmentJSONLD, Indicator>(\n this.impactAssessments, this.key, this.originalValues, this.selectedMethodModel\n );\n this.indicators = orderBy(grouppedKeys(indicatorPerImpactAssessment), ['value.methodTierOrder', 'key'], ['asc', 'asc'])\n .filter(({ value }) => this.termAllowed(value?.term));\n }\n\n private async loadDataState(dataState: DataState) {\n this.dataStateValues[dataState] = this.dataStateValues[dataState] || await Promise.all(\n this.impactAssessments.map(node =>\n this.nodeService.get<IImpactAssessmentJSONLD>({\n ...node,\n dataState\n })\n )\n );\n }\n\n private async updateDataState() {\n await this.loadDataState(this.dataState!);\n this.impactAssessments = this.dataStateValues[this.dataState!]!.slice();\n return this.update();\n }\n\n public togglePopover(popover, context) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n public impactName(impact: IImpactAssessmentJSONLD) {\n return impact.name || (impact.cycle ? this.cycleLabel(impact.cycle) : impact['@id']) || (impact as any).id;\n }\n\n public cycleLabel({ '@id': id, name }: any) {\n return name || (this.cycles || []).find(v => v['@id'] === id)?.name;\n }\n\n public get enableBreakdown() {\n return !this.isOriginal && this.impactAssessments.length === 1 && this.key === 'impacts';\n }\n\n // Recalculation logs\n\n public async showRecalculationLogs() {\n this.loading = true;\n // make sure original data is also loaded\n await this.loadDataState(DataState.original);\n this.loading = false;\n this.selectedView = View.logs;\n }\n\n // Compare\n\n private selectAllImpacts() {\n this.selectedImpactAssessments = this.impactAssessments.slice();\n }\n\n private unselectAllImpacts() {\n this.selectedImpactAssessments = [];\n }\n\n public toggleAllImpacts() {\n return this.selectedImpactAssessments.length ? this.selectAllImpacts() : this.unselectAllImpacts();\n }\n\n private selectImpact(impact: IImpactAssessmentJSONLD) {\n this.selectedImpactAssessments = [\n ...this.selectedImpactAssessments,\n impact\n ];\n }\n\n private unselectImpact(index: number) {\n this.selectedImpactAssessments.splice(index, 1);\n this.selectedImpactAssessments = this.selectedImpactAssessments.slice();\n }\n\n public toggleImpact(impact: IImpactAssessmentJSONLD) {\n const index = this.selectedImpactAssessments.indexOf(impact);\n return index >= 0 ? this.unselectImpact(index) : this.selectImpact(impact);\n }\n\n public isSelected(impact: IImpactAssessmentJSONLD) {\n return this.selectedImpactAssessments.includes(impact);\n }\n\n private suggest(term: string) {\n return term.length < MIN_TYPEAHEAD_LENGTH ?\n of([]) :\n this.searchService.suggest(term, NodeType.ImpactAssessment, [], {\n bool: {\n must: [\n matchType(NodeType.ImpactAssessment),\n matchAggregatedQuery\n ],\n must_not: this.impactAssessments.map(({ '@id': id }) => matchExactQuery('@id', id)),\n should: [\n matchPhraseQuery(term, 100, '@id', 'name', 'cycle.name'),\n matchPhrasePrefixQuery(term, 20, '@id', 'name', 'cycle.name'),\n matchBoolPrefixQuery(term, 10, '@id', 'name', 'cycle.name')\n ],\n minimum_should_match: 1\n }\n }, 10, ['cycle.name', 'country.name', 'product.name', 'endDate']);\n }\n\n private async loadImpact(id: string) {\n const impact = await this.nodeService.get<IImpactAssessmentJSONLD>({\n '@type': NodeType.ImpactAssessment,\n '@id': id,\n dataState: DataState.recalculated\n }, false);\n return impact['@id'] ? {\n ...impact,\n cycle: await this.fetchCycle(impact)\n } : null;\n }\n\n private fetchCycle({ cycle }: IImpactAssessmentJSONLD) {\n return !cycle || cycle.name ? cycle: this.nodeService.get<Cycle>({\n '@type': NodeType.Cycle,\n '@id': cycle['@id']\n });\n }\n\n public async addImpact() {\n this.loading = true;\n const { search: { '@id': id, name } } = this.form.value;\n const impact = await this.loadImpact(id);\n if (impact) {\n this.impactAssessments = [\n ...this.impactAssessments,\n impact\n ];\n this.selectImpact(impact);\n }\n else {\n this.toastService.error(`Error while loading ${name || id}`);\n }\n\n this.loading = false;\n\n this.form.get('search')?.setValue('');\n this.form.updateValueAndValidity();\n return this.update();\n }\n}\n","<ng-container *ngIf=\"indicators.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-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\" *ngIf=\"impactAssessments.length > 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"enableBreakdown\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.breakdown\" (click)=\"selectedView = View.breakdown\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Breakdown view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal && impactAssessments.length === 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"showRecalculationLogs()\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\" *bindOnce=\"indicators\">\n <table class=\"table is-narrow data-table has-children-{{indicators.length + 1}}\">\n <thead>\n <tr>\n <th class=\"width-auto\">\n <div class=\"select is-small\" *ngIf=\"enableFilterMethodModel\">\n <select name=\"selectedMethodModel\"\n (change)=\"updateImpacts()\" [(ngModel)]=\"selectedMethodModel\"\n >\n <option [ngValue]=\"undefined\">Filter Model</option>\n <option *ngFor=\"let term of methodModels\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </th>\n <th></th>\n <th *ngFor=\"let indicator of indicators\"\n [attr.title]=\"indicator.value.term.name\"\n >\n <he-node-link [node]=\"indicator.value.term\">\n <span>{{indicator.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\">\n <a [href]=\"baseUrl + '/schema/ImpactAssessment#functionalUnit'\" target=\"_blank\">Functional unit:</a>\n <span class=\"pl-1\">1 kg</span>\n </th>\n <th>Product</th>\n <th *ngFor=\"let indicator of indicators\"\n [attr.title]=\"indicator.value.term.units\"\n >{{indicator.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let impactAssessment of impactAssessments; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"impactName(impactAssessment)\" [style.border-left-color]=\"itemColor(i)\">\n <label *ngIf=\"enableCompare\" class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n (change)=\"toggleImpact(impactAssessment)\"\n [checked]=\"isSelected(impactAssessment)\"\n >\n </label>\n <he-node-link class=\"is-inline-block\" [node]=\"impactAssessment\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{impactName(impactAssessment)}}</span>\n </he-node-link>\n </td>\n <td [attr.title]=\"impactAssessment.product?.name\">\n <he-node-link *ngIf=\"impactAssessment.product\" [node]=\"impactAssessment.product\">\n <span>{{impactAssessment.product.name | ellipsis:30}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let indicator of indicators\">\n <span *ngIf=\"indicator.value.values[impactAssessment['@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: indicator.value.values[impactAssessment['@id']], impactAssessment: impactAssessment, key: key })\"\n >\n <span pointer>{{propertyValue(indicator.value.values[impactAssessment['@id']].value, key === 'impacts') | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"indicator.value.values[impactAssessment['@id']].nodes[0]\"\n key=\"value\"\n [state]=\"impactAssessment.aggregated ? 'aggregated' : null\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n\n <form *ngIf=\"enableCompare\" class=\"mt-2\" [formGroup]=\"form\" (submit)=\"form.valid && addImpact()\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Compare with Aggregated Impact Assessment</span>\n </div>\n <div class=\"control is-expanded\" [class.has-icons-right]=\"suggesting || loading\">\n <input class=\"input is-small\"\n placeholder=\"Search by name or id\"\n formControlName=\"search\" name=\"search\"\n\n [ngbTypeahead]=\"suggestImpactAssessment\"\n [inputFormatter]=\"formatter\"\n [resultTemplate]=\"suggestion\"\n [focusFirst]=\"true\"\n >\n <span class=\"icon is-small is-right has-text-grey-dark\" [class.is-hidden]=\"!(suggesting || loading)\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"sm\"></fa-icon>\n </span>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" type=\"submit\" [disabled]=\"suggesting || loading\">\n <fa-icon icon=\"plus\"></fa-icon>\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <he-impact-assessments-indicator-breakdown-chart *ngIf=\"selectedView === View.breakdown\"\n [impactAssessment]=\"impactAssessments[0]\"\n [indicators]=\"impactAssessments[0][key]\"\n ></he-impact-assessments-indicator-breakdown-chart>\n\n <he-impact-assessments-indicators-chart *ngIf=\"impactAssessments.length > 1\" [class.is-hidden]=\"selectedView !== View.chart\"\n [key]=\"key\"\n [impactAssessments]=\"selectedImpactAssessments\"\n [filterTermTypes]=\"filterTermTypes\"\n ></he-impact-assessments-indicators-chart>\n\n <he-impact-assessments-products-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [key]=\"key\"\n [impactAssessment]=\"impactAssessments[0]\"\n [filterTermTypes]=\"filterTermTypes\"\n [originalValues]=\"originalValues[0][key]\"\n [recalculatedValues]=\"impactAssessments[0][key]\"\n ></he-impact-assessments-products-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"impactAssessments\" [filename]=\"'impact-' + key + '.csv'\" [isUpload]=\"false\"\n [headerKeys]=\"['impactAssessment.id', 'impactAssessment.@id', 'impactAssessment.' + key + '.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\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=\"impactAssessment\" let-data=\"data\" let-key=\"key\">\n <p *bindOnce=\"node\">\n <b>\n <span *ngIf=\"data.cycle\">{{cycleLabel(node.cycle)}}</span>\n <span *ngIf=\"!data.cycle\">{{data.name}}</span>\n </b>\n </p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n\n<ng-template #suggestion let-impact=\"result\" let-t=\"term\">\n <div class=\"is-block\">\n <ngb-highlight [result]=\"impact.name || impact.cycle.name\" [term]=\"t\"></ngb-highlight>\n </div>\n <div class=\"columns is-flex\">\n <div class=\"column\" *ngIf=\"impact.country\">\n <span class=\"pr-1 has-text-underline\">Country:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.country.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <div class=\"column\" *ngIf=\"impact.product\">\n <span class=\"pr-1 has-text-underline\">Product:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.product.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <div class=\"column\" *ngIf=\"impact.endDate\">\n <span class=\"pr-1 has-text-underline\">Date:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.endDate\" [term]=\"t\"></ngb-highlight></span>\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { HeCommonModule } from '../common/common.module';\nimport { HeNodeModule } from '../node/node.module';\n\nimport {\n ImpactAssessmentsProductsComponent\n} from './impact-assessments-products/impact-assessments-products.component';\nimport {\n ImpactAssessmentsIndicatorBreakdownChartComponent\n} from './impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component';\nimport {\n ImpactAssessmentsIndicatorsChartComponent\n} from './impact-assessments-indicators-chart/impact-assessments-indicators-chart.component';\nimport {\n ImpactAssessmentsProductsLogsComponent\n} from './impact-assessments-products-logs/impact-assessments-products-logs.component';\n\nconst components = [\n ImpactAssessmentsProductsComponent,\n ImpactAssessmentsIndicatorsChartComponent,\n ImpactAssessmentsProductsLogsComponent,\n ImpactAssessmentsIndicatorBreakdownChartComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, RouterModule, FormsModule, ReactiveFormsModule,\n HeCommonModule,\n HeNodeModule\n ]\n})\nexport class HeImpactAssessmentsModule { }\n","import { Injectable } from '@angular/core';\nimport { toJson } from '@hestia-earth/schema-convert';\n\nimport { HeSchemaService } from '../schema/schema.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeNodeCsvService {\n constructor(\n protected schemaService: HeSchemaService\n ) { }\n\n async csvToJson(content: string) {\n return toJson(await this.schemaService.schemas(), content);\n }\n}\n","import { NgModule } from '@angular/core';\n\nexport { HeSearchService } from './search.service';\n\n@NgModule({})\nexport class HeSearchModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["farClone","farCircle","farIdBadge","faClone","i1","Component","i1.HeToastService","i2","get","propertyValue","reduceValues","components","i2.BindOnceDirective","i3.PrecisionPipe","i1.BlankNodeValueDeltaComponent","i2.HeAuthService","i3.HeCommonService","gitUrl","rawUrl","i2.HeNodeService","i1.HeAggregationEngineService","i2.HeEngineService","i3","i4.BindOnceDirective","i5","i1.BlankNodeStateComponent","i3.BindOnceDirective","i4.PrecisionPipe","EventEmitter","i1.PopoverComponent","i1.ClipboardComponent","i4.KeysPipe","i2.HeCommonService","i2.HeMendeleyService","i3.HeSearchService","i4","i6","toCsv","i1.HeSchemaService","i4.ClickOutsideDirective","i7.KeysPipe","i2.NodeCsvSelectHeadersComponent","i6.BindOnceDirective","i1.HeNodeService","i3.ClipboardComponent","i7","i8.KeysPipe","orderBy","i1.HeSearchService","i4.NodeLinkComponent","i5.BlankNodeValueDeltaComponent","i8","i9.TimesPipe","i10.DefaultPipe","i11.PrecisionPipe","i12.KeyToLabelPipe","i13.PluralizePipe","i14.KeysPipe","i1.LinkKeyValueComponent","MIN_TYPEAHEAD_LENGTH","i2.NodeLogsModelsComponent","View","i2.NodeLinkComponent","i3.CyclesFunctionalUnitMeasureComponent","i4.BlankNodeStateComponent","i5.BlankNodeStateNoticeComponent","i6.CyclesSuggestFormComponent","i7.CyclesActivityLogsComponent","i8.NodeCsvExportConfirmComponent","i9.NodeValueDetailsComponent","i10","i11","i12.EllipsisPipe","i13.DefaultPipe","i14.PrecisionPipe","i1.NodeLinkComponent","i2.BlankNodeStateComponent","i3.BlankNodeStateNoticeComponent","i3.NodeLogsModelsComponent","i7.CyclesEmissionsChartComponent","i8.CyclesEmissionsLogsComponent","i9.NodeCsvExportConfirmComponent","i10.NodeValueDetailsComponent","i12","i13.EllipsisPipe","i14.DefaultPipe","i15.PrecisionPipe","uuidv4","i3.BlankNodeStateComponent","i4.BlankNodeStateNoticeComponent","i5.SitesMeasurementsLogsComponent","i6.NodeCsvExportConfirmComponent","i7.NodeValueDetailsComponent","i9","i10.EllipsisPipe","i11.DefaultPipe","i12.PrecisionPipe","i2.HeUsersService","i4.NodeIconComponent","i5.MapsDrawingConfirmComponent","i6.BibliographiesSearchConfirmComponent","i7.SchemaVersionLinkComponent","i8.PopoverConfirmComponent","i9.SitesMapsComponent","i11.UnitConverterComponent","i13.BindOnceDirective","i14","i15.TagsInputDirective","i16.PluralizePipe","i2.HeSearchService","i3.HeNodeService","i4.HeToastService","i6.NodeLinkComponent","i7.BlankNodeStateComponent","i8.BlankNodeStateNoticeComponent","i9.ImpactAssessmentsIndicatorBreakdownChartComponent","i10.ImpactAssessmentsIndicatorsChartComponent","i11.ImpactAssessmentsProductsLogsComponent","i12.NodeCsvExportConfirmComponent","i13.NodeValueDetailsComponent","i15","i16.BindOnceDirective","i17.EllipsisPipe","i18.DefaultPipe","i19.PrecisionPipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hestia-earth-ui-components.js","sources":["../../src/auth/auth.service.ts","../../src/fontawesome/fontawesome.module.ts","../../src/common/social-tags/social-tags.component.ts","../../src/common/social-tags/social-tags.component.html","../../src/common/toast.service.ts","../../src/common/toast/toast.component.ts","../../src/common/toast/toast.component.html","../../src/common/bind-once.directive.ts","../../src/common/default.pipe.ts","../../src/common/utils.ts","../../src/common/ellipsis.pipe.ts","../../src/terms/terms.model.ts","../../src/common/key-to-label.pipe.ts","../../src/common/keys.pipe.ts","../../src/common/pluralize.pipe.ts","../../src/common/precision.pipe.ts","../../src/common/common.light.module.ts","../../src/common/common.service.ts","../../src/node/node.service.ts","../../src/engine/aggregation-engine.service.ts","../../src/engine/engine.service.ts","../../src/common/blank-node-state/blank-node-state.component.ts","../../src/common/blank-node-state/blank-node-state.component.html","../../src/common/blank-node-state-notice/blank-node-state-notice.component.ts","../../src/common/blank-node-state-notice/blank-node-state-notice.component.html","../../src/common/delta-utils.ts","../../src/common/blank-node-value-delta/blank-node-value-delta.component.ts","../../src/common/blank-node-value-delta/blank-node-value-delta.component.html","../../src/common/clipboard/clipboard.component.ts","../../src/common/clipboard/clipboard.component.html","../../src/common/link-key-value/link-key-value.component.ts","../../src/common/link-key-value/link-key-value.component.html","../../src/common/maps-utils.ts","../../src/common/maps-drawing-confirm/maps-drawing-confirm.component.ts","../../src/common/maps-drawing-confirm/maps-drawing-confirm.component.html","../../src/common/popover/popover.component.ts","../../src/common/popover/popover.component.html","../../src/common/popover-confirm/popover-confirm.component.ts","../../src/common/popover-confirm/popover-confirm.component.html","../../src/common/schema-version-link/schema-version-link.component.ts","../../src/common/schema-version-link/schema-version-link.component.html","../../src/common/skeleton-text/skeleton-text.component.ts","../../src/common/skeleton-text/skeleton-text.component.html","../../src/common/unit-converter/unit-converter.component.ts","../../src/common/unit-converter/unit-converter.component.html","../../src/common/click-outside.directive.ts","../../src/common/get.pipe.ts","../../src/tags-input/utils/events.ts","../../src/tags-input/utils/type.ts","../../src/tags-input/utils/dom.ts","../../src/tags-input/utils/uuid.ts","../../src/tags-input/utils/component.ts","../../src/tags-input/defaultOptions.ts","../../src/tags-input/templates/tag.ts","../../src/tags-input/templates/wrapper.ts","../../src/tags-input/templates/dropdown-item.ts","../../src/tags-input/index.ts","../../src/common/tags-input.directive.ts","../../src/common/times.pipe.ts","../../src/common/common.module.ts","../../src/mendeley/mendeley.service.ts","../../src/search/search.model.ts","../../src/search/search.service.ts","../../src/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.ts","../../src/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.html","../../src/bibliographies/bibliographies.module.ts","../../src/common/logs-utils.ts","../../src/cycles/cycles.model.ts","../../src/schema/schema.service.ts","../../src/node/node-csv-select-headers/node-csv-select-headers.component.ts","../../src/node/node-csv-select-headers/node-csv-select-headers.component.html","../../src/node/node-csv-export-confirm/node-csv-export-confirm.component.ts","../../src/node/node-csv-export-confirm/node-csv-export-confirm.component.html","../../src/node/node-diffs/node-diffs.model.ts","../../src/node/node-diffs/node-diffs.component.ts","../../src/node/node-diffs/node-diffs.component.html","../../src/node/node-icon/node-icon.component.ts","../../src/node/node-icon/node-icon.component.html","../../src/node/node-link/node-link.component.ts","../../src/node/node-link/node-link.component.html","../../src/node/node-logs-file/node-logs-file.component.ts","../../src/node/node-logs-file/node-logs-file.component.html","../../src/node/node-logs-models/node-logs-models.component.ts","../../src/node/node-logs-models/node-logs-models.component.html","../../src/node/node-missing-lookup-factors/node-missing-lookup-factors.component.ts","../../src/node/node-missing-lookup-factors/node-missing-lookup-factors.component.html","../../src/node/node-value-details/node-value-details.component.ts","../../src/node/node-value-details/node-value-details.component.html","../../src/node/node.module.ts","../../src/cycles/cycles-functional-unit-measure/cycles-functional-unit-measure.component.ts","../../src/cycles/cycles-functional-unit-measure/cycles-functional-unit-measure.component.html","../../src/cycles/cycles-suggest-form/cycles-suggest-form.component.ts","../../src/cycles/cycles-suggest-form/cycles-suggest-form.component.html","../../src/cycles/cycles-activity-logs/cycles-activity-logs.component.ts","../../src/cycles/cycles-activity-logs/cycles-activity-logs.component.html","../../src/cycles/cycles-activity/cycles-activity.component.ts","../../src/cycles/cycles-activity/cycles-activity.component.html","../../src/cycles/cycles-completeness/cycles-completeness.component.ts","../../src/cycles/cycles-completeness/cycles-completeness.component.html","../../src/cycles/cycles-emissions-chart/cycles-emissions-chart.component.ts","../../src/cycles/cycles-emissions-chart/cycles-emissions-chart.component.html","../../src/cycles/cycles-emissions-logs/cycles-emissions-logs.component.ts","../../src/cycles/cycles-emissions-logs/cycles-emissions-logs.component.html","../../src/cycles/cycles-emissions/cycles-emissions.component.ts","../../src/cycles/cycles-emissions/cycles-emissions.component.html","../../src/cycles/cycles-practices-logs/cycles-practices-logs.component.ts","../../src/cycles/cycles-practices-logs/cycles-practices-logs.component.html","../../src/cycles/cycles-practices/cycles-practices.component.ts","../../src/cycles/cycles-practices/cycles-practices.component.html","../../src/cycles/cycles-result/cycles-result.component.ts","../../src/cycles/cycles-result/cycles-result.component.html","../../src/cycles/cycles.module.ts","../../src/files/files-error.model.ts","../../src/files/files-form.model.ts","../../src/files/files-error-summary.model.ts","../../src/sites/sites-maps/sites-maps.component.ts","../../src/sites/sites-maps/sites-maps.component.html","../../src/sites/sites.model.ts","../../src/sites/sites-measurements-logs/sites-measurements-logs.component.ts","../../src/sites/sites-measurements-logs/sites-measurements-logs.component.html","../../src/sites/sites-measurements/sites-measurements.component.ts","../../src/sites/sites-measurements/sites-measurements.component.html","../../src/sites/sites.module.ts","../../src/users/users.service.ts","../../src/files/files-form/files-form.component.ts","../../src/files/files-form/files-form.component.html","../../src/files/files.module.ts","../../src/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.ts","../../src/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.html","../../src/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.ts","../../src/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.html","../../src/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.ts","../../src/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.html","../../src/impact-assessments/impact-assessments-products/impact-assessments-products.component.ts","../../src/impact-assessments/impact-assessments-products/impact-assessments-products.component.html","../../src/impact-assessments/impact-assessments.module.ts","../../src/node/node-csv.service.ts","../../src/search/search.module.ts","../../src/hestia-earth-ui-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeAuthService {\n private _token?: string;\n\n public set token(token: string) {\n this._token = token;\n }\n\n public get headers(): {[header: string]: string} {\n return this._token ? { 'X-ACCESS-TOKEN': this._token } : {};\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome';\nimport {\n faClone as farClone,\n faCircle as farCircle,\n faIdBadge as farIdBadge\n} from '@fortawesome/free-regular-svg-icons';\nimport {\n faAngleDoubleLeft,\n faAngleDoubleRight,\n faAngleDown,\n faAngleLeft,\n faAngleRight,\n faBookOpen,\n faBuilding,\n faCalculator,\n faChartBar,\n faCheck,\n faClipboard,\n faClipboardList,\n faClone,\n faComments,\n faDownload,\n faDrawPolygon,\n faEdit,\n faExclamationTriangle,\n faExternalLinkAlt,\n faFilter,\n faList,\n faLongArrowAltDown,\n faLongArrowAltUp,\n faLongArrowAltLeft,\n faLongArrowAltRight,\n faMap,\n faMapMarked,\n faMapMarkedAlt,\n faPlus,\n faPlusCircle,\n faSearch,\n faSeedling,\n faSpellCheck,\n faSpinner,\n faTimes,\n faUser\n} from '@fortawesome/free-solid-svg-icons';\n\n@NgModule({\n imports: [\n CommonModule,\n FontAwesomeModule\n ],\n exports: [\n FontAwesomeModule\n ]\n})\nexport class HeFontawesomeModule {\n constructor(library: FaIconLibrary) {\n library.addIcons(\n // free-regular\n farClone,\n farCircle,\n farIdBadge,\n // free-solid\n faAngleDoubleLeft,\n faAngleDoubleRight,\n faAngleDown,\n faAngleLeft,\n faAngleRight,\n faBookOpen,\n faBuilding,\n faCalculator,\n faChartBar,\n faCheck,\n faClipboard,\n faClipboardList,\n faClone,\n faComments,\n faDownload,\n faDrawPolygon,\n faEdit,\n faExclamationTriangle,\n faExternalLinkAlt,\n faFilter,\n faList,\n faLongArrowAltDown,\n faLongArrowAltUp,\n faLongArrowAltLeft,\n faLongArrowAltRight,\n faMap,\n faMapMarked,\n faMapMarkedAlt,\n faPlus,\n faPlusCircle,\n faSearch,\n faSeedling,\n faSpellCheck,\n faSpinner,\n faTimes,\n faUser\n );\n }\n}\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { Meta } from '@angular/platform-browser';\n\n@Component({\n selector: 'he-social-tags',\n templateUrl: './social-tags.component.html',\n styleUrls: ['./social-tags.component.scss']\n})\nexport class SocialTagsComponent implements OnInit {\n @Input()\n private config: {\n 'og:type'?: string;\n 'og:url'?: string;\n 'og:title'?: string;\n 'og:description'?: string;\n 'og:image'?: string;\n } = {};\n\n @HostBinding('class')\n public classes = 'is-hidden';\n\n constructor(\n private meta: Meta\n ) { }\n\n ngOnInit() {\n this.meta.addTag({ charset: 'UTF-8' });\n\n const config = {\n 'og:url': window.location.href.split('?')[0],\n ...this.config\n };\n Object.entries(config).map(([name, content]) => {\n this.meta.updateTag({ name, content });\n if (name === 'og:description') {\n this.meta.updateTag({ name: 'description', content });\n }\n });\n }\n}\n","<span></span>\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nexport interface IToast {\n id: number;\n message: string;\n duration: number;\n color: 'success'|'danger';\n showRawMessage?: boolean;\n}\n\nlet toastId = 0;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeToastService {\n toasts = new ReplaySubject<IToast>(1);\n\n success(message: string, duration = 3000) {\n this.toasts.next({\n id: ++toastId,\n message,\n duration,\n color: 'success',\n showRawMessage: true\n });\n }\n\n error(message: string, showRawMessage = true, duration = 3000) {\n this.toasts.next({\n id: ++toastId,\n message: (`${message}` || '').trim(),\n duration,\n color: 'danger',\n showRawMessage\n });\n }\n}\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { HeToastService, IToast } from '../toast.service';\n\ninterface IToastTimeout extends IToast {\n timeout?: any;\n}\n\n@Component({\n selector: 'he-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss']\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n public toasts: IToastTimeout[] = [];\n\n constructor(\n private toastService: HeToastService\n ) {}\n\n ngOnInit() {\n this.subscriptions.push(this.toastService.toasts.subscribe(toast => this.add(toast)));\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n private add(toast: IToastTimeout) {\n this.toasts.push(toast);\n if (toast.duration) {\n toast.timeout = setTimeout(() => this.dismiss(toast), toast.duration);\n }\n }\n\n public dismiss(toast: IToastTimeout) {\n this.toasts.splice(this.toasts.findIndex(val => val.id === toast.id), 1);\n }\n}\n","<div class=\"mb-3 columns is-centered is-vcentered\">\n <div class=\"notification is-{{toast.color}}\" role=\"alert\" *ngFor=\"let toast of toasts\">\n <button class=\"delete\" aria-label=\"delete\" (click)=\"dismiss(toast)\">\n <span aria-hidden=\"true\">×</span>\n </button>\n <strong [ngSwitch]=\"toast.color\">\n <ng-container *ngSwitchCase=\"'danger'\">\n <ng-container [ngSwitch]=\"toast.message\">\n <span *ngSwitchCase=\"'Unauthorized'\">You are not allowed to perform this action.</span>\n <span *ngSwitchCase=\"'form-invalid'\">Please fix all the errors on this page.</span>\n <span *ngSwitchCase=\"'users-email-already-taken'\">Email already taken.</span>\n <span *ngSwitchCase=\"'users-auth-already-taken'\">Account already connected.</span>\n <span *ngSwitchDefault>\n <span *ngIf=\"toast.showRawMessage\">{{toast.message}}</span>\n <span [class.is-hidden]=\"toast.showRawMessage\">An unknown error occurred. Please try again later.</span>\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <span *ngIf=\"toast.showRawMessage\">{{toast.message}}</span>\n <span [class.is-hidden]=\"toast.showRawMessage\">An unknown error occurred. Please try again later.</span>\n </ng-container>\n </strong>\n </div>\n</div>\n","/* eslint-disable @angular-eslint/directive-selector */\nimport { Directive, Input, EmbeddedViewRef, OnChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[bindOnce]'\n})\nexport class BindOnceDirective implements OnChanges {\n private embeddedViewRef: EmbeddedViewRef<void>;\n\n @Input()\n public bindOnce!: any;\n\n constructor(\n templateRef: TemplateRef<void>,\n viewContainerRef: ViewContainerRef\n ) {\n this.embeddedViewRef = viewContainerRef.createEmbeddedView(templateRef);\n this.embeddedViewRef.detach();\n }\n\n public ngOnChanges() {\n this.embeddedViewRef.detectChanges();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nconst shouldDefault = {\n string: (value: string) => !value,\n number: (value: number) => !value && value !== 0,\n boolean: (value: boolean) => !value,\n object: (value: any) => !value || !Object.keys(value).length,\n undefined: () => true\n};\n\n@Pipe({\n name: 'default'\n})\nexport class DefaultPipe implements PipeTransform {\n transform(value, defaultValue) {\n return shouldDefault[typeof value](value) ? defaultValue : value;\n }\n}\n","const get = require('lodash.get');\nimport { getColor } from 'random-material-color';\nimport {\n NodeType, Term, JSONLD, ICycleJSONLD, ISiteJSONLD, IImpactAssessmentJSONLD, EmissionMethodTier\n} from '@hestia-earth/schema';\nimport { fileToExt } from '@hestia-earth/api';\nimport { isEmpty, unique } from '@hestia-earth/utils';\n\nexport const gitHome = 'https://gitlab.com/hestia-earth';\nexport const gitRawBaseUrl = 'https://glcdn.githack.com/hestia-earth';\nexport const gitBranch = () => ['dev', 'staging'].some(env => baseUrl().includes(env)) ? 'develop' : 'master';\n\nexport const isChrome = () => window.navigator.userAgent.includes('Chrome');\n\nexport const baseUrl = () =>\n window.location.origin.includes('localhost') ?\n 'https://www-dev.hestia.earth' :\n window.location.origin.includes('hestia.earth') ?\n window.location.origin :\n 'https://www.hestia.earth';\n\nexport const isExternal = () => baseUrl() !== window.location.origin;\n\nconst parseErrorStatus = (error: any) => (error?.statusText || '').toLowerCase().replace(/\\s/g, '-');\n\nconst parseErrorMessage = (error: any) =>\n get(error, 'error.error', get(error, 'error.message', get(error, 'error', get(error, 'message', error))));\n\nexport const handleAPIError = (error: any) => {\n try {\n error = parseErrorMessage(error);\n }\n catch (_) { }\n throw error;\n};\n\nexport const errorText = (error: any): string => {\n if (typeof error === 'string') {\n return error;\n }\n const err = parseErrorMessage(error);\n return parseErrorStatus(err) || err;\n};\n\nexport const filterParams = (obj: any) => {\n const res: {\n [x: string]: string;\n } = {};\n Object.keys(obj).sort().forEach(key => {\n const value = obj[key];\n if (value && value !== 'undefined') {\n res[key] = `${value}`;\n }\n });\n return res;\n};\n\nexport const waitFor = (variable: string, callback: () => void) => {\n if (variable in window) {\n return callback();\n }\n setTimeout(() => waitFor(variable, callback), 100);\n};\n\nexport const bottom = (element: HTMLElement) => element.offsetTop + element.getBoundingClientRect().height;\n\nexport const isScrolledBelow = (element: HTMLElement) => element ? window.scrollY > bottom(element) : false;\n\nexport const scrollToEl = (id: string, retries = 0) => {\n const el = document.getElementById(id);\n setTimeout(() => el ? el.scrollIntoView() : (retries < 10 ? scrollToEl(id, retries + 1) : null), 100);\n};\n\nexport const scrollTop = () => window.scrollTo(0, 0);\n\nexport const safeJSONParse = <T>(value: string, defaultValue?: any) => {\n try {\n return typeof value === 'string' ? JSON.parse(value) as T : value;\n }\n catch (err) {\n return defaultValue;\n }\n};\n\nexport const safeJSONStringify = (value: string) => typeof value === 'string' ? value : JSON.stringify(value);\n\nexport const arrayValue = (values: any[], isAverage: boolean) =>\n (values || []).reduce((prev: number, curr) => prev + parseFloat(`${curr}`), 0) / (isAverage ? values.length : 1);\n\nexport const propertyValue = (value: string | number | ((string | number)[]), isAverage = false): number =>\n typeof value === 'undefined' || value === null ?\n null as any :\n (\n Array.isArray(value) ? arrayValue(value, isAverage) : parseFloat(`${value}`)\n );\n\nexport const dataValue = (data: any, index: number, property: string) => {\n try {\n return propertyValue(data[property][index].value);\n }\n catch (err) {\n return null;\n }\n};\n\nexport interface IGroupedNode<T> {\n nodes: T[];\n index: number;\n value: number[];\n dates?: any[];\n sd?: number[];\n min?: number[];\n max?: number[];\n inputs?: any[];\n depthUpper?: number[];\n depthLower?: number[];\n startDate?: string[];\n endDate?: string[];\n};\n\nexport interface IGroupedNodesValues<T> {\n [nodeId: string]: IGroupedNode<T>;\n}\n\nexport interface IGroupedNodesValue<T> {\n term: Term;\n /**\n * Enable ordering ny methodTier\n */\n methodTierOrder: number;\n values: IGroupedNodesValues<T>;\n originalValues: {\n [nodeId: string]: {\n value: number;\n };\n };\n};\n\nexport interface IGroupedNodes<T> {\n [termId: string]: IGroupedNodesValue<T>;\n}\n\nexport interface IGroupedKeys<T> {\n key: string;\n value: IGroupedNodesValue<T>;\n}\n\nexport const grouppedKeys = <T>(values: IGroupedNodes<T>): IGroupedKeys<T>[] =>\n Object.entries(values).map(([key, value]) => ({ key, value }));\n\nconst concatBlankNodeValue = (value: any, newValue: any) => {\n const valueArray = Array.isArray(value) ? value : [value];\n const newValueArray = Array.isArray(newValue) ? newValue : [newValue];\n return [...valueArray, ...newValueArray];\n};\n\nconst methodTierOrder = (methodTier: EmissionMethodTier) => [\n EmissionMethodTier.measured,\n EmissionMethodTier['tier 3'],\n EmissionMethodTier['tier 2'],\n EmissionMethodTier['tier 1'],\n EmissionMethodTier.background\n].indexOf(methodTier);\n\nconst isMethodModelAllowed = (node: any, filterMethod?: Term) =>\n !filterMethod || !node['methodModel'] || node['methodModel']['@id'] === filterMethod['@id'];\n\nexport const grouppedValueKeys = [\n 'dates', 'sd', 'min', 'max', 'inputs', 'depthUpper', 'depthLower', 'startDate', 'endDate',\n 'methodTier', 'methodModel'\n];\n\nexport const groupNodesByTerm = <T extends ICycleJSONLD | IImpactAssessmentJSONLD | ISiteJSONLD, R>(\n nodes: T[] = [],\n key: 'impacts' | 'emissionsResourceUse' | 'inputs' | 'products' | 'practices' | 'emissions' | 'measurements',\n originalValues: T[] = [],\n filterMethod?: Term\n): IGroupedNodes<R> => {\n const groups: IGroupedNodes<R> = nodes.reduce((prev, node, index) => (node[key] || []).reduce((group, blankNode) => {\n if (!isMethodModelAllowed(blankNode, filterMethod)) {\n return group;\n }\n\n const nodeId = node['@id'];\n const termId = blankNode.term['@id'];\n group[termId] = group[termId] || {\n term: blankNode.term,\n methodTierOrder: methodTierOrder(blankNode.methodTier),\n values: {},\n originalValues: {}\n };\n group[termId].values[nodeId] = group[termId].values[nodeId] || { index, nodes: [], value: [] };\n group[termId].values[nodeId].nodes.push(blankNode);\n group[termId].values[nodeId].value = concatBlankNodeValue(\n group[termId].values[nodeId].value,\n blankNode.value\n );\n grouppedValueKeys.forEach(arrayKey => {\n const newValue = get(blankNode, arrayKey, []);\n group[termId].values[nodeId][arrayKey] = [\n ...(group[termId].values[nodeId][arrayKey] || []),\n ...(Array.isArray(newValue) ? newValue : [newValue])\n ];\n });\n return group;\n }, prev), {} as IGroupedNodes<R>);\n\n // compile original values\n Object.values(groups).map(group => {\n Object.keys(group.values).map(nodeId => {\n const { index } = group.values[nodeId];\n const termId = group.term['@id'];\n const originalValue = get(originalValues, `[${index}].${key}`, []).filter((val: any) => val.term['@id'] === termId);\n if (originalValue.length > 0) {\n const value = originalValue.reduce((array: any[], curr: any) => concatBlankNodeValue(\n array,\n curr.value\n ), []);\n group.originalValues[nodeId] = { value: propertyValue(value) };\n }\n });\n });\n\n return groups;\n};\n\nexport const ellipsis = (text = '', maxlength = 20) =>\n text.length > maxlength ? `${text.substring(0, maxlength)}...` : text;\n\nconst mapsQuery = 'https://www.google.com/maps/search/?api=1&query=';\n\nexport const mapsUrl = (location?: { lat?: number; lng?: number; name?: string }) =>\n location ? (\n location.lat && location.lng ?\n `${mapsQuery}${location.lat},${location.lng}` :\n (location.name ? `${mapsQuery}${encodeURI(location.name)}` : undefined)\n ) : undefined;\n\nexport const keyToLabel = (key: string) =>\n `${key[0].toUpperCase()}${\n key.replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/([_])([a-zA-Z])/g, g => ` ${g[1].toUpperCase()}`)\n .substring(1)\n }`;\n\nexport const toDashCase = (value?: string) =>\n value ?\n value\n // handle dates followed by capital letter\n .replace(/([\\d]{4})([A-Z]{1})/g, g => `${g.substring(0, 4)}-${g[4].toLowerCase()}`)\n // handle molecules\n .replace(/([\\d]{1}[A-Z]{1})/g, g => g.toLowerCase())\n // handle all capital letters\n .replace(/([A-Z])/g, g => `-${g[0].toLowerCase()}`)\n // handle years\n .replace(/([0-9]{4})/g, g => `-${g}`) :\n null;\n\nconst nodeDefaultLabel: {\n [type in NodeType]?: (data: JSONLD<any>) => string;\n} = {\n [NodeType.ImpactAssessment]: ({ name, country, endDate, product }: IImpactAssessmentJSONLD) =>\n name ? name.replace(`${product?.name}, `, '') : [\n product?.name,\n country?.name,\n endDate\n ].filter(Boolean).join(', '),\n [NodeType.Site]: ({ name, description }: ISiteJSONLD) => name || description!\n};\n\nexport const defaultLabel = (node?: any) =>\n node ? (\n node['@type'] in nodeDefaultLabel ? nodeDefaultLabel[node['@type']](node) : node.name\n ) || node['@id'] || node.id : '';\n\nexport const itemColor = (index: number) => getColor({ text: `${index}` });\n\nexport const listColor = <T>(_v: T, index: number): string => itemColor(index);\n\nconst reduceValues = (values: any[]) =>\n values.length ? values.reduce((p, v) => p + propertyValue(v.value), 0) : undefined;\n\nexport const formatDiffValues = (originalValues: any[] = [], recalculatedValues: any[] = []) => {\n const originalValuesFiltered = originalValues.filter((value) => !value.deleted);\n const recalculatedValuesFiltered = recalculatedValues.filter((value) => !value.deleted);\n const terms = unique([...originalValuesFiltered, ...recalculatedValuesFiltered].map((v) => v.term['@id'])).sort();\n const values = terms.map((termId) => {\n const original = originalValuesFiltered.filter((v) => termId === v.term['@id']);\n const recalculated = recalculatedValuesFiltered.filter((v) => termId === v.term['@id']);\n const { term } = original[0] || recalculated[0] || { term: { '@id': termId } };\n return {\n term,\n original: reduceValues(original),\n recalculated: reduceValues(recalculated)\n };\n });\n return values;\n};\n\nexport const emptyValue = (value: any) => isEmpty(value) || isNaN(propertyValue(value));\n\nexport const repeat = (times = 0) => (Array.from(Array(times), Math.random));\n\nexport const filenameWithoutExt = (filename = '') => {\n const file = fileToExt(filename, '');\n // remove last .\n return file.endsWith('.') ? file.substring(0, file.length - 1) : file;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { ellipsis } from './utils';\n\n@Pipe({\n name: 'ellipsis'\n})\nexport class EllipsisPipe implements PipeTransform {\n transform(value: any, maxLength?: number): unknown {\n return ellipsis(`${value}`, maxLength);\n }\n}\n","import { Term, ITermJSONLD, TermTermType, isExpandable } from '@hestia-earth/schema';\n\nimport { keyToLabel } from '../common/utils';\n\nexport const termProperties = (term: Term | ITermJSONLD) => Object.keys(term).filter(\n key => !isExpandable(term[key]) && ![\n 'pinned', 'expanded', 'extended', 'selected', 'loading',\n '_score', '@type', '@id', '@context', 'createdAt',\n 'name', 'synonyms', 'termType', 'location', 'properties', 'schemaVersion'\n ].includes(key)\n);\n\nexport const findPropertyById = ({ defaultProperties }: Term | ITermJSONLD, key: keyof ITermJSONLD) =>\n (defaultProperties || []).find(({ term }) => term!['@id'] === key);\n\nexport const termLocationName = ({ gadmFullName }: Term | ITermJSONLD) => ({\n name: gadmFullName || ''\n});\n\nexport const termLocation = ({ latitude, longitude }: Term | ITermJSONLD) => ({\n lat: latitude!,\n lng: longitude!\n});\n\nconst termTypeToLabel: {\n [type in TermTermType]?: string;\n} = {\n [TermTermType.methodEmissionResourceUse]: 'Method (Emissions)',\n [TermTermType.methodMeasurement]: 'Method (Measurement)',\n [TermTermType.pesticideAI]: 'Pesticide Active Ingredient',\n [TermTermType.standardsLabels]: 'Standards & Labels',\n [TermTermType.usdaSoilType]: 'USDA Soil Type'\n};\n\nexport const termTypeLabel = (type: TermTermType | string = 'N/A'): string =>\n type in termTypeToLabel ? termTypeToLabel[type] : keyToLabel(type);\n\nexport interface ITermTypeElem {\n label?: string;\n termType: TermTermType | string;\n children?: ITermTypeElem[];\n visible?: boolean;\n count?: number;\n}\n\nconst termTypesToChildren = (termTypes: TermTermType[]) =>\n termTypes.map(termType => ({ label: termTypeLabel(termType), termType } as ITermTypeElem));\n\nconst groups: {\n [type: string]: ITermTypeElem;\n} = Object.freeze({\n [TermTermType.emission]: {\n label: 'Emissions & Resource Use',\n termType: 'Emissions & Resource Use',\n children: termTypesToChildren([\n TermTermType.emission,\n TermTermType.resourceUse,\n TermTermType.model,\n TermTermType.characterisedIndicator,\n TermTermType.endpointIndicator,\n TermTermType.methodEmissionResourceUse\n ])\n },\n [TermTermType.region]: {\n label: termTypeLabel(TermTermType.region),\n termType: TermTermType.region,\n children: []\n },\n infrastructure: {\n label: 'Infrastructure & Equipment',\n termType: 'Infrastructure & Equipment',\n children: termTypesToChildren([\n TermTermType.building,\n TermTermType.cropProtection,\n TermTermType.cropSupport,\n TermTermType.irrigation,\n TermTermType.machinery\n ])\n },\n input: {\n label: 'Inputs',\n termType: 'Inputs',\n children: termTypesToChildren([\n TermTermType.antibiotic,\n TermTermType.electricity,\n TermTermType.fuel,\n TermTermType.material,\n TermTermType.inorganicFertilizer,\n TermTermType.organicFertilizer,\n TermTermType.other,\n TermTermType.pesticideAI,\n TermTermType.pesticideBrandName,\n TermTermType.soilAmendment,\n TermTermType.transport,\n TermTermType.water\n ])\n },\n [TermTermType.measurement]: {\n label: 'Measurements',\n termType: 'Measurements',\n children: termTypesToChildren([\n TermTermType.measurement,\n TermTermType.soilTexture,\n TermTermType.soilType,\n TermTermType.usdaSoilType,\n TermTermType.methodMeasurement\n ])\n },\n practice: {\n label: 'Practices',\n termType: 'Production Practices',\n children: termTypesToChildren([\n TermTermType.animalManagement,\n TermTermType.aquacultureManagement,\n TermTermType.biodiversity,\n TermTermType.cropEstablishment,\n TermTermType.cropResidueManagement,\n TermTermType.excretaManagement,\n TermTermType.landUseManagement,\n TermTermType.operation,\n TermTermType.standardsLabels,\n TermTermType.system,\n TermTermType.tillage,\n TermTermType.waterRegime,\n ])\n },\n product: {\n label: 'Products',\n termType: 'Products',\n children: termTypesToChildren([\n TermTermType.crop,\n TermTermType.cropResidue,\n TermTermType.excreta,\n TermTermType.liveAnimal,\n TermTermType.liveAquaticSpecies,\n TermTermType.animalProduct,\n TermTermType.processedFood\n ])\n },\n [TermTermType.property]: {\n label: termTypeLabel(TermTermType.property),\n termType: TermTermType.property,\n children: []\n }\n});\n\nexport const termTypeGroups: ITermTypeElem[] = [\n groups.property,\n groups.region,\n groups.input,\n groups.emission,\n groups.product,\n groups.practice,\n groups.measurement,\n groups.infrastructure\n];\n\nconst termToParent: {\n [type in TermTermType]?: string;\n} = {\n [TermTermType.property]: 'Properties',\n [TermTermType.region]: 'Geographies'\n};\n\nexport const termChildToParent = (termType: string): ITermTypeElem =>\n termTypeGroups.find(({ children }) => (children || []).some(child => child.termType === termType)) ||\n { termType: termToParent[termType] };\n\nexport const sortOrder: TermTermType[] = [\n TermTermType.property,\n TermTermType.crop,\n TermTermType.cropResidue,\n TermTermType.animalProduct,\n TermTermType.liveAnimal,\n TermTermType.liveAquaticSpecies,\n TermTermType.processedFood,\n TermTermType.emission,\n TermTermType.resourceUse,\n TermTermType.inorganicFertilizer,\n TermTermType.organicFertilizer,\n TermTermType.soilAmendment,\n TermTermType.soilTexture,\n TermTermType.water,\n TermTermType.material,\n TermTermType.antibiotic,\n TermTermType.electricity,\n TermTermType.fuel,\n TermTermType.aquacultureManagement,\n TermTermType.biodiversity,\n TermTermType.cropResidueManagement,\n TermTermType.animalManagement,\n TermTermType.waterRegime,\n TermTermType.system,\n TermTermType.tillage,\n TermTermType.landUseManagement,\n TermTermType.operation,\n TermTermType.cropEstablishment,\n TermTermType.measurement,\n TermTermType.soilType,\n TermTermType.usdaSoilType,\n TermTermType.methodMeasurement,\n TermTermType.building,\n TermTermType.cropProtection,\n TermTermType.cropSupport,\n TermTermType.irrigation,\n TermTermType.machinery,\n TermTermType.model,\n TermTermType.characterisedIndicator,\n TermTermType.endpointIndicator,\n TermTermType.methodEmissionResourceUse,\n TermTermType.other,\n TermTermType.region,\n TermTermType.pesticideAI,\n TermTermType.pesticideBrandName,\n TermTermType.standardsLabels\n];\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { termTypeLabel } from '../terms/terms.model';\n\n@Pipe({\n name: 'keyToLabel'\n})\nexport class KeyToLabelPipe implements PipeTransform {\n transform(value: string) {\n // using termTypeLabel here which defaults to `keyToLabel` function\n return termTypeLabel(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'keys'\n})\nexport class KeysPipe implements PipeTransform {\n transform(values: any, sort = false): any {\n const keys = Object.entries(values).map(([key, value]) => ({ key, value }));\n if (sort) {\n keys.sort((a, b) => a.key.localeCompare(b.key));\n }\n return keys;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as pluralize from 'pluralize';\n\n@Pipe({\n name: 'pluralize'\n})\nexport class PluralizePipe implements PipeTransform {\n transform(value: string, times = 0): unknown {\n return pluralize(value, times);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isUndefined, isNumber, toPrecision } from '@hestia-earth/utils';\n\n@Pipe({\n name: 'precision'\n})\nexport class PrecisionPipe implements PipeTransform {\n transform(value: string|number, precision?: string|number) {\n return isUndefined(value) ?\n null : (\n isNumber(value) ?\n `${toPrecision(parseFloat(`${value}`), parseInt(`${precision}`, 10))}`.replace(/\\.00$/, '') :\n value\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { HeFontawesomeModule } from '../fontawesome/fontawesome.module';\n\nimport { SocialTagsComponent } from './social-tags/social-tags.component';\nimport { ToastComponent } from './toast/toast.component';\nimport { BindOnceDirective } from './bind-once.directive';\nimport { DefaultPipe } from './default.pipe';\nimport { EllipsisPipe } from './ellipsis.pipe';\nimport { KeyToLabelPipe } from './key-to-label.pipe';\nimport { KeysPipe } from './keys.pipe';\nimport { PluralizePipe } from './pluralize.pipe';\nimport { PrecisionPipe } from './precision.pipe';\n\nconst components = [\n SocialTagsComponent,\n ToastComponent,\n BindOnceDirective,\n DefaultPipe,\n EllipsisPipe,\n KeysPipe,\n PluralizePipe,\n KeyToLabelPipe,\n PrecisionPipe\n];\n\n@NgModule({\n declarations: components,\n exports: [\n HeFontawesomeModule,\n ...components\n ],\n imports: [\n CommonModule, FormsModule, RouterModule,\n HeFontawesomeModule\n ]\n})\nexport class HeCommonLightModule { }\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\n\nexport const HE_API_BASE_URL = new InjectionToken<string>('HE_API_BASE_URL');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeCommonService {\n constructor(\n @Inject(HE_API_BASE_URL) private _apiBaseUrl: string\n ) {}\n\n public get apiBaseUrl() {\n return this._apiBaseUrl || '/api';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { DataState, nodeTypeToParam } from '@hestia-earth/api';\nimport { ICycleJSONLD, IImpactAssessmentJSONLD, ISiteJSONLD, NodeType, TermTermType } from '@hestia-earth/schema';\n\nimport { termChildToParent } from '../terms/terms.model';\nimport { filterParams, handleAPIError } from '../common/utils';\nimport { HeCommonService } from '../common/common.service';\nimport { baseUrl } from '../common/utils';\nimport { HeAuthService } from '../auth/auth.service';\n\nconst nodeTypeUrl = (apiBaseUrl: string, type?: NodeType) => type ? `${apiBaseUrl}/${nodeTypeToParam(type)}` : '';\n\n/**\n * Get the full url to fetch the node data.\n *\n * @param apiBaseUrl The url of the API hosting the data.\n * @param node The node with a type, id and optionally a dataState\n * @returns The full url.\n */\nexport const nodeUrl = (apiBaseUrl: string, { dataState, ...node }: IJSONNode) =>\n `${nodeTypeUrl(apiBaseUrl, node['@type'] || node.type)}/${node['@id'] || node.id}${\n dataState ? `?dataState=${dataState}` : ''\n }`;\n\nexport const nodeLogsUrl = (apiBaseUrl: string, { dataState, ...node }: IJSONNode) =>\n `${nodeUrl(apiBaseUrl, node)}/log${dataState ? `?dataState=${dataState}` : ''}`;\n\nexport const lookupUrl = (filename: string) =>\n filename.startsWith('http') ? filename : `${baseUrl()}/glossary/lookups/${filename}.csv`;\n\nexport const termTypeLookupUrl = (termType: TermTermType) =>\n `${baseUrl()}/glossary/${termChildToParent(termType).termType}/${termType}.csv`;\n\nexport interface IJSONNode {\n '@type'?: NodeType;\n '@id'?: string;\n type?: NodeType;\n id?: string;\n dataState?: DataState;\n}\n\nexport interface IRelatedNode {\n '@type': NodeType;\n '@id': string;\n [x: string]: string;\n}\n\nexport interface IJSONData {\n [NodeType.Cycle]?: ICycleJSONLD[];\n [NodeType.Site]?: ISiteJSONLD[];\n [NodeType.ImpactAssessment]?: IImpactAssessmentJSONLD[];\n}\n\nexport interface INodeMissingLookupLog {\n filename: string;\n termId: string;\n column: string;\n // attributes linked to the models\n model?: string;\n term?: string;\n key?: string;\n}\n\nexport interface INodeTermLogs {\n [modelKey: string]: {\n isKey: boolean;\n shouldRun?: boolean;\n missingLookups?: INodeMissingLookupLog[];\n requirements?: { [key: string]: any };\n logs?: { [key: string]: any };\n [key: string]: any;\n };\n}\n\nexport interface INodeLogs {\n [term: string]: INodeTermLogs;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeNodeService {\n constructor(\n protected http: HttpClient,\n protected authService: HeAuthService,\n protected commonService: HeCommonService\n ) { }\n\n get$<T>({ dataState, ...node }: IJSONNode) {\n return this.http.get<T>(this.nodeUrl(node), {\n headers: this.authService.headers,\n params: filterParams({ dataState })\n });\n }\n\n get<T>(node: IJSONNode, defaultForState = true) {\n return this.get$<T>(node)\n .toPromise()\n .catch(() => node.dataState && defaultForState ? ((node as any) as T) : ({}) as T);\n }\n\n getLog({ dataState, ...node }: IJSONNode) {\n return this.http.get(`${this.nodeUrl(node)}/log`, {\n headers: this.authService.headers,\n responseType: 'text',\n params: filterParams({ dataState })\n }).pipe(\n catchError(() => of(''))\n );\n }\n\n getMissingLookupsLog({ dataState, ...node }: IJSONNode) {\n return this.http.get<INodeMissingLookupLog[]>(`${this.nodeUrl(node)}/log/lookups`, {\n headers: this.authService.headers,\n params: filterParams({ dataState })\n }).toPromise().catch(handleAPIError);\n }\n\n getModelsLog({ dataState, ...node }: IJSONNode) {\n return this.http.get<any>(`${this.nodeUrl(node)}/log/models`, {\n headers: this.authService.headers,\n params: filterParams({ dataState })\n }).toPromise().catch(handleAPIError);\n }\n\n triggerPipeline({ dataState, ...node }: IJSONNode) {\n return this.http.post(`${this.nodeUrl(node)}/pipeline`, dataState ? { dataState } : {}, {\n headers: this.authService.headers\n }).toPromise().catch(handleAPIError);\n }\n\n downloadRaw<T = any>(url: string, responseType: any = 'json') {\n return this.http.get<T>(url, { responseType })\n .toPromise()\n .catch(() => (responseType === 'json' ? ({}) : '') as T);\n }\n\n public nodeTypeUrl(type: any) {\n return nodeTypeUrl(this.commonService.apiBaseUrl, type);\n }\n\n public nodeUrl(node: IJSONNode) {\n return nodeUrl(this.commonService.apiBaseUrl, node);\n }\n\n public nodeLogsUrl(node: IJSONNode) {\n return nodeLogsUrl(this.commonService.apiBaseUrl, node);\n }\n\n public async downloadLookup(filename: string) {\n try {\n const url = lookupUrl(filename);\n return this.downloadRaw<string>(url, 'text');\n }\n catch (_err) {\n return null;\n }\n }\n\n public async lookupLink(termType: TermTermType) {\n try {\n const data = await this.downloadLookup(termType);\n return data?.startsWith('term.id') ? lookupUrl(termType) : null;\n }\n catch (_err) {\n return null;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { forkJoin, from, of, ReplaySubject } from 'rxjs';\nimport { catchError, map, take } from 'rxjs/operators';\nimport { NodeType, Product, Term, TermTermType } from '@hestia-earth/schema';\nimport * as csvtojson from 'csvtojson';\n\nimport { HeNodeService } from '../node/node.service';\nimport { gitBranch, gitHome, gitRawBaseUrl } from '../common/utils';\n\nconst gitUrl = () => `${gitHome}/hestia-aggregation-engine/-/blob/${gitBranch()}`;\nconst rawUrl = () => `${gitRawBaseUrl}/hestia-aggregation-engine/-/raw/${gitBranch()}`;\n\nexport const lookups = Object.freeze({\n cropYield: 'region-crop-cropGroupingFaostatProduction-yield',\n cropGroupingColumn: 'cropGroupingFaostatProduction'\n});\n\nexport interface IAggregationModel {\n type: NodeType;\n /**\n * Path to the implementation (code) of the model.\n */\n path: string;\n /**\n * Path to the documentation of the model.\n */\n docPath: string;\n dataPath: string;\n '@id'?: string;\n}\n\ninterface IAggregationModelLinks {\n links: IAggregationModel[];\n}\n\nexport interface ILookups {\n crop: any[];\n cropYield: any[];\n}\n\nexport interface ITriggerCountryParams {\n country: Term;\n product: Product;\n '@type'?: NodeType;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeAggregationEngineService {\n private modelsLoading = false;\n private modelsLoaded = false;\n private _models = new ReplaySubject<IAggregationModel[]>(1);\n\n private lookupsLoading = false;\n private lookupsLoaded = false;\n private _lookups = new ReplaySubject<ILookups>(1);\n\n constructor(\n protected http: HttpClient,\n protected nodeService: HeNodeService\n ) {\n this.init();\n }\n\n private async init() {\n await this.loadModels().toPromise();\n }\n\n private loadModels() {\n this.modelsLoading = true;\n return this.http.get<IAggregationModelLinks>(`${rawUrl()}/model-links.json`).pipe(\n catchError(() => of({ links: [] } as IAggregationModelLinks)),\n map(({ links }) => {\n this._models.next(links.map(({ path: modelPath, docPath, ...link }) => ({\n ...link,\n path: `${gitUrl()}/${modelPath}`,\n docPath: `${gitUrl()}/${docPath}`\n })));\n this.modelsLoading = false;\n this.modelsLoaded = true;\n return links;\n })\n );\n }\n\n public get models$() {\n return this.modelsLoading || this.modelsLoaded ? this._models.asObservable() : this.loadModels();\n }\n\n public models() {\n return this.models$.pipe(take(1)).toPromise();\n }\n\n public model$(model: Partial<IAggregationModel>) {\n return this.models$.pipe(\n map(models => models.find(m => Object.entries(model).every(([key, value]) => value === m[key])))\n );\n }\n\n public model(model: Partial<IAggregationModel>) {\n return this.model$(model).pipe(take(1)).toPromise();\n }\n\n private async loadLookup(filename: string) {\n const data = await this.nodeService.downloadLookup(filename);\n return csvtojson({ delimiter: 'auto' }).fromString(data!);\n }\n\n private loadLookups() {\n return forkJoin({\n cropYield: from(this.loadLookup(lookups.cropYield)),\n crop: from(this.loadLookup(TermTermType.crop))\n }).pipe(\n map(values => {\n this._lookups.next(values);\n this.lookupsLoading = false;\n this.lookupsLoaded = true;\n return values;\n })\n );\n }\n\n public get lookups$() {\n return this.lookupsLoading || this.lookupsLoaded ? this._lookups.asObservable() : this.loadLookups();\n }\n\n public lookups() {\n return this.lookups$.pipe(take(1)).toPromise();\n }\n}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { of, ReplaySubject } from 'rxjs';\nimport { catchError, map, take } from 'rxjs/operators';\nimport { NodeType } from '@hestia-earth/schema';\n\nimport { baseUrl, toDashCase, gitHome, gitRawBaseUrl, gitBranch } from '../common/utils';\n\nexport const HE_ORCHESTRATOR_BASE_URL = new InjectionToken<string>('HE_ORCHESTRATOR_BASE_URL');\n\nconst gitUrl = () => `${gitHome}/hestia-engine-models/-/blob/${gitBranch()}`;\nconst rawUrl = () => `${gitRawBaseUrl}/hestia-engine-models/-/raw/${gitBranch()}`;\n\nexport const findConfigModels = ({ models }: IOrchestratorConfig, modelId: string, modelKey: string) =>\n models.flat().filter(({ value, key }) => modelId.startsWith(value) && (!modelKey || key === modelKey));\n\nexport const pathToApiDocsPath = (model: string, term?: string) =>\n [\n baseUrl(),\n 'docs',\n [\n '#hestia-calculation-models',\n toDashCase(model),\n toDashCase(term)\n ].filter(Boolean).join('-')\n ].join('/');\n\nexport interface IModel {\n /**\n * Path to the implementation (code) of the model.\n */\n path: string;\n /**\n * Path to the documentation of the model.\n */\n docPath: string;\n /**\n * Path to the API Documentation.\n */\n apiDocsPath?: string;\n /**\n * The name of the model used as `methodModel`.\n */\n model: string;\n /**\n * The term the model is associated with.\n */\n term?: string;\n /**\n * A key in the model if term does not exist.\n */\n modelKey?: string;\n}\n\ninterface IModelLinks {\n links: IModel[];\n}\n\nexport interface IOrchestratorModelConfig {\n key: string;\n model: string;\n value: string;\n}\n\nexport interface IOrchestratorConfig {\n models: IOrchestratorModelConfig[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeEngineService {\n private modelsLoading = false;\n private modelsLoaded = false;\n private _models = new ReplaySubject<IModel[]>(1);\n\n constructor(\n @Inject(HE_ORCHESTRATOR_BASE_URL) private _orchestratorBaseUrl: string,\n protected http: HttpClient\n ) {\n this.init();\n }\n\n private async init() {\n await this.loadModels().toPromise();\n }\n\n private loadModels() {\n this.modelsLoading = true;\n return this.http.get<IModelLinks>(`${rawUrl()}/model-links.json`).pipe(\n catchError(() => of({ links: [] } as IModelLinks)),\n map(({ links }) => {\n this._models.next(links.map(({ path, docPath, ...link }) => ({\n ...link,\n path: `${gitUrl()}/${path}`,\n docPath: `${gitUrl()}/${docPath}`,\n apiDocsPath: pathToApiDocsPath(link.model, link.term || link.modelKey)\n })));\n this.modelsLoading = false;\n this.modelsLoaded = true;\n return links;\n })\n );\n }\n\n public get models$() {\n return this.modelsLoading || this.modelsLoaded ? this._models.asObservable() : this.loadModels();\n }\n\n public models() {\n return this.models$.pipe(take(1)).toPromise();\n }\n\n public model$(model: Partial<IModel>) {\n return this.models$.pipe(\n map(models => models.find(m => Object.entries(model).every(([key, value]) => value === m[key])))\n );\n }\n\n public model(model: Partial<IModel>) {\n return this.model$(model).pipe(take(1)).toPromise();\n }\n\n public ochestratorConfig(type: NodeType) {\n return this.http.get<IOrchestratorConfig>(`${this._orchestratorBaseUrl}/${type}.json`, {\n params: { inline: false }\n }).toPromise();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport {\n Completeness, Infrastructure, Input as HestiaInput, Emission, Measurement, Practice, Product, Property, NodeType\n} from '@hestia-earth/schema';\nimport { of } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { HeAggregationEngineService } from '../../engine/aggregation-engine.service';\nimport { HeEngineService } from '../../engine/engine.service';\nimport { filterParams } from '../utils';\n\ntype blankNode = Completeness | Infrastructure | HestiaInput | Emission | Measurement | Practice | Product | Property;\n\nenum NodeKeyState {\n added = 'added',\n updated = 'updated',\n aggregated = 'aggregated',\n deleted = 'deleted'\n}\n\n@Component({\n selector: 'he-blank-node-state',\n templateUrl: './blank-node-state.component.html',\n styleUrls: ['./blank-node-state.component.scss']\n})\nexport class BlankNodeStateComponent {\n @Input()\n private nodeType?: NodeType;\n @Input()\n private dataKey?: string;\n @Input()\n private key?: string;\n @Input()\n public node?: blankNode;\n /**\n * Force aggregated state.\n */\n @Input()\n public state?: NodeKeyState;\n\n public NodeKeyState = NodeKeyState;\n\n constructor(\n private aggregationEngineService: HeAggregationEngineService,\n private engineService: HeEngineService\n ) { }\n\n public is(state: NodeKeyState) {\n return (\n state === NodeKeyState.aggregated && this.state === state\n ) || (\n state in this.node! && (\n typeof this.node![state] === 'boolean' ?\n this.node![state] :\n this.node![state].includes(this.key)\n )\n );\n }\n\n public get stars() {\n return this.is(NodeKeyState.deleted) ? [0, 1, 2, 3] :\n (this.is(NodeKeyState.aggregated) ? [0, 1, 2] : (\n this.is(NodeKeyState.updated) ? [0, 1] : (\n this.is(NodeKeyState.added) ? [0] : []\n )\n ));\n }\n\n public get showLink() {\n return !!this.dataKey;\n }\n\n private get aggregatedModelParams() {\n return filterParams({\n type: this.nodeType,\n dataPath: [this.dataKey, this.key].filter(Boolean).join('.')\n });\n }\n\n public get aggregatedModel$() {\n return this.aggregationEngineService.model$(this.aggregatedModelParams);\n }\n\n private get modelParams() {\n return filterParams({\n model: 'methodModel' in this.node! ? this.node?.methodModel!['@id'] : undefined,\n term: 'term' in this.node! ? this.node?.term!['@id'] : undefined\n });\n }\n\n private get modelKeyParams() {\n return filterParams({\n model: (this.node!['@type'] || this.node?.type).toLowerCase(),\n modelKey: this.key\n });\n }\n\n public get engineModel$() {\n return this.engineService.model$(this.modelParams).pipe(\n // fallback to modelKey\n mergeMap(value => value ? of(value) : this.engineService.model$(this.modelKeyParams)),\n // defaults to methodModel\n mergeMap(value => value ? of(value) : (\n 'methodModel' in this.node! ? this.engineService.model$({ model: this.node?.methodModel!['@id'] }) : of(null)\n ))\n );\n }\n}\n","<ng-container *bindOnce=\"node\">\n <span *ngFor=\"let star of stars\">*</span>\n\n <ng-container *ngIf=\"showLink\">\n <!-- <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.aggregated)\">\n <ng-container *ngIf=\"aggregatedModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span> -->\n\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.added); else showUpdated\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n </ng-container>\n</ng-container>\n\n<ng-template #showUpdated>\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.updated)\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #docsLink let-model>\n <a [href]=\"model.apiDocsPath || model.docPath || model.path\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <span>Docs</span>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\n\n@Component({\n selector: 'he-blank-node-state-notice',\n templateUrl: './blank-node-state-notice.component.html',\n styleUrls: ['./blank-node-state-notice.component.scss']\n})\nexport class BlankNodeStateNoticeComponent {\n @Input()\n public dataState?: DataState;\n @Input()\n public showDeleted = false;\n\n public get show() {\n return !this.dataState || this.dataState === DataState.recalculated;\n }\n}\n","<p class=\"is-size-7 is-italic\" *ngIf=\"show\">\n <span>Recalculations: * Data Added ** Data Updated *** Data Aggregated</span>\n <span *ngIf=\"showDeleted\" class=\"pl-1\">**** Data Deleted</span>\n</p>\n","import { propertyValue } from './utils';\n\nconst SUCCESS_CRITERION_MAX_DELTA_PERCENT = 5;\nconst WARNING_CRITERION_MAX_DELTA_PERCENT = 20;\n\nexport enum DeltaColour {\n Success = 'success',\n Warning = 'warning',\n Danger = 'danger'\n}\n\nexport enum DeltaDisplayType {\n absolute = 'absolute',\n percent = 'percent'\n}\n\ntype deltaTypeMapping = {\n [type in DeltaDisplayType]?: (value: number, original: number) => number;\n};\n\nconst deltaPerType: deltaTypeMapping = {\n [DeltaDisplayType.absolute]: (value, original) => value - original,\n [DeltaDisplayType.percent]: (value, original) => ((value - original) / original) * 100\n};\n\nexport const roundValue = (value: any) => +`${value}`.substring(0, 10);\n\nexport const delta = (\n value: any,\n originalValue: any,\n displayType = DeltaDisplayType.percent,\n mapping?: deltaTypeMapping\n) => {\n const vvalue = roundValue(propertyValue(value));\n const voriginalValue = roundValue(propertyValue(originalValue));\n const deltaFuncs = { ...deltaPerType, ...mapping };\n const diff = vvalue === voriginalValue ? 0 : deltaFuncs[displayType]!(vvalue, voriginalValue);\n return Number.isFinite(diff) ? (diff === -0 ? 0 : diff) : 0;\n};\n\nenum PercentDeltaConditions {\n recalculated0 = 'recalculated should be 0',\n original0 = 'original is 0'\n}\n\nconst calculatePercentDeltaConditions: {\n [key in PercentDeltaConditions]: (original: number, recalculated: number) => boolean;\n} = {\n [PercentDeltaConditions.recalculated0]: (original, recalculated) => original > 0 && recalculated === 0,\n [PercentDeltaConditions.original0]: (original, recalculated) => original === 0 && recalculated > 0\n};\n\nconst calculatePercentDeltaResult: {\n [key in PercentDeltaConditions | 'default']: (original: number, recalculated: number) => number;\n} = {\n [PercentDeltaConditions.recalculated0]: (original, recalculated) => (recalculated - original) / (original + 1),\n // Always considered an error so deliberately exceed SUCCESS_CRITERION_MAX_DELTA_PERCENT\n [PercentDeltaConditions.original0]: (original, recalculated) => Math.sign(recalculated - original),\n default: (original, recalculated) => (recalculated - original) / original\n};\n\nexport const calculatePercentDelta = (recalculated: number, original: number) => {\n const matchingCondition =\n Object.values(PercentDeltaConditions).find((value) =>\n calculatePercentDeltaConditions[value](original, recalculated)\n ) || 'default';\n return calculatePercentDeltaResult[matchingCondition](original, recalculated) * 100;\n};\n\nexport const customDeltaFuncs = {\n [DeltaDisplayType.percent]: calculatePercentDelta\n};\n\nexport const evaluateSuccess = (deltaValue: number) =>\n Math.abs(deltaValue) < SUCCESS_CRITERION_MAX_DELTA_PERCENT\n ? DeltaColour.Success\n : Math.abs(deltaValue) < WARNING_CRITERION_MAX_DELTA_PERCENT\n ? DeltaColour.Warning\n : DeltaColour.Danger;\n","import { Component, Input } from '@angular/core';\n\nimport { DeltaDisplayType, delta, customDeltaFuncs, evaluateSuccess } from '../delta-utils';\nimport { emptyValue } from '../utils';\n\n@Component({\n selector: 'he-blank-node-value-delta',\n templateUrl: './blank-node-value-delta.component.html',\n styleUrls: ['./blank-node-value-delta.component.scss']\n})\nexport class BlankNodeValueDeltaComponent {\n @Input()\n private value: any;\n @Input()\n private originalValue: any;\n @Input()\n public displayType = DeltaDisplayType.percent;\n\n public DeltaDisplayType = DeltaDisplayType;\n\n public get hide() {\n return emptyValue(this.value) || emptyValue(this.originalValue);\n }\n\n public get delta() {\n return delta(this.value, this.originalValue, this.displayType, customDeltaFuncs);\n }\n\n public get color() {\n return this.displayType === DeltaDisplayType.percent ? evaluateSuccess(this.delta) : '';\n }\n}\n","<small [class.is-hidden]=\"hide\">\n <span class=\"has-text-{{color}}\">\n <span *ngIf=\"delta > 0\">+</span>\n <ng-container [ngSwitch]=\"displayType\">\n <ng-container *ngSwitchCase=\"DeltaDisplayType.absolute\">\n <span *bindOnce=\"delta\">{{delta | precision:3}}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"DeltaDisplayType.percent\">\n <span *bindOnce=\"delta\">{{delta | number:'1.0-2'}}</span>\n <span>%</span>\n </ng-container>\n </ng-container>\n </span>\n</small>\n","import { Component, Input, ViewChild, ElementRef } from '@angular/core';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'he-clipboard',\n templateUrl: './clipboard.component.html',\n styleUrls: ['./clipboard.component.scss']\n})\nexport class ClipboardComponent {\n @ViewChild('valueNode')\n private valueNode?: ElementRef;\n @ViewChild('t')\n private tooltip?: NgbTooltip;\n\n @Input()\n public value?: string;\n @Input()\n public disabled = false;\n @Input()\n public hideText = false;\n @Input()\n public icon = 'clipboard';\n @Input()\n public size = 'md';\n @Input()\n public rotate = 0;\n @Input()\n public clipboardClass = 'no-print px-3';\n\n public onClick($event) {\n $event.stopPropagation();\n $event.preventDefault();\n this.clipboard();\n }\n\n public async clipboard() {\n const { Clipboard } = await import(/* webpackChunkName: \"ts-clipboard\" */ 'ts-clipboard');\n const range = document.createRange();\n range.selectNode(this.valueNode?.nativeElement);\n const selection = window.getSelection();\n selection!.removeAllRanges();\n selection!.addRange(range);\n const val = typeof this.value === 'object' ? JSON.stringify(this.value, null, 2) : this.value;\n Clipboard.copy(val || '');\n setTimeout(() => selection!.removeAllRanges());\n\n if (this.tooltip) {\n this.tooltip.open();\n setTimeout(() => this.tooltip?.close(), 1000);\n }\n }\n}\n","<span #valueNode [class.is-hidden]=\"hideText\">{{value}}</span>\n\n<span [class]=\"clipboardClass\" pointer (click)=\"!disabled && onClick($event)\"\n ngbTooltip=\"Copied!\" triggers=\"manual\" placement=\"bottom\" container=\"body\" #t=\"ngbTooltip\"\n>\n <fa-icon [icon]=\"icon\" [size]=\"size\" [rotate]=\"rotate\"></fa-icon>\n</span>\n","import { Component, Input } from '@angular/core';\nimport { isExpandable, NodeType } from '@hestia-earth/schema';\nimport { isUndefined } from '@hestia-earth/utils';\n\nimport { baseUrl } from '../utils';\n\nconst stringMapper: {\n [type: string]: (value?: any) => string;\n} = {\n undefined: () => '',\n object: value => Array.isArray(value) ? value.map(toString).join(', ') : (\n value instanceof Date ? value.toJSON() : (\n isExpandable(value) ? value.name || value['@id'] : JSON.stringify(value, null, 2)\n )\n )\n};\n\nconst toString = (value: any) => typeof value in stringMapper ? stringMapper[typeof value](value) : value.toString();\n\n@Component({\n selector: 'he-link-key-value',\n templateUrl: './link-key-value.component.html',\n styleUrls: ['./link-key-value.component.scss']\n})\nexport class LinkKeyValueComponent {\n @Input()\n public node: any;\n @Input()\n public nodeType?: NodeType;\n @Input()\n public dataKey?: string;\n @Input()\n public key?: string;\n\n public baseUrl = baseUrl();\n\n public get type() {\n return this.node['@type'] || this.node.type;\n }\n\n public get value() {\n return this.node[this.key!];\n }\n\n public get valueString() {\n return toString(this.value);\n }\n\n public get valueLink() {\n return isExpandable(this.value) && this.value['@id'] ?\n [baseUrl(), this.value['@type'].toLowerCase(), this.value['@id']].join('/') :\n null;\n }\n\n public get isUndefined() {\n return isUndefined(this.value);\n }\n}\n","<ng-container *ngIf=\"!isUndefined\">\n <ng-container *bindOnce=\"node\">\n <a [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n <span class=\"pr-2\">:</span>\n <a [href]=\"valueLink\" *ngIf=\"valueLink; else showString\">{{valueString}}</a>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"\n ></he-blank-node-state>\n </ng-container>\n</ng-container>\n\n<ng-template #showString>\n {{valueString | precision:3}}\n</ng-template>\n","export const locationQuery = (bounds: google.maps.LatLngBounds, searchField = 'location') => {\n const topRight = bounds.getNorthEast();\n const bottomLeft = bounds.getSouthWest();\n return {\n geo_bounding_box: {\n [searchField]: {\n top_left: { lat: topRight.lat(), lon: bottomLeft.lng() },\n bottom_right: { lat: bottomLeft.lat(), lon: topRight.lng() },\n }\n }\n };\n};\n\nexport const fillColor = '#00F';\nexport const strokeColor = '#00A';\n\nexport const fillStyle = {\n fillColor,\n fillOpacity: 0.6\n};\n\nexport const strokeStyle = {\n strokeColor,\n strokeOpacity: 0.6,\n strokeWeight: 1\n};\n\nexport const clustererImage = 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m';\n\n\nconst getCoordinatesForPercent = (percent: number) => {\n const x = Math.cos(2 * Math.PI * percent);\n const y = Math.sin(2 * Math.PI * percent);\n return [x, y];\n};\n\ninterface IMarkerPieConfig {\n percent: number;\n color: string;\n}\n\nconst pieUrl = (configs: IMarkerPieConfig[], size: number) => {\n let cumulativePercent = 0;\n\n return 'data:image/svg+xml;utf-8,' + encodeURIComponent(`\n <svg width=\"${size}\" height=\"${size}\" viewBox=\"-1 -1 2 2\" xmlns=\"http://www.w3.org/2000/svg\">${\n configs.map(({ percent, color }) => {\n const [startX, startY] = getCoordinatesForPercent(cumulativePercent);\n cumulativePercent += percent;\n const [endX, endY] = getCoordinatesForPercent(cumulativePercent);\n const largeArcFlag = percent > .5 ? 1 : 0;\n const pathData = [\n `M ${startX} ${startY}`, // Move\n `A 1 1 0 ${largeArcFlag} 1 ${endX} ${endY}`, // Arc\n `L 0 0`, // Line\n ].join(' ');\n return `<path fill=\"${color}\" d=\"${pathData}\"></path>`;\n }).join('')}</svg>\n `.trim());\n};\n\nexport const markerPie = (configs: IMarkerPieConfig[], size = 7) => ({\n anchor: new google.maps.Point(size / 2, size / 2),\n url: pieUrl(configs, size),\n labelOrigin: new google.maps.Point(0, -2)\n});\n\nexport const markerIcon = (scale = 7): google.maps.Symbol => ({\n path: google.maps.SymbolPath.CIRCLE,\n ...fillStyle,\n ...strokeStyle,\n scale,\n labelOrigin: new google.maps.Point(0, -2)\n});\n\nexport const createMarker = (\n position?: google.maps.LatLng | google.maps.ReadonlyLatLngLiteral, text = '', color = fillColor, scale?: number\n) => (\n position && position.lat && position.lng ? new google.maps.Marker({\n position,\n label: { color, text },\n icon: markerIcon(scale)\n }) : undefined\n) as google.maps.Marker;\n\ninterface IPolygon {\n type: 'Polygon';\n coordinates: number[][][];\n}\n\ninterface IMultiPolygon {\n type: 'MultiPolygon';\n coordinates: number[][][];\n}\n\ntype geometry = IPolygon | IMultiPolygon;\n\nexport interface IFeature {\n type: 'Feature';\n properties: any;\n geometry: geometry;\n}\n\nexport interface IFeatureCollection {\n type: 'FeatureCollection';\n features: IFeature[];\n}\n\ninterface GeometryCollection {\n type: 'GeometryCollection';\n geometries: geometry[];\n}\n\ntype feature = IFeature | IFeatureCollection | GeometryCollection;\n\nconst feature: IFeature = Object.freeze({\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Polygon',\n coordinates: []\n }\n});\n\nexport const defaultFeature = (): IFeature => ({ ...feature });\n\nexport const pointToCoordinates = (point: google.maps.LatLng) => [point.lng(), point.lat()];\n\nexport const coordinatesToPoint = (values: (number | number[])[]) =>\n Array.isArray(values[0]) ?\n values.map((v: any) => coordinatesToPoint(v)) :\n new google.maps.LatLng((values as number[])[1], (values as number[])[0]);\n\nexport const polygonToCoordinates = (polygon: google.maps.Polygon) => polygon.getPaths().getArray().map(path => {\n const points = path.getArray();\n return [\n ...points.map(pointToCoordinates),\n pointToCoordinates(points[0])\n ];\n})[0];\n\nconst coordinatesToPolygon = (coordinates: number[][]) => new google.maps.Polygon({\n paths: coordinates.map(coordinatesToPoint).filter(Boolean),\n ...strokeStyle\n});\n\nexport const addPolygonToFeature = (feat: feature, polygon: google.maps.Polygon) =>\n feat.type === 'FeatureCollection' ?\n feat.features.push(addPolygonToFeature(defaultFeature(), polygon)) : (\n feat.type === 'GeometryCollection' ?\n feat.geometries.map(geometry => (geometry.coordinates || []).push(polygonToCoordinates(polygon))) :\n (feat.geometry?.coordinates || []).push(polygonToCoordinates(polygon))\n )\n ;\n\nexport const polygonsFromFeature = (feat: feature): google.maps.Polygon[] =>\n feat.type === 'FeatureCollection' ?\n feat.features.flatMap(polygonsFromFeature) : (\n feat.type === 'GeometryCollection' ?\n feat.geometries.flatMap(geometry => (geometry.coordinates || []).map(coordinatesToPolygon)) :\n (feat.geometry?.coordinates || []).map(coordinatesToPolygon)\n );\n\nexport const polygonBounds = (polygon?: google.maps.Polygon | google.maps.Polygon[]) =>\n polygon ?\n Array.isArray(polygon) ?\n polygon.reduce((prev, curr) => prev.extend(polygonBounds(curr)), new google.maps.LatLngBounds()) :\n (polygon.getPath()?.getArray() || []).reduce((prev, curr) => prev.extend(curr), new google.maps.LatLngBounds()) :\n undefined;\n","import { Component, OnInit, AfterViewInit, OnDestroy, Output, EventEmitter, Input, ViewChild } from '@angular/core';\nimport { GoogleMap } from '@angular/google-maps';\nimport { isNumber } from '@hestia-earth/utils';\n\nimport {\n IFeature, IFeatureCollection, defaultFeature, addPolygonToFeature, polygonsFromFeature, strokeStyle\n} from '../maps-utils';\n\n@Component({\n selector: 'he-maps-drawing-confirm',\n templateUrl: './maps-drawing-confirm.component.html',\n styleUrls: ['./maps-drawing-confirm.component.scss']\n})\nexport class MapsDrawingConfirmComponent implements OnInit, AfterViewInit, OnDestroy {\n private listeners: google.maps.MapsEventListener[] = [];\n private shapes: (google.maps.Marker | google.maps.Polygon)[] = [];\n\n private feature: IFeature | IFeatureCollection = defaultFeature();\n private coordinates?: google.maps.LatLngLiteral;\n\n @ViewChild(GoogleMap)\n private map?: GoogleMap;\n\n @Input()\n public value?: string;\n @Input()\n public modes: google.maps.drawing.OverlayType[] = [google.maps.drawing.OverlayType.POLYGON];\n @Input()\n public center = { lat: 0, lng: 0 };\n @Input()\n public zoom = 3;\n\n @Output()\n public closed = new EventEmitter<google.maps.LatLngLiteral | string>();\n\n public options: google.maps.MapOptions = {\n fullscreenControl: false,\n mapTypeControl: true,\n streetViewControl: false,\n zoomControl: true,\n zoomControlOptions: {\n position: google.maps.ControlPosition.TOP_RIGHT\n }\n };\n\n ngOnInit() {\n this.feature = this.value && !isNumber(this.value) ? JSON.parse(this.value) : this.feature;\n }\n\n ngAfterViewInit() {\n const polygons = polygonsFromFeature(this.feature);\n polygons.map(polygon => polygon.setMap(this.map?.googleMap!));\n const drawingManager = new google.maps.drawing.DrawingManager({\n drawingControlOptions: {\n position: google.maps.ControlPosition.TOP_CENTER,\n drawingModes: this.modes\n },\n polygonOptions: strokeStyle\n });\n drawingManager.setMap(this.map?.googleMap!);\n this.listeners.push(google.maps.event.addListener(drawingManager, 'polygoncomplete', polygon =>\n this.onPolygonAdded(polygon)\n ));\n this.listeners.push(google.maps.event.addListener(drawingManager, 'markercomplete', marker =>\n this.onMarkerAdded(marker)\n ));\n }\n\n ngOnDestroy() {\n this.listeners.map(listener => google.maps.event.removeListener(listener));\n }\n\n private onPolygonAdded(polygon: google.maps.Polygon) {\n this.shapes.push(polygon);\n addPolygonToFeature(this.feature, polygon);\n }\n\n private onMarkerAdded(marker: google.maps.Marker) {\n this.shapes.push(marker);\n const position = marker.getPosition();\n this.coordinates = position?.toJSON();\n }\n\n public confirm() {\n this.closed.next(this.coordinates || JSON.stringify(this.feature));\n }\n\n public clear() {\n this.shapes.map(shape => shape.setMap(null));\n this.coordinates = undefined;\n this.feature = defaultFeature();\n }\n}\n","<div class=\"modal is-large 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\">Draw on Map</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(value)\"></button>\n </header>\n <section class=\"modal-card-body p-0\">\n <google-map\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"center\"\n [options]=\"options\"\n ></google-map>\n </section>\n <footer class=\"modal-card-foot\">\n <button class=\"button is-primary\" (click)=\"confirm()\">\n <span>Confirm</span>\n </button>\n <button class=\"button\" (click)=\"closed.next(value)\">\n <span>Close</span>\n </button>\n <button class=\"button is-danger is-outlined\" (click)=\"clear()\">\n <fa-icon class=\"mr-2\" icon=\"times\"></fa-icon>\n <span>Clear</span>\n </button>\n </footer>\n </div>\n</div>\n","import { Component, HostListener, Input, TemplateRef } from '@angular/core';\n\nexport interface ContentContext {\n message: string;\n data: any;\n}\n\n@Component({\n selector: 'he-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss']\n})\nexport class PopoverComponent {\n @Input()\n public message = '';\n @Input()\n public content?: TemplateRef<ContentContext>;\n @Input()\n public data: any = {};\n @Input()\n public position: 'top'|'right'|'bottom'|'left' = 'left';\n\n @HostListener('click', ['$event'])\n onClick($event) {\n $event.stopPropagation();\n this.active = true;\n }\n\n public active = false;\n}\n","<div class=\"is-inline-block popover is-popover-{{position}}\" [class.is-popover-active]=\"active\">\n <ng-content></ng-content>\n\n <div class=\"popover-content\">\n\n <ng-template\n [ngTemplateOutlet]=\"content || ct\"\n [ngTemplateOutletContext]=\"{message: message, data: data}\"\n ></ng-template>\n\n <footer>\n <ng-content select=\"[actions]\"></ng-content>\n <button class=\"button is-small\" (click)=\"$event.stopPropagation(); active = false\">\n <span>Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #ct>\n <p class=\"mb-2 is-pre-wrap\" [innerHtml]=\"message\"></p>\n</ng-template>\n","import { Component, TemplateRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\n\nimport { ContentContext, PopoverComponent } from '../popover/popover.component';\n\n@Component({\n selector: 'he-popover-confirm',\n templateUrl: './popover-confirm.component.html',\n styleUrls: ['./popover-confirm.component.scss']\n})\nexport class PopoverConfirmComponent {\n @ViewChild(PopoverComponent)\n private popover?: PopoverComponent;\n\n @Input()\n public message?: string;\n @Input()\n public content?: TemplateRef<ContentContext>;\n @Input()\n public position?: string;\n @Input()\n public popoverClass?: string;\n\n @Output()\n public confirmed = new EventEmitter<any>();\n\n public data: any = {};\n\n public confirm() {\n this.confirmed.next(this.data);\n this.popover!.active = false;\n }\n}\n","<he-popover [message]=\"message\" [content]=\"content\" [data]=\"data\" [position]=\"position\" [class]=\"popoverClass\">\n <ng-content></ng-content>\n\n <ng-container actions>\n <button class=\"button is-small is-primary mr-2\" (click)=\"$event.stopPropagation(); confirm()\">\n <span>Confirm</span>\n </button>\n </ng-container>\n</he-popover>\n","import { Component, Input } from '@angular/core';\n\nimport { baseUrl } from '../utils';\n\n@Component({\n selector: 'he-schema-version-link',\n templateUrl: './schema-version-link.component.html',\n styleUrls: ['./schema-version-link.component.scss']\n})\nexport class SchemaVersionLinkComponent {\n @Input()\n private node: any;\n @Input()\n public showExternalLink = true;\n @Input()\n public linkClass = '';\n @Input()\n public text?: string;\n\n public get url() {\n return [\n baseUrl(),\n 'schema',\n this.node.schemaVersion,\n this.node['@type']\n ].filter(Boolean).join('/');\n }\n}\n","<ng-container *bindOnce=\"url\">\n <a [href]=\"url\" target=\"_blank\" [class]=\"linkClass\" (click)=\"$event.stopPropagation()\">\n <ng-content></ng-content>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\" *ngIf=\"showExternalLink\"></fa-icon>\n </a>\n</ng-container>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'he-skeleton-text',\n templateUrl: './skeleton-text.component.html',\n styleUrls: ['./skeleton-text.component.scss']\n})\nexport class SkeletonTextComponent {\n @Input()\n private animated = true;\n @Input()\n private width = 100;\n @Input()\n private height = 'inherit';\n\n @HostBinding('class.is-animated')\n get isAnimated() {\n return this.animated;\n }\n\n @HostBinding('style.width')\n get hasWidth() {\n return `${this.width}%`;\n }\n\n @HostBinding('style.height')\n get hasHeight() {\n return this.height;\n }\n}\n","<span> </span>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Term } from '@hestia-earth/schema';\nimport { IConvertArgs, ConvertUnits, converters, convertValue, isNumber, isBoolean } from '@hestia-earth/utils';\n\nconst parsePropertyValue = (value: any) =>\n isNumber(value) ? +value : (\n isBoolean(value) ? value.toString() === 'true' : value\n );\n\nconst parseResult = (value: number) => isNaN(value) ? '' : `${value}`.replace(',', '.');\n\ninterface IArg {\n key: string;\n value: any;\n}\n\n@Component({\n selector: 'he-unit-converter',\n templateUrl: './unit-converter.component.html',\n styleUrls: ['./unit-converter.component.scss']\n})\nexport class UnitConverterComponent implements OnInit {\n @Input()\n private term?: Term;\n\n @Input()\n public value = 1;\n @Input()\n public fromUnits?: ConvertUnits;\n @Input()\n public toUnits?: ConvertUnits;\n\n public ConvertUnits = ConvertUnits;\n public result = '';\n public arguments: IArg[] = [];\n\n ngOnInit() {\n return this.updateValue();\n }\n\n private get args() {\n return (this.term?.defaultProperties || []).reduce((prev, prop) => ({\n ...prev,\n [prop.term?.name?.toLowerCase()!]: parsePropertyValue(prop.value)\n }), {} as IConvertArgs);\n }\n\n public get units() {\n return this.fromUnits ?\n Object.values(ConvertUnits).filter(v => v in converters[this.fromUnits!]) :\n [];\n }\n\n private requireArgs(keys: (keyof IConvertArgs)[]) {\n const args = this.args;\n this.arguments = keys.map(key => ({ key, value: args[key] || '' }));\n }\n\n public updateUnits() {\n let requiredKeys: (keyof IConvertArgs)[] = [];\n if (this.fromUnits === ConvertUnits.kg || this.toUnits === ConvertUnits.kg) {\n requiredKeys = ['density'];\n }\n this.requireArgs(requiredKeys);\n return this.updateValue();\n }\n\n public updateValue() {\n if (!this.fromUnits || !this.toUnits) {\n return;\n }\n\n const args = {\n ...this.args,\n ...this.arguments.reduce((prev, { key, value }) => ({ ...prev, [key]: value }), {})\n };\n try {\n this.result = parseResult(convertValue(this.value, this.fromUnits, this.toUnits, args));\n }\n catch (_) {}\n }\n}\n","<div class=\"columns mb-0\">\n <div class=\"column\">\n <label class=\"label has-text-white\" for=\"value\">Value</label>\n </div>\n <div class=\"column\">\n <label class=\"label has-text-white\" for=\"result\">Convert To</label>\n </div>\n</div>\n\n<div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <input type=\"number\" class=\"input\" [(ngModel)]=\"value\" name=\"value\" id=\"value\"\n (input)=\"updateValue()\"\n >\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth\">\n <select [(ngModel)]=\"fromUnits\" name=\"fromUnits\" id=\"fromUnits\"\n (change)=\"updateUnits()\"\n >\n <option [value]=\"undefined\">Unit</option>\n <option *ngFor=\"let unit of ConvertUnits | keys\" [value]=\"unit.value\">{{unit.key}}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <input type=\"string\" class=\"input\" [value]=\"result\" name=\"result\" id=\"result\" readonly>\n </div>\n <div class=\"control\">\n <div class=\"select is-fullwidth\">\n <select [(ngModel)]=\"toUnits\" name=\"toUnits\" id=\"toUnits\"\n (change)=\"updateUnits()\"\n >\n <option [value]=\"undefined\">Unit</option>\n <option *ngFor=\"let unit of units\" [value]=\"unit\">{{unit}}</option>\n </select>\n </div>\n </div>\n <div class=\"control\">\n <he-clipboard clipboardClass=\"button is-white px-2\"\n [value]=\"result\" [disabled]=\"!result\" [hideText]=\"true\"\n ></he-clipboard>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"field is-horizontal\" *ngFor=\"let arg of arguments\">\n <div class=\"field-label is-normal\">\n <label class=\"label has-text-white\" [for]=\"arg.key\">\n <span class=\"is-capitalized\">{{arg.key}}</span>\n <span class=\"has-text-danger pl-1\">*</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control\">\n <input type=\"string\" class=\"input is-small\"\n [(ngModel)]=\"arg.value\" [id]=\"arg.key\"\n (input)=\"updateValue()\"\n placeholder=\"Required for conversion\"\n >\n </div>\n </div>\n </div>\n</div>\n","/* eslint-disable @angular-eslint/directive-selector */\nimport { Directive, HostListener, ElementRef, Output, EventEmitter } from '@angular/core';\n\n@Directive({\n selector: '[clickOutside]'\n})\nexport class ClickOutsideDirective {\n @Output()\n public clickOutside = new EventEmitter<void>();\n\n constructor(private elementRef: ElementRef) {}\n\n @HostListener('document:click', ['$event'])\n onClick(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.clickOutside.emit();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nconst get = require('lodash.get');\n\n@Pipe({\n name: 'get'\n})\nexport class GetPipe implements PipeTransform {\n transform(value: any, key: string, defaultValue: any = ''): any {\n return get(value, key, defaultValue);\n }\n}\n","/* eslint-disable */\n/**\n * @class EventEmitter\n *\n * @property {Array} _listeners\n */\nexport default class EventEmitter {\n private _listeners;\n /**\n * Construct EventEmitter\n *\n * @param listeners\n */\n constructor(listeners = []) {\n this._listeners = new Map(listeners);\n }\n\n /**\n * Destroys EventEmitter\n */\n destroy() {\n this._listeners = {};\n }\n\n /**\n * Count listeners registered for the provided eventName\n *\n * @param eventName\n */\n listenerCount(eventName) {\n if (!this._listeners.has(eventName)) {\n return 0;\n }\n\n return this._listeners.get(eventName).length;\n }\n\n /**\n * Subscribes on event eventName specified function\n *\n * @param eventName\n * @param listener\n */\n on(eventName, listener) {\n this._addListener(eventName, listener, false);\n }\n\n /**\n * Subscribes on event name specified function to fire only once\n *\n * @param eventName\n * @param listener\n */\n once(eventName, listener) {\n this._addListener(eventName, listener, true);\n }\n\n /**\n * Removes event with specified eventName.\n *\n * @param eventName\n */\n off(eventName) {\n this._removeListeners(eventName);\n }\n\n /**\n * Emits event with specified name and params.\n *\n * @param eventName\n * @param eventArgs\n */\n emit(eventName, ...eventArgs) {\n return this._applyEvents(eventName, eventArgs);\n }\n\n /**\n * Register a new listener\n *\n * @param eventName\n * @param listener\n * @param once\n */\n _addListener(eventName, listener, once = false) {\n if (Array.isArray(eventName)) {\n eventName.forEach(e => this._addListener(e, listener, once));\n } else {\n eventName = eventName.toString();\n const split = eventName.split(/,|, | /);\n\n if (split.length > 1) {\n split.forEach(e => this._addListener(e, listener, once));\n } else {\n if (!Array.isArray(this._listeners.get(eventName))) {\n this._listeners.set(eventName, []);\n }\n\n (this._listeners.get(eventName)).push({\n once,\n fn: listener\n });\n }\n }\n }\n\n /**\n *\n * @param eventName\n */\n _removeListeners(eventName: any = null) {\n if (eventName !== null) {\n if (Array.isArray(eventName)) {\n eventName.forEach(e => this._removeListeners(e));\n } else {\n eventName = eventName.toString();\n const split = eventName.split(/,|, | /);\n\n if (split.length > 1) {\n split.forEach(e => this._removeListeners(e));\n } else {\n this._listeners.delete(eventName);\n }\n }\n } else {\n this._listeners = new Map();\n }\n }\n\n /**\n * Applies arguments to specified event\n *\n * @param eventName\n * @param eventArguments\n * @protected\n */\n _applyEvents(eventName, eventArguments) {\n let result = eventArguments;\n\n if (this._listeners.has(eventName)) {\n const listeners = this._listeners.get(eventName);\n const removableListeners = [];\n\n listeners.forEach((listener, index) => {\n if (result = listener.fn.apply(null, eventArguments)) {\n if (listener.once) {\n (removableListeners as any).unshift(index);\n }\n }\n });\n\n removableListeners.forEach(index => {\n listeners.splice(index, 1);\n });\n\n return result;\n }\n\n return result[0];\n }\n}\n","export const isFunction = unknown => typeof unknown === 'function';\nexport const isString = unknown => (\n typeof unknown === 'string' ||\n ((!!unknown && typeof unknown === 'object') && Object.prototype.toString.call(unknown) === '[object String]'));\nexport const isObject = unknown => (\n (typeof unknown === 'function' || (typeof unknown === 'object' && !!unknown)) && !Array.isArray(unknown));\n// Returns true if the value has a \"then\" function. Adapted from\n// https://github.com/graphql/graphql-js/blob/499a75939f70c4863d44149371d6a99d57ff7c35/src/jsutils/isPromise.js\nexport const isPromise = value => Boolean(value && typeof value.then === 'function');\n\nexport const isNode = unknown => {\n try {\n Node.prototype.cloneNode.call(unknown, false);\n return true;\n } catch (err) {\n return false;\n }\n};\n\n/**\n * Convert String (false,False,True,true,no,yes,0,1) to real Boolean\n *\n * @param val\n */\nexport const BooleanParse = (val) => {\n const falsy = /^(?:f(?:alse)?|no?|0+)$/i;\n return !falsy.test(val) && !!val;\n};\n\n/**\n * Check if given query selector is valid\n *\n * @param selector\n */\nexport const isSelectorValid = selector => {\n const queryCheck = s => document.createDocumentFragment().querySelector(s);\n try {\n queryCheck(selector);\n } catch {\n return false;\n }\n\n return true;\n};\n","/* eslint-disable */\nimport { isFunction, isNode, isString } from './type';\n\n/**\n * querySelector under steroid\n * Can use as selector:\n * - function\n * - DOM Node\n * - String\n *\n * @param selector\n * @param node\n */\nexport const querySelector = (selector, node) => {\n if (isFunction(selector)) {\n return selector(node);\n }\n\n if (isNode(selector)) {\n return selector;\n }\n\n if (isString(selector)) {\n if (!node || !isNode(node) || node.nodeType !== 1) {\n node = document;\n }\n\n return node.querySelector(selector);\n }\n\n if (Array.isArray(selector) || (typeof NodeList !== 'undefined' && NodeList.prototype.isPrototypeOf(selector))) {\n return selector[0];\n }\n};\n\n/**\n * querySelectorAll under steroid\n * Can use as selector:\n * - function\n * - DOM Node\n * - String\n *\n * @param selector\n * @param node\n */\nexport const querySelectorAll = (selector, node) => {\n if (isFunction(selector)) {\n return selector(node);\n }\n\n if (isNode(selector)) {\n return [selector];\n }\n\n if (isString(selector)) {\n if (!node || !isNode(node) || node.nodeType !== 1) {\n node = document;\n }\n\n return node.querySelectorAll(selector);\n }\n\n if (typeof NodeList !== 'undefined' && NodeList.prototype.isPrototypeOf(selector)) {\n return selector;\n }\n return [];\n};\n\n// Convert dataset into Object\nexport const optionsFromDataset = (node, defaultOptions = {}) => {\n if (isNode(node)) {\n return node.dataset ? Object.keys(node.dataset)\n .filter(key => Object.keys(defaultOptions).includes(key))\n .reduce((obj, key) => ({\n ...obj,\n [key]: node.dataset[key]\n }), {}) : {};\n }\n return {};\n};\n\n/**\n * Copy HTML attributes from a source element to a target element\n *\n * @param target\n * @param source\n * @param except list of attributes to skip (separated by space)\n */\nexport const cloneAttributes = (target, source, except: any = null) => {\n if (except !== null) {\n except = except.split(' ');\n }\n\n [...source.attributes].forEach(attr => {\n if (!except.includes(attr.nodeName)) {\n target.setAttribute(attr.nodeName === 'id' ? 'data-id' : attr.nodeName, attr.nodeValue);\n }\n });\n};\n\n/**\n * Escapes string for insertion into HTML, replacing special characters with HTML\n * entities.\n *\n * @param string\n */\nexport const escape = (string) => isString(string) ?\n string.replace(/(['\"<>])/g, (char) => ({\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n }[char]))\n : string;\n","/* eslint-disable */\nexport default (prefix = '') => (prefix + (1e7 + -1e3 + -4e3 + -8e3 + -1e11)).replace(/[018]/g, c => (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16));\n","/* eslint-disable */\nimport EventEmitter from './events';\nimport { optionsFromDataset, querySelectorAll, querySelector } from './dom';\nimport uuid from './uuid';\n\nexport default class Component extends EventEmitter {\n protected element: any;\n protected id: string;\n protected options: any;\n\n constructor(element, options = {}, defaultOptions = {}) {\n super();\n\n this.element = querySelector(element, document);\n\n // An invalid selector or non-DOM node has been provided.\n if (!this.element) {\n throw new Error(`An invalid selector or non-DOM node has been provided for ${this.constructor.name}.`);\n }\n this.id = uuid('c-');\n\n this.options = {\n ...defaultOptions,\n ...options,\n ...optionsFromDataset(this.element, defaultOptions) // Use Element dataset values to override options\n };\n }\n\n /**\n * Initiate all DOM element corresponding to selector\n *\n * @method\n * @return Array of all Plugin instances\n */\n static attach(selector: any = null, options = {}, node: any = null) {\n const instances = new Array();\n\n if (selector !== null) {\n querySelectorAll(selector, node).forEach(element => {\n // Check if plugin has already been instantiated for element\n if (typeof element[this.name] === 'undefined') { // If no then instantiate it and register it in element\n instances.push(new this(element, {\n selector,\n ...options\n }));\n } else { // If Yes then return the existing instance\n instances.push(element[this.name]);\n }\n });\n\n if (typeof window[this.name] === 'undefined') {\n window[this.name] = {\n observers: []\n };\n }\n\n if (window[this.name]['observers'] && !window[this.name]['observers'].includes(selector)) {\n this.observeDom(selector, options);\n\n window[this.name]['observers'].push(selector);\n }\n }\n\n return instances;\n }\n\n /**\n * Observe DOM mutations to automatically initialize plugin on new elements when added to the DOM\n *\n * @param selector\n * @param options\n */\n static observeDom(selector, options) {\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n for (let i = 0; i < mutation.addedNodes.length; i++) {\n if (typeof window[this.name] !== 'undefined') {\n this.attach(selector, options, mutation.addedNodes[i]);\n }\n }\n });\n });\n\n if (typeof document !== 'undefined') {\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n }\n }\n\n static _interface(name = null, options = {}) {\n if (typeof name === 'string') {\n if (typeof this[name] === 'undefined') {\n throw new TypeError(`No method named \"${name}\"`);\n }\n\n return (this[name] as any)(options);\n }\n\n return this;\n }\n}\n","const defaultOptions = {\n\tallowDuplicates: false,\t\t\t\t\t// Are duplicate tags allowed ?\n\tcaseSensitive: true,\t\t\t\t\t// Is duplicate tags identification case sensitive ?\n\tclearSelectionOnTyping: false,\t\t\t// Should selected tag be cleared when typing a new input ?\n\tcloseDropdownOnItemSelect: true,\t\t// Should dropdown be closed once an item has been clicked ?\n\tdelimiter: ',',\t\t\t\t\t\t\t// Multiple tags delimiter\n\tfreeInput: true,\t\t\t\t\t\t// Should user be able to input new tag manually ?\n\thighlightDuplicate: true,\t\t\t\t// Should we temporarly highlight identified duplicate tags ?\n\thighlightMatchesString: true,\t\t\t// Should we highlight identified matches strings when searching ?\n\titemValue: undefined,\t\t\t\t\t// What is the object property to use as value when we work with Object tags ?\n \titemText: undefined,\t\t\t\t\t// What is the object property to use as text when we work with Object tags ?\n\tmaxTags: undefined,\t\t\t\t\t\t// Maximum number of tags allowed\n\tmaxChars: undefined,\t\t\t\t\t// Maximum of characters allowed for a single tag\n\tminChars: 1,\t\t\t\t\t\t\t// Minimum of characters before processing a new tag\n\tnoResultsLabel: 'No results found',\t\t// Customize the dropdown placecholer when no results found\n\tplaceholder: '',\t\t\t\t\t\t// Customize the input placholder\n\tremovable: true,\t\t\t\t\t\t// Are tags removable ?\n\tsearchMinChars: 1,\t\t\t\t\t\t// How many characters should we enter before starting dynamic search ?\n\tsearchOn: 'text',\t\t\t\t\t\t// On what dropdown item data do we search the entered value : 'value' or 'text' ?\n\tselectable: true,\t\t\t\t\t\t// Are tags selectable ?\n\tsource: undefined,\t\t\t\t\t\t// Array/Function/Promise to get external data\n\ttagClass: 'is-rounded',\t\t\t\t\t// Customize tags style by passing classes - They will be added to the tag element\n\ttrim: true\t\t\t\t\t\t\t\t// Should we trim value before processing them ?\n};\n\nexport default defaultOptions;\n","import { escape } from '../utils/dom';\n\nexport default (data) =>\n `<span class=\"tag ${escape(data.style)}\" data-value=\"${escape(data.value)}\">\n ${escape(data.text)}\n ${data.removable ? '<div class=\"delete is-small\" data-tag=\"delete\"></div>' : ''}\n </span>`;\n","import { escape } from '../utils/dom';\n\nexport default (data) =>\n `<div class=\"tags-input\">\n <input class=\"input\" type=\"text\" placeholder=\"${escape(data.placeholder)}\">\n <div id=\"${escape(data.uuid)}-list\" class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <span class=\"dropdown-item empty-title\">${escape(data.emptyTitle)}</span>\n </div>\n </div>\n </div>`;\n","import { escape } from '../utils/dom';\n\nexport default (data) =>\n `<a href=\"javascript:void(0);\" class=\"dropdown-item\" data-value=\"${\n escape(data.value)\n }\" data-text=\"${escape(data.text)}\">${escape(data.text)}</a>`;\n","/* eslint-disable */\nimport Component from './utils/component';\nimport { cloneAttributes } from './utils/dom';\nimport { isString, BooleanParse, isObject, isPromise, isFunction } from './utils/type';\nimport defaultOptions from './defaultOptions';\nimport tagTemplate from './templates/tag';\nimport containerTemplate from './templates/wrapper';\nimport dropdownItemTemplate from './templates/dropdown-item';\n\n// TODO: add pattern or function to valdiate value before adding\n\nexport default class BulmaTagsInput extends Component {\n private _items: any[];\n private _selected;\n private _isSelect;\n private _isMultiple;\n private _objectItems;\n private _input;\n private _manualInputAllowed;\n private _filterInputAllowed;\n private source;\n private container;\n private dropdown;\n private dropdownEmptyOption;\n\n constructor(element, options = {}) {\n super(element, options, defaultOptions);\n\n // Convert Boolean string options to full Boolean\n this.options.allowDuplicates = BooleanParse(this.options.allowDuplicates);\n this.options.caseSensitive = BooleanParse(this.options.caseSensitive);\n this.options.clearSelectionOnTyping = BooleanParse(this.options.clearSelectionOnTyping);\n this.options.closeDropdownOnItemSelect = BooleanParse(this.options.closeDropdownOnItemSelect);\n this.options.freeInput = BooleanParse(this.options.freeInput);\n this.options.highlightDuplicate = BooleanParse(this.options.highlightDuplicate);\n this.options.highlightMatchesString = BooleanParse(this.options.highlightMatchesString);\n this.options.removable = BooleanParse(this.options.removable);\n this.options.searchOn = this.options.searchOn.toLowerCase();\n this.options.selectable = BooleanParse(this.options.selectable);\n this.options.trim = BooleanParse(this.options.trim);\n\n //Bind events to current class\n this._onDocumentClick = this._onDocumentClick.bind(this);\n this._onInputChange = this._onInputChange.bind(this);\n this._onInputClick = this._onInputClick.bind(this);\n this._onInputFocusOut = this._onInputFocusOut.bind(this);\n this._onInputFocusIn = this._onInputFocusIn.bind(this);\n this._onInputKeyDown = this._onInputKeyDown.bind(this);\n this._onInputKeyPress = this._onInputKeyPress.bind(this);\n this._onOriginalInputChange = this._onOriginalInputChange.bind(this);\n this._onTagDeleteClick = this._onTagDeleteClick.bind(this);\n this._onTagClick = this._onTagClick.bind(this);\n this._onDropdownItemClick = this._onDropdownItemClick.bind(this);\n\n // Define internal variables\n this._items = [];\n this._selected = -1; // index of selected item\n\n // Initiate plugin\n this._init();\n }\n\n /**\n * Initiate all DOM element corresponding to selector\n *\n * @method\n * @return Array of all Plugin instances\n */\n static attach(selector = 'input[data-type=\"tags\"], input[type=\"tags\"], select[data-type=\"tags\"], select[type=\"tags\"]', options = {}, container = null) {\n return super.attach(selector, options, container);\n }\n\n /**\n * Initiate plugin\n *\n * @method init\n * @return\n */\n _init() {\n // Detect if original input was a Select element\n this._isSelect = (this.element.tagName === 'SELECT');\n this._isMultiple = (this._isSelect && this.element.hasAttribute('multiple'));\n\n // Detect if we work with Object items or not\n // Object Items is forced when working with select element\n this._objectItems = (typeof this.options.itemValue !== 'undefined') || this._isSelect;\n this.options.itemValue = this.options.itemValue ? this.options.itemValue : (this._isSelect ? 'value' : undefined);\n this.options.itemText = this.options.itemText ? this.options.itemText : (this._isSelect ? 'text' : undefined);\n // If no itemText pass then use itemValue as itemText\n if (typeof this.options.itemText === 'undefined') {\n this.options.itemText = this.options.itemValue;\n }\n\n // Force freeInput to False if working with object items\n this.options.freeInput = this._objectItems ? false : this.options.freeInput;\n\n // Init search engine\n this.source = null;\n if (typeof this.options.source !== 'undefined') {\n // Fix searchOn option if wrong\n if (!['value', 'text'].includes(this.options.searchOn)) {\n this.options.searchOn = defaultOptions.searchOn;\n }\n\n if (isPromise(this.options.source)) {\n this.source = this.options.source;\n } else if (isFunction(this.options.source)) {\n this.source = value => Promise.resolve(this.options.source(value));\n } else if (Array.isArray(this.options.source)) {\n this.source = value => Promise.resolve(this.options.source.filter(i => {\n const val = (this._objectItems ? i[this.options.itemValue] : i);\n\n return this.options.caseSensitive ? val.includes(value) : val.toLowerCase().includes(value.toLowerCase());\n }));\n }\n }\n\n // Determine allowed input modes\n this._manualInputAllowed = !this._isSelect && this.options.freeInput;\n this._filterInputAllowed = this._isSelect || this.source;\n\n this._build();\n }\n\n /**\n * Build TagsInput DOM elements\n */\n _build() {\n // Create TagsInput DOM\n const containerFragment = document.createRange().createContextualFragment(containerTemplate({\n emptyTitle: typeof this.options.noResultsLabel !== 'undefined' ? this.options.noResultsLabel : 'No results found',\n placeholder: this.element.placeholder ? this.element.placeholder : this.options.placeholder,\n uuid: this.id\n }));\n\n this.container = containerFragment.firstElementChild;\n this._input = this.container.querySelector('input');\n this.dropdown = this.container.querySelector(`#${this.id}-list .dropdown-content`);\n this.dropdownEmptyOption = this.dropdown.querySelector('.empty-title');\n\n // Clone attributes between original and new input\n cloneAttributes(this._input, this.element, 'data-type multiple name type value');\n\n if (this.element.disabled) {\n this.container.setAttribute('disabled', 'disabled');\n this.options.removable = false;\n this.options.selectable = false;\n }\n\n // Propagate original input disabled attribute to the container\n if (this._input.getAttribute('disabled') || this._input.classList.contains('is-disabled')) {\n this.container.setAttribute('disabled', 'disabled');\n }\n\n if (!this._manualInputAllowed) {\n this.container.classList.add(this._filterInputAllowed ? 'is-filter' : 'no-input');\n }\n\n // Remove dropdown if no source or original input is not a select element\n if (!this._isSelect && typeof this.options.source === 'undefined') {\n this.dropdown.remove();\n this.dropdown = null;\n this._input.setAttribute('list', null);\n }\n\n // Initialize plugin value from original input value\n if (this._isSelect) {\n Array.from(this.element.options).forEach((option: any) => {\n if (option.selected) {\n // HTML Option element contains value and text properties\n // Add it silently to not propagate to the original element\n this.add(option.value ? option : {\n value: option.text,\n text: option.text\n }, true);\n }\n\n this._createDropdownItem(option);\n });\n } else {\n // We have on input element\n if (this.element.value.length) {\n this.add(this._objectItems ? JSON.parse(this.element.value) : this.element.value, true);\n }\n }\n\n this._bindEvents();\n\n // Insert container right before original input and make original input hidden\n this.element.parentNode.insertBefore(this.container, this.element);\n\n // Hide original input (type=\"hidden\" only works on select)\n this.element.style.display = 'none';\n }\n\n /**\n * Bind all events listener\n */\n _bindEvents() {\n // Bind document click event to close dropdown\n document.addEventListener('click', this._onDocumentClick);\n\n // Bind event handlers to orginal input\n this.element.addEventListener('change', this._onOriginalInputChange);\n\n // Bind event handlers to internal input\n this._input.addEventListener('input', this._onInputChange);\n this._input.addEventListener('click', this._onInputClick);\n this._input.addEventListener('keydown', this._onInputKeyDown);\n this._input.addEventListener('keypress', this._onInputKeyPress);\n this._input.addEventListener('focusout', this._onInputFocusOut);\n this._input.addEventListener('focusin', this._onInputFocusIn);\n }\n\n /**\n * Check if caret is at the beginning of the input value\n */\n _caretAtStart() {\n try {\n return this._input.selectionStart === 0 && this._input.selectionEnd === 0;\n } catch (e) {\n return this._input.value === '';\n }\n }\n\n /**\n * Check value length constraint if option activated\n *\n * @param item\n */\n _checkLength(item) {\n const value = this._objectItems ? item[this.options.itemValue] : item;\n\n if (!isString(value)) {\n return true;\n }\n\n return value.length >= this.options.minChars && (typeof this.options.maxChars === 'undefined' || value.length <= this.options.maxChars);\n }\n\n /**\n * Close dropdown\n */\n _closeDropdown() {\n if (this.dropdown) {\n this.emit('before.dropdown.close', this);\n\n this.container.classList.remove('is-active');\n\n this.emit('after.dropdown.close', this);\n }\n }\n\n /**\n * Create a new dropdown item based on given item data\n *\n * @param item\n */\n _createDropdownItem(item) {\n if (this.dropdown) {\n // TODO: add possibility to provide template through options\n const dropdownItemFragment = document.createRange().createContextualFragment(dropdownItemTemplate({\n text: item.text,\n value: item.value\n }));\n const dropdownItem = dropdownItemFragment.firstElementChild;\n\n // Save item data into dataset\n (dropdownItem as any).dataset.value = item.value;\n (dropdownItem as any).dataset.text = item.text;\n\n dropdownItem!.addEventListener('click', this._onDropdownItemClick);\n\n this.dropdown.append(dropdownItem);\n }\n }\n\n /**\n * Create a new tag and add it to the DOM\n *\n * @param string value\n */\n _createTag(item) {\n const tagFragment = document.createRange().createContextualFragment(tagTemplate({\n removable: this.options.removable,\n style: this.options.tagClass,\n text: item.text,\n value: item.value\n }));\n const tag = tagFragment.firstElementChild;\n\n // Attach tag click event to select it\n tag!.addEventListener('click', this._onTagClick);\n\n if (this.options.removable) {\n // Find delete button and attach click event\n const deleteButton = tag!.querySelector('.delete');\n if (deleteButton) {\n deleteButton.addEventListener('click', this._onTagDeleteClick);\n }\n }\n\n // insert new tag at the end (ie just before input)\n this.container.insertBefore(tag, this._input);\n }\n\n /**\n * Remove all dropdown items except the empty title\n */\n _emptyDropdown() {\n if (this.dropdown) {\n Array.from(this.dropdown.children).filter((child: any) => !child.classList.contains('empty-title')).forEach((child: any) => {\n child.remove();\n });\n }\n }\n\n /**\n * Find needle into a string and wrap it with <mark> HTML tag\n *\n * @param string\n * @param needle\n */\n _highlightMatchesInString(string, needle) {\n const reg = '(' + needle + ')(?![^<]*>|[^<>]*</)'; // explanation: http://stackoverflow.com/a/18622606/1147859\n const regex = new RegExp(reg, 'i');\n\n // If the regex doesn't match the string just return initial string\n if (!string.match(regex)) {\n return string;\n }\n\n // Otherwise, get to highlighting\n const matchStartPosition = string.match(regex).index;\n const matchEndPosition = matchStartPosition + string.match(regex)[0].toString().length;\n const originalTextFoundByRegex = string.substring(matchStartPosition, matchEndPosition);\n string = string.replace(regex, `<mark class=\"is-highlighted\">${originalTextFoundByRegex}</mark>`);\n\n return string;\n }\n\n /**\n * Open dropdown\n */\n _openDropdown() {\n if (this.dropdown) {\n this.container.classList.add('is-active');\n }\n }\n\n /**\n * Propagate internal input changes to the original input\n */\n _propagateChange() {\n if (!this._isSelect) {\n // If original element is an input element\n this.element.value = this.value;\n } else {\n // If original element is a select element\n Array.from(this.element.options).forEach((option: any) => {\n option.setAttribute('selected', undefined);\n option.selected = false;\n\n // If option has been added by TagsInput then we remove it\n // Otherwise it is an original option\n if (typeof option.dataset.source !== 'undefined') {\n option.remove();\n }\n });\n\n // Update original element options selected attributes\n this._items.forEach(item => {\n this._updateSelectOptions({\n value: this._objectItems ? item[this.options.itemValue] : item,\n text: this._objectItems ? item[this.options.itemText] : item\n });\n });\n }\n\n // Trigger Change event manually (because original input is now hidden)\n // Trick: Passes current class constructor name to prevent loop with _onOriginalInputChange handler)\n const changeEvent = new CustomEvent('change', {\n detail: this.constructor.name\n });\n this.element.dispatchEvent(changeEvent);\n }\n\n /**\n * Trim value if option activated\n *\n * @param item\n */\n _trim(item) {\n if (this.options.trim) {\n if (this._objectItems) {\n if (isString(item[this.options.itemValue])) {\n item[this.options.itemValue] = item[this.options.itemValue].trim();\n }\n\n if (isString(item[this.options.itemText])) {\n item[this.options.itemText] = item[this.options.itemText].trim();\n }\n } else {\n item = item.trim();\n }\n }\n\n return item;\n }\n\n /**\n * Filter Dropdown items to be compliant with already selected items and current input value\n * Filtering is made on Text by default (can be changed with option)\n */\n _filterDropdownItems(value: any = null) {\n if (this.dropdown) {\n if (this.emit('before.dropdown.filter', this)) {\n Array.from(this.dropdown.children).filter((child: any) => !child.classList.contains('empty-title')).forEach((child: any) => {\n const childValue = child.dataset[this.options.searchOn];\n\n // Remove highlights\n if (this.options.highlightMatchesString) {\n child.textContent = child.textContent.replace(/<\\/?(mark\\s?(class=\"is\\-highlighted\")?)?>]*>?/gm, '');\n }\n\n // If value is found in dropdown\n if ((value && value.length)) {\n if (this.options.caseSensitive) {\n child.style.display = childValue.includes(value) ? 'block' : 'none';\n } else {\n child.style.display = childValue.toLowerCase().includes(value.toLowerCase()) ? 'block' : 'none';\n }\n\n if (this.options.highlightMatchesString) {\n child.innerHTML = this._highlightMatchesInString(child.innerHTML, value);\n }\n } else {\n child.style.display = 'block';\n }\n\n if (!this.options.allowDuplicates || (this._isSelect && !this._isMultiple)) {\n const hasValue = this.options.searchOn === 'value' ? this.hasValue(childValue) : this.hasText(childValue);\n\n child.style.display = hasValue ? 'none' : child.style.display;\n }\n });\n\n const hasActiveItems = Array.from(this.dropdown.children).filter((child: any) => !child.classList.contains('empty-title')).some((child: any) => child.style.display !== 'none');\n if (hasActiveItems) {\n this.dropdownEmptyOption.style.display = 'none';\n } else {\n this.dropdownEmptyOption.style.display = 'block';\n }\n\n this.emit('after.dropdown.filter', this);\n\n return hasActiveItems;\n }\n }\n\n return true;\n }\n\n /**\n * Update original select option based on given item\n *\n * @param item\n */\n _updateSelectOptions(item) {\n if (this._isSelect) {\n // Check to see if the tag exists in its raw or uri-encoded form\n let option = this.element.querySelector(`option[value=\"${encodeURIComponent(item.value)}\"]`) || this.element.querySelector(`option[value=\"${item.value}\"]`);\n\n // add <option /> if item represents a value not present in one of the <select />'s options\n if (!option) {\n const optionFragment = document.createRange().createContextualFragment(`<option value=\"${item.value}\" data-source=\"${this.id}\" selected>${item.text}</option>`);\n option = optionFragment.firstElementChild;\n\n this.element.add(option);\n }\n\n // mark option as selected\n option.setAttribute('selected', 'selected');\n option.selected = true;\n }\n }\n\n /**\n * Add given item\n * item = 'john'\n * item = 'john,jane'\n * item = ['john', 'jane']\n * item = [{\n * \"value\": \"1\",\n * \"text\": \"John\"\n * }, {\n * \"value\": \"2\",\n * \"text\": \"Jane\"\n * }]\n *\n * @param item\n * @param silently Should the change be propagated to the original element\n */\n add(items, silently = false) {\n // Check if number of items is limited ans reached\n if (typeof this.options.maxTags !== 'undefined' && this._items.length >= this.options.maxTags) {\n return this;\n }\n\n // Make sure to work with an array of items\n items = Array.isArray(items) ? items : isObject(items) ? [items] : items.split(this.options.delimiter);\n\n // If string items are expected then check every item is a string\n if (!this._objectItems && (items.filter(item => isString(item)).length !== items.length)) {\n throw ('Item must be a string or an array of strings');\n }\n\n // If object items are expected then check every item is an object\n if (this._objectItems && (items.filter(item => isObject(item)).length !== items.length)) {\n throw ('Item must be an object or an array of objects');\n }\n\n items.forEach(item => {\n item = this._trim(item);\n\n // Check if item respects min/max chars\n if (this._checkLength(item)) {\n\n // If original input is a non multiple select element\n if (this._isSelect && !this._isMultiple && this._items.length > 0) {\n this.removeAtIndex(0);\n this.element.remove(this.element.selectedIndex);\n }\n\n // check if duplicates are allowed or not\n if (item = this.emit('before.add', item)) {\n if (this.options.allowDuplicates || !this.has(item)) {\n const itemData = {\n value: this._objectItems ? item[this.options.itemValue] : item,\n text: this._objectItems ? item[this.options.itemText] : item\n };\n\n const tag = this._createTag(itemData);\n\n // save item into the internal array\n this._items.push(item);\n\n if (!silently) {\n // Propagate change event to the original input\n this._propagateChange();\n\n this.emit('after.add', {\n item,\n tag\n });\n }\n } else {\n if (this.options.highlightDuplicate) {\n const duplicateTag: any = Array.from(this.container.children).filter((child: any) => child.classList.contains('tag'))[this.indexOf(item)];\n\n if (duplicateTag) {\n duplicateTag.classList.add('is-duplicate');\n setTimeout(() => {\n duplicateTag.classList.remove('is-duplicate');\n }, 1250);\n }\n }\n\n this.emit('item.duplicate', item);\n }\n }\n }\n });\n\n return this;\n }\n\n /**\n * Unselect the selected item\n */\n clearSelection() {\n if (this._selected >= 0) {\n const item = this._items[this._selected];\n const tag: any = Array.from(this.container.children).filter((child: any) => child.classList.contains('tag'))[this._selected];\n\n if (this.emit('before.unselect', {\n item,\n tag\n })) {\n if (tag) {\n tag.classList.remove('is-selected');\n }\n\n this._selected = -1;\n\n this.emit('after.unselect', {\n item,\n tag\n });\n }\n }\n\n return this;\n }\n\n /**\n * Shortcut to removeAll method\n */\n flush() {\n return this.removeAll();\n }\n\n /**\n * Sets focus on the input\n */\n focus() {\n this.container.classList.add('is-focused');\n this._input.focus();\n\n return this;\n }\n\n /**\n * Check if given item is present\n *\n * @param item\n */\n has(item) {\n item = this._trim(item);\n\n if (this._objectItems) {\n return this._items.some(i => this.options.caseSensitive || !isString(i[this.options.itemValue]) ? i[this.options.itemValue] === item[this.options.itemValue] : i[this.options.itemValue].toLowerCase() === item[this.options.itemValue].toLowerCase());\n } else {\n return this.hasValue(item);\n }\n }\n\n /**\n * Check if given text is present\n *\n * @param value\n */\n hasText(value) {\n if (this.options.trim) {\n value = value.trim();\n }\n\n return this._items.some(i => {\n const val = (this._objectItems ? i[this.options.itemText] : i);\n\n return this.options.caseSensitive ? val === value : val.toLowerCase() === value.toLowerCase();\n });\n }\n\n /**\n * Check if given value is present\n *\n * @param value\n */\n hasValue(value) {\n if (this.options.trim) {\n value = value.trim();\n }\n\n return this._items.some(i => {\n const val = (this._objectItems ? i[this.options.itemValue] : i);\n\n return this.options.caseSensitive ? val === value : val.toLowerCase() === value.toLowerCase();\n });\n }\n\n /**\n * Get index of given item\n *\n * @param item\n */\n indexOf(item) {\n item = this._trim(item);\n\n if (this._objectItems) {\n if (!isObject(item)) {\n throw ('Item must be an object');\n }\n\n return this._items.map(function (e) { return e.value; }).indexOf(item.value);\n } else {\n return this._items.indexOf(item);\n }\n }\n\n /**\n * Returns the internal input element\n */\n input() {\n return this._input;\n }\n\n /**\n * Get items\n */\n items() {\n return this._items;\n }\n\n /**\n * Remove given item\n * item = 'john'\n * item = 'john,jane'\n *\n * @param String item\n */\n remove(items) {\n if (this.options.removable) {\n // Make sure to work with an array of items\n items = Array.isArray(items) ? items : isObject(items) ? [items] : items.split(this.options.delimiter);\n\n // If string items are expected then check every item is a string\n if (!this._objectItems && (items.filter(item => isString(item)).length !== items.length)) {\n throw ('Item must be a string or an array of strings');\n }\n // If object items are expected then check every item is an object\n if (this._objectItems && (items.filter(item => isObject(item)).length !== items.length)) {\n throw ('Item must be an object or an array of objects');\n }\n\n items.forEach(item => {\n let index = this.indexOf(item);\n\n while (index >= 0) {\n this.removeAtIndex(index);\n\n index = this.indexOf(item);\n }\n });\n }\n\n return this;\n }\n\n /**\n * Remove all tags at once\n */\n removeAll() {\n if (this.options.removable) {\n if (this.emit('before.flush', this._items)) {\n this.clearSelection();\n\n Array.from(this.container.children).filter((child: any) => child.classList.contains('tag')).forEach((tag: any) => tag.remove());\n\n this._items = [];\n\n this._filterDropdownItems();\n\n this._propagateChange();\n\n this.emit('after.flush', this._items);\n }\n }\n\n return this;\n }\n\n /**\n * Remove item at given index\n *\n * @param Integer index\n */\n removeAtIndex(index, clearSelection = true) {\n if (this.options.removable && !isNaN(index) && index >= 0 && index < this._items.length) {\n const tag: any = Array.from(this.container.children).filter((child: any) => child.classList.contains('tag'))[index];\n const item = this._items[index];\n\n if (this.emit('before.remove', item)) {\n if (clearSelection) {\n this.clearSelection();\n }\n\n if (tag) {\n tag.remove();\n }\n\n // If original input is a select element\n // then deselect related option\n if (this._isSelect) {\n this.element.options[index].selected = false;\n }\n\n if (this._selected == index) {\n this._selected = -1;\n } else if (this._selected >= 0) {\n // One item less so selected index is\n this._selected -= 1;\n }\n\n this._items.splice(index, 1);\n\n this._filterDropdownItems();\n\n this._propagateChange();\n\n this.emit('after.remove', item);\n }\n }\n\n return this;\n }\n\n /**\n * Select given item\n *\n * @param item\n */\n select(items) {\n if (this.options.selectable) {\n // Make sure to work with an array of items\n items = Array.isArray(items) ? items : isObject(items) ? [items] : items.split(this.options.delimiter);\n\n // If string items are expected then check every item is a string\n if (!this._objectItems && (items.filter(item => isString(item)).length !== items.length)) {\n throw ('Item must be a string or an array of strings');\n }\n // If object items are expected then check every item is an object\n if (this._objectItems && (items.filter(item => isObject(item)).length !== items.length)) {\n throw ('Item must be an object or an array of objects');\n }\n\n items.forEach(item => {\n this.selectAtIndex(this.indexOf(item));\n });\n }\n\n return this;\n }\n\n /**\n * Select tag at given index\n *\n * @param Integer index\n */\n selectAtIndex(index) {\n if (this.options.selectable) {\n // Clear selection\n this.clearSelection();\n\n if (!isNaN(index) && index >= 0 && index < this._items.length) {\n const tag: any = Array.from(this.container.children).filter((child: any) => child.classList.contains('tag'))[index];\n const item = this._items[index];\n\n if (this.emit('before.select', {\n item,\n tag\n })) {\n if (tag) {\n tag.classList.add('is-selected');\n }\n\n this._selected = index;\n\n this.emit('after.select', {\n item,\n tag\n });\n }\n }\n }\n\n return this;\n }\n\n /**\n * Get selected item\n */\n get selected() {\n if (this._selected >= 0) {\n return this._items[this._selected];\n } else {\n return null;\n }\n }\n\n /**\n * Get selected item index\n */\n get selectedIndex() {\n return this._selected;\n }\n\n /**\n * Get value\n */\n get value() {\n if (!this._isSelect) {\n if (this._objectItems) {\n return this._items.map(item => item.value).join(this.options.delimiter);\n } else {\n return this._items.join(this.options.delimiter);\n }\n } else {\n return Array.from(this.element.options).filter((option: any) => option.selected).map((option: any) => option.value);\n }\n }\n\n /**\n * Set value\n */\n set value(string) {\n this.removeAll();\n this.add(string);\n }\n\n /**\n * Document click event handler\n *\n * @param e\n */\n _onDocumentClick(e) {\n if (this.dropdown) {\n // If we click on element inside container then do nothing\n if (this.container.contains(e.target)) {\n return;\n }\n\n // Tag and delete button already deleted when event triggered\n // So we check if target is a tag delete button\n if (e.target.dataset.tag && e.target.dataset.tag === 'delete') {\n return;\n }\n\n // Click outside dropdown so close it\n this._closeDropdown();\n }\n }\n\n /**\n * Input focus lost event handler\n *\n * @param e\n */\n _onDropdownItemClick(e) {\n e.preventDefault();\n\n if (this.dropdown) {\n if (this._objectItems) {\n const item = {};\n item[this.options.itemText] = e.currentTarget.dataset.text;\n item[this.options.itemValue] = e.currentTarget.dataset.value;\n\n this.add(item);\n } else {\n this.add(e.currentTarget.dataset.value);\n }\n\n this._filterDropdownItems();\n this._input.value = '';\n this._input.focus();\n\n if (this.options.closeDropdownOnItemSelect) {\n this._closeDropdown();\n }\n }\n }\n\n /**\n * Input change event handler\n *\n * @param e\n */\n _onInputChange(e) {\n this._filterDropdownItems(this._input.value);\n }\n\n /**\n * Input click event handler\n *\n * @param e\n */\n _onInputClick(e) {\n e.preventDefault();\n\n if (!this.source || this._input.value.length >= this.options.searchMinChars) {\n this._openDropdown();\n this._filterDropdownItems();\n }\n }\n\n /**\n * Input focus event handler\n *\n * @param e\n */\n _onInputFocusIn(e) {\n e.preventDefault();\n\n if (this.container.getAttribute('disabled') !== null || this.container.classList.contains('is-disabled')) {\n this._input.blur();\n\n return false;\n }\n\n this.container.classList.add('is-focused');\n }\n\n /**\n * Input focus lost event handler\n *\n * @param e\n */\n _onInputFocusOut(e) {\n e.preventDefault();\n\n this.container.classList.remove('is-focused');\n }\n\n /**\n * Input Keydown event handler\n *\n * @param e\n */\n _onInputKeyDown(e) {\n const key = e.charCode || e.keyCode || e.which;\n\n switch (key) {\n // BACKSPACE\n case 8:\n if (this.options.removable) {\n if (this._caretAtStart() && this._selected >= 0) {\n const currentItemIndex = this._selected;\n // If tag was selected then select next (or previous if next does not exists)\n if (currentItemIndex >= 0) {\n this.selectAtIndex(currentItemIndex + 1 < this._items.length ? currentItemIndex + 1 : currentItemIndex - 1);\n }\n\n this.removeAtIndex(currentItemIndex, false);\n }\n }\n\n if (this.source && (this._input.value.length) < this.options.searchMinChars) {\n this._closeDropdown();\n }\n break;\n // ESCAPE\n case 27:\n if (this._selected >= 0) {\n this.clearSelection();\n }\n\n this._closeDropdown();\n break;\n // DELETE\n case 46:\n if (this.options.removable) {\n if (this._caretAtStart() && this._selected >= 0) {\n const currentItemIndex = this._selected;\n\n // If tag was selected then select next (or previous if next does not exists)\n if (currentItemIndex >= 0) {\n this.selectAtIndex(currentItemIndex + 1 < this._items.length ? currentItemIndex + 1 : currentItemIndex - 1);\n }\n\n this.removeAtIndex(currentItemIndex, false);\n }\n }\n\n if (this.source && (this._input.value.length) < this.options.searchMinChars) {\n this._closeDropdown();\n }\n break;\n // LEFT ARROW\n case 37:\n if (!this._input.value.length) {\n if (this._selected < 0) {\n this.selectAtIndex(this._items.length - 1);\n } else {\n this.selectAtIndex(this._selected - 1 >= 0 ? this._selected - 1 : this._items.length - 1);\n }\n }\n break;\n // RIGHT ARROW\n case 39:\n if (!this._input.value.length) {\n if (this._selected < 0) {\n this.selectAtIndex(0);\n } else {\n this.selectAtIndex(this._selected + 1 >= this._items.length ? 0 : this._selected + 1);\n }\n }\n break;\n default:\n if (this.options.clearSelectionOnTyping) {\n this.clearSelection();\n }\n // ignore\n }\n }\n\n /**\n * Input Keypress event handler\n *\n * @param e\n */\n _onInputKeyPress(e) {\n const key = e.charCode || e.keyCode || e.which;\n let value = this._trim(this._input.value) + String.fromCharCode(key);\n\n if (!this._manualInputAllowed && !this._filterInputAllowed) {\n e.preventDefault();\n\n return false;\n }\n\n // ENTER\n if (!value.length && key !== 13) {\n return false;\n }\n\n if (this._filterInputAllowed) {\n this._filterDropdownItems(value as any);\n }\n\n if (this._filterInputAllowed && this.source && value.length >= this.options.searchMinChars && key !== 13) {\n this._openDropdown();\n this.dropdown.classList.add('is-loading');\n this._emptyDropdown();\n\n this.source(value).then(results => {\n results = this.emit('on.results.received', results);\n\n if (results.length) {\n results.forEach(result => {\n const item = {\n value: null,\n text: null\n };\n\n if (!isObject(result)) {\n item.value = result;\n item.text = result;\n } else {\n item.value = result[this.options.itemValue];\n item.text = result[this.options.itemText];\n }\n\n this._createDropdownItem(item);\n });\n }\n\n this._filterDropdownItems(value as any);\n\n this.dropdown.classList.remove('is-loading');\n });\n }\n\n if (this._manualInputAllowed && (value.includes(this.options.delimiter) || key == 13)) {\n // Prevent default behavior (ie: add char into input value)\n e.preventDefault();\n\n // Split value by delimiter in case we copy/paste multiple values\n const values = value.split(this.options.delimiter);\n values.forEach(value => {\n // check if empty text when delimiter is removed\n if ((value = value.replace(this.options.delimiter, '')) != '') {\n // push to array and remove delimiter\n this.add(value);\n }\n });\n\n value = '';\n // clear input\n this._input.value = '';\n\n this._closeDropdown();\n\n return false;\n }\n }\n\n /**\n * Original input change event handler\n * CAUTION: because original input is now hidden the change event must be triggered manually on change\n * Example how to trigger change event manually\n * var changeEvent = new Event('change');\n * input.dispatchEvent(changeEvent);\n *\n * @param e\n */\n _onOriginalInputChange(e) {\n if (!e.detail || isString(e.detail) && e.detail !== this.constructor.name) {\n this.value = e.currentTarget.value;\n }\n }\n\n /**\n * Tag click event handler\n *\n * @param e\n */\n _onTagClick(e) {\n e.preventDefault();\n\n if (e.currentTarget.classList.contains('delete')) {\n return false;\n }\n\n if (this.container.getAttribute('disabled') !== null || this.container.classList.contains('is-disabled')) {\n return false;\n }\n\n this._input.focus();\n\n if (this.options.selectable) {\n const tag = e.currentTarget.closest('.tag');\n\n if (tag) {\n const tagIndex = Array.from(this.container.children).indexOf(tag);\n if (tagIndex === this._selected) {\n this.clearSelection();\n } else {\n this.selectAtIndex(tagIndex);\n }\n }\n }\n }\n\n /**\n * Delete tag button click event handler\n *\n * @param e\n */\n _onTagDeleteClick(e) {\n e.preventDefault();\n\n if (this.container.getAttribute('disabled') !== null || this.container.classList.contains('is-disabled')) {\n return false;\n }\n\n const tag = e.currentTarget.closest('.tag');\n\n if (tag) {\n this.removeAtIndex(Array.from(this.container.children).indexOf(tag));\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport BulmaTagsInput from '../tags-input';\n\ninterface ITagsInputOptions {\n enabled?: boolean;\n items?: any;\n allowDuplicates?: boolean;\n\tcaseSensitive?: boolean;\n\tclearSelectionOnTyping?: boolean;\n\tcloseDropdownOnItemSelect?: boolean;\n\tdelimiter?: string;\n\tfreeInput?: boolean;\n\thighlightDuplicate?: boolean;\n\thighlightMatchesString?: boolean;\n\titemValue?: string;\n itemText?: string;\n\tmaxTags?: number;\n\tmaxChars?: number;\n\tminChars?: number;\n\tnoResultsLabel?: string;\n\tplaceholder?: string;\n\tremovable?: boolean;\n\tsearchMinChars?: number;\n\tsearchOn?: 'text'|'value';\n\tselectable?: boolean;\n\tsource?: any;\n\ttagClass?: string;\n\ttrim?: boolean;\n}\n\nconst restrictToType: {\n [type: string]: (value: string) => string|number|boolean;\n} = {\n number: val => parseFloat(val) === +val ? val : false\n};\n\ninterface IEvent {\n event: any;\n listener: any;\n}\n\n@Directive({\n selector: '[appTagsInput]'\n})\nexport class TagsInputDirective implements AfterViewInit, OnDestroy {\n private tagsInput?: BulmaTagsInput;\n private inputEvents: IEvent[] = [];\n\n @Input()\n private appTagsInput: ITagsInputOptions = {};\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit() {\n const { enabled } = this.appTagsInput;\n const { localName } = this.input;\n setTimeout(() => !this.tagsInput && enabled && localName === 'input' && this.enableTagsInput());\n }\n\n ngOnDestroy() {\n this.inputEvents.map(({ event, listener }) => this.tagsInputInput.removeEventListener(event, listener));\n this.inputEvents = [];\n this.tagsInput = undefined;\n }\n\n private get input() {\n return this.elementRef.nativeElement as HTMLInputElement;\n }\n\n private get tagsInputNode() {\n return this.elementRef.nativeElement.parentNode.querySelectorAll('.tags-input')[0];\n }\n\n private get tagsInputInput() {\n return this.tagsInputNode.querySelectorAll('.input')[0] as HTMLInputElement;\n }\n\n private setInputEvent({ event, listener }: IEvent) {\n this.tagsInputInput.addEventListener(event, listener);\n this.inputEvents.push({ event, listener });\n }\n\n private mapValue(value: string) {\n return this.appTagsInput.items.type in restrictToType ? restrictToType[this.appTagsInput.items.type](value) : value;\n }\n\n private addInputValue(value?: string) {\n if (value && this.mapValue(value)) {\n this.tagsInput!.add(value);\n this.tagsInputInput.value = '';\n }\n }\n\n private enableTagsInput() {\n try {\n const { enabled, items, ...options } = this.appTagsInput;\n this.tagsInput = new BulmaTagsInput(this.input, options);\n\n // TODO: remove when fixed, @see https://github.com/CreativeBulma/bulma-tagsinput/issues/23\n const classes = ['is-small', 'is-large'].filter(v => this.input.classList.contains(v));\n classes.map(v => this.tagsInputNode.classList.add(v));\n\n // regex pattern matching\n this.tagsInput.on('before.add', value => this.mapValue(value));\n\n // add item on blur if value\n const onBlur = () => this.addInputValue(this.tagsInputInput.value);\n this.setInputEvent({ event: 'blur', listener: onBlur });\n }\n catch (err) {\n console.error(err);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'times'\n})\nexport class TimesPipe implements PipeTransform {\n transform(times: number): unknown {\n return (new Array(times)).fill(1);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap';\nimport { GoogleMapsModule } from '@angular/google-maps';\n\nimport { HeCommonLightModule } from './common.light.module';\n\nimport { BlankNodeStateComponent } from './blank-node-state/blank-node-state.component';\nimport { BlankNodeStateNoticeComponent } from './blank-node-state-notice/blank-node-state-notice.component';\nimport { BlankNodeValueDeltaComponent } from './blank-node-value-delta/blank-node-value-delta.component';\nimport { ClipboardComponent } from './clipboard/clipboard.component';\nimport { LinkKeyValueComponent } from './link-key-value/link-key-value.component';\nimport { MapsDrawingConfirmComponent } from './maps-drawing-confirm/maps-drawing-confirm.component';\nimport { PopoverComponent } from './popover/popover.component';\nimport { PopoverConfirmComponent } from './popover-confirm/popover-confirm.component';\nimport { SchemaVersionLinkComponent } from './schema-version-link/schema-version-link.component';\nimport { SkeletonTextComponent } from './skeleton-text/skeleton-text.component';\nimport { UnitConverterComponent } from './unit-converter/unit-converter.component';\nimport { ClickOutsideDirective } from './click-outside.directive';\nimport { GetPipe } from './get.pipe';\nimport { TagsInputDirective } from './tags-input.directive';\nimport { TimesPipe } from './times.pipe';\n\nconst components = [\n ClipboardComponent,\n PopoverComponent,\n PopoverConfirmComponent,\n TagsInputDirective,\n LinkKeyValueComponent,\n MapsDrawingConfirmComponent,\n BlankNodeStateComponent,\n BlankNodeStateNoticeComponent,\n BlankNodeValueDeltaComponent,\n SchemaVersionLinkComponent,\n UnitConverterComponent,\n TimesPipe,\n ClickOutsideDirective,\n SkeletonTextComponent,\n GetPipe\n];\n\n@NgModule({\n declarations: components,\n exports: [\n NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,\n GoogleMapsModule,\n HeCommonLightModule,\n ...components\n ],\n imports: [\n CommonModule, FormsModule, RouterModule,\n NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,\n GoogleMapsModule,\n HeCommonLightModule\n ]\n})\nexport class HeCommonModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Bibliography } from '@hestia-earth/schema';\n\nimport { filterParams, handleAPIError } from '../common/utils';\nimport { HeCommonService } from '../common/common.service';\n\ninterface IMendeleySearchParams {\n title?: string;\n limit?: number;\n doi?: string;\n scopus?: string;\n}\n\nexport class MendeleySearchResult {\n count = 0;\n results: Partial<Bibliography>[] = [];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeMendeleyService {\n constructor(\n protected http: HttpClient,\n protected commonService: HeCommonService\n ) {}\n\n private get path() {\n return `${this.commonService.apiBaseUrl}/mendeley`;\n }\n\n find(params: IMendeleySearchParams) {\n return this.http.get<MendeleySearchResult>(this.path, { params: filterParams(params) });\n }\n\n get(id: string) {\n return this.http.get<Bibliography>(`${this.path}/${id}`).toPromise().catch(handleAPIError);\n }\n}\n","import { NodeType, TermTermType, nestedSearchableKeys } from '@hestia-earth/schema';\n\nexport type searchableType = NodeType.Cycle | NodeType.Source;\n\nexport const searchableTypes: searchableType[] = [\n NodeType.Cycle,\n NodeType.Source\n];\n\ntype multiMatchType = 'best_fields' | 'most_fields' | 'cross_fields' | 'phrase' | 'phrase_prefix' | 'bool_prefix';\ntype multiMatchAnalyzer = 'standard';\n\nexport interface ISearchFilters {\n [key: string]: (string | number)[];\n}\n\nexport const serializeSearchFilters = (filters: ISearchFilters) =>\n Object.entries(filters || {})\n .filter(([_key, value]) => value.length)\n .map(([key, value]) => `${key}=${value.filter(Boolean).join('|')}`)\n .join(';');\n\nexport const deserializeSearchFilters = (filters: string): ISearchFilters =>\n (filters || '').split(';').reduce((prev: any, curr) => {\n const [key, values] = curr.split('=');\n prev[key] = (values || '').split('|').filter(Boolean);\n return prev;\n }, {});\n\nexport const matchType = (type: NodeType | string) => Object.freeze({\n match: { '@type': type }\n});\n\nexport const matchTermType = (termType: TermTermType | string) => Object.freeze({\n match: { termType }\n});\n\nexport const matchRegex = (key: string, value: string | RegExp) => Object.freeze({\n regexp: { [key]: { value: value.toString() } }\n});\n\nexport const matchQuery = (key: string, value: any, boost?: number) => Object.freeze({\n match: {\n [key]: {\n query: value,\n ...(boost ? { boost } : {})\n }\n }\n});\n\nexport const matchExactQuery = (key: string, value: any, boost?: number) => matchQuery(`${key}.keyword`, value, boost);\n\nexport const matchNameNormalized = (query: string, boost = 20) => Object.freeze({\n match: { nameNormalized: { query, boost } }\n});\n\nexport const numberGte = (key: string, value: number) => Object.freeze({\n range: { [key]: { gte: value } }\n});\n\nexport const multiMatchQuery = (\n query: string, fields: string[], type: multiMatchType = 'best_fields', boost?: number, analyzer?: multiMatchAnalyzer\n) => Object.freeze({\n multi_match: {\n query,\n fields,\n type,\n ...(boost ? { boost } : {}),\n ...(analyzer ? { analyzer } : {})\n }\n});\n\nexport const matchPhraseQuery = (query: string, boost?: number, ...fields: string[]) =>\n fields.length ? multiMatchQuery(query, fields, 'phrase', boost) : matchExactQuery('name', query, boost);\n\nexport const matchPhrasePrefixQuery = (query: string, boost = 2, ...fields: string[]) =>\n fields.length ?\n multiMatchQuery(query, fields, 'phrase_prefix', boost) :\n Object.freeze({\n match_phrase_prefix: {\n nameSearchAsYouType: {\n query,\n boost\n }\n }\n });\n\nexport const matchBoolPrefixQuery = (query: string, boost = 1, ...fields: string[]) =>\n fields.length ?\n multiMatchQuery(query, fields, 'bool_prefix', boost) :\n Object.freeze({\n match_bool_prefix: {\n name: {\n query,\n boost\n }\n }\n });\n\nexport const wildcardQuery = (query: string, boost = 3, ...fields: string[]) => Object.freeze({\n simple_query_string: {\n query: `*${query}*`,\n fields,\n analyze_wildcard: true,\n boost\n }\n});\n\nconst matchCountryLevel = { match: { gadmLevel: 0 } };\n\nexport const matchGlobalRegion = { regexp: { '@id': 'region-*' } };\n\nexport const matchCountry = Object.freeze({\n bool: {\n should: [\n matchCountryLevel,\n matchGlobalRegion\n ],\n minimum_should_match: 1\n }\n});\n\nexport const countriesQuery = Object.freeze({\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.region),\n matchCountryLevel\n ]\n }\n});\n\nexport const allCountriesQuery = Object.freeze({\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.region)\n ],\n ...matchCountry.bool\n }\n});\n\nexport const matchRegion = numberGte('gadmLevel', 1);\n\nexport const regionsQuery = Object.freeze({\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.region),\n matchRegion\n ]\n }\n});\n\nexport const worldRegion = Object.freeze({\n '@id': 'region-world',\n name: 'World'\n});\n\nexport const cropsQuery = Object.freeze({\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.crop)\n ]\n }\n});\n\nexport const matchAggregatedQuery = matchQuery('aggregated', true);\n\nconst isNestedKey = (key: string) => nestedSearchableKeys.includes(key.split('.')[0]);\n\nexport const matchNestedKey = (key: string, query: any) =>\n isNestedKey(key) ? {\n nested: { path: key.split('.')[0], query }\n } : query;\n\n/**\n * List of fields to return in the search results.\n */\nexport const searchResultsFields: {\n [type in searchableType]: string[];\n} = Object.freeze({\n [NodeType.Cycle]: [\n 'description', 'dataDescription', 'endDate',\n 'emissionsCount', 'inputsCount', 'productsCount',\n 'site.location', 'site.country.name', 'site.region.name'\n ],\n [NodeType.Source]: ['bibliography.title', 'bibliography.documentDOI'],\n [NodeType.ImpactAssessment]: ['emissionsResourceUseCount', 'impactsCount', 'country.name']\n});\n\n/**\n * List of fields to search in.\n */\nconst searchFields: {\n [type in searchableType]: string[];\n} = Object.freeze({\n [NodeType.Cycle]: ['name', 'description', 'dataDescription'],\n [NodeType.Source]: ['name', 'bibliography.title'],\n [NodeType.ImpactAssessment]: ['name', 'product.name', 'country.name']\n});\n\nconst searchFieldsNested: {\n [type in searchableType]: string[];\n} = Object.freeze({\n [NodeType.Cycle]: [\n 'inputs.term.name',\n 'emissions.term.name',\n 'practices.term.name'\n ],\n [NodeType.Source]: [],\n [NodeType.ImpactAssessment]: [\n 'emissionsResourceUse.term.name',\n 'impacts.term.name'\n ]\n});\n\n/**\n * Specific strict queries per type.\n */\nconst searchQueries: {\n [type in searchableType]: { must: any[]; must_not: any[] };\n} = {\n [NodeType.Cycle]: { must: [], must_not: [matchAggregatedQuery] },\n [NodeType.Source]: { must: [], must_not: [matchAggregatedQuery] }\n};\n\nconst searchFiltersKeys: {\n [type in searchableType]: (key: string) => string;\n} = {\n [NodeType.Cycle]: key => key,\n [NodeType.Source]: key => key\n};\n\n/* eslint-disable complexity */\nexport const searchQuery = (type: searchableType, query?: string, filters?: ISearchFilters, aggregated?: boolean) => {\n const boolQuery: any = ({\n must: [\n matchType(type),\n aggregated ? matchAggregatedQuery : null\n ].filter(Boolean),\n ...(query ? {\n should: [\n matchPhraseQuery(query, 100, ...searchFields[type]), // make sure exact matches come first\n matchPhrasePrefixQuery(query, 20, ...searchFields[type]),\n matchBoolPrefixQuery(query, 10, ...searchFields[type]),\n ...searchFieldsNested[type].map(field => matchNestedKey(field, matchBoolPrefixQuery(query, 1, field)))\n ],\n minimum_should_match: 1\n } : {}),\n must_not: [\n aggregated ? null : matchAggregatedQuery\n ].filter(Boolean)\n });\n const keys = Object.keys(filters || {}).filter(key => filters![key].length);\n return {\n bool: keys.length ? {\n must: keys.map(key => {\n const filterKey = searchFiltersKeys[type](key);\n return {\n bool: {\n should: filters![key]\n .map(value => matchNestedKey(filterKey, matchExactQuery(filterKey, value)))\n .map(must => {\n const localQuery = JSON.parse(JSON.stringify(boolQuery));\n localQuery.must.push(must);\n return { bool: localQuery };\n }),\n minimum_should_match: 1\n }\n };\n })\n } : boolQuery\n };\n};\n/* eslint-enable complexity */\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport {\n JSONLD, NodeType, ICycleJSONLD, ISourceJSONLD, ITermJSONLD, Source, SchemaType, IImpactAssessmentJSONLD\n} from '@hestia-earth/schema';\n\nimport { HeCommonService } from '../common/common.service';\nimport {\n matchType, matchPhraseQuery, matchPhrasePrefixQuery, matchQuery, searchableType, searchableTypes, matchBoolPrefixQuery\n} from './search.model';\n\nexport type searchResult = ICycleJSONLD | ISourceJSONLD | IImpactAssessmentJSONLD | ITermJSONLD;\n\nexport type sortOrders = 'asc' | 'desc';\n\ninterface ISearchParamSort {\n [key: string]: sortOrders;\n}\n\ninterface ISearchScript {\n _script: {\n type?: string;\n order?: sortOrders;\n script: string;\n };\n}\n\nexport interface ISearchParams {\n limit?: number;\n offset?: number;\n fields?: string[];\n sort?: ISearchParamSort[] | ISearchScript;\n query?: any;\n}\n\nexport interface ISearchResultExtended {\n _score: number;\n createdAt: string;\n // geospacial search\n location?: {\n lat: number;\n lon: number;\n };\n // used in search\n properties?: string[];\n expanded?: boolean;\n extended?: boolean;\n pinned?: boolean;\n loading?: boolean;\n selected?: boolean;\n // count for lists\n inputsCount?: number;\n emissionsCount?: number;\n productsCount?: number;\n}\n\nexport interface ISearchResults<C extends JSONLD<T>, T extends NodeType = searchableType> {\n /**\n * Amount of time the query took\n */\n time: number;\n /**\n * Numnber of results\n */\n count: number;\n results: (C & ISearchResultExtended)[];\n}\n\nconst emptySearchResult = <C extends JSONLD<T>, T extends NodeType>() => ({\n time: 0,\n count: 0,\n results: []\n} as ISearchResults<C, T>);\n\nexport const MAX_RESULTS = 10000;\n\nexport const suggestMatchQuery = (query: string) => [\n matchPhraseQuery(query, 10),\n matchQuery('nameNormalized', query, 8),\n matchPhrasePrefixQuery(query, 2)\n];\n\nexport const suggestQuery = <T extends NodeType = searchableType>(\n query: string, type?: T, extraQueries: any[] = []\n) => ({\n bool: {\n must: extraQueries,\n should: (type ? [type] : searchableTypes).map(v => ({\n bool: {\n must: [matchType(v)],\n should: suggestMatchQuery(query),\n minimum_should_match: 1\n }\n })),\n minimum_should_match: 1\n }\n});\n\nconst suggestSourceQuery = (query: string, fields: string[]) => ({\n bool: {\n must: [matchType(NodeType.Source)],\n should: [\n matchPhraseQuery(query, 100, ...fields),\n matchPhrasePrefixQuery(query, 20, ...fields),\n matchBoolPrefixQuery(query, 10, ...fields)\n ],\n minimum_should_match: 1\n }\n});\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeSearchService {\n constructor(\n protected http: HttpClient,\n protected commonService: HeCommonService\n ) { }\n\n public search<C extends JSONLD<T>, T extends NodeType = searchableType>(params: ISearchParams) {\n return this.http.post<ISearchResults<C, T>>(`${this.commonService.apiBaseUrl}/search`, params)\n .pipe(\n catchError(() => of(emptySearchResult<C, T>()))\n )\n .toPromise();\n }\n\n public count(params = {}) {\n return this.http.post<number>(`${this.commonService.apiBaseUrl}/count`, params).toPromise().catch(() => 0);\n }\n\n public get$<C extends JSONLD<T>, T extends NodeType>(type: T, id: string) {\n return this.http.post<ISearchResults<C, T>>(`${this.commonService.apiBaseUrl}/search`, {\n limit: 1,\n query: {\n bool: {\n must: [{ match: { '@type': type } }, { match: { '@id': id } }]\n }\n }\n })\n .pipe(\n catchError(() => of(emptySearchResult<C, T>())),\n map(({ results }) => results[0] || null)\n );\n }\n\n public get<C extends JSONLD<T>, T extends NodeType>(type: T, id: string) {\n return this.get$<C, T>(type, id).toPromise();\n }\n\n public suggest<C extends JSONLD<T>, T extends NodeType = searchableType>(\n term: string, type?: T, extraQueries: any[] = [], fullQuery?: any, limit = 10, includes: string[] = []\n ) {\n const query = fullQuery || suggestQuery(term, type, extraQueries);\n return this.http.post<ISearchResults<C, T>>(`${this.commonService.apiBaseUrl}/search`, {\n limit,\n fields: ['name', '@id', type ? '' : '@type', 'termType', 'aggregated', ...includes].filter(val => !!val),\n query\n })\n .pipe(\n catchError(() => of(emptySearchResult<C, T>())),\n map(({ results }) => results.map(({ _score, ...res }) => res))\n );\n }\n\n public suggestSource(term: string, limit = 5, fields = ['bibliography.title'], includes = ['bibliography.title']) {\n return this.suggest(term, NodeType.Source, [], suggestSourceQuery(term, fields), limit, includes)\n .pipe(\n map((sources: Partial<Source>[]) => sources.map(source => ({\n ...source,\n bibliography: {\n // needed to create a nested property\n type: SchemaType.Bibliography,\n ...source.bibliography\n }\n } as Partial<Source>)))\n );\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, AfterViewInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { catchError, debounceTime, distinctUntilChanged, map, switchMap, tap } from 'rxjs/operators';\nimport { Observable, of, Subscription, zip } from 'rxjs';\nimport { Bibliography, Source } from '@hestia-earth/schema';\n\nimport { HeMendeleyService } from '../../mendeley/mendeley.service';\nimport { HeSearchService } from '../../search/search.service';\n\ntype searchByFields = 'title' | 'documentDOI' | 'scopus';\ntype Result = Partial<Source> | Partial<Bibliography>;\n\n@Component({\n selector: 'he-bibliographies-search-confirm',\n templateUrl: './bibliographies-search-confirm.component.html',\n styleUrls: ['./bibliographies-search-confirm.component.scss']\n})\nexport class BibliographiesSearchConfirmComponent implements AfterViewInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n @Input()\n private search?: string;\n @Input()\n private searchSources = true;\n @Input()\n private searchBibliographies = true;\n @Input()\n public searchBy: searchByFields = 'title';\n\n @Output()\n private closed = new EventEmitter<any>();\n\n public formGroup: FormGroup;\n public loading = true;\n\n public results: Observable<Result[]>;\n public selectedResult?: Result;\n public hasResults = false;\n\n constructor(\n formBuilder: FormBuilder,\n private mendeleyService: HeMendeleyService,\n private searchService: HeSearchService\n ) {\n this.formGroup = formBuilder.group({\n search: ['', Validators.required]\n });\n this.results = this.searchControl!.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n tap(() => {\n this.loading = true;\n this.selectedResult = undefined;\n }),\n switchMap(term => term.length > 1 ? this.runSearch(term) : of([] as any)),\n tap(values => {\n this.loading = false;\n this.hasResults = values.length > 0;\n })\n );\n }\n\n ngAfterViewInit() {\n this.searchControl!.setValue(this.search || '');\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n private get searchLimit() {\n return this.searchSources && this.searchBibliographies ? 5 : 10;\n }\n\n private runSearchSources(term: string) {\n const fields = [`bibliography.${this.searchBy}`];\n const includes = ['bibliography.title', 'bibliography.documentDOI', 'bibliography.scopus'];\n return this.searchSources ? this.searchService.suggestSource(term, this.searchLimit, fields, includes) : of([]);\n }\n\n private runSearchBibliographies(term: string) {\n // scopus\n const params = this.searchBy === 'title' ? { title: term } : (\n this.searchBy === 'documentDOI' ? { doi: term } : { scopus: term }\n );\n return this.searchBibliographies ? this.mendeleyService.find({ ...params, limit: this.searchLimit }).pipe(\n map(({ results }: any) => results)\n ) : of([]);\n }\n\n private runSearch(term: string) {\n return zip(\n this.runSearchSources(term),\n this.runSearchBibliographies(term)\n ).pipe(\n catchError(() => of([])),\n map(res => res.flat())\n );\n }\n\n public searchFocus(e: Event) {\n e.stopPropagation();\n setTimeout(() => {\n const inputEvent = new Event('input');\n e.target?.dispatchEvent(inputEvent);\n }, 0);\n }\n\n public get searchControl() {\n return this.formGroup.get('search');\n }\n\n public resetSearch() {\n this.searchControl!.setValue('');\n }\n\n public selectResult(result: Result) {\n this.selectedResult = result;\n }\n\n public confirm() {\n this.closed.next(this.selectedResult);\n }\n\n public cancel() {\n this.closed.next(null);\n }\n}\n","<div class=\"modal is-large 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\">Search Bibliographies</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"cancel()\"></button>\n </header>\n <section class=\"modal-card-body\">\n <form [formGroup]=\"formGroup\" novalidate>\n <div class=\"field has-addons\">\n <div class=\"control is-expanded has-icons-right\">\n <input class=\"input search-input\"\n [attr.placeholder]=\"'Search bibliography by ' + searchBy\"\n formControlName=\"search\" name=\"randomname\" autocomplete=\"off\"\n (focus)=\"searchFocus($event)\"\n >\n <a class=\"icon is-small is-right\" (click)=\"!loading && resetSearch()\" [ngSwitch]=\"loading\">\n <fa-icon *ngSwitchCase=\"true\" icon=\"spinner\" [pulse]=\"true\"></fa-icon>\n <fa-icon *ngSwitchCase=\"false\" icon=\"times\"></fa-icon>\n </a>\n </div>\n </div>\n </form>\n\n <div class=\"mt-2\">\n <span [class.is-hidden]=\"loading || !searchControl?.value || hasResults\">\n No bibliographies found matching query.\n </span>\n\n <ul>\n <li *ngFor=\"let result of results | async\">\n <a class=\"is-block p-1 search-result\" (click)=\"selectResult(result)\"\n [class.is-active]=\"selectedResult === result\"\n >\n <ngb-highlight\n [result]=\"result.bibliography ? result.bibliography.title : result.title\"\n [term]=\"searchControl?.value\"\n ></ngb-highlight>\n\n <span class=\"px-1\">-</span>\n\n <span class=\"px-1\"><i>{{result.name}}</i></span>\n\n <span class=\"px-1\"\n *ngIf=\"result.bibliography?.documentDOI || result.documentDOI\"\n >- <b>documentDOI:</b>\n </span>\n <ngb-highlight\n [result]=\"result.bibliography ? result.bibliography.documentDOI : result.documentDOI\"\n [term]=\"searchControl?.value\"\n ></ngb-highlight>\n\n <span class=\"px-1\"\n *ngIf=\"result.bibliography?.scopus || result.scopus\"\n >- <b>scopus:</b>\n </span>\n <ngb-highlight\n [result]=\"result.bibliography?.scopus || result.scopus\"\n [term]=\"searchControl?.value\"\n ></ngb-highlight>\n\n <span>\n <ng-container *ngTemplateOutlet=\"mendeleyLink; context: {$implicit: result.bibliography ? result.bibliography.mendeleyID : result.mendeleyID}\"></ng-container>\n </span>\n </a>\n </li>\n </ul>\n </div>\n </section>\n <footer class=\"modal-card-foot\">\n <button class=\"button is-primary\" (click)=\"confirm()\" [disabled]=\"!selectedResult\">\n <span>Confirm</span>\n </button>\n <button class=\"button\" (click)=\"cancel()\">\n <span>Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #mendeleyLink let-id>\n <a *ngIf=\"id\" [href]=\"'https://www.mendeley.com/catalogue/' + id\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { HeCommonModule } from '../common/common.module';\n\nimport {\n BibliographiesSearchConfirmComponent\n} from './bibliographies-search-confirm/bibliographies-search-confirm.component';\n\nconst components = [\n BibliographiesSearchConfirmComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, ReactiveFormsModule,\n HeCommonModule\n ]\n})\nexport class HeBibliographiesModule { }\n","import { json2csvAsync } from 'json-2-csv';\n\nexport enum Level {\n debug = 'DEBUG',\n info = 'INFO',\n warning = 'WARNING',\n error = 'ERROR'\n}\n\nexport const levels = Object.values(Level);\n\nexport interface ILine {\n code: string;\n data: any;\n class: string;\n level: Level;\n}\n\nconst parseLine = (text: string) => {\n try {\n return JSON.parse(text);\n }\n catch (err) {\n return { level: Level.debug };\n }\n};\n\nconst levelToClass = {\n [Level.debug]: 'has-text-info',\n [Level.error]: 'has-text-danger',\n [Level.info]: '',\n [Level.warning]: 'has-text-warning'\n};\n\nexport const parseData = (data: any) => ({\n code: JSON.stringify(data),\n data,\n class: levelToClass[data.level],\n level: data.level\n} as ILine);\n\nexport const parseLines = (text: any) =>\n typeof text === 'string' ?\n (text || '').trim().split('\\n').filter(Boolean).map(parseLine).map(parseData) :\n [parseData(text)];\n\nconst csvKey = (key: string) => ({\n key: 'key/term',\n term: 'key/term',\n time: '',\n unit: ''\n}[key] || key).trim();\n\nconst csvValue = (value: string) => (value || '').replace('[', '').replace(']', '').trim();\n\nexport const parseMessage = (message: string) => message.split(',').reduce((prev, parts) => {\n const [key, value] = parts.split('=');\n const val = csvValue(value);\n return {\n ...prev,\n ...(key && val ? { [csvKey(key)]: val } : {})\n };\n}, {});\n\nconst formatLine = ({ data: { timestamp, message } }: ILine) => ({\n timestamp,\n ...parseMessage(message)\n});\n\nexport const toCsv = (lines: ILine[]) =>\n json2csvAsync(lines.map(formatLine).filter(data => Object.keys(data).length > 1), {\n emptyFieldValue: ''\n });\n","import { NodeType, ICycleJSONLD } from '@hestia-earth/schema';\n\nexport interface ICycleJSONLDExtended extends ICycleJSONLD {\n related: {\n [type in NodeType]?: string[];\n };\n}\n\nexport const primaryProduct = ({ products }: Partial<ICycleJSONLD>) => (products || []).find(({ primary }) => primary);\n","/* eslint-disable complexity */\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { from, of, ReplaySubject } from 'rxjs';\nimport { catchError, map, mergeMap, reduce, take } from 'rxjs/operators';\nimport { isEmpty, isUndefined, isEqual } from '@hestia-earth/utils';\nimport { SchemaType, NodeType, SCHEMA_VERSION, sortConfig, sortKeysByType } from '@hestia-earth/schema';\nimport {\n definitions, definition, IDefinition, IDefinitionObject, IDefinitionArray, IDefinitionProperties\n} from '@hestia-earth/json-schema';\nimport { headersFromCsv } from '@hestia-earth/schema-convert';\n\nimport { baseUrl } from '../common/utils';\n\nexport const linkTypeEnabled = (type: SchemaType | NodeType) => [\n NodeType.Cycle,\n NodeType.ImpactAssessment,\n NodeType.Site,\n NodeType.Source,\n NodeType.Term\n].includes(type as NodeType);\n\nexport const refToSchemaType = (ref = '') =>\n ref.startsWith('http') ? ref : ref.substring(2).replace('-deep', '').replace('.json#', '') as SchemaType;\n\nexport const definitionToSchemaType = ({ title, $ref }: IDefinitionObject) =>\n (title || refToSchemaType($ref)) as SchemaType;\n\nconst schemaTypeProperties = (properties: IDefinitionProperties, schemaType?: SchemaType) => schemaType ? [\n 'type',\n ...('id' in properties && schemaType !== SchemaType.Term ? ['id'] : [])\n] : [];\n\nconst definitionToSchema = ({ required, properties }: IDefinitionObject) => ({\n required: required || [],\n properties: properties || {}\n});\n\nexport const schemaRequiredProperties = (schemas: definitions, def: IDefinitionObject) => {\n const schemaType = definitionToSchemaType(def);\n const { required, properties } = schemaType in schemas ?\n (schemas[schemaType] as IDefinitionObject) :\n definitionToSchema(def);\n // remove internal properties\n const props = (required || []).filter(key => !properties[key].internal);\n return {\n schemaType,\n properties: [\n ...props,\n ...schemaTypeProperties(properties, schemaType)\n ].map(key => ({ key, value: properties[key] }))\n };\n};\n\nexport const valueTypeToDefault = {\n number: '',\n integer: '',\n boolean: false,\n string: ''\n};\n\nexport const nestingTypeEnabled = (schemaType: SchemaType) => ![\n SchemaType.Cycle,\n SchemaType.ImpactAssessment,\n SchemaType.Organisation,\n SchemaType.Site,\n SchemaType.Source\n].includes(schemaType);\n\nexport const nestingEnabled = (schemaType: SchemaType, key: string) =>\n nestingTypeEnabled(schemaType) || ['type', 'id'].includes(key);\n\nexport const schemaTypeToDefaultValue = (schemas: definitions, prop: definition, nested = false): any => {\n const mappings: {\n [key: string]: () => any;\n } = {\n object: () => {\n const { schemaType, properties } = schemaRequiredProperties(schemas, prop as IDefinitionObject);\n return properties\n .filter(({ key }) => !nested || nestingEnabled(schemaType, key))\n .map(({ key, value }) => ({ key, value: schemaTypeToDefaultValue(schemas, value, true) }))\n .reduce((prev, curr) => ({ ...prev, [curr.key]: curr.value }), {});\n },\n array: () => {\n const { items } = prop as IDefinitionArray;\n return [schemaTypeToDefaultValue(schemas, items, true)];\n },\n default: () => prop.default || (valueTypeToDefault as any)[prop.type as string]\n };\n const mapped = !prop.type ? mappings.object : (\n prop.type as string in mappings ? mappings[prop.type as string] : mappings.default\n );\n return mapped();\n};\n\nconst typePropertiesKeys: {\n [type in SchemaType]?: string[];\n} = {\n [SchemaType.Term]: ['type', 'id', '@id', 'name']\n};\n\nexport const availableProperties = (\n schema: definition, schemaType: SchemaType, value: any, isTopLevel = true, skipExistingNode = true\n) => {\n const { properties } = 'properties' in schema ? schema : { properties: {} };\n const keys = schemaType in typePropertiesKeys ? typePropertiesKeys[schemaType] : Object.keys(properties || {});\n const internalProps = keys?.filter(prop => properties[prop].internal);\n const existing = [\n ...(isEmpty(value) ? [] : Object.keys(value).filter(v => !isEmpty(value[v]) || value[v] === '')),\n ...internalProps!,\n ...(isTopLevel ? [] : ['@id']),\n '@type'\n ];\n const available = keys?.filter(prop => !existing.includes(prop)).reduce((prev: any, prop) => {\n prev[prop] = properties[prop];\n return prev;\n }, {});\n // avoid editing an existing node\n const isExistingNode = !isUndefined(value) && !isUndefined(value['@type'] || value.type) && !isUndefined(value['@id']);\n return isExistingNode && skipExistingNode ? {} : available;\n};\n\nexport const isSchemaIri = (schema?: IDefinitionObject) =>\n isEqual(Object.keys(schema?.properties || {}), ['@id']) && isEqual((schema?.required || []), ['@id']);\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeSchemaService {\n private schemasLoading = false;\n private schemasLoaded = false;\n private _schemas = new ReplaySubject<definitions>(1);\n\n private sortConfigLoading = false;\n private sortConfigLoaded = false;\n private _sortConfig = new ReplaySubject<sortConfig>(1);\n\n constructor(\n protected http: HttpClient\n ) { }\n\n private loadSchemas() {\n this.schemasLoading = true;\n return from(Object.values(SchemaType)).pipe(\n mergeMap(type => this.http.get<IDefinition>(\n `${baseUrl()}/schema/${SCHEMA_VERSION}/json-schema/${type}.json`\n ).pipe(\n map(schema => ({ type, schema })),\n catchError(() => of({ type, schema: { properties: [] } }))\n )),\n reduce((prev, { type, schema }) => ({ ...prev, [type]: schema }), {} as definitions),\n map(data => {\n this._schemas.next(data);\n this.schemasLoading = false;\n this.schemasLoaded = true;\n return data;\n })\n );\n }\n\n public get schemas$() {\n return this.schemasLoading || this.schemasLoaded ? this._schemas.asObservable() : this.loadSchemas();\n }\n\n public schemas() {\n return this.schemas$.pipe(take(1)).toPromise();\n }\n\n private loadSortConfig() {\n this.sortConfigLoading = true;\n return this.http.get<sortConfig>(`${baseUrl()}/schema/${SCHEMA_VERSION}/sort-config/config.json`).pipe(\n catchError(() => of((undefined as any) as sortConfig)),\n map(data => {\n this._sortConfig.next(data);\n this.sortConfigLoading = false;\n this.sortConfigLoaded = true;\n return data;\n })\n );\n }\n\n public get sortConfig$() {\n return this.sortConfigLoading || this.sortConfigLoaded ? this._sortConfig.asObservable() : this.loadSortConfig();\n }\n\n public sortConfig() {\n return this.sortConfig$.pipe(take(1)).toPromise();\n }\n\n /**\n * Parse and sort (if possible) headers from CSV content according to the schema order.\n * This will load the sort configuration according to the current schema version.\n *\n * @param csvContent The content as a string\n * @returns List of strings as Observable when parsing / sorting is done.\n */\n public async parseHeaders(csvContent: string) {\n const headers = headersFromCsv(csvContent);\n try {\n const config = await this.sortConfig();\n return sortKeysByType(headers, 'asc', config);\n }\n catch (err) {\n return headers;\n }\n };\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { definitions } from '@hestia-earth/json-schema';\nimport { isDefaultCSVSelected, isCSVIncluded } from '@hestia-earth/json-schema/schema-utils';\n\nimport { HeSchemaService } from '../../schema/schema.service';\n\ninterface IHeader {\n header: string;\n selected: boolean;\n}\n\ninterface IGroupedHeaders {\n [group: string]: {\n selected: boolean;\n partialSelected: boolean;\n open: boolean;\n headers: IHeader[];\n };\n}\n\nconst headerGroup = (header: string) => {\n const parts = header.split('.');\n return parts.length === 2 ? '' : [parts[0], parts[1]].join('.');\n};\n\nconst termFields = [\n '@id', 'name', 'units', 'termType'\n];\n\nconst isTermField = (field: string) => ({ header }: IHeader) => [\n 'term', 'methodModel', 'country', 'product', 'operation', 'key'\n].some(parent => header.endsWith([parent, field].join('.')));\n\n@Component({\n selector: 'he-node-csv-select-headers',\n templateUrl: './node-csv-select-headers.component.html',\n styleUrls: ['./node-csv-select-headers.component.scss']\n})\nexport class NodeCsvSelectHeadersComponent implements OnInit {\n @Input()\n private csv = '';\n @Input()\n private keys?: string[];\n @Input()\n private includeDefaultCSV = false;\n\n @Output()\n public headersChanged = new EventEmitter<string[]>();\n\n public headers: IGroupedHeaders = {};\n public allSelected = false;\n\n public showSelectTermFields = false;\n public termFields = termFields;\n public termFieldSelected: any = {};\n\n constructor(\n private schemaService: HeSchemaService\n ) {}\n\n async ngOnInit() {\n const schemas = await this.schemaService.schemas();\n const isSelected = await this.isSelected(schemas);\n const headers = await this.schemaService.parseHeaders(this.csv);\n this.headers = headers.filter(isCSVIncluded(schemas)).reduce((prev, header) => {\n const group = headerGroup(header);\n prev[group] = prev[group] || { headers: [], selected: false, partialSelected: false, open: true };\n prev[group].headers.push({ header, selected: isSelected(header) });\n return prev;\n }, {} as IGroupedHeaders);\n Object.keys(this.headers).map(groupKey => this.updateGroupHeader(groupKey));\n this.termFieldSelected = termFields.reduce((prev, curr) => ({ ...prev, [curr]: curr === '@id' }), {});\n this.reresh();\n }\n\n private async isSelected(schemas: definitions) {\n const isSelected = this.includeDefaultCSV ? () => true : isDefaultCSVSelected(schemas);\n return (key: string) => (!this.keys?.length || this.keys.some(v => key.startsWith(v))) && isSelected(key);\n }\n\n public dropHeader(event: CdkDragDrop<IHeader[]>, groupKey: string) {\n moveItemInArray(this.headers[groupKey].headers, event.previousIndex, event.currentIndex);\n this.headersChanged.emit(this.selectedHeaders);\n }\n\n private updateAllSelected() {\n this.allSelected = Object.keys(this.headers).every(key => this.headers[key].selected);\n }\n\n public toggleAll() {\n // select all term fields\n Object.keys(this.termFieldSelected).map(key => (this.termFieldSelected[key] = true));\n // select all keys\n return Object.entries(this.headers).map(([key, group]) => {\n group.selected = this.allSelected;\n return this.updateGroup(key);\n });\n }\n\n public updateGroup(groupKey: string) {\n const group = this.headers[groupKey];\n group.headers.map(header => header.selected = group.selected);\n }\n\n public updateGroupHeader(groupKey: string) {\n const group = this.headers[groupKey];\n const allSelected = group.headers.every(({ selected }) => selected);\n group.selected = allSelected;\n group.partialSelected = !allSelected && group.headers.some(({ selected }) => selected);\n }\n\n public get selectedHeaders() {\n return Object.values(this.headers)\n .flatMap(({ headers }) => headers)\n .filter(({ selected }) => selected)\n .map(({ header }) => header);\n }\n\n public reresh() {\n this.updateAllSelected();\n this.headersChanged.emit(this.selectedHeaders);\n }\n\n // Term fields\n\n public toggleTermField(field: string) {\n const selected = this.termFieldSelected[field];\n return Object.entries(this.headers).map(([key, group]) => {\n group.headers.filter(isTermField(field)).map(header => header.selected = selected);\n return this.updateGroupHeader(key);\n });\n }\n}\n","<p class=\"mb-2\">Please select which columns you would like to include:</p>\n\n<p class=\"my-2 is-size-7\"><i>You can drag and drop the headers to sort them as they would appear in the CSV file.</i></p>\n\n<div class=\"columns toggle-all mx-4 pb-1 mb-0\">\n <div class=\"column\">\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"allSelected\"\n (change)=\"toggleAll(); reresh()\"\n >\n <span class=\"ml-2\">Toggle All</span>\n </label>\n </div>\n\n <div class=\"column is-narrow has-text-right\">\n <div class=\"dropdown is-right has-text-left\"\n [class.is-active]=\"showSelectTermFields\"\n (clickOutside)=\"showSelectTermFields = false\"\n >\n <div class=\"dropdown-trigger\" (click)=\"showSelectTermFields = !showSelectTermFields\">\n <button class=\"button is-small\"\n aria-haspopup=\"true\" aria-controls=\"select-menu\"\n >\n <span>Toggle Term Fields</span>\n <span class=\"icon is-small\">\n <fa-icon icon=\"filter\" aria-hidden=\"true\"></fa-icon>\n </span>\n </button>\n </div>\n <div class=\"dropdown-menu\" id=\"select-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <a class=\"dropdown-item\"\n *ngFor=\"let field of termFields\"\n >\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"termFieldSelected[field]\"\n (change)=\"toggleTermField(field)\"\n >\n <span class=\"ml-2\">{{field}}</span>\n </label>\n </a>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"drag-container\">\n <div class=\"card\" *ngFor=\"let group of headers | keys\">\n <header class=\"card-header\" *ngIf=\"group.key\">\n <div class=\"card-header-title\">\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [indeterminate]=\"group.value.partialSelected\"\n [(ngModel)]=\"group.value.selected\"\n (change)=\"updateGroup(group.key); reresh()\"\n >\n <span class=\"ml-2\">{{group.key}}</span>\n </label>\n </div>\n <span class=\"card-header-icon has-text-link\" aria-label=\"open / close\"\n (click)=\"group.value.open = !group.value.open\" pointer\n >\n <span class=\"icon\">\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!group.value.open\"></fa-icon>\n <fa-icon icon=\"angle-left\" [class.is-hidden]=\"group.value.open\"></fa-icon>\n </span>\n </span>\n </header>\n\n <div class=\"card-content p-3\" [class.is-hidden]=\"!group.value.open\">\n <ul cdkDropList (cdkDropListDropped)=\"dropHeader($event, group.key)\">\n <li *ngFor=\"let header of group.value.headers\" cdkDrag>\n <label class=\"checkbox ml-2\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"header.selected\"\n (change)=\"updateGroupHeader(group.key); reresh()\"\n >\n <span class=\"ml-2\">{{header.header}}</span>\n </label>\n </li>\n </ul>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { fileToExt, SupportedExtensions } from '@hestia-earth/api';\nimport { JSON as HestiaJson } from '@hestia-earth/schema';\nimport { toCsv } from '@hestia-earth/schema-convert';\n\ninterface INodeIncluded {\n node: HestiaJson<any>;\n included: boolean;\n}\n\n@Component({\n selector: 'he-node-csv-export-confirm',\n templateUrl: './node-csv-export-confirm.component.html',\n styleUrls: ['./node-csv-export-confirm.component.scss']\n})\nexport class NodeCsvExportConfirmComponent implements OnInit {\n private headers: string[] = [];\n\n @Input()\n private nodes: HestiaJson<any>[] = [];\n @Input()\n private filename = 'download';\n @Input()\n public headerKeys?: string[];\n @Input()\n public extension = SupportedExtensions.csv;\n @Input()\n public isUpload = true;\n\n @Output()\n public closed = new EventEmitter<boolean>();\n\n public csvData?: string;\n public csvContent?: SafeResourceUrl;\n public showIncludeNodes = false;\n public includedNodes: INodeIncluded[] = [];\n\n constructor(\n private domSanitizer: DomSanitizer\n ) { }\n\n ngOnInit() {\n this.includedNodes = this.nodes.map(node => ({ node, included: true }));\n this.csvData = toCsv(this.nodes || [], !this.isUpload);\n }\n\n public get included() {\n return this.includedNodes.filter(({ included }) => included);\n }\n\n public headersUpdated(headers: string[]) {\n this.headers = headers;\n return this.updateCsvContent();\n }\n\n public updateCsvContent() {\n const nodes = this.included.map(({ node }) => node);\n const data = toCsv(nodes, !this.isUpload, false, this.headers);\n this.csvContent = this.headers.length ? this.domSanitizer.bypassSecurityTrustResourceUrl(\n `data:text/html;charset=utf-8,${encodeURIComponent(data)}`\n ) : undefined;\n }\n\n public get downloadFilename() {\n return fileToExt(this.filename, this.extension);\n }\n}\n","<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\">Export as CSV</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(true)\"></button>\n </header>\n <section class=\"modal-card-body\">\n <div class=\"notification is-info\" role=\"alert\" *ngIf=\"isUpload\">\n <span>After Download, you can edit and</span>\n <a class=\"px-1\" routerLink=\"../\">upload the CSV file</a>\n <span>to submit your content on the Hestia platform, and your draft will remain unchanged.</span>\n\n <p>\n <span>Alternatively, you can import the CSV file right back by clicking on the \"Import from CSV\" button and selecting the exported file.</span>\n </p>\n </div>\n\n <ng-container *ngIf=\"!isUpload && includedNodes.length > 1\">\n <p class=\"mb-2\">\n <b>{{includedNodes.length}}</b>\n <span class=\"px-1\">Nodes will be included in your download.</span>\n <a (click)=\"showIncludeNodes = !showIncludeNodes\">\n <ng-container *ngIf=\"!showIncludeNodes\">Show list</ng-container>\n <ng-container *ngIf=\"showIncludeNodes\">Hide list</ng-container>\n </a>\n </p>\n\n <div class=\"table-container\" *ngIf=\"showIncludeNodes\">\n <table class=\"table is-fullwidth is-hoverable mb-0\">\n <thead class=\"has-background-black\">\n <tr>\n <th>\n <span class=\"has-text-white\">@type</span>\n </th>\n <th>\n <span class=\"has-text-white\">@id</span>\n </th>\n <th>\n <span class=\"has-text-white\">Name</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of includedNodes\">\n <td>\n <span *bindOnce=\"node\">{{node.node['@type']}}</span>\n </td>\n <td>\n <span *bindOnce=\"node\">{{node.node['@id']}}</span>\n </td>\n <td>\n <span *bindOnce=\"node\">{{node.node.name}}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </ng-container>\n\n <he-node-csv-select-headers [class.is-hidden]=\"isUpload\"\n [csv]=\"csvData\" [keys]=\"headerKeys\" [includeDefaultCSV]=\"isUpload\"\n (headersChanged)=\"headersUpdated($event)\"\n ></he-node-csv-select-headers>\n </section>\n <footer class=\"modal-card-foot\">\n <a class=\"button is-success\" target=\"_blank\"\n [attr.disabled]=\"csvContent ? null : true\"\n [href]=\"csvContent\"\n [attr.download]=\"csvContent ? downloadFilename : null\"\n (click)=\"closed.next(true)\"\n >\n <fa-icon class=\"mr-2\" icon=\"download\"></fa-icon>\n <span>Download CSV</span>\n </a>\n <button class=\"button\" (click)=\"closed.next(true)\">\n <span>Cancel</span>\n </button>\n </footer>\n </div>\n</div>\n","export enum DiffsDisplayType {\n diffs = 'diffs',\n sideBySide = 'side-by-side'\n}\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { NodeType, JSONLD } from '@hestia-earth/schema';\nimport { create, formatters } from 'jsondiffpatch';\nconst omit = require('lodash.omit');\n\nimport { DiffsDisplayType } from './node-diffs.model';\nimport { HeNodeService } from '../node.service';\n\nconst ignoreProperties = [\n '@type', '@id', 'type', 'id'\n];\n\nconst excludeProperties = [\n // properties for indexed Node\n '@context', 'uploadDate', 'validationDate', 'validationBy', 'schemaVersion', 'originalId', 'dataPrivate'\n];\n\nconst customDiff = create({\n propertyFilter: name => !ignoreProperties.includes(name) && !excludeProperties.includes(name)\n});\n\n@Component({\n selector: 'he-node-diffs',\n templateUrl: './node-diffs.component.html',\n styleUrls: ['./node-diffs.component.scss']\n})\nexport class NodeDiffsComponent implements OnInit {\n @Input()\n private data: any;\n @Input()\n private id?: string;\n @Input()\n private type?: NodeType;\n @Input()\n public displayType = DiffsDisplayType.diffs;\n\n @Output()\n private diffsLoaded = new EventEmitter<string>();\n\n public DiffsDisplayType = DiffsDisplayType;\n public loading = true;\n public left?: JSONLD<NodeType>;\n public right: any;\n public diffHtml?: string;\n\n constructor(\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.right = this.data;\n const type = this.data?.type || this.type;\n this.left = await this.nodeService.get<JSONLD<NodeType>>({ '@type': type, '@id': this.id });\n this.loadDiffs();\n this.loading = false;\n }\n\n private loadDiffs() {\n this.left = omit(this.left, excludeProperties);\n this.right = omit(this.right, excludeProperties);\n const delta = customDiff.diff(this.left, this.right);\n const diffs = formatters.html.format(delta!, this.left);\n this.diffsLoaded.emit(diffs);\n this.diffHtml = diffs || '<p>No difference.</p>';\n }\n}\n","<div *ngIf=\"loading\" class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n</div>\n\n<ng-container *ngIf=\"left && right\">\n <ng-container [ngSwitch]=\"displayType\">\n <div *ngSwitchCase=\"DiffsDisplayType.diffs\" [innerHTML]=\"diffHtml\"></div>\n\n <div *ngSwitchCase=\"DiffsDisplayType.sideBySide\" class=\"columns\">\n <div class=\"column is-6\">\n <pre class=\"has-background-black has-text-white\"><code>{{left | json}}</code></pre>\n </div>\n <div class=\"column is-6\">\n <pre class=\"has-background-black has-text-white\"><code>{{right | json}}</code></pre>\n </div>\n </div>\n </ng-container>\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { NodeType } from '@hestia-earth/schema';\n\nconst nodeTypeToIcon: {\n [type in NodeType]: string;\n} = {\n [NodeType.Actor]: 'user',\n [NodeType.Cycle]: 'seedling',\n [NodeType.ImpactAssessment]: 'clipboard-list',\n [NodeType.Organisation]: 'building',\n [NodeType.Site]: 'map-marked',\n [NodeType.Source]: 'book-open',\n [NodeType.Term]: 'spell-check'\n};\n\n@Component({\n selector: 'he-node-icon',\n templateUrl: './node-icon.component.html',\n styleUrls: ['./node-icon.component.scss']\n})\nexport class NodeIconComponent {\n @Input()\n private type?: NodeType;\n @Input()\n public size = 'lg';\n\n public get icon() {\n return this.type ? nodeTypeToIcon[this.type] : null;\n }\n}\n","<ng-container *ngIf=\"icon\">\n <fa-icon [icon]=\"icon\" [size]=\"size\"></fa-icon>\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { JSONLD, NodeType } from '@hestia-earth/schema';\n\nimport { linkTypeEnabled } from '../../schema/schema.service';\nimport { baseUrl, isExternal } from '../../common/utils';\n\n@Component({\n selector: 'he-node-link',\n templateUrl: './node-link.component.html',\n styleUrls: ['./node-link.component.scss']\n})\nexport class NodeLinkComponent {\n @Input()\n public node?: JSONLD<NodeType>;\n @Input()\n public showExternalLink = false;\n\n public baseUrl = baseUrl();\n\n public get showLink() {\n return this.node && linkTypeEnabled(this.node['@type']);\n }\n\n public get target() {\n return this.showExternalLink || isExternal() ? '_blank' : '_self';\n }\n}\n","<a *ngIf=\"showLink; else content\"\n [href]=\"baseUrl + '/' + node!['@type'].toLowerCase() + '/' + node!['@id']\"\n [target]=\"target\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <fa-icon class=\"no-print ml-2 is-align-middle\" icon=\"external-link-alt\" size=\"sm\" *ngIf=\"showExternalLink\"></fa-icon>\n</a>\n\n<ng-template #content>\n <span class=\"is-align-middle\" #placeholder><ng-content></ng-content></span>\n <span class=\"is-align-middle\" *ngIf=\"placeholder.children.length === 0\">{{node!['@id']}}</span>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable, of } from 'rxjs';\nimport { map, mergeMap, tap } from 'rxjs/operators';\nimport { DataState, fileToExt } from '@hestia-earth/api';\nimport { JSONLD, NodeType } from '@hestia-earth/schema';\n\nimport { HeNodeService } from '../node.service';\nimport { ILine, Level, levels, parseLines, toCsv } from '../../common/logs-utils';\n\n@Component({\n selector: 'he-node-logs-file',\n templateUrl: './node-logs-file.component.html',\n styleUrls: ['./node-logs-file.component.scss']\n})\nexport class NodeLogsFileComponent implements OnInit {\n private allLogs: ILine[] = [];\n\n @Input()\n public node?: JSONLD<NodeType>;\n @Input()\n public dataState?: DataState;\n\n public showFilters = false;\n public Level = Level;\n public modelFilter = '';\n public termFilter = '';\n public selectedLevel = Level.info;\n public loading = false;\n public nodeLog?: Observable<string>;\n public nodeLogLines: ILine[] = [];\n public csvContent?: SafeResourceUrl;\n public fileToExt = fileToExt;\n\n constructor(\n private domSanitizer: DomSanitizer,\n private nodeService: HeNodeService\n ) { }\n\n ngOnInit() {\n this.nodeLog = of({\n ...this.node,\n dataState: this.dataState\n }).pipe(\n tap(() => this.loading = true),\n mergeMap(node => this.nodeService.getLog(node)),\n map(value => value || 'No logs.'),\n tap(value => {\n this.allLogs = parseLines(value).filter(({ data }) => data.logger === 'hestia_earth.models');\n this.updateCsvContent();\n this.applyFilters();\n }),\n tap(() => this.loading = false)\n );\n }\n\n private async updateCsvContent() {\n this.csvContent = this.domSanitizer.bypassSecurityTrustResourceUrl(\n `data:text/html;charset=utf-8,${encodeURIComponent(await toCsv(this.allLogs))}`\n );\n }\n\n public applyFilters() {\n this.nodeLogLines = this.allLogs\n .filter(({ level }) => levels.indexOf(level) >= levels.indexOf(this.selectedLevel))\n .filter(({ code }) =>\n (!this.modelFilter || code.toLocaleLowerCase().includes(`model=${this.modelFilter.toLowerCase()}`)) &&\n (!this.termFilter || code.toLocaleLowerCase().includes(`term=${this.termFilter.toLowerCase()}`))\n );\n }\n}\n","<div class=\"is-relative\">\n <div class=\"copy-clipboard\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <he-clipboard clipboardClass=\"button is-link is-small\"\n [value]=\"nodeLog | async\" [hideText]=\"true\" [icon]=\"['far', 'clone']\" size=\"lg\" rotate=\"180\"\n ></he-clipboard>\n </div>\n <ng-container *ngIf=\"showFilters\">\n <div class=\"control\">\n <input class=\"input is-link is-small\"\n [(ngModel)]=\"modelFilter\" id=\"modelFilter\"\n (input)=\"applyFilters()\"\n placeholder=\"Filter by Method / Model\"\n >\n </div>\n <div class=\"control\">\n <input class=\"input is-link is-small\"\n [(ngModel)]=\"termFilter\" id=\"termFilter\"\n (input)=\"applyFilters()\"\n placeholder=\"Filter by Term\"\n >\n </div>\n <div class=\"control\">\n <div class=\"select is-link is-small\">\n <select (change)=\"applyFilters()\"\n [(ngModel)]=\"selectedLevel\" id=\"selectedLevel\"\n >\n <option *ngFor=\"let level of Level | keys\" [value]=\"level.value\">{{level.value}}</option>\n </select>\n </div>\n </div>\n </ng-container>\n <div class=\"control\">\n <button class=\"button is-small\" (click)=\"showFilters = !showFilters\"\n [ngbTooltip]=\"showFilters ? 'Hide filters' : 'Show filters'\" placement=\"bottom\" container=\"body\"\n >\n <fa-icon icon=\"filter\"></fa-icon>\n </button>\n </div>\n <div class=\"control pl-3\">\n <a class=\"button is-dark is-outlined is-small\" target=\"_blank\"\n [href]=\"csvContent\"\n [download]=\"fileToExt(node!['@id'], 'csv')\"\n >\n <fa-icon class=\"mr-2\" icon=\"download\"></fa-icon>\n <span>Download (CSV)</span>\n </a>\n </div>\n </div>\n </div>\n\n <pre class=\"pl-3 pt-3 ml-3\"><code class=\"is-block {{line.class}}\" *ngFor=\"let line of nodeLogLines\">{{line.data.timestamp}} {{('[' + line.data.level + ']:').padEnd(9, ' ')}} {{line.data.message}}</code></pre>\n</div>\n","/* eslint-disable complexity */\nimport { Component, Input, OnInit } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { distinct, filter, reduce, toArray, map, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport { Emission, ITermJSONLD, Product, Input as HestiaInput, NodeType, TermTermType } from '@hestia-earth/schema';\nimport { unique } from '@hestia-earth/utils';\nconst get = require('lodash.get');\nconst orderBy = require('lodash.orderby');\n\nimport { INodeLogs, INodeTermLogs } from '../node.service';\nimport { HeEngineService, IOrchestratorConfig, findConfigModels } from '../../engine/engine.service';\nimport { matchTermType, matchType } from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { isExternal, keyToLabel, propertyValue } from '../../common/utils';\n\ntype subValueKeys = 'input' | 'property';\n\ninterface IBlankNodeLogSubValue {\n key: subValueKeys;\n value: any;\n configModels: string[];\n}\n\ninterface IBlankNodeLog {\n isOpen: boolean;\n canOpen: boolean;\n term: ITermJSONLD;\n configModels: string[];\n original: number;\n recalculated: number;\n isRecalculated: boolean;\n hasData: boolean;\n logs?: INodeTermLogs;\n keys: string[];\n subValues: IBlankNodeLogSubValue[];\n}\n\nconst reduceValues = (values: any[]) =>\n values.length ? values.reduce((p, v) => p + propertyValue(v.value), 0) : null;\n\nconst logSubValue = (logs: INodeTermLogs, key: string, prop: subValueKeys) => logs[key][prop] ? {\n key: prop, value: logs[key][prop], configModels: [key]\n} as IBlankNodeLogSubValue : undefined;\n\nconst logSubValues = (logs: INodeTermLogs): IBlankNodeLogSubValue[] =>\n Object.keys(logs)\n .flatMap(key => [\n logSubValue(logs, key, 'input'),\n logSubValue(logs, key, 'property')\n ])\n .filter(Boolean) as any;\n\nconst logKeys = (logs: INodeTermLogs) => Object.keys(logs).filter(key => logs[key].isKey);\n\n@Component({\n selector: 'he-node-logs-models',\n templateUrl: './node-logs-models.component.html',\n styleUrls: ['./node-logs-models.component.scss']\n})\nexport class NodeLogsModelsComponent implements OnInit {\n private config?: IOrchestratorConfig;\n private models: ITermJSONLD[] = [];\n private allTerms: ITermJSONLD[] = [];\n private allBlankNodes: IBlankNodeLog[] = [];\n\n @Input()\n private nodeType?: NodeType;\n /**\n * Restrict models by key.\n */\n @Input()\n private nodeKey?: string;\n @Input()\n public logsUrl?: string;\n @Input()\n public originalValues: (Emission | Product | HestiaInput)[] = [];\n @Input()\n private recalculatedValues: (Emission | Product | HestiaInput)[] = [];\n @Input()\n private terms: ITermJSONLD[] = [];\n @Input()\n private logs?: INodeLogs;\n @Input()\n public filteredType?: string;\n\n public isExternal = isExternal();\n public loading = true;\n public blankNodes: IBlankNodeLog[] = [];\n public methodModelsCount = 0;\n public methodsById?: any;\n public onlyWithData = true;\n\n public term?: string;\n public suggestTerm = (text$: Observable<string>) =>\n text$.pipe(\n distinctUntilChanged(),\n switchMap(v => this.suggestByTerm(v)),\n );\n\n constructor(\n private searchService: HeSearchService,\n private hestiaEngineService: HeEngineService\n ) { }\n\n async ngOnInit() {\n this.config = await this.hestiaEngineService.ochestratorConfig(this.nodeType!);\n\n const { results: models } = await this.searchService.search<ITermJSONLD, NodeType.Term>({\n fields: ['@type', '@id', 'name'],\n limit: 1000,\n query: {\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.model)\n ]\n }\n }\n });\n this.models = models;\n\n this.methodsById = await from(this.models).pipe(\n filter(v => !!v),\n distinct(v => v['@id']),\n reduce((prev, curr) => ({ ...prev, [curr['@id']]: curr }), {})\n ).toPromise();\n\n const originalValues = (this.originalValues || []).filter(value => !(value as any).deleted);\n const recalculatedValues = (this.recalculatedValues || []).filter(value => !(value as any).deleted);\n this.allTerms = await this.fetchAllTerms();\n this.allBlankNodes = this.allTerms.flatMap(term => {\n const emissionLogs = get(this.logs, term['@id'], {}) as INodeTermLogs;\n const original = originalValues.filter(v => term['@id'] === v.term!['@id']);\n const recalculated = recalculatedValues.filter(v => term['@id'] === v.term!['@id']);\n const hasData = !!original.length || !!recalculated.length || Object.keys(emissionLogs).length > 0;\n const configModels = unique([\n ...findConfigModels(this.config!, term['@id'], this.nodeKey!).map(({ model }) => model),\n ...Object.keys(emissionLogs)\n ]).filter(key => !(\n key in emissionLogs\n ) || (\n !emissionLogs[key].isKey && !emissionLogs[key].input && !emissionLogs[key].property\n ));\n const keys = logKeys(emissionLogs);\n const subValues = logSubValues(emissionLogs);\n return {\n isOpen: true,\n canOpen: keys.length > 0 || subValues.length > 0,\n term,\n configModels,\n original: reduceValues(original),\n recalculated: reduceValues(recalculated),\n isRecalculated: !recalculated.length || recalculated.some(v => (v.added || []).includes('value')),\n hasData,\n logs: emissionLogs,\n keys,\n subValues\n };\n });\n this.methodModelsCount = Math.max.apply(Math.max, this.allBlankNodes.flatMap(v => [\n v.configModels.length,\n v.keys.length,\n ...v.subValues.map(s => s.configModels.length)\n ]));\n\n this.filterResults();\n\n this.loading = false;\n }\n\n private async fetchAllTerms() {\n return from(\n this.terms.length ?\n this.terms :\n [\n ...(this.originalValues || []).map(({ term }) => term),\n ...(this.recalculatedValues || []).map(({ term }) => term)\n ]\n ).pipe(\n distinct(v => v!['@id']),\n toArray(),\n map(v => orderBy(v, ['name'], ['asc']))\n ).toPromise();\n }\n\n private suggestByTerm(term: string) {\n return from(this.allTerms).pipe(\n map(v => v.name),\n filter(v => v.toLowerCase().includes(term.toLowerCase())),\n toArray()\n );\n }\n\n public trackByBlankNode(_index: number, node: IBlankNodeLog) {\n return node.term['@id'];\n }\n\n public togglePopover(popover, context) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n public validSubValue(node: IBlankNodeLog, index: number, subValue?: IBlankNodeLogSubValue) {\n const methodId = this.getMethodIdAt(node, index, subValue);\n return !subValue?.value || get(node.logs![methodId], subValue?.key, null) === subValue?.value;\n }\n\n public getMethodIdAt(node: IBlankNodeLog, index: number, subValue?: IBlankNodeLogSubValue) {\n const { configModels } = subValue || node;\n return configModels[index];\n }\n\n public methodName({ logs }: IBlankNodeLog, methodId: string) {\n return this.methodsById[methodId]?.name || logs![methodId]?.key || keyToLabel(methodId);\n }\n\n public hasLog({ logs }: IBlankNodeLog, methodId: string) {\n return methodId in logs! && 'shouldRun' in logs![methodId];\n }\n\n public hasLogDetails({ logs }: IBlankNodeLog, methodId: string) {\n const log = logs![methodId];\n return log?.requirements || log?.logs || log?.missingLookups?.length;\n }\n\n public logColor(node: IBlankNodeLog, methodId: string) {\n return this.hasLog(node, methodId) ? (\n node.logs![methodId].shouldRun ? 'success' : 'danger'\n ) : 'dark';\n }\n\n public requirementColor(value: any) {\n return !value || ['None', 'False', '0', '0.0'].includes(value) ? 'danger' : 'white';\n }\n\n public filterResults() {\n setTimeout(() => {\n this.blankNodes = this.allBlankNodes.filter(({ hasData, term: { name } }) =>\n (!this.onlyWithData || hasData) &&\n (!this.term || name === this.term)\n );\n });\n }\n}\n","<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 <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table\">\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 *ngIf=\"originalValues?.length\">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 <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.original | precision:3 | default:'-'}}</span>\n </td>\n <td>\n <span *ngIf=\"blankNode.isRecalculated; else notUpdated\">\n {{blankNode.recalculated | precision:3 | default:'-'}}\n </span>\n </td>\n <td *ngIf=\"originalValues?.length\" class=\"is-nowrap\">\n <he-blank-node-value-delta *ngIf=\"blankNode.isRecalculated\"\n [value]=\"blankNode.recalculated\"\n [originalValue]=\"blankNode.original\"\n ></he-blank-node-value-delta>\n </td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {blankNode: blankNode}\"></ng-container>\n </tr>\n\n <tr\n *ngIf=\"blankNode.keys?.length\"\n [class.is-hidden]=\"!blankNode.isOpen\"\n [class.has-sub-rows]=\"blankNode.subValues?.length\"\n >\n <td class=\"width-auto\">\n <div class=\"pl-3 has-text-left\">\n <span>Fields</span>\n </div>\n </td>\n <td [attr.colspan]=\"originalValues?.length ? 3 : 2\"></td>\n <td *ngFor=\"let key of blankNode.keys\">\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {blankNode: blankNode, methodId: key}\"></ng-container>\n </td>\n <td *ngIf=\"methodModelsCount > blankNode.keys.length\" [attr.colspan]=\"methodModelsCount - blankNode.keys.length\"></td>\n </tr>\n\n <tr\n *ngFor=\"let subValue of blankNode.subValues\"\n [class.is-hidden]=\"!blankNode.isOpen\"\n >\n <td>\n <div class=\"pl-3 has-text-left\">\n <span class=\"is-inline-block is-nowrap has-text-ellipsis\">{{subValue.key | keyToLabel}}: {{subValue.value | keyToLabel}}</span>\n </div>\n </td>\n <td [attr.colspan]=\"originalValues?.length ? 3 : 2\"></td>\n <ng-container *ngTemplateOutlet=\"blankNodeModels; context: {blankNode: blankNode, subValue: subValue}\"></ng-container>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\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 <span>Models:</span>\n </div>\n <div class=\"column is-narrow has-text-success\">\n <fa-icon icon=\"check\"></fa-icon>\n <span class=\"pl-1\">successful</span>\n </div>\n <div class=\"column is-narrow has-text-danger\">\n <fa-icon icon=\"times\"></fa-icon>\n <span class=\"pl-1\">failed</span>\n </div>\n <div class=\"column is-narrow has-text-dark\">\n <fa-icon [icon]=\"['far', 'circle']\"></fa-icon>\n <span class=\"pl-1\">not run (model higher up hierarchy run instead)</span>\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 recalculated {{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 *ngFor=\"let c of methodModelsCount | times; let i = index\">\n <ng-container *ngIf=\"validSubValue(blankNode, i, subValue)\">\n <ng-container *ngIf=\"getMethodIdAt(blankNode, i, subValue); let methodId\">\n <ng-container *ngTemplateOutlet=\"blankNodeModel; context: {blankNode: blankNode, methodId: methodId}\"></ng-container>\n </ng-container>\n </ng-container>\n </td>\n</ng-template>\n\n<ng-template #blankNodeModel let-blankNode=\"blankNode\" let-methodId=\"methodId\">\n <span\n [class.trigger-popover]=\"hasLogDetails(blankNode, methodId)\"\n [ngbPopover]=\"logDetails\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"hasLogDetails(blankNode, methodId) ? togglePopover(p, { log: blankNode.logs[methodId] }) : null\"\n >\n <span class=\"is-capitalized\">{{methodName(blankNode, methodId)}}</span>\n <span class=\"pl-1\" *ngIf=\"hasLog(blankNode, methodId) && blankNode.logs[methodId].methodTier\">[{{blankNode.logs[methodId].methodTier}}]</span>\n <span class=\"pl-1 has-text-{{logColor(blankNode, methodId)}}\">\n <fa-icon *ngIf=\"!hasLog(blankNode, methodId)\" [icon]=\"['far', 'circle']\"></fa-icon>\n <fa-icon *ngIf=\"hasLog(blankNode, methodId)\" [icon]=\"blankNode.logs[methodId].shouldRun ? 'check' : 'times'\"></fa-icon>\n </span>\n </span>\n</ng-template>\n\n<ng-template #notUpdated>\n <span>not updated</span>\n</ng-template>\n\n<ng-template #logDetails let-log=\"log\">\n <ng-container *ngIf=\"log.requirements\">\n <p *ngFor=\"let key of log.requirements | keys\" class=\"has-text-{{requirementColor(key.value)}}\">\n {{key.key}}: {{key.value}}\n </p>\n </ng-container>\n <ng-container *ngIf=\"log.logs\">\n <p *ngFor=\"let key of log.logs | keys\">\n {{key.key}}: {{key.value}}\n </p>\n </ng-container>\n <ng-container *ngIf=\"log.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 log.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","import { Component, Input, OnInit } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { JSONLD, NodeType } from '@hestia-earth/schema';\n\nimport { INodeMissingLookupLog, HeNodeService } from '../node.service';\n\n@Component({\n selector: 'he-node-missing-lookup-factors',\n templateUrl: './node-missing-lookup-factors.component.html',\n styleUrls: ['./node-missing-lookup-factors.component.scss']\n})\nexport class NodeMissingLookupFactorsComponent implements OnInit {\n @Input()\n public node?: JSONLD<NodeType>;\n\n public loading = true;\n public logs: INodeMissingLookupLog[] = [];\n\n constructor(\n public nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.loading = true;\n this.logs = await this.nodeService.getMissingLookupsLog({\n ...this.node,\n dataState: DataState.recalculated\n });\n this.loading = false;\n }\n}\n","<div *ngIf=\"!loading; else loader\" class=\"table-container data-table-container\">\n <table class=\"table is-fullwidth is-hoverable 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 <th>\n <span class=\"has-text-white\">Model</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngIf=\"!logs.length\">\n <td colspan=\"3\">\n <span>No missing lookup factors.</span>\n </td>\n </tr>\n <tr *ngFor=\"let log of logs\">\n <td>{{log.filename}}</td>\n <td>\n <span *ngIf=\"log.column; else na\">{{log.column}}</span>\n </td>\n <td>\n <span *ngIf=\"log.termId; else na\">{{log.termId}}</span>\n </td>\n <td>\n <ng-container *ngIf=\"log.model; else na\">\n <span>{{log.model}}</span>\n <span class=\"pl-1\" *ngIf=\"log.key\">/ {{log.key}}</span>\n <span class=\"pl-1\" *ngIf=\"log.term && log.term !== log.termId\">/ {{log.term}}</span>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n\n<ng-template #na>\n <span>-</span>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NodeType } from '@hestia-earth/schema';\n\nimport { grouppedValueKeys, IGroupedNode } from '../../common/utils';\nimport { baseUrl } from '../../common/utils';\n\nconst additionalKeys = [\n 'methodModelDescription', 'description',\n 'primary', 'emissionDuration', 'observations', 'statsDefinition',\n 'term', 'source', 'variety', 'reliability', 'price', 'currency', 'cost', 'revenue', 'economicValueShare',\n 'impactAssessment'\n];\nconst tableKeys = ['inputs', 'value', 'methodModel', 'methodTier', 'statsDefinition'];\n\n@Component({\n selector: 'he-node-value-details',\n templateUrl: './node-value-details.component.html',\n styleUrls: ['./node-value-details.component.scss']\n})\nexport class NodeValueDetailsComponent<T> implements OnInit {\n @Input()\n public data?: IGroupedNode<T>;\n @Input()\n public nodeType?: NodeType;\n @Input()\n public dataKey?: string;\n\n public baseUrl = baseUrl();\n public keys = ['value', ...grouppedValueKeys];\n public additionalKeys = additionalKeys;\n public tableKeys = tableKeys;\n\n public get type() {\n return this.data?.nodes[0]['@type'];\n }\n\n ngOnInit() {\n this.tableKeys = tableKeys.filter(key => (this.data?.nodes || []).some(node => key in node));\n }\n}\n","<ng-container *bindOnce=\"data\">\n <ng-container *ngIf=\"data?.nodes?.length === 1; else showTable\">\n <ng-container *ngFor=\"let key of keys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n <ng-container *ngFor=\"let key of additionalKeys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #showTable>\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" key=\"term\"></he-link-key-value>\n\n <div class=\"table-container mt-2\">\n <table class=\"table is-narrow\">\n <thead>\n <th *ngFor=\"let key of tableKeys\">\n <a [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n </th>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of data!.nodes\">\n <td *ngFor=\"let key of tableKeys\">\n <he-link-key-value [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { HeCommonModule } from '../common/common.module';\n\nimport { NodeCsvExportConfirmComponent } from './node-csv-export-confirm/node-csv-export-confirm.component';\nimport { NodeCsvSelectHeadersComponent } from './node-csv-select-headers/node-csv-select-headers.component';\nimport { NodeDiffsComponent } from './node-diffs/node-diffs.component';\nimport { NodeIconComponent } from './node-icon/node-icon.component';\nimport { NodeLinkComponent } from './node-link/node-link.component';\nimport { NodeLogsFileComponent } from './node-logs-file/node-logs-file.component';\nimport { NodeLogsModelsComponent } from './node-logs-models/node-logs-models.component';\nimport { NodeMissingLookupFactorsComponent } from './node-missing-lookup-factors/node-missing-lookup-factors.component';\nimport { NodeValueDetailsComponent } from './node-value-details/node-value-details.component';\n\nconst components = [\n NodeIconComponent,\n NodeLinkComponent,\n NodeCsvExportConfirmComponent,\n NodeCsvSelectHeadersComponent,\n NodeDiffsComponent,\n NodeLogsFileComponent,\n NodeLogsModelsComponent,\n NodeMissingLookupFactorsComponent,\n NodeValueDetailsComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, RouterModule, FormsModule,\n DragDropModule,\n HeCommonModule\n ]\n})\nexport class HeNodeModule { }\n","import { Component, Input } from '@angular/core';\nimport { ICycleJSONLD, CycleFunctionalUnit } from '@hestia-earth/schema';\n\n@Component({\n selector: 'he-cycles-functional-unit-measure',\n templateUrl: './cycles-functional-unit-measure.component.html',\n styleUrls: ['./cycles-functional-unit-measure.component.scss']\n})\nexport class CyclesFunctionalUnitMeasureComponent {\n @Input()\n public cycle?: ICycleJSONLD;\n\n public CycleFunctionalUnit = CycleFunctionalUnit;\n}\n","<span class=\"pl-1\" [ngSwitch]=\"cycle?.functionalUnit\">\n <ng-container *ngSwitchCase=\"CycleFunctionalUnit['1 ha']\">1 hectare</ng-container>\n <ng-container *ngSwitchDefault>relative</ng-container>\n</span>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { ICycleJSONLD, NodeType } from '@hestia-earth/schema';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';\n\nimport { HeNodeService } from '../../node/node.service';\nimport { HeSearchService } from '../../search/search.service';\nimport {\n matchType, matchExactQuery, matchPhraseQuery, matchPhrasePrefixQuery, matchBoolPrefixQuery, matchAggregatedQuery\n} from '../../search/search.model';\n\nconst MIN_TYPEAHEAD_LENGTH = 1;\n\n@Component({\n selector: 'he-cycles-suggest-form',\n templateUrl: './cycles-suggest-form.component.html',\n styleUrls: ['./cycles-suggest-form.component.scss']\n})\nexport class CyclesSuggestFormComponent {\n @Input()\n private cycles: ICycleJSONLD[] = [];\n @Output()\n private cycleAdded = new EventEmitter<ICycleJSONLD>();\n\n public form = this.formBuilder.group({\n search: ['', Validators.required]\n });\n public loading = false;\n public suggesting = false;\n public formatter = ({ '@id': id }: any) => id;\n public suggestCycle = (text$: Observable<string>) =>\n text$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n tap(() => this.suggesting = true),\n switchMap(term => this.suggest(term)),\n tap(() => this.suggesting = false)\n );\n\n constructor(\n private formBuilder: FormBuilder,\n private nodeService: HeNodeService,\n private searchService: HeSearchService\n ) { }\n\n private suggest(term: string) {\n return term.length < MIN_TYPEAHEAD_LENGTH ?\n of([]) :\n this.searchService.suggest(term, NodeType.Cycle, [], {\n bool: {\n must: [\n matchType(NodeType.Cycle),\n matchAggregatedQuery\n ],\n must_not: this.cycles.map(({ '@id': id }) => matchExactQuery('@id', id)),\n should: [\n matchPhraseQuery(term, 100, '@id', 'name'),\n matchPhrasePrefixQuery(term, 20, '@id', 'name'),\n matchBoolPrefixQuery(term, 10, '@id', 'name')\n ],\n minimum_should_match: 1\n }\n }, 10, ['name', 'site.country.name', 'products.name', 'endDate']);\n }\n\n private loadCycle(id: string) {\n return this.nodeService.get<ICycleJSONLD>({\n '@type': NodeType.Cycle,\n '@id': id\n }, false);\n }\n\n public async submit() {\n this.loading = true;\n const { search: { '@id': id } } = this.form.value;\n const cycle = await this.loadCycle(id);\n this.cycleAdded.emit(cycle);\n this.form.get('search')?.setValue('');\n this.form.updateValueAndValidity();\n this.loading = false;\n }\n}\n","<form class=\"mt-2\" [formGroup]=\"form\" (submit)=\"form.valid && submit()\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Compare with Aggregated Cycle</span>\n </div>\n <div class=\"control is-expanded\" [class.has-icons-right]=\"suggesting || loading\">\n <input class=\"input is-small\"\n placeholder=\"Search by name or id\"\n formControlName=\"search\" name=\"search\"\n\n [ngbTypeahead]=\"suggestCycle\"\n [inputFormatter]=\"formatter\"\n [resultTemplate]=\"suggestion\"\n [focusFirst]=\"true\"\n >\n <span class=\"icon is-small is-right has-text-grey-dark\" [class.is-hidden]=\"!(suggesting || loading)\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"sm\"></fa-icon>\n </span>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" type=\"submit\" [disabled]=\"suggesting || loading\">\n <fa-icon icon=\"plus\"></fa-icon>\n </button>\n </div>\n </div>\n</form>\n\n<ng-template #suggestion let-cycle=\"result\" let-t=\"term\">\n <div class=\"is-block\">\n <ngb-highlight [result]=\"cycle.name\" [term]=\"t\"></ngb-highlight>\n </div>\n <div class=\"columns is-flex\">\n <div class=\"column\" *ngIf=\"cycle.site?.country?.name\">\n <span class=\"pr-1 has-text-underline\">Country:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"cycle.site.country.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <!-- <div class=\"column\" *ngIf=\"impact.product\">\n <span class=\"pr-1 has-text-underline\">Product:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.product.name\" [term]=\"t\"></ngb-highlight></span>\n </div> -->\n <div class=\"column\" *ngIf=\"cycle.endDate\">\n <span class=\"pr-1 has-text-underline\">Date:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"cycle.endDate\" [term]=\"t\"></ngb-highlight></span>\n </div>\n </div>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ICycleJSONLD, NodeType } from '@hestia-earth/schema';\nimport { DataState } from '@hestia-earth/api';\n\nimport { HeNodeService } from '../../node/node.service';\n\nenum Tab {\n inputs = 'Inputs',\n products = 'Products'\n}\n\n@Component({\n selector: 'he-cycles-activity-logs',\n templateUrl: './cycles-activity-logs.component.html',\n styleUrls: ['./cycles-activity-logs.component.scss']\n})\nexport class CyclesActivityLogsComponent implements OnInit {\n @Input()\n public original?: ICycleJSONLD;\n @Input()\n public recalculated?: ICycleJSONLD;\n\n public loading = true;\n public NodeType = NodeType;\n public logsUrl?: string;\n public logs: any;\n public Tab = Tab;\n public selectedTab = Tab.inputs;\n\n constructor(\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.logsUrl = this.nodeService.nodeLogsUrl(this.node);\n this.logs = await this.nodeService.getModelsLog(this.node);\n this.loading = false;\n }\n\n private get node() {\n return {\n ...this.original,\n dataState: DataState.recalculated\n };\n }\n}\n","<ng-container *ngIf=\"!loading; else loader\">\n <div class=\"tabs mb-1\">\n <ul>\n <li [class.is-active]=\"selectedTab === Tab.inputs\">\n <a (click)=\"selectedTab = Tab.inputs\">Inputs</a>\n </li>\n <li [class.is-active]=\"selectedTab === Tab.products\">\n <a (click)=\"selectedTab = Tab.products\">Products</a>\n </li>\n </ul>\n </div>\n\n <he-node-logs-models [class.is-hidden]=\"selectedTab !== Tab.inputs\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.Cycle\"\n [originalValues]=\"original?.inputs\"\n [recalculatedValues]=\"recalculated?.inputs\"\n [logs]=\"logs\"\n ></he-node-logs-models>\n\n <he-node-logs-models [class.is-hidden]=\"selectedTab !== Tab.products\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.Cycle\"\n [originalValues]=\"original?.products\"\n [recalculatedValues]=\"recalculated?.products\"\n [logs]=\"logs\"\n ></he-node-logs-models>\n</ng-container>\n\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { ICycleJSONLD, Input as HestiaInput, Product } from '@hestia-earth/schema';\nconst orderBy = require('lodash.orderby');\n\nimport { propertyValue, groupNodesByTerm, IGroupedKeys, grouppedKeys } from '../../common/utils';\nimport { baseUrl } from '../../common/utils';\n\nenum View {\n table = 'table',\n logs = 'logs'\n}\n\n@Component({\n selector: 'he-cycles-activity',\n templateUrl: './cycles-activity.component.html',\n styleUrls: ['./cycles-activity.component.scss']\n})\nexport class CyclesActivityComponent implements OnChanges {\n @Input()\n public originalValues: ICycleJSONLD[] = [];\n @Input()\n public cycles: ICycleJSONLD[] = [];\n @Input()\n public dataState?: DataState;\n @Input()\n public enableCompare = true;\n\n public baseUrl = baseUrl();\n public propertyValue = propertyValue;\n public showDownload = false;\n public View = View;\n public selectedView = View.table;\n\n public inputs: IGroupedKeys<HestiaInput>[] = [];\n public products: IGroupedKeys<Product>[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if ('cycles' in changes) {\n return this.update();\n }\n if ('dataState' in changes) {\n this.selectedView = View.table;\n }\n }\n\n public trackById(_index: number, item: ICycleJSONLD) {\n return item['@id'];\n }\n\n public get isOriginal() {\n return this.dataState === DataState.original;\n }\n\n private update() {\n const inputsPerCycle = groupNodesByTerm<ICycleJSONLD, HestiaInput>(this.cycles, 'inputs', this.originalValues);\n this.inputs = orderBy(grouppedKeys(inputsPerCycle), ['key'], ['asc']);\n const productsPerCycle = groupNodesByTerm<ICycleJSONLD, Product>(this.cycles, 'products', this.originalValues);\n this.products = orderBy(grouppedKeys(productsPerCycle), ['key'], ['asc']);\n }\n\n public togglePopover(popover: any, context: any) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n // Add from suggestion\n\n public async addCycle(cycle: ICycleJSONLD) {\n this.cycles = [\n ...this.cycles,\n cycle\n ];\n return this.update();\n }\n}\n","<ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-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\" *ngIf=\"!isOriginal && cycles.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{inputs.length + products.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngFor=\"let product of products\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span>{{product.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n <th *ngFor=\"let input of inputs\"\n [attr.title]=\"input.value.term.name\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span>{{input.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th>\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let product of products\"\n [attr.title]=\"product.value.term.units\"\n >{{product.value.term.units}}</th>\n <th *ngFor=\"let input of inputs\"\n [attr.title]=\"input.value.term.units\"\n >{{input.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"cycle.name\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{cycle.name || cycle.id}}</span>\n </he-node-link>\n </td>\n <td>\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let product of products\">\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"product.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let input of inputs\">\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"input.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n\n <he-cycles-suggest-form *ngIf=\"enableCompare\" [cycles]=\"cycles\" (cycleAdded)=\"addCycle($event)\"></he-cycles-suggest-form>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [original]=\"originalValues[0]\"\n [recalculated]=\"cycles[0]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.inputs.', 'cycle.products.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { ICycleJSONLD } from '@hestia-earth/schema';\n\nimport { defaultLabel, keyToLabel } from '../../common/utils';\nimport { baseUrl } from '../../common/utils';\n\nconst ignoreKeys = [\n '@type', 'added', 'updated', 'addedVersion', 'updatedVersion'\n];\n\n@Component({\n selector: 'he-cycles-completeness',\n templateUrl: './cycles-completeness.component.html',\n styleUrls: ['./cycles-completeness.component.scss']\n})\nexport class CyclesCompletenessComponent {\n @Input()\n public cycles: ICycleJSONLD[] = [];\n @Input()\n public dataState?: DataState;\n\n public baseUrl = baseUrl();\n public defaultLabel = defaultLabel;\n public keyToLabel = keyToLabel;\n\n public trackById(_index: number, item: ICycleJSONLD) {\n return item['@id'];\n }\n\n public get completenessKeys() {\n const [cycle] = this.cycles;\n return Object.keys(cycle?.dataCompleteness || {}).filter(key => !ignoreKeys.includes(key)).sort();\n }\n}\n","<div class=\"p-3\" *ngIf=\"cycles.length; else emptyTable\">\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{cycles.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let completeness of completenessKeys\"\n [attr.title]=\"completeness\"\n ><a [href]=\"baseUrl + '/schema/Completeness#' + completeness\" target=\"_blank\">{{keyToLabel(completeness)}}</a></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let completeness of completenessKeys\">\n <span>{{cycle.dataCompleteness[completeness] ? 'Complete' : 'Incomplete'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"cycle.dataCompleteness\"\n [key]=\"completeness\"\n ></he-blank-node-state>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n</div>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n</ng-template>\n","import { Component, Input, ViewChild, OnChanges, SimpleChanges, AfterViewInit, ElementRef } from '@angular/core';\nimport { Emission, ICycleJSONLD, Term } from '@hestia-earth/schema';\nimport { Chart } from 'chart.js';\n\nimport { groupNodesByTerm, IGroupedNodes, IGroupedNodesValues, itemColor, propertyValue } from '../../common/utils';\n\nconst cycleValue = (cycle: ICycleJSONLD, values: IGroupedNodesValues<Emission>) =>\n (values[cycle['@id']]?.nodes[0] || { value: [0] }).value;\n\nconst cycleName = (cycle: ICycleJSONLD, index: number) => `${index + 1}. ${cycle.name}`;\n\nconst cycleDataset = (values: IGroupedNodesValues<Emission>) => (cycle: ICycleJSONLD, index: number) => {\n const label = cycleName(cycle, index);\n const color = itemColor(index);\n const data = [propertyValue(cycleValue(cycle, values)!)];\n return {\n label,\n axis: 'y',\n data,\n backgroundColor: color,\n borderColor: color\n };\n};\n\n@Component({\n selector: 'he-cycles-emissions-chart',\n templateUrl: './cycles-emissions-chart.component.html',\n styleUrls: ['./cycles-emissions-chart.component.scss']\n})\nexport class CyclesEmissionsChartComponent implements AfterViewInit, OnChanges {\n @ViewChild('chart')\n private chartRef?: ElementRef;\n private chart: any;\n\n @Input()\n private cycles: ICycleJSONLD[] = [];\n\n public emissionPerCycle: IGroupedNodes<Emission> = {};\n public terms: Term[] = [];\n public selectedTerm?: Term;\n\n ngAfterViewInit() {\n return this.init();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('cycles' in changes && !changes.cycles.firstChange) {\n return this.init();\n }\n }\n\n private init() {\n this.emissionPerCycle = groupNodesByTerm<ICycleJSONLD, Emission>(this.cycles, 'emissions');\n this.terms = Object.values(this.emissionPerCycle)\n .filter(({ values }) => Object.values(values).some(({ nodes: [{ value }] }) => propertyValue(value!) > 0))\n .map(({ term }) => term);\n this.selectedTerm = this.terms.includes(this.selectedTerm!) ? this.selectedTerm : this.terms[0];\n return this.selectedTerm ? this.updateChart() : null;\n }\n\n public updateChart() {\n const labels: string[] = [this.selectedTerm?.name ?? ''];\n const { values } = this.emissionPerCycle[(this.selectedTerm as any)['@id']];\n const datasets = this.cycles.map(cycleDataset(values));\n\n if (this.chart) {\n this.chart.destroy();\n }\n this.chart = new Chart(this.chartRef?.nativeElement, {\n type: 'bar',\n data: {\n labels,\n datasets\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false\n },\n scales: {\n xAxes: [{\n display: false\n }],\n yAxes: [{\n position: 'left',\n ticks: {\n min: 0\n }\n }]\n }\n }\n });\n }\n}\n","<div class=\"p-3\" [class.is-hidden]=\"!terms?.length\">\n <div class=\"field is-horizontal\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"selectedTerm\">\n <span>Select a column</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"control\">\n <div class=\"select is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"chart-container\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { Emission, ICycleJSONLD, ITermJSONLD, NodeType, TermTermType } from '@hestia-earth/schema';\n\nimport { matchTermType, matchType } from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { HeNodeService } from '../../node/node.service';\n\n@Component({\n selector: 'he-cycles-emissions-logs',\n templateUrl: './cycles-emissions-logs.component.html',\n styleUrls: ['./cycles-emissions-logs.component.scss']\n})\nexport class CyclesEmissionsLogsComponent implements OnInit {\n @Input()\n private cycle?: ICycleJSONLD;\n @Input()\n public originalValues: Emission[] = [];\n @Input()\n public recalculatedValues: Emission[] = [];\n\n public loading = true;\n public logsUrl?: string;\n public NodeType = NodeType;\n public logs: any;\n public emissions: ITermJSONLD[] = [];\n\n constructor(\n private searchService: HeSearchService,\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.logsUrl = this.nodeService.nodeLogsUrl(this.node);\n this.logs = await this.nodeService.getModelsLog(this.node);\n\n const { results: emissions } = await this.searchService.search<ITermJSONLD, NodeType.Term>({\n fields: ['@type', '@id', 'name'],\n limit: 1000,\n query: {\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.emission)\n ]\n }\n }\n });\n this.emissions = emissions;\n\n this.loading = false;\n }\n\n private get node() {\n return {\n ...this.cycle,\n dataState: DataState.recalculated\n };\n }\n}\n","<he-node-logs-models *ngIf=\"!loading; else loader\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.Cycle\"\n [originalValues]=\"originalValues\"\n [recalculatedValues]=\"recalculatedValues\"\n [terms]=\"emissions\"\n [logs]=\"logs\"\n filteredType=\"Emission\"\n></he-node-logs-models>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { ICycleJSONLD, Emission } from '@hestia-earth/schema';\nconst orderBy = require('lodash.orderby');\n\nimport { propertyValue, groupNodesByTerm, IGroupedKeys, grouppedKeys, itemColor } from '../../common/utils';\nimport { baseUrl } from '../../common/utils';\n\nenum View {\n table = 'table',\n chart = 'chart',\n logs = 'logs'\n}\n\n@Component({\n selector: 'he-cycles-emissions',\n templateUrl: './cycles-emissions.component.html',\n styleUrls: ['./cycles-emissions.component.scss']\n})\nexport class CyclesEmissionsComponent implements OnChanges {\n @Input()\n public originalValues: ICycleJSONLD[] = [];\n @Input()\n public cycles: ICycleJSONLD[] = [];\n @Input()\n public dataState?: DataState;\n @Input()\n public enableCompare = true;\n\n public baseUrl = baseUrl();\n public propertyValue = propertyValue;\n public itemColor = itemColor;\n public showDownload = false;\n public View = View;\n public selectedView = View.table;\n public selectedCycles: ICycleJSONLD[] = [];\n\n public emissions: IGroupedKeys<Emission>[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if ('cycles' in changes) {\n return this.update();\n }\n if ('dataState' in changes) {\n this.selectedView = View.table;\n }\n }\n\n public trackById(_index: number, item: ICycleJSONLD) {\n return item['@id'];\n }\n\n public get isOriginal() {\n return this.dataState === DataState.original;\n }\n\n private update() {\n const emissionsPerCycle = groupNodesByTerm<ICycleJSONLD, Emission>(this.cycles, 'emissions', this.originalValues);\n this.emissions = orderBy(grouppedKeys(emissionsPerCycle), ['value.methodTierOrder', 'key'], ['asc', 'asc']);\n this.selectAllCycles();\n }\n\n public togglePopover(popover: any, context: any) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n // Add from suggestion\n\n public async addCycle(cycle: ICycleJSONLD) {\n this.cycles = [\n ...this.cycles,\n cycle\n ];\n return this.update();\n }\n\n // Cycle selection\n\n private selectAllCycles() {\n this.selectedCycles = this.cycles.slice();\n }\n\n private unselectAllCycles() {\n this.selectedCycles = [];\n }\n\n public toggleAllCycles() {\n return this.selectedCycles.length ? this.selectAllCycles() : this.unselectAllCycles();\n }\n\n private selectCycle(cycle: ICycleJSONLD) {\n this.selectedCycles = [\n ...this.selectedCycles,\n cycle\n ];\n }\n\n private unselectCycle(index: number) {\n this.selectedCycles.splice(index, 1);\n this.selectedCycles = this.selectedCycles.slice();\n }\n\n public toggleCycle(cycle: ICycleJSONLD) {\n const index = this.selectedCycles.indexOf(cycle);\n return index >= 0 ? this.unselectCycle(index) : this.selectCycle(cycle);\n }\n\n public isSelected(cycle: ICycleJSONLD) {\n return this.selectedCycles.includes(cycle);\n }\n}\n","<ng-container *ngIf=\"emissions.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-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\" *ngIf=\"cycles.length > 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal && cycles.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{emissions.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngFor=\"let emission of emissions\"\n [attr.title]=\"emission.value.term.name\"\n >\n <he-node-link [node]=\"emission.value.term\">\n <span>{{emission.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th>\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let emission of emissions\"\n [attr.title]=\"emission.value.term.units\"\n >{{emission.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"cycle.name\" [style.border-left-color]=\"itemColor(i)\">\n <label *ngIf=\"enableCompare\" class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n (change)=\"toggleCycle(cycle)\"\n [checked]=\"isSelected(cycle)\"\n >\n </label>\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{cycle.name || cycle.id}}</span>\n </he-node-link>\n </td>\n <td>\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let emission of emissions\">\n <span *ngIf=\"emission.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: emission.value.values[cycle['@id']], cycle: cycle, key: 'emissions' })\"\n >\n <span pointer>{{propertyValue(emission.value.values[cycle['@id']].value) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"emission.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n\n <he-cycles-suggest-form *ngIf=\"enableCompare\" [cycles]=\"cycles\" (cycleAdded)=\"addCycle($event)\"></he-cycles-suggest-form>\n </div>\n\n <he-cycles-emissions-chart *ngIf=\"cycles.length > 1\" [class.is-hidden]=\"selectedView !== View.chart\"\n [cycles]=\"selectedCycles\"\n ></he-cycles-emissions-chart>\n\n <he-cycles-emissions-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [cycle]=\"cycles[0]\"\n [originalValues]=\"originalValues[0]?.emissions\"\n [recalculatedValues]=\"cycles[0]?.emissions\"\n ></he-cycles-emissions-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-emissions.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.emissions.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\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>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { Practice, ICycleJSONLD, ITermJSONLD, NodeType } from '@hestia-earth/schema';\n\nimport { HeNodeService } from '../../node/node.service';\n\n@Component({\n selector: 'he-cycles-practices-logs',\n templateUrl: './cycles-practices-logs.component.html',\n styleUrls: ['./cycles-practices-logs.component.scss']\n})\nexport class CyclesPracticesLogsComponent implements OnInit {\n @Input()\n private cycle?: ICycleJSONLD;\n @Input()\n public originalValues: Practice[] = [];\n @Input()\n public recalculatedValues: Practice[] = [];\n\n public loading = true;\n public logsUrl?: string;\n public NodeType = NodeType;\n public logs: any;\n public models: ITermJSONLD[] = [];\n\n constructor(\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.logsUrl = this.nodeService.nodeLogsUrl(this.node);\n this.logs = await this.nodeService.getModelsLog(this.node);\n this.loading = false;\n }\n\n private get node() {\n return {\n ...this.cycle,\n dataState: DataState.recalculated\n };\n }\n}\n","<he-node-logs-models *ngIf=\"!loading; else loader\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.Cycle\"\n [originalValues]=\"originalValues\"\n [recalculatedValues]=\"recalculatedValues\"\n [logs]=\"logs\"\n></he-node-logs-models>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { ICycleJSONLD, Practice } from '@hestia-earth/schema';\nconst orderBy = require('lodash.orderby');\n\nimport { propertyValue, groupNodesByTerm, IGroupedKeys, grouppedKeys, itemColor } from '../../common/utils';\nimport { baseUrl } from '../../common/utils';\n\nenum View {\n table = 'table',\n logs = 'logs'\n}\n\n@Component({\n selector: 'he-cycles-practices',\n templateUrl: './cycles-practices.component.html',\n styleUrls: ['./cycles-practices.component.scss']\n})\nexport class CyclesPracticesComponent implements OnChanges {\n @Input()\n public originalValues: ICycleJSONLD[] = [];\n @Input()\n public cycles: ICycleJSONLD[] = [];\n @Input()\n public dataState?: DataState;\n @Input()\n public enableCompare = true;\n\n public baseUrl = baseUrl();\n public propertyValue = propertyValue;\n public itemColor = itemColor;\n public showDownload = false;\n public View = View;\n public selectedView = View.table;\n public selectedCycles: ICycleJSONLD[] = [];\n\n public practices: IGroupedKeys<Practice>[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if ('cycles' in changes) {\n return this.update();\n }\n if ('dataState' in changes) {\n this.selectedView = View.table;\n }\n }\n\n public trackById(_index: number, item: ICycleJSONLD) {\n return item['@id'];\n }\n\n public get isOriginal() {\n return this.dataState === DataState.original;\n }\n\n private update() {\n const practicesPerCycle = groupNodesByTerm<ICycleJSONLD, Practice>(this.cycles, 'practices', this.originalValues);\n this.practices = orderBy(grouppedKeys(practicesPerCycle), ['key'], ['asc']);\n this.selectAllCycles();\n }\n\n public togglePopover(popover: any, context: any) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n // Add from suggestion\n\n public async addCycle(cycle: ICycleJSONLD) {\n this.cycles = [\n ...this.cycles,\n cycle\n ];\n return this.update();\n }\n\n // Cycle selection\n\n private selectAllCycles() {\n this.selectedCycles = this.cycles.slice();\n }\n\n private unselectAllCycles() {\n this.selectedCycles = [];\n }\n\n public toggleAllCycles() {\n return this.selectedCycles.length ? this.selectAllCycles() : this.unselectAllCycles();\n }\n\n private selectCycle(cycle: ICycleJSONLD) {\n this.selectedCycles = [\n ...this.selectedCycles,\n cycle\n ];\n }\n\n private unselectCycle(index: number) {\n this.selectedCycles.splice(index, 1);\n this.selectedCycles = this.selectedCycles.slice();\n }\n\n public toggleCycle(cycle: ICycleJSONLD) {\n const index = this.selectedCycles.indexOf(cycle);\n return index >= 0 ? this.unselectCycle(index) : this.selectCycle(cycle);\n }\n\n public isSelected(cycle: ICycleJSONLD) {\n return this.selectedCycles.includes(cycle);\n }\n}\n","<ng-container *ngIf=\"practices.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-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\" *ngIf=\"!isOriginal && cycles.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{practices.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></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>\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 <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"cycle.name\" [style.border-left-color]=\"itemColor(i)\">\n <label *ngIf=\"enableCompare\" class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n (change)=\"toggleCycle(cycle)\"\n [checked]=\"isSelected(cycle)\"\n >\n </label>\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{cycle.name || cycle.id}}</span>\n </he-node-link>\n </td>\n <td>\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) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"practice.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n\n <he-cycles-suggest-form *ngIf=\"enableCompare\" [cycles]=\"cycles\" (cycleAdded)=\"addCycle($event)\"></he-cycles-suggest-form>\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</ng-container>\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=\"panel-block\">\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>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n","import { Component, Input, AfterViewInit, ViewChild, OnChanges, SimpleChanges, ElementRef } from '@angular/core';\nimport { ICycleJSONLD, Product } from '@hestia-earth/schema';\nimport { Chart } from 'chart.js';\n\nimport { propertyValue, ellipsis, groupNodesByTerm, itemColor } from '../../common/utils';\n\n@Component({\n selector: 'he-cycles-result',\n templateUrl: './cycles-result.component.html',\n styleUrls: ['./cycles-result.component.scss']\n})\nexport class CyclesResultComponent implements AfterViewInit, OnChanges {\n @ViewChild('chart')\n private chartRef?: ElementRef;\n private chart: any;\n @Input()\n private cycles: ICycleJSONLD[] = [];\n\n ngAfterViewInit() {\n Chart.scaleService.updateScaleDefaults('category', {\n ticks: {\n callback: tick => ellipsis(`${tick}`, 25)\n }\n });\n return this.init();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('cycles' in changes && !changes.cycles.firstChange) {\n return this.init();\n }\n }\n\n private init() {\n const labels = this.cycles.map(({ name }, index) => `${index + 1}. ${name}`);\n const productsPerCycle = groupNodesByTerm<ICycleJSONLD, Product>(this.cycles, 'products');\n const datasets = Object.values(productsPerCycle).map(({ term: { name, units }, values }, index) => {\n const color = itemColor(index);\n return {\n label: `${name}${units ? ` (in ${units})` : ''}`,\n backgroundColor: color,\n borderColor: color,\n barPercentage: 0.5,\n data: this.cycles.map(({ '@id': id }) => values[id] ? propertyValue(values[id].value) : 0)\n };\n });\n this.updateChart(datasets as any, labels as any);\n }\n\n private updateChart(datasets = [], labels = []) {\n if (this.chart) {\n this.chart.destroy();\n }\n this.chart = new Chart(this.chartRef?.nativeElement, {\n type: 'horizontalBar',\n data: {\n labels,\n datasets\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: true\n },\n tooltips: {\n callbacks: {\n title: (tooltipItems, data) => data.labels![tooltipItems[0].index!] as any\n }\n },\n scales: {\n xAxes: [{\n ticks: {\n min: 0\n }\n }],\n yAxes: [{\n position: 'left',\n scaleLabel: {\n display: true,\n labelString: 'Cycle'\n }\n }]\n }\n }\n });\n }\n}\n","<div class=\"chart-container\">\n <canvas #chart>{{chart}}</canvas>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { HeCommonModule } from '../common/common.module';\nimport { HeNodeModule } from '../node/node.module';\n\nimport { CyclesActivityComponent } from './cycles-activity/cycles-activity.component';\nimport { CyclesActivityLogsComponent } from './cycles-activity-logs/cycles-activity-logs.component';\nimport { CyclesCompletenessComponent } from './cycles-completeness/cycles-completeness.component';\nimport { CyclesEmissionsChartComponent } from './cycles-emissions-chart/cycles-emissions-chart.component';\nimport { CyclesEmissionsLogsComponent } from './cycles-emissions-logs/cycles-emissions-logs.component';\nimport { CyclesEmissionsComponent } from './cycles-emissions/cycles-emissions.component';\nimport { CyclesFunctionalUnitMeasureComponent } from './cycles-functional-unit-measure/cycles-functional-unit-measure.component';\nimport { CyclesPracticesComponent } from './cycles-practices/cycles-practices.component';\nimport { CyclesPracticesLogsComponent } from './cycles-practices-logs/cycles-practices-logs.component';\nimport { CyclesResultComponent } from './cycles-result/cycles-result.component';\nimport { CyclesSuggestFormComponent } from './cycles-suggest-form/cycles-suggest-form.component';\n\nconst components = [\n CyclesActivityComponent,\n CyclesActivityLogsComponent,\n CyclesCompletenessComponent,\n CyclesEmissionsComponent,\n CyclesEmissionsChartComponent,\n CyclesEmissionsLogsComponent,\n CyclesFunctionalUnitMeasureComponent,\n CyclesPracticesComponent,\n CyclesPracticesLogsComponent,\n CyclesResultComponent,\n CyclesSuggestFormComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, FormsModule, ReactiveFormsModule,\n HeCommonModule,\n HeNodeModule\n ]\n})\nexport class HeCyclesModule { }\n","/* eslint-disable complexity */\nimport * as pluralize from 'pluralize';\nimport { SchemaType, SiteSiteType, Term, TermTermType } from '@hestia-earth/schema';\nimport { toPrecision } from '@hestia-earth/utils';\n\nimport { termTypeLabel } from '../terms/terms.model';\nimport { pathToApiDocsPath } from '../engine/engine.service';\nimport { baseUrl, keyToLabel } from '../common/utils';\n\n// TODO: add more validation keyword and params\nexport type validationErrorLevel = 'error' | 'warning';\nexport type validationErrorParam = 'missingProperty' | 'type' | 'term' | 'model' | 'product' | 'range' |\n 'allowedValues' | 'additionalProperty' | 'expected' | 'default' | 'current' | 'percentage' | 'keys' | 'threshold';\nexport type validationErrorKeyword = 'required' | 'type' | 'if' | 'then';\n\nexport interface IValidationError {\n index?: number;\n nodeIndex?: number;\n level?: validationErrorLevel;\n dataPath?: string;\n schemaPath?: string;\n keyword?: validationErrorKeyword;\n message: string;\n params?: { [key in validationErrorParam]?: any };\n mapError?: boolean;\n}\n\nexport interface IValidationErrorWithIndex {\n error: IValidationError[];\n index: number;\n changed?: boolean;\n}\n\nconst mapErrorMessage = 'does not contain latitude and longitude';\n\nexport const parseDataPath = (dataPath = '') => {\n const [_, ...paths] = dataPath.split('.');\n return paths.map(path => ({ path, label: keyToLabel(path.replace(/\\[\\d+\\]/g, '')) }));\n};\n\nconst contactUsEmail = 'community@hestia.earth';\nconst externalLink = (href: string, text: string) => `<a href=\"${href}\" target=\"_blank\">${text}</a>`;\nconst glossaryLink = (text: string) =>\n externalLink(`${baseUrl()}/glossary`, text);\nconst glossaryTypeLink = (type: TermTermType) =>\n externalLink(`${baseUrl()}/glossary?termType=${type}`, termTypeLabel(type));\nconst termLink = ({ id, name }: Partial<Term>) =>\n externalLink(`${baseUrl()}/term/${id}`, name!);\nexport const nodeLink = ({ '@type': type, '@id': id, name }) =>\n type && id ? `<a href=\"/${type.toLowerCase()}/${id}\" target=\"_blank\">${name || id}</a>` : null;\nconst schemaLink = (type: string, title = type) => `<a href=\"${baseUrl()}/schema/${type}\" target=\"_blank\">${title}</a>`;\nexport const code = (text: string | number | boolean) => `<code>${text}</code>`;\nconst dateFormatMessage =\n `should follow the ISO 8601 date format, e.g. ${code(2000)}, or ${code('2000-12')}, or ${code('2000-12-30')}`;\nconst contactUs = (text = 'contact us') => `<a href=\"mailto:${contactUsEmail}\">${text}</a>`;\nconst modelLink = (term: Term, model: Term) => `\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`;\nconst threshold = (value: number) => code(`${value * 100}%`);\n\nconst noTillage: Partial<Term> = {id: 'noTillage', name: 'No tillage'};\n\nexport const missingNodeErrorMessage = ({ '@type': _t, type, name }: any) =>\n (_t || type) === 'Term' ?\n `${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.`\n : `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.`;\n\n// set message as empty to not display it\nconst customErrorMessage: {\n [key: string]: (error: IValidationError, errorCount: number) => string;\n} = {\n 'should have required property \\'@id\\'': () => 'does not exist in Hestia.',\n 'should have required property \\'@type\\'': () => '',\n 'should have required property \\'id\\'': () => 'does not exist in Hestia.',\n 'should match exactly one schema in oneOf': () => '',\n 'should match some schema in anyOf': () => '',\n 'should NOT have additional properties': ({ params }, errorCount) =>\n errorCount === 1 ?\n `The following field does not exist: ${params?.additionalProperty}` :\n `should not have additional properties`,\n 'should match pattern \"^\\\\d{13}$\"': () => `should be composed of 13 numbers`,\n 'should match pattern \"^[0-9]{4}(-[0-9]{2})?(-[0-9]{2})?$\"': () => dateFormatMessage,\n 'should match pattern \"^([0-9]{4}|-)(-[0-9]{2})?(-[0-9]{2})?$\"': () => dateFormatMessage,\n 'must be within the country': () => `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')}.`,\n [mapErrorMessage]: ({ dataPath }) =>\n 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')}.` :\n `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')}.`,\n 'sum not equal to 100% for sandContent, siltContent, clayContent':\n () => `The sum of Sand, Silt, and Clay content should equal 100% for each soil depth interval.`,\n 'is outside the allowed range': ({ params }, errorCount) =>\n errorCount === 1 ?\n (\n params?.term ?\n `for this measurement,\n the maximum ${code(params?.term['@id'] || params?.term.name)} is ${params?.range?.max} and the minimum is ${params?.range?.min}` :\n `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.`\n ) :\n `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.`,\n 'should be equal to one of the allowed values':\n ({ params }) => `must have one of these values: ${params?.allowedValues.join(', ')}`,\n 'is not allowed for this characterisedIndicator': ({ params }, errorCount) =>\n `${errorCount === 1 ?\n `${\n params?.allowedValues.length ?\n `can only be used with one of these methods: ${params?.allowedValues.join(', ')}` :\n `does not currently have any method allowed. Please ${contactUs()} to change this.`\n }.` :\n `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.`,\n 'should contain a valid item': ({ dataPath }) => {\n const paths = parseDataPath(dataPath!);\n return paths.length >= 2 ?\n `The ${paths[paths.length - 1].path} related to this ${pluralize(paths[paths.length - 2].label, 1)} are invalid` :\n `The ${paths[0].path} are invalid`;\n },\n 'may be between 0 and 100': () => 'percentages should be between 0 and 100, not 0 and 1. This may be an error.',\n 'may not all be set to false': () =>\n `You may have forgotten to fill in the data completeness assessment.\n For information on how to fill it in, please see the ${schemaLink('Cycle#dataCompleteness', 'schema')}.`,\n 'may not be empty': () => 'if this value signifies no data, Hestia only accepts \"-\" or empty for no data',\n 'may not be 0': ({ dataPath }, errorCount) => {\n const paths = parseDataPath(dataPath!);\n 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.`;\n },\n 'the sum of above ground crop residue and below ground crop residue must be greater than zero': () =>\n `For sites of type ${code(SiteSiteType.cropland)} or ${code(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.`,\n 'longFallowPeriod must be lower than 5 years': () =>\n `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.`,\n 'should be within percentage of default value': ({ params }, errorCount) =>\n errorCount === 1 ?\n `is ±${threshold(params?.threshold)} different to our default value which is ${params?.default}.\n Please check your uploaded data as this may be an error.` :\n `is substantially different than our default value. Please check your uploaded data as this may be an error.`,\n 'the value provided is not consistent with the model result': ({ params }, errorCount) =>\n `The expected result for ${code(params?.term.name)}\n ${params?.model?.name ? `using ${modelLink(params?.term, params?.model)} ` : ''}\n from the data provided in the upload is ${\n errorCount === 1 ?\n `${code(toPrecision(params?.expected, 3))}, but the value in the upload is ${code(toPrecision(params?.current, 3))}.\n ${params?.threshold ? `Our threshold is ±${threshold(params?.threshold)}.` : ''}\n Please either:\n 1) check the ${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.` :\n `not consistent with the model result.`\n }`,\n 'the measurement provided might be in error': ({ params }, errorCount) =>\n `The expected value for ${code(params?.term.name)} from the data provided in the upload is ${\n errorCount === 1 ?\n `${code(toPrecision(params?.expected, 3))}, but the value in the upload is ${code(toPrecision(params?.current, 3))}.\n ${params?.threshold ? `Our threshold is ±${threshold(params?.threshold)}.` : ''}` :\n `not consistent with the model result.`\n }`,\n 'must be equal to previous product multiplied by the share': () =>\n `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')}`,\n 'must have only one entry with the same term.termType = excretaManagement': () =>\n `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.`,\n 'every item in the list should be unique': ({ params }) =>\n `This Blank Node is duplicated. Every Blank Node should be unique.\n Uniqueness is determined by the following fields: ${\n (params?.keys || []).map(code).join(', ')\n }`,\n 'must contain as many items as values': ({ params }) =>\n `The number of dates must match the number of values.\n Currently there are ${params?.current} dates but ${params?.expected} values.`,\n 'is too generic': ({ params }) =>\n `You have the following Product ${code(params?.product?.name)} however,\n you have used a generic ${glossaryTypeLink(params?.term?.termType)} term ${code(params?.term?.name)}.\n Use a more specific term for the ${\n glossaryTypeLink(params?.term?.termType)\n } which reflects the specific ${\n glossaryTypeLink(params?.product?.termType)\n }.`,\n 'is missing required bibliographic information': () =>\n `The automatic bibliography search failed for this Bibliography. Either:\n 1) manually fill-in the <b>required</b> bibliographic information as per\n ${schemaLink(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')}`,\n 'should be lower than max size': ({ params }) =>\n `The boundary or region is >${params?.expected}km2 and is too large to reliably gap fill Measurements.`,\n 'an excreta input is required when using an excretaManagement practice': ({ dataPath }) => {\n const paths = parseDataPath(dataPath!);\n 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.`;\n },\n 'only 1 primary product allowed': () => 'There can only be one primary product in each Cycle.',\n 'is not allowed in combination with noTillage': () =>\n `This operation involves tillage, yet you have specified the Practice ${termLink(noTillage)}.\n Either change this operation or the Practice.`,\n 'should contain a tillage practice': () =>\n `We recommend specifying the type of tillage used for this Cycle.\n Please see the ${glossaryTypeLink(TermTermType.tillage)} glossary.`,\n 'must set value for every tillage practice': () =>\n `Either specify a single ${glossaryTypeLink(TermTermType.tillage)} practice or add a value to all practices.`,\n 'sum not equal to 100% for tillage practices': () =>\n `The sum of ${glossaryTypeLink(TermTermType.tillage)} practices must equal 100%.`,\n 'can only have 1 tillage practice without a value': ({ params }) =>\n `It is not possible for a Cycle to have the following tillage Practices:\n ${(params?.current ?? []).map(({ name }) => name).join(' and ')} at the same time.\n If multiple tillage practices did occur, please specify the percentage of area they occurred on.`,\n 'can not be linked to the same Cycle': () => 'You can not link an Input to the Impact Assessment of the same Cycle.',\n 'must be 0 for product value 0': ({ dataPath, params }, errorCount) =>\n `If the amount produced is zero, the ${code(dataPath?.split('.').pop()!)} of ${\n errorCount === 1 ? code(params?.term.name) : 'that product'\n } must also be zero.`\n};\n\nexport const formatCustomErrorMessage = (message?: string, error?: IValidationError, errorCount = 1) => {\n const formattedMessage = message && message in customErrorMessage ?\n customErrorMessage[message](error!, errorCount) :\n message;\n return formattedMessage ? `<p class=\"is-normal\">${formattedMessage}</p>` : '';\n};\n\nexport const formatError = (error?: IValidationError, errorCount = 1): IValidationError | undefined => error ? ({\n level: 'error',\n ...error,\n mapError: error.message === mapErrorMessage,\n message: formatCustomErrorMessage(error.message, error, errorCount)\n}) : undefined;\n\nexport const errorHasError = (error?: IValidationError) => error && (error.level === 'error' || !error.level);\n\nexport const errorHasWarning = (error?: IValidationError) => error && error.level === 'warning';\n\nexport const isMissingPropertyError = ({ params }: IValidationError) => !!params && 'missingProperty' in params;\n\nexport const isMissingOneOfError = ({ keyword, schemaPath }: IValidationError) =>\n keyword === 'required' && (schemaPath || '').includes('oneOf');\n\nconst isFailingKeywordError = ({ params }: IValidationError) => !!params && 'failingKeyword' in params;\n\nexport const filterError = (error: IValidationError) => [\n isFailingKeywordError\n].every(func => !func(error));\n\nexport const missingNodeErrors = (errors: IValidationError[]) =>\n errors.filter(({ keyword, params }) =>\n keyword === 'required' && (params?.missingProperty === '@type' || params?.missingProperty === '@id')\n );\n","/* eslint-disable complexity */\nconst get = require('lodash.get');\nimport * as moment from 'moment';\nimport 'moment/locale/en-gb';\nimport { v4 as uuidv4 } from 'uuid';\nimport { diffInDays, isNumber } from '@hestia-earth/utils';\nimport {\n JSON as HestiaJson, SchemaType, NodeType, isTypeNode, isTypeValid, isExpandable,\n Site, Organisation, Property, typeToSchemaType\n} from '@hestia-earth/schema';\nimport {\n definitions, definition, IDefinitionObject, IDefinitionArray, genericType\n} from '@hestia-earth/json-schema';\n\nimport {\n IValidationError, formatCustomErrorMessage, formatError,\n missingNodeErrorMessage, isMissingPropertyError, errorHasError, errorHasWarning, validationErrorLevel,\n missingNodeErrors, isMissingOneOfError\n} from './files-error.model';\nimport {\n schemaRequiredProperties, valueTypeToDefault, definitionToSchemaType, availableProperties,\n nestingTypeEnabled, nestingEnabled, linkTypeEnabled, isSchemaIri\n} from '../schema/schema.service';\nimport { matchCountry } from '../search/search.model';\nimport { baseUrl, mapsUrl, safeJSONParse, safeJSONStringify } from '../common/utils';\n\nexport const ARRAY_DELIMITER = ';';\nconst privateKeys = [\n 'filepath'\n];\n\nexport type suggestionType = NodeType | 'select' | 'default';\nexport const defaultSuggestionType: suggestionType = 'default';\n\ninterface INodePropertySuggestion {\n type?: suggestionType;\n queries?: any[];\n values?: string[];\n parentLevel?: number;\n isLinkNode?: boolean;\n isUniqueKey?: string;\n}\n\ninterface INewProperty {\n name?: string;\n prop?: definition;\n}\n\nexport interface IErrorProperty {\n level?: validationErrorLevel;\n message?: string;\n}\n\nexport interface INodeProperty {\n /**\n * Whether or not this property was added by the user\n */\n id: string;\n isAdded?: boolean;\n schemaType: SchemaType;\n key: string;\n fullKey: string;\n value: any;\n addPropertyEnabled: boolean;\n suggestions?: INodePropertySuggestion;\n schema?: definition;\n error?: IValidationError;\n hasError?: boolean;\n hasWarning?: boolean;\n editable?: boolean;\n closedVisible?: boolean;\n newProperty?: INewProperty;\n newError?: IErrorProperty;\n isRequired?: boolean;\n isHidden?: boolean;\n isArray?: boolean;\n isExpandable?: boolean;\n isOpen?: boolean;\n properties: INodeProperty[];\n placeholder?: string;\n externalUrl?: {\n url?: string;\n title: string;\n // default is external-link-alt\n icon?: string;\n urlParamValue?: boolean;\n };\n // making changes on the property\n loading?: boolean;\n // user made changes to the original value\n changed?: boolean;\n}\n\nconst stringValue = (value: any) => (typeof value === 'undefined' || value === null ? '' : value).toString();\nconst nonExpandableArrayDataPath = (key: string) => key.replace(/\\[\\d+\\]$/, '');\nexport const keyToDataPath = (key: string) => key?.length ? `.${key}` : '';\nexport const dataPathToKey = (dataPath = '', trimArray = false) =>\n trimArray ? nonExpandableArrayDataPath(dataPath.substring(1)) : dataPath.substring(1);\nexport const parentKey = (key: string) => {\n const keys = (key.startsWith('.') ? key.substring(1) : key).split('.');\n keys.pop();\n return keys.join('.');\n};\n\n/**\n * Sort properties having errors, type, id, ...properties (simple), and finally the groups\n *\n * @param a {INodeProperty}\n * @param b {INodeProperty}\n */\nexport const sortProperties = (a: INodeProperty, b: INodeProperty) => {\n if (isNumber(a.key) && isNumber(b.key)) {\n return +a.key - +b.key;\n }\n if (a.isExpandable) {\n return b.isExpandable ? a.key.localeCompare(b.key) : 1;\n }\n if (b.isExpandable) {\n return -1;\n }\n if (!a.key) {\n return -1;\n }\n const aKey = a.key.replace('@', '');\n const bKey = b.key.replace('@', '');\n if (aKey === 'type') {\n return -1;\n }\n if (bKey === 'type') {\n return 1;\n }\n if (aKey === 'id' && bKey !== 'type') {\n return -1;\n }\n if (a.hasError || a.hasWarning) {\n return -1;\n }\n return a.key.localeCompare(b.key);\n};\n\nconst defaultPropertyError: {\n [key: string]: (error: any, property: INodeProperty) => string | undefined;\n} = {\n max: ({ max }) => `should be <= ${max}`,\n min: ({ min }) => `should be >= ${min}`,\n pattern: ({ requiredPattern }) => `should match pattern \"${requiredPattern}\"`,\n required: (_e, { schemaType }) => schemaType ? `should be set or linked to another ${schemaType}` : undefined\n};\n\nexport const formatPropertyError = (errors: any, property: INodeProperty) => {\n const key = Object.keys(errors)[0];\n return key in defaultPropertyError ? formatCustomErrorMessage(defaultPropertyError[key](errors[key], property)) : '';\n};\n\nexport const hasError = value => Array.isArray(value) ? value.some(hasError) : value.hasError;\n\nexport const hasWarning = value => Array.isArray(value) ? value.some(hasWarning) : value.hasWarning;\n\nconst compileSuggestionQueries = (key: string, allOf: any[]) => {\n const conditions = (allOf || [])\n .filter(v => (v.if?.required || []).includes(key))\n .map(v => v.then?.properties[key])\n .map(v => v?.items?.properties || v?.properties)\n .filter(Boolean);\n return conditions.length ? [{\n bool: {\n should: conditions.flatMap(cond => Object.keys(cond).flatMap(k => (cond[k].enum || []).map(v => ({\n match: { [k]: v }\n })))),\n minimum_should_match: 1\n }\n }] : [];\n};\n\n// default suggest for linking nodes together using the `id` field\nconst suggestLinkNodes = (type: NodeType, fullKey: string): INodePropertySuggestion | undefined => {\n const keys = fullKey.split('.');\n const key = keys.pop();\n return key === 'id' && keys.length >= 1 ? { type, isLinkNode: true } : undefined;\n};\n\nconst suggestExistingNode = (type: NodeType, fullKey: string): INodePropertySuggestion | undefined => {\n const keys = fullKey.split('.');\n const key = keys.pop()!;\n return keys.length >= 1 && ['@id', 'openLCAId'].includes(key) ? { type, isUniqueKey: '@id' } : undefined;\n};\n\nconst defaultNodeTypeSuggestion = (type: NodeType) => (fullKey: string) =>\n suggestLinkNodes(type, fullKey) || suggestExistingNode(type, fullKey);\n\nconst termSuggestions = (parent: string, { allOf }: IDefinitionObject) => ({\n type: NodeType.Term,\n queries: [\n ...compileSuggestionQueries(nonExpandableArrayDataPath(parent), allOf!),\n ...(['country'].includes(parent) ? [matchCountry] : [])\n ]\n});\n\nexport const formatLinkNodesSuggestions = (nodeMap: { [type in NodeType]?: string[] }, type: NodeType) =>\n (nodeMap[type] || []).map(id => ({ type, id, name: `Link with ${type}: ${id}` }));\n\nconst typeToSuggestion: {\n [type in SchemaType|NodeType|genericType|'integer']?: (\n fullKey: string, parentSchema?: definition, schema?: definition\n ) => INodePropertySuggestion|any;\n} = {\n [NodeType.Actor]: defaultNodeTypeSuggestion(NodeType.Actor),\n [NodeType.Cycle]: defaultNodeTypeSuggestion(NodeType.Cycle),\n [NodeType.ImpactAssessment]: defaultNodeTypeSuggestion(NodeType.ImpactAssessment),\n [NodeType.Organisation]: defaultNodeTypeSuggestion(NodeType.Organisation),\n [NodeType.Site]: defaultNodeTypeSuggestion(NodeType.Site),\n [NodeType.Source]: defaultNodeTypeSuggestion(NodeType.Source),\n [NodeType.Term]: (fullKey, parentSchema) => {\n const keys = fullKey.split('.');\n const key = keys.pop()!;\n return ['name'].includes(key) && keys.length >= 1 ?\n termSuggestions(keys.pop()!, parentSchema as IDefinitionObject) :\n defaultNodeTypeSuggestion(NodeType.Term)(fullKey);\n },\n [SchemaType.Bibliography]: (fullKey) => {\n const keys = fullKey.split('.');\n const key = keys.pop()!;\n const parent = keys.pop()!;\n // prevent replacing a top-level source\n return ['title', 'documentDOI', 'scopus'].includes(key) && parent === 'bibliography' && keys.length >= 1 ? {\n type: NodeType.Source,\n parentLevel: 1\n } : undefined;\n },\n number: (_a, _b, schema) => {\n const values = (schema as any).const ? [(schema as any).const] : [];\n return {\n type: values.length > 0 ? 'select' : defaultSuggestionType,\n // exclude suggesting SchemaType\n values\n };\n },\n integer: (_a, _b, schema) => {\n const values = (schema as any).const ? [(schema as any).const] : [];\n return {\n type: values.length > 0 ? 'select' : defaultSuggestionType,\n // exclude suggesting SchemaType\n values\n };\n },\n string: (fullKey, _b, schema) => {\n // exclude suggesting SchemaType\n const values = (schema as any).const ?\n [(schema as any).const] :\n ((schema as any).enum || []).filter(val => !Object.values(SchemaType).includes(val));\n const key = fullKey.split('.').pop();\n return {\n type: values.length > 0 && key !== 'type' ? 'select' : defaultSuggestionType,\n values\n };\n },\n boolean: (_a) => ({\n type: 'select',\n values: ['true', 'false']\n })\n};\n\nconst enableSuggestions = (\n parentSchema: definition, type: SchemaType | NodeType | genericType, fullKey: string, schema?: definition\n) => {\n const suggestion = type in typeToSuggestion ? typeToSuggestion[type]!(fullKey, parentSchema) : undefined;\n return suggestion || (\n schema && schema.type as genericType in typeToSuggestion ?\n typeToSuggestion[schema.type as genericType]!(fullKey, parentSchema, schema) :\n undefined\n );\n};\n\nconst formatProperty = (prop: Property) => ({\n '@type': SchemaType.Property,\n ...prop,\n term: {\n '@type': NodeType.Term,\n ...prop.term\n }\n});\n\nexport const formatSuggestion = ({ defaultProperties, ...node }: any) => ({\n ...node,\n ...(defaultProperties ? { defaultProperties: defaultProperties.map(formatProperty) } : {})\n});\n\nexport const nodeAvailableProperties = (\n node: HestiaJson<SchemaType>, { fullKey, schema, schemaType }: Partial<INodeProperty>\n) => availableProperties(schema!, schemaType!, fullKey ? get(node, fullKey, {}) : node, fullKey!.length > 0);\n\nexport const isAddPropertyEnabled = (\n node: HestiaJson<SchemaType>, schemaType: SchemaType, schema: definition, fullKey = ''\n) => !!schema &&\n !!Object.keys(nodeAvailableProperties(node, { fullKey, schema })).length &&\n (!fullKey || nestingTypeEnabled(schemaType));\n\nconst editableKey = (key: string) => !['type', '@type', 'termType'].includes(key);\n\nexport const propertyId = () => uuidv4();\n\nconst propertyUrl = (node: HestiaJson<SchemaType>, key: string) =>\n ['@id', 'name'].includes(key) && linkTypeEnabled(node['@type']) ?\n {\n url: `${baseUrl()}/${node['@type'].toLowerCase()}/${node['@id']}`,\n title: 'Open'\n } :\n (\n node.type === SchemaType.Term && ['name'].includes(key) ? {\n url: `${baseUrl()}/glossary?query=`,\n urlParamValue: true,\n title: 'Search in Glossary'\n } : undefined\n );\n\nconst propertyMapsUrl = (node: Site | Organisation, key: string, value) =>\n ['type'].includes(key) && [\n SchemaType.Site.toString(),\n SchemaType.Organisation.toString()\n ].includes(stringValue(value) || node.type) ?\n {\n url: mapsUrl({ lat: node.latitude, lng: node.longitude }),\n title: 'View on maps',\n icon: 'map'\n } :\n undefined;\n\nconst propertyExternalUrl = (node: HestiaJson<SchemaType>, key: string, value: any) =>\n propertyUrl(node, key) ||\n propertyMapsUrl(node as any, key, value);\n\nconst arrayPlaceholder = (valueType: genericType) => `Type a ${valueType} then press Enter`;\n\nconst defaultPlaceholder = ({ type, examples }: any, valueType: genericType) => examples?.length ? (\n Array.isArray(examples[0]) ? arrayPlaceholder(valueType) : examples[0]\n) : `Must be of type ${type || valueType}`;\n\nconst schemaPlacholder = (schema: any, fullKey: string) => {\n const [parent, ...keys] = fullKey.split('.');\n const properties = schema.properties || {};\n const { examples } = parent in properties ? properties[parent] : { examples: [] };\n return examples?.length && typeof examples[0] === 'object' ? get(examples[0], keys.join('.'), null): null;\n};\n\nconst propertyPlaceholder = (schema: any, valueType: genericType, fullKey = '', parentSchema?: any) =>\n schema.type === 'array' ?\n arrayPlaceholder(valueType) : (\n parentSchema && fullKey?.length ? schemaPlacholder(parentSchema, fullKey) : null\n ) || defaultPlaceholder(schema, valueType);\n\nconst propertyTypeValue: {\n [type: string]: (value: any, schema: definition) => any;\n} = {\n object: val => safeJSONStringify(val),\n array: (val, schema) => {\n const { items } = schema as IDefinitionArray;\n return '$ref' in items ? val : (\n Array.isArray(val) ?\n val.map(value => propertyValue(items, value)).join(ARRAY_DELIMITER) :\n val\n );\n },\n json: val => val || '',\n string: val => (`${val}` || '').trim(),\n number: val => +(`${val}` || '0'),\n integer: val => +(`${val}` || '0'),\n boolean: val => (`${val}` || '').toLowerCase() === 'true'\n};\n\nconst propertyValue = (schema: definition, value: any) =>\n schema.type ? (\n Array.isArray(schema.type) ?\n propertyTypeValue[typeof value](value, schema) :\n propertyTypeValue[schema.type as string](value, schema)\n ) :\n safeJSONStringify(value);\n\nconst propertyValueType = (schema: definition, value?: any) =>\n (schema.type ? (\n Array.isArray(schema.type) ?\n schema.type[0] :\n schema.type === 'array' ?\n propertyValueType({ ...schema, type: [schema.items.type as genericType] }) :\n schema.type\n ) : typeof value) as genericType;\n\nconst propertyTypeParseValue: {\n [type: string]: (value: any, schema: definition) => any;\n} = {\n object: val => safeJSONParse(val),\n array: (val, schema) => {\n const { items } = schema as IDefinitionArray;\n return '$ref' in items ? val : (\n !val || Array.isArray(val) ? val : val.split(ARRAY_DELIMITER).map(value => parseNewValue(items, value))\n );\n },\n json: val => val || '',\n string: val => (`${val}` || '').trim(),\n number: val => +(`${val}` || '0'),\n integer: val => +(`${val}` || '0'),\n boolean: val => (`${val}` || '').toLowerCase() === 'true'\n};\n\n/**\n * Convert value to the final type in the schema.\n *\n * @param schema Definition of the value.\n * @param value\n * @returns Value in the correct format.\n */\nexport const parseNewValue = (schema: definition, value: any) =>\n schema.type ? (\n Array.isArray(schema.type) ?\n propertyTypeParseValue[typeof value](value, schema) :\n propertyTypeParseValue[schema.type as string](value, schema)\n ) : value;\n\nconst isOpenDefault = (schemaType: SchemaType) => [\n SchemaType.Term\n].includes(schemaType);\n\n// can the property be seen when the group is closed\nconst isKeyClosedVisible = (key: string) => ['type', 'id', '@type', '@id'].includes(key);\n\nconst isKeyHidden = (key: string) => ['type', '@type'].includes(key);\n\nconst isKeyRequired = (key: string, def?: IDefinitionObject) =>\n ['type', 'id'].includes(key) || (def?.required || []).includes(key);\n\nexport const propertyError = (errors: IValidationError[]) => (dataPath: string, nonExpandableArray = false) =>\n errors.find(error =>\n (\n error.dataPath === dataPath || (\n nonExpandableArray && nonExpandableArrayDataPath(error.dataPath!) === nonExpandableArrayDataPath(dataPath)\n )\n ) && (dataPath.length > 0 || !isMissingPropertyError(error))\n );\n\nconst missingPropertyErrors = (\n node: HestiaJson<SchemaType>, errors: IValidationError[], parent = ''\n): INodeProperty[] => {\n const allErrors = errors.filter(error =>\n error.dataPath === keyToDataPath(parent) && isMissingPropertyError(error)\n );\n // check for node not found errors\n const missingNode = missingNodeErrors(allErrors);\n return missingNode.length === 2 ? [{\n id: propertyId(),\n schemaType: node.type,\n suggestions: { type: defaultSuggestionType },\n key: '',\n fullKey: parent,\n value: '',\n error: {\n level: 'error',\n message: missingNodeErrorMessage(node)\n },\n hasError: true,\n properties: [],\n addPropertyEnabled: false\n }] : allErrors.map(error => {\n const { missingProperty } = error.params!;\n const fullKey = parent ? `${parent}.${missingProperty}` : missingProperty;\n const missingOneOf = isMissingOneOfError(error);\n return {\n id: propertyId(),\n schemaType: node.type,\n suggestions: { type: defaultSuggestionType },\n key: missingProperty,\n fullKey,\n value: 'Add field to fix',\n editable: false,\n error: formatError(error),\n hasError: missingOneOf ? false : errorHasError(error),\n hasWarning: missingOneOf || errorHasWarning(error),\n properties: [],\n addPropertyEnabled: true\n };\n });\n};\n\nconst propertyFromNode = (\n schemas: definitions, errors: IValidationError[], nodeSchema: definition, deepEditable: boolean, parent = '', node: any\n) => (key: string) => {\n const value = node[key];\n const expandable = isExpandable(value);\n const isArray = Array.isArray(value);\n const nonExpandableArray = isArray && !expandable;\n const fullKey = Array.isArray(node) ? `${parent}[${key}]` : [\n parent,\n key\n ].filter(Boolean).join('.');\n const nodeType = node.type || node['@type'];\n const schemaType = expandable ? (\n isArray && value.length ? value[0].type || value[0]['@type'] : value.type || value['@type']\n ) : nodeType;\n const schema = (schemas && isTypeValid({ type: schemaType }) ? (\n expandable ? schemas[schemaType] : schemas[schemaType].properties[key]\n ) : null) || {};\n const isIri = isSchemaIri(schema);\n const error = propertyError(errors)(keyToDataPath(fullKey), nonExpandableArray);\n const parentSchema = expandable ? (\n // TODO: for non-array, should be schema unless last recursion\n isArray ? schema : nodeSchema\n ) : nodeSchema;\n const properties = expandable || isIri ?\n recursiveProperties(schemas, errors, parentSchema, deepEditable, fullKey)(value) : [];\n const inError = errorHasError(error) || hasError(properties);\n const inWarning = errorHasWarning(error) || hasWarning(properties);\n const editable = isTypeNode(node['@type']) || (expandable && isTypeNode(value['@type'])) ?\n false :\n (\n // prevent editing/adding new properties on existing sub-nodes\n !deepEditable && isTypeNode(schemaType) && (\n expandable ? value.type !== NodeType.Term : parent && node.type !== NodeType.Term\n ) ?\n false :\n // handle IRI\n (!schemaType && key === '@id') || editableKey(key)\n );\n const valueType = propertyValueType(schema, value);\n return {\n id: propertyId(),\n schemaType: isIri ? null : schemaType,\n schema,\n key,\n fullKey,\n value: propertyValue(schema, value),\n editable: inError || editable,\n suggestions: enableSuggestions(nodeSchema, node.type, fullKey, schema),\n addPropertyEnabled: isAddPropertyEnabled(node, schemaType, schema, fullKey),\n newProperty: {},\n newError: { level: 'warning' },\n error: formatError(error),\n isHidden: parent && isKeyHidden(key),\n closedVisible: isKeyClosedVisible(key),\n hasError: inError,\n hasWarning: inWarning,\n isRequired: isKeyRequired(key, schemas[nodeType]),\n isArray,\n isExpandable: expandable,\n isOpen: isOpenDefault(schemaType),\n properties,\n placeholder: propertyPlaceholder(schema, valueType, fullKey, parentSchema),\n externalUrl: propertyExternalUrl(node, key, value)\n } as INodeProperty;\n};\n\nexport const singleProperty = (schemas: definitions, errors: IValidationError[], node: any, fullKey: string) => {\n const [_t, ...keys] = fullKey.split('.');\n const key = keys.pop()!;\n const parent = keys.join('.');\n const parentNode = parent.length ? get(node, parent) : node;\n const schemaType = typeToSchemaType(parentNode.type || parentNode['@type']);\n const parentSchema = schemas[schemaType];\n return propertyFromNode(schemas, errors, parentSchema, true, parent, parentNode)(key);\n};\n\nexport const recursiveProperties = (\n schemas: definitions, errors: IValidationError[], nodeSchema: definition, deepEditable: boolean, parent = ''\n) => (node: any): INodeProperty[] =>\n Object.keys(node)\n .filter(key => !privateKeys.includes(key))\n .map(propertyFromNode(schemas, errors, nodeSchema, deepEditable, parent, node))\n .concat(...missingPropertyErrors(node, errors, parent))\n .sort(sortProperties);\n\nconst fullKeyParts = (fullKey: string) => fullKey.split('.').flatMap(val => {\n if (val.endsWith(']')) {\n const [key, index] = val.split('[');\n return [key, index.replace(']', '')];\n }\n return val;\n});\n\nexport const updateProperties = ({ properties }: Partial<INodeProperty>, updater: (prop: INodeProperty) => INodeProperty) =>\n (properties || []).map(prop => updateProperties(updater(prop), updater));\n\nexport const typeToNewProperty = (\n schemas: definitions, schema: definition, nodeSchema: definition, node: any, fullKey: string\n): INodeProperty => {\n const key = fullKeyParts(fullKey).pop()!;\n const mappings: {\n [key: string]: () => INodeProperty;\n } = {\n object: () => {\n const { schemaType, properties } = schemaRequiredProperties(schemas, schema as IDefinitionObject);\n node[key] = node[key] || {};\n node[key].type = schemaType;\n // TODO: handle load schemas from http source\n if (schemaType.startsWith('http')) {\n return typeToNewProperty(schemas, { type: 'json' } as any, nodeSchema, node, fullKey);\n }\n // TODO: handle nodeSchema should be schema unless last recursion\n const props = properties\n .filter(prop => nestingEnabled(schemaType, prop.key) && !!prop.value)\n .map(\n v => ({\n ...typeToNewProperty(schemas, v.value, nodeSchema, node[key], `${fullKey}.${v.key}`),\n isRequired: true\n })\n );\n const value = props.reduce((prev, curr) => ({ ...prev, [curr.key]: curr.value }), {});\n return {\n id: propertyId(),\n isAdded: true,\n schema: schemas[schemaType],\n schemaType,\n key,\n fullKey,\n value,\n editable: editableKey(key),\n isHidden: isKeyHidden(key),\n closedVisible: isKeyClosedVisible(key),\n suggestions: enableSuggestions(nodeSchema, schemaType, fullKey),\n properties: props.sort(sortProperties),\n addPropertyEnabled: isAddPropertyEnabled(node, schemaType, schemas[schemaType], key),\n newProperty: {},\n newError: { level: 'warning' },\n isRequired: isKeyRequired(key, schema as any),\n isArray: false,\n isExpandable: true,\n isOpen: isOpenDefault(schemaType)\n };\n },\n array: () => {\n const { items } = schema as IDefinitionArray;\n // array of string, number and boolean\n if (items.type) {\n return mappings.default();\n }\n const schemaType = definitionToSchemaType(items as IDefinitionObject);\n node[key] = node[key] || [];\n node[key].push({ });\n const property = typeToNewProperty(schemas, items, schemas[schemaType], node[key][0], `${fullKey}[0]`);\n return {\n id: propertyId(),\n isAdded: true,\n schema,\n schemaType,\n key,\n fullKey,\n value: [property.value],\n editable: editableKey(key),\n isHidden: isKeyHidden(key),\n closedVisible: isKeyClosedVisible(key),\n suggestions: undefined,\n properties: [property],\n newProperty: {},\n newError: { level: 'warning' },\n isArray: true,\n isExpandable: true,\n addPropertyEnabled: false\n };\n },\n default: () => {\n const valueType = propertyValueType(schema);\n const value = schema.default || (schema as any).const || valueTypeToDefault[valueType];\n node[key] = value;\n return {\n id: propertyId(),\n isAdded: true,\n schema,\n schemaType: node.type,\n key,\n fullKey,\n value: propertyValue(schema, value),\n editable: editableKey(key),\n isHidden: isKeyHidden(key),\n closedVisible: isKeyClosedVisible(key),\n suggestions: enableSuggestions(nodeSchema, node.type, fullKey, schema),\n placeholder: propertyPlaceholder(schema, valueType, fullKey, nodeSchema),\n externalUrl: propertyExternalUrl(node, key, value),\n properties: [],\n addPropertyEnabled: false\n };\n }\n };\n const mapped = !schema.type ? mappings.object : (\n schema.type as string in mappings ? mappings[schema.type as string] : mappings.default\n );\n return mapped();\n};\n\nexport const findProperty = (properties: INodeProperty[], fullKey: string) => {\n for (const p of properties) {\n if (p.fullKey === fullKey) {\n return p;\n }\n const childP = findProperty(p.properties, fullKey);\n if (childP) {\n return childP;\n }\n }\n return null;\n};\n\nexport const parentProperty = (properties: INodeProperty[], property: INodeProperty) => {\n const allKeys = property.fullKey.split('.');\n [...new Array(property.suggestions?.parentLevel || 0)].map(() => allKeys.pop());\n const parentKeys = fullKeyParts(allKeys.join('.'));\n parentKeys.pop();\n const parent = (parentKeys.reduce((prev, curr, currIndex): any => {\n const prop = prev.find(v => v.key === curr);\n return currIndex === parentKeys.length - 1 ? (prop || {} as INodeProperty) : (prop!.properties || []);\n }, properties) as any) as INodeProperty;\n return Array.isArray(parent) ? property : parent;\n};\n\nexport const nestedProperty = ({ properties }: INodeProperty, nestedKey: string) =>\n properties.find(({ key }) => key === nestedKey);\n\nexport const siblingProperty = (properties: INodeProperty[], property: INodeProperty, siblingKey: string) => {\n const parent = parentProperty(properties, property);\n const parentProperties = parent === property ? properties : parent.properties;\n return parentProperties.find(prop => prop.key === siblingKey);\n};\n\nexport const groupChanged = (properties: INodeProperty[], key: string, value?: any) => {\n try {\n const parentKeys = fullKeyParts(key);\n parentKeys.reduce((prev, curr, currIndex) => {\n if (currIndex === parentKeys.length - 1 && value === null) {\n return prev.splice(prev.findIndex(v => v.key === curr), 1);\n }\n else {\n const prop = prev.find(v => v.key === curr)!;\n prop.changed = true;\n return prop.properties;\n }\n }, properties);\n }\n catch (_err) {}\n};\n\nexport const refreshPropertyKeys = (property: INodeProperty) =>\n property.properties.map((prop, i) => {\n prop.fullKey = `${property.fullKey}${property.isArray ? `[${i}]` : `.${prop.key}`}`;\n prop.key = property.isArray ? `${i}` : prop.key;\n return refreshPropertyKeys(prop);\n });\n\nexport const calculateCycleDurationEnabled = (properties: INodeProperty[], property: INodeProperty) => {\n const startDate = siblingProperty(properties, property, 'startDate');\n const endDate = siblingProperty(properties, property, 'endDate');\n return !!startDate?.value && !!endDate?.value;\n};\n\nexport const calculateCycleDuration = (properties: INodeProperty[], property: INodeProperty) => {\n const startDate = siblingProperty(properties, property, 'startDate')!;\n const endDate = siblingProperty(properties, property, 'endDate')!;\n return diffInDays(startDate.value, endDate.value);\n};\n\nexport const calculateCycleStartDateEnabled = (properties: INodeProperty[], property: INodeProperty) => {\n const cycleDuration = siblingProperty(properties, property, 'cycleDuration');\n const endDate = siblingProperty(properties, property, 'endDate');\n return !!cycleDuration?.value && !!endDate?.value;\n};\n\nexport const calculateCycleStartDate = (properties: INodeProperty[], property: INodeProperty) => {\n const cycleDuration = siblingProperty(properties, property, 'cycleDuration')!;\n const endDate = siblingProperty(properties, property, 'endDate')!;\n return moment(endDate.value).locale('en-gb').subtract(cycleDuration.value, 'days').format('YYYY-MM-DD');\n};\n","import { from } from 'rxjs';\nimport { filter, map, mergeMap, reduce, toArray } from 'rxjs/operators';\nconst get = require('lodash.get');\nimport { JSON as HestiaJson, SchemaType } from '@hestia-earth/schema';\nimport { unique } from '@hestia-earth/utils';\n\nimport {\n IValidationError, IValidationErrorWithIndex, validationErrorLevel,\n code, filterError, formatError, nodeLink, parseDataPath\n} from './files-error.model';\nimport { dataPathToKey } from './files-form.model';\n\ninterface ISummaryError {\n node: HestiaJson<SchemaType>;\n error: IValidationError;\n term?: any;\n}\n\ninterface ISummaryGrouped {\n [message: string]: {\n level: validationErrorLevel;\n paths: {\n [type: string]: ISummaryError[];\n };\n };\n}\n\nexport interface ISummary {\n level: validationErrorLevel;\n path: string;\n message: string;\n formattedMessage: string;\n count: number;\n showErrors: boolean;\n errors: ISummaryError[];\n terms?: string;\n}\n\nconst nodeTerm = (node: HestiaJson<SchemaType>, key: string) => {\n const termType = get(node, `${key}.type`, get(node, `${key}.@type`, null));\n return termType === SchemaType.Term ? get(node, key, null) : null;\n};\n\nconst findNodeTerm = (node: HestiaJson<SchemaType>, { dataPath }: IValidationError) =>\n nodeTerm(node, dataPathToKey(dataPath)) ||\n nodeTerm(node, `${dataPathToKey(dataPath)}.term`) ||\n nodeTerm(node, dataPathToKey(dataPath, true)) ||\n nodeTerm(node, `${dataPathToKey(dataPath, true)}.term`);\n\nconst uniqueTerms = (errors: ISummaryError[]) => unique(\n errors\n .map(({ term }) => term ? nodeLink(term) || code(term.name || term['@id'] || term.id) : null)\n .filter(Boolean)\n);\n\nconst summaryShowErrors = (summaryData: ISummary[], { path, level, message }: Partial<ISummary>) =>\n summaryData.find(summary =>\n summary.path === path && summary.level === level && summary.message === message\n )?.showErrors || true;\n\n/**\n * Build the summary objects.\n *\n * @param nodes The list of nodes.\n * @param errors The list of errors per node.\n * @param summaryData The previously computed summary objects.\n * @returns\n */\nexport const buildSummary = (\n nodes: HestiaJson<SchemaType>[] = [],\n errors: (IValidationError[] | IValidationErrorWithIndex)[] = [],\n summaryData: ISummary[] = []\n) =>\n from(errors).pipe(\n mergeMap(error => 'error' in error ? (error as IValidationErrorWithIndex).error : error),\n filter(filterError),\n reduce((prev, error) => {\n const { message } = error;\n const [dataPath] = parseDataPath(error.dataPath);\n const node = get(nodes, error.nodeIndex, null);\n const label = dataPath ? dataPath.label : node?.type;\n const term = error.params?.term || findNodeTerm(node, error);\n prev[message] = prev[message] || { level: error.level, paths: {} };\n prev[message].paths[label] = prev[message].paths[label] || [];\n prev[message].paths[label].push({ node, error, term });\n return prev;\n }, {} as ISummaryGrouped),\n mergeMap(data => from(Object.keys(data)).pipe(\n filter(message => !!message),\n mergeMap(message => Object.entries(data[message].paths).map(([path, summaries]) => ({\n level: data[message].level,\n path,\n message,\n formattedMessage: formatError(summaries[0].error, summaries.length)?.message,\n terms: uniqueTerms(summaries).join(' ; '),\n errors: summaries,\n count: summaries.length,\n showErrors: summaryShowErrors(summaryData, { level: data[message].level, path, message })\n } as ISummary))),\n filter(({ formattedMessage }) => !!formattedMessage)\n )),\n toArray(),\n map(values => values.sort(({ level }) => level === 'error' ? -1 : 1))\n );\n","import { Component, AfterViewInit, Input, ViewChild, OnInit } from '@angular/core';\nimport { GoogleMap } from '@angular/google-maps';\nimport MarkerClusterer from '@google/markerclustererplus';\nimport { JSONLD, NodeType, ISiteJSONLD, Site, IOrganisationJSONLD, Organisation } from '@hestia-earth/schema';\nimport { unique } from '@hestia-earth/utils';\n\nimport { HeNodeService } from '../../node/node.service';\nimport { termLocation, termLocationName } from '../../terms/terms.model';\nimport { clustererImage, createMarker, polygonsFromFeature, polygonBounds, strokeStyle } from '../../common/maps-utils';\nimport { baseUrl, waitFor } from '../../common/utils';\n\ntype site = ISiteJSONLD | Site | IOrganisationJSONLD | Organisation;\n\nconst isSite = ({ '@type': type, '@id': id }: any) => type === NodeType.Site && !!id;\n\nconst siteLocation = ({ latitude, longitude }: site) => latitude && longitude ? ({\n lat: latitude,\n lng: longitude\n}) : undefined;\n\nconst siteDefaultLocation = ({ region, country }: site) => {\n const markers = [\n region ? createMarker(termLocation(region), termLocationName(region).name, undefined, 20) : undefined,\n country ? createMarker(termLocation(country), termLocationName(country).name, undefined, 40) : undefined\n ].filter(Boolean);\n return (markers.length ? markers[0] : undefined) as google.maps.Marker;\n};\n\nconst siteMarker = (site: site) => createMarker(site ? siteLocation(site) : undefined, site.name);\n\nconst sitePolygon = ({ boundary }: site) => (\n boundary ? polygonsFromFeature(boundary) : undefined\n) as google.maps.Polygon[];\n\nconst regions = (sites: site[]): string[] => unique(\n sites.map(({ country, region }) => region ? region['@id'] : (country ? country['@id'] : null)).filter(Boolean)\n);\n\nconst defaultCenter = { lat: 0, lng: 0 };\n\n@Component({\n selector: 'he-sites-maps',\n templateUrl: './sites-maps.component.html',\n styleUrls: ['./sites-maps.component.scss']\n})\nexport class SitesMapsComponent<C extends JSONLD<T>, T extends NodeType> implements OnInit, AfterViewInit {\n public loaded = false;\n\n @ViewChild(GoogleMap)\n private map?: GoogleMap;\n @Input()\n private loadPolygons = true;\n @Input()\n private sites: site[] = [];\n @Input()\n private nodes: C[] = [];\n @Input()\n public center = defaultCenter;\n @Input()\n public zoom = 2;\n @Input()\n public showNotice = true;\n\n public googleLoaded = false;\n public showNoLocation = false;\n\n constructor(\n private nodeService: HeNodeService\n ) { }\n\n ngOnInit() {\n waitFor('google', () => {\n this.googleLoaded = true;\n setTimeout(() => !this.loaded && this.loadData());\n });\n }\n\n ngAfterViewInit() {\n return this.googleLoaded && this.loadData();\n }\n\n private async loadData() {\n // loaded data as geojson\n this.map!.googleMap!.data.setStyle(() => ({ ...strokeStyle, strokeOpacity: 0.1 }));\n\n const sites = await this.getSites();\n const markers = this.addSiteMarkers(sites);\n // add the site.boundary if exist\n const polygons = sites.flatMap(sitePolygon).filter(Boolean);\n polygons.map(polygon => polygon?.setMap(this.map!.googleMap!));\n this.loaded = true;\n\n // add the default site polygons from GADM region if any\n const termPolygons = (await Promise.all(regions(sites).map(v => this.addTermsPolygons(v)))).flat();\n\n this.showNoLocation = markers.length === 0 && polygons.length === 0 && termPolygons.length === 0;\n return markers.length ?\n this.centerMarker(markers[0]!) :\n this.centerPolygons(polygons.length ? polygons : termPolygons);\n }\n\n private addMarkers(markers: google.maps.Marker[], cluster = false) {\n return cluster ?\n new MarkerClusterer(this.map!.googleMap!, markers, { imagePath: clustererImage }) :\n markers.map(marker => marker.setMap(this.map!.googleMap!));\n }\n\n private async addTermsPolygons(id: string) {\n return this.loadPolygons ? await this.termPolygons(id) : [];\n }\n\n private centerMarker(marker: google.maps.Marker) {\n const center = marker.getPosition();\n this.center = center ? { lat: center.lat(), lng: center.lng() } : defaultCenter;\n }\n\n private centerPolygons(polygons: google.maps.Polygon[]) {\n try {\n return polygons.length ? this.map!.googleMap!.fitBounds(polygonBounds(polygons)) : null;\n }\n catch (err) {\n if (polygons.length) {\n this.map!.googleMap!.fitBounds(polygonBounds(polygons[0]));\n this.zoom = 3;\n }\n }\n }\n\n private addSiteMarkers(sites: site[]) {\n const siteMarkers = sites.map(siteMarker).filter(Boolean);\n const markers = siteMarkers.length ? siteMarkers : sites.map(siteDefaultLocation).filter(Boolean);\n this.addMarkers(markers, !!siteMarkers.length);\n return markers;\n }\n\n private async loadSite(node: any) {\n // means the site was already downloaded\n return 'schemaVersion' in node ? node : await this.nodeService.get<ISiteJSONLD | IOrganisationJSONLD>(node);\n }\n\n private async siteData(node: any) {\n return [\n NodeType.Site,\n NodeType.Organisation\n ].includes(node.type) ? node : (\n isSite(node) ?\n this.loadSite(node) : (\n 'site' in node && isSite(node.site) ?\n this.loadSite(node.site) :\n this.siteData(await this.loadSite(node))\n )\n );\n }\n\n private getSites(): Promise<site[]> {\n const nodes: any[] = this.sites && this.sites.length ? this.sites : this.nodes;\n return Promise.all(nodes.map(node => this.siteData(node)));\n }\n\n private async termPolygons(id: string) {\n try {\n const data = await this.nodeService.downloadRaw(`${baseUrl()}/gadm/${id}.geojson`);\n const polygons = polygonsFromFeature(data);\n polygons.map(polygon => polygon.setMap(this.map!.googleMap!));\n return polygons;\n }\n catch (_err) {\n // ignore error if the file does not exist\n return [];\n }\n }\n}\n","<google-map *ngIf=\"googleLoaded\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"center\"\n></google-map>\n\n<p *ngIf=\"showNotice\" class=\"mt-2 is-italic is-size-7\">The information provided might not be complete</p>\n\n<div class=\"no-location has-text-center has-text-light\" *ngIf=\"showNoLocation\">\n <span>No precise location data</span>\n</div>\n","import { NodeType, ISiteJSONLD, Measurement } from '@hestia-earth/schema';\n\nimport { IGroupedNode, propertyValue } from '../common/utils';\n\nexport interface ISiteJSONLDExtended extends ISiteJSONLD {\n related: {\n [type in NodeType]?: string[];\n };\n}\n\nexport const maxAreaSize = 5000;\n\nexport const siteTooBig = ({ area }: ISiteJSONLD) => area && area / 100 > maxAreaSize;\n\nconst hasMultipleValues = (values: any[]) => (values || []).length > 1;\n\nconst weighedAverage = ({ value, depthLower, depthUpper }: Partial<IGroupedNode<Measurement>>) =>\n value!.reduce((prev, curr, index) => prev + (curr * (depthLower![index] - depthUpper![index])), 0) /\n value!.reduce((prev, _curr, index) => prev + (depthLower![index] - depthUpper![index]), 0);\n\nexport const measurementValue = ({ value, depthLower, depthUpper }: IGroupedNode<Measurement>) =>\n hasMultipleValues(value) && hasMultipleValues(depthLower!) && hasMultipleValues(depthUpper!) ?\n weighedAverage({ value, depthLower, depthUpper }) :\n propertyValue(value);\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ISiteJSONLD, ITermJSONLD, Measurement, NodeType, TermTermType } from '@hestia-earth/schema';\nimport { DataState } from '@hestia-earth/api';\n\nimport { matchTermType, matchType } from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { HeNodeService } from '../../node/node.service';\n\n@Component({\n selector: 'he-sites-measurements-logs',\n templateUrl: './sites-measurements-logs.component.html',\n styleUrls: ['./sites-measurements-logs.component.scss']\n})\nexport class SitesMeasurementsLogsComponent implements OnInit {\n @Input()\n public site?: ISiteJSONLD;\n @Input()\n public originalValues: Measurement[] = [];\n @Input()\n public recalculatedValues: Measurement[] = [];\n\n public loading = true;\n public NodeType = NodeType;\n public logsUrl?: string;\n public logs: any;\n public models: ITermJSONLD[] = [];\n public measurements: ITermJSONLD[] = [];\n\n constructor(\n private searchService: HeSearchService,\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.logsUrl = this.nodeService.nodeLogsUrl(this.node);\n this.logs = await this.nodeService.getModelsLog(this.node);\n\n const { results: measurements } = await this.searchService.search<ITermJSONLD, NodeType.Term>({\n fields: ['@type', '@id', 'name'],\n limit: 1000,\n query: {\n bool: {\n must: [\n matchType(NodeType.Term),\n matchTermType(TermTermType.measurement)\n ]\n }\n }\n });\n this.measurements = measurements;\n\n this.loading = false;\n }\n\n private get node() {\n return {\n ...this.site,\n dataState: DataState.recalculated\n };\n }\n}\n","<he-node-logs-models *ngIf=\"!loading; else loader\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.Site\"\n [originalValues]=\"originalValues\"\n [recalculatedValues]=\"recalculatedValues\"\n [terms]=\"measurements\"\n [logs]=\"logs\"\n filteredType=\"Measurement\"\n></he-node-logs-models>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { ISiteJSONLD, Measurement } from '@hestia-earth/schema';\nconst orderBy = require('lodash.orderby');\n\nimport { measurementValue, maxAreaSize, siteTooBig } from '../sites.model';\nimport { defaultLabel, groupNodesByTerm, IGroupedKeys, grouppedKeys } from '../../common/utils';\n\nenum View {\n table = 'table',\n logs = 'logs'\n}\n\n@Component({\n selector: 'he-sites-measurements',\n templateUrl: './sites-measurements.component.html',\n styleUrls: ['./sites-measurements.component.scss']\n})\nexport class SitesMeasurementsComponent implements OnChanges {\n @Input()\n public originalValues: ISiteJSONLD[] = [];\n @Input()\n public sites: ISiteJSONLD[] = [];\n @Input()\n public dataState?: DataState;\n\n public showDownload = false;\n public View = View;\n public selectedView = View.table;\n public maxAreaSize = maxAreaSize;\n public siteTooBig = siteTooBig;\n public defaultLabel = defaultLabel;\n public measurementValue = measurementValue;\n\n public measurements: IGroupedKeys<Measurement>[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if ('sites' in changes) {\n return this.update();\n }\n if ('dataState' in changes) {\n this.selectedView = View.table;\n }\n }\n\n public trackById(_index: number, item: ISiteJSONLD) {\n return item['@id'];\n }\n\n public get isOriginal() {\n return this.dataState === DataState.original;\n }\n\n private update() {\n const measurementsPerSite = groupNodesByTerm<ISiteJSONLD, Measurement>(\n this.sites, 'measurements', this.originalValues\n );\n this.measurements = orderBy(grouppedKeys(measurementsPerSite), ['key'], ['asc']);\n }\n\n public togglePopover(popover, context) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n public get showAreaTooBig() {\n return this.dataState === DataState.recalculated && (this.sites || []).some(siteTooBig);\n }\n}\n","<ng-container *ngIf=\"measurements.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-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\" *ngIf=\"!isOriginal && sites.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{measurements.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let measurement of measurements\"\n [attr.title]=\"measurement.value.term.name\"\n >\n <he-node-link [node]=\"measurement.value.term\">\n <span>{{measurement.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let measurement of measurements\"\n [attr.title]=\"measurement.value.term.units\"\n >{{measurement.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let site of sites; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(site)\">\n <he-node-link [node]=\"site\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(site)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let measurement of measurements\">\n <span *ngIf=\"measurement.value.values[site['@id']]\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: measurement.value.values[site['@id']], site: site, key: 'measurements' })\"\n >\n <span pointer>{{measurementValue(measurement.value.values[site['@id']]) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"measurement.value.values[site['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n <span *ngIf=\"!measurement.value.values[site['@id']]\">\n <span>-</span>\n <sup class=\"pl-1\" *ngIf=\"siteTooBig(site)\">(1)</sup>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n\n <p class=\"is-size-7 is-italic\" *ngIf=\"showAreaTooBig\">\n (1) This region is >{{maxAreaSize}}km2 and is too large to reliably gap fill Measurements.\n </p>\n </div>\n\n <he-sites-measurements-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [site]=\"sites[0]\"\n [originalValues]=\"originalValues[0].measurements\"\n [recalculatedValues]=\"sites[0].measurements\"\n ></he-sites-measurements-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"sites\" filename=\"site-measurements.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['site.id', 'site.@id', 'site.measurements.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\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=\"site\" let-data=\"data\" let-key=\"key\">\n <p><b>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { HeCommonModule } from '../common/common.module';\nimport { HeNodeModule } from '../node/node.module';\n\nimport { SitesMapsComponent } from './sites-maps/sites-maps.component';\nimport { SitesMeasurementsComponent } from './sites-measurements/sites-measurements.component';\nimport { SitesMeasurementsLogsComponent } from './sites-measurements-logs/sites-measurements-logs.component';\n\nconst components = [\n SitesMapsComponent,\n SitesMeasurementsComponent,\n SitesMeasurementsLogsComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, ReactiveFormsModule,\n HeCommonModule,\n HeNodeModule\n ]\n})\nexport class HeSitesModule { }\n","import { Injectable } from '@angular/core';\nimport { User } from '@hestia-earth/api';\n\nconst user = {} as User;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeUsersService {\n public get loggedInUser() {\n return Promise.resolve(user);\n }\n}\n","/* eslint-disable complexity */\nimport { Component, OnInit, Input, Output, EventEmitter, ElementRef } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport * as pluralize from 'pluralize';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nconst get = require('lodash.get');\nimport { JSON as HestiaJson, SchemaType, NodeType, Bibliography, Source } from '@hestia-earth/schema';\nimport { definitions, definition } from '@hestia-earth/json-schema';\nimport { isEmpty } from '@hestia-earth/utils';\n\nimport {\n IErrorProperty, INodeProperty,\n formatPropertyError, propertyError, hasError, hasWarning,\n formatSuggestion, formatLinkNodesSuggestions, suggestionType, defaultSuggestionType,\n recursiveProperties, typeToNewProperty, propertyId,\n isAddPropertyEnabled, nodeAvailableProperties, sortProperties,\n groupChanged, parentProperty, siblingProperty, updateProperties, refreshPropertyKeys, keyToDataPath, findProperty,\n calculateCycleDurationEnabled, calculateCycleDuration,\n calculateCycleStartDateEnabled, calculateCycleStartDate, parseNewValue\n} from '../files-form.model';\nimport { IValidationError, errorHasError, errorHasWarning, filterError, formatError } from '../files-error.model';\nimport { HeUsersService } from '../../users/users.service';\nimport { HeSearchService } from '../../search/search.service';\nimport { matchType, matchPhraseQuery, matchPhrasePrefixQuery, matchBoolPrefixQuery } from '../../search/search.model';\nimport { safeJSONParse } from '../../common/utils';\n\nconst MIN_TYPEAHEAD_LENGTH = 2;\nconst populateTermFields = [\n 'termType', 'units',\n 'defaultProperties.term.name', 'defaultProperties.term.units', 'defaultProperties.value'\n];\n\ntype suggestFunc = (term: string, property: INodeProperty) => Observable<any[]>;\n\n@Component({\n selector: 'he-files-form',\n templateUrl: './files-form.component.html',\n styleUrls: ['./files-form.component.scss']\n})\nexport class FilesFormComponent implements OnInit {\n @Input()\n private schemas?: definitions;\n @Input()\n private errors: IValidationError[] = [];\n @Input()\n public node?: HestiaJson<SchemaType>;\n @Input()\n public nodeMap: { [type in NodeType]?: string[] } = {};\n @Input()\n public editable = false;\n @Input()\n public errorMode = false;\n @Input()\n public deepEditable = true;\n @Input()\n public errorsEditable = false;\n\n @Output()\n private nodeChange = new EventEmitter<{ key: string; value: any }>();\n @Output()\n private nodeErorrResolved = new EventEmitter<number>();\n @Output()\n private nodeErrorAdded = new EventEmitter<IValidationError>();\n\n public NodeType = NodeType;\n public SchemaType = SchemaType;\n public isOpen = true;\n public mapVisible = false;\n public pluralize = pluralize;\n public formatPropertyError = formatPropertyError;\n public mapDrawingProperty?: INodeProperty;\n public bibliographiesSearchProperty?: INodeProperty;\n public nodeProperty?: INodeProperty;\n public properties: INodeProperty[] = [];\n\n public formatter = (value: any) =>\n typeof value === 'object' ? ('bibliography' in value ? value.bibliography?.title : value.name) : value;\n\n public suggestNewProperty = (fullKey: string) => (text$: Observable<string>) =>\n text$.pipe(\n distinctUntilChanged(),\n switchMap(\n term => of(this.newProperties(findProperty(this.properties, fullKey) || this.nodeProperty, term))\n )\n );\n\n private suggestExistingNode = (type: NodeType, term: string, uniqueKey = '@id') =>\n term.length < MIN_TYPEAHEAD_LENGTH ?\n of([]) :\n this.searchService.suggest(term, type, [], {\n bool: {\n must: [matchType(type)],\n should: [\n matchPhraseQuery(term, 100, uniqueKey),\n matchPhrasePrefixQuery(term, 20, uniqueKey),\n matchBoolPrefixQuery(term, 10, uniqueKey)\n ],\n minimum_should_match: 1\n }\n }, 5, populateTermFields);\n\n private suggestNode = (type: NodeType, suggestDefault?: suggestFunc) => (term: string, property: INodeProperty) =>\n (property.suggestions?.isUniqueKey ? (\n this.suggestExistingNode(type, term, property.suggestions.isUniqueKey)\n ) : (\n property.suggestions?.isLinkNode ?\n of(formatLinkNodesSuggestions(this.nodeMap, type)) : (\n suggestDefault ? suggestDefault(term, property) : of([])\n )\n )).pipe(\n map((res: any) => res.map(formatSuggestion))\n );\n\n private suggester: {\n [type in suggestionType]?: suggestFunc;\n } = {\n default: (term, property) => of(\n (property?.suggestions?.values || [])\n .map(v => `${v}`)\n .filter(v => v.toLowerCase().includes(term.toLowerCase()))\n .map(name => ({ name }))\n ),\n [NodeType.Actor]: this.suggestNode(NodeType.Actor),\n [NodeType.Cycle]: this.suggestNode(NodeType.Cycle),\n [NodeType.ImpactAssessment]: this.suggestNode(NodeType.ImpactAssessment),\n [NodeType.Organisation]: this.suggestNode(NodeType.Organisation),\n [NodeType.Site]: this.suggestNode(NodeType.Site),\n [NodeType.Source]: this.suggestNode(NodeType.Source, (term, { key }) =>\n term.length < MIN_TYPEAHEAD_LENGTH ?\n of([]) :\n this.searchService.suggestSource(term, 5, [`bibliography.${key}`], [`bibliography.${key}`])\n ),\n [NodeType.Term]: this.suggestNode(NodeType.Term, (term, { suggestions }) =>\n term.length < MIN_TYPEAHEAD_LENGTH ?\n of([]) :\n this.searchService.suggest(term, NodeType.Term, suggestions?.queries || [], null, 5, populateTermFields)\n )\n };\n public propertySuggest = (fullKey: string, suggestType: suggestionType) => (text$: Observable<string>) =>\n text$.pipe(\n debounceTime(suggestType === defaultSuggestionType ? 0 : 300),\n distinctUntilChanged(),\n mergeMap(term => {\n const property = findProperty(this.properties, fullKey);\n return property?.editable && suggestType in this.suggester ?\n of(term).pipe(\n tap(() => property.loading = true),\n switchMap(() => this.suggester[suggestType]!(term, property)),\n tap(() => property.loading = false)\n ) :\n of([]);\n }),\n );\n\n constructor(\n public ref: ElementRef,\n private searchService: HeSearchService,\n private usersService: HeUsersService\n ) { }\n\n ngOnInit() {\n const schemaType = this.node!.type || this.node!['@type'];\n const schema = this.schemas ? this.schemas[schemaType] : {} as definition;\n const errors = this.errors.filter(filterError);\n const error = propertyError(errors)('');\n this.nodeProperty = this.schemas ? {\n id: propertyId(),\n schema,\n schemaType,\n editable: !!this.node!.type,\n fullKey: '',\n key: '',\n value: {},\n error: formatError(error),\n hasError: errorHasError(error),\n hasWarning: errorHasWarning(error),\n suggestions: {},\n newProperty: {},\n newError: { level: 'warning' },\n properties: [],\n addPropertyEnabled: isAddPropertyEnabled(this.node!, schemaType, schema)\n } : undefined;\n const recurser = recursiveProperties(this.schemas!, errors, schema, this.deepEditable);\n this.properties = recurser(this.node);\n }\n\n public trackByIndex(index: number, _value: any) {\n return index;\n }\n\n public trackByProperty(_index: number, { id, fullKey }: INodeProperty) {\n return [fullKey, id].join('_');\n }\n\n public hasAddons(property: INodeProperty) {\n return property && (\n this.enableAddError(property) ||\n (this.editable && property.editable) ||\n this.addPropertyEnabled(property) ||\n this.isRequired(property) ||\n property.externalUrl?.url ||\n this.mapDrawingModes(property).length ||\n this.unitConverterEnabled(property)\n );\n }\n\n public isRequired({ value, isRequired }: INodeProperty) {\n return isRequired && isEmpty(value);\n }\n\n // --- Errors\n\n public enableAddError(property: INodeProperty) {\n return this.errorsEditable && !property.hasError && !property.hasWarning;\n }\n\n public addError(property: INodeProperty, { message, level }: IErrorProperty) {\n if (!message) {\n return;\n }\n const keys = property.fullKey.split('.');\n keys.pop();\n const error: IValidationError = property.isAdded ? {\n message,\n level: level || 'error',\n dataPath: keyToDataPath(keys.join('.')),\n params: {\n missingProperty: property.key\n }\n } : {\n message,\n level: level || 'error',\n dataPath: keyToDataPath(property.fullKey)\n };\n property.newError = { level: 'warning' };\n property.error = error;\n property.hasError = errorHasError(error);\n property.hasWarning = errorHasWarning(error);\n this.nodeErrorAdded.emit(error);\n }\n\n public editError(property: INodeProperty) {\n property.newError = property.error;\n }\n\n public resolveError(property: INodeProperty) {\n const index = property.error?.index;\n property.error = undefined;\n property.hasError = hasError(property.properties);\n property.hasWarning = hasWarning(property.properties);\n this.nodeErorrResolved.emit(index);\n return groupChanged(this.properties, property.fullKey);\n }\n\n // ---\n\n public typeaheadFocus(e: Event) {\n if (e.bubbles) {\n return;\n }\n e.stopPropagation();\n setTimeout(() => {\n const inputEvent = new Event('input');\n e.target?.dispatchEvent(inputEvent);\n }, 0);\n }\n\n public addPropertyEnabled(property: INodeProperty) {\n return this.editable && !this.errorsEditable && property.addPropertyEnabled;\n }\n\n private newProperties(property: INodeProperty, field: string) {\n const properties = nodeAvailableProperties(this.node!, property);\n return Object.keys(properties)\n .filter(prop => prop.toLowerCase().includes(field.toLowerCase()))\n .map(name => ({ name, prop: properties[name] }));\n }\n\n private replacePropertyData(property: INodeProperty, data: any, editable?: boolean, replaceParent = true) {\n const parent = replaceParent ? parentProperty(this.properties, property) : property;\n const properties = recursiveProperties(\n this.schemas!, [], this.schemas![this.node!.type], this.deepEditable, parent.fullKey\n )(data);\n updateProperties({ properties }, prop => {\n prop.editable = typeof editable === 'undefined' ? prop.editable : editable;\n return prop;\n });\n parent.editable = typeof editable === 'undefined' ? parent.editable : editable;\n parent.properties = properties;\n parent.value = data;\n return this.propertyChanged(data, parent);\n }\n\n public suggestionSelected({ '@id': _id, name, type, id, ...data }, property: INodeProperty) {\n return _id ?\n // suggestions from existing nodes\n this.replacePropertyData(property, { '@id': _id, '@type': property.suggestions?.type, name, ...data }, false) :\n (\n // suggestion from linked nodes\n type && id ?\n this.replacePropertyData(property, { type, id, ...data }, true) :\n // suggestion by name => enum values\n this.propertyChanged(name, property)\n );\n }\n\n public addArrayGroup(array: INodeProperty) {\n const prop = this.schemas![array.schemaType];\n const value = get(this.node, array.fullKey);\n const newProperty = typeToNewProperty(\n this.schemas!, prop, prop, value, `${array.fullKey}[${array.properties.length}]`\n );\n array.properties.push(newProperty);\n this.nodeChange.emit({ key: array.fullKey, value });\n return groupChanged(this.properties, array.fullKey);\n }\n\n public duplicateArrayGroup(array: INodeProperty, property: INodeProperty) {\n const index = +property.key;\n const newProperty: INodeProperty = JSON.parse(JSON.stringify(property));\n newProperty.id = propertyId();\n const value = [...get(this.node, array.fullKey)];\n value.splice(index, 0, safeJSONParse(newProperty.value));\n array.properties.splice(index, 0, newProperty);\n // need to change key on every properties recursively\n refreshPropertyKeys(array);\n this.nodeChange.emit({ key: array.fullKey, value });\n return groupChanged(this.properties, array.fullKey);\n }\n\n public removeArrayGroup(array: INodeProperty, { key }: INodeProperty) {\n const index = +key;\n const value = [...get(this.node, array.fullKey)];\n value.splice(index, 1);\n array.properties.splice(index, 1);\n // need to change key on every properties recursively\n refreshPropertyKeys(array);\n this.nodeChange.emit({ key: array.fullKey, value });\n // if no more values, remove parent group entirely\n return array.properties.length ? null : this.propertyChanged(null, array);\n }\n\n private moveArrayGroupToPosition(array: INodeProperty, currentIndex: number, newIndex: number) {\n const value = [...get(this.node, array.fullKey)];\n moveItemInArray(value, currentIndex, newIndex);\n moveItemInArray(array.properties, currentIndex, newIndex);\n // need to change key on every properties recursively\n refreshPropertyKeys(array);\n this.nodeChange.emit({ key: array.fullKey, value });\n return groupChanged(this.properties, array.fullKey);\n }\n\n public moveArrayGroupUp(array: INodeProperty, { key }: INodeProperty) {\n const index = +key;\n return this.moveArrayGroupToPosition(array, index, index - 1);\n }\n\n public moveArrayGroupDown(array: INodeProperty, { key }: INodeProperty) {\n const index = +key;\n return this.moveArrayGroupToPosition(array, index, index + 1);\n }\n\n public propertyChanged(value: any, property: INodeProperty) {\n groupChanged(this.properties, property.fullKey, value);\n property.addPropertyEnabled = isAddPropertyEnabled(\n this.node!, property.schemaType, property.schema!, property.fullKey\n );\n\n if (value === null) {\n value = undefined;\n }\n else {\n property.value = value;\n property.changed = true;\n }\n\n this.nodeChange.emit({ key: property.fullKey, value: parseNewValue(property.schema!, value) });\n }\n\n private addDefaultProperty(property: INodeProperty, key: string, def: definition) {\n const node = property.key ? get(this.node, property.fullKey) : this.node;\n const fullKey = property.key ? `${property.fullKey}.${key}` : key;\n const properties = property.key ? property.properties : this.properties;\n const newProperty = typeToNewProperty(this.schemas!, def, this.schemas![property.schemaType], node, fullKey);\n const existingPropertyIndex = properties.findIndex(v => v.fullKey === fullKey);\n existingPropertyIndex >= 0 ? (properties[existingPropertyIndex] = newProperty) : properties.push(newProperty);\n properties.sort(sortProperties);\n return this.propertyChanged(newProperty.value, newProperty);\n }\n\n public addMissingProperty(property: INodeProperty) {\n const parent = parentProperty(this.properties, property);\n const newProperty = parent === property ? this.nodeProperty! : parent;\n const newProperties = this.newProperties(newProperty, property.key);\n newProperty.newProperty = newProperties[0];\n return newProperty.newProperty ? this.addProperty(newProperty) : null;\n }\n\n public addProperty(property: INodeProperty) {\n const { name, prop } = property.newProperty!;\n property.newProperty = {};\n return name === '@id' ?\n this.replacePropertyData(property, { '@id': '', type: property.schemaType }, undefined, false) :\n this.addDefaultProperty(property, name!, prop!);\n }\n\n private updatePropertyCoordinates(property: INodeProperty, value: google.maps.LatLngLiteral) {\n const latitude = siblingProperty(this.properties, property, 'latitude');\n const longitude = siblingProperty(this.properties, property, 'longitude');\n return [\n latitude ? this.propertyChanged(value.lat, latitude) : null,\n longitude ? this.propertyChanged(value.lng, longitude) : null\n ];\n }\n\n // Map\n\n public get showMap() {\n return (!this.editable || this.errorMode) && [SchemaType.Site, SchemaType.Organisation].includes(this.node!.type);\n }\n\n public mapDrawingModes({ key }: INodeProperty) {\n return ['boundary'].includes(key) ? [\n google.maps.drawing.OverlayType.POLYGON\n ] : ([\n 'latitude', 'longitude'\n ].includes(key) ? [\n google.maps.drawing.OverlayType.MARKER\n ] : []);\n }\n\n public onMapDrawingClosed(newValue) {\n const property = this.mapDrawingProperty;\n this.mapDrawingProperty = undefined;\n return ['latitude', 'longitude'].includes(property!.key) ?\n this.updatePropertyCoordinates(property!, newValue) :\n this.propertyChanged(newValue, property!);\n }\n\n // Bibliography Search\n\n public bibliographiesSearchKey({ key, schemaType }: INodeProperty) {\n const validSchema = [SchemaType.Bibliography].includes(schemaType);\n const valieKey = ['title', 'documentDOI', 'scopus'].includes(key);\n return validSchema && valieKey ? key : null;\n }\n\n private updateBibliography(value: Partial<Bibliography>) {\n const parent = parentProperty(this.properties, this.bibliographiesSearchProperty!);\n const newValue = this.bibliographiesSearchSources ? {\n ...parent.value,\n bibliography: value\n } : value;\n this.replacePropertyData(this.bibliographiesSearchProperty!, newValue, true);\n return undefined;\n }\n\n private updateSource(value: Partial<Source>) {\n // cannot replace a top-level source\n this.bibliographiesSearchSources && this.replacePropertyData(this.bibliographiesSearchProperty!, {\n '@type': NodeType.Source,\n ...value\n }, !('@id' in value));\n return undefined;\n }\n\n public get bibliographiesSearchSources() {\n return this.bibliographiesSearchProperty!.fullKey.split('.').length > 2;\n }\n\n public onBibliographiesSearchClosed(value?: Partial<Source> | Partial<Bibliography>) {\n this.bibliographiesSearchProperty = value ? (\n value.type === SchemaType.Bibliography ?\n this.updateBibliography(value) :\n this.updateSource(value as Partial<Source>)\n ) : undefined;\n }\n\n // Actor.@id\n\n public async setUserActorId(property: INodeProperty) {\n const { actorId, name } = await this.usersService.loggedInUser;\n return this.replacePropertyData(property, { '@id': actorId, '@type': NodeType.Actor, name }, false);\n }\n\n // Cycle.cycleDuration\n\n public calculateCycleDurationEnabled(property: INodeProperty) {\n return calculateCycleDurationEnabled(this.properties, property);\n }\n\n public calculateCycleDuration(property: INodeProperty) {\n const duration = calculateCycleDuration(this.properties, property);\n return this.propertyChanged(duration, property);\n }\n\n // Cycle.startDate\n\n public calculateCycleStartDateEnabled(property: INodeProperty) {\n return calculateCycleStartDateEnabled(this.properties, property);\n }\n\n public calculateCycleStartDate(property: INodeProperty) {\n const startDate = calculateCycleStartDate(this.properties, property);\n return this.propertyChanged(startDate, property);\n }\n\n // Units converter\n\n public unitConverterEnabled(property: INodeProperty) {\n return this.editable && property.editable && ['value', 'min', 'max', 'sd'].includes(property.key);\n }\n\n public openUnitConverter(popover, property: INodeProperty) {\n const value = property.value;\n const termProperty = siblingProperty(this.properties, property, 'term');\n const term = safeJSONParse(termProperty?.value);\n const units = term?.units;\n return popover.isOpen() ? popover.close() : popover.open({ value, term, units });\n }\n}\n","<div class=\"card\">\n <div class=\"card-toggle p-4\" (click)=\"isOpen = !isOpen\" pointer>\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!isOpen\"></fa-icon>\n <fa-icon icon=\"angle-right\" [class.is-hidden]=\"isOpen\"></fa-icon>\n <span *ngIf=\"nodeProperty\" class=\"is-px-2\"\n [class.has-text-danger]=\"nodeProperty.hasError\"\n [class.has-text-warning]=\"nodeProperty.hasWarning\"\n >\n <he-node-icon [type]=\"nodeProperty.schemaType\"></he-node-icon>\n </span>\n </div>\n\n <ng-container *ngIf=\"editable && isOpen && nodeProperty\">\n <ng-container *ngTemplateOutlet=\"showNewProperty; context: {$implicit: nodeProperty}\"></ng-container>\n </ng-container>\n\n <div class=\"card-content\">\n <ng-container *ngIf=\"isOpen\">\n <div class=\"pb-3 mb-2\" *ngIf=\"errorsEditable\">\n <ng-container *ngTemplateOutlet=\"nodeErrorForm; context: {$implicit: nodeProperty}\"></ng-container>\n </div>\n\n <div class=\"mb-4\" *ngIf=\"nodeProperty?.error\">\n <ng-container *ngTemplateOutlet=\"propertyError; context: {property: nodeProperty, edit: true}\"></ng-container>\n </div>\n </ng-container>\n\n <div class=\"columns is-multiline\">\n <ng-container *ngFor=\"let property of properties; trackBy: trackByProperty\">\n <ng-container *ngTemplateOutlet=\"showProperty; context: {$implicit: property}\"></ng-container>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"isOpen\">\n <ng-container *ngTemplateOutlet=\"propertyMap; context: {$implicit: nodeProperty}\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<he-maps-drawing-confirm *ngIf=\"!!mapDrawingProperty\"\n [value]=\"mapDrawingProperty.value\" [modes]=\"mapDrawingModes(mapDrawingProperty)\"\n (closed)=\"onMapDrawingClosed($event)\"\n></he-maps-drawing-confirm>\n\n<he-bibliographies-search-confirm *ngIf=\"!!bibliographiesSearchProperty\"\n [search]=\"bibliographiesSearchProperty.value\"\n [searchBy]=\"bibliographiesSearchKey(bibliographiesSearchProperty)\"\n [searchSources]=\"bibliographiesSearchSources\"\n (closed)=\"onBibliographiesSearchClosed($event)\"\n></he-bibliographies-search-confirm>\n\n<ng-template #labelDescription let-property>\n <span\n class=\"trigger-popover\"\n [ngbPopover]=\"property.schema?.description\" [autoClose]=\"'outside'\"\n triggers=\"hover\" placement=\"right\" container=\"body\"\n >\n <span>{{property.key}}</span>\n </span>\n</ng-template>\n\n<ng-template #labelDefault let-property>\n <span>{{property.key}}</span>\n</ng-template>\n\n<ng-template #showProperty let-property>\n <ng-container *ngIf=\"(isOpen || property.closedVisible) && !property.isHidden\">\n <div class=\"column is-6\"\n [id]=\"property.fullKey + '_' + property.id\"\n [class.is-12]=\"property.properties.length || !property.key\"\n [ngSwitch]=\"!!property.properties.length\"\n >\n <div class=\"columns is-multiline is-variable is-1\" *ngSwitchCase=\"false\">\n <div class=\"column is-3 py-1\" *ngIf=\"property.key\">\n <label class=\"label has-text-right-tablet has-text-ellipsis\"\n *bindOnce=\"property\"\n [for]=\"property.id\"\n >\n <ng-container\n *ngTemplateOutlet=\"property.schema?.description && editable && property.editable ? labelDescription : labelDefault; context: {$implicit: property}\">\n </ng-container>\n </label>\n </div>\n\n <div class=\"column is-9 py-1\" [class.is-12]=\"!property.key\">\n <div class=\"field\">\n <ng-container *ngTemplateOutlet=\"inputForm; context: {$implicit: property}\"></ng-container>\n\n <ng-container *ngIf=\"(editable || errorsEditable) && (property.hasError || property.hasWarning)\">\n <ng-container *ngTemplateOutlet=\"propertyError; context: {property: property, edit: false}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div class=\"panel\" *ngSwitchCase=\"true\"\n [class.is-link]=\"errorMode && property.changed\"\n [class.is-danger]=\"!property.changed && property.hasError\"\n [class.is-warning]=\"!property.changed && property.hasWarning\"\n [class.is-default]=\"!property.changed && !property.hasError && !property.hasWarning\"\n >\n <div class=\"open-group panel-heading py-0\"\n (click)=\"property.isOpen = !property.isOpen\" pointer\n [class.is-open]=\"property.isOpen\"\n [class.has-text-white]=\"(errorMode && property.changed) || property.hasError || property.hasWarning\"\n >\n <div class=\"columns is-mobile is-vcentered\">\n <span class=\"column is-narrow py-1 my-0\">\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!property.isOpen\"></fa-icon>\n <fa-icon icon=\"angle-right\" [class.is-hidden]=\"property.isOpen\"></fa-icon>\n </span>\n <span class=\"column py-1 my-0\">\n <span class=\"is-size-6\">{{property.key}}</span>\n </span>\n <span *ngIf=\"property.schemaType\" class=\"column is-narrow py-1 my-0\">\n <span class=\"tags mb-0 has-addons\">\n <span class=\"tag mb-0 is-light\">Type</span>\n <span class=\"tag mb-0 is-white\">\n <he-schema-version-link linkClass=\"is-small\" [node]=\"{'@type': property.schemaType}\">\n <span>{{property.schemaType}}</span>\n </he-schema-version-link>\n </span>\n </span>\n </span>\n <he-popover-confirm class=\"column is-narrow py-1 my-0 px-0\"\n *ngIf=\"editable && !errorsEditable\"\n ngbTooltip=\"Remove group\" placement=\"top\"\n [message]=\"'<p>This will remove the group completely.</p>' + (property.isRequired ? '<p><u>Warning: this field is required.</u></p>' : '') + '<p>Do you confirm?</p>'\"\n popoverClass=\"px-3\"\n (confirmed)=\"propertyChanged(null, property)\"\n >\n <fa-icon icon=\"times\" size=\"sm\"></fa-icon>\n </he-popover-confirm>\n </div>\n </div>\n <div class=\"panel-block is-block p-0\" *ngIf=\"property.isOpen\">\n <ng-container [ngSwitch]=\"property.isArray\">\n <div class=\"px-3 pt-4\" *ngIf=\"property.error\">\n <ng-container *ngTemplateOutlet=\"propertyError; context: {property: property, edit: true}\"></ng-container>\n </div>\n\n <div class=\"mt-3\" *ngSwitchCase=\"false\">\n <p class=\"help py-1 px-2\" *ngIf=\"editable && !property.editable\">\n To change the {{property.key}}, please delete it first, then add the field again\n </p>\n <ng-container *ngIf=\"editable && property.editable\">\n <ng-container [ngSwitch]=\"property.schema?.title\">\n <p class=\"help py-1 px-2\" *ngSwitchCase=\"'Bibliography'\">\n Search by Title or Document DOI to auto-populate the fields using the Mendeley catalogue\n </p>\n </ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"showNewProperty; context: {$implicit: property}\"></ng-container>\n\n <div class=\"px-3 mt-1\" *ngIf=\"errorsEditable\">\n <ng-container *ngTemplateOutlet=\"nodeErrorForm; context: {$implicit: property}\"></ng-container>\n </div>\n\n <div class=\"property-group py-2 px-3 mt-2\">\n <div class=\"columns is-multiline mb-0\">\n <ng-container *ngFor=\"let prop2 of property.properties; trackBy: trackByProperty\">\n <ng-container *ngTemplateOutlet=\"showProperty; context: {$implicit: prop2}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div class=\"py-2 px-3 mt-2\" *ngSwitchCase=\"true\">\n <div class=\"mt-1\" *ngIf=\"errorsEditable\">\n <ng-container *ngTemplateOutlet=\"nodeErrorForm; context: {$implicit: property}\"></ng-container>\n </div>\n\n <ng-container *ngFor=\"let prop2 of property.properties; trackBy: trackByProperty\">\n <div class=\"card p-0 my-4\" *ngIf=\"prop2.key\"\n [id]=\"prop2.fullKey + '_' + prop2.id\"\n >\n <div class=\"property-array-number\">\n <div class=\"tags has-addons\">\n <span class=\"tag is-dark\">{{prop2.key}}</span>\n <ng-container *ngIf=\"editable && !errorsEditable && property.editable\">\n <span class=\"tag is-info\" pointer\n (click)=\"duplicateArrayGroup(property, prop2)\"\n [ngbTooltip]=\"'Duplicate ' + pluralize(property.key, 1)\" placement=\"top\"\n >\n <fa-icon icon=\"clone\" size=\"sm\"></fa-icon>\n </span>\n <span class=\"tag is-light\" pointer\n *ngIf=\"prop2.key !== '0'\"\n (click)=\"moveArrayGroupUp(property, prop2)\"\n ngbTooltip=\"Move Up\" placement=\"top\"\n >\n <fa-icon icon=\"long-arrow-alt-up\" size=\"sm\"></fa-icon>\n </span>\n <span class=\"tag is-light\" pointer\n *ngIf=\"prop2.key !== property.properties.length - 1\"\n (click)=\"moveArrayGroupDown(property, prop2)\"\n ngbTooltip=\"Move Down\" placement=\"top\"\n >\n <fa-icon icon=\"long-arrow-alt-down\" size=\"sm\"></fa-icon>\n </span>\n <he-popover-confirm class=\"tag is-delete\"\n [ngbTooltip]=\"'Remove ' + pluralize(property.key, 1)\" placement=\"top\"\n message=\"This will remove the group completely. Do you confirm?\" position=\"right\"\n (confirmed)=\"removeArrayGroup(property, prop2)\"\n ></he-popover-confirm>\n </ng-container>\n </div>\n </div>\n\n <ng-container *ngTemplateOutlet=\"showNewProperty; context: {$implicit: prop2}\"></ng-container>\n\n <div class=\"px-4 mt-2\" *ngIf=\"errorsEditable\">\n <ng-container *ngTemplateOutlet=\"nodeErrorForm; context: {$implicit: prop2}\"></ng-container>\n </div>\n\n <div class=\"px-4 mt-2\" *ngIf=\"prop2.error\">\n <ng-container *ngTemplateOutlet=\"propertyError; context: {property: prop2, edit: true}\"></ng-container>\n </div>\n\n <div class=\"property-group card-content p-3\">\n <div class=\"columns is-multiline my-0\">\n <ng-container *ngFor=\"let prop3 of prop2.properties; trackBy: trackByProperty\">\n <ng-container *ngTemplateOutlet=\"showProperty; context: {$implicit: prop3}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <button class=\"button is-dark is-outlined is-small\" type=\"button\"\n *ngIf=\"editable && !errorsEditable\"\n (click)=\"addArrayGroup(property)\"\n >\n <fa-icon icon=\"plus-circle\"></fa-icon>\n <span class=\"pl-2\">Add</span>\n <span class=\"pl-1\">{{property.key | pluralize:1}}</span>\n </button>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #inputForm let-property>\n <ng-container *ngIf=\"property.key\">\n <ng-container [ngSwitch]=\"property.suggestions?.type\">\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container *ngTemplateOutlet=\"inputSelect; context: {$implicit: property}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"inputInput; context: {$implicit: property}\"></ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #inputInput let-property>\n <div class=\"field mb-0\" [class.has-addons]=\"hasAddons(property)\">\n <div class=\"control is-expanded\"\n [class.has-icons-right]=\"property.loading\"\n >\n <input class=\"input is-small search-input\"\n [class.is-dark]=\"property.key === 'type'\"\n [class.is-link]=\"errorMode && property.changed\"\n [class.is-danger]=\"(!property.changed && property.hasError) || isRequired(property)\"\n [class.is-warning]=\"!property.changed && property.hasWarning\"\n\n [(ngModel)]=\"property.value\" #propertyModel=\"ngModel\"\n [type]=\"property.schema?.type === 'number' ? 'number' : 'string'\"\n [id]=\"property.id\"\n name=\"randomname\"\n [readonly]=\"!editable || !property.editable || property.schema?.internal\"\n [placeholder]=\"property.placeholder\"\n [appTagsInput]=\"{enabled: editable && property.editable && property.schema?.type === 'array', items: property.schema?.items, delimiter: ';', allowDuplicates: true, placeholder: property.placeholder}\"\n (change)=\"propertyChanged($event.target.value, property)\"\n\n [pattern]=\"property.schema?.pattern\"\n [required]=\"property.fullKey.endsWith('id') && property.fullKey !== 'id'\"\n [min]=\"property.schema?.minimum\"\n [max]=\"property.schema?.maximum\"\n\n [ngbTypeahead]=\"propertySuggest(property.fullKey, property.suggestions?.type)\"\n [resultTemplate]=\"suggestion\"\n [inputFormatter]=\"formatter\"\n [focusFirst]=\"true\"\n (focus)=\"editable && property.editable && typeaheadFocus($event)\"\n (selectItem)=\"suggestionSelected($event.item, property)\"\n >\n\n <span class=\"icon is-small is-right has-text-grey-dark\" [class.is-hidden]=\"!property.loading\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"sm\"></fa-icon>\n </span>\n </div>\n <ng-container *ngTemplateOutlet=\"inputAddons; context: {$implicit: property}\"></ng-container>\n </div>\n <p class=\"help is-danger-light\"\n *ngIf=\"!property.hasError && propertyModel.invalid\"\n >\n <span *bindOnce=\"propertyModel.errors\" [innerHTML]=\"formatPropertyError(propertyModel.errors, property)\"></span>\n </p>\n</ng-template>\n\n<ng-template #inputSelect let-property>\n <div class=\"field mb-0\" [class.has-addons]=\"hasAddons(property)\">\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\"\n [class.is-link]=\"errorMode && property.changed\"\n [class.is-danger]=\"(!property.changed && property.hasError) || isRequired(property)\"\n [class.is-warning]=\"!property.changed && property.hasWarning\"\n >\n <select\n [(ngModel)]=\"property.value\" #propertyModel=\"ngModel\"\n [id]=\"property.id\"\n name=\"randomname\"\n [disabled]=\"!editable || !property.editable || property.schema?.internal\"\n (change)=\"propertyChanged($event.target.value, property)\"\n >\n <option value=\"\">Select</option>\n <ng-container *bindOnce=\"property.suggestions\">\n <option *ngFor=\"let value of property.suggestions.values; trackBy: trackByIndex\" [value]=\"value\">{{value}}</option>\n </ng-container>\n </select>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"inputAddons; context: {$implicit: property}\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #removeFieldAddon let-property>\n <div class=\"control\" *ngIf=\"!errorsEditable && !property.isRequired\">\n <a class=\"button is-small\" title=\"Remove field\"\n [class.is-outlined]=\"!property.changed && (property.hasError || property.hasWarning)\"\n [class.is-danger]=\"!property.changed && property.hasError\"\n [class.is-warning]=\"!property.changed && property.hasWarning\"\n (click)=\"$event.stopPropagation(); propertyChanged(null, property)\"\n >\n <fa-icon icon=\"times\"></fa-icon>\n </a>\n </div>\n</ng-template>\n\n<ng-template #inputAddons let-property>\n <he-popover-confirm class=\"control\"\n *ngIf=\"enableAddError(property)\"\n position=\"left\"\n [content]=\"popupErrorForm\"\n (confirmed)=\"addError(property, $event)\"\n >\n <span class=\"button is-small\">\n <fa-icon icon=\"comments\"></fa-icon>\n </span>\n </he-popover-confirm>\n\n <ng-container *ngIf=\"editable && property.editable\">\n <ng-container [ngSwitch]=\"property.schemaType\">\n <ng-container *ngSwitchCase=\"SchemaType.Actor\">\n <ng-container *ngTemplateOutlet=\"actorAddons; context: {$implicit: property}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"SchemaType.Cycle\">\n <ng-container *ngTemplateOutlet=\"cycleAddons; context: {$implicit: property}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *bindOnce=\"property\">\n <div class=\"control\" *ngIf=\"mapDrawingModes(property).length\">\n <button class=\"button is-small\" title=\"Pick on Map\"\n (click)=\"mapDrawingProperty = property\"\n >\n <fa-icon icon=\"map-marked-alt\"></fa-icon>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"bibliographiesSearchKey(property)\">\n <button class=\"button is-small\" title=\"Advanced Search\"\n (click)=\"bibliographiesSearchProperty = property\"\n >\n <fa-icon icon=\"search\"></fa-icon>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"removeFieldAddon; context: {$implicit: property}\"></ng-container>\n </ng-container>\n <div class=\"control\" *ngIf=\"addPropertyEnabled(property)\">\n <a class=\"button is-small is-danger\" title=\"Add field\"\n (click)=\"$event.stopPropagation(); addMissingProperty(property)\"\n >\n <fa-icon icon=\"plus-circle\"></fa-icon>\n <span class=\"pl-2\">Add</span>\n </a>\n </div>\n <div class=\"control\" *ngIf=\"isRequired(property)\">\n <label class=\"button is-small is-danger\" [for]=\"property.id\"\n ngbTooltip=\"This field is required\" placement=\"top\"\n >\n <fa-icon icon=\"exclamation-triangle\"></fa-icon>\n </label>\n </div>\n <ng-container *ngIf=\"property.externalUrl?.url\">\n <div class=\"control\">\n <a class=\"button is-small\"\n [href]=\"property.externalUrl.url + (property.externalUrl.urlParamValue ? property.value : '')\"\n target=\"_blank\"\n [title]=\"property.externalUrl.title\"\n [ngClass]=\"{'is-dark is-outlined': property.key === 'type'}\"\n [attr.disabled]=\"property.externalUrl.urlParamValue && !property.value ? true : null\"\n >\n <fa-icon [icon]=\"property.externalUrl.icon || 'external-link-alt'\"></fa-icon>\n </a>\n </div>\n </ng-container>\n <ng-container *ngIf=\"unitConverterEnabled(property)\">\n <div class=\"control\">\n <button class=\"button is-small\" title=\"Open calculator\"\n [ngbPopover]=\"convertUnits\" autoClose=\"outside\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"bottom\" container=\"body\"\n (click)=\"openUnitConverter(p, property)\"\n >\n <fa-icon icon=\"calculator\"></fa-icon>\n </button>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #actorAddons let-property>\n <div class=\"control\" *ngIf=\"property.key === '@id'\">\n <button class=\"button is-small\" title=\"Add myself as Actor\"\n (click)=\"setUserActorId(property)\"\n >\n <fa-icon [icon]=\"['far', 'id-badge']\"></fa-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #cycleAddons let-property>\n <div class=\"control\" *ngIf=\"property.key === 'cycleDuration'\">\n <button class=\"button is-small\" title=\"Calculate value from startDate and endDate\"\n (click)=\"calculateCycleDuration(property)\"\n [disabled]=\"!calculateCycleDurationEnabled(property)\"\n >\n <fa-icon icon=\"calculator\"></fa-icon>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"property.key === 'startDate'\">\n <button class=\"button is-small\" title=\"Calculate value from endDate and cycleDuration\"\n (click)=\"calculateCycleStartDate(property)\"\n [disabled]=\"!calculateCycleStartDateEnabled(property)\"\n >\n <fa-icon icon=\"calculator\"></fa-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #showNewProperty let-property>\n <header class=\"card-header\" *ngIf=\"editable && property.editable && (property.addPropertyEnabled || deepEditable); else padder\">\n <form class=\"py-3 px-4 is-flex-grow-1\" (submit)=\"addProperty(property)\" novalidate>\n <div class=\"field is-horizontal\">\n <div class=\"field-label is-small\">\n <label class=\"label\" [for]=\"property.id + '_new'\">\n <span>Add new field</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"field has-addons\">\n <div class=\"control is-expanded\">\n <input class=\"input is-small\"\n [(ngModel)]=\"property.newProperty\"\n [id]=\"property.id + '_new'\"\n name=\"randomname\"\n placeholder=\"Search and select field from results\"\n\n [ngbTypeahead]=\"suggestNewProperty(property.fullKey)\"\n [resultTemplate]=\"suggestion\"\n [inputFormatter]=\"formatter\"\n [focusFirst]=\"false\"\n [editable]=\"false\"\n (focus)=\"typeaheadFocus($event)\"\n >\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" type=\"submit\"\n [disabled]=\"!property.newProperty || !property.newProperty.name\"\n >\n <fa-icon icon=\"plus\"></fa-icon>\n <span class=\"pl-2\">Add</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </form>\n </header>\n</ng-template>\n\n<ng-template #propertyError let-property=\"property\" let-edit=\"edit\">\n <p class=\"help\"\n [class.is-danger]=\"property.hasError\"\n [class.is-warning]=\"property.hasWarning\"\n *ngIf=\"property.error\"\n >\n <span class=\"is-pre-wrap\" *bindOnce=\"property.error\" [innerHTML]=\"property.error.message\"></span>\n <a class=\"pl-2\"\n *ngIf=\"edit && errorsEditable && property.error.index >= 0\"\n (click)=\"editError(property)\"\n >\n <fa-icon class=\"pr-2\" icon=\"edit\"></fa-icon>\n <span>Edit</span>\n </a>\n <a class=\"pl-2\"\n *ngIf=\"(property.hasWarning || errorsEditable) && property.error.index >= 0\"\n (click)=\"resolveError(property)\"\n >\n <fa-icon class=\"pr-2\" icon=\"check\"></fa-icon>\n <span>Resolved</span>\n </a>\n </p>\n</ng-template>\n\n<ng-template #propertyMap let-property>\n <div class=\"panel is-default\" *ngIf=\"showMap\">\n <div class=\"open-group panel-heading py-0\"\n (click)=\"mapVisible = !mapVisible\" pointer\n [class.is-open]=\"mapVisible\"\n >\n <div class=\"columns is-mobile is-vcentered mb-0\">\n <span class=\"column is-narrow py-1 my-0\">\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!mapVisible\"></fa-icon>\n <fa-icon icon=\"angle-right\" [class.is-hidden]=\"mapVisible\"></fa-icon>\n </span>\n <span class=\"column py-1 my-0\">\n <span class=\"is-size-6\">View on Map</span>\n </span>\n </div>\n </div>\n <div class=\"panel-block is-block p-0\" [class.is-hidden]=\"!mapVisible\">\n <he-sites-maps [sites]=\"[node]\" [showNotice]=\"false\"></he-sites-maps>\n </div>\n </div>\n</ng-template>\n\n<ng-template #nodeErrorForm let-property>\n <ng-container *ngIf=\"property.newError && property.editable\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <div class=\"select is-small\">\n <select [(ngModel)]=\"property.newError.level\">\n <option [value]=\"undefined\">Select Level</option>\n <option value=\"error\">Error</option>\n <option value=\"warning\">Warning</option>\n </select>\n </div>\n </div>\n <div class=\"control is-expanded\">\n <textarea class=\"textarea is-small\"\n [(ngModel)]=\"property.newError.message\"\n placeholder=\"Enter your message here\"\n rows=\"1\"\n ></textarea>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\"\n [disabled]=\"!property.newError.level || !property.newError.message\"\n (click)=\"addError(property, property.newError)\"\n >\n <fa-icon icon=\"plus-circle\"></fa-icon>\n <span class=\"pl-2\">Add</span>\n </button>\n </div>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #popupErrorForm let-data=\"data\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <div class=\"select\">\n <select [(ngModel)]=\"data.level\">\n <option [value]=\"undefined\">Select Level</option>\n <option value=\"error\">Error</option>\n <option value=\"warning\">Warning</option>\n </select>\n </div>\n </div>\n <div class=\"control\">\n <input class=\"input\"\n [(ngModel)]=\"data.message\"\n placeholder=\"Enter your message here\"\n >\n </div>\n </div>\n</ng-template>\n\n<ng-template #suggestion let-r=\"result\" let-t=\"term\">\n <ngb-highlight\n [title]=\"r.bibliography?.title || r.bibliography?.documentDOI || r.bibliography?.scopus || r.name\"\n [result]=\"r.bibliography?.title || r.bibliography?.documentDOI || r.bibliography?.scopus || r.name\"\n [term]=\"t\"\n ></ngb-highlight>\n</ng-template>\n\n<ng-template #padder>\n <div class=\"pt-1\"></div>\n</ng-template>\n\n<ng-template #convertUnits let-value=\"value\" let-term=\"term\" let-units=\"units\">\n <he-unit-converter [value]=\"value\" [term]=\"term\" [toUnits]=\"units\"></he-unit-converter>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { HeCommonModule } from '../common/common.module';\nimport { HeNodeModule } from '../node/node.module';\nimport { HeBibliographiesModule } from '../bibliographies/bibliographies.module';\nimport { HeSitesModule } from '../sites/sites.module';\n\nimport { FilesFormComponent } from './files-form/files-form.component';\n\nconst components = [\n FilesFormComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, FormsModule,\n HeCommonModule,\n HeNodeModule,\n HeBibliographiesModule,\n HeSitesModule\n ]\n})\nexport class HeFilesModule { }\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { of } from 'rxjs';\nimport { filter, groupBy, map, mergeAll, mergeMap, toArray } from 'rxjs/operators';\nimport { Chart } from 'chart.js';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport { DataState } from '@hestia-earth/api';\nimport { IImpactAssessmentJSONLD, Indicator, ITermJSONLD, NodeType, Term, TermTermType } from '@hestia-earth/schema';\nimport { toPrecision } from '@hestia-earth/utils';\n\nimport { matchTermType, matchType } from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { HeNodeService } from '../../node/node.service';\nimport { Level, parseLines, parseMessage } from '../../common/logs-utils';\nimport { listColor } from '../../common/utils';\n\ninterface ILog {\n indicator: string;\n emission: string;\n value: number;\n}\n\nconst parseLog = (data: any): ILog => ({\n indicator: data['key/term'],\n emission: data.node,\n value: +data.value * +data.coefficient\n});\n\nconst filterTermTypes = [\n TermTermType.emission,\n TermTermType.characterisedIndicator\n];\n\nconst toCsv = (logs: ILog[]) => [\n [\n 'Indicator',\n 'Emission',\n 'Value'\n ].join(','),\n ...logs\n .sort((a, b) => a.indicator.localeCompare(b.indicator))\n .map(({ indicator, emission, value }) => [indicator, emission, value].join(','))\n].join('\\n');\n\n@Component({\n selector: 'he-impact-assessments-indicator-breakdown-chart',\n templateUrl: './impact-assessments-indicator-breakdown-chart.component.html',\n styleUrls: ['./impact-assessments-indicator-breakdown-chart.component.scss']\n})\nexport class ImpactAssessmentsIndicatorBreakdownChartComponent implements OnInit {\n private logs: ILog[] = [];\n private emissions: ITermJSONLD[] = [];\n\n @ViewChild('chart')\n private chartRef?: ElementRef;\n private chart: any;\n\n @Input()\n public impactAssessment?: IImpactAssessmentJSONLD;\n @Input()\n public indicators: Indicator[] = [];\n\n public loading = true;\n public terms: Term[] = [];\n public selectedTerm?: Term;\n public noData = false;\n public csvContent?: SafeResourceUrl;\n\n constructor(\n private domSanitizer: DomSanitizer,\n private searchService: HeSearchService,\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.terms = this.indicators.map(({ term }) => term!);\n\n this.logs = (await of({\n ...this.impactAssessment,\n dataState: DataState.recalculated\n }).pipe(\n mergeMap(node => this.nodeService.getLog(node)),\n map(value => value ? parseLines(value) : []),\n mergeAll(),\n filter(({ data }) => data.logger === 'hestia_earth.models' && data.level === Level.debug),\n map(({ data }) => parseMessage(data.message)),\n filter(message => 'node' in message),\n map(parseLog),\n filter(log => !isNaN(log.value) && log.value > 0),\n groupBy(log => [log.indicator, log.emission].join('/')),\n mergeMap(group => group.pipe(toArray())),\n map(values => {\n const total = values.reduce((prev, curr) => prev + curr.value, 0);\n return { ...values[0], value: total };\n }),\n toArray()\n ).toPromise()) as ILog[];\n this.csvContent = this.domSanitizer.bypassSecurityTrustResourceUrl(\n `data:text/html;charset=utf-8,${encodeURIComponent(toCsv(this.logs))}`\n );\n\n const { results: emissions } = await this.searchService.search<ITermJSONLD, NodeType.Term>({\n fields: ['@type', '@id', 'name'],\n limit: 1000,\n query: {\n bool: {\n must: [\n matchType(NodeType.Term)\n ],\n should: filterTermTypes.map(termType => matchTermType(termType)),\n minimum_should_match: 1\n }\n }\n });\n this.emissions = emissions;\n\n this.loading = false;\n\n this.selectedTerm = this.terms[0];\n this.updateChart();\n }\n\n public get id() {\n return this.impactAssessment!['@id'] || (this.impactAssessment as any).id;\n }\n\n public updateChart() {\n const logs = this.logs\n .filter(({ indicator }) => indicator === this.selectedTerm!['@id'])\n .sort((a, b) => b.value - a.value);\n this.noData = logs.length === 0;\n\n const labels = logs.map(({ emission }) => this.emissions.find(v => v['@id'] === emission)?.name || emission);\n const datasets = [{\n label: this.selectedTerm?.name ?? '',\n data: logs.map(({ value }) => value),\n backgroundColor: logs.map(listColor),\n borderColor: logs.map(listColor)\n }];\n const total = logs.reduce((prev, curr) => prev + curr.value, 0);\n\n if (this.chart) {\n this.chart.destroy();\n }\n this.chart = new Chart(this.chartRef?.nativeElement, {\n type: 'horizontalBar',\n data: {\n labels,\n datasets\n },\n plugins: [ChartDataLabels],\n options: {\n plugins: {\n datalabels: {\n color: 'black',\n formatter: (value) => {\n const ratio = toPrecision(value * 100 / total, 2);\n return `${toPrecision(value, 3)} (${ratio}%)`;\n },\n align: 'end'\n }\n },\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false\n },\n tooltips: {\n enabled: false,\n callbacks: {\n title: (tooltipItems, data) => data.datasets![tooltipItems[0].datasetIndex!]?.label || '',\n label: (tooltipItem) => {\n const value = +(tooltipItem.value || '0');\n const ratio = toPrecision(value * 100 / total, 2);\n return `${toPrecision(value, 3)} (${ratio}%)`;\n }\n }\n },\n scales: {\n xAxes: [{\n display: true\n }],\n yAxes: [{\n position: 'left'\n }]\n }\n }\n });\n }\n}\n","<div class=\"p-3\" [class.is-hidden]=\"loading || !terms?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}} ({{term.units}})</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a class=\"button is-dark is-outlined is-small\" [href]=\"csvContent\" [download]=\"id + '-logs.csv'\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download All (CSV)</span>\n </a>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <p *ngIf=\"noData\" class=\"has-text-centered\">No breakdown available for {{selectedTerm?.name}}.</p>\n <div class=\"chart-container h-100\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"loading\">\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-container>\n","import { Component, Input, AfterViewInit, OnChanges, ViewChild, SimpleChanges, ElementRef } from '@angular/core';\nimport { IImpactAssessmentJSONLD, Indicator, Term, TermTermType } from '@hestia-earth/schema';\nimport { Chart } from 'chart.js';\n\nimport {\n IGroupedNodes, groupNodesByTerm, defaultLabel, itemColor, listColor, IGroupedNodesValues\n} from '../../common/utils';\n\nconst impactValue = (impact: IImpactAssessmentJSONLD, values: IGroupedNodesValues<Indicator>) =>\n (values[impact['@id']]?.nodes[0] || { value: 0 }).value;\n\nconst impactName = (impact: IImpactAssessmentJSONLD, index: number) => `${index + 1}. ${defaultLabel(impact)}`;\n\nconst impactAssessmentDataset = (values: IGroupedNodesValues<Indicator>) => (\n impact: IImpactAssessmentJSONLD, index: number\n) => {\n const label = impactName(impact, index);\n const color = itemColor(index);\n const data = [impactValue(impact, values)];\n return {\n label,\n axis: 'y',\n data,\n backgroundColor: color,\n borderColor: color\n };\n};\n\n@Component({\n selector: 'he-impact-assessments-indicators-chart',\n templateUrl: './impact-assessments-indicators-chart.component.html',\n styleUrls: ['./impact-assessments-indicators-chart.component.scss']\n})\nexport class ImpactAssessmentsIndicatorsChartComponent implements AfterViewInit, OnChanges {\n @ViewChild('barChart')\n private barChartRef?: ElementRef;\n private barChart: any;\n\n @ViewChild('pieChart')\n private pieChartRef?: ElementRef;\n private pieChart: any;\n\n @Input()\n private impactAssessments: IImpactAssessmentJSONLD[] = [];\n @Input()\n private key: 'impacts' | 'emissionsResourceUse' = 'impacts';\n @Input()\n public filterTermTypes?: TermTermType[];\n\n public indicatorPerImpactAssessment: IGroupedNodes<Indicator> = {};\n public terms: Term[] = [];\n public selectedTerm?: Term;\n\n ngAfterViewInit() {\n return this.init();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('impactAssessments' in changes && !changes.impactAssessments.firstChange) {\n return this.init();\n }\n }\n\n private termAllowed(term?: Term) {\n return !this.filterTermTypes?.length || (this.filterTermTypes || []).includes(term?.termType!);\n }\n\n private init() {\n this.indicatorPerImpactAssessment = groupNodesByTerm<IImpactAssessmentJSONLD, Indicator>(\n this.impactAssessments, this.key\n );\n this.terms = Object.values(this.indicatorPerImpactAssessment)\n .filter(({ term, values }: any) =>\n this.termAllowed(term) && Object.values(values).some(({ nodes: [{ value }] }: any) => value > 0)\n )\n .map(({ term }: any) => term);\n this.selectedTerm = this.terms.includes(this.selectedTerm!) ? this.selectedTerm : this.terms[0];\n return this.selectedTerm ? this.updateCharts() : null;\n }\n\n private updateBarChart() {\n const labels = [this.selectedTerm?.name ?? ''];\n const { values } = this.indicatorPerImpactAssessment[this.selectedTerm!['@id']];\n const datasets = this.impactAssessments.map(impactAssessmentDataset(values));\n\n if (this.barChart) {\n this.barChart.destroy();\n }\n this.barChart = new Chart(this.barChartRef?.nativeElement, {\n type: 'bar',\n data: {\n labels,\n datasets\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false\n },\n scales: {\n xAxes: [{\n display: false\n }],\n yAxes: [{\n position: 'left',\n ticks: {\n min: 0\n }\n }]\n }\n }\n });\n }\n\n private updatePieChart() {\n const { values } = this.indicatorPerImpactAssessment[this.selectedTerm!['@id']];\n const labels = this.impactAssessments.map(impactName);\n const colors = this.impactAssessments.map(listColor);\n const data = this.impactAssessments.map(impact => impactValue(impact, values));\n const datasets = [{\n label: this.selectedTerm?.name ?? '',\n data,\n backgroundColor: colors as string[],\n hoverOffset: 4\n }];\n\n if (this.pieChart) {\n this.pieChart.destroy();\n }\n this.pieChart = new Chart(this.pieChartRef?.nativeElement, {\n type: 'pie',\n data: {\n labels,\n datasets\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false\n },\n layout: {\n padding: 0\n }\n }\n });\n }\n\n public updateCharts() {\n this.updateBarChart();\n this.updatePieChart();\n }\n}\n","<div class=\"p-3\" [class.is-hidden]=\"!terms?.length\">\n <div class=\"field is-horizontal\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"selectedTerm\">\n <span>Select a column</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"control\">\n <div class=\"select is-small\">\n <select (change)=\"updateCharts()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"columns h-100\">\n <div class=\"column is-12 chart-container\">\n <canvas #barChart></canvas>\n </div>\n <div class=\"column is-4 chart-container is-hidden\">\n <canvas #pieChart></canvas>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DataState } from '@hestia-earth/api';\nimport { Emission, IImpactAssessmentJSONLD, ITermJSONLD, NodeType, TermTermType } from '@hestia-earth/schema';\n\nimport { matchTermType, matchType } from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { HeNodeService } from '../../node/node.service';\n\n@Component({\n selector: 'he-impact-assessments-products-logs',\n templateUrl: './impact-assessments-products-logs.component.html',\n styleUrls: ['./impact-assessments-products-logs.component.scss']\n})\nexport class ImpactAssessmentsProductsLogsComponent implements OnInit {\n @Input()\n private impactAssessment?: IImpactAssessmentJSONLD;\n @Input()\n public key?: string;\n @Input()\n public filterTermTypes?: TermTermType[];\n @Input()\n public originalValues: Emission[] = [];\n @Input()\n public recalculatedValues: Emission[] = [];\n\n public loading = true;\n public logsUrl?: string;\n public NodeType = NodeType;\n public logs: any;\n public models: ITermJSONLD[] = [];\n public emissions: ITermJSONLD[] = [];\n\n constructor(\n private searchService: HeSearchService,\n private nodeService: HeNodeService\n ) { }\n\n async ngOnInit() {\n this.logsUrl = this.nodeService.nodeLogsUrl(this.node);\n this.logs = await this.nodeService.getModelsLog(this.node);\n\n const { results: emissions } = await this.searchService.search<ITermJSONLD, NodeType.Term>({\n fields: ['@type', '@id', 'name'],\n limit: 1000,\n query: {\n bool: {\n must: [\n matchType(NodeType.Term)\n ],\n should: (this.filterTermTypes || []).map(termType => matchTermType(termType)),\n minimum_should_match: 1\n }\n }\n });\n this.emissions = emissions;\n\n this.loading = false;\n }\n\n private get node() {\n return {\n ...this.impactAssessment,\n dataState: DataState.recalculated\n };\n }\n}\n","<he-node-logs-models *ngIf=\"!loading; else loader\"\n [logsUrl]=\"logsUrl\"\n [nodeType]=\"NodeType.ImpactAssessment\"\n [nodeKey]=\"key\"\n [originalValues]=\"originalValues\"\n [recalculatedValues]=\"recalculatedValues\"\n [terms]=\"emissions\"\n [logs]=\"logs\"\n filteredType=\"Emission\"\n></he-node-logs-models>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';\nimport { DataState } from '@hestia-earth/api';\nimport {\n NodeType, ICycleJSONLD, IImpactAssessmentJSONLD, Indicator, Cycle, TermTermType, Term\n} from '@hestia-earth/schema';\nconst orderBy = require('lodash.orderby');\nimport { unique } from '@hestia-earth/utils';\n\nimport { HeNodeService } from '../../node/node.service';\nimport {\n matchType, matchExactQuery, matchPhraseQuery, matchPhrasePrefixQuery, matchBoolPrefixQuery, matchAggregatedQuery\n} from '../../search/search.model';\nimport { HeSearchService } from '../../search/search.service';\nimport { HeToastService } from '../../common/toast.service';\nimport { propertyValue, groupNodesByTerm, itemColor, IGroupedKeys, grouppedKeys, baseUrl } from '../../common/utils';\n\nconst MIN_TYPEAHEAD_LENGTH = 1;\n\nenum View {\n table = 'table',\n chart = 'chart',\n breakdown = 'breakdown',\n logs = 'logs'\n}\n\n@Component({\n selector: 'he-impact-assessments-products',\n templateUrl: './impact-assessments-products.component.html',\n styleUrls: ['./impact-assessments-products.component.scss']\n})\nexport class ImpactAssessmentsProductsComponent implements OnChanges {\n private dataStateValues: {\n [dataState in DataState]?: IImpactAssessmentJSONLD[];\n } = {};\n @Input()\n private cycles?: ICycleJSONLD[];\n\n @Input()\n public impactAssessments: IImpactAssessmentJSONLD[] = [];\n @Input()\n public key: 'impacts' | 'emissionsResourceUse' = 'impacts';\n @Input()\n public dataState?: DataState;\n @Input()\n public enableCompare = true;\n @Input()\n public filterTermTypes?: TermTermType[];\n @Input()\n public enableFilterMethodModel = false;\n\n public propertyValue = propertyValue;\n public itemColor = itemColor;\n public baseUrl = baseUrl();\n public showDownload = false;\n public View = View;\n public selectedView = View.table;\n\n public methodModels: Term[] = [];\n public selectedMethodModel?: Term;\n\n public indicators: IGroupedKeys<Indicator>[] = [];\n\n // Adding impacts to compare\n public form = this.formBuilder.group({\n search: ['', Validators.required]\n });\n public selectedImpactAssessments: IImpactAssessmentJSONLD[] = [];\n public loading = false;\n public suggesting = false;\n public formatter = ({ '@id': id }) => id;\n public suggestImpactAssessment = (text$: Observable<string>) =>\n text$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n tap(() => this.suggesting = true),\n switchMap(term => this.suggest(term)),\n tap(() => this.suggesting = false)\n );\n\n constructor(\n private formBuilder: FormBuilder,\n private nodeService: HeNodeService,\n private searchService: HeSearchService,\n private toastService: HeToastService\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if ('impactAssessments' in changes) {\n this.dataStateValues[this.dataState!] = changes.impactAssessments.currentValue.slice();\n this.selectAllImpacts();\n return this.update();\n }\n if ('dataState' in changes) {\n this.selectedView = View.table;\n return this.updateDataState();\n }\n }\n\n public trackById(_index: number, item: IImpactAssessmentJSONLD) {\n return item['@id'];\n }\n\n public get isOriginal() {\n return this.dataState === DataState.original;\n }\n\n public get originalValues() {\n return (this.isOriginal ? null : this.dataStateValues[DataState.original]) || [];\n }\n\n private termAllowed(term?: Term) {\n return !this.filterTermTypes?.length || (this.filterTermTypes || []).includes(term?.termType!);\n }\n\n private update() {\n this.updateImpacts();\n this.enableFilterMethodModel && this.updateMethodModels();\n }\n\n private updateMethodModels() {\n const methodModels = this.impactAssessments\n .flatMap(impact => (impact[this.key] || []).map(v => v.methodModel))\n .filter(Boolean);\n this.methodModels = unique(methodModels as Term[]);\n }\n\n public updateImpacts() {\n const indicatorPerImpactAssessment = groupNodesByTerm<IImpactAssessmentJSONLD, Indicator>(\n this.impactAssessments, this.key, this.originalValues, this.selectedMethodModel\n );\n this.indicators = orderBy(grouppedKeys(indicatorPerImpactAssessment), ['value.methodTierOrder', 'key'], ['asc', 'asc'])\n .filter(({ value }) => this.termAllowed(value?.term));\n }\n\n private async loadDataState(dataState: DataState) {\n this.dataStateValues[dataState] = this.dataStateValues[dataState] || await Promise.all(\n this.impactAssessments.map(node =>\n this.nodeService.get<IImpactAssessmentJSONLD>({\n ...node,\n dataState\n })\n )\n );\n }\n\n private async updateDataState() {\n await this.loadDataState(this.dataState!);\n this.impactAssessments = this.dataStateValues[this.dataState!]!.slice();\n return this.update();\n }\n\n public togglePopover(popover, context) {\n return popover.isOpen() ? popover.close() : popover.open(context);\n }\n\n public impactName(impact: IImpactAssessmentJSONLD) {\n return impact.name || (impact.cycle ? this.cycleLabel(impact.cycle) : impact['@id']) || (impact as any).id;\n }\n\n public cycleLabel({ '@id': id, name }: any) {\n return name || (this.cycles || []).find(v => v['@id'] === id)?.name;\n }\n\n public get enableBreakdown() {\n return !this.isOriginal && this.impactAssessments.length === 1 && this.key === 'impacts';\n }\n\n // Recalculation logs\n\n public async showRecalculationLogs() {\n this.loading = true;\n // make sure original data is also loaded\n await this.loadDataState(DataState.original);\n this.loading = false;\n this.selectedView = View.logs;\n }\n\n // Compare\n\n private selectAllImpacts() {\n this.selectedImpactAssessments = this.impactAssessments.slice();\n }\n\n private unselectAllImpacts() {\n this.selectedImpactAssessments = [];\n }\n\n public toggleAllImpacts() {\n return this.selectedImpactAssessments.length ? this.selectAllImpacts() : this.unselectAllImpacts();\n }\n\n private selectImpact(impact: IImpactAssessmentJSONLD) {\n this.selectedImpactAssessments = [\n ...this.selectedImpactAssessments,\n impact\n ];\n }\n\n private unselectImpact(index: number) {\n this.selectedImpactAssessments.splice(index, 1);\n this.selectedImpactAssessments = this.selectedImpactAssessments.slice();\n }\n\n public toggleImpact(impact: IImpactAssessmentJSONLD) {\n const index = this.selectedImpactAssessments.indexOf(impact);\n return index >= 0 ? this.unselectImpact(index) : this.selectImpact(impact);\n }\n\n public isSelected(impact: IImpactAssessmentJSONLD) {\n return this.selectedImpactAssessments.includes(impact);\n }\n\n private suggest(term: string) {\n return term.length < MIN_TYPEAHEAD_LENGTH ?\n of([]) :\n this.searchService.suggest(term, NodeType.ImpactAssessment, [], {\n bool: {\n must: [\n matchType(NodeType.ImpactAssessment),\n matchAggregatedQuery\n ],\n must_not: this.impactAssessments.map(({ '@id': id }) => matchExactQuery('@id', id)),\n should: [\n matchPhraseQuery(term, 100, '@id', 'name', 'cycle.name'),\n matchPhrasePrefixQuery(term, 20, '@id', 'name', 'cycle.name'),\n matchBoolPrefixQuery(term, 10, '@id', 'name', 'cycle.name')\n ],\n minimum_should_match: 1\n }\n }, 10, ['cycle.name', 'country.name', 'product.name', 'endDate']);\n }\n\n private async loadImpact(id: string) {\n const impact = await this.nodeService.get<IImpactAssessmentJSONLD>({\n '@type': NodeType.ImpactAssessment,\n '@id': id,\n dataState: DataState.recalculated\n }, false);\n return impact['@id'] ? {\n ...impact,\n cycle: await this.fetchCycle(impact)\n } : null;\n }\n\n private fetchCycle({ cycle }: IImpactAssessmentJSONLD) {\n return !cycle || cycle.name ? cycle: this.nodeService.get<Cycle>({\n '@type': NodeType.Cycle,\n '@id': cycle['@id']\n });\n }\n\n public async addImpact() {\n this.loading = true;\n const { search: { '@id': id, name } } = this.form.value;\n const impact = await this.loadImpact(id);\n if (impact) {\n this.impactAssessments = [\n ...this.impactAssessments,\n impact\n ];\n this.selectImpact(impact);\n }\n else {\n this.toastService.error(`Error while loading ${name || id}`);\n }\n\n this.loading = false;\n\n this.form.get('search')?.setValue('');\n this.form.updateValueAndValidity();\n return this.update();\n }\n}\n","<ng-container *ngIf=\"indicators.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-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\" *ngIf=\"impactAssessments.length > 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"enableBreakdown\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.breakdown\" (click)=\"selectedView = View.breakdown\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Breakdown view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal && impactAssessments.length === 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"showRecalculationLogs()\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\" *bindOnce=\"indicators\">\n <table class=\"table is-narrow data-table has-children-{{indicators.length + 1}}\">\n <thead>\n <tr>\n <th class=\"width-auto\">\n <div class=\"select is-small\" *ngIf=\"enableFilterMethodModel\">\n <select name=\"selectedMethodModel\"\n (change)=\"updateImpacts()\" [(ngModel)]=\"selectedMethodModel\"\n >\n <option [ngValue]=\"undefined\">Filter Model</option>\n <option *ngFor=\"let term of methodModels\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </th>\n <th></th>\n <th *ngFor=\"let indicator of indicators\"\n [attr.title]=\"indicator.value.term.name\"\n >\n <he-node-link [node]=\"indicator.value.term\">\n <span>{{indicator.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\">\n <a [href]=\"baseUrl + '/schema/ImpactAssessment#functionalUnit'\" target=\"_blank\">Functional unit:</a>\n <span class=\"pl-1\">1 kg</span>\n </th>\n <th>Product</th>\n <th *ngFor=\"let indicator of indicators\"\n [attr.title]=\"indicator.value.term.units\"\n >{{indicator.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let impactAssessment of impactAssessments; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"impactName(impactAssessment)\" [style.border-left-color]=\"itemColor(i)\">\n <label *ngIf=\"enableCompare\" class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n (change)=\"toggleImpact(impactAssessment)\"\n [checked]=\"isSelected(impactAssessment)\"\n >\n </label>\n <he-node-link class=\"is-inline-block\" [node]=\"impactAssessment\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{impactName(impactAssessment)}}</span>\n </he-node-link>\n </td>\n <td [attr.title]=\"impactAssessment.product?.name\">\n <he-node-link *ngIf=\"impactAssessment.product\" [node]=\"impactAssessment.product\">\n <span>{{impactAssessment.product.name | ellipsis:30}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let indicator of indicators\">\n <span *ngIf=\"indicator.value.values[impactAssessment['@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: indicator.value.values[impactAssessment['@id']], impactAssessment: impactAssessment, key: key })\"\n >\n <span pointer>{{propertyValue(indicator.value.values[impactAssessment['@id']].value, key === 'impacts') | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"indicator.value.values[impactAssessment['@id']].nodes[0]\"\n key=\"value\"\n [state]=\"impactAssessment.aggregated ? 'aggregated' : null\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n\n <form *ngIf=\"enableCompare\" class=\"mt-2\" [formGroup]=\"form\" (submit)=\"form.valid && addImpact()\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Compare with Aggregated Impact Assessment</span>\n </div>\n <div class=\"control is-expanded\" [class.has-icons-right]=\"suggesting || loading\">\n <input class=\"input is-small\"\n placeholder=\"Search by name or id\"\n formControlName=\"search\" name=\"search\"\n\n [ngbTypeahead]=\"suggestImpactAssessment\"\n [inputFormatter]=\"formatter\"\n [resultTemplate]=\"suggestion\"\n [focusFirst]=\"true\"\n >\n <span class=\"icon is-small is-right has-text-grey-dark\" [class.is-hidden]=\"!(suggesting || loading)\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"sm\"></fa-icon>\n </span>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" type=\"submit\" [disabled]=\"suggesting || loading\">\n <fa-icon icon=\"plus\"></fa-icon>\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <he-impact-assessments-indicator-breakdown-chart *ngIf=\"selectedView === View.breakdown\"\n [impactAssessment]=\"impactAssessments[0]\"\n [indicators]=\"impactAssessments[0][key]\"\n ></he-impact-assessments-indicator-breakdown-chart>\n\n <he-impact-assessments-indicators-chart *ngIf=\"impactAssessments.length > 1\" [class.is-hidden]=\"selectedView !== View.chart\"\n [key]=\"key\"\n [impactAssessments]=\"selectedImpactAssessments\"\n [filterTermTypes]=\"filterTermTypes\"\n ></he-impact-assessments-indicators-chart>\n\n <he-impact-assessments-products-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [key]=\"key\"\n [impactAssessment]=\"impactAssessments[0]\"\n [filterTermTypes]=\"filterTermTypes\"\n [originalValues]=\"originalValues[0][key]\"\n [recalculatedValues]=\"impactAssessments[0][key]\"\n ></he-impact-assessments-products-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"impactAssessments\" [filename]=\"'impact-' + key + '.csv'\" [isUpload]=\"false\"\n [headerKeys]=\"['impactAssessment.id', 'impactAssessment.@id', 'impactAssessment.' + key + '.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\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=\"impactAssessment\" let-data=\"data\" let-key=\"key\">\n <p *bindOnce=\"node\">\n <b>\n <span *ngIf=\"data.cycle\">{{cycleLabel(node.cycle)}}</span>\n <span *ngIf=\"!data.cycle\">{{data.name}}</span>\n </b>\n </p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n\n<ng-template #suggestion let-impact=\"result\" let-t=\"term\">\n <div class=\"is-block\">\n <ngb-highlight [result]=\"impact.name || impact.cycle.name\" [term]=\"t\"></ngb-highlight>\n </div>\n <div class=\"columns is-flex\">\n <div class=\"column\" *ngIf=\"impact.country\">\n <span class=\"pr-1 has-text-underline\">Country:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.country.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <div class=\"column\" *ngIf=\"impact.product\">\n <span class=\"pr-1 has-text-underline\">Product:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.product.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <div class=\"column\" *ngIf=\"impact.endDate\">\n <span class=\"pr-1 has-text-underline\">Date:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.endDate\" [term]=\"t\"></ngb-highlight></span>\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { HeCommonModule } from '../common/common.module';\nimport { HeNodeModule } from '../node/node.module';\n\nimport {\n ImpactAssessmentsProductsComponent\n} from './impact-assessments-products/impact-assessments-products.component';\nimport {\n ImpactAssessmentsIndicatorBreakdownChartComponent\n} from './impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component';\nimport {\n ImpactAssessmentsIndicatorsChartComponent\n} from './impact-assessments-indicators-chart/impact-assessments-indicators-chart.component';\nimport {\n ImpactAssessmentsProductsLogsComponent\n} from './impact-assessments-products-logs/impact-assessments-products-logs.component';\n\nconst components = [\n ImpactAssessmentsProductsComponent,\n ImpactAssessmentsIndicatorsChartComponent,\n ImpactAssessmentsProductsLogsComponent,\n ImpactAssessmentsIndicatorBreakdownChartComponent\n];\n\n@NgModule({\n declarations: components,\n exports: components,\n imports: [\n CommonModule, RouterModule, FormsModule, ReactiveFormsModule,\n HeCommonModule,\n HeNodeModule\n ]\n})\nexport class HeImpactAssessmentsModule { }\n","import { Injectable } from '@angular/core';\nimport { toJson } from '@hestia-earth/schema-convert';\n\nimport { HeSchemaService } from '../schema/schema.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeNodeCsvService {\n constructor(\n protected schemaService: HeSchemaService\n ) { }\n\n async csvToJson(content: string) {\n return toJson(await this.schemaService.schemas(), content);\n }\n}\n","import { NgModule } from '@angular/core';\n\nexport { HeSearchService } from './search.service';\n\n@NgModule({})\nexport class HeSearchModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["farClone","farCircle","farIdBadge","faClone","i1","Component","i1.HeToastService","i2","get","propertyValue","reduceValues","components","i2.HeAuthService","i3.HeCommonService","gitUrl","rawUrl","i2.HeNodeService","i1.HeAggregationEngineService","i2.HeEngineService","i3","i4.BindOnceDirective","i5","i2.BindOnceDirective","i3.PrecisionPipe","i1.BlankNodeStateComponent","i3.BindOnceDirective","i4.PrecisionPipe","EventEmitter","i1.PopoverComponent","i1.ClipboardComponent","i4.KeysPipe","i2.HeCommonService","i2.HeMendeleyService","i3.HeSearchService","i4","toCsv","i1.HeSchemaService","i4.ClickOutsideDirective","i6","i7.KeysPipe","i2.NodeCsvSelectHeadersComponent","i6.BindOnceDirective","i1.HeNodeService","i3.ClipboardComponent","i7","i8.KeysPipe","orderBy","i1.HeSearchService","i4.NodeLinkComponent","i5.BlankNodeValueDeltaComponent","i8","i9.TimesPipe","i10.DefaultPipe","i11.PrecisionPipe","i12.KeyToLabelPipe","i13.PluralizePipe","i14.KeysPipe","i1.LinkKeyValueComponent","MIN_TYPEAHEAD_LENGTH","i2.NodeLogsModelsComponent","View","i2.NodeLinkComponent","i3.CyclesFunctionalUnitMeasureComponent","i4.BlankNodeStateComponent","i5.BlankNodeStateNoticeComponent","i6.CyclesSuggestFormComponent","i7.CyclesActivityLogsComponent","i8.NodeCsvExportConfirmComponent","i9.NodeValueDetailsComponent","i10","i11","i12.EllipsisPipe","i13.DefaultPipe","i14.PrecisionPipe","i1.NodeLinkComponent","i2.BlankNodeStateComponent","i3.BlankNodeStateNoticeComponent","i3.NodeLogsModelsComponent","i7.CyclesEmissionsChartComponent","i8.CyclesEmissionsLogsComponent","i9.NodeCsvExportConfirmComponent","i10.NodeValueDetailsComponent","i12","i13.EllipsisPipe","i14.DefaultPipe","i15.PrecisionPipe","i7.CyclesPracticesLogsComponent","uuidv4","i3.BlankNodeStateComponent","i4.BlankNodeStateNoticeComponent","i5.SitesMeasurementsLogsComponent","i6.NodeCsvExportConfirmComponent","i7.NodeValueDetailsComponent","i9","i10.EllipsisPipe","i11.DefaultPipe","i12.PrecisionPipe","i2.HeUsersService","i4.NodeIconComponent","i5.MapsDrawingConfirmComponent","i6.BibliographiesSearchConfirmComponent","i7.SchemaVersionLinkComponent","i8.PopoverConfirmComponent","i9.SitesMapsComponent","i11.UnitConverterComponent","i13.BindOnceDirective","i14","i15.TagsInputDirective","i16.PluralizePipe","i2.HeSearchService","i3.HeNodeService","i4.HeToastService","i6.NodeLinkComponent","i7.BlankNodeStateComponent","i8.BlankNodeStateNoticeComponent","i9.ImpactAssessmentsIndicatorBreakdownChartComponent","i10.ImpactAssessmentsIndicatorsChartComponent","i11.ImpactAssessmentsProductsLogsComponent","i12.NodeCsvExportConfirmComponent","i13.NodeValueDetailsComponent","i15","i16.BindOnceDirective","i17.EllipsisPipe","i18.DefaultPipe","i19.PrecisionPipe"],"mappings":"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"}
|