@piveau/piveau-hub-ui-modules 4.6.23 → 4.6.25
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.
- package/dist/data-provider-interface/components/FileUpload.vue.d.ts +1 -1
- package/dist/data-provider-interface/components/FileUpload.vue.mjs +144 -132
- package/dist/data-provider-interface/components/FileUpload.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/SimpleSelect.vue.mjs +41 -40
- package/dist/data-provider-interface/components/SimpleSelect.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/WidgetInput.vue.d.ts +7 -0
- package/dist/data-provider-interface/components/WidgetInput.vue.mjs +73 -0
- package/dist/data-provider-interface/components/WidgetInput.vue.mjs.map +1 -0
- package/dist/data-provider-interface/components/WidgetInput.vue2.mjs +5 -0
- package/dist/data-provider-interface/components/WidgetInput.vue2.mjs.map +1 -0
- package/dist/data-provider-interface/config/dcatap/input-definition.mjs +4 -2
- package/dist/data-provider-interface/config/dcatap/input-definition.mjs.map +1 -1
- package/dist/data-provider-interface/config/dcatapde/input-definition.mjs +1 -0
- package/dist/data-provider-interface/config/dcatapde/input-definition.mjs.map +1 -1
- package/dist/data-provider-interface/config/dcatapde_BFS/format-types.mjs +276 -0
- package/dist/data-provider-interface/config/dcatapde_BFS/format-types.mjs.map +1 -0
- package/dist/data-provider-interface/config/dcatapde_BFS/input-definition.d.ts +18 -0
- package/dist/data-provider-interface/config/dcatapde_BFS/input-definition.mjs +2146 -0
- package/dist/data-provider-interface/config/dcatapde_BFS/input-definition.mjs.map +1 -0
- package/dist/data-provider-interface/config/dcatapde_BFS/page-content-config.mjs +24 -0
- package/dist/data-provider-interface/config/dcatapde_BFS/page-content-config.mjs.map +1 -0
- package/dist/data-provider-interface/config/dcatapde_BFS/prefixes.mjs +28 -0
- package/dist/data-provider-interface/config/dcatapde_BFS/prefixes.mjs.map +1 -0
- package/dist/data-provider-interface/config/dcatapde_BFS/vocab-prefixes.mjs +34 -0
- package/dist/data-provider-interface/config/dcatapde_BFS/vocab-prefixes.mjs.map +1 -0
- package/dist/data-provider-interface/config/dpi-spec-config.mjs +23 -11
- package/dist/data-provider-interface/config/dpi-spec-config.mjs.map +1 -1
- package/dist/data-provider-interface/store/modules/conversionStore.mjs.map +1 -1
- package/dist/data-provider-interface/utils/RDFconverter.mjs +340 -173
- package/dist/data-provider-interface/utils/RDFconverter.mjs.map +1 -1
- package/dist/data-provider-interface/utils/general-helper.mjs +19 -10
- package/dist/data-provider-interface/utils/general-helper.mjs.map +1 -1
- package/dist/data-provider-interface/utils/inputConverter.mjs +148 -65
- package/dist/data-provider-interface/utils/inputConverter.mjs.map +1 -1
- package/dist/data-provider-interface/views/InputPage.vue.mjs +32 -30
- package/dist/data-provider-interface/views/InputPage.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/Properties/StringProp.vue.mjs.map +1 -1
- package/dist/datasetDetails/properties/DatasetDetailsProperty.vue.mjs +8 -8
- package/dist/datasetDetails/properties/DatasetDetailsProperty.vue.mjs.map +1 -1
- package/dist/form/inputDefinitions.mjs +21 -16
- package/dist/form/inputDefinitions.mjs.map +1 -1
- package/dist/piveau-hub-ui-modules.css +1 -1
- package/package.json +1 -1
|
@@ -15,6 +15,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
15
15
|
}, string, import('@intlify/core-base').RemoveIndexSignature<{
|
|
16
16
|
[x: string]: import('../../../vue-i18n/dist/vue-i18n.cjs.js').LocaleMessageValue<import('../../../vue-i18n/dist/vue-i18n.cjs.js').VueMessageType>;
|
|
17
17
|
}>, never, string, string>;
|
|
18
|
+
catalogId: import('vue').ComputedRef<any>;
|
|
18
19
|
}, {
|
|
19
20
|
inputChoice: string;
|
|
20
21
|
error: string;
|
|
@@ -27,7 +28,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
27
28
|
fail: boolean;
|
|
28
29
|
validExtensions: any;
|
|
29
30
|
}, {
|
|
30
|
-
getCatalogue(): unknown;
|
|
31
31
|
getData: import('vuex').Computed;
|
|
32
32
|
getIsEditMode: import('vuex').Computed;
|
|
33
33
|
getUserData: import('vuex').Computed;
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import { mapGetters as
|
|
1
|
+
import { mapGetters as y, mapActions as F } from "vuex";
|
|
2
2
|
import C from "axios";
|
|
3
3
|
import V from "../utils/general-helper.mjs";
|
|
4
|
-
import
|
|
5
|
-
import { reactive as O, ref as S,
|
|
6
|
-
import { onClickOutside as
|
|
7
|
-
import { useRuntimeEnv as
|
|
8
|
-
import "@formkit/vue";
|
|
4
|
+
import "@formkit/core";
|
|
5
|
+
import { defineComponent as E, reactive as O, ref as S, computed as A, resolveComponent as T, openBlock as o, createElementBlock as l, Fragment as L, createElementVNode as n, createVNode as I, createTextVNode as s, toDisplayString as c, createCommentVNode as u, mergeProps as D, withDirectives as G, vModelText as P, renderList as q } from "vue";
|
|
6
|
+
import { onClickOutside as $ } from "../../external/@vueuse/core/index";
|
|
7
|
+
import { useRuntimeEnv as x } from "../../composables/useRuntimeEnv.mjs";
|
|
8
|
+
import { useFormKitNodeById as B } from "@formkit/vue";
|
|
9
9
|
import { useI18n as N } from "vue-i18n";
|
|
10
|
+
import { useDpiContext as H } from "../composables/useDpiContext.mjs";
|
|
11
|
+
import "vue-router";
|
|
12
|
+
import "../../utils/helpers.mjs";
|
|
13
|
+
import "lodash-es";
|
|
10
14
|
import "./FileUpload.vue2.mjs";
|
|
11
|
-
import
|
|
12
|
-
const
|
|
15
|
+
import K from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
16
|
+
const M = E({
|
|
13
17
|
props: {
|
|
14
18
|
context: {
|
|
15
19
|
type: Object,
|
|
@@ -17,7 +21,7 @@ const H = {
|
|
|
17
21
|
}
|
|
18
22
|
},
|
|
19
23
|
data() {
|
|
20
|
-
var
|
|
24
|
+
var t;
|
|
21
25
|
return {
|
|
22
26
|
inputChoice: "",
|
|
23
27
|
error: "",
|
|
@@ -28,23 +32,20 @@ const H = {
|
|
|
28
32
|
isLoading: !1,
|
|
29
33
|
success: !1,
|
|
30
34
|
fail: !1,
|
|
31
|
-
validExtensions: ((
|
|
35
|
+
validExtensions: ((t = this.$env.content.dataProviderInterface.uploadFileTypes) == null ? void 0 : t.split(",")) || []
|
|
32
36
|
};
|
|
33
37
|
},
|
|
34
38
|
computed: {
|
|
35
|
-
...
|
|
39
|
+
...y("auth", [
|
|
36
40
|
"getUserData",
|
|
37
41
|
"getIsEditMode"
|
|
38
42
|
]),
|
|
39
|
-
...
|
|
43
|
+
...y("dpiStore", [
|
|
40
44
|
"getData"
|
|
41
|
-
])
|
|
42
|
-
getCatalogue() {
|
|
43
|
-
return E("dcat:catalog").value;
|
|
44
|
-
}
|
|
45
|
+
])
|
|
45
46
|
},
|
|
46
47
|
methods: {
|
|
47
|
-
...
|
|
48
|
+
...F("dpiStore", [
|
|
48
49
|
"saveLocalstorageValues"
|
|
49
50
|
]),
|
|
50
51
|
toggleUploadUrl() {
|
|
@@ -53,9 +54,9 @@ const H = {
|
|
|
53
54
|
toggleUploadFileSwitch() {
|
|
54
55
|
this.inputChoice = this.t("message.dataupload.datasets.conditional.URL"), this.uploadFileSwitch && (this.uploadFileSwitch = !this.uploadFileSwitch);
|
|
55
56
|
},
|
|
56
|
-
validateFile(
|
|
57
|
-
const
|
|
58
|
-
this.validExtensions && this.validExtensions.length ? this.validExtensions.includes(
|
|
57
|
+
validateFile(t) {
|
|
58
|
+
const r = "." + t.target.files[0].name.split(".").pop().toLowerCase();
|
|
59
|
+
this.validExtensions && this.validExtensions.length ? this.validExtensions.includes(r) ? this.uploadOrReplaceFile({ file: t.target.files[0] }) : console.log("Wrong filetype") : (this.error = "", this.uploadOrReplaceFile({ file: t.target.files[0] }));
|
|
59
60
|
},
|
|
60
61
|
async saveUrl() {
|
|
61
62
|
this.URLValue.includes("http://") || this.URLValue.includes("https://") ? await this.context.node.input({ "@id": this.URLValue, mode: this.inputChoice }) : await this.context.node.input({ "@id": "https://" + this.URLValue, mode: this.inputChoice });
|
|
@@ -65,8 +66,8 @@ const H = {
|
|
|
65
66
|
return this.URLValue = this.context.value["@id"], !0;
|
|
66
67
|
},
|
|
67
68
|
// finds the parent input group of a given element.
|
|
68
|
-
findParentInputGroupOfElement(
|
|
69
|
-
let e =
|
|
69
|
+
findParentInputGroupOfElement(t) {
|
|
70
|
+
let e = t;
|
|
70
71
|
for (; e; ) {
|
|
71
72
|
if (e.classList.contains("formkit-input-group-repeatable"))
|
|
72
73
|
return e;
|
|
@@ -76,47 +77,47 @@ const H = {
|
|
|
76
77
|
},
|
|
77
78
|
// finds the index of the distribution access URL based on the root of this component.
|
|
78
79
|
findDistributionAccessUrlIndex() {
|
|
79
|
-
const
|
|
80
|
+
const t = this.$refs.fileupload, e = this.findParentInputGroupOfElement(t);
|
|
80
81
|
if (!e)
|
|
81
82
|
return null;
|
|
82
|
-
const
|
|
83
|
-
return Array.from(
|
|
83
|
+
const d = e.parentElement.querySelectorAll(".formkit-input-group-repeatable");
|
|
84
|
+
return Array.from(d).indexOf(e);
|
|
84
85
|
},
|
|
85
|
-
async uploadOrReplaceFile({ file:
|
|
86
|
-
var
|
|
87
|
-
const e = ((
|
|
88
|
-
if (e &&
|
|
89
|
-
const w = (i = this.$route.query) == null ? void 0 : i.edit,
|
|
86
|
+
async uploadOrReplaceFile({ file: t }) {
|
|
87
|
+
var d, f, a, p, i, m, g;
|
|
88
|
+
const e = ((a = (f = (d = this.$env) == null ? void 0 : d.content) == null ? void 0 : f.dataProviderInterface) == null ? void 0 : a.enableFileUploadReplace) || !1, r = ((p = this.$route.query) == null ? void 0 : p.edit) ?? !1;
|
|
89
|
+
if (e && r) {
|
|
90
|
+
const w = (i = this.$route.query) == null ? void 0 : i.edit, b = this.findDistributionAccessUrlIndex(), h = (m = this.getData("distributions")) == null ? void 0 : m[w], v = (g = h == null ? void 0 : h["dcat:accessURL"]) == null ? void 0 : g[b], U = v == null ? void 0 : v["@id"];
|
|
90
91
|
if (U) {
|
|
91
|
-
const
|
|
92
|
-
return await this.uploadFile(
|
|
92
|
+
const k = this.$env.api.fileUploadUrl, R = V.getFileIdByAccessUrl({ accessUrl: U, fileUploadUrl: k });
|
|
93
|
+
return await this.uploadFile(t, {
|
|
93
94
|
method: "PUT",
|
|
94
|
-
url: `${this.$env.api.fileUploadUrl}data/${
|
|
95
|
+
url: `${this.$env.api.fileUploadUrl}data/${R}?catalog=${this.catalogId}`
|
|
95
96
|
});
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
|
-
return await this.uploadFile(
|
|
99
|
+
return await this.uploadFile(t);
|
|
99
100
|
},
|
|
100
|
-
async uploadFile(
|
|
101
|
+
async uploadFile(t, e = {}) {
|
|
101
102
|
this.isLoading = !0;
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
const
|
|
103
|
+
const r = new FormData();
|
|
104
|
+
r.append("file", t);
|
|
105
|
+
const d = this.catalogId, f = this.getUserData.rtpToken, a = {
|
|
105
106
|
method: "POST",
|
|
106
|
-
url: `${this.$env.api.fileUploadUrl}data?catalog=${
|
|
107
|
+
url: `${this.$env.api.fileUploadUrl}data?catalog=${d}`,
|
|
107
108
|
...e
|
|
108
|
-
},
|
|
109
|
-
method:
|
|
110
|
-
url:
|
|
109
|
+
}, p = {
|
|
110
|
+
method: a.method,
|
|
111
|
+
url: a.url,
|
|
111
112
|
headers: {
|
|
112
113
|
"Content-Type": "multipart/form-data",
|
|
113
|
-
Authorization: `Bearer ${
|
|
114
|
+
Authorization: `Bearer ${f}`
|
|
114
115
|
},
|
|
115
|
-
data:
|
|
116
|
+
data: r
|
|
116
117
|
};
|
|
117
118
|
try {
|
|
118
|
-
const i = await C.request(
|
|
119
|
-
this.context.model = `${this.$env.api.fileUploadUrl}${
|
|
119
|
+
const i = await C.request(p), m = i.data.result.location.substring(i.data.result.location.indexOf("/") + 1);
|
|
120
|
+
this.context.model = `${this.$env.api.fileUploadUrl}${m}`, this.isLoading = !1, this.success = !0, await this.context.node.input({ "@id": `${this.$env.api.fileUploadUrl}${m}` });
|
|
120
121
|
} catch (i) {
|
|
121
122
|
this.isLoading = !1, this.fail = !0, console.error(i);
|
|
122
123
|
}
|
|
@@ -129,163 +130,174 @@ const H = {
|
|
|
129
130
|
});
|
|
130
131
|
},
|
|
131
132
|
setup() {
|
|
132
|
-
const { t
|
|
133
|
-
|
|
133
|
+
const { t } = N();
|
|
134
|
+
x();
|
|
134
135
|
var e = O({
|
|
135
136
|
active: !1
|
|
136
137
|
});
|
|
137
|
-
const
|
|
138
|
-
|
|
138
|
+
const r = S("fload");
|
|
139
|
+
$(r, (i) => {
|
|
139
140
|
e.active = !1;
|
|
140
141
|
});
|
|
141
|
-
function
|
|
142
|
+
function d(i) {
|
|
142
143
|
e.active = !e.active;
|
|
143
144
|
}
|
|
145
|
+
const f = H(), a = B("catalog"), p = A(
|
|
146
|
+
() => {
|
|
147
|
+
var i;
|
|
148
|
+
return (
|
|
149
|
+
// Extract from catalog input field
|
|
150
|
+
(a == null ? void 0 : a.value.value) || ((i = f.value.edit) == null ? void 0 : i.catalog)
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
);
|
|
144
154
|
return {
|
|
145
155
|
drop: e,
|
|
146
|
-
onClickOutside:
|
|
147
|
-
triggerDropdown:
|
|
148
|
-
t
|
|
156
|
+
onClickOutside: $,
|
|
157
|
+
triggerDropdown: d,
|
|
158
|
+
t,
|
|
159
|
+
catalogId: p
|
|
149
160
|
};
|
|
150
161
|
}
|
|
151
|
-
},
|
|
162
|
+
}), W = { class: "position-relative w-100" }, j = {
|
|
152
163
|
key: 0,
|
|
153
164
|
ref: "fLoad",
|
|
154
165
|
class: "selectListUpload fileuploadList"
|
|
155
|
-
},
|
|
166
|
+
}, z = {
|
|
156
167
|
key: 0,
|
|
157
168
|
class: "w-100 position-relative"
|
|
158
|
-
},
|
|
169
|
+
}, J = ["data-type"], Q = { class: "file-div position-relative" }, X = ["accept", "disabled"], Y = {
|
|
159
170
|
class: "upload-feedback position-absolute d-flex",
|
|
160
171
|
style: { right: "0" }
|
|
161
|
-
},
|
|
172
|
+
}, Z = {
|
|
162
173
|
key: 0,
|
|
163
174
|
class: "lds-ring"
|
|
164
|
-
},
|
|
175
|
+
}, _ = { key: 1 }, ee = { key: 2 }, te = {
|
|
165
176
|
key: 0,
|
|
166
177
|
class: "dURLText my-3"
|
|
167
|
-
},
|
|
178
|
+
}, ie = ["href"], oe = {
|
|
168
179
|
key: 1,
|
|
169
180
|
class: "allowedTypesWrapper"
|
|
170
|
-
},
|
|
181
|
+
}, le = {
|
|
171
182
|
key: 0,
|
|
172
183
|
class: "errorSub my-3 d-flex"
|
|
173
|
-
},
|
|
174
|
-
function
|
|
175
|
-
const
|
|
176
|
-
return
|
|
177
|
-
|
|
178
|
-
|
|
184
|
+
}, se = { class: "d-flex flex-wrap w-100" };
|
|
185
|
+
function ae(t, e, r, d, f, a) {
|
|
186
|
+
const p = T("FormKit");
|
|
187
|
+
return o(), l(L, null, [
|
|
188
|
+
n("div", W, [
|
|
189
|
+
I(p, {
|
|
179
190
|
name: "mode",
|
|
180
191
|
validation: "required",
|
|
181
192
|
type: "text",
|
|
182
193
|
class: "selectInputField formkit-inner",
|
|
183
194
|
readonly: "readonly",
|
|
184
|
-
onClick: e[0] || (e[0] = (i) =>
|
|
185
|
-
placeholder:
|
|
195
|
+
onClick: e[0] || (e[0] = (i) => t.triggerDropdown()),
|
|
196
|
+
placeholder: t.t("message.dataupload.info.preferredInput"),
|
|
186
197
|
modelValue: t.inputChoice,
|
|
187
198
|
"onUpdate:modelValue": e[1] || (e[1] = (i) => t.inputChoice = i),
|
|
188
199
|
"validation-messages": {
|
|
189
|
-
required:
|
|
200
|
+
required: t.t("message.dataupload.info.preferredInput")
|
|
190
201
|
}
|
|
191
202
|
}, null, 8, ["placeholder", "modelValue", "validation-messages"]),
|
|
192
|
-
e[9] || (e[9] =
|
|
193
|
-
|
|
194
|
-
|
|
203
|
+
e[9] || (e[9] = s()),
|
|
204
|
+
t.drop.active ? (o(), l("ul", j, [
|
|
205
|
+
n("li", {
|
|
195
206
|
onClick: e[2] || (e[2] = (i) => {
|
|
196
|
-
t.uploadFileSwitch = !0,
|
|
207
|
+
t.uploadFileSwitch = !0, t.toggleUploadUrl();
|
|
197
208
|
}),
|
|
198
209
|
class: "p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC"
|
|
199
|
-
},
|
|
200
|
-
e[8] || (e[8] =
|
|
201
|
-
|
|
210
|
+
}, c(t.$t("message.dataupload.datasets.conditional.fileupload")), 1),
|
|
211
|
+
e[8] || (e[8] = s()),
|
|
212
|
+
n("li", {
|
|
202
213
|
onClick: e[3] || (e[3] = (i) => {
|
|
203
|
-
t.uploadURL = !0,
|
|
214
|
+
t.uploadURL = !0, t.toggleUploadFileSwitch();
|
|
204
215
|
}),
|
|
205
216
|
class: "p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC"
|
|
206
|
-
},
|
|
207
|
-
], 512)) :
|
|
217
|
+
}, c(t.$t("message.dataupload.datasets.conditional.URL")), 1)
|
|
218
|
+
], 512)) : u("", !0)
|
|
208
219
|
]),
|
|
209
|
-
e[19] || (e[19] =
|
|
210
|
-
t.uploadURL && !t.uploadFileSwitch ? (
|
|
211
|
-
|
|
220
|
+
e[19] || (e[19] = s()),
|
|
221
|
+
t.uploadURL && !t.uploadFileSwitch ? (o(), l("div", z, [
|
|
222
|
+
I(p, {
|
|
212
223
|
id: "aUrlLink",
|
|
213
224
|
modelValue: t.URLValue,
|
|
214
225
|
"onUpdate:modelValue": e[4] || (e[4] = (i) => t.URLValue = i),
|
|
215
226
|
class: "selectInputField formkit-inner",
|
|
216
227
|
type: "url",
|
|
217
228
|
name: "@id",
|
|
218
|
-
placeholder:
|
|
219
|
-
onInput:
|
|
229
|
+
placeholder: t.context.attrs.placeholder,
|
|
230
|
+
onInput: t.saveUrl,
|
|
220
231
|
validation: "required|url",
|
|
221
232
|
"validation-visibility": "live",
|
|
222
233
|
"validation-messages": {
|
|
223
|
-
required:
|
|
224
|
-
url:
|
|
234
|
+
required: t.t("message.dataupload.datasets.conditional.URL"),
|
|
235
|
+
url: t.t("message.dataupload.info.urlFormat")
|
|
225
236
|
}
|
|
226
237
|
}, null, 8, ["modelValue", "placeholder", "onInput", "validation-messages"])
|
|
227
|
-
])) :
|
|
228
|
-
e[20] || (e[20] =
|
|
229
|
-
t.uploadFileSwitch ? (
|
|
238
|
+
])) : u("", !0),
|
|
239
|
+
e[20] || (e[20] = s()),
|
|
240
|
+
t.uploadFileSwitch ? (o(), l("div", D({
|
|
230
241
|
key: 1,
|
|
231
242
|
ref: "fileupload",
|
|
232
|
-
class: ["p-3 w-100", `formkit-input-element formkit-input-element--${
|
|
233
|
-
"data-type":
|
|
234
|
-
},
|
|
235
|
-
G(
|
|
243
|
+
class: ["p-3 w-100", `formkit-input-element formkit-input-element--${t.context.type}`],
|
|
244
|
+
"data-type": t.context.type
|
|
245
|
+
}, t.$attrs), [
|
|
246
|
+
G(n("input", {
|
|
236
247
|
type: "text",
|
|
237
|
-
"onUpdate:modelValue": e[5] || (e[5] = (i) =>
|
|
238
|
-
onBlur: e[6] || (e[6] = (...i) =>
|
|
248
|
+
"onUpdate:modelValue": e[5] || (e[5] = (i) => t.context.model = i),
|
|
249
|
+
onBlur: e[6] || (e[6] = (...i) => t.context.blurHandler && t.context.blurHandler(...i)),
|
|
239
250
|
hidden: ""
|
|
240
251
|
}, null, 544), [
|
|
241
|
-
[P,
|
|
252
|
+
[P, t.context.model]
|
|
242
253
|
]),
|
|
243
|
-
e[16] || (e[16] =
|
|
244
|
-
|
|
245
|
-
|
|
254
|
+
e[16] || (e[16] = s()),
|
|
255
|
+
n("div", Q, [
|
|
256
|
+
n("input", {
|
|
246
257
|
class: "mt-3",
|
|
247
258
|
type: "file",
|
|
248
259
|
id: "aUrlFL",
|
|
249
260
|
name: "fileUpload",
|
|
250
|
-
onChange: e[7] || (e[7] = (i) =>
|
|
251
|
-
accept: t.validExtensions
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
onChange: e[7] || (e[7] = (i) => t.validateFile(i)),
|
|
262
|
+
accept: t.validExtensions,
|
|
263
|
+
disabled: t.isLoading || !t.catalogId
|
|
264
|
+
}, null, 40, X),
|
|
265
|
+
e[14] || (e[14] = s()),
|
|
266
|
+
n("div", Y, [
|
|
267
|
+
t.isLoading ? (o(), l("div", Z)) : u("", !0),
|
|
268
|
+
e[12] || (e[12] = s()),
|
|
269
|
+
t.success ? (o(), l("div", _, e[10] || (e[10] = [
|
|
270
|
+
n("i", { class: "material-icons d-flex check-icon" }, "check_circle", -1)
|
|
271
|
+
]))) : u("", !0),
|
|
272
|
+
e[13] || (e[13] = s()),
|
|
273
|
+
t.fail ? (o(), l("div", ee, e[11] || (e[11] = [
|
|
274
|
+
n("i", { class: "material-icons d-flex close-icon" }, "error", -1)
|
|
275
|
+
]))) : u("", !0)
|
|
264
276
|
])
|
|
265
277
|
]),
|
|
266
|
-
e[17] || (e[17] =
|
|
267
|
-
t.success ? (
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
href:
|
|
271
|
-
},
|
|
272
|
-
])) :
|
|
273
|
-
e[18] || (e[18] =
|
|
274
|
-
t.validExtensions && t.validExtensions.length ? (
|
|
275
|
-
t.success ?
|
|
276
|
-
e[15] || (e[15] =
|
|
277
|
-
|
|
278
|
-
(
|
|
278
|
+
e[17] || (e[17] = s()),
|
|
279
|
+
t.success ? (o(), l("p", te, [
|
|
280
|
+
s(c(t.$t("message.metadata.downloadUrl")) + ": ", 1),
|
|
281
|
+
n("a", {
|
|
282
|
+
href: t.context.model
|
|
283
|
+
}, c(t.context.model), 9, ie)
|
|
284
|
+
])) : u("", !0),
|
|
285
|
+
e[18] || (e[18] = s()),
|
|
286
|
+
t.validExtensions && t.validExtensions.length ? (o(), l("div", oe, [
|
|
287
|
+
t.success ? u("", !0) : (o(), l("p", le, "Allowed types: ")),
|
|
288
|
+
e[15] || (e[15] = s()),
|
|
289
|
+
n("div", se, [
|
|
290
|
+
(o(!0), l(L, null, q(t.validExtensions, (i) => (o(), l("span", {
|
|
279
291
|
key: i,
|
|
280
292
|
class: "mr-1 mb-1 allowedFTypes"
|
|
281
|
-
},
|
|
293
|
+
}, c(i), 1))), 128))
|
|
282
294
|
])
|
|
283
|
-
])) :
|
|
284
|
-
], 16,
|
|
295
|
+
])) : u("", !0)
|
|
296
|
+
], 16, J)) : u("", !0)
|
|
285
297
|
], 64);
|
|
286
298
|
}
|
|
287
|
-
const
|
|
299
|
+
const $e = /* @__PURE__ */ K(M, [["render", ae], ["__scopeId", "data-v-79a163c0"]]);
|
|
288
300
|
export {
|
|
289
|
-
|
|
301
|
+
$e as default
|
|
290
302
|
};
|
|
291
303
|
//# sourceMappingURL=FileUpload.vue.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUpload.vue.mjs","sources":["../../../lib/data-provider-interface/components/FileUpload.vue"],"sourcesContent":["<template>\n\n <div class=\"position-relative w-100 \">\n <FormKit name=\"mode\" validation=\"required\" type=\"text\" class=\"selectInputField formkit-inner \" readonly=\"readonly\"\n @click=\"triggerDropdown()\" :placeholder=\"t('message.dataupload.info.preferredInput')\" v-model=\"inputChoice\" :validation-messages=\"{\n required: t('message.dataupload.info.preferredInput'),\n }\" />\n <ul ref=\"fLoad\" v-if=\"drop.active\" class=\"selectListUpload fileuploadList\">\n <li @click=\"uploadFileSwitch = true; toggleUploadUrl()\"\n class=\"p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC\">{{$t('message.dataupload.datasets.conditional.fileupload')}}</li>\n <li @click=\"uploadURL = true; toggleUploadFileSwitch()\"\n class=\"p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC\">{{$t('message.dataupload.datasets.conditional.URL')}}</li>\n </ul>\n </div>\n <div class=\"w-100 position-relative\" v-if=\"uploadURL && !uploadFileSwitch\">\n\n <FormKit id=\"aUrlLink\" v-model=\"URLValue\" class=\"selectInputField formkit-inner\" type=\"url\" name=\"@id\" :placeholder=\"context.attrs.placeholder\"\n @input=\"saveUrl\" validation=\"required|url\" validation-visibility=\"live\" :validation-messages=\"{\n required: t('message.dataupload.datasets.conditional.URL'),\n url: t('message.dataupload.info.urlFormat')\n }\" />\n\n </div>\n <div v-if=\"uploadFileSwitch\" ref=\"fileupload\" class=\"p-3 w-100\"\n :class=\"`formkit-input-element formkit-input-element--${context.type}`\" :data-type=\"context.type\" v-bind=\"$attrs\">\n <input type=\"text\" v-model=\"context.model\" @blur=\"context.blurHandler\" hidden />\n <div class=\"file-div position-relative\">\n <input class=\"mt-3\" type=\"file\" id=\"aUrlFL\" name=\"fileUpload\" @change=\"validateFile($event)\"\n :accept=\"validExtensions\">\n <div class=\"upload-feedback position-absolute d-flex\" style=\"right: 0\">\n <div v-if=\"isLoading\" class=\"lds-ring\">\n </div>\n <div v-if=\"success\"><i class=\"material-icons d-flex check-icon\">check_circle</i></div>\n <div v-if=\"fail\"><i class=\"material-icons d-flex close-icon\">error</i></div>\n </div>\n </div>\n <p class=\"dURLText my-3\" v-if=\"success\">{{ $t('message.metadata.downloadUrl') }}: <a :href=\"context.model\">{{\n context.model }}</a></p>\n <div v-if=\"validExtensions && validExtensions.length\" class=\"allowedTypesWrapper\">\n <p class=\"errorSub my-3 d-flex \" v-if=\"!success\">Allowed types: </p>\n <div class=\"d-flex flex-wrap w-100\">\n <span v-for=\"types in validExtensions\" :key=\"types\" class=\"mr-1 mb-1 allowedFTypes \">\n {{ types }}\n </span>\n </div>\n\n </div>\n\n\n </div>\n\n</template>\n\n<script>\n/* eslint-disable consistent-return, no-unused-vars */\nimport { mapGetters, mapActions } from 'vuex';\nimport axios from 'axios';\nimport helper from '../utils/general-helper'\nimport { getNode } from '@formkit/core'\n\nimport { reactive, ref, onMounted, computed } from 'vue';\nimport { onClickOutside } from '@vueuse/core'\nimport { useRuntimeEnv } from \"../../composables/useRuntimeEnv.ts\";\nimport { FormKit } from '@formkit/vue';\nimport { useI18n } from 'vue-i18n';\n\nexport default {\n props: {\n context: {\n type: Object,\n required: true,\n },\n },\n\n data() {\n return {\n inputChoice: '',\n error: '',\n URLValue: '',\n uploadURL: false,\n uploadFileSwitch: false,\n checkifSet: false,\n isLoading: false,\n success: false,\n fail: false,\n \n validExtensions: this.$env.content.dataProviderInterface.uploadFileTypes?.split(',') || []\n };\n },\n computed: {\n\n ...mapGetters('auth', [\n 'getUserData',\n 'getIsEditMode'\n ]),\n ...mapGetters('dpiStore', [\n 'getData',\n ]),\n getCatalogue() {\n return getNode('dcat:catalog').value;\n }\n },\n methods: {\n ...mapActions('dpiStore', [\n 'saveLocalstorageValues',\n ]),\n toggleUploadUrl() {\n this.inputChoice = this.t('message.dataupload.datasets.conditional.fileupload')\n if (this.uploadURL) { this.uploadURL = !this.uploadURL }\n },\n toggleUploadFileSwitch() {\n this.inputChoice = this.t('message.dataupload.datasets.conditional.URL')\n if (this.uploadFileSwitch) { this.uploadFileSwitch = !this.uploadFileSwitch }\n },\n validateFile(event) {\n const file = event.target.files[0];\n const fileExtension = '.' + file.name.split('.').pop().toLowerCase();\n if (this.validExtensions && this.validExtensions.length) {\n if (!this.validExtensions.includes(fileExtension)) {\n console.log('Wrong filetype');\n } else {\n this.uploadOrReplaceFile({ file: event.target.files[0] })\n }\n } else {\n this.error = \"\"\n this.uploadOrReplaceFile({ file: event.target.files[0] })\n }\n },\n async saveUrl() {\n\n if (this.URLValue.includes('http://') || this.URLValue.includes('https://')) {\n await this.context.node.input({ '@id': this.URLValue, 'mode': this.inputChoice })\n }\n else await this.context.node.input({ '@id': 'https://' + this.URLValue, 'mode': this.inputChoice })\n\n },\n checkIfPresent() {\n // console.log(this.context.value['@id']);\n if (this.context.value['@id']) {\n // console.log(this.context.value['@id']);\n this.URLValue = this.context.value['@id']\n return true\n }\n else false\n },\n // finds the parent input group of a given element.\n findParentInputGroupOfElement(element) {\n // Start with the given element.\n let currentElement = element;\n\n // Traverse the DOM tree upwards.\n while (currentElement) {\n // If the current element is an input group, return it.\n if (currentElement.classList.contains('formkit-input-group-repeatable')) {\n return currentElement;\n }\n // If not, move to the parent element.\n currentElement = currentElement.parentElement;\n }\n\n // If no input group was found, return null.\n return null;\n },\n // finds the index of the distribution access URL based on the root of this component.\n findDistributionAccessUrlIndex() {\n // todo: find a more stable way to find the index of the distribution access URL.\n // this way uses the DOM tree, which is not stable.\n\n // Start at the root of this component.\n const rootElement = this.$refs.fileupload;\n\n // Find the parent input group of the root element.\n const parentInputGroup = this.findParentInputGroupOfElement(rootElement);\n if (!parentInputGroup) return null;\n\n // Get the parent element of all input groups.\n const parentOfAllInputGroups = parentInputGroup.parentElement;\n const allInputGroupsNodeList = parentOfAllInputGroups.querySelectorAll('.formkit-input-group-repeatable');\n const allInputGroupsArray = Array.from(allInputGroupsNodeList);\n\n // Find the index of the parent input group within the array of all input groups.\n const indexOfParentInputGroup = allInputGroupsArray.indexOf(parentInputGroup);\n\n return indexOfParentInputGroup;\n },\n async uploadOrReplaceFile({ file }) {\n\n const replaceEnabled = this.$env?.content?.dataProviderInterface?.enableFileUploadReplace || false;\n const wantsToReplace = this.$route.query?.edit ?? false;\n\n if (replaceEnabled && wantsToReplace) {\n const distributionIndexToReplace = this.$route.query?.edit;\n const fileIndexToReplace = this.findDistributionAccessUrlIndex();\n\n const targetDistribution = this.getData('distributions')?.[distributionIndexToReplace];\n const targetFile = targetDistribution?.['dcat:accessURL']?.[fileIndexToReplace];\n const accessUrl = targetFile?.['@id'];\n if (accessUrl) {\n const fileUploadUrl = this.$env.api.fileUploadUrl;\n\n const fileId = helper.getFileIdByAccessUrl({ accessUrl, fileUploadUrl })\n\n return await this.uploadFile(file, {\n method: 'PUT',\n url: `${this.$env.api.fileUploadUrl}data/${fileId}?catalog=${this.getCatalogue}`,\n });\n }\n\n }\n\n return await this.uploadFile(file);\n },\n async uploadFile(file, options = {}) {\n\n this.isLoading = true;\n\n const form = new FormData();\n form.append('file', file);\n\n const catalog = this.getCatalogue;\n const token = this.getUserData.rtpToken;\n\n const resolvedOptions = {\n method: 'POST',\n url: `${this.$env.api.fileUploadUrl}data?catalog=${catalog}`,\n ...options,\n };\n\n const requestOptions = {\n method: resolvedOptions.method,\n url: resolvedOptions.url,\n headers: {\n 'Content-Type': 'multipart/form-data',\n Authorization: `Bearer ${token}`,\n },\n data: form,\n };\n\n try {\n\n const result = await axios.request(requestOptions);\n const path = result.data.result.location.substring(result.data.result.location.indexOf('/') + 1);\n this.context.model = `${this.$env.api.fileUploadUrl}${path}`;\n this.isLoading = false;\n this.success = true;\n await this.context.node.input({ '@id': `${this.$env.api.fileUploadUrl}${path}` })\n // this.context.rootEmit('change');\n\n } catch (err) {\n\n this.isLoading = false;\n this.fail = true;\n console.error(err); // eslint-disable-line\n }\n },\n },\n mounted() {\n\n this.$nextTick(function () {\n\n if (this.context.value['@id']) {\n this.uploadURL = true\n this.URLValue = this.context.value['@id']\n this.inputChoice = \"Provide an URL\"\n return true\n }\n else false\n })\n },\n setup() {\n const { t } = useI18n();\n const env = useRuntimeEnv();\n \n\n\n var drop = reactive({\n active: false,\n })\n\n\n const fLoad = ref('fload');\n\n onClickOutside(fLoad, event => {\n drop.active = false\n })\n function triggerDropdown(e) {\n drop.active = !drop.active\n }\n\n return {\n drop,\n onClickOutside,\n triggerDropdown,\n t\n };\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n// @import '../../../styles/bootstrap_theme';\n// @import '../../../styles/utils/css-animations';\n.dURLText {}\n\n\n.accessUrl {\n .formkit-outer {}\n}\n\n.file-div {\n display: flex;\n align-items: center;\n}\n\n.upload-feedback {\n padding: 10px;\n}\n\n/*** MATERIAL ICONS ***/\n%modal-icon {\n font-size: 20px;\n cursor: default;\n}\n\n.check-icon {\n @extend %modal-icon;\n color: #28a745;\n}\n\n.close-icon {\n @extend %modal-icon;\n color: red;\n}\n\n.lds-ring {\n display: inline-block;\n position: relative;\n width: 30px;\n height: 30px;\n}\n\n.lds-ring div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n right: 0;\n width: 30px;\n height: 30px;\n border: 8px solid lightgray;\n border-radius: 50%;\n animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: lightgray transparent transparent transparent;\n}\n\n.lds-ring div:nth-child(1) {\n animation-delay: -0.45s;\n}\n\n.lds-ring div:nth-child(2) {\n animation-delay: -0.3s;\n}\n\n.lds-ring div:nth-child(3) {\n animation-delay: -0.15s;\n}\n\n.error {\n color: red;\n}\n\n.errorSub {\n color: black;\n}\n\n@keyframes lds-ring {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.allowedFTypes {\n padding: 0.5rem;\n border-radius: 5px;\n border: 1px solid lightgrey;\n}\n\n.allowedTypesWrapper {\n max-width: 100%;\n display: flex;\n flex-wrap: wrap;\n}\n\n.fileuploadList {\n width: 96.7%;\n}\n</style>\n"],"names":["_sfc_main","_a","mapGetters","getNode","mapActions","event","fileExtension","element","currentElement","rootElement","parentInputGroup","allInputGroupsNodeList","file","replaceEnabled","_c","_b","wantsToReplace","_d","distributionIndexToReplace","_e","fileIndexToReplace","targetDistribution","_f","targetFile","_g","accessUrl","fileUploadUrl","fileId","helper","options","form","catalog","token","resolvedOptions","requestOptions","result","axios","path","err","t","useI18n","useRuntimeEnv","drop","reactive","fLoad","ref","onClickOutside","triggerDropdown","e","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_12","_hoisted_15","_openBlock","_createElementBlock","_Fragment","_createElementVNode","_createVNode","_component_FormKit","$setup","$data","_cache","$event","_createTextVNode","_hoisted_2","$options","_ctx","_createCommentVNode","_hoisted_3","$props","_mergeProps","args","_vModelText","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_toDisplayString","_hoisted_13","_hoisted_14","_renderList","types"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileUpload.vue.mjs","sources":["../../../lib/data-provider-interface/components/FileUpload.vue"],"sourcesContent":["<template>\n <div class=\"position-relative w-100 \">\n <FormKit name=\"mode\" validation=\"required\" type=\"text\" class=\"selectInputField formkit-inner \" readonly=\"readonly\"\n @click=\"triggerDropdown()\" :placeholder=\"t('message.dataupload.info.preferredInput')\" v-model=\"inputChoice\" :validation-messages=\"{\n required: t('message.dataupload.info.preferredInput'),\n }\" />\n <ul ref=\"fLoad\" v-if=\"drop.active\" class=\"selectListUpload fileuploadList\">\n <li @click=\"uploadFileSwitch = true; toggleUploadUrl()\"\n class=\"p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC\">{{$t('message.dataupload.datasets.conditional.fileupload')}}</li>\n <li @click=\"uploadURL = true; toggleUploadFileSwitch()\"\n class=\"p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC\">{{$t('message.dataupload.datasets.conditional.URL')}}</li>\n </ul>\n </div>\n <div class=\"w-100 position-relative\" v-if=\"uploadURL && !uploadFileSwitch\">\n\n <FormKit id=\"aUrlLink\" v-model=\"URLValue\" class=\"selectInputField formkit-inner\" type=\"url\" name=\"@id\" :placeholder=\"context.attrs.placeholder\"\n @input=\"saveUrl\" validation=\"required|url\" validation-visibility=\"live\" :validation-messages=\"{\n required: t('message.dataupload.datasets.conditional.URL'),\n url: t('message.dataupload.info.urlFormat')\n }\" />\n\n </div>\n <div v-if=\"uploadFileSwitch\" ref=\"fileupload\" class=\"p-3 w-100\"\n :class=\"`formkit-input-element formkit-input-element--${context.type}`\" :data-type=\"context.type\" v-bind=\"$attrs\">\n <input type=\"text\" v-model=\"context.model\" @blur=\"context.blurHandler\" hidden />\n <div class=\"file-div position-relative\">\n <input class=\"mt-3\" type=\"file\" id=\"aUrlFL\" name=\"fileUpload\" @change=\"validateFile($event)\"\n :accept=\"validExtensions\" :disabled=\"isLoading || !catalogId\">\n <div class=\"upload-feedback position-absolute d-flex\" style=\"right: 0\">\n <div v-if=\"isLoading\" class=\"lds-ring\">\n </div>\n <div v-if=\"success\"><i class=\"material-icons d-flex check-icon\">check_circle</i></div>\n <div v-if=\"fail\"><i class=\"material-icons d-flex close-icon\">error</i></div>\n </div>\n </div>\n <p class=\"dURLText my-3\" v-if=\"success\">{{ $t('message.metadata.downloadUrl') }}: <a :href=\"context.model\">{{\n context.model }}</a></p>\n <div v-if=\"validExtensions && validExtensions.length\" class=\"allowedTypesWrapper\">\n <p class=\"errorSub my-3 d-flex \" v-if=\"!success\">Allowed types: </p>\n <div class=\"d-flex flex-wrap w-100\">\n <span v-for=\"types in validExtensions\" :key=\"types\" class=\"mr-1 mb-1 allowedFTypes \">\n {{ types }}\n </span>\n </div>\n\n </div>\n\n\n </div>\n\n</template>\n\n<script>\n/* eslint-disable consistent-return, no-unused-vars */\nimport { mapGetters, mapActions } from 'vuex';\nimport axios from 'axios';\nimport helper from '../utils/general-helper'\nimport { getNode } from '@formkit/core'\n\nimport { reactive, ref, onMounted, computed, defineComponent } from 'vue';\nimport { onClickOutside } from '@vueuse/core'\nimport { useRuntimeEnv } from \"../../composables/useRuntimeEnv.ts\";\nimport { FormKit, useFormKitNodeById } from '@formkit/vue';\nimport { useI18n } from 'vue-i18n';\nimport { useDpiContext } from '../composables';\n\nexport default defineComponent({\n props: {\n context: {\n type: Object,\n required: true,\n },\n },\n\n data() {\n return {\n inputChoice: '',\n error: '',\n URLValue: '',\n uploadURL: false,\n uploadFileSwitch: false,\n checkifSet: false,\n isLoading: false,\n success: false,\n fail: false,\n \n validExtensions: this.$env.content.dataProviderInterface.uploadFileTypes?.split(',') || []\n };\n },\n computed: {\n\n ...mapGetters('auth', [\n 'getUserData',\n 'getIsEditMode'\n ]),\n ...mapGetters('dpiStore', [\n 'getData',\n ]),\n },\n methods: {\n ...mapActions('dpiStore', [\n 'saveLocalstorageValues',\n ]),\n toggleUploadUrl() {\n this.inputChoice = this.t('message.dataupload.datasets.conditional.fileupload')\n if (this.uploadURL) { this.uploadURL = !this.uploadURL }\n },\n toggleUploadFileSwitch() {\n this.inputChoice = this.t('message.dataupload.datasets.conditional.URL')\n if (this.uploadFileSwitch) { this.uploadFileSwitch = !this.uploadFileSwitch }\n },\n validateFile(event) {\n const file = event.target.files[0];\n const fileExtension = '.' + file.name.split('.').pop().toLowerCase();\n if (this.validExtensions && this.validExtensions.length) {\n if (!this.validExtensions.includes(fileExtension)) {\n console.log('Wrong filetype');\n } else {\n this.uploadOrReplaceFile({ file: event.target.files[0] })\n }\n } else {\n this.error = \"\"\n this.uploadOrReplaceFile({ file: event.target.files[0] })\n }\n },\n async saveUrl() {\n\n if (this.URLValue.includes('http://') || this.URLValue.includes('https://')) {\n await this.context.node.input({ '@id': this.URLValue, 'mode': this.inputChoice })\n }\n else await this.context.node.input({ '@id': 'https://' + this.URLValue, 'mode': this.inputChoice })\n\n },\n checkIfPresent() {\n // console.log(this.context.value['@id']);\n if (this.context.value['@id']) {\n // console.log(this.context.value['@id']);\n this.URLValue = this.context.value['@id']\n return true\n }\n else false\n },\n // finds the parent input group of a given element.\n findParentInputGroupOfElement(element) {\n // Start with the given element.\n let currentElement = element;\n\n // Traverse the DOM tree upwards.\n while (currentElement) {\n // If the current element is an input group, return it.\n if (currentElement.classList.contains('formkit-input-group-repeatable')) {\n return currentElement;\n }\n // If not, move to the parent element.\n currentElement = currentElement.parentElement;\n }\n\n // If no input group was found, return null.\n return null;\n },\n // finds the index of the distribution access URL based on the root of this component.\n findDistributionAccessUrlIndex() {\n // todo: find a more stable way to find the index of the distribution access URL.\n // this way uses the DOM tree, which is not stable.\n\n // Start at the root of this component.\n const rootElement = this.$refs.fileupload;\n\n // Find the parent input group of the root element.\n const parentInputGroup = this.findParentInputGroupOfElement(rootElement);\n if (!parentInputGroup) return null;\n\n // Get the parent element of all input groups.\n const parentOfAllInputGroups = parentInputGroup.parentElement;\n const allInputGroupsNodeList = parentOfAllInputGroups.querySelectorAll('.formkit-input-group-repeatable');\n const allInputGroupsArray = Array.from(allInputGroupsNodeList);\n\n // Find the index of the parent input group within the array of all input groups.\n const indexOfParentInputGroup = allInputGroupsArray.indexOf(parentInputGroup);\n\n return indexOfParentInputGroup;\n },\n async uploadOrReplaceFile({ file }) {\n\n const replaceEnabled = this.$env?.content?.dataProviderInterface?.enableFileUploadReplace || false;\n const wantsToReplace = this.$route.query?.edit ?? false;\n\n if (replaceEnabled && wantsToReplace) {\n const distributionIndexToReplace = this.$route.query?.edit;\n const fileIndexToReplace = this.findDistributionAccessUrlIndex();\n\n const targetDistribution = this.getData('distributions')?.[distributionIndexToReplace];\n const targetFile = targetDistribution?.['dcat:accessURL']?.[fileIndexToReplace];\n const accessUrl = targetFile?.['@id'];\n if (accessUrl) {\n const fileUploadUrl = this.$env.api.fileUploadUrl;\n\n const fileId = helper.getFileIdByAccessUrl({ accessUrl, fileUploadUrl })\n\n return await this.uploadFile(file, {\n method: 'PUT',\n url: `${this.$env.api.fileUploadUrl}data/${fileId}?catalog=${this.catalogId}`,\n });\n }\n\n }\n\n return await this.uploadFile(file);\n },\n async uploadFile(file, options = {}) {\n\n this.isLoading = true;\n\n const form = new FormData();\n form.append('file', file);\n\n const catalog = this.catalogId;\n const token = this.getUserData.rtpToken;\n\n const resolvedOptions = {\n method: 'POST',\n url: `${this.$env.api.fileUploadUrl}data?catalog=${catalog}`,\n ...options,\n };\n\n const requestOptions = {\n method: resolvedOptions.method,\n url: resolvedOptions.url,\n headers: {\n 'Content-Type': 'multipart/form-data',\n Authorization: `Bearer ${token}`,\n },\n data: form,\n };\n\n try {\n\n const result = await axios.request(requestOptions);\n const path = result.data.result.location.substring(result.data.result.location.indexOf('/') + 1);\n this.context.model = `${this.$env.api.fileUploadUrl}${path}`;\n this.isLoading = false;\n this.success = true;\n await this.context.node.input({ '@id': `${this.$env.api.fileUploadUrl}${path}` })\n // this.context.rootEmit('change');\n\n } catch (err) {\n\n this.isLoading = false;\n this.fail = true;\n console.error(err); // eslint-disable-line\n }\n },\n },\n mounted() {\n\n this.$nextTick(function () {\n\n if (this.context.value['@id']) {\n this.uploadURL = true\n this.URLValue = this.context.value['@id']\n this.inputChoice = \"Provide an URL\"\n return true\n }\n else false\n })\n },\n setup() {\n const { t } = useI18n();\n const env = useRuntimeEnv();\n \n\n\n var drop = reactive({\n active: false,\n })\n\n\n const fLoad = ref('fload');\n\n onClickOutside(fLoad, event => {\n drop.active = false\n })\n function triggerDropdown(e) {\n drop.active = !drop.active\n }\n\n const dpiContext = useDpiContext();\n\n const catalogIdFromFormkit = useFormKitNodeById('catalog')\n\n const catalogId = computed(() =>\n // Extract from catalog input field\n catalogIdFromFormkit?.value.value\n // Try to recover if catalog is empty for some reason\n || dpiContext.value.edit?.catalog \n );\n\n return {\n drop,\n onClickOutside,\n triggerDropdown,\n t,\n catalogId,\n };\n },\n});\n</script>\n\n<style lang=\"scss\" scoped>\n// @import '../../../styles/bootstrap_theme';\n// @import '../../../styles/utils/css-animations';\n.dURLText {}\n\n\n.accessUrl {\n .formkit-outer {}\n}\n\n.file-div {\n display: flex;\n align-items: center;\n}\n\n.upload-feedback {\n padding: 10px;\n}\n\n/*** MATERIAL ICONS ***/\n%modal-icon {\n font-size: 20px;\n cursor: default;\n}\n\n.check-icon {\n @extend %modal-icon;\n color: #28a745;\n}\n\n.close-icon {\n @extend %modal-icon;\n color: red;\n}\n\n.lds-ring {\n display: inline-block;\n position: relative;\n width: 30px;\n height: 30px;\n}\n\n.lds-ring div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n right: 0;\n width: 30px;\n height: 30px;\n border: 8px solid lightgray;\n border-radius: 50%;\n animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: lightgray transparent transparent transparent;\n}\n\n.lds-ring div:nth-child(1) {\n animation-delay: -0.45s;\n}\n\n.lds-ring div:nth-child(2) {\n animation-delay: -0.3s;\n}\n\n.lds-ring div:nth-child(3) {\n animation-delay: -0.15s;\n}\n\n.error {\n color: red;\n}\n\n.errorSub {\n color: black;\n}\n\n@keyframes lds-ring {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.allowedFTypes {\n padding: 0.5rem;\n border-radius: 5px;\n border: 1px solid lightgrey;\n}\n\n.allowedTypesWrapper {\n max-width: 100%;\n display: flex;\n flex-wrap: wrap;\n}\n\n.fileuploadList {\n width: 96.7%;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","_a","mapGetters","mapActions","event","fileExtension","element","currentElement","rootElement","parentInputGroup","allInputGroupsNodeList","file","replaceEnabled","_c","_b","wantsToReplace","_d","distributionIndexToReplace","_e","fileIndexToReplace","targetDistribution","_f","targetFile","_g","accessUrl","fileUploadUrl","fileId","helper","options","form","catalog","token","resolvedOptions","requestOptions","result","axios","path","err","useI18n","useRuntimeEnv","drop","reactive","fLoad","ref","onClickOutside","triggerDropdown","e","dpiContext","useDpiContext","catalogIdFromFormkit","useFormKitNodeById","catalogId","computed","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_12","_hoisted_15","_openBlock","_createElementBlock","_Fragment","_createElementVNode","_createVNode","_component_FormKit","_ctx","_cache","$event","_createTextVNode","_hoisted_2","_createCommentVNode","_hoisted_3","_mergeProps","args","_vModelText","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_toDisplayString","_hoisted_13","_hoisted_14","_renderList","types"],"mappings":"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"}
|