@lblod/ember-rdfa-editor-lblod-plugins 0.3.1 → 0.4.0

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 (269) hide show
  1. package/.release-it.json +14 -0
  2. package/.woodpecker/.release.yml +15 -0
  3. package/.woodpecker/.test.yml +23 -0
  4. package/CHANGELOG.md +84 -0
  5. package/RELEASE.md +60 -0
  6. package/addon/commands/generate-template-command.js +35 -0
  7. package/addon/commands/insert-and-collapse.js +32 -0
  8. package/addon/commands/modify-date-command.js +42 -0
  9. package/addon/components/besluit-type-plugin/besluit-type-select.hbs +28 -0
  10. package/addon/components/besluit-type-plugin/besluit-type-select.js +21 -0
  11. package/addon/components/besluit-type-plugin/toolbar-dropdown.hbs +83 -0
  12. package/addon/components/besluit-type-plugin/toolbar-dropdown.js +188 -0
  13. package/addon/components/citaten-plugin/citaat-card.hbs +76 -0
  14. package/addon/components/citaten-plugin/citaat-card.js +286 -0
  15. package/addon/components/citaten-plugin/citaat-insert.hbs +20 -0
  16. package/addon/components/citaten-plugin/citaat-insert.js +68 -0
  17. package/addon/components/citaten-plugin/citations/article-list.hbs +13 -0
  18. package/addon/components/citaten-plugin/citations/article-preview.hbs +16 -0
  19. package/addon/components/citaten-plugin/citations/decision-detail.hbs +110 -0
  20. package/addon/components/citaten-plugin/citations/decision-detail.js +94 -0
  21. package/addon/components/citaten-plugin/citations/decision-list.hbs +15 -0
  22. package/addon/components/citaten-plugin/citations/decision-preview.hbs +53 -0
  23. package/addon/components/citaten-plugin/citations/search-modal.hbs +175 -0
  24. package/addon/components/citaten-plugin/citations/search-modal.js +244 -0
  25. package/addon/components/citaten-plugin/helpers/alert-load-error.hbs +21 -0
  26. package/addon/components/citaten-plugin/helpers/alert-no-items.hbs +10 -0
  27. package/addon/components/import-snippet-plugin/card.hbs +17 -0
  28. package/addon/components/import-snippet-plugin/card.js +95 -0
  29. package/addon/components/insert-variable-plugin/insert-variable-card.hbs +33 -0
  30. package/addon/components/insert-variable-plugin/insert-variable-card.js +125 -0
  31. package/addon/components/rdfa-date-plugin/rdfa-date-plugin-card.hbs +22 -0
  32. package/addon/components/rdfa-date-plugin/rdfa-date-plugin-card.js +64 -0
  33. package/addon/components/rdfa-date-plugin/rdfa-date-plugin-insert.hbs +18 -0
  34. package/addon/components/rdfa-date-plugin/rdfa-date-plugin-insert.js +24 -0
  35. package/addon/components/rdfa-date-plugin/rdfa-date-time-picker.hbs +21 -0
  36. package/addon/components/rdfa-date-plugin/rdfa-date-time-picker.js +73 -0
  37. package/addon/components/roadsign-regulation-plugin/expanded-measure.hbs +44 -0
  38. package/addon/components/roadsign-regulation-plugin/expanded-measure.js +38 -0
  39. package/addon/components/roadsign-regulation-plugin/measure-template.hbs +5 -0
  40. package/addon/components/roadsign-regulation-plugin/measure-template.js +30 -0
  41. package/addon/components/roadsign-regulation-plugin/roadsign-regulation-card.hbs +12 -0
  42. package/addon/components/roadsign-regulation-plugin/roadsign-regulation-card.js +101 -0
  43. package/addon/components/roadsign-regulation-plugin/roadsigns-modal.hbs +92 -0
  44. package/addon/components/roadsign-regulation-plugin/roadsigns-modal.js +268 -0
  45. package/addon/components/roadsign-regulation-plugin/roadsigns-pagination.hbs +25 -0
  46. package/addon/components/roadsign-regulation-plugin/roadsigns-pagination.js +55 -0
  47. package/addon/components/roadsign-regulation-plugin/roadsigns-table.hbs +73 -0
  48. package/addon/components/roadsign-regulation-plugin/roadsigns-table.js +24 -0
  49. package/addon/components/standard-template-plugin/template-card.hbs +16 -0
  50. package/addon/components/standard-template-plugin/template-card.js +7 -0
  51. package/addon/components/standard-template-plugin/template-provider.hbs +6 -0
  52. package/addon/components/standard-template-plugin/template-provider.js +75 -0
  53. package/addon/components/table-of-contents-plugin/card.hbs +5 -0
  54. package/addon/components/table-of-contents-plugin/card.js +53 -0
  55. package/addon/components/table-of-contents-plugin/inline-components/outline.hbs +21 -0
  56. package/addon/components/table-of-contents-plugin/inline-components/table-of-contents.hbs +9 -0
  57. package/addon/components/table-of-contents-plugin/inline-components/table-of-contents.js +100 -0
  58. package/addon/components/template-variable-plugin/template-variable-card.hbs +34 -0
  59. package/addon/components/template-variable-plugin/template-variable-card.js +230 -0
  60. package/addon/constants.js +24 -0
  61. package/{dist → addon}/helpers/limit-text.js +1 -4
  62. package/addon/initializers/plugin-initializer.js +75 -0
  63. package/addon/inline-components/table-of-contents.js +43 -0
  64. package/addon/marks/citaten-mark.js +32 -0
  65. package/addon/models/instruction.js +19 -0
  66. package/addon/models/measure.js +46 -0
  67. package/{dist → addon}/models/sign.js +12 -13
  68. package/addon/models/template.js +9 -0
  69. package/addon/plugins/besluit-type-plugin.js +16 -0
  70. package/addon/plugins/citaten-plugin.js +22 -0
  71. package/addon/plugins/generate-template-plugin.js +16 -0
  72. package/addon/plugins/import-snippet-plugin.js +16 -0
  73. package/addon/plugins/insert-variable-plugin.js +19 -0
  74. package/addon/plugins/rdfa-date-plugin.js +26 -0
  75. package/addon/plugins/roadsign-regulation-plugin.js +24 -0
  76. package/addon/plugins/standard-template-plugin.js +33 -0
  77. package/addon/plugins/table-of-contents-plugin.js +27 -0
  78. package/addon/plugins/template-variable-plugin.js +21 -0
  79. package/addon/serializers/application.js +8 -0
  80. package/{dist → addon}/services/import-rdfa-snippet.js +28 -18
  81. package/{dist → addon}/services/roadsign-registry.js +67 -121
  82. package/addon/services/standard-template-plugin.js +45 -0
  83. package/addon/utils/fetchBesluitTypes.js +90 -0
  84. package/addon/utils/generate-template-plugin/default-resources.js +9 -0
  85. package/addon/utils/instantiate-uuids.js +34 -0
  86. package/addon/utils/legislation-types.js +32 -0
  87. package/addon/utils/memoize.js +8 -0
  88. package/addon/utils/processMatch.js +80 -0
  89. package/addon/utils/roadsign-regulation-plugin/fetchData.js +78 -0
  90. package/addon/utils/roadsign-regulation-plugin/includeInstructions.js +10 -0
  91. package/addon/utils/variable-plugins/default-variable-types.js +56 -0
  92. package/{dist/fetch-data-284bf106.js → addon/utils/variable-plugins/fetch-data.js} +36 -18
  93. package/{dist/vlaamse-codex-187fe526.js → addon/utils/vlaamse-codex.js} +159 -63
  94. package/app/components/besluit-type-plugin/besluit-type-select.js +1 -0
  95. package/app/components/besluit-type-plugin/toolbar-dropdown.js +1 -0
  96. package/app/components/citaten-plugin/citaat-card.js +1 -0
  97. package/app/components/citaten-plugin/citaat-insert.js +1 -0
  98. package/app/components/citaten-plugin/citations/article-list.js +1 -0
  99. package/app/components/citaten-plugin/citations/article-preview.js +1 -0
  100. package/app/components/citaten-plugin/citations/decision-detail.js +1 -0
  101. package/app/components/citaten-plugin/citations/decision-list.js +1 -0
  102. package/app/components/citaten-plugin/citations/decision-preview.js +1 -0
  103. package/app/components/citaten-plugin/citations/modal.js +1 -0
  104. package/app/components/citaten-plugin/citations/search-modal.js +1 -0
  105. package/app/components/citaten-plugin/helpers/alert-load-error.js +1 -0
  106. package/app/components/citaten-plugin/helpers/alert-no-items.js +1 -0
  107. package/app/components/import-snippet-plugin/card.js +1 -0
  108. package/app/components/insert-variable-plugin/insert-variable-card.js +1 -0
  109. package/app/components/rdfa-date-plugin/rdfa-date-plugin-card.js +1 -0
  110. package/app/components/rdfa-date-plugin/rdfa-date-plugin-insert.js +1 -0
  111. package/app/components/rdfa-date-plugin/rdfa-date-time-picker.js +1 -0
  112. package/app/components/roadsign-regulation-plugin/expanded-measure.js +1 -0
  113. package/app/components/roadsign-regulation-plugin/measure-template.js +1 -0
  114. package/app/components/roadsign-regulation-plugin/roadsign-regulation-card.js +1 -0
  115. package/app/components/roadsign-regulation-plugin/roadsigns-modal.js +1 -0
  116. package/app/components/roadsign-regulation-plugin/roadsigns-pagination.js +1 -0
  117. package/app/components/roadsign-regulation-plugin/roadsigns-table.js +1 -0
  118. package/app/components/standard-template-plugin/template-card.js +1 -0
  119. package/app/components/standard-template-plugin/template-provider.js +1 -0
  120. package/app/components/table-of-contents-plugin/card.js +1 -0
  121. package/app/components/table-of-contents-plugin/inline-components/outline.js +1 -0
  122. package/app/components/table-of-contents-plugin/inline-components/table-of-contents.js +1 -0
  123. package/app/components/template-variable-plugin/template-variable-card.js +1 -0
  124. package/app/helpers/limit-text.js +4 -0
  125. package/app/initializers/plugin-initializer.js +4 -0
  126. package/app/models/instruction.js +1 -0
  127. package/app/models/measure.js +1 -0
  128. package/app/models/sign.js +1 -0
  129. package/app/models/template.js +1 -0
  130. package/app/serializers/application.js +1 -0
  131. package/app/services/import-rdfa-snippet.js +1 -0
  132. package/app/services/rdfa-editor-roadsign-regulation-plugin.js +1 -0
  133. package/app/services/roadsign-registry.js +1 -0
  134. package/app/services/standard-template-plugin.js +1 -0
  135. package/{dist → app}/styles/citaten-plugin.scss +0 -0
  136. package/config/environment.js +0 -1
  137. package/index.js +8 -0
  138. package/package.json +110 -106
  139. package/tsconfig.json +42 -0
  140. package/types/dummy/index.d.ts +1 -0
  141. package/types/ember-data/types/registries/model.d.ts +6 -0
  142. package/types/global.d.ts +7 -0
  143. package/addon-main.js +0 -4
  144. package/dist/_app_/components/besluit-type-plugin/besluit-type-select.js +0 -1
  145. package/dist/_app_/components/besluit-type-plugin/toolbar-dropdown.js +0 -1
  146. package/dist/_app_/components/citaten-plugin/citaat-card.js +0 -1
  147. package/dist/_app_/components/citaten-plugin/citaat-insert.js +0 -1
  148. package/dist/_app_/components/citaten-plugin/citations/article-list.js +0 -1
  149. package/dist/_app_/components/citaten-plugin/citations/article-preview.js +0 -1
  150. package/dist/_app_/components/citaten-plugin/citations/decision-detail.js +0 -1
  151. package/dist/_app_/components/citaten-plugin/citations/decision-list.js +0 -1
  152. package/dist/_app_/components/citaten-plugin/citations/decision-preview.js +0 -1
  153. package/dist/_app_/components/citaten-plugin/citations/search-modal.js +0 -1
  154. package/dist/_app_/components/citaten-plugin/helpers/alert-load-error.js +0 -1
  155. package/dist/_app_/components/citaten-plugin/helpers/alert-no-items.js +0 -1
  156. package/dist/_app_/components/import-snippet-plugin/card.js +0 -1
  157. package/dist/_app_/components/insert-variable-plugin/insert-variable-card.js +0 -1
  158. package/dist/_app_/components/rdfa-date-plugin/rdfa-date-plugin-card.js +0 -1
  159. package/dist/_app_/components/rdfa-date-plugin/rdfa-date-plugin-insert.js +0 -1
  160. package/dist/_app_/components/rdfa-date-plugin/rdfa-date-time-picker.js +0 -1
  161. package/dist/_app_/components/roadsign-regulation-plugin/expanded-measure.js +0 -1
  162. package/dist/_app_/components/roadsign-regulation-plugin/measure-template.js +0 -1
  163. package/dist/_app_/components/roadsign-regulation-plugin/roadsign-regulation-card.js +0 -1
  164. package/dist/_app_/components/roadsign-regulation-plugin/roadsigns-modal.js +0 -1
  165. package/dist/_app_/components/roadsign-regulation-plugin/roadsigns-pagination.js +0 -1
  166. package/dist/_app_/components/roadsign-regulation-plugin/roadsigns-table.js +0 -1
  167. package/dist/_app_/components/standard-template-plugin/template-card.js +0 -1
  168. package/dist/_app_/components/standard-template-plugin/template-provider.js +0 -1
  169. package/dist/_app_/components/table-of-contents-plugin/card.js +0 -1
  170. package/dist/_app_/components/table-of-contents-plugin/inline-components/outline.js +0 -1
  171. package/dist/_app_/components/table-of-contents-plugin/inline-components/table-of-contents.js +0 -1
  172. package/dist/_app_/components/template-variable-plugin/template-variable-card.js +0 -1
  173. package/dist/_app_/helpers/limit-text.js +0 -1
  174. package/dist/_app_/initializers/plugin-initializer.js +0 -1
  175. package/dist/_app_/models/instruction.js +0 -1
  176. package/dist/_app_/models/measure.js +0 -1
  177. package/dist/_app_/models/sign.js +0 -1
  178. package/dist/_app_/models/template.js +0 -1
  179. package/dist/_app_/serializers/application.js +0 -1
  180. package/dist/_app_/services/import-rdfa-snippet.js +0 -1
  181. package/dist/_app_/services/roadsign-registry.js +0 -1
  182. package/dist/_app_/services/standard-template-plugin.js +0 -1
  183. package/dist/_rollupPluginBabelHelpers-537ad14b.js +0 -48
  184. package/dist/_rollupPluginBabelHelpers-537ad14b.js.map +0 -1
  185. package/dist/components/besluit-type-plugin/besluit-type-select.js +0 -30
  186. package/dist/components/besluit-type-plugin/besluit-type-select.js.map +0 -1
  187. package/dist/components/besluit-type-plugin/toolbar-dropdown.js +0 -292
  188. package/dist/components/besluit-type-plugin/toolbar-dropdown.js.map +0 -1
  189. package/dist/components/citaten-plugin/citaat-card.js +0 -367
  190. package/dist/components/citaten-plugin/citaat-card.js.map +0 -1
  191. package/dist/components/citaten-plugin/citaat-insert.js +0 -84
  192. package/dist/components/citaten-plugin/citaat-insert.js.map +0 -1
  193. package/dist/components/citaten-plugin/citations/article-list.js +0 -10
  194. package/dist/components/citaten-plugin/citations/article-list.js.map +0 -1
  195. package/dist/components/citaten-plugin/citations/article-preview.js +0 -10
  196. package/dist/components/citaten-plugin/citations/article-preview.js.map +0 -1
  197. package/dist/components/citaten-plugin/citations/decision-detail.js +0 -123
  198. package/dist/components/citaten-plugin/citations/decision-detail.js.map +0 -1
  199. package/dist/components/citaten-plugin/citations/decision-list.js +0 -10
  200. package/dist/components/citaten-plugin/citations/decision-list.js.map +0 -1
  201. package/dist/components/citaten-plugin/citations/decision-preview.js +0 -10
  202. package/dist/components/citaten-plugin/citations/decision-preview.js.map +0 -1
  203. package/dist/components/citaten-plugin/citations/search-modal.js +0 -282
  204. package/dist/components/citaten-plugin/citations/search-modal.js.map +0 -1
  205. package/dist/components/citaten-plugin/helpers/alert-load-error.js +0 -10
  206. package/dist/components/citaten-plugin/helpers/alert-load-error.js.map +0 -1
  207. package/dist/components/citaten-plugin/helpers/alert-no-items.js +0 -10
  208. package/dist/components/citaten-plugin/helpers/alert-no-items.js.map +0 -1
  209. package/dist/components/import-snippet-plugin/card.js +0 -99
  210. package/dist/components/import-snippet-plugin/card.js.map +0 -1
  211. package/dist/components/insert-variable-plugin/insert-variable-card.js +0 -190
  212. package/dist/components/insert-variable-plugin/insert-variable-card.js.map +0 -1
  213. package/dist/components/rdfa-date-plugin/rdfa-date-plugin-card.js +0 -85
  214. package/dist/components/rdfa-date-plugin/rdfa-date-plugin-card.js.map +0 -1
  215. package/dist/components/rdfa-date-plugin/rdfa-date-plugin-insert.js +0 -23
  216. package/dist/components/rdfa-date-plugin/rdfa-date-plugin-insert.js.map +0 -1
  217. package/dist/components/rdfa-date-plugin/rdfa-date-time-picker.js +0 -91
  218. package/dist/components/rdfa-date-plugin/rdfa-date-time-picker.js.map +0 -1
  219. package/dist/components/roadsign-regulation-plugin/expanded-measure.js +0 -52
  220. package/dist/components/roadsign-regulation-plugin/expanded-measure.js.map +0 -1
  221. package/dist/components/roadsign-regulation-plugin/measure-template.js +0 -42
  222. package/dist/components/roadsign-regulation-plugin/measure-template.js.map +0 -1
  223. package/dist/components/roadsign-regulation-plugin/roadsign-regulation-card.js +0 -82
  224. package/dist/components/roadsign-regulation-plugin/roadsign-regulation-card.js.map +0 -1
  225. package/dist/components/roadsign-regulation-plugin/roadsigns-modal.js +0 -251
  226. package/dist/components/roadsign-regulation-plugin/roadsigns-modal.js.map +0 -1
  227. package/dist/components/roadsign-regulation-plugin/roadsigns-pagination.js +0 -71
  228. package/dist/components/roadsign-regulation-plugin/roadsigns-pagination.js.map +0 -1
  229. package/dist/components/roadsign-regulation-plugin/roadsigns-table.js +0 -36
  230. package/dist/components/roadsign-regulation-plugin/roadsigns-table.js.map +0 -1
  231. package/dist/components/standard-template-plugin/template-card.js +0 -15
  232. package/dist/components/standard-template-plugin/template-card.js.map +0 -1
  233. package/dist/components/standard-template-plugin/template-provider.js +0 -109
  234. package/dist/components/standard-template-plugin/template-provider.js.map +0 -1
  235. package/dist/components/table-of-contents-plugin/card.js +0 -52
  236. package/dist/components/table-of-contents-plugin/card.js.map +0 -1
  237. package/dist/components/table-of-contents-plugin/inline-components/outline.js +0 -10
  238. package/dist/components/table-of-contents-plugin/inline-components/outline.js.map +0 -1
  239. package/dist/components/table-of-contents-plugin/inline-components/table-of-contents.js +0 -92
  240. package/dist/components/table-of-contents-plugin/inline-components/table-of-contents.js.map +0 -1
  241. package/dist/components/template-variable-plugin/template-variable-card.js +0 -178
  242. package/dist/components/template-variable-plugin/template-variable-card.js.map +0 -1
  243. package/dist/constants-c77fd478.js +0 -16
  244. package/dist/constants-c77fd478.js.map +0 -1
  245. package/dist/fetch-data-284bf106.js.map +0 -1
  246. package/dist/helpers/limit-text.js.map +0 -1
  247. package/dist/includeInstructions-a32c24e6.js +0 -10
  248. package/dist/includeInstructions-a32c24e6.js.map +0 -1
  249. package/dist/index.js +0 -2
  250. package/dist/index.js.map +0 -1
  251. package/dist/initializers/plugin-initializer.js +0 -401
  252. package/dist/initializers/plugin-initializer.js.map +0 -1
  253. package/dist/legislation-types-4d487cb9.js +0 -26
  254. package/dist/legislation-types-4d487cb9.js.map +0 -1
  255. package/dist/models/instruction.js +0 -18
  256. package/dist/models/instruction.js.map +0 -1
  257. package/dist/models/measure.js +0 -41
  258. package/dist/models/measure.js.map +0 -1
  259. package/dist/models/sign.js.map +0 -1
  260. package/dist/models/template.js +0 -48
  261. package/dist/models/template.js.map +0 -1
  262. package/dist/serializers/application.js +0 -10
  263. package/dist/serializers/application.js.map +0 -1
  264. package/dist/services/import-rdfa-snippet.js.map +0 -1
  265. package/dist/services/roadsign-registry.js.map +0 -1
  266. package/dist/services/standard-template-plugin.js +0 -53
  267. package/dist/services/standard-template-plugin.js.map +0 -1
  268. package/dist/styles/test.css +0 -0
  269. package/dist/vlaamse-codex-187fe526.js.map +0 -1
@@ -0,0 +1,125 @@
1
+ import Component from '@glimmer/component';
2
+ import { tracked } from '@glimmer/tracking';
3
+ import { action } from '@ember/object';
4
+ import { task } from 'ember-concurrency';
5
+ import { v4 as uuidv4 } from 'uuid';
6
+ import { INVISIBLE_SPACE } from '@lblod/ember-rdfa-editor/model/util/constants';
7
+ import { defaultVariableTypes } from '../../utils/variable-plugins/default-variable-types';
8
+
9
+ export default class EditorPluginsInsertCodelistCardComponent extends Component {
10
+ @tracked variablesArray;
11
+ @tracked selectedVariable;
12
+ @tracked showCard = true;
13
+ @tracked hasSubtype = false;
14
+ @tracked selectedSubtype;
15
+ @tracked subtypes;
16
+
17
+ constructor() {
18
+ super(...arguments);
19
+ const { publisher, variableTypes, defaultEndpoint } =
20
+ this.args.widgetArgs.options || {};
21
+ this.publisher = publisher;
22
+ this.endpoint = defaultEndpoint;
23
+ let variableTypesSelectedByUser = variableTypes ?? [
24
+ 'text',
25
+ 'number',
26
+ 'date',
27
+ 'location',
28
+ 'codelist',
29
+ ];
30
+
31
+ const variablesArray = [];
32
+ for (let type of variableTypesSelectedByUser) {
33
+ if (typeof type === 'string') {
34
+ const defaultVariable = defaultVariableTypes[type];
35
+ if (defaultVariable) {
36
+ variablesArray.push(defaultVariable);
37
+ } else {
38
+ console.warn(
39
+ `Template Variable Plugin: variable type ${type} not found in the default variable types`
40
+ );
41
+ }
42
+ } else {
43
+ variablesArray.push(type);
44
+ }
45
+ }
46
+ this.variablesArray = variablesArray;
47
+ this.args.controller.onEvent('selectionChanged', this.selectionChanged);
48
+ }
49
+
50
+ @action
51
+ insert() {
52
+ const uri = `http://data.lblod.info/mappings/${uuidv4()}`;
53
+ let variableContent;
54
+ if (typeof this.selectedVariable.template === 'function') {
55
+ variableContent = this.selectedVariable.template(
56
+ this.endpoint,
57
+ this.selectedSubtype
58
+ );
59
+ } else {
60
+ variableContent = this.selectedVariable.template;
61
+ }
62
+ const htmlToInsert = `
63
+ <span resource="${uri}" typeof="ext:Mapping">
64
+ ${variableContent}
65
+ </span>
66
+ `;
67
+ this.args.controller.executeCommand(
68
+ 'insert-html',
69
+ htmlToInsert,
70
+ this.args.controller.selection.lastRange
71
+ );
72
+ this.args.controller.executeCommand(
73
+ 'insert-text',
74
+ INVISIBLE_SPACE,
75
+ this.args.controller.selection.lastRange
76
+ );
77
+ this.selectedVariableType = undefined;
78
+ this.selectedCodelist = undefined;
79
+ this.isCodelist = false;
80
+ }
81
+
82
+ @action
83
+ updateSelectedVariable(variable) {
84
+ this.selectedVariable = variable;
85
+ if (variable.fetchSubtypes) {
86
+ this.fetchSubtypes.perform(variable.fetchSubtypes);
87
+ this.hasSubtype = true;
88
+ } else {
89
+ this.hasSubtype = false;
90
+ }
91
+ }
92
+
93
+ @task
94
+ *fetchSubtypes(fetchFunction) {
95
+ const subtypes = yield fetchFunction(this.endpoint, this.publisher);
96
+ this.subtypes = subtypes;
97
+ }
98
+
99
+ @action
100
+ updateSubtype(subtype) {
101
+ this.selectedSubtype = subtype;
102
+ }
103
+
104
+ @action
105
+ selectionChanged() {
106
+ const currentSelection = this.args.controller.selection.lastRange;
107
+ if (!currentSelection) {
108
+ return;
109
+ }
110
+ this.showCard = false;
111
+ const limitedDatastore = this.args.controller.datastore.limitToRange(
112
+ currentSelection,
113
+ 'rangeIsInside'
114
+ );
115
+ const mapping = limitedDatastore
116
+ .match(null, 'a', 'ext:Mapping')
117
+ .asQuads()
118
+ .next().value;
119
+ if (mapping) {
120
+ this.showCard = false;
121
+ } else {
122
+ this.showCard = true;
123
+ }
124
+ }
125
+ }
@@ -0,0 +1,22 @@
1
+ {{#if this.showCard}}
2
+ <AuCard @shadow={{true}} @size="flush" as |c|>
3
+ <c.header class="au-u-hidden-visually">
4
+ <AuHeading @level="3" @skin="6">{{t "date-plugin.card.title"}}</AuHeading>
5
+ </c.header>
6
+ <c.content class="au-o-box au-o-box--small">
7
+ <div class="au-o-flow au-o-flow--small">
8
+ <RdfaDatePlugin::RdfaDateTimePicker
9
+ @onChange={{this.changeDate}}
10
+ @value={{this.dateValue}}
11
+ @onlyDate={{this.onlyDate}}/>
12
+ {{#unless this.dateInDocument}}
13
+ <AuFormRow class="au-u-margin-top">
14
+ <AuButton {{on 'click' this.modifyDate}}>
15
+ {{if this.onlyDate (t "date-plugin.card.insert-date") (t "date-plugin.card.insert-datetime")}}
16
+ </AuButton>
17
+ </AuFormRow>
18
+ {{/unless}}
19
+ </div>
20
+ </c.content>
21
+ </AuCard>
22
+ {{/if}}
@@ -0,0 +1,64 @@
1
+ import Component from '@glimmer/component';
2
+ import { tracked } from '@glimmer/tracking';
3
+ import { action } from '@ember/object';
4
+
5
+ export default class RdfaDatePluginCardComponent extends Component {
6
+ @tracked showCard = false;
7
+ @tracked dateValue;
8
+ @tracked dateElement;
9
+ @tracked dateInDocument;
10
+ @tracked onlyDate;
11
+
12
+ constructor() {
13
+ super(...arguments);
14
+ this.args.controller.onEvent(
15
+ 'selectionChanged',
16
+ this.selectionChangedHandler
17
+ );
18
+ }
19
+
20
+ @action
21
+ modifyDate() {
22
+ this.args.controller.executeCommand(
23
+ 'modify-date',
24
+ this.args.controller,
25
+ this.dateElement,
26
+ this.dateValue,
27
+ this.onlyDate
28
+ );
29
+ }
30
+
31
+ @action
32
+ changeDate(date) {
33
+ this.dateValue = date;
34
+ if (this.dateInDocument) this.modifyDate();
35
+ }
36
+
37
+ @action
38
+ selectionChangedHandler() {
39
+ const selectedRange = this.args.controller.selection.lastRange;
40
+ if (!selectedRange) {
41
+ return;
42
+ }
43
+ const selectionParent = selectedRange.start.parent;
44
+ const datatype = selectionParent.attributeMap.get('datatype');
45
+ if (datatype === 'xsd:dateTime') {
46
+ this.showCard = true;
47
+ this.dateElement = selectionParent;
48
+ const dateContent = selectionParent.attributeMap.get('content');
49
+ this.dateValue = dateContent ? new Date(dateContent) : new Date();
50
+ this.dateInDocument = !!dateContent;
51
+ this.onlyDate = false;
52
+ } else if (datatype === 'xsd:date') {
53
+ this.showCard = true;
54
+ this.dateElement = selectionParent;
55
+ const dateContent = selectionParent.attributeMap.get('content');
56
+ this.dateValue = dateContent ? new Date(dateContent) : new Date();
57
+ this.dateInDocument = !!dateContent;
58
+ this.onlyDate = true;
59
+ } else {
60
+ this.showCard = false;
61
+ this.dateElement = undefined;
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,18 @@
1
+ <AuList::Item>
2
+ <AuButton
3
+ @icon="add"
4
+ @iconAlignment="left"
5
+ @skin="link"
6
+ {{on 'click' this.insertDate}}>
7
+ {{t "date-plugin.insert.date"}}
8
+ </AuButton>
9
+ </AuList::Item>
10
+ <AuList::Item>
11
+ <AuButton
12
+ @icon="add"
13
+ @iconAlignment="left"
14
+ @skin="link"
15
+ {{on 'click' this.insertDateTime}}>
16
+ {{t "date-plugin.insert.datetime"}}
17
+ </AuButton>
18
+ </AuList::Item>
@@ -0,0 +1,24 @@
1
+ import Component from '@glimmer/component';
2
+ import { action } from '@ember/object';
3
+
4
+ export default class RdfaDatePluginInsertComponent extends Component {
5
+ @action
6
+ insertDate() {
7
+ const selection = this.args.controller.selection.lastRange;
8
+ this.args.controller.executeCommand(
9
+ 'insert-html',
10
+ '<span datatype="xsd:date" property="ext:content">${date}</span>',
11
+ selection
12
+ );
13
+ }
14
+
15
+ @action
16
+ insertDateTime() {
17
+ const selection = this.args.controller.selection.lastRange;
18
+ this.args.controller.executeCommand(
19
+ 'insert-html',
20
+ '<span datatype="xsd:dateTime" property="ext:content">${date and time}</span>',
21
+ selection
22
+ );
23
+ }
24
+ }
@@ -0,0 +1,21 @@
1
+ <AuFormRow>
2
+ <AuDatePicker
3
+ @onChange={{this.onChangeDate}}
4
+ @value={{this.date}}
5
+ @label={{t "date-plugin.card.label"}}
6
+ @localization={{this.datePickerLocalization}}/>
7
+ </AuFormRow>
8
+ {{#unless @onlyDate}}
9
+ <AuFormRow>
10
+ <AuTimePicker
11
+ @hoursLabel={{t "date-plugin.card.hours"}}
12
+ @minutesLabel={{t "date-plugin.card.minutes"}}
13
+ @nowLabel={{t "date-plugin.card.now"}}
14
+ @hours={{this.hours}}
15
+ @minutes={{this.minutes}}
16
+ @showSeconds={{false}}
17
+ @showNow={{true}}
18
+ @onChange={{this.onChangeTime}}
19
+ />
20
+ </AuFormRow>
21
+ {{/unless}}
@@ -0,0 +1,73 @@
1
+ import Component from '@glimmer/component';
2
+ import { action } from '@ember/object';
3
+ import { inject as service } from '@ember/service';
4
+ import { localCopy } from 'tracked-toolbox';
5
+
6
+ export default class RdfaDateTimePicker extends Component {
7
+ @service intl;
8
+ @localCopy('args.value') date;
9
+
10
+ get hours() {
11
+ return this.date.getHours();
12
+ }
13
+
14
+ get minutes() {
15
+ return this.date.getMinutes();
16
+ }
17
+
18
+ get datePickerLocalization() {
19
+ return {
20
+ buttonLabel: this.intl.t('auDatePicker.buttonLabel'),
21
+ selectedDateMessage: this.intl.t('auDatePicker.selectedDateMessage'),
22
+ prevMonthLabel: this.intl.t('auDatePicker.prevMonthLabel'),
23
+ nextMonthLabel: this.intl.t('auDatePicker.nextMonthLabel'),
24
+ monthSelectLabel: this.intl.t('auDatePicker.monthSelectLabel'),
25
+ yearSelectLabel: this.intl.t('auDatePicker.yearSelectLabel'),
26
+ closeLabel: this.intl.t('auDatePicker.closeLabel'),
27
+ keyboardInstruction: this.intl.t('auDatePicker.keyboardInstruction'),
28
+ calendarHeading: this.intl.t('auDatePicker.calendarHeading'),
29
+ dayNames: getLocalizedDays(this.intl),
30
+ monthNames: getLocalizedMonths(this.intl),
31
+ monthNamesShort: getLocalizedMonths(this.intl, 'short'),
32
+ };
33
+ }
34
+
35
+ @action
36
+ onChangeDate(isoDate, date) {
37
+ let wasDateInputCleared = !date;
38
+ if (!wasDateInputCleared) {
39
+ if (!this.date) {
40
+ this.date = new Date();
41
+ }
42
+ this.date.setDate(date.getDate());
43
+ this.date.setMonth(date.getMonth());
44
+ this.date.setFullYear(date.getFullYear());
45
+ this.args.onChange(this.date);
46
+ }
47
+ }
48
+
49
+ @action
50
+ onChangeTime(timeObject) {
51
+ if (!this.date) this.date = new Date();
52
+ this.date.setHours(timeObject.hours);
53
+ this.date.setMinutes(timeObject.minutes);
54
+ this.args.onChange(this.date);
55
+ }
56
+ }
57
+
58
+ function getLocalizedMonths(intl, monthFormat = 'long') {
59
+ let someYear = 2021;
60
+ return [...Array(12).keys()].map((monthIndex) => {
61
+ let date = new Date(someYear, monthIndex);
62
+ return intl.formatDate(date, { month: monthFormat });
63
+ });
64
+ }
65
+
66
+ function getLocalizedDays(intl, weekdayFormat = 'long') {
67
+ let someSunday = new Date('2021-01-03');
68
+ return [...Array(7).keys()].map((index) => {
69
+ let weekday = new Date(someSunday.getTime());
70
+ weekday.setDate(someSunday.getDate() + index);
71
+ return intl.formatDate(weekday, { weekday: weekdayFormat });
72
+ });
73
+ }
@@ -0,0 +1,44 @@
1
+ <tr class="au-c-data-table__detail">
2
+ <td colspan="5" class="au-o-flow au-o-flow--small">
3
+ <AuHeading @level="6" @skin="6">Voeg maatregel in:</AuHeading>
4
+ <p>
5
+ <AuPill>
6
+ <RoadsignRegulationPlugin::MeasureTemplate @measure={{@measure.uri}} @template={{@measure.template}} />
7
+ </AuPill>
8
+ </p>
9
+ {{#if this.isPotentiallyZonal}}
10
+ <AuHeading @level="6" @skin="6">Selecteer zonale geldigheid:</AuHeading>
11
+ <div class="au-c-form">
12
+ <ul>
13
+ <li>
14
+ <AuControlRadio @label="Zonaal" @name="zonal" @value={{this.ZONAL_URI}} @identifier="zonal" {{on 'change' this.changeZonality}} />
15
+ </li>
16
+ <li>
17
+ <AuControlRadio @label="Niet zonaal" @name="zonal" @value={{this.NON_ZONAL_URI}} @identifier="non-zonal" {{on 'change' this.changeZonality}} />
18
+ </li>
19
+ </ul>
20
+ </div>
21
+ {{/if}}
22
+ {{#if @measure.temporal}}
23
+ <AuHeading @level="6" @skin="6">Variabele signalisatie:</AuHeading>
24
+ <div class="au-c-form">
25
+ <ul>
26
+ <li>
27
+ <AuControlRadio @label="Variabel" @name="temporal" @value={{true}} @identifier="true" {{on 'change' this.changeTemporality}} />
28
+ </li>
29
+ <li>
30
+ <AuControlRadio @label="Niet variabel" @name="temporal" @value={{false}} @identifier="false" {{on 'change' this.changeTemporality}} />
31
+ </li>
32
+ </ul>
33
+ </div>
34
+ {{/if}}
35
+ <AuButtonGroup>
36
+ <AuButton {{on 'click' this.insert}} @disabled={{this.insertButtonDisabled}}>
37
+ Voeg in
38
+ </AuButton>
39
+ <AuButton @skin="secondary" {{on "click" this.unselectRow }}>
40
+ Annuleer
41
+ </AuButton>
42
+ </AuButtonGroup>
43
+ </td>
44
+ </tr>
@@ -0,0 +1,38 @@
1
+ import Component from '@glimmer/component';
2
+ import { tracked } from '@glimmer/tracking';
3
+ import { action } from '@ember/object';
4
+ import {
5
+ NON_ZONAL_URI,
6
+ POTENTIALLY_ZONAL_URI,
7
+ ZONAL_URI,
8
+ } from '../../constants';
9
+
10
+ export default class ExpandedMeasureComponent extends Component {
11
+ @tracked zonalityValue;
12
+ @tracked temporalValue;
13
+ ZONAL_URI = ZONAL_URI;
14
+ NON_ZONAL_URI = NON_ZONAL_URI;
15
+ get isPotentiallyZonal() {
16
+ return this.args.measure.zonality === POTENTIALLY_ZONAL_URI;
17
+ }
18
+ get insertButtonDisabled() {
19
+ return this.isPotentiallyZonal && !this.zonalityValue;
20
+ }
21
+
22
+ @action
23
+ changeZonality(e) {
24
+ this.zonalityValue = e.target.value;
25
+ }
26
+ @action
27
+ changeTemporality(e) {
28
+ this.temporalValue = e.target.value;
29
+ }
30
+ @action
31
+ insert() {
32
+ this.args.insert(this.args.measure, this.zonalityValue, this.temporalValue);
33
+ }
34
+ @action
35
+ unselectRow() {
36
+ this.args.selectRow(this.args.measure.uri);
37
+ }
38
+ }
@@ -0,0 +1,5 @@
1
+ {{#if @limitText}}
2
+ {{limit-text this.template}}
3
+ {{else}}
4
+ {{this.template}}
5
+ {{/if}}
@@ -0,0 +1,30 @@
1
+ import Component from '@glimmer/component';
2
+ import { inject as service } from '@ember/service';
3
+ import { task } from 'ember-concurrency';
4
+ import { tracked } from '@glimmer/tracking';
5
+ import includeInstructions from '../../utils/roadsign-regulation-plugin/includeInstructions';
6
+
7
+ export default class MeasureTemplateComponent extends Component {
8
+ @service roadsignRegistry;
9
+ @tracked template = '';
10
+
11
+ constructor() {
12
+ super(...arguments);
13
+ this.template = this.args.template;
14
+ this.fetchData.perform();
15
+ }
16
+
17
+ @task
18
+ *fetchData() {
19
+ const instructions =
20
+ yield this.roadsignRegistry.getInstructionsForMeasure.perform(
21
+ this.args.measure
22
+ );
23
+ let template = includeInstructions(
24
+ this.args.template,
25
+ instructions,
26
+ this.args.annotated
27
+ );
28
+ this.template = template;
29
+ }
30
+ }
@@ -0,0 +1,12 @@
1
+ <AuList::Item>
2
+ <AuButton
3
+ @skin="link"
4
+ @icon="add"
5
+ @iconAlignment="left"
6
+ @disabled={{if this.showCard false true}}
7
+ {{on "click" this.toggleModal}}
8
+ >
9
+ Voeg mobiliteitsmaatregel in
10
+ </AuButton>
11
+ </AuList::Item>
12
+ <RoadsignRegulationPlugin::RoadsignsModal @modalOpen={{this.modalOpen}} @closeModal={{this.toggleModal}} @controller={{@controller}} @insert={{this.insert}}/>
@@ -0,0 +1,101 @@
1
+ import { action } from '@ember/object';
2
+ import Component from '@glimmer/component';
3
+ import { tracked } from '@glimmer/tracking';
4
+
5
+ /**
6
+ * Card displaying a hint of the Date plugin
7
+ *
8
+ * @module editor-roadsign-regulation-plugin
9
+ * @class RoadsignRegulationCard
10
+ * @extends Ember.Component
11
+ */
12
+ const acceptedTypes = [
13
+ '>https://data.vlaanderen.be/id/concept/BesluitType/4d8f678a-6fa4-4d5f-a2a1-80974e43bf34',
14
+ '>https://data.vlaanderen.be/id/concept/BesluitType/7d95fd2e-3cc9-4a4c-a58e-0fbc408c2f9b',
15
+ '>https://data.vlaanderen.be/id/concept/BesluitType/3bba9f10-faff-49a6-acaa-85af7f2199a3',
16
+ '>https://data.vlaanderen.be/id/concept/BesluitType/0d1278af-b69e-4152-a418-ec5cfd1c7d0b',
17
+ '>https://data.vlaanderen.be/id/concept/BesluitType/e8afe7c5-9640-4db8-8f74-3f023bec3241',
18
+ '>https://data.vlaanderen.be/id/concept/BesluitType/256bd04a-b74b-4f2a-8f5d-14dda4765af9',
19
+ '>https://data.vlaanderen.be/id/concept/BesluitType/67378dd0-5413-474b-8996-d992ef81637a',
20
+ ];
21
+
22
+ export default class RoadsignRegulationCard extends Component {
23
+ @tracked modalOpen;
24
+ @tracked showCard = false;
25
+
26
+ constructor() {
27
+ super(...arguments);
28
+ this.args.controller.onEvent('selectionChanged', this.selectionChanged);
29
+ }
30
+
31
+ @action
32
+ toggleModal() {
33
+ this.modalOpen = !this.modalOpen;
34
+ }
35
+
36
+ @action
37
+ insert(html) {
38
+ const selectedRange = this.args.controller.selection.lastRange;
39
+ if (!selectedRange) {
40
+ return;
41
+ }
42
+ const limitedDatastore = this.args.controller.datastore.limitToRange(
43
+ selectedRange,
44
+ 'rangeIsInside'
45
+ );
46
+ const besluit = limitedDatastore
47
+ .match(null, 'a')
48
+ .transformDataset((dataset, termConverter) => {
49
+ return dataset.filter((quad) =>
50
+ acceptedTypes
51
+ .map((type) => termConverter(type).value)
52
+ .includes(quad.object.value)
53
+ );
54
+ })
55
+ .asSubjectNodes()
56
+ .next().value;
57
+ const besluitNode = [...besluit.nodes][0];
58
+ let articleContainerNode;
59
+ for (let child of besluitNode.children) {
60
+ if (child.attributeMap.get('property') === 'prov:value') {
61
+ articleContainerNode = child;
62
+ break;
63
+ }
64
+ }
65
+ const range = this.args.controller.rangeFactory.fromInNode(
66
+ articleContainerNode,
67
+ articleContainerNode.getMaxOffset(),
68
+ articleContainerNode.getMaxOffset()
69
+ );
70
+ this.args.controller.executeCommand('insert-html', html, range);
71
+ }
72
+
73
+ @action
74
+ selectionChanged() {
75
+ const selectedRange = this.args.controller.selection.lastRange;
76
+ if (!selectedRange) {
77
+ return;
78
+ }
79
+ const limitedDatastore = this.args.controller.datastore.limitToRange(
80
+ selectedRange,
81
+ 'rangeIsInside'
82
+ );
83
+ const besluit = limitedDatastore
84
+ .match(null, 'a')
85
+ .transformDataset((dataset, termConverter) => {
86
+ return dataset.filter((quad) =>
87
+ acceptedTypes
88
+ .map((type) => termConverter(type).value)
89
+ .includes(quad.object.value)
90
+ );
91
+ })
92
+ .asQuads()
93
+ .next().value;
94
+ if (besluit) {
95
+ this.showCard = true;
96
+ this.besluitUri = besluit.subject.value;
97
+ } else {
98
+ this.showCard = false;
99
+ }
100
+ }
101
+ }
@@ -0,0 +1,92 @@
1
+ <AuModal
2
+ class="au-c-modal--flush"
3
+ @size="large"
4
+ @modalTitle="Mobiliteitsmaatregel toevoegen"
5
+ @modalOpen={{@modalOpen}}
6
+ @closeModal={{this.closeModal}} as |Modal| >
7
+ <Modal.Body>
8
+ <div class="au-c-body-container">
9
+ <div class="au-o-box au-u-background-gray-100">
10
+ <div class="au-o-grid au-o-grid--tiny au-o-grid--bottom">
11
+ <div class="au-o-grid__item au-u-1-4">
12
+ <AuLabel>
13
+ Filter op type
14
+ </AuLabel>
15
+ <PowerSelect
16
+ @renderInPlace={{true}}
17
+ @options={{this.typeOptions}}
18
+ @verticalPosition="below"
19
+ @searchEnabled={{true}}
20
+ @selected={{or this.typeSelected this.categorySelected}}
21
+ @allowClear={{true}}
22
+ @onChange={{this.selectTypeOrCategory}}
23
+ as |option|>
24
+ {{option.label}}
25
+ </PowerSelect>
26
+ </div>
27
+ <div class="au-o-grid__item au-u-1-4">
28
+ <AuLabel>
29
+ Filter op code
30
+ </AuLabel>
31
+ <PowerSelect
32
+ @renderInPlace={{true}}
33
+ @verticalPosition="below"
34
+ @searchEnabled={{true}}
35
+ @search={{this.searchCodes}}
36
+ @selected={{this.selectedCode}}
37
+ @allowClear={{true}}
38
+ @onChange={{this.changeCode}}
39
+ as |option|>
40
+ {{option.label}}
41
+ </PowerSelect>
42
+ </div>
43
+ <div class="au-o-grid__item au-u-1-4">
44
+ <AuLabel>
45
+ Combineer met code
46
+ </AuLabel>
47
+ <PowerSelectMultiple
48
+ @renderInPlace={{true}}
49
+ @verticalPosition="below"
50
+ @searchEnabled={{true}}
51
+ @searchField="label"
52
+ @selected={{this.selectedCodeCombination}}
53
+ @allowClear={{true}}
54
+ @onChange={{this.changeCodeCombination}}
55
+ @options={{this.codeCombinationOptions}}
56
+ @disabled={{not this.selectedCode}}
57
+ as |option|>
58
+ {{option.label}}
59
+ </PowerSelectMultiple>
60
+ </div>
61
+ <div class="au-o-grid__item au-u-1-4">
62
+ <AuLabel>
63
+ Filter op zonale geldigheid
64
+ </AuLabel>
65
+ <PowerSelect
66
+ @renderInPlace={{true}}
67
+ @options={{this.zonalityOptions}}
68
+ @verticalPosition="below"
69
+ @searchEnabled={{false}}
70
+ @selected={{this.zonalitySelected}}
71
+ @allowClear={{true}}
72
+ @onChange={{this.selectZonality}}
73
+ as |option|>
74
+ {{option.label}}
75
+ </PowerSelect>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ <div class="au-c-body-container">
80
+ <RoadsignRegulationPlugin::RoadsignsTable
81
+ @content={{this.tableData}}
82
+ @isLoading={{this.fetchSigns.isRunning}}
83
+ @insert={{this.insertHtml}}
84
+ @count={{this.count}}
85
+ @goToPage={{this.goToPage}}
86
+ @pageSize={{this.pageSize}}
87
+ @pageStart={{this.pageStart}}
88
+ />
89
+ </div>
90
+ </div>
91
+ </Modal.Body>
92
+ </AuModal>