@piveau/piveau-hub-ui-modules 4.6.28 → 4.6.29

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.
@@ -1,10 +1,10 @@
1
1
  import { computed as p, toValue as m, inject as f } from "vue";
2
2
  import u from "axios";
3
- const v = Symbol(
3
+ const d = Symbol(
4
4
  "autocomplete"
5
5
  );
6
- function $(r) {
7
- const { envs: a, dpiContext: s } = r;
6
+ function g(r) {
7
+ const { envs: a, dpiContext: i } = r;
8
8
  return {
9
9
  name: "default",
10
10
  adapter: {
@@ -13,31 +13,31 @@ function $(r) {
13
13
  `${t.base}search?filter=vocabulary&vocabulary=${t.voc}&q=${t.text}&limit=14`
14
14
  ),
15
15
  requestResourceName: async (t) => {
16
- const { voc: e, uri: n } = t, l = p(
16
+ const { voc: e, uri: s } = t, l = p(
17
17
  () => {
18
18
  var o;
19
- return (o = m(s)) == null ? void 0 : o.specification;
19
+ return (o = m(i)) == null ? void 0 : o.specification;
20
20
  }
21
21
  );
22
22
  if (e === void 0 || e === "application")
23
23
  return;
24
24
  let c = "";
25
- if (e === "iana-media-types" || e === "spdx-checksum-algorithm")
25
+ if (e === "iana-media-types" || e === "spdx-checksum-algorithm" || e === "dataset-status")
26
26
  c = `${a.api.baseUrl}vocabularies/${e}`;
27
27
  else {
28
- const o = n.replace(
28
+ const o = s.replace(
29
29
  l.value.vocabPrefixes[e],
30
30
  ""
31
- ), i = encodeURIComponent(o);
32
- c = o !== i ? `${a.api.baseUrl}vocabularies/${e}/vocable?resource=${encodeURIComponent(n)}` : `${a.api.baseUrl}vocabularies/${e}/${i}`;
31
+ ), n = encodeURIComponent(o);
32
+ c = o !== n ? `${a.api.baseUrl}vocabularies/${e}/vocable?resource=${encodeURIComponent(s)}` : `${a.api.baseUrl}vocabularies/${e}/${n}`;
33
33
  }
34
34
  return u.get(c);
35
35
  }
36
36
  }
37
37
  };
38
38
  }
39
- function g() {
40
- const r = f(v);
39
+ function q() {
40
+ const r = f(d);
41
41
  if (!r)
42
42
  throw new Error(
43
43
  "[useAutocomplete] Autocomplete not found. Did you forget to inject it?"
@@ -45,8 +45,8 @@ function g() {
45
45
  return r;
46
46
  }
47
47
  export {
48
- v as autocompleteKey,
49
- $ as defaultAutocompleteAdapter,
50
- g as useAutocomplete
48
+ d as autocompleteKey,
49
+ g as defaultAutocompleteAdapter,
50
+ q as useAutocomplete
51
51
  };
52
52
  //# sourceMappingURL=aucotomplete.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"aucotomplete.mjs","sources":["../../../lib/data-provider-interface/composables/aucotomplete.ts"],"sourcesContent":["import { computed, inject, InjectionKey, toValue } from \"vue\";\nimport axios from \"axios\";\nimport { ComputedDpiContext, useDpiContext } from \"./useDpiContext\";\nimport { useRuntimeEnv } from \"../../composables/useRuntimeEnv\";\nimport { ResolvedConfig } from \"../../configurations/config-schema\";\n\nexport interface AutocompleteInstance {\n requestFirstEntrySuggestions(voc: string, base: string): Promise<any>;\n requestAutocompleteSuggestions(options: {\n voc: string;\n text: string;\n base: string;\n }): Promise<any>;\n requestResourceName(options: {\n voc: string;\n uri: string;\n envs: any;\n }): Promise<any>;\n}\n\nexport interface AutocompleteOptions {\n name: string;\n adapter: AutocompleteInstance;\n}\n\nexport const autocompleteKey = Symbol(\n \"autocomplete\"\n) as InjectionKey<AutocompleteInstance>;\n\nexport function defaultAutocompleteAdapter(options: {\n envs: ResolvedConfig\n dpiContext: ComputedDpiContext\n}): AutocompleteOptions {\n const { envs, dpiContext } = options\n \n return {\n name: \"default\",\n adapter: {\n requestFirstEntrySuggestions: async (voc, base) => {\n return axios.get(`${base}search?filter=vocabulary&vocabulary=${voc}`);\n },\n requestAutocompleteSuggestions: async (options) => {\n return axios.get(\n `${options.base}search?filter=vocabulary&vocabulary=${options.voc}&q=${options.text}&limit=14`\n );\n },\n requestResourceName: async (options) => {\n const { voc, uri } = options;\n const specification = computed(\n () => toValue(dpiContext)?.specification\n );\n\n // // Catching invalid URIs\n if (voc === undefined) return;\n if (voc === \"application\") return;\n\n let req = \"\";\n\n // vocabularies for spdx checksum and inana-media-types are structured differently in the backend then other vocabularies\n if (voc === \"iana-media-types\" || voc === \"spdx-checksum-algorithm\") {\n req = `${envs.api.baseUrl}vocabularies/${voc}`;\n } else {\n const value = uri.replace(\n (specification.value.vocabPrefixes as any)[voc],\n \"\"\n );\n const valueEncoded = encodeURIComponent(value);\n const requestByUri = value !== valueEncoded;\n req = !requestByUri\n ? `${envs.api.baseUrl}vocabularies/${voc}/${valueEncoded}`\n : `${\n envs.api.baseUrl\n }vocabularies/${voc}/vocable?resource=${encodeURIComponent(uri)}`;\n }\n return axios.get(req);\n },\n },\n };\n}\n\nexport function useAutocomplete() {\n const autocomplete = inject(autocompleteKey);\n\n if (!autocomplete) {\n throw new Error(\n \"[useAutocomplete] Autocomplete not found. Did you forget to inject it?\"\n );\n }\n\n return autocomplete;\n}\n"],"names":["autocompleteKey","defaultAutocompleteAdapter","options","envs","dpiContext","voc","base","axios","uri","specification","computed","_a","toValue","req","value","valueEncoded","useAutocomplete","autocomplete","inject"],"mappings":";;AAyBO,MAAMA,IAAkB;AAAA,EAC7B;AACF;AAEO,SAASC,EAA2BC,GAGnB;AAChB,QAAA,EAAE,MAAAC,GAAM,YAAAC,EAAe,IAAAF;AAEtB,SAAA;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,MACP,8BAA8B,OAAOG,GAAKC,MACjCC,EAAM,IAAI,GAAGD,CAAI,uCAAuCD,CAAG,EAAE;AAAA,MAEtE,gCAAgC,OAAOH,MAC9BK,EAAM;AAAA,QACX,GAAGL,EAAQ,IAAI,uCAAuCA,EAAQ,GAAG,MAAMA,EAAQ,IAAI;AAAA,MAAA;AAAA,MAGvF,qBAAqB,OAAOA,MAAY;AAChC,cAAA,EAAE,KAAAG,GAAK,KAAAG,EAAQN,IAAAA,GACfO,IAAgBC;AAAA,UACpB;;AAAM,oBAAAC,IAAAC,EAAQR,CAAU,MAAlB,gBAAAO,EAAqB;AAAA;AAAA,QAAA;AAK7B,YADIN,MAAQ,UACRA,MAAQ;AAAe;AAE3B,YAAIQ,IAAM;AAGN,YAAAR,MAAQ,sBAAsBA,MAAQ;AACxC,UAAAQ,IAAM,GAAGV,EAAK,IAAI,OAAO,gBAAgBE,CAAG;AAAA,aACvC;AACL,gBAAMS,IAAQN,EAAI;AAAA,YACfC,EAAc,MAAM,cAAsBJ,CAAG;AAAA,YAC9C;AAAA,UAAA,GAEIU,IAAe,mBAAmBD,CAAK;AAEvC,UAAAD,IADeC,MAAUC,IAG3B,GACEZ,EAAK,IAAI,OACX,gBAAgBE,CAAG,qBAAqB,mBAAmBG,CAAG,CAAC,KAH/D,GAAGL,EAAK,IAAI,OAAO,gBAAgBE,CAAG,IAAIU,CAAY;AAAA,QAI5D;AACO,eAAAR,EAAM,IAAIM,CAAG;AAAA,MACtB;AAAA,IACF;AAAA,EAAA;AAEJ;AAEO,SAASG,IAAkB;AAC1B,QAAAC,IAAeC,EAAOlB,CAAe;AAE3C,MAAI,CAACiB;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIG,SAAAA;AACT;"}
1
+ {"version":3,"file":"aucotomplete.mjs","sources":["../../../lib/data-provider-interface/composables/aucotomplete.ts"],"sourcesContent":["import { computed, inject, InjectionKey, toValue } from \"vue\";\nimport axios from \"axios\";\nimport { ComputedDpiContext, useDpiContext } from \"./useDpiContext\";\nimport { useRuntimeEnv } from \"../../composables/useRuntimeEnv\";\nimport { ResolvedConfig } from \"../../configurations/config-schema\";\n\nexport interface AutocompleteInstance {\n requestFirstEntrySuggestions(voc: string, base: string): Promise<any>;\n requestAutocompleteSuggestions(options: {\n voc: string;\n text: string;\n base: string;\n }): Promise<any>;\n requestResourceName(options: {\n voc: string;\n uri: string;\n envs: any;\n }): Promise<any>;\n}\n\nexport interface AutocompleteOptions {\n name: string;\n adapter: AutocompleteInstance;\n}\n\nexport const autocompleteKey = Symbol(\n \"autocomplete\"\n) as InjectionKey<AutocompleteInstance>;\n\nexport function defaultAutocompleteAdapter(options: {\n envs: ResolvedConfig;\n dpiContext: ComputedDpiContext;\n}): AutocompleteOptions {\n const { envs, dpiContext } = options;\n\n return {\n name: \"default\",\n adapter: {\n requestFirstEntrySuggestions: async (voc, base) => {\n return axios.get(`${base}search?filter=vocabulary&vocabulary=${voc}`);\n },\n requestAutocompleteSuggestions: async (options) => {\n return axios.get(\n `${options.base}search?filter=vocabulary&vocabulary=${options.voc}&q=${options.text}&limit=14`\n );\n },\n requestResourceName: async (options) => {\n const { voc, uri } = options;\n const specification = computed(\n () => toValue(dpiContext)?.specification\n );\n\n // console.log('Options:', voc, uri);\n\n // // Catching invalid URIs\n if (voc === undefined) return;\n if (voc === \"application\") return;\n\n let req = \"\";\n\n // vocabularies for spdx checksum and inana-media-types are structured differently in the backend then other vocabularies\n if (voc === \"iana-media-types\" || voc === \"spdx-checksum-algorithm\" || voc ==='dataset-status') {\n req = `${envs.api.baseUrl}vocabularies/${voc}`;\n } \n else {\n const value = uri.replace(\n (specification.value.vocabPrefixes as any)[voc],\n \"\"\n );\n const valueEncoded = encodeURIComponent(value);\n const requestByUri = value !== valueEncoded;\n req = !requestByUri\n ? `${envs.api.baseUrl}vocabularies/${voc}/${valueEncoded}`\n : `${\n envs.api.baseUrl\n }vocabularies/${voc}/vocable?resource=${encodeURIComponent(uri)}`;\n }\n\n let result = axios.get(req);\n\n // console.log(\"#### Req:\", req);\n\n return result;\n },\n },\n };\n}\n\nexport function useAutocomplete() {\n const autocomplete = inject(autocompleteKey);\n\n if (!autocomplete) {\n throw new Error(\n \"[useAutocomplete] Autocomplete not found. Did you forget to inject it?\"\n );\n }\n\n return autocomplete;\n}\n"],"names":["autocompleteKey","defaultAutocompleteAdapter","options","envs","dpiContext","voc","base","axios","uri","specification","computed","_a","toValue","req","value","valueEncoded","useAutocomplete","autocomplete","inject"],"mappings":";;AAyBO,MAAMA,IAAkB;AAAA,EAC7B;AACF;AAEO,SAASC,EAA2BC,GAGnB;AAChB,QAAA,EAAE,MAAAC,GAAM,YAAAC,EAAe,IAAAF;AAEtB,SAAA;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,MACP,8BAA8B,OAAOG,GAAKC,MACjCC,EAAM,IAAI,GAAGD,CAAI,uCAAuCD,CAAG,EAAE;AAAA,MAEtE,gCAAgC,OAAOH,MAC9BK,EAAM;AAAA,QACX,GAAGL,EAAQ,IAAI,uCAAuCA,EAAQ,GAAG,MAAMA,EAAQ,IAAI;AAAA,MAAA;AAAA,MAGvF,qBAAqB,OAAOA,MAAY;AAChC,cAAA,EAAE,KAAAG,GAAK,KAAAG,EAAQN,IAAAA,GACfO,IAAgBC;AAAA,UACpB;;AAAM,oBAAAC,IAAAC,EAAQR,CAAU,MAAlB,gBAAAO,EAAqB;AAAA;AAAA,QAAA;AAO7B,YADIN,MAAQ,UACRA,MAAQ;AAAe;AAE3B,YAAIQ,IAAM;AAGV,YAAIR,MAAQ,sBAAsBA,MAAQ,6BAA6BA,MAAO;AAC5E,UAAAQ,IAAM,GAAGV,EAAK,IAAI,OAAO,gBAAgBE,CAAG;AAAA,aAEzC;AACH,gBAAMS,IAAQN,EAAI;AAAA,YACfC,EAAc,MAAM,cAAsBJ,CAAG;AAAA,YAC9C;AAAA,UAAA,GAEIU,IAAe,mBAAmBD,CAAK;AAEvC,UAAAD,IADeC,MAAUC,IAG3B,GACEZ,EAAK,IAAI,OACX,gBAAgBE,CAAG,qBAAqB,mBAAmBG,CAAG,CAAC,KAH/D,GAAGL,EAAK,IAAI,OAAO,gBAAgBE,CAAG,IAAIU,CAAY;AAAA,QAI5D;AAMO,eAJMR,EAAM,IAAIM,CAAG;AAAA,MAK5B;AAAA,IACF;AAAA,EAAA;AAEJ;AAEO,SAASG,IAAkB;AAC1B,QAAAC,IAAeC,EAAOlB,CAAe;AAE3C,MAAI,CAACiB;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIG,SAAAA;AACT;"}
@@ -1,7 +1,7 @@
1
1
  import m from "./general-helper.mjs";
2
2
  import "lodash-es";
3
- async function p(i, e, t, n) {
4
- let a, o, c;
3
+ async function T(i, e, t, o) {
4
+ let u, s, c;
5
5
  e === "datasets" ? c = t.match(
6
6
  null,
7
7
  "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
@@ -12,82 +12,82 @@ async function p(i, e, t, n) {
12
12
  "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
13
13
  "http://www.w3.org/ns/dcat#Catalog",
14
14
  null
15
- ), o = m.getPagePrefixedNames(
15
+ ), s = m.getPagePrefixedNames(
16
16
  e,
17
- n.inputDefinition,
18
- n.pageConent
17
+ o.inputDefinition,
18
+ o.pageConent
19
19
  ), i[e] = {};
20
20
  for (let v of c) {
21
- a = v.subject.value;
22
- for (let b in o[e])
21
+ u = v.subject.value;
22
+ for (let b in s[e])
23
23
  i[e][b] = {}, g(
24
24
  e,
25
25
  i[e][b],
26
- a,
26
+ u,
27
27
  t,
28
- o[e][b],
29
- n
28
+ s[e][b],
29
+ o
30
30
  );
31
31
  }
32
32
  if (e === "datasets") {
33
33
  const v = t.match(
34
- a,
34
+ u,
35
35
  "http://www.w3.org/ns/dcat#distribution",
36
36
  null,
37
37
  null
38
38
  );
39
- o = m.getPagePrefixedNames(
39
+ s = m.getPagePrefixedNames(
40
40
  "distributions",
41
- n.inputDefinition,
42
- n.pageConent
41
+ o.inputDefinition,
42
+ o.pageConent
43
43
  ), i.datasets.Distributions.distributionList = [];
44
44
  for (let b of v) {
45
- const l = {}, u = b.object.value;
46
- for (let s in o.distributions)
47
- l[s] = {}, g(
45
+ const l = {}, a = b.object.value;
46
+ for (let n in s.distributions)
47
+ l[n] = {}, g(
48
48
  "distributions",
49
- l[s],
50
- u,
49
+ l[n],
50
+ a,
51
51
  t,
52
- o.distributions[s],
53
- n
52
+ s.distributions[n],
53
+ o
54
54
  );
55
55
  i.datasets.Distributions.distributionList.push(l);
56
56
  }
57
57
  }
58
58
  }
59
- function g(i, e, t, n, a, o) {
59
+ function g(i, e, t, o, u, s) {
60
60
  var v;
61
- const c = o.formatTypes;
62
- for (let b = 0; b < a.length; b += 1) {
63
- const l = a[b];
64
- let u = n.match(
61
+ const c = s.formatTypes;
62
+ for (let b = 0; b < u.length; b += 1) {
63
+ const l = u[b];
64
+ let a = o.match(
65
65
  t,
66
- m.addNamespace(l, o),
66
+ m.addNamespace(l, s),
67
67
  null,
68
68
  null
69
69
  );
70
70
  if (c.singularString[i].includes(l))
71
- I(u, e, l);
72
- else if (c.singularURI[i].includes(l))
73
- T(u, e, l, o);
71
+ I(a, e, l);
74
72
  else if (c.multipleURI[i].includes(l))
75
- N(u, e, l, i, o);
73
+ S(a, e, l, i, s);
74
+ else if (c.singularURI[i].includes(l))
75
+ p(a, e, l, s);
76
76
  else if (c.typedStrings[i].includes(l))
77
- S(u, e, l);
77
+ D(a, e, l, i);
78
78
  else if (c.multilingualStrings[i].includes(l))
79
- D(u, e, l);
79
+ N(a, e, l);
80
80
  else if (c.conditionalProperties[i].includes(l)) {
81
81
  if (l === "dct:publisher" || l === "dct:license") {
82
- for (let s of u)
83
- if (s.object.termType === "NamedNode")
84
- e[l] = { name: s.object.value, resource: s.object.value };
85
- else if (s.object.termType === "BlankNode") {
86
- const f = m.getNestedKeys(n.match(s.object, null, null, null), o).filter((r) => r !== "dct:title"), d = {};
82
+ for (let n of a)
83
+ if (n.object.termType === "NamedNode")
84
+ e[l] = { name: n.object.value, resource: n.object.value };
85
+ else if (n.object.termType === "BlankNode") {
86
+ const f = m.getNestedKeys(o.match(n.object, null, null, null), s).filter((r) => r !== "dct:title"), d = {};
87
87
  if (l === "dct:license") {
88
- const r = n.match(
89
- s.object,
90
- m.addNamespace("dct:title", o),
88
+ const r = o.match(
89
+ n.object,
90
+ m.addNamespace("dct:title", s),
91
91
  null,
92
92
  null
93
93
  );
@@ -97,45 +97,45 @@ function g(i, e, t, n, a, o) {
97
97
  g(
98
98
  i,
99
99
  d,
100
- s.object,
101
- n,
100
+ n.object,
101
+ o,
102
102
  f,
103
- o
103
+ s
104
104
  ), e[l] = d;
105
105
  }
106
106
  }
107
107
  } else if (c.groupedProperties[i].includes(l)) {
108
- if (u.size > 0) {
108
+ if (a.size > 0) {
109
109
  e[l] = [];
110
- for (let s of u) {
110
+ for (let n of a) {
111
111
  let f = {};
112
112
  if (l === "skos:notation")
113
- s.object.value && (f["@value"] = s.object.value), s.object.datatypeString && (f["@type"] = {
114
- name: s.object.datatypeString,
115
- resource: s.object.datatypeString
113
+ n.object.value && (f["@value"] = n.object.value), n.object.datatypeString && (f["@type"] = {
114
+ name: n.object.datatypeString,
115
+ resource: n.object.datatypeString
116
116
  });
117
117
  else {
118
- s.object.termType === "NamedNode" && (f["@id"] = s.object.value);
118
+ n.object.termType === "NamedNode" && (f["@id"] = n.object.value);
119
119
  const d = m.getNestedKeys(
120
- n.match(s.object, null, null, null),
121
- o
120
+ o.match(n.object, null, null, null),
121
+ s
122
122
  );
123
123
  g(
124
124
  i,
125
125
  f,
126
- s.object,
127
- n,
126
+ n.object,
127
+ o,
128
128
  d,
129
- o
129
+ s
130
130
  );
131
131
  }
132
132
  l === "dct:creator" || l === "vcard:hasAddress" || l === "skos:notation" || l === "spdx:checksum" ? e[l] = f : e[l].push(f);
133
133
  }
134
134
  }
135
135
  } else if (l === "dcat:temporalResolution") {
136
- if (u.size > 0) {
136
+ if (a.size > 0) {
137
137
  e[l] = {};
138
- const s = ["Y", "M", "D", "H", "M", "S"], f = {
138
+ const n = ["Y", "M", "D", "H", "M", "S"], f = {
139
139
  0: "Year",
140
140
  1: "Month",
141
141
  2: "Day",
@@ -144,11 +144,11 @@ function g(i, e, t, n, a, o) {
144
144
  5: "Second"
145
145
  };
146
146
  let d;
147
- for (let r of u)
147
+ for (let r of a)
148
148
  d = r.object.value;
149
149
  if (d.startsWith("P"))
150
- for (let r = 0; r < s.length; r += 1) {
151
- const j = d.indexOf(s[r]), h = d.substring(0, j), w = ((v = h == null ? void 0 : h.match(/\d+/g)) == null ? void 0 : v[0]) ?? "";
150
+ for (let r = 0; r < n.length; r += 1) {
151
+ const j = d.indexOf(n[r]), h = d.substring(0, j), w = ((v = h == null ? void 0 : h.match(/\d+/g)) == null ? void 0 : v[0]) ?? "";
152
152
  d = d.substring(j), e[l][f[r]] = w;
153
153
  }
154
154
  else {
@@ -158,23 +158,23 @@ function g(i, e, t, n, a, o) {
158
158
  }
159
159
  }
160
160
  } else if (l === "dct:identifier") {
161
- if (u.size > 0) {
161
+ if (a.size > 0) {
162
162
  e[l] = [];
163
- for (let s of u)
164
- e[l].push({ "@value": s.object.value });
163
+ for (let n of a)
164
+ e[l].push({ "@value": n.object.value });
165
165
  }
166
166
  } else if (l === "dct:rights") {
167
- if (u.size > 0) {
168
- let s;
169
- for (let f of u) {
167
+ if (a.size > 0) {
168
+ let n;
169
+ for (let f of a) {
170
170
  const d = f.object;
171
- s = n.match(
171
+ n = o.match(
172
172
  d,
173
- m.addNamespace("rdfs:label", o),
173
+ m.addNamespace("rdfs:label", s),
174
174
  null,
175
175
  null
176
176
  );
177
- for (let r of s)
177
+ for (let r of n)
178
178
  m.isUrl(r.object.value) ? e[l] = { "@type": "url", "rdfs:value": r.object.value } : e[l] = {
179
179
  "@type": "text",
180
180
  "rdfs:value": r.object.value
@@ -184,15 +184,15 @@ function g(i, e, t, n, a, o) {
184
184
  } else if (l === "datasetID" && i !== "datatsets")
185
185
  e[l] = t.substr(t.lastIndexOf("/") + 1), e.hidden_datasetIDFormHidden = t.substr(t.lastIndexOf("/") + 1);
186
186
  else if (l === "dcat:catalog" && i === "datasets") {
187
- u.size > 0 || (u = n.match(t, "dcat:catalog", null, null)), e[l] = "";
188
- for (let s of u)
189
- e[l] = s.object.value;
190
- } else if (l === "rdf:type" && u.size > 0) {
187
+ a.size > 0 || (a = o.match(t, "dcat:catalog", null, null)), e[l] = "";
188
+ for (let n of a)
189
+ e[l] = n.object.value;
190
+ } else if (l === "rdf:type" && a.size > 0) {
191
191
  e[l] = "";
192
- for (let s of u)
192
+ for (let n of a)
193
193
  e[l] = m.removeNamespace(
194
- s.object.value,
195
- o
194
+ n.object.value,
195
+ s
196
196
  );
197
197
  }
198
198
  }
@@ -200,58 +200,67 @@ function g(i, e, t, n, a, o) {
200
200
  function I(i, e, t) {
201
201
  if (i.size > 0) {
202
202
  e[t] = "";
203
- for (let n of i)
204
- e[t] = n.object.value;
203
+ for (let o of i)
204
+ e[t] = o.object.value;
205
205
  }
206
206
  }
207
- function T(i, e, t, n) {
208
- const a = n.formatTypes;
207
+ function p(i, e, t, o) {
208
+ const u = o.formatTypes;
209
209
  if (i.size > 0) {
210
210
  e[t] = "";
211
- for (let o of i) {
212
- const c = o.object.value;
213
- c.startsWith("mailto:") ? e[t] = c.replace("mailto:", "") : a.URIformat.voc.includes(t) ? e[t] = { name: c, resource: c } : a.URIformat.string.includes(t) ? e[t] = c : e[t] = { "@id": c };
211
+ for (let s of i) {
212
+ const c = s.object.value;
213
+ c.startsWith("mailto:") ? e[t] = c.replace("mailto:", "") : u.URIformat.voc.includes(t) ? e[t] = { name: c, resource: c } : u.URIformat.string.includes(t) ? e[t] = c : e[t] = { "@id": c };
214
214
  }
215
215
  }
216
216
  }
217
- function N(i, e, t, n, a) {
218
- const o = a.formatTypes;
217
+ function S(i, e, t, o, u) {
218
+ const s = u.formatTypes;
219
219
  if (i.size > 0) {
220
220
  e[t] = [];
221
221
  for (let c of i)
222
- o.URIformat.voc.includes(t) ? e[t].push({ name: c.object.value, resource: c.object.value }) : o.URIformat.string.includes(t) ? e[t].push(c.object.value) : e[t].push({ "@id": c.object.value });
222
+ s.URIformat.voc.includes(t) ? e[t].push({ name: c.object.value, resource: c.object.value }) : s.URIformat.string.includes(t) ? e[t].push(c.object.value) : e[t].push({ "@id": c.object.value });
223
223
  }
224
224
  }
225
- function S(i, e, t) {
225
+ function D(i, e, t, o) {
226
226
  if (i.size > 0) {
227
227
  e[t] = "";
228
- for (let n of i)
228
+ for (let u of i)
229
229
  if (t === "dcat:spatialResolutionInMeters" || t === "dcat:byteSize")
230
- e[t] = n.object.value;
230
+ e[t] = u.object.value;
231
231
  else if (t === "dcat:startDate" || t === "dcat:endDate")
232
- e[t] = n.object.value;
232
+ e[t] = u.object.value;
233
233
  else if (t === "pv:distributionType")
234
- e[t] = { "@Tag": n.object.value };
234
+ e[t] = { "@Tag": u.object.value };
235
235
  else if (t === "pv:isLeading")
236
- e["pv:distributionType"].lead = n.object.value;
236
+ e["pv:distributionType"].lead = u.object.value;
237
237
  else {
238
- let a;
239
- n.object.value.includes("T") ? a = "dateTime" : a = "date", e[t] = { "@type": a, "@value": n.object.value };
238
+ let s;
239
+ if (u.object.value.includes("T"))
240
+ s = "dateTime";
241
+ else if (o === "distributions") {
242
+ s = "dateTime";
243
+ let c = u.object.value + "T00:00:00";
244
+ e[t] = { "@type": s, "@value": c };
245
+ break;
246
+ } else
247
+ s = "date";
248
+ e[t] = { "@type": s, "@value": u.object.value };
240
249
  }
241
250
  }
242
251
  }
243
- function D(i, e, t) {
252
+ function N(i, e, t) {
244
253
  if (i.size > 0) {
245
254
  e[t] = [];
246
- for (let n of i)
247
- if (!n.object.language.includes("-")) {
248
- const a = {};
249
- a["@value"] = n.object.value, a["@language"] = n.object.language, e[t].push(a);
255
+ for (let o of i)
256
+ if (!o.object.language.includes("-")) {
257
+ const u = {};
258
+ u["@value"] = o.object.value, u["@language"] = o.object.language, e[t].push(u);
250
259
  }
251
260
  }
252
261
  }
253
262
  const R = {
254
- convertToInput: p
263
+ convertToInput: T
255
264
  };
256
265
  export {
257
266
  R as default
@@ -1 +1 @@
1
- {"version":3,"file":"inputConverter.mjs","sources":["../../../lib/data-provider-interface/utils/inputConverter.js"],"sourcesContent":["import generalHelper from \"./general-helper\";\nimport { has, isEmpty } from \"lodash\";\n\n/**\n * Converts given data for given property into input form format\n * @param {*} state state from store\n * @param {*} property Property to convert data for (datasets/catalogues)\n * @param {*} data Linked data within a dataset\n */\nasync function convertToInput(state, property, data, dpiConfig) {\n let generalID;\n let namespaceKeys;\n let propertyQuads;\n\n if (property === \"datasets\") {\n propertyQuads = data.match(\n null,\n \"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\",\n \"http://www.w3.org/ns/dcat#Dataset\",\n null\n );\n } else {\n propertyQuads = data.match(\n null,\n \"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\",\n \"http://www.w3.org/ns/dcat#Catalog\",\n null\n );\n }\n\n // extract data for datasets/catalogues\n namespaceKeys = generalHelper.getPagePrefixedNames(\n property,\n dpiConfig.inputDefinition,\n dpiConfig.pageConent\n );\n state[property] = {};\n for (let el of propertyQuads) {\n // there should be only one dataset id\n generalID = el.subject.value;\n\n for (let pageName in namespaceKeys[property]) {\n state[property][pageName] = {};\n convertProperties(\n property,\n state[property][pageName],\n generalID,\n data,\n namespaceKeys[property][pageName],\n dpiConfig\n );\n }\n }\n\n // also add distribution data\n if (property === \"datasets\") {\n const distributionQuads = data.match(\n generalID,\n \"http://www.w3.org/ns/dcat#distribution\",\n null,\n null\n );\n namespaceKeys = generalHelper.getPagePrefixedNames(\n \"distributions\",\n dpiConfig.inputDefinition,\n dpiConfig.pageConent\n );\n state.datasets.Distributions[\"distributionList\"] = [];\n for (let el of distributionQuads) {\n const currentDistribution = {};\n\n const distributionId = el.object.value;\n for (let pageName in namespaceKeys[\"distributions\"]) {\n currentDistribution[pageName] = {};\n convertProperties(\n \"distributions\",\n currentDistribution[pageName],\n distributionId,\n data,\n namespaceKeys[\"distributions\"][pageName],\n dpiConfig\n );\n }\n state.datasets.Distributions.distributionList.push(currentDistribution);\n }\n }\n}\n\n/**\n * Converts value for given property from RDF into input form format\n * @param {*} property Parent property of given value (datasets/distributions/catalogues)\n * @param {*} state State from store\n * @param {*} id Id of parent node which serves as subject\n * @param {*} data Linked data\n * @param {*} propertyKeys Keys of properties to check\n */\nfunction convertProperties(property, state, id, data, propertyKeys, dpiConfig) {\n const formatType = dpiConfig.formatTypes;\n\n for (let index = 0; index < propertyKeys.length; index += 1) {\n const key = propertyKeys[index];\n let subData = data.match(\n id,\n generalHelper.addNamespace(key, dpiConfig),\n null,\n null\n );\n\n if (formatType.singularString[property].includes(key)) {\n convertSingularStrings(subData, state, key);\n } else if (formatType.singularURI[property].includes(key)) {\n convertSingularURI(subData, state, key, dpiConfig);\n } else if (formatType.multipleURI[property].includes(key)) {\n convertMultipleURI(subData, state, key, property, dpiConfig);\n } else if (formatType.typedStrings[property].includes(key)) {\n convertTypedString(subData, state, key);\n } else if (formatType.multilingualStrings[property].includes(key)) {\n convertMultilingual(subData, state, key);\n } else if (formatType.conditionalProperties[property].includes(key)) {\n // publisher either is an URI or a group with multiple values (name, homepage, email)\n if (key === \"dct:publisher\" || key === \"dct:license\") {\n for (let el of subData) {\n if (el.object.termType === \"NamedNode\") {\n state[key] = { name: el.object.value, resource: el.object.value };\n } else if (el.object.termType === \"BlankNode\") {\n // get keys for nested values without dct'title (special format)\n const nestedKeys = generalHelper\n .getNestedKeys(data.match(el.object, null, null, null), dpiConfig)\n .filter((el) => el !== \"dct:title\");\n const nestedProperties = {};\n\n // convert nested values\n if (key === \"dct:license\") {\n const licenceTitleQuad = data.match(\n el.object,\n generalHelper.addNamespace(\"dct:title\", dpiConfig),\n null,\n null\n );\n for (let el of licenceTitleQuad) {\n nestedProperties[\"dct:title\"] = el.object.value;\n }\n }\n\n convertProperties(\n property,\n nestedProperties,\n el.object,\n data,\n nestedKeys,\n dpiConfig\n );\n state[key] = nestedProperties;\n }\n }\n }\n } else if (formatType.groupedProperties[property].includes(key)) {\n if (subData.size > 0) {\n state[key] = [];\n // there could be multiple nodes with data for a property\n for (let el of subData) {\n let currentState = {};\n if (key === \"skos:notation\") {\n // skos notation behaves differently\n // there should be a typed literal given which should be seperated into @value and @type\n if (el.object.value) currentState[\"@value\"] = el.object.value;\n if (el.object.datatypeString)\n currentState[\"@type\"] = {\n name: el.object.datatypeString,\n resource: el.object.datatypeString,\n };\n } else {\n // some properties have a named node containing data, the value of this named node also is a value form the input form (typically @id)\n if (el.object.termType === \"NamedNode\")\n currentState[\"@id\"] = el.object.value;\n // get keys of node properties\n const nestedKeys = generalHelper.getNestedKeys(\n data.match(el.object, null, null, null),\n dpiConfig\n );\n convertProperties(\n property,\n currentState,\n el.object,\n data,\n nestedKeys,\n dpiConfig\n );\n }\n // creator not an array\n if (\n key === \"dct:creator\" ||\n key === \"vcard:hasAddress\" ||\n key === \"skos:notation\" ||\n key === \"spdx:checksum\"\n )\n state[key] = currentState;\n else state[key].push(currentState);\n }\n }\n } else if (key === \"dcat:temporalResolution\") {\n // temporal resolution is displayed as group of input forms for each property (year, month, day, ...)\n // the form provides the data as following: [ { 'Year': '...', 'Month': '...', ... } ]\n // the linked data format of this property looks like this: P?Y?M?DT?H?M?S\n if (subData.size > 0) {\n state[key] = {};\n\n const shorts = [\"Y\", \"M\", \"D\", \"H\", \"M\", \"S\"];\n const forms = {\n 0: \"Year\",\n 1: \"Month\",\n 2: \"Day\",\n 3: \"Hour\",\n 4: \"Minute\",\n 5: \"Second\",\n };\n\n // should be oly one quad\n let resolutionValue;\n for (let el of subData) {\n resolutionValue = el.object.value;\n }\n\n // backend converts temporalResolution values without a date into seconds for time values\n if (!resolutionValue.startsWith(\"P\")) {\n // setting year, month and day to 0\n state[key][forms[0]] = 0;\n state[key][forms[1]] = 0;\n state[key][forms[2]] = 0;\n\n // converting seconds into HH:MM:SS\n const data = new Date(resolutionValue * 1000)\n .toISOString()\n .slice(11, 19);\n state[key][forms[3]] = data.slice(0, 2);\n state[key][forms[4]] = data.slice(3, 5);\n state[key][forms[5]] = data.slice(7, 9);\n } else {\n // find index of letter for time period\n // extract substring until this index\n // extract number from string and set as according value for input\n for (let tempIndex = 0; tempIndex < shorts.length; tempIndex += 1) {\n const position = resolutionValue.indexOf(shorts[tempIndex]); // position of duration letter\n const subDuration = resolutionValue.substring(0, position); // substring until position of duration letter\n const value = subDuration?.match(/\\d+/g)?.[0] ?? \"\"; // extract number\n resolutionValue = resolutionValue.substring(position); // overwrite resolution string with shortened version (missing the extracted part)\n state[key][forms[tempIndex]] = value; // write to result object\n }\n }\n }\n } else if (key === \"dct:identifier\") {\n if (subData.size > 0) {\n // identifier should be provided as array of strings\n // [{'@value': '...'}, {'@value': '...'}, ...]\n state[key] = [];\n\n for (let el of subData) {\n state[key].push({ \"@value\": el.object.value });\n }\n }\n } else if (key === \"dct:rights\") {\n // rights is conditional and gets a string\n // rights always includes a type so everything is located within a blank node\n // also rights is a singular property\n if (subData.size > 0) {\n let nodeData;\n // get id of blank node and associated label data\n for (let el of subData) {\n const rightsBlankNode = el.object;\n nodeData = data.match(\n rightsBlankNode,\n generalHelper.addNamespace(\"rdfs:label\", dpiConfig),\n null,\n null\n );\n for (let label of nodeData) {\n if (generalHelper.isUrl(label.object.value))\n state[key] = { \"@type\": \"url\", \"rdfs:value\": label.object.value };\n else\n state[key] = {\n \"@type\": \"text\",\n \"rdfs:value\": label.object.value,\n };\n }\n }\n }\n } else if (key === \"datasetID\" && property !== \"datatsets\") {\n // id is given as complete URI\n // dataset-/catalogue-id is string following the last /\n state[key] = id.substr(id.lastIndexOf(\"/\") + 1);\n state[\"hidden_datasetIDFormHidden\"] = id.substr(id.lastIndexOf(\"/\") + 1);\n } else if (key === \"dcat:catalog\" && property === \"datasets\") {\n // datasets also have a property called dcat:catalog (not valid DCAT-AP)\n // property is needed to determine catalog the dataset belongs to\n if (!(subData.size > 0)) {\n // bceause dcat:catalog is no valid DCAT-AP it is possible that the prefix is not resolved\n // therefore it is also possible to get the data by using the shortned key\n subData = data.match(id, \"dcat:catalog\", null, null);\n }\n\n state[key] = \"\";\n\n // there should only be one catalog\n for (let cat of subData) {\n state[key] = cat.object.value;\n }\n } else if (key === \"rdf:type\") {\n // some properties have a type which can be selected\n // the type also has a namespace and therefore need to be shortened ( e.g. from https://...Individual to vcard:Individual)\n if (subData.size > 0) {\n state[key] = \"\";\n\n // typically there is only on type provided for each property instance\n for (let el of subData) {\n state[key] = generalHelper.removeNamespace(\n el.object.value,\n dpiConfig\n );\n }\n }\n }\n }\n}\n\n//-----------------------------------------------------------------------------------------------------\n// basic conversion methods for different categories of data\n//-----------------------------------------------------------------------------------------------------\n// seems at first to be unnecessary but if we want to convert nested properties as well, we need these\n// methods (especially to provide the correct parent URI)\n\n/**\n *\n * @param {*} data\n * @param {*} state\n * @param {*} key\n */\nfunction convertSingularStrings(data, state, key) {\n if (data.size > 0) {\n state[key] = \"\";\n\n for (let el of data) {\n state[key] = el.object.value;\n }\n }\n}\n\n/**\n *\n * @param {*} data\n * @param {*} state\n * @param {*} key\n */\nfunction convertSingularURI(data, state, key, dpiConfig) {\n const formatType = dpiConfig.formatTypes;\n\n if (data.size > 0) {\n state[key] = \"\";\n\n for (let el of data) {\n const value = el.object.value;\n\n if (value.startsWith(\"mailto:\")) {\n state[key] = value.replace(\"mailto:\", \"\");\n } else {\n if (formatType.URIformat.voc.includes(key))\n state[key] = { name: value, resource: value };\n else if (formatType.URIformat.string.includes(key)) state[key] = value;\n else state[key] = { \"@id\": value };\n }\n }\n }\n}\n\n/**\n *\n * @param {*} data\n * @param {*} state\n * @param {*} key\n */\nfunction convertMultipleURI(data, state, key, property, dpiConfig) {\n // there are two different formats the frontend need to deliver multiple URIs\n // 1: [ \"URI1\", \"URI2\" ]\n // 2: [ { \"@id\": \"URI1\" }, { \"@id\": \"URI2\" } ]\n\n const formatType = dpiConfig.formatTypes;\n\n if (data.size > 0) {\n state[key] = [];\n for (let el of data) {\n if (formatType.URIformat.voc.includes(key))\n state[key].push({ name: el.object.value, resource: el.object.value });\n else if (formatType.URIformat.string.includes(key))\n state[key].push(el.object.value);\n else state[key].push({ \"@id\": el.object.value });\n }\n }\n}\n\n/**\n *\n * @param {*} data\n * @param {*} state\n * @param {*} key\n */\nfunction convertTypedString(data, state, key) {\n // some properties have a type\n // normally this type is not used within the forntend form and therefore won't be saved to frontend values\n\n if (data.size > 0) {\n state[key] = \"\";\n for (let el of data) {\n if (key === \"dcat:spatialResolutionInMeters\" || key === \"dcat:byteSize\")\n state[key] = el.object.value;\n else if (key === \"dcat:startDate\" || key === \"dcat:endDate\") {\n state[key] = el.object.value;\n } else if (key === \"pv:distributionType\") {\n state[key] = { \"@Tag\": el.object.value };\n } else if (key === \"pv:isLeading\") {\n state[\"pv:distributionType\"].lead = el.object.value;\n } else {\n let dateType;\n if (el.object.value.includes(\"T\")) dateType = \"dateTime\";\n else dateType = \"date\";\n\n state[key] = { \"@type\": dateType, \"@value\": el.object.value };\n }\n }\n }\n}\n\n/**\n * Converts and writes multilingual data to store\n * @param {*} data DatasetCore containing an array of quads\n * @param {*} state State for current key\n * @param {*} key Name of current property (e.g: 'dct:title')\n */\nfunction convertMultilingual(data, state, key) {\n // multilingual data is always stored within an array containing object with the value and it's language\n // [ {'@value': '...', '@language': '...'}, ...]\n if (data.size > 0) {\n state[key] = [];\n\n for (let el of data) {\n if (!el.object.language.includes(\"-\")) {\n // machine translation language tags look like this \"fi-t-en-t0-mtec\" and should not be included\n const currentElement = {};\n currentElement[\"@value\"] = el.object.value; // actual value\n currentElement[\"@language\"] = el.object.language; // language of value\n state[key].push(currentElement);\n }\n }\n }\n}\n\nexport default {\n convertToInput,\n};\n"],"names":["convertToInput","state","property","data","dpiConfig","generalID","namespaceKeys","propertyQuads","generalHelper","el","pageName","convertProperties","distributionQuads","currentDistribution","distributionId","id","propertyKeys","formatType","index","key","subData","convertSingularStrings","convertSingularURI","convertMultipleURI","convertTypedString","convertMultilingual","nestedKeys","nestedProperties","licenceTitleQuad","currentState","shorts","forms","resolutionValue","tempIndex","position","subDuration","value","_a","nodeData","rightsBlankNode","label","cat","dateType","currentElement","toInput"],"mappings":"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"}
1
+ {"version":3,"file":"inputConverter.mjs","sources":["../../../lib/data-provider-interface/utils/inputConverter.js"],"sourcesContent":["import generalHelper from \"./general-helper\";\nimport { has, isEmpty } from \"lodash\";\n\n/**\n * Converts given data for given property into input form format\n * @param {*} state state from store\n * @param {*} property Property to convert data for (datasets/catalogues)\n * @param {*} data Linked data within a dataset\n */\nasync function convertToInput(state, property, data, dpiConfig) {\n let generalID;\n let namespaceKeys;\n let propertyQuads;\n\n if (property === \"datasets\") {\n propertyQuads = data.match(\n null,\n \"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\",\n \"http://www.w3.org/ns/dcat#Dataset\",\n null\n );\n } else {\n propertyQuads = data.match(\n null,\n \"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\",\n \"http://www.w3.org/ns/dcat#Catalog\",\n null\n );\n }\n\n // extract data for datasets/catalogues\n namespaceKeys = generalHelper.getPagePrefixedNames(\n property,\n dpiConfig.inputDefinition,\n dpiConfig.pageConent\n );\n state[property] = {};\n for (let el of propertyQuads) {\n // there should be only one dataset id\n generalID = el.subject.value;\n\n for (let pageName in namespaceKeys[property]) {\n state[property][pageName] = {};\n convertProperties(\n property,\n state[property][pageName],\n generalID,\n data,\n namespaceKeys[property][pageName],\n dpiConfig\n );\n }\n }\n\n // also add distribution data\n if (property === \"datasets\") {\n const distributionQuads = data.match(\n generalID,\n \"http://www.w3.org/ns/dcat#distribution\",\n null,\n null\n );\n namespaceKeys = generalHelper.getPagePrefixedNames(\n \"distributions\",\n dpiConfig.inputDefinition,\n dpiConfig.pageConent\n );\n state.datasets.Distributions[\"distributionList\"] = [];\n for (let el of distributionQuads) {\n const currentDistribution = {};\n\n const distributionId = el.object.value;\n for (let pageName in namespaceKeys[\"distributions\"]) {\n currentDistribution[pageName] = {};\n convertProperties(\n \"distributions\",\n currentDistribution[pageName],\n distributionId,\n data,\n namespaceKeys[\"distributions\"][pageName],\n dpiConfig\n );\n }\n state.datasets.Distributions.distributionList.push(currentDistribution);\n }\n }\n}\n\n/**\n * Converts value for given property from RDF into input form format\n * @param {*} property Parent property of given value (datasets/distributions/catalogues)\n * @param {*} state State from store\n * @param {*} id Id of parent node which serves as subject\n * @param {*} data Linked data\n * @param {*} propertyKeys Keys of properties to check\n */\nfunction convertProperties(property, state, id, data, propertyKeys, dpiConfig) {\n const formatType = dpiConfig.formatTypes;\n\n for (let index = 0; index < propertyKeys.length; index += 1) {\n const key = propertyKeys[index];\n let subData = data.match(\n id,\n generalHelper.addNamespace(key, dpiConfig),\n null,\n null\n );\n\n if (formatType.singularString[property].includes(key)) {\n convertSingularStrings(subData, state, key);\n } else if (formatType.multipleURI[property].includes(key)) {\n convertMultipleURI(subData, state, key, property, dpiConfig);\n } else if (formatType.singularURI[property].includes(key)) {\n convertSingularURI(subData, state, key, dpiConfig);\n } else if (formatType.typedStrings[property].includes(key)) {\n convertTypedString(subData, state, key, property);\n } else if (formatType.multilingualStrings[property].includes(key)) {\n convertMultilingual(subData, state, key);\n } else if (formatType.conditionalProperties[property].includes(key)) {\n // publisher either is an URI or a group with multiple values (name, homepage, email)\n if (key === \"dct:publisher\" || key === \"dct:license\") {\n for (let el of subData) {\n if (el.object.termType === \"NamedNode\") {\n state[key] = { name: el.object.value, resource: el.object.value };\n } else if (el.object.termType === \"BlankNode\") {\n // get keys for nested values without dct'title (special format)\n const nestedKeys = generalHelper\n .getNestedKeys(data.match(el.object, null, null, null), dpiConfig)\n .filter((el) => el !== \"dct:title\");\n const nestedProperties = {};\n\n // convert nested values\n if (key === \"dct:license\") {\n const licenceTitleQuad = data.match(\n el.object,\n generalHelper.addNamespace(\"dct:title\", dpiConfig),\n null,\n null\n );\n for (let el of licenceTitleQuad) {\n nestedProperties[\"dct:title\"] = el.object.value;\n }\n }\n\n convertProperties(\n property,\n nestedProperties,\n el.object,\n data,\n nestedKeys,\n dpiConfig\n );\n state[key] = nestedProperties;\n }\n }\n }\n } else if (formatType.groupedProperties[property].includes(key)) {\n if (subData.size > 0) {\n state[key] = [];\n // there could be multiple nodes with data for a property\n for (let el of subData) {\n let currentState = {};\n if (key === \"skos:notation\") {\n // skos notation behaves differently\n // there should be a typed literal given which should be seperated into @value and @type\n if (el.object.value) currentState[\"@value\"] = el.object.value;\n if (el.object.datatypeString)\n currentState[\"@type\"] = {\n name: el.object.datatypeString,\n resource: el.object.datatypeString,\n };\n } else {\n // some properties have a named node containing data, the value of this named node also is a value form the input form (typically @id)\n if (el.object.termType === \"NamedNode\")\n currentState[\"@id\"] = el.object.value;\n // get keys of node properties\n const nestedKeys = generalHelper.getNestedKeys(\n data.match(el.object, null, null, null),\n dpiConfig\n );\n convertProperties(\n property,\n currentState,\n el.object,\n data,\n nestedKeys,\n dpiConfig\n );\n }\n // creator not an array\n if (\n key === \"dct:creator\" ||\n key === \"vcard:hasAddress\" ||\n key === \"skos:notation\" ||\n key === \"spdx:checksum\"\n )\n state[key] = currentState;\n else state[key].push(currentState);\n }\n }\n } else if (key === \"dcat:temporalResolution\") {\n // temporal resolution is displayed as group of input forms for each property (year, month, day, ...)\n // the form provides the data as following: [ { 'Year': '...', 'Month': '...', ... } ]\n // the linked data format of this property looks like this: P?Y?M?DT?H?M?S\n if (subData.size > 0) {\n state[key] = {};\n\n const shorts = [\"Y\", \"M\", \"D\", \"H\", \"M\", \"S\"];\n const forms = {\n 0: \"Year\",\n 1: \"Month\",\n 2: \"Day\",\n 3: \"Hour\",\n 4: \"Minute\",\n 5: \"Second\",\n };\n\n // should be oly one quad\n let resolutionValue;\n for (let el of subData) {\n resolutionValue = el.object.value;\n }\n\n // backend converts temporalResolution values without a date into seconds for time values\n if (!resolutionValue.startsWith(\"P\")) {\n // setting year, month and day to 0\n state[key][forms[0]] = 0;\n state[key][forms[1]] = 0;\n state[key][forms[2]] = 0;\n\n // converting seconds into HH:MM:SS\n const data = new Date(resolutionValue * 1000)\n .toISOString()\n .slice(11, 19);\n state[key][forms[3]] = data.slice(0, 2);\n state[key][forms[4]] = data.slice(3, 5);\n state[key][forms[5]] = data.slice(7, 9);\n } else {\n // find index of letter for time period\n // extract substring until this index\n // extract number from string and set as according value for input\n for (let tempIndex = 0; tempIndex < shorts.length; tempIndex += 1) {\n const position = resolutionValue.indexOf(shorts[tempIndex]); // position of duration letter\n const subDuration = resolutionValue.substring(0, position); // substring until position of duration letter\n const value = subDuration?.match(/\\d+/g)?.[0] ?? \"\"; // extract number\n resolutionValue = resolutionValue.substring(position); // overwrite resolution string with shortened version (missing the extracted part)\n state[key][forms[tempIndex]] = value; // write to result object\n }\n }\n }\n } else if (key === \"dct:identifier\") {\n if (subData.size > 0) {\n // identifier should be provided as array of strings\n // [{'@value': '...'}, {'@value': '...'}, ...]\n state[key] = [];\n\n for (let el of subData) {\n state[key].push({ \"@value\": el.object.value });\n }\n }\n } else if (key === \"dct:rights\") {\n // rights is conditional and gets a string\n // rights always includes a type so everything is located within a blank node\n // also rights is a singular property\n if (subData.size > 0) {\n let nodeData;\n // get id of blank node and associated label data\n for (let el of subData) {\n const rightsBlankNode = el.object;\n nodeData = data.match(\n rightsBlankNode,\n generalHelper.addNamespace(\"rdfs:label\", dpiConfig),\n null,\n null\n );\n for (let label of nodeData) {\n if (generalHelper.isUrl(label.object.value))\n state[key] = { \"@type\": \"url\", \"rdfs:value\": label.object.value };\n else\n state[key] = {\n \"@type\": \"text\",\n \"rdfs:value\": label.object.value,\n };\n }\n }\n }\n } else if (key === \"datasetID\" && property !== \"datatsets\") {\n // id is given as complete URI\n // dataset-/catalogue-id is string following the last /\n state[key] = id.substr(id.lastIndexOf(\"/\") + 1);\n state[\"hidden_datasetIDFormHidden\"] = id.substr(id.lastIndexOf(\"/\") + 1);\n } else if (key === \"dcat:catalog\" && property === \"datasets\") {\n // datasets also have a property called dcat:catalog (not valid DCAT-AP)\n // property is needed to determine catalog the dataset belongs to\n if (!(subData.size > 0)) {\n // bceause dcat:catalog is no valid DCAT-AP it is possible that the prefix is not resolved\n // therefore it is also possible to get the data by using the shortned key\n subData = data.match(id, \"dcat:catalog\", null, null);\n }\n\n state[key] = \"\";\n\n // there should only be one catalog\n for (let cat of subData) {\n state[key] = cat.object.value;\n }\n } else if (key === \"rdf:type\") {\n // some properties have a type which can be selected\n // the type also has a namespace and therefore need to be shortened ( e.g. from https://...Individual to vcard:Individual)\n if (subData.size > 0) {\n state[key] = \"\";\n\n // typically there is only on type provided for each property instance\n for (let el of subData) {\n state[key] = generalHelper.removeNamespace(\n el.object.value,\n dpiConfig\n );\n }\n }\n }\n }\n}\n\n//-----------------------------------------------------------------------------------------------------\n// basic conversion methods for different categories of data\n//-----------------------------------------------------------------------------------------------------\n// seems at first to be unnecessary but if we want to convert nested properties as well, we need these\n// methods (especially to provide the correct parent URI)\n\n/**\n *\n * @param {*} data\n * @param {*} state\n * @param {*} key\n */\nfunction convertSingularStrings(data, state, key) {\n if (data.size > 0) {\n state[key] = \"\";\n\n for (let el of data) {\n state[key] = el.object.value;\n }\n }\n}\n\n/**\n *\n * @param {*} data\n * @param {*} state\n * @param {*} key\n */\nfunction convertSingularURI(data, state, key, dpiConfig) {\n const formatType = dpiConfig.formatTypes;\n\n if (data.size > 0) {\n state[key] = \"\";\n\n for (let el of data) {\n const value = el.object.value;\n\n if (value.startsWith(\"mailto:\")) {\n state[key] = value.replace(\"mailto:\", \"\");\n } else {\n if (formatType.URIformat.voc.includes(key))\n state[key] = { name: value, resource: value };\n else if (formatType.URIformat.string.includes(key)) state[key] = value;\n else state[key] = { \"@id\": value };\n }\n }\n }\n}\n\n/**\n *\n * @param {*} data\n * @param {*} state\n * @param {*} key\n */\nfunction convertMultipleURI(data, state, key, property, dpiConfig) {\n // there are two different formats the frontend need to deliver multiple URIs\n // 1: [ \"URI1\", \"URI2\" ]\n // 2: [ { \"@id\": \"URI1\" }, { \"@id\": \"URI2\" } ]\n\n const formatType = dpiConfig.formatTypes;\n\n if (data.size > 0) {\n state[key] = [];\n for (let el of data) {\n if (formatType.URIformat.voc.includes(key))\n state[key].push({ name: el.object.value, resource: el.object.value });\n else if (formatType.URIformat.string.includes(key))\n state[key].push(el.object.value);\n else state[key].push({ \"@id\": el.object.value });\n }\n }\n}\n\n/**\n *\n * @param {*} data\n * @param {*} state\n * @param {*} key\n */\nfunction convertTypedString(data, state, key, property) {\n // some properties have a type\n // normally this type is not used within the forntend form and therefore won't be saved to frontend values\n\n if (data.size > 0) {\n state[key] = \"\";\n for (let el of data) {\n if (key === \"dcat:spatialResolutionInMeters\" || key === \"dcat:byteSize\")\n state[key] = el.object.value;\n else if (key === \"dcat:startDate\" || key === \"dcat:endDate\") {\n state[key] = el.object.value;\n } else if (key === \"pv:distributionType\") {\n state[key] = { \"@Tag\": el.object.value };\n } else if (key === \"pv:isLeading\") {\n state[\"pv:distributionType\"].lead = el.object.value;\n } else {\n let dateType;\n if (el.object.value.includes(\"T\")) {\n dateType = \"dateTime\";\n } else {\n if (property === \"distributions\") {\n dateType = \"dateTime\";\n let newDateString = el.object.value + \"T00:00:00\";\n // console.log(newDateString);\n state[key] = { \"@type\": dateType, \"@value\": newDateString };\n break;\n } else dateType = \"date\";\n }\n state[key] = { \"@type\": dateType, \"@value\": el.object.value };\n }\n }\n }\n}\n\n/**\n * Converts and writes multilingual data to store\n * @param {*} data DatasetCore containing an array of quads\n * @param {*} state State for current key\n * @param {*} key Name of current property (e.g: 'dct:title')\n */\nfunction convertMultilingual(data, state, key) {\n // multilingual data is always stored within an array containing object with the value and it's language\n // [ {'@value': '...', '@language': '...'}, ...]\n if (data.size > 0) {\n state[key] = [];\n\n for (let el of data) {\n if (!el.object.language.includes(\"-\")) {\n // machine translation language tags look like this \"fi-t-en-t0-mtec\" and should not be included\n const currentElement = {};\n currentElement[\"@value\"] = el.object.value; // actual value\n currentElement[\"@language\"] = el.object.language; // language of value\n state[key].push(currentElement);\n }\n }\n }\n}\n\nexport default {\n convertToInput,\n};\n"],"names":["convertToInput","state","property","data","dpiConfig","generalID","namespaceKeys","propertyQuads","generalHelper","el","pageName","convertProperties","distributionQuads","currentDistribution","distributionId","id","propertyKeys","formatType","index","key","subData","convertSingularStrings","convertMultipleURI","convertSingularURI","convertTypedString","convertMultilingual","nestedKeys","nestedProperties","licenceTitleQuad","currentState","shorts","forms","resolutionValue","tempIndex","position","subDuration","value","_a","nodeData","rightsBlankNode","label","cat","dateType","newDateString","currentElement","toInput"],"mappings":"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"}