@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.umd.js","sources":["../../src/auth/auth.service.ts","../../node_modules/tslib/tslib.es6.js","../../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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\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":["i0","Injectable","farClone","farCircle","farIdBadge","faAngleDoubleLeft","faAngleDoubleRight","faAngleDown","faAngleLeft","faAngleRight","faBookOpen","faBuilding","faCalculator","faChartBar","faCheck","faClipboard","faClipboardList","faClone","faComments","faDownload","faDrawPolygon","faEdit","faExclamationTriangle","faExternalLinkAlt","faFilter","faList","faLongArrowAltDown","faLongArrowAltUp","faLongArrowAltLeft","faLongArrowAltRight","faMap","faMapMarked","faMapMarkedAlt","faPlus","faPlusCircle","faSearch","faSeedling","faSpellCheck","faSpinner","faTimes","faUser","i1","CommonModule","FontAwesomeModule","NgModule","get","propertyValue","EmissionMethodTier","NodeType","_a","getColor","DeltaDisplayType","_b","fileToExt","Directive","Input","isUndefined","isNumber","toPrecision","Pipe","isEmpty","i2.BindOnceDirective","i3.PrecisionPipe","Component","reduceValues","unique","i1.BlankNodeValueDeltaComponent","i3","i4","TermTermType","nestedSearchableKeys","_c","_d","InjectionToken","Inject","isExpandable","catchError","of","nodeTypeToParam","i2.HeAuthService","i3.HeCommonService","ReplaySubject","map","take","csvtojson","forkJoin","from","i2.HeCommonService","i3.HeNodeService","mergeMap","i1.HeAggregationEngineService","i2.HeEngineService","i4.BindOnceDirective","i5","DataState","i2","ViewChild","i1.BlankNodeStateComponent","i3.BindOnceDirective","i4.PrecisionPipe","EventEmitter","GoogleMap","Output","HostListener","i1.PopoverComponent","HostBinding","i1.ToastService","isBoolean","ConvertUnits","converters","convertValue","i1.ClipboardComponent","i4.KeysPipe","pluralize","BulmaTagsInput","components","FormsModule","RouterModule","NgbTypeaheadModule","NgbTooltipModule","NgbPopoverModule","GoogleMapsModule","SchemaType","Validators","debounceTime","distinctUntilChanged","tap","switchMap","zip","i2.HeMendeleyService","i3.HeSearchService","i6","ReactiveFormsModule","Level","toCsv","json2csvAsync","isEqual","SCHEMA_VERSION","reduce","headersFromCsv","sortKeysByType","isCSVIncluded","isDefaultCSVSelected","moveItemInArray","i1.HeSchemaService","i4.ClickOutsideDirective","i7.KeysPipe","SupportedExtensions","i2.NodeCsvSelectHeadersComponent","i6.BindOnceDirective","create","formatters","i1.HeNodeService","i2.HeNodeService","i3.ClipboardComponent","i7","i8.KeysPipe","orderBy","filter","distinct","toArray","i1.HeSearchService","i4.NodeLinkComponent","i5.BlankNodeValueDeltaComponent","i8","i9.TimesPipe","i10.DefaultPipe","i11.PrecisionPipe","i12.KeyToLabelPipe","i13.PluralizePipe","i14.KeysPipe","i1.LinkKeyValueComponent","DragDropModule","CycleFunctionalUnit","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","Chart","i3.NodeLogsModelsComponent","i7.CyclesEmissionsChartComponent","i8.CyclesEmissionsLogsComponent","i9.NodeCsvExportConfirmComponent","i10.NodeValueDetailsComponent","i12","i13.EllipsisPipe","i14.DefaultPipe","i15.PrecisionPipe","MarkerClusterer","i3.BlankNodeStateComponent","i4.BlankNodeStateNoticeComponent","i5.SitesMeasurementsLogsComponent","i6.NodeCsvExportConfirmComponent","i7.NodeValueDetailsComponent","i9","i10.EllipsisPipe","i11.DefaultPipe","i12.PrecisionPipe","SiteSiteType","schema","uuidv4","isTypeValid","isTypeNode","typeToSchemaType","diffInDays","moment","i2.HeUsersService","i4.NodeIconComponent","i5.MapsDrawingConfirmComponent","i6.BibliographiesSearchConfirmComponent","i7.SchemaVersionLinkComponent","i8.PopoverConfirmComponent","i9.SitesMapsComponent","i11.UnitConverterComponent","i13.BindOnceDirective","i14","i15.TagsInputDirective","i16.PluralizePipe","mergeAll","groupBy","ChartDataLabels","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","toJson"],"mappings":"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"}