@hestia-earth/ui-components 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/README.md +24 -0
  2. package/auth/auth.service.d.ts +10 -0
  3. package/auth/public-api.d.ts +1 -0
  4. package/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.d.ts +40 -0
  5. package/bibliographies/bibliographies.module.d.ts +10 -0
  6. package/bibliographies/public-api.d.ts +2 -0
  7. package/bundles/hestia-earth-ui-components.umd.js +7570 -0
  8. package/bundles/hestia-earth-ui-components.umd.js.map +1 -0
  9. package/common/bind-once.directive.d.ts +10 -0
  10. package/common/blank-node-diffs/blank-node-diffs.component.d.ts +18 -0
  11. package/common/blank-node-state/blank-node-state.component.d.ts +36 -0
  12. package/common/blank-node-state-notice/blank-node-state-notice.component.d.ts +9 -0
  13. package/common/blank-node-value-delta/blank-node-value-delta.component.d.ts +13 -0
  14. package/common/click-outside.directive.d.ts +10 -0
  15. package/common/clipboard/clipboard.component.d.ts +16 -0
  16. package/common/common.module.d.ts +37 -0
  17. package/common/common.service.d.ts +11 -0
  18. package/common/default.pipe.d.ts +7 -0
  19. package/common/ellipsis.pipe.d.ts +7 -0
  20. package/common/get.pipe.d.ts +7 -0
  21. package/common/key-to-label.pipe.d.ts +7 -0
  22. package/common/keys.pipe.d.ts +7 -0
  23. package/common/link-key-value/link-key-value.component.d.ts +16 -0
  24. package/common/logs-utils.d.ts +17 -0
  25. package/common/maps-drawing-confirm/maps-drawing-confirm.component.d.ts +28 -0
  26. package/common/maps-utils.d.ts +70 -0
  27. package/common/pluralize.pipe.d.ts +7 -0
  28. package/common/popover/popover.component.d.ts +16 -0
  29. package/common/popover-confirm/popover-confirm.component.d.ts +15 -0
  30. package/common/precision.pipe.d.ts +7 -0
  31. package/common/public-api.d.ts +30 -0
  32. package/common/schema-version-link/schema-version-link.component.d.ts +10 -0
  33. package/common/skeleton-text/skeleton-text.component.d.ts +11 -0
  34. package/common/social-tags/social-tags.component.d.ts +12 -0
  35. package/common/tags-input.directive.d.ts +20 -0
  36. package/common/times.pipe.d.ts +7 -0
  37. package/common/toast/toast.component.d.ts +19 -0
  38. package/common/toast.service.d.ts +16 -0
  39. package/common/unit-converter/unit-converter.component.d.ts +25 -0
  40. package/common/utils.d.ts +88 -0
  41. package/cycles/cycles-activity/cycles-activity.component.d.ts +31 -0
  42. package/cycles/cycles-activity-logs/cycles-activity-logs.component.d.ts +25 -0
  43. package/cycles/cycles-completeness/cycles-completeness.component.d.ts +14 -0
  44. package/cycles/cycles-emissions/cycles-emissions.component.d.ts +40 -0
  45. package/cycles/cycles-emissions-chart/cycles-emissions-chart.component.d.ts +18 -0
  46. package/cycles/cycles-emissions-logs/cycles-emissions-logs.component.d.ts +23 -0
  47. package/cycles/cycles-functional-unit-measure/cycles-functional-unit-measure.component.d.ts +8 -0
  48. package/cycles/cycles-result/cycles-result.component.d.ts +13 -0
  49. package/cycles/cycles-suggest-form/cycles-suggest-form.component.d.ts +24 -0
  50. package/cycles/cycles.model.d.ts +7 -0
  51. package/cycles/cycles.module.d.ts +19 -0
  52. package/cycles/public-api.d.ts +10 -0
  53. package/engine/aggregation-engine.service.d.ts +71 -0
  54. package/engine/engine.service.d.ts +61 -0
  55. package/engine/public-api.d.ts +2 -0
  56. package/esm2015/auth/auth.service.js +19 -0
  57. package/esm2015/auth/public-api.js +2 -0
  58. package/esm2015/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.js +100 -0
  59. package/esm2015/bibliographies/bibliographies.module.js +30 -0
  60. package/esm2015/bibliographies/public-api.js +3 -0
  61. package/esm2015/common/bind-once.directive.js +23 -0
  62. package/esm2015/common/blank-node-diffs/blank-node-diffs.component.js +47 -0
  63. package/esm2015/common/blank-node-state/blank-node-state.component.js +90 -0
  64. package/esm2015/common/blank-node-state-notice/blank-node-state-notice.component.js +27 -0
  65. package/esm2015/common/blank-node-value-delta/blank-node-value-delta.component.js +41 -0
  66. package/esm2015/common/click-outside.directive.js +28 -0
  67. package/esm2015/common/clipboard/clipboard.component.js +69 -0
  68. package/esm2015/common/common.module.js +144 -0
  69. package/esm2015/common/common.service.js +29 -0
  70. package/esm2015/common/default.pipe.js +23 -0
  71. package/esm2015/common/ellipsis.pipe.js +17 -0
  72. package/esm2015/common/get.pipe.js +17 -0
  73. package/esm2015/common/key-to-label.pipe.js +18 -0
  74. package/esm2015/common/keys.pipe.js +20 -0
  75. package/esm2015/common/link-key-value/link-key-value.component.js +55 -0
  76. package/esm2015/common/logs-utils.js +49 -0
  77. package/esm2015/common/maps-drawing-confirm/maps-drawing-confirm.component.js +89 -0
  78. package/esm2015/common/maps-utils.js +101 -0
  79. package/esm2015/common/pluralize.pipe.js +17 -0
  80. package/esm2015/common/popover/popover.component.js +37 -0
  81. package/esm2015/common/popover-confirm/popover-confirm.component.js +38 -0
  82. package/esm2015/common/precision.pipe.js +20 -0
  83. package/esm2015/common/public-api.js +31 -0
  84. package/esm2015/common/schema-version-link/schema-version-link.component.js +39 -0
  85. package/esm2015/common/skeleton-text/skeleton-text.component.js +44 -0
  86. package/esm2015/common/social-tags/social-tags.component.js +37 -0
  87. package/esm2015/common/tags-input.directive.js +74 -0
  88. package/esm2015/common/times.pipe.js +16 -0
  89. package/esm2015/common/toast/toast.component.js +37 -0
  90. package/esm2015/common/toast.service.js +36 -0
  91. package/esm2015/common/unit-converter/unit-converter.component.js +73 -0
  92. package/esm2015/common/utils.js +245 -0
  93. package/esm2015/cycles/cycles-activity/cycles-activity.component.js +92 -0
  94. package/esm2015/cycles/cycles-activity-logs/cycles-activity-logs.component.js +48 -0
  95. package/esm2015/cycles/cycles-completeness/cycles-completeness.component.js +41 -0
  96. package/esm2015/cycles/cycles-emissions/cycles-emissions.component.js +121 -0
  97. package/esm2015/cycles/cycles-emissions-chart/cycles-emissions-chart.component.js +93 -0
  98. package/esm2015/cycles/cycles-emissions-logs/cycles-emissions-logs.component.js +63 -0
  99. package/esm2015/cycles/cycles-functional-unit-measure/cycles-functional-unit-measure.component.js +22 -0
  100. package/esm2015/cycles/cycles-result/cycles-result.component.js +92 -0
  101. package/esm2015/cycles/cycles-suggest-form/cycles-suggest-form.component.js +83 -0
  102. package/esm2015/cycles/cycles.model.js +2 -0
  103. package/esm2015/cycles/cycles.module.js +66 -0
  104. package/esm2015/cycles/public-api.js +11 -0
  105. package/esm2015/engine/aggregation-engine.service.js +126 -0
  106. package/esm2015/engine/engine.service.js +78 -0
  107. package/esm2015/engine/public-api.js +3 -0
  108. package/esm2015/files/files-error.model.js +180 -0
  109. package/esm2015/files/files-form/files-form.component.js +439 -0
  110. package/esm2015/files/files-form.model.js +548 -0
  111. package/esm2015/files/files.module.js +42 -0
  112. package/esm2015/files/public-api.js +3 -0
  113. package/esm2015/fontawesome/fontawesome.module.js +36 -0
  114. package/esm2015/fontawesome/public-api.js +2 -0
  115. package/esm2015/hestia-earth-ui-components.js +5 -0
  116. package/esm2015/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.js +161 -0
  117. package/esm2015/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.js +142 -0
  118. package/esm2015/impact-assessments/impact-assessments-products/impact-assessments-products.component.js +252 -0
  119. package/esm2015/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.js +68 -0
  120. package/esm2015/impact-assessments/impact-assessments.model.js +2 -0
  121. package/esm2015/impact-assessments/impact-assessments.module.js +47 -0
  122. package/esm2015/impact-assessments/public-api.js +7 -0
  123. package/esm2015/mendeley/mendeley.service.js +35 -0
  124. package/esm2015/mendeley/public-api.js +2 -0
  125. package/esm2015/node/node-csv-export-confirm/node-csv-export-confirm.component.js +65 -0
  126. package/esm2015/node/node-csv-select-headers/node-csv-select-headers.component.js +119 -0
  127. package/esm2015/node/node-csv.service.js +24 -0
  128. package/esm2015/node/node-diffs/node-diffs.component.js +67 -0
  129. package/esm2015/node/node-diffs/node-diffs.model.js +6 -0
  130. package/esm2015/node/node-icon/node-icon.component.js +37 -0
  131. package/esm2015/node/node-link/node-link.component.js +33 -0
  132. package/esm2015/node/node-logs-file/node-logs-file.component.js +63 -0
  133. package/esm2015/node/node-logs-models/node-logs-models.component.js +188 -0
  134. package/esm2015/node/node-missing-lookup-factors/node-missing-lookup-factors.component.js +34 -0
  135. package/esm2015/node/node-value-details/node-value-details.component.js +46 -0
  136. package/esm2015/node/node.module.js +67 -0
  137. package/esm2015/node/node.service.js +113 -0
  138. package/esm2015/node/public-api.js +13 -0
  139. package/esm2015/public-api.js +16 -0
  140. package/esm2015/schema/public-api.js +2 -0
  141. package/esm2015/schema/schema.service.js +167 -0
  142. package/esm2015/search/public-api.js +4 -0
  143. package/esm2015/search/search.model.js +204 -0
  144. package/esm2015/search/search.module.js +13 -0
  145. package/esm2015/search/search.service.js +99 -0
  146. package/esm2015/sites/public-api.js +6 -0
  147. package/esm2015/sites/sites-maps/sites-maps.component.js +162 -0
  148. package/esm2015/sites/sites-measurements/sites-measurements.component.js +78 -0
  149. package/esm2015/sites/sites-measurements-logs/sites-measurements-logs.component.js +63 -0
  150. package/esm2015/sites/sites.model.js +10 -0
  151. package/esm2015/sites/sites.module.js +42 -0
  152. package/esm2015/terms/public-api.js +2 -0
  153. package/esm2015/terms/terms.model.js +184 -0
  154. package/esm2015/users/public-api.js +2 -0
  155. package/esm2015/users/users.service.js +17 -0
  156. package/fesm2015/hestia-earth-ui-components.js +5920 -0
  157. package/fesm2015/hestia-earth-ui-components.js.map +1 -0
  158. package/files/files-error.model.d.ts +40 -0
  159. package/files/files-form/files-form.component.d.ts +94 -0
  160. package/files/files-form.model.d.ts +113 -0
  161. package/files/files.module.d.ts +13 -0
  162. package/files/public-api.d.ts +2 -0
  163. package/fontawesome/fontawesome.module.d.ts +10 -0
  164. package/fontawesome/public-api.d.ts +1 -0
  165. package/hestia-earth-ui-components.d.ts +5 -0
  166. package/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.d.ts +28 -0
  167. package/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.d.ts +25 -0
  168. package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +77 -0
  169. package/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.d.ts +25 -0
  170. package/impact-assessments/impact-assessments.model.d.ts +6 -0
  171. package/impact-assessments/impact-assessments.module.d.ts +15 -0
  172. package/impact-assessments/public-api.d.ts +6 -0
  173. package/mendeley/mendeley.service.d.ts +25 -0
  174. package/mendeley/public-api.d.ts +1 -0
  175. package/node/node-csv-export-confirm/node-csv-export-confirm.component.d.ts +32 -0
  176. package/node/node-csv-select-headers/node-csv-select-headers.component.d.ts +42 -0
  177. package/node/node-csv.service.d.ts +9 -0
  178. package/node/node-diffs/node-diffs.component.d.ts +23 -0
  179. package/node/node-diffs/node-diffs.model.d.ts +4 -0
  180. package/node/node-icon/node-icon.component.d.ts +8 -0
  181. package/node/node-link/node-link.component.d.ts +11 -0
  182. package/node/node-logs-file/node-logs-file.component.d.ts +31 -0
  183. package/node/node-logs-models/node-logs-models.component.d.ts +72 -0
  184. package/node/node-missing-lookup-factors/node-missing-lookup-factors.component.d.ts +14 -0
  185. package/node/node-value-details/node-value-details.component.d.ts +17 -0
  186. package/node/node.module.d.ts +20 -0
  187. package/node/node.service.d.ts +70 -0
  188. package/node/public-api.d.ts +12 -0
  189. package/package.json +53 -0
  190. package/public-api.d.ts +15 -0
  191. package/schema/public-api.d.ts +1 -0
  192. package/schema/schema.service.d.ts +51 -0
  193. package/search/public-api.d.ts +3 -0
  194. package/search/search.model.d.ts +243 -0
  195. package/search/search.module.d.ts +7 -0
  196. package/search/search.service.d.ts +129 -0
  197. package/sites/public-api.d.ts +5 -0
  198. package/sites/sites-maps/sites-maps.component.d.ts +35 -0
  199. package/sites/sites-measurements/sites-measurements.component.d.ts +31 -0
  200. package/sites/sites-measurements-logs/sites-measurements-logs.component.d.ts +23 -0
  201. package/sites/sites.model.d.ts +10 -0
  202. package/sites/sites.module.d.ts +13 -0
  203. package/styles.scss +197 -0
  204. package/terms/public-api.d.ts +1 -0
  205. package/terms/terms.model.d.ts +21 -0
  206. package/users/public-api.d.ts +1 -0
  207. package/users/users.service.d.ts +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hestia-earth-ui-components.js","sources":["../../src/auth/auth.service.ts","../../src/fontawesome/fontawesome.module.ts","../../src/common/utils.ts","../../src/common/bind-once.directive.ts","../../src/common/precision.pipe.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/search/search.model.ts","../../src/cycles/cycles.model.ts","../../src/common/common.service.ts","../../src/terms/terms.model.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/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/keys.pipe.ts","../../src/common/unit-converter/unit-converter.component.ts","../../src/common/unit-converter/unit-converter.component.html","../../src/common/click-outside.directive.ts","../../src/common/default.pipe.ts","../../src/common/ellipsis.pipe.ts","../../src/common/get.pipe.ts","../../src/common/key-to-label.pipe.ts","../../src/common/pluralize.pipe.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.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/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/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/files/files-error.model.ts","../../src/files/files-form.model.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","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';\n\nexport const gitHome = 'https://gitlab.com/hestia-earth';\nexport const gitRawBaseUrl = 'https://glcdn.githack.com/hestia-earth';\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\nexport const loadScript = (src?: string) => new Promise<any>((resolve, reject) => {\n if (!src || document.body.querySelectorAll('script[src=\"' + src + '\"]').length > 0) {\n return resolve({});\n }\n\n const script = document.createElement('script');\n script.onload = resolve;\n script.onerror = reject;\n script.src = src;\n document.body.appendChild(script);\n});\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 toFormData = (data: any, formData = new FormData()) => {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n const value = data[key];\n if (typeof value === 'object') {\n formData.append(key, JSON.stringify(value));\n }\n else {\n formData.append(key, value);\n }\n }\n }\n return formData;\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 toSearchParams = (params: any = {}) => {\n const searchParams = new URLSearchParams();\n Object.keys(params)\n .filter(key => typeof params[key] !== 'undefined')\n .forEach(key => searchParams.append(key, `${params[key]}`));\n return searchParams;\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 animateCounter = (total: number, callback: (count: number) => void) => {\n let animationDuration = 10;\n const step = Math.pow(10, `${total}`.length - 1);\n const maxSteps = parseInt(`${total / step}`, 10);\n let current = 0;\n const interval = setInterval(() => {\n callback(current);\n current += (step / animationDuration);\n if (current > maxSteps * step) {\n animationDuration = 100;\n }\n if (current > total) {\n callback(total);\n clearInterval(interval);\n }\n }, animationDuration);\n};\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 sortByFn = (key: string, asc: boolean) => <T>(a: T, b: T): number =>\n asc ? get(a, key, '').localeCompare(get(b, key, '')) : get(b, key, '').localeCompare(get(a, key, ''));\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\nexport const nodeTypeToString = (type: NodeType) => `${type.charAt(0).toLowerCase()}${type.substring(1)}`;\n\nexport const parseNodeType = (type: string) =>\n Object.values(NodeType).find(v => v.toString().toLowerCase() === (type || '').toLowerCase());\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\nexport const minutesBefore = (date: Date, minutes = 1) => {\n date.setMinutes(date.getMinutes() - minutes);\n return date;\n};\n\nexport const hoursBefore = (date: Date, hours = 1) => {\n date.setHours(date.getHours() - hours);\n return date;\n};\n\nexport const repeat = (times = 0) => (Array.from(Array(times), Math.random));\n\nexport enum DeltaDisplayType {\n absolute = 'absolute',\n percent = 'percent'\n}\n\nconst deltaPerType: {\n [type in DeltaDisplayType]: (value: number, original: number) => number;\n} = {\n [DeltaDisplayType.absolute]: (value, original) => value - original,\n [DeltaDisplayType.percent]: (value, original) => ((value - original) / original) * 100\n};\n\nconst roundValue = (value: any) => +(`${value}`.substring(0, 10));\n\nexport const delta = (value: any, originalValue: any, displayType = DeltaDisplayType.percent) => {\n const vvalue = roundValue(propertyValue(value));\n const voriginalValue = roundValue(propertyValue(originalValue));\n const diff = vvalue === voriginalValue ? 0 : deltaPerType[displayType](vvalue, voriginalValue);\n return Number.isFinite(diff) ? (diff === -0 ? 0 : diff) : 0;\n};\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","/* 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';\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 { Component, Input } from '@angular/core';\nimport { isEmpty } from '@hestia-earth/utils';\n\nimport { propertyValue, DeltaDisplayType, delta } from '../utils';\n\nconst emptyValue = (value: any) => isEmpty(value) || isNaN(propertyValue(value));\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);\n }\n\n public get color() {\n const value = Math.abs(this.delta);\n return this.displayType === DeltaDisplayType.percent ? (\n value < 5 ? 'success' : (\n value < 20 ? 'warning' : 'danger'\n )\n ) : '';\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';\nimport { unique } from '@hestia-earth/utils';\n\nimport { propertyValue } from '../utils';\n\ninterface IValue {\n term: Term;\n original?: number;\n recalculated?: number;\n}\n\nconst reduceValues = (values: any[]) =>\n values.length ? values.reduce((p, v) => p + propertyValue(v.value), 0) : undefined;\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 const originalValues = (this.originalValues || []).filter(value => !(value as any).deleted);\n const recalculatedValues = (this.recalculatedValues || []).filter(value => !(value as any).deleted);\n const terms = unique([...originalValues, ...recalculatedValues].map(v => v.term['@id'])).sort();\n this.values = terms.map(termId => {\n const original = originalValues.filter(v => termId === v.term['@id']);\n const recalculated = recalculatedValues.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 }\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 { 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 { 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","import { Inject, Injectable, InjectionToken } from '@angular/core';\n\nimport { baseUrl } from './utils';\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) public _apiBaseUrl: string\n ) {}\n\n public get apiBaseUrl() {\n return this._apiBaseUrl || '/api';\n }\n\n public get gitBranch() {\n return ['dev', 'staging'].some((env) => baseUrl().includes(env))\n ? 'develop'\n : 'master';\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 { 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\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 private http: HttpClient,\n private authService: HeAuthService,\n private 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) {\n return `${this.commonService.apiBaseUrl}/${nodeTypeToParam(type)}`;\n }\n\n public nodeUrl({ dataState, ...node }: IJSONNode) {\n return `${this.nodeTypeUrl(node['@type'] || node.type)}/${node['@id'] || node.id}${dataState ? `?dataState=${dataState}` : ''}`;\n }\n\n public nodeLogsUrl({ dataState, ...node }: IJSONNode) {\n return `${this.nodeUrl(node)}/log${dataState ? `?dataState=${dataState}` : ''}`;\n }\n\n public lookupUrl(filename: string) {\n return filename.startsWith('http') ? filename : `${baseUrl()}/glossary/lookups/${filename}.csv`;\n }\n\n public termTypeLookupUrl(termType: TermTermType) {\n return `${baseUrl()}/glossary/${termChildToParent(termType).termType}/${termType}.csv`;\n }\n\n public async downloadLookup(filename: string) {\n try {\n const url = this.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') ? this.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 { ICycleJSONLD, NodeType, Product, Term, TermTermType } from '@hestia-earth/schema';\nimport * as csvtojson from 'csvtojson';\nconst get = require('lodash.get');\n\nimport { HeNodeService } from '../node/node.service';\nimport { worldRegion } from '../search/search.model';\nimport { primaryProduct } from '../cycles/cycles.model';\nimport { propertyValue, delta, gitHome, gitRawBaseUrl } from '../common/utils';\nimport { HeCommonService } from '../common/common.service';\n\nconst lookups = Object.freeze({\n cropYield: 'region-crop-cropGroupingFaostatProduction-yield',\n cropGroupingColumn: 'cropGroupingFaostatProduction'\n});\n\nexport interface IModel {\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 IModelLinks {\n links: IModel[];\n}\n\nexport interface ILookups {\n crop: any[];\n cropYield: any[];\n}\n\nconst extractGroupedDataClosesDate = (data: string, year: number) => {\n const dataByDate = (data || '').split(';').reduce((prev, curr) => ({\n ...prev,\n ...(curr.length > 0 && curr.split(':')[1] !== '-' ? {[curr.split(':')[0]]: curr.split(':')[1]} : {})\n }), {});\n const years = Object.keys(dataByDate).map(v => +v);\n const closestYear = years.reduce((prev, curr) => Math.abs(curr - year) < Math.abs(prev - year) ? curr : prev, 0);\n return closestYear ? +dataByDate[closestYear] / 10 : null;\n};\n\nconst cropGrouping = (lookup: any[], product: Product) =>\n (lookup.find(({ term }) => term.id === product?.term!['@id']) || {})[lookups.cropGroupingColumn];\n\nexport interface ICycle {\n cycle: ICycleJSONLD;\n name?: string;\n startDate?: string;\n endDate?: string;\n country: string;\n observations?: number;\n yield?: number;\n faoYield?: number;\n diff?: number;\n}\n\nconst cropYieldCountry = (cropYield: any[], cycle: ICycleJSONLD) =>\n cropYield.find(({ term }) => term.id === get(cycle, 'site.country.@id', worldRegion['@id'])) || {};\n\nexport const extendCycle = ({ crop, cropYield }: ILookups) => (cycle: ICycleJSONLD): ICycle => {\n const product = primaryProduct(cycle);\n const grouping = cropGrouping(crop, product!);\n const countryData = cropYieldCountry(cropYield, cycle)[grouping];\n const countryValue = extractGroupedDataClosesDate(countryData, +(cycle.endDate || ''));\n const productValue = propertyValue(product?.value!);\n\n return {\n cycle,\n name: product?.term?.name,\n startDate: cycle.startDate,\n endDate: cycle.endDate,\n country: cycle.site?.country?.name || worldRegion.name,\n observations: propertyValue(product?.observations!) || 0,\n yield: productValue,\n faoYield: countryValue || undefined,\n diff: delta(productValue, countryValue)\n };\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<IModel[]>(1);\n\n private lookupsLoading = false;\n private lookupsLoaded = false;\n private _lookups = new ReplaySubject<ILookups>(1);\n\n constructor(\n private http: HttpClient,\n private commonService: HeCommonService,\n private nodeService: HeNodeService\n ) {\n this.init();\n }\n\n private async init() {\n await this.loadModels().toPromise();\n }\n\n private get gitUrl() {\n return `${gitHome}/hestia-aggregation-engine/-/blob/${this.commonService.gitBranch}`;\n }\n\n private get rawUrl() {\n return `${gitRawBaseUrl}/hestia-aggregation-engine/-/raw/${this.commonService.gitBranch}`;\n }\n\n private loadModels() {\n this.modelsLoading = true;\n return this.http.get<IModelLinks>(`${this.rawUrl}/model-links.json`).pipe(\n catchError(() => of({ links: [] } as IModelLinks)),\n map(({ links }) => {\n this._models.next(links.map(({ path: modelPath, docPath, ...link }) => ({\n ...link,\n path: `${this.gitUrl}/${modelPath}`,\n docPath: `${this.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<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 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 { 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 } from '../common/utils';\nimport { HeCommonService } from '../common/common.service';\n\nexport const HE_ORCHESTRATOR_BASE_URL = new InjectionToken<string>('HE_ORCHESTRATOR_BASE_URL');\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 private http: HttpClient,\n private commonService: HeCommonService\n ) {\n this.init();\n }\n\n private async init() {\n await this.loadModels().toPromise();\n }\n\n private get gitUrl() {\n return `${gitHome}/hestia-engine-models/-/blob/${this.commonService.gitBranch}`;\n }\n\n private get rawUrl() {\n return `${gitRawBaseUrl}/hestia-engine-models/-/raw/${this.commonService.gitBranch}`;\n }\n\n private loadModels() {\n this.modelsLoading = true;\n return this.http.get<IModelLinks>(`${this.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: `${this.gitUrl}/${path}`,\n docPath: `${this.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>(`${HE_ORCHESTRATOR_BASE_URL}/${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 i18n=\"@@confirm\">Confirm</span>\n </button>\n <button class=\"button\" (click)=\"closed.next(value)\">\n <span i18n=\"@@close\">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 i18n=\"@@clear\">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 i18n=\"@@cancel\">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 i18n=\"@@confirm\">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>&nbsp;</span>\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 ToastService {\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 { ToastService, 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: ToastService\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\">&times;</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","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 { 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';\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","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 { 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","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';\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 { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport BulmaTagsInput from '@hestia-earth/bulma-tagsinput';\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 = null;\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 { HeFontawesomeModule } from '../fontawesome/fontawesome.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 { SocialTagsComponent } from './social-tags/social-tags.component';\nimport { ToastComponent } from './toast/toast.component';\nimport { UnitConverterComponent } from './unit-converter/unit-converter.component';\nimport { BindOnceDirective } from './bind-once.directive';\nimport { ClickOutsideDirective } from './click-outside.directive';\nimport { DefaultPipe } from './default.pipe';\nimport { EllipsisPipe } from './ellipsis.pipe';\nimport { GetPipe } from './get.pipe';\nimport { KeyToLabelPipe } from './key-to-label.pipe';\nimport { KeysPipe } from './keys.pipe';\nimport { PluralizePipe } from './pluralize.pipe';\nimport { PrecisionPipe } from './precision.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 ToastComponent,\n ClickOutsideDirective,\n KeysPipe,\n PrecisionPipe,\n SocialTagsComponent,\n DefaultPipe,\n SkeletonTextComponent,\n PluralizePipe,\n KeyToLabelPipe,\n BindOnceDirective,\n GetPipe,\n EllipsisPipe\n];\n\n@NgModule({\n declarations: components,\n exports: [\n NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,\n GoogleMapsModule,\n HeFontawesomeModule,\n ...components\n ],\n imports: [\n CommonModule, FormsModule, RouterModule,\n NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,\n GoogleMapsModule,\n HeFontawesomeModule\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 private http: HttpClient,\n private 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 { 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 private http: HttpClient,\n private 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 i18n=\"@@bibliographies.search.empty\" [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 i18n=\"@@confirm\">Confirm</span>\n </button>\n <button class=\"button\" (click)=\"cancel()\">\n <span i18n=\"@@close\">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","/* 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 private 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 i18n=\"@@files.export.notice-1\">After Download, you can edit and</span>\n <a class=\"px-1\" routerLink=\"../\">upload the CSV file</a>\n <span i18n=\"@@files.export.notice-2\">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\" i18n=\"@@files.export.confirm.@type\">@type</span>\n </th>\n <th>\n <span class=\"has-text-white\" i18n=\"@@files.export.confirm.@id\">@id</span>\n </th>\n <th>\n <span class=\"has-text-white\" i18n=\"@@files.export.confirm.name\">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 i18n=\"@@files.export.confirm\">Download CSV</span>\n </a>\n <button class=\"button\" (click)=\"closed.next(true)\">\n <span i18n=\"@@cancel\">Cancel</span>\n </button>\n </footer>\n </div>\n</div>\n","export enum DisplayType {\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 { DisplayType } 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 = DisplayType.diffs;\n\n @Output()\n private diffsLoaded = new EventEmitter<string>();\n\n public DisplayType = DisplayType;\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=\"DisplayType.diffs\" [innerHTML]=\"diffHtml\"></div>\n\n <div *ngSwitchCase=\"DisplayType.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","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","/* 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: string) => {\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: string, 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 } : null;\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) : null;\n return suggestion !== null ? suggestion : (\n schema && schema.type as genericType in typeToSuggestion ?\n typeToSuggestion[schema.type as genericType]!(fullKey, parentSchema, schema) :\n null\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 { 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\" i18n=\"@@add\">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\" i18n=\"@@add\">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 i18n=\"@@files.form.newProperty\">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\" i18n=\"@@add\">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 i18n=\"@@edit\">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 i18n=\"@@resolved\">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\" i18n=\"@@add\">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 { ToastService } 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: ToastService\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 private 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","get","propertyValue","i1","i2.BindOnceDirective","i3.PrecisionPipe","reduceValues","i1.BlankNodeValueDeltaComponent","i2.HeAuthService","i3.HeCommonService","i2.HeCommonService","i3.HeNodeService","i1.HeAggregationEngineService","i2.HeEngineService","i3","i4.BindOnceDirective","i5","i2","i1.BlankNodeStateComponent","i3.BindOnceDirective","i4.PrecisionPipe","i1.PopoverComponent","i1.ToastService","i1.ClipboardComponent","i4.KeysPipe","components","i2.HeMendeleyService","i3.HeSearchService","i4","i6","toCsv","i1.HeSchemaService","i4.ClickOutsideDirective","i7.KeysPipe","i2.NodeCsvSelectHeadersComponent","i6.BindOnceDirective","i1.HeNodeService","i2.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","i3.BlankNodeStateComponent","i4.BlankNodeStateNoticeComponent","i5.SitesMeasurementsLogsComponent","i6.NodeCsvExportConfirmComponent","i7.NodeValueDetailsComponent","i9","i10.EllipsisPipe","i11.DefaultPipe","i12.PrecisionPipe","uuidv4","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","i4.ToastService","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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"}