@kalisio/kdk 2.6.4 → 2.6.6

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 (259) hide show
  1. package/core/api/hooks/hooks.model.js +1 -1
  2. package/core/client/directives/v-drop-file.js +6 -6
  3. package/core/client/utils/utils.shapes.js +8 -1
  4. package/package.json +1 -1
  5. package/test/api/core/test-log-2026-03-10.log +60 -0
  6. package/test/api/map/test-log-2026-03-10.log +56 -0
  7. package/.vscode/settings.json +0 -5
  8. package/coverage/base.css +0 -224
  9. package/coverage/block-navigation.js +0 -87
  10. package/coverage/core/api/application.js.html +0 -1870
  11. package/coverage/core/api/authentication.js.html +0 -742
  12. package/coverage/core/api/db.js.html +0 -778
  13. package/coverage/core/api/hooks/hooks.authentication.js.html +0 -313
  14. package/coverage/core/api/hooks/hooks.authorisations.js.html +0 -1243
  15. package/coverage/core/api/hooks/hooks.groups.js.html +0 -229
  16. package/coverage/core/api/hooks/hooks.logger.js.html +0 -163
  17. package/coverage/core/api/hooks/hooks.model.js.html +0 -955
  18. package/coverage/core/api/hooks/hooks.organisations.js.html +0 -541
  19. package/coverage/core/api/hooks/hooks.push.js.html +0 -253
  20. package/coverage/core/api/hooks/hooks.query.js.html +0 -862
  21. package/coverage/core/api/hooks/hooks.schemas.js.html +0 -298
  22. package/coverage/core/api/hooks/hooks.service.js.html +0 -319
  23. package/coverage/core/api/hooks/hooks.storage.js.html +0 -193
  24. package/coverage/core/api/hooks/hooks.users.js.html +0 -868
  25. package/coverage/core/api/hooks/index.html +0 -296
  26. package/coverage/core/api/hooks/index.js.html +0 -121
  27. package/coverage/core/api/index.html +0 -191
  28. package/coverage/core/api/index.js.html +0 -148
  29. package/coverage/core/api/marshall.js.html +0 -448
  30. package/coverage/core/api/models/groups.model.mongodb.js.html +0 -109
  31. package/coverage/core/api/models/index.html +0 -176
  32. package/coverage/core/api/models/messages.model.mongodb.js.html +0 -109
  33. package/coverage/core/api/models/organisations.model.mongodb.js.html +0 -94
  34. package/coverage/core/api/models/tags.model.mongodb.js.html +0 -115
  35. package/coverage/core/api/models/users.model.mongodb.js.html +0 -115
  36. package/coverage/core/api/services/account/account.hooks.js.html +0 -208
  37. package/coverage/core/api/services/account/account.service.js.html +0 -436
  38. package/coverage/core/api/services/account/index.html +0 -131
  39. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
  40. package/coverage/core/api/services/authorisations/authorisations.service.js.html +0 -529
  41. package/coverage/core/api/services/authorisations/index.html +0 -131
  42. package/coverage/core/api/services/databases/databases.hooks.js.html +0 -193
  43. package/coverage/core/api/services/databases/databases.service.js.html +0 -100
  44. package/coverage/core/api/services/databases/index.html +0 -131
  45. package/coverage/core/api/services/groups/groups.hooks.js.html +0 -178
  46. package/coverage/core/api/services/groups/index.html +0 -116
  47. package/coverage/core/api/services/import-export/import-export.hooks.js.html +0 -184
  48. package/coverage/core/api/services/import-export/import-export.service.js.html +0 -118
  49. package/coverage/core/api/services/import-export/index.html +0 -131
  50. package/coverage/core/api/services/index.html +0 -116
  51. package/coverage/core/api/services/index.js.html +0 -556
  52. package/coverage/core/api/services/mailer/index.html +0 -131
  53. package/coverage/core/api/services/mailer/mailer.hooks.js.html +0 -190
  54. package/coverage/core/api/services/mailer/mailer.service.js.html +0 -118
  55. package/coverage/core/api/services/messages/index.html +0 -116
  56. package/coverage/core/api/services/messages/messages.hooks.js.html +0 -184
  57. package/coverage/core/api/services/organisations/index.html +0 -131
  58. package/coverage/core/api/services/organisations/organisations.hooks.js.html +0 -178
  59. package/coverage/core/api/services/organisations/organisations.service.js.html +0 -343
  60. package/coverage/core/api/services/push/index.html +0 -131
  61. package/coverage/core/api/services/push/push.hooks.js.html +0 -190
  62. package/coverage/core/api/services/push/push.service.js.html +0 -121
  63. package/coverage/core/api/services/storage/index.html +0 -131
  64. package/coverage/core/api/services/storage/storage.hooks.js.html +0 -190
  65. package/coverage/core/api/services/storage/storage.service.js.html +0 -172
  66. package/coverage/core/api/services/tags/index.html +0 -116
  67. package/coverage/core/api/services/tags/tags.hooks.js.html +0 -178
  68. package/coverage/core/api/services/users/index.html +0 -116
  69. package/coverage/core/api/services/users/users.hooks.js.html +0 -307
  70. package/coverage/core/api/utils.js.html +0 -118
  71. package/coverage/core/common/errors.js.html +0 -88
  72. package/coverage/core/common/index.html +0 -176
  73. package/coverage/core/common/index.js.html +0 -115
  74. package/coverage/core/common/permissions.js.html +0 -1048
  75. package/coverage/core/common/schema.js.html +0 -190
  76. package/coverage/core/common/utils.js.html +0 -220
  77. package/coverage/favicon.png +0 -0
  78. package/coverage/index.html +0 -506
  79. package/coverage/lcov-report/base.css +0 -224
  80. package/coverage/lcov-report/block-navigation.js +0 -87
  81. package/coverage/lcov-report/core/api/application.js.html +0 -1870
  82. package/coverage/lcov-report/core/api/authentication.js.html +0 -742
  83. package/coverage/lcov-report/core/api/db.js.html +0 -778
  84. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +0 -313
  85. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +0 -1243
  86. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +0 -229
  87. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +0 -163
  88. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +0 -955
  89. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +0 -541
  90. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +0 -253
  91. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +0 -862
  92. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +0 -298
  93. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +0 -319
  94. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +0 -193
  95. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +0 -868
  96. package/coverage/lcov-report/core/api/hooks/index.html +0 -296
  97. package/coverage/lcov-report/core/api/hooks/index.js.html +0 -121
  98. package/coverage/lcov-report/core/api/index.html +0 -191
  99. package/coverage/lcov-report/core/api/index.js.html +0 -148
  100. package/coverage/lcov-report/core/api/marshall.js.html +0 -448
  101. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +0 -109
  102. package/coverage/lcov-report/core/api/models/index.html +0 -176
  103. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +0 -109
  104. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +0 -94
  105. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +0 -115
  106. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +0 -115
  107. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +0 -208
  108. package/coverage/lcov-report/core/api/services/account/account.service.js.html +0 -436
  109. package/coverage/lcov-report/core/api/services/account/index.html +0 -131
  110. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
  111. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +0 -529
  112. package/coverage/lcov-report/core/api/services/authorisations/index.html +0 -131
  113. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +0 -193
  114. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +0 -100
  115. package/coverage/lcov-report/core/api/services/databases/index.html +0 -131
  116. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +0 -178
  117. package/coverage/lcov-report/core/api/services/groups/index.html +0 -116
  118. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +0 -184
  119. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +0 -118
  120. package/coverage/lcov-report/core/api/services/import-export/index.html +0 -131
  121. package/coverage/lcov-report/core/api/services/index.html +0 -116
  122. package/coverage/lcov-report/core/api/services/index.js.html +0 -556
  123. package/coverage/lcov-report/core/api/services/mailer/index.html +0 -131
  124. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +0 -190
  125. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +0 -118
  126. package/coverage/lcov-report/core/api/services/messages/index.html +0 -116
  127. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +0 -184
  128. package/coverage/lcov-report/core/api/services/organisations/index.html +0 -131
  129. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +0 -178
  130. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +0 -343
  131. package/coverage/lcov-report/core/api/services/push/index.html +0 -131
  132. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +0 -190
  133. package/coverage/lcov-report/core/api/services/push/push.service.js.html +0 -121
  134. package/coverage/lcov-report/core/api/services/storage/index.html +0 -131
  135. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +0 -190
  136. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +0 -172
  137. package/coverage/lcov-report/core/api/services/tags/index.html +0 -116
  138. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +0 -178
  139. package/coverage/lcov-report/core/api/services/users/index.html +0 -116
  140. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +0 -307
  141. package/coverage/lcov-report/core/api/utils.js.html +0 -118
  142. package/coverage/lcov-report/core/common/errors.js.html +0 -88
  143. package/coverage/lcov-report/core/common/index.html +0 -176
  144. package/coverage/lcov-report/core/common/index.js.html +0 -115
  145. package/coverage/lcov-report/core/common/permissions.js.html +0 -1048
  146. package/coverage/lcov-report/core/common/schema.js.html +0 -190
  147. package/coverage/lcov-report/core/common/utils.js.html +0 -220
  148. package/coverage/lcov-report/favicon.png +0 -0
  149. package/coverage/lcov-report/index.html +0 -506
  150. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +0 -457
  151. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +0 -397
  152. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +0 -1309
  153. package/coverage/lcov-report/map/api/hooks/index.html +0 -161
  154. package/coverage/lcov-report/map/api/hooks/index.js.html +0 -94
  155. package/coverage/lcov-report/map/api/index.html +0 -131
  156. package/coverage/lcov-report/map/api/index.js.html +0 -139
  157. package/coverage/lcov-report/map/api/marshall.js.html +0 -178
  158. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +0 -106
  159. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +0 -127
  160. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +0 -196
  161. package/coverage/lcov-report/map/api/models/index.html +0 -161
  162. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +0 -109
  163. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +0 -274
  164. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +0 -610
  165. package/coverage/lcov-report/map/api/services/alerts/index.html +0 -131
  166. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +0 -310
  167. package/coverage/lcov-report/map/api/services/catalog/index.html +0 -116
  168. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +0 -1510
  169. package/coverage/lcov-report/map/api/services/daptiles/index.html +0 -116
  170. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +0 -241
  171. package/coverage/lcov-report/map/api/services/features/features.service.js.html +0 -241
  172. package/coverage/lcov-report/map/api/services/features/index.html +0 -131
  173. package/coverage/lcov-report/map/api/services/index.html +0 -116
  174. package/coverage/lcov-report/map/api/services/index.js.html +0 -817
  175. package/coverage/lcov-report/map/api/services/projects/index.html +0 -116
  176. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +0 -439
  177. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +0 -466
  178. package/coverage/lcov-report/map/common/errors.js.html +0 -94
  179. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +0 -541
  180. package/coverage/lcov-report/map/common/grid.js.html +0 -1612
  181. package/coverage/lcov-report/map/common/index.html +0 -371
  182. package/coverage/lcov-report/map/common/index.js.html +0 -172
  183. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +0 -556
  184. package/coverage/lcov-report/map/common/moment-utils.js.html +0 -157
  185. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +0 -868
  186. package/coverage/lcov-report/map/common/opendap-utils.js.html +0 -826
  187. package/coverage/lcov-report/map/common/permissions.js.html +0 -124
  188. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +0 -418
  189. package/coverage/lcov-report/map/common/tms-utils.js.html +0 -274
  190. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +0 -364
  191. package/coverage/lcov-report/map/common/wcs-utils.js.html +0 -586
  192. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +0 -1033
  193. package/coverage/lcov-report/map/common/wfs-utils.js.html +0 -574
  194. package/coverage/lcov-report/map/common/wms-utils.js.html +0 -451
  195. package/coverage/lcov-report/map/common/wmts-utils.js.html +0 -547
  196. package/coverage/lcov-report/prettify.css +0 -1
  197. package/coverage/lcov-report/prettify.js +0 -2
  198. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  199. package/coverage/lcov-report/sorter.js +0 -196
  200. package/coverage/lcov.info +0 -10749
  201. package/coverage/map/api/hooks/hooks.catalog.js.html +0 -457
  202. package/coverage/map/api/hooks/hooks.features.js.html +0 -397
  203. package/coverage/map/api/hooks/hooks.query.js.html +0 -1309
  204. package/coverage/map/api/hooks/index.html +0 -161
  205. package/coverage/map/api/hooks/index.js.html +0 -94
  206. package/coverage/map/api/index.html +0 -131
  207. package/coverage/map/api/index.js.html +0 -139
  208. package/coverage/map/api/marshall.js.html +0 -178
  209. package/coverage/map/api/models/alerts.model.mongodb.js.html +0 -106
  210. package/coverage/map/api/models/catalog.model.mongodb.js.html +0 -127
  211. package/coverage/map/api/models/features.model.mongodb.js.html +0 -196
  212. package/coverage/map/api/models/index.html +0 -161
  213. package/coverage/map/api/models/projects.model.mongodb.js.html +0 -109
  214. package/coverage/map/api/services/alerts/alerts.hooks.js.html +0 -274
  215. package/coverage/map/api/services/alerts/alerts.service.js.html +0 -610
  216. package/coverage/map/api/services/alerts/index.html +0 -131
  217. package/coverage/map/api/services/catalog/catalog.hooks.js.html +0 -310
  218. package/coverage/map/api/services/catalog/index.html +0 -116
  219. package/coverage/map/api/services/daptiles/daptiles.service.js.html +0 -1510
  220. package/coverage/map/api/services/daptiles/index.html +0 -116
  221. package/coverage/map/api/services/features/features.hooks.js.html +0 -241
  222. package/coverage/map/api/services/features/features.service.js.html +0 -241
  223. package/coverage/map/api/services/features/index.html +0 -131
  224. package/coverage/map/api/services/index.html +0 -116
  225. package/coverage/map/api/services/index.js.html +0 -817
  226. package/coverage/map/api/services/projects/index.html +0 -116
  227. package/coverage/map/api/services/projects/projects.hooks.js.html +0 -439
  228. package/coverage/map/common/dynamic-grid-source.js.html +0 -466
  229. package/coverage/map/common/errors.js.html +0 -94
  230. package/coverage/map/common/geotiff-grid-source.js.html +0 -541
  231. package/coverage/map/common/grid.js.html +0 -1612
  232. package/coverage/map/common/index.html +0 -371
  233. package/coverage/map/common/index.js.html +0 -172
  234. package/coverage/map/common/meteo-model-grid-source.js.html +0 -556
  235. package/coverage/map/common/moment-utils.js.html +0 -157
  236. package/coverage/map/common/opendap-grid-source.js.html +0 -868
  237. package/coverage/map/common/opendap-utils.js.html +0 -826
  238. package/coverage/map/common/permissions.js.html +0 -124
  239. package/coverage/map/common/time-based-grid-source.js.html +0 -418
  240. package/coverage/map/common/tms-utils.js.html +0 -274
  241. package/coverage/map/common/wcs-grid-source.js.html +0 -364
  242. package/coverage/map/common/wcs-utils.js.html +0 -586
  243. package/coverage/map/common/weacast-grid-source.js.html +0 -1033
  244. package/coverage/map/common/wfs-utils.js.html +0 -574
  245. package/coverage/map/common/wms-utils.js.html +0 -451
  246. package/coverage/map/common/wmts-utils.js.html +0 -547
  247. package/coverage/prettify.css +0 -1
  248. package/coverage/prettify.js +0 -2
  249. package/coverage/sort-arrow-sprite.png +0 -0
  250. package/coverage/sorter.js +0 -196
  251. package/coverage/tmp/coverage-151166-1723543324307-0.json +0 -1
  252. package/coverage/tmp/coverage-151178-1723543324283-0.json +0 -1
  253. package/coverage/tmp/coverage-151189-1723543324271-0.json +0 -1
  254. package/coverage/tmp/coverage-151201-1723543324248-0.json +0 -1
  255. package/coverage/tmp/coverage-151208-1723543324227-0.json +0 -1
  256. package/test/api/core/test-log-2024-04-22.log +0 -84
  257. package/test/api/core/test-log-2024-04-23.log +0 -23
  258. package/test/api/core/test-log-2024-08-13.log +0 -3
  259. package/test/api/map/test-log-2025-03-08.log +0 -0
@@ -50,7 +50,7 @@ export function serialize (rules, options = {}) {
50
50
  // Apply the rules for each item
51
51
  items.forEach(item => {
52
52
  rules.forEach(rule => {
53
- let source = _.get(item, rule.source)
53
+ let source = _.get(item, rule.source, rule.default)
54
54
  if (!_.isNil(source)) {
55
55
  if (rule.filter) source = source.filter(sift(rule.filter))
56
56
  _.set(item, rule.target, source)
@@ -72,9 +72,9 @@ export const vDropFile = {
72
72
  message = i18n.tc('errors.MAX_FILES_REACHED', el.__state.maxFiles)
73
73
  } else {
74
74
  for (const item of items) {
75
- if (item.kind === 'file' && _.includes(el.__state.acceptedTypes, item.type)) acceptedItems.push(item)
75
+ if (item.kind === 'file' && (!item.type || _.includes(el.__state.acceptedTypes, item.type))) acceptedItems.push(item)
76
76
  else rejectedItems.push(item)
77
- }
77
+ }
78
78
  if (_.isEmpty(acceptedItems)) {
79
79
  color = colors.getPaletteColor('negative')
80
80
  message = i18n.tc('directives.ALL_FILES_ARE_UNSUPPORTED', rejectedItems.length)
@@ -96,7 +96,7 @@ export const vDropFile = {
96
96
  overlayBox.style.borderColor = color
97
97
  overlayBox.style.color = 'white'
98
98
  overlayBox.style.textShadow = '-2px -2px 0 black, 2px -2px 0 black, -2px 2px 0 black, 2px 2px 0 black'
99
- overlayBox.style.padding = '20px;'
99
+ overlayBox.style.padding = '20px'
100
100
  // show the overlay
101
101
  dragCounter++
102
102
  showOverlay()
@@ -115,7 +115,7 @@ export const vDropFile = {
115
115
  hideOverlay()
116
116
  if (!canDrop) return
117
117
  const files = Array.from(e.dataTransfer.files)
118
- const acceptedFiles = Reader.filter(files)
118
+ const acceptedFiles = Reader.filter(files)
119
119
  if (el.__state.maxTotalSize && _.size(acceptedFiles) > 1) {
120
120
  let totalSize = _.reduce(acceptedFiles, (size, file) => {
121
121
  size += file.files[0].size
@@ -138,7 +138,7 @@ export const vDropFile = {
138
138
  await el.__state.dropCallback(content)
139
139
  }
140
140
  }
141
-
141
+
142
142
  el.__handlers = { onDragEnter, onDragOver, onDragLeave, onDrop }
143
143
  el.addEventListener('dragenter', onDragEnter)
144
144
  el.addEventListener('dragover', onDragOver)
@@ -154,7 +154,7 @@ export const vDropFile = {
154
154
  acceptedTypes: _.get(binding.value, 'mimeTypes'),
155
155
  maxFiles: _.get(binding.value, 'maxFiles'),
156
156
  maxFileSize: _.get(binding.value, 'maxFileSize'),
157
- maxTotalSize: _.get(binding.value, 'maxTotalSize'),
157
+ maxTotalSize: _.get(binding.value, 'maxTotalSize'),
158
158
  fontSize: _.get(binding.value, 'fontSize', '2rem'),
159
159
  enabled: _.get(binding.value, 'enabled', true)
160
160
  }
@@ -220,7 +220,7 @@ export function createShape (options) {
220
220
  // Render icon
221
221
  let iconTag = ''
222
222
  if (options.icon) {
223
- if (!_.isNil(options.icon.classes) || !_.isNil(options.icon.url)) {
223
+ if (!_.isNil(options.icon.classes) || !_.isNil(options.icon.url) || !_.isNil(options.icon.symbol)) {
224
224
  if (!_.isEmpty(options.icon.classes) || !_.isEmpty(options.icon.url)) {
225
225
  let specificStyle = ''
226
226
  if (options.icon.url) {
@@ -242,6 +242,13 @@ export function createShape (options) {
242
242
  const rotation = options.icon.rotation || _.get(shape, 'icon.rotation', 0)
243
243
  iconTag += `style="position: absolute; top: 50%; left: 50%; transform: translate(${translation[0]},${translation[1]}) rotate(${rotation}deg); opacity: ${opacity}; ${specificStyle}"`
244
244
  iconTag += '/>'
245
+ } else {
246
+ let iconSize = options.icon.size ? getSize(options.icon.size) : size
247
+ const color = getHtmlColor(options.icon.color, defaultColor)
248
+ const opacity = options.icon.opacity || 1
249
+ const translation = options.icon.translation || _.get(shape, 'icon.translation', ['-50%', '-50%'])
250
+ const rotation = options.icon.rotation || _.get(shape, 'icon.rotation', 0)
251
+ iconTag = `<svg width=${iconSize.width} height=${iconSize.height} style="position: absolute; top: 50%; left: 50%; transform: translate(${translation[0]},${translation[1]}) rotate(${rotation}deg); opacity: ${opacity}" fill="${color}"><use href="${options.icon.symbol}"></svg>`
245
252
  }
246
253
  } else {
247
254
  logger.warn(`[KDK] icon must contain either the 'classes' property or the 'url' property`)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kalisio/kdk",
3
3
  "description": "Kalisio Development Kit",
4
- "version": "2.6.4",
4
+ "version": "2.6.6",
5
5
  "homepage": "https://github.com/kalisio/kdk",
6
6
  "type": "module",
7
7
  "keywords": [
@@ -0,0 +1,60 @@
1
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
2
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
3
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
4
+ {"level":"error","message":"error: api/messages - Method: create: You are not allowed to access service messages"}
5
+ {"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
6
+ {"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
7
+ {"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to change authorisation on resource"}
8
+ {"level":"error","message":"error: api/authorisations - Method: remove: You are not allowed to change authorisation on subject(s)"}
9
+ {"level":"info","message":"This is a log test"}
10
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
11
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
12
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
13
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
14
+ {"level":"error","message":"error: api/storage - Method: get: NoSuchKey"}
15
+ {"level":"error","message":"error: api/storage - Method: get: NoSuchKey"}
16
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
17
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
18
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
19
+ {"level":"error","message":"error: api/messages - Method: create: You are not allowed to access service messages"}
20
+ {"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
21
+ {"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
22
+ {"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to change authorisation on resource"}
23
+ {"level":"error","message":"error: api/authorisations - Method: remove: You are not allowed to change authorisation on subject(s)"}
24
+ {"level":"info","message":"This is a log test"}
25
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
26
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
27
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
28
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
29
+ {"level":"error","message":"error: api/storage - Method: get: NoSuchKey"}
30
+ {"level":"error","message":"error: api/storage - Method: get: NoSuchKey"}
31
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
32
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
33
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
34
+ {"level":"error","message":"error: api/messages - Method: create: You are not allowed to access service messages"}
35
+ {"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
36
+ {"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
37
+ {"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to change authorisation on resource"}
38
+ {"level":"error","message":"error: api/authorisations - Method: remove: You are not allowed to change authorisation on subject(s)"}
39
+ {"level":"info","message":"This is a log test"}
40
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
41
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
42
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
43
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
44
+ {"level":"error","message":"error: api/storage - Method: get: NoSuchKey"}
45
+ {"level":"error","message":"error: api/storage - Method: get: NoSuchKey"}
46
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
47
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
48
+ {"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
49
+ {"level":"error","message":"error: api/messages - Method: create: You are not allowed to access service messages"}
50
+ {"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
51
+ {"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
52
+ {"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to change authorisation on resource"}
53
+ {"level":"error","message":"error: api/authorisations - Method: remove: You are not allowed to change authorisation on subject(s)"}
54
+ {"level":"info","message":"This is a log test"}
55
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
56
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
57
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
58
+ {"level":"error","message":"error: api/service - Method: create: validation failed"}
59
+ {"level":"error","message":"error: api/storage - Method: get: NoSuchKey"}
60
+ {"level":"error","message":"error: api/storage - Method: get: NoSuchKey"}
@@ -0,0 +1,56 @@
1
+ {"level":"info","message":"Logger configured"}
2
+ {"level":"info","message":"Initializing weacast-gfs plugin"}
3
+ {"level":"info","message":"Initializing gfs-world forecast"}
4
+ {"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
5
+ {"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
6
+ {"level":"error","message":"Could not update gfs-world/v-wind forecast at 2026-03-10T06:00:00Z for run 2026-03-10T00:00:00Z"}
7
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/v-wind/2026-03-10_00-00-00_2026-03-10_06-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
8
+ {"level":"error","message":"Could not update gfs-world/u-wind forecast at 2026-03-10T06:00:00Z for run 2026-03-10T00:00:00Z"}
9
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/u-wind/2026-03-10_00-00-00_2026-03-10_06-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
10
+ {"level":"error","message":"Could not update gfs-world/v-wind forecast at 2026-03-10T06:00:00Z for run 2026-03-09T18:00:00Z"}
11
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/v-wind/2026-03-09_18-00-00_2026-03-10_06-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
12
+ {"level":"error","message":"Could not update gfs-world/u-wind forecast at 2026-03-10T06:00:00Z for run 2026-03-09T18:00:00Z"}
13
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/u-wind/2026-03-09_18-00-00_2026-03-10_06-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
14
+ {"level":"error","message":"Could not update gfs-world/v-wind forecast at 2026-03-10T06:00:00Z for run 2026-03-09T12:00:00Z"}
15
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/v-wind/2026-03-09_12-00-00_2026-03-10_06-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
16
+ {"level":"error","message":"Could not update gfs-world/u-wind forecast at 2026-03-10T06:00:00Z for run 2026-03-09T12:00:00Z"}
17
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/u-wind/2026-03-09_12-00-00_2026-03-10_06-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
18
+ {"level":"error","message":"Could not update gfs-world/v-wind forecast at 2026-03-10T09:00:00Z for run 2026-03-10T00:00:00Z"}
19
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/v-wind/2026-03-10_00-00-00_2026-03-10_09-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
20
+ {"level":"error","message":"Could not update gfs-world/u-wind forecast at 2026-03-10T09:00:00Z for run 2026-03-10T00:00:00Z"}
21
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/u-wind/2026-03-10_00-00-00_2026-03-10_09-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
22
+ {"level":"error","message":"Could not update gfs-world/v-wind forecast at 2026-03-10T09:00:00Z for run 2026-03-09T18:00:00Z"}
23
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/v-wind/2026-03-09_18-00-00_2026-03-10_09-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
24
+ {"level":"error","message":"Could not update gfs-world/v-wind forecast at 2026-03-10T09:00:00Z for run 2026-03-09T12:00:00Z"}
25
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/v-wind/2026-03-09_12-00-00_2026-03-10_09-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
26
+ {"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
27
+ {"level":"error","message":"Could not update gfs-world/u-wind forecast at 2026-03-10T09:00:00Z for run 2026-03-09T18:00:00Z"}
28
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/u-wind/2026-03-09_18-00-00_2026-03-10_09-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
29
+ {"level":"error","message":"Could not update gfs-world/u-wind forecast at 2026-03-10T09:00:00Z for run 2026-03-09T12:00:00Z"}
30
+ {"level":"error","message":"Command failed: /home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json --data /home/robin/Taff/kalisio/kdk/test/api/map/forecast-data/gfs-world/u-wind/2026-03-09_12-00-00_2026-03-10_09-00-00.grib\n/home/robin/Taff/kalisio/kdk/node_modules/@weacast/grib2json/bin/grib2json: 3: /bin/java: not found\n"}
31
+ {"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
32
+ {"level":"error","message":"Cannot check alert 69afde354d314fa3bd9e24a8 as no data is available for gfs-world"}
33
+ {"level":"error","message":"Cannot check alert 69afde354d314fa3bd9e24a8 as no data is available for gfs-world"}
34
+ {"level":"error","message":"Cannot check alert 69afde354d314fa3bd9e24a8 as no data is available for gfs-world"}
35
+ {"level":"error","message":"Cannot check alert 69afde444d314fa3bd9e24a9 as no data is available for gfs-world"}
36
+ {"level":"error","message":"Cannot check alert 69afde444d314fa3bd9e24a9 as no data is available for gfs-world"}
37
+ {"level":"error","message":"Cannot check alert 69afde444d314fa3bd9e24a9 as no data is available for gfs-world"}
38
+ {"level":"error","message":"Cannot check alert 69afde534d314fa3bd9e24aa as no data is available for gfs-world"}
39
+ {"level":"error","message":"Cannot check alert 69afde724d314fa3bd9e29ed as no data is available for features service vigicrues-observations"}
40
+ {"level":"error","message":"error: api/catalog - Method: create: Object with name equals to dummy already exist for service catalog"}
41
+ {"level":"info","message":"Logger configured"}
42
+ {"level":"error","message":"error: api/vigicrues-observations - Method: find: You are not allowed to use $accumulator operator"}
43
+ {"level":"error","message":"error: api/vigicrues-observations - Method: find: You are not allowed to use $function operator"}
44
+ {"level":"info","message":"Logger configured"}
45
+ {"level":"info","message":"Initializing weacast-gfs plugin"}
46
+ {"level":"info","message":"Initializing gfs-world forecast"}
47
+ {"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
48
+ {"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
49
+ {"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
50
+ {"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
51
+ {"level":"error","message":"Cannot check alert 69afe195ae25fbb35c793f22 as no data is available for gfs-world"}
52
+ {"level":"error","message":"Cannot check alert 69afe1b3ae25fbb35c794465 as no data is available for features service vigicrues-observations"}
53
+ {"level":"error","message":"error: api/catalog - Method: create: Object with name equals to dummy already exist for service catalog"}
54
+ {"level":"info","message":"Logger configured"}
55
+ {"level":"error","message":"error: api/vigicrues-observations - Method: find: You are not allowed to use $accumulator operator"}
56
+ {"level":"error","message":"error: api/vigicrues-observations - Method: find: You are not allowed to use $function operator"}
@@ -1,5 +0,0 @@
1
- {
2
- "cSpell.words": [
3
- "reauthentication"
4
- ]
5
- }
package/coverage/base.css DELETED
@@ -1,224 +0,0 @@
1
- body, html {
2
- margin:0; padding: 0;
3
- height: 100%;
4
- }
5
- body {
6
- font-family: Helvetica Neue, Helvetica, Arial;
7
- font-size: 14px;
8
- color:#333;
9
- }
10
- .small { font-size: 12px; }
11
- *, *:after, *:before {
12
- -webkit-box-sizing:border-box;
13
- -moz-box-sizing:border-box;
14
- box-sizing:border-box;
15
- }
16
- h1 { font-size: 20px; margin: 0;}
17
- h2 { font-size: 14px; }
18
- pre {
19
- font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
20
- margin: 0;
21
- padding: 0;
22
- -moz-tab-size: 2;
23
- -o-tab-size: 2;
24
- tab-size: 2;
25
- }
26
- a { color:#0074D9; text-decoration:none; }
27
- a:hover { text-decoration:underline; }
28
- .strong { font-weight: bold; }
29
- .space-top1 { padding: 10px 0 0 0; }
30
- .pad2y { padding: 20px 0; }
31
- .pad1y { padding: 10px 0; }
32
- .pad2x { padding: 0 20px; }
33
- .pad2 { padding: 20px; }
34
- .pad1 { padding: 10px; }
35
- .space-left2 { padding-left:55px; }
36
- .space-right2 { padding-right:20px; }
37
- .center { text-align:center; }
38
- .clearfix { display:block; }
39
- .clearfix:after {
40
- content:'';
41
- display:block;
42
- height:0;
43
- clear:both;
44
- visibility:hidden;
45
- }
46
- .fl { float: left; }
47
- @media only screen and (max-width:640px) {
48
- .col3 { width:100%; max-width:100%; }
49
- .hide-mobile { display:none!important; }
50
- }
51
-
52
- .quiet {
53
- color: #7f7f7f;
54
- color: rgba(0,0,0,0.5);
55
- }
56
- .quiet a { opacity: 0.7; }
57
-
58
- .fraction {
59
- font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
60
- font-size: 10px;
61
- color: #555;
62
- background: #E8E8E8;
63
- padding: 4px 5px;
64
- border-radius: 3px;
65
- vertical-align: middle;
66
- }
67
-
68
- div.path a:link, div.path a:visited { color: #333; }
69
- table.coverage {
70
- border-collapse: collapse;
71
- margin: 10px 0 0 0;
72
- padding: 0;
73
- }
74
-
75
- table.coverage td {
76
- margin: 0;
77
- padding: 0;
78
- vertical-align: top;
79
- }
80
- table.coverage td.line-count {
81
- text-align: right;
82
- padding: 0 5px 0 20px;
83
- }
84
- table.coverage td.line-coverage {
85
- text-align: right;
86
- padding-right: 10px;
87
- min-width:20px;
88
- }
89
-
90
- table.coverage td span.cline-any {
91
- display: inline-block;
92
- padding: 0 5px;
93
- width: 100%;
94
- }
95
- .missing-if-branch {
96
- display: inline-block;
97
- margin-right: 5px;
98
- border-radius: 3px;
99
- position: relative;
100
- padding: 0 4px;
101
- background: #333;
102
- color: yellow;
103
- }
104
-
105
- .skip-if-branch {
106
- display: none;
107
- margin-right: 10px;
108
- position: relative;
109
- padding: 0 4px;
110
- background: #ccc;
111
- color: white;
112
- }
113
- .missing-if-branch .typ, .skip-if-branch .typ {
114
- color: inherit !important;
115
- }
116
- .coverage-summary {
117
- border-collapse: collapse;
118
- width: 100%;
119
- }
120
- .coverage-summary tr { border-bottom: 1px solid #bbb; }
121
- .keyline-all { border: 1px solid #ddd; }
122
- .coverage-summary td, .coverage-summary th { padding: 10px; }
123
- .coverage-summary tbody { border: 1px solid #bbb; }
124
- .coverage-summary td { border-right: 1px solid #bbb; }
125
- .coverage-summary td:last-child { border-right: none; }
126
- .coverage-summary th {
127
- text-align: left;
128
- font-weight: normal;
129
- white-space: nowrap;
130
- }
131
- .coverage-summary th.file { border-right: none !important; }
132
- .coverage-summary th.pct { }
133
- .coverage-summary th.pic,
134
- .coverage-summary th.abs,
135
- .coverage-summary td.pct,
136
- .coverage-summary td.abs { text-align: right; }
137
- .coverage-summary td.file { white-space: nowrap; }
138
- .coverage-summary td.pic { min-width: 120px !important; }
139
- .coverage-summary tfoot td { }
140
-
141
- .coverage-summary .sorter {
142
- height: 10px;
143
- width: 7px;
144
- display: inline-block;
145
- margin-left: 0.5em;
146
- background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
147
- }
148
- .coverage-summary .sorted .sorter {
149
- background-position: 0 -20px;
150
- }
151
- .coverage-summary .sorted-desc .sorter {
152
- background-position: 0 -10px;
153
- }
154
- .status-line { height: 10px; }
155
- /* yellow */
156
- .cbranch-no { background: yellow !important; color: #111; }
157
- /* dark red */
158
- .red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
159
- .low .chart { border:1px solid #C21F39 }
160
- .highlighted,
161
- .highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
162
- background: #C21F39 !important;
163
- }
164
- /* medium red */
165
- .cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
166
- /* light red */
167
- .low, .cline-no { background:#FCE1E5 }
168
- /* light green */
169
- .high, .cline-yes { background:rgb(230,245,208) }
170
- /* medium green */
171
- .cstat-yes { background:rgb(161,215,106) }
172
- /* dark green */
173
- .status-line.high, .high .cover-fill { background:rgb(77,146,33) }
174
- .high .chart { border:1px solid rgb(77,146,33) }
175
- /* dark yellow (gold) */
176
- .status-line.medium, .medium .cover-fill { background: #f9cd0b; }
177
- .medium .chart { border:1px solid #f9cd0b; }
178
- /* light yellow */
179
- .medium { background: #fff4c2; }
180
-
181
- .cstat-skip { background: #ddd; color: #111; }
182
- .fstat-skip { background: #ddd; color: #111 !important; }
183
- .cbranch-skip { background: #ddd !important; color: #111; }
184
-
185
- span.cline-neutral { background: #eaeaea; }
186
-
187
- .coverage-summary td.empty {
188
- opacity: .5;
189
- padding-top: 4px;
190
- padding-bottom: 4px;
191
- line-height: 1;
192
- color: #888;
193
- }
194
-
195
- .cover-fill, .cover-empty {
196
- display:inline-block;
197
- height: 12px;
198
- }
199
- .chart {
200
- line-height: 0;
201
- }
202
- .cover-empty {
203
- background: white;
204
- }
205
- .cover-full {
206
- border-right: none !important;
207
- }
208
- pre.prettyprint {
209
- border: none !important;
210
- padding: 0 !important;
211
- margin: 0 !important;
212
- }
213
- .com { color: #999 !important; }
214
- .ignore-none { color: #999; font-weight: normal; }
215
-
216
- .wrapper {
217
- min-height: 100%;
218
- height: auto !important;
219
- height: 100%;
220
- margin: 0 auto -48px;
221
- }
222
- .footer, .push {
223
- height: 48px;
224
- }
@@ -1,87 +0,0 @@
1
- /* eslint-disable */
2
- var jumpToCode = (function init() {
3
- // Classes of code we would like to highlight in the file view
4
- var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
5
-
6
- // Elements to highlight in the file listing view
7
- var fileListingElements = ['td.pct.low'];
8
-
9
- // We don't want to select elements that are direct descendants of another match
10
- var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
11
-
12
- // Selecter that finds elements on the page to which we can jump
13
- var selector =
14
- fileListingElements.join(', ') +
15
- ', ' +
16
- notSelector +
17
- missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
18
-
19
- // The NodeList of matching elements
20
- var missingCoverageElements = document.querySelectorAll(selector);
21
-
22
- var currentIndex;
23
-
24
- function toggleClass(index) {
25
- missingCoverageElements
26
- .item(currentIndex)
27
- .classList.remove('highlighted');
28
- missingCoverageElements.item(index).classList.add('highlighted');
29
- }
30
-
31
- function makeCurrent(index) {
32
- toggleClass(index);
33
- currentIndex = index;
34
- missingCoverageElements.item(index).scrollIntoView({
35
- behavior: 'smooth',
36
- block: 'center',
37
- inline: 'center'
38
- });
39
- }
40
-
41
- function goToPrevious() {
42
- var nextIndex = 0;
43
- if (typeof currentIndex !== 'number' || currentIndex === 0) {
44
- nextIndex = missingCoverageElements.length - 1;
45
- } else if (missingCoverageElements.length > 1) {
46
- nextIndex = currentIndex - 1;
47
- }
48
-
49
- makeCurrent(nextIndex);
50
- }
51
-
52
- function goToNext() {
53
- var nextIndex = 0;
54
-
55
- if (
56
- typeof currentIndex === 'number' &&
57
- currentIndex < missingCoverageElements.length - 1
58
- ) {
59
- nextIndex = currentIndex + 1;
60
- }
61
-
62
- makeCurrent(nextIndex);
63
- }
64
-
65
- return function jump(event) {
66
- if (
67
- document.getElementById('fileSearch') === document.activeElement &&
68
- document.activeElement != null
69
- ) {
70
- // if we're currently focused on the search input, we don't want to navigate
71
- return;
72
- }
73
-
74
- switch (event.which) {
75
- case 78: // n
76
- case 74: // j
77
- goToNext();
78
- break;
79
- case 66: // b
80
- case 75: // k
81
- case 80: // p
82
- goToPrevious();
83
- break;
84
- }
85
- };
86
- })();
87
- window.addEventListener('keydown', jumpToCode);