@piveau/piveau-hub-ui-modules 4.6.113 → 4.6.115
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/DPIMenu.vue.d.ts +10 -2
- package/dist/data-provider-interface/DPIMenu.vue.mjs +98 -66
- package/dist/data-provider-interface/DPIMenu.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/Dropup.vue.mjs +18 -18
- package/dist/data-provider-interface/components/Dropup.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsPages.vue.d.ts +20 -1
- package/dist/datasetDetails/features/DatasetDetailsPages.vue.mjs +562 -132
- package/dist/datasetDetails/features/DatasetDetailsPages.vue.mjs.map +1 -1
- package/dist/facets/FacetTitle.vue.mjs +4 -4
- package/dist/facets/FacetTitle.vue.mjs.map +1 -1
- package/dist/piveau-hub-ui-modules.css +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ declare const _default: import('vue').DefineComponent<{}, {
|
|
|
2
2
|
scrollToTop: () => void;
|
|
3
3
|
}, {
|
|
4
4
|
showRatingService: any;
|
|
5
|
+
rootUrl: string;
|
|
5
6
|
visible: boolean;
|
|
6
7
|
modal: {
|
|
7
8
|
show: boolean;
|
|
@@ -113,7 +114,7 @@ declare const _default: import('vue').DefineComponent<{}, {
|
|
|
113
114
|
handler?: undefined;
|
|
114
115
|
})[];
|
|
115
116
|
})[];
|
|
116
|
-
menuItems(): {
|
|
117
|
+
menuItems(): ({
|
|
117
118
|
name: string;
|
|
118
119
|
to: {
|
|
119
120
|
name: string;
|
|
@@ -121,7 +122,14 @@ declare const _default: import('vue').DefineComponent<{}, {
|
|
|
121
122
|
locale: any;
|
|
122
123
|
};
|
|
123
124
|
};
|
|
124
|
-
|
|
125
|
+
href?: undefined;
|
|
126
|
+
external?: undefined;
|
|
127
|
+
} | {
|
|
128
|
+
name: string;
|
|
129
|
+
href: string;
|
|
130
|
+
external: boolean;
|
|
131
|
+
to?: undefined;
|
|
132
|
+
})[];
|
|
125
133
|
isLocatedOnAuthorizedDatasetPage(): any;
|
|
126
134
|
isLocatedOnAuthorizedCatalogPage(): boolean;
|
|
127
135
|
isOperator(): any;
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import A from "axios";
|
|
2
|
-
import
|
|
2
|
+
import m from "jquery";
|
|
3
3
|
import "lodash-es";
|
|
4
4
|
import { mapGetters as k, mapActions as y } from "vuex";
|
|
5
|
-
import
|
|
6
|
-
import { useWindowScroll as
|
|
7
|
-
import { resolveComponent as
|
|
5
|
+
import O from "./components/Dropup.vue.mjs";
|
|
6
|
+
import { useWindowScroll as T } from "../external/@vueuse/core/index";
|
|
7
|
+
import { resolveComponent as D, openBlock as u, createElementBlock as h, createElementVNode as l, toDisplayString as c, createCommentVNode as g, createTextVNode as d, Fragment as b, renderList as v, createBlock as P, resolveDynamicComponent as U, normalizeClass as _, withCtx as $, renderSlot as q, createVNode as w } from "vue";
|
|
8
8
|
import "./DPIMenu.vue2.mjs";
|
|
9
|
-
import
|
|
9
|
+
import L from "../_virtual/_plugin-vue_export-helper.mjs";
|
|
10
10
|
const z = {
|
|
11
11
|
name: "DPI-menu",
|
|
12
12
|
components: {
|
|
13
|
-
Dropup:
|
|
13
|
+
Dropup: O
|
|
14
14
|
},
|
|
15
15
|
props: {},
|
|
16
16
|
data() {
|
|
17
|
-
var e;
|
|
17
|
+
var e, t;
|
|
18
18
|
return {
|
|
19
19
|
showRatingService: (e = this.$env.content.datasetDetails) == null ? void 0 : e.showRatingService,
|
|
20
|
+
rootUrl: ((t = this.$env.api.baseUrl) == null ? void 0 : t.split(".eu/")[0]) + ".eu/" || "https://ppe.data.europa.eu/",
|
|
20
21
|
visible: !0,
|
|
21
22
|
modal: {
|
|
22
23
|
show: !1,
|
|
@@ -31,7 +32,7 @@ const z = {
|
|
|
31
32
|
setup() {
|
|
32
33
|
return {
|
|
33
34
|
scrollToTop: () => {
|
|
34
|
-
let { x: t, y: r } =
|
|
35
|
+
let { x: t, y: r } = T({ behavior: "smooth" });
|
|
35
36
|
r.value = 0;
|
|
36
37
|
}
|
|
37
38
|
};
|
|
@@ -88,7 +89,7 @@ const z = {
|
|
|
88
89
|
property: "datasets",
|
|
89
90
|
catalog: this.getCatalog.id
|
|
90
91
|
})
|
|
91
|
-
},
|
|
92
|
+
}, m("#modal").modal({ show: !0 });
|
|
92
93
|
}
|
|
93
94
|
},
|
|
94
95
|
{
|
|
@@ -128,7 +129,7 @@ const z = {
|
|
|
128
129
|
title: this.getTitle,
|
|
129
130
|
description: this.getDescription
|
|
130
131
|
})
|
|
131
|
-
},
|
|
132
|
+
}, m("#modal").modal({ show: !0 });
|
|
132
133
|
}
|
|
133
134
|
},
|
|
134
135
|
{
|
|
@@ -149,7 +150,7 @@ const z = {
|
|
|
149
150
|
catalog: this.getCatalog.id,
|
|
150
151
|
type: this.$env.content.dataProviderInterface.doiRegistrationService.persistentIdentifierType || "mock"
|
|
151
152
|
})
|
|
152
|
-
},
|
|
153
|
+
}, m("#modal").modal({ show: !0 });
|
|
153
154
|
}
|
|
154
155
|
}
|
|
155
156
|
]
|
|
@@ -178,7 +179,7 @@ const z = {
|
|
|
178
179
|
property: "catalogues",
|
|
179
180
|
catalog: this.$route.params.ctlg_id
|
|
180
181
|
})
|
|
181
|
-
},
|
|
182
|
+
}, m("#modal").modal({ show: !0 });
|
|
182
183
|
}
|
|
183
184
|
},
|
|
184
185
|
{
|
|
@@ -203,14 +204,18 @@ const z = {
|
|
|
203
204
|
];
|
|
204
205
|
},
|
|
205
206
|
menuItems() {
|
|
206
|
-
let e = [
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
207
|
+
let e = [];
|
|
208
|
+
return this.$env.content.dataProviderInterface.hideOldDPIFunctions || e.push({
|
|
209
|
+
name: this.$t("message.dataupload.menu.draftDatasets"),
|
|
210
|
+
to: {
|
|
211
|
+
name: "DataProviderInterface-Draft",
|
|
212
|
+
query: { locale: this.$route.query.locale }
|
|
213
|
+
}
|
|
214
|
+
}), this.$env.content.dataProviderInterface.hideOldDPIFunctions && e.push({
|
|
215
|
+
name: "Data Management",
|
|
216
|
+
href: `${this.rootUrl}/data-management/`,
|
|
217
|
+
external: !0
|
|
218
|
+
}), e.push(
|
|
214
219
|
{
|
|
215
220
|
name: this.$t("message.dataupload.menu.myCatalogues"),
|
|
216
221
|
to: {
|
|
@@ -225,8 +230,7 @@ const z = {
|
|
|
225
230
|
query: { locale: this.$route.query.locale }
|
|
226
231
|
}
|
|
227
232
|
}
|
|
228
|
-
|
|
229
|
-
return this.showRatingService && this.isOperator && e.push({
|
|
233
|
+
), this.showRatingService && this.isOperator && e.push({
|
|
230
234
|
name: "Comment moderation",
|
|
231
235
|
to: {
|
|
232
236
|
name: "DataProviderInterface-CommentsModeration",
|
|
@@ -306,17 +310,17 @@ const z = {
|
|
|
306
310
|
// Need to translate this
|
|
307
311
|
message: "DOI registration is not possible, the following error occured: " + a.response.data,
|
|
308
312
|
confirm: "Okay",
|
|
309
|
-
confirmHandler: () =>
|
|
313
|
+
confirmHandler: () => m("#modal").modal("hide")
|
|
310
314
|
}, console.log(a.response.data);
|
|
311
315
|
let i = typeof s == "string" && s;
|
|
312
316
|
i = typeof s == "function" && s(a), i = typeof s == "object" && s.prefix + " - " + a.response.data, console.log(s);
|
|
313
|
-
const
|
|
317
|
+
const f = i || o || a.message || "An error occurred";
|
|
314
318
|
this.showSnackbar({
|
|
315
|
-
message:
|
|
319
|
+
message: f,
|
|
316
320
|
variant: "error"
|
|
317
321
|
});
|
|
318
322
|
} finally {
|
|
319
|
-
this.modal.loading = !1,
|
|
323
|
+
this.modal.loading = !1, m("#modal").modal("hide");
|
|
320
324
|
}
|
|
321
325
|
},
|
|
322
326
|
async handleRegisterDoi({ id: e, catalog: t, type: r = "eu-ra-doi" }) {
|
|
@@ -380,65 +384,93 @@ const z = {
|
|
|
380
384
|
variant: "error"
|
|
381
385
|
});
|
|
382
386
|
} finally {
|
|
383
|
-
this.modal.loading = !1,
|
|
387
|
+
this.modal.loading = !1, m("#modal").modal("hide");
|
|
384
388
|
}
|
|
385
389
|
}
|
|
386
390
|
},
|
|
387
391
|
created() {
|
|
388
392
|
this.setupKeycloakWatcher();
|
|
389
393
|
}
|
|
390
|
-
},
|
|
394
|
+
}, S = {
|
|
391
395
|
id: "wrapper",
|
|
392
396
|
"data-cy": "dpi-menu"
|
|
393
|
-
},
|
|
397
|
+
}, M = {
|
|
394
398
|
key: 0,
|
|
395
399
|
class: "warning-banner"
|
|
396
|
-
},
|
|
400
|
+
}, R = { class: "warning-content" }, x = { key: 1 }, N = { class: "text-white" }, B = { style: { "margin-top": "1%" } }, F = { class: "btn-group dropup" }, H = ["href"], E = {
|
|
397
401
|
key: 0,
|
|
398
402
|
class: "logoutWrap"
|
|
399
|
-
},
|
|
403
|
+
}, V = { class: "text-white" }, W = {
|
|
400
404
|
type: "button",
|
|
401
405
|
class: "btn btn-default logout"
|
|
402
406
|
};
|
|
403
407
|
function G(e, t, r, s, a, o) {
|
|
404
|
-
const i =
|
|
405
|
-
return u(), h("div",
|
|
406
|
-
a.visible && o.showWarningBanner ? (u(), h("div",
|
|
407
|
-
l("div",
|
|
408
|
-
])) :
|
|
409
|
-
t[
|
|
410
|
-
a.visible ? (u(), h("nav",
|
|
408
|
+
const i = D("dropup"), f = D("router-link"), C = D("app-confirmation-dialog");
|
|
409
|
+
return u(), h("div", S, [
|
|
410
|
+
a.visible && o.showWarningBanner ? (u(), h("div", M, [
|
|
411
|
+
l("div", R, c(e.$t("message.dataupload.menu.warningbanner")), 1)
|
|
412
|
+
])) : g("", !0),
|
|
413
|
+
t[8] || (t[8] = d()),
|
|
414
|
+
a.visible ? (u(), h("nav", x, [
|
|
411
415
|
l("div", null, [
|
|
412
|
-
l("h4",
|
|
416
|
+
l("h4", N, c(e.$t("message.dataupload.menu.dpi")), 1)
|
|
413
417
|
]),
|
|
414
|
-
t[
|
|
415
|
-
l("div",
|
|
416
|
-
(u(!0), h(b,
|
|
417
|
-
key: `Group${
|
|
418
|
+
t[6] || (t[6] = d()),
|
|
419
|
+
l("div", B, [
|
|
420
|
+
e.$env.content.dataProviderInterface.hideOldDPIFunctions ? g("", !0) : (u(!0), h(b, { key: 0 }, v(o.menuGroups, (n, p) => (u(), P(i, {
|
|
421
|
+
key: `Group${p}`,
|
|
418
422
|
groupName: n.group,
|
|
419
423
|
groupItems: n.items,
|
|
420
424
|
show: e.$env.content.dataProviderInterface.buttons[n.group],
|
|
421
425
|
isOperator: e.getUserData.roles.includes("operator"),
|
|
422
426
|
isCatalog: n.group === "Catalogue"
|
|
423
427
|
}, null, 8, ["groupName", "groupItems", "show", "isOperator", "isCatalog"]))), 128)),
|
|
424
|
-
t[
|
|
428
|
+
t[2] || (t[2] = d()),
|
|
425
429
|
l("ul", null, [
|
|
426
|
-
l("div",
|
|
427
|
-
(u(!0), h(b, null, v(o.menuItems, (n,
|
|
428
|
-
key: `Menu${
|
|
430
|
+
l("div", F, [
|
|
431
|
+
(u(!0), h(b, null, v(o.menuItems, (n, p) => (u(), h("li", {
|
|
432
|
+
key: `Menu${p}`
|
|
429
433
|
}, [
|
|
430
434
|
l("button", {
|
|
431
435
|
type: "button",
|
|
432
436
|
class: "btn btn-default",
|
|
433
437
|
onClick: t[0] || (t[0] = (I) => s.scrollToTop())
|
|
434
438
|
}, [
|
|
435
|
-
(u(),
|
|
436
|
-
|
|
439
|
+
n.external ? (u(), h("a", {
|
|
440
|
+
key: 0,
|
|
441
|
+
href: n.href,
|
|
442
|
+
target: "_blank",
|
|
443
|
+
rel: "noopener noreferrer"
|
|
444
|
+
}, [
|
|
445
|
+
d(c(n.name) + " ", 1),
|
|
446
|
+
t[1] || (t[1] = l("span", { class: "ml-2 external-link-icon" }, [
|
|
447
|
+
l("svg", {
|
|
448
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
449
|
+
width: "14",
|
|
450
|
+
height: "16",
|
|
451
|
+
fill: "currentColor",
|
|
452
|
+
class: "bi bi-box-arrow-up-right",
|
|
453
|
+
viewBox: "0 0 16 16"
|
|
454
|
+
}, [
|
|
455
|
+
l("path", {
|
|
456
|
+
"fill-rule": "evenodd",
|
|
457
|
+
d: "M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5"
|
|
458
|
+
}),
|
|
459
|
+
d(),
|
|
460
|
+
l("path", {
|
|
461
|
+
"fill-rule": "evenodd",
|
|
462
|
+
d: "M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0z"
|
|
463
|
+
})
|
|
464
|
+
])
|
|
465
|
+
], -1))
|
|
466
|
+
], 8, H)) : (u(), P(U(n.handler ? "button" : "router-link"), {
|
|
467
|
+
key: 1,
|
|
468
|
+
class: _({ disabled: n.disabled }),
|
|
437
469
|
to: n.to,
|
|
438
470
|
onClick: (I) => n.handler ? n.handler() : null
|
|
439
471
|
}, {
|
|
440
472
|
default: $(() => [
|
|
441
|
-
d(
|
|
473
|
+
d(c(n.name), 1)
|
|
442
474
|
]),
|
|
443
475
|
_: 2
|
|
444
476
|
}, 1032, ["class", "to", "onClick"]))
|
|
@@ -447,40 +479,40 @@ function G(e, t, r, s, a, o) {
|
|
|
447
479
|
])
|
|
448
480
|
])
|
|
449
481
|
]),
|
|
450
|
-
t[
|
|
451
|
-
e.getUserData.userName ? (u(), h("div",
|
|
482
|
+
t[7] || (t[7] = d()),
|
|
483
|
+
e.getUserData.userName ? (u(), h("div", E, [
|
|
452
484
|
q(e.$slots, "right", { getUserData: e.getUserData }, () => [
|
|
453
|
-
l("small",
|
|
454
|
-
t[
|
|
455
|
-
t[
|
|
456
|
-
t[
|
|
457
|
-
l("button",
|
|
458
|
-
|
|
485
|
+
l("small", V, c(e.$t("message.dataupload.menu.loggedInAs")) + " " + c(e.getUserData.userName), 1),
|
|
486
|
+
t[3] || (t[3] = d()),
|
|
487
|
+
t[4] || (t[4] = l("br", null, null, -1)),
|
|
488
|
+
t[5] || (t[5] = d()),
|
|
489
|
+
l("button", W, [
|
|
490
|
+
w(f, { to: { name: "Logout" } }, {
|
|
459
491
|
default: $(() => [
|
|
460
|
-
d(
|
|
492
|
+
d(c(e.$t("message.dataupload.menu.logout")), 1)
|
|
461
493
|
]),
|
|
462
494
|
_: 1
|
|
463
495
|
})
|
|
464
496
|
])
|
|
465
497
|
], !0)
|
|
466
|
-
])) :
|
|
467
|
-
])) :
|
|
468
|
-
t[
|
|
469
|
-
|
|
498
|
+
])) : g("", !0)
|
|
499
|
+
])) : g("", !0),
|
|
500
|
+
t[9] || (t[9] = d()),
|
|
501
|
+
w(C, {
|
|
470
502
|
id: "DPIMenuModal",
|
|
471
503
|
loading: a.modal.loading,
|
|
472
504
|
confirm: a.modal.confirm,
|
|
473
505
|
onConfirm: a.modal.confirmHandler
|
|
474
506
|
}, {
|
|
475
507
|
default: $(() => [
|
|
476
|
-
d(
|
|
508
|
+
d(c(a.modal.message), 1)
|
|
477
509
|
]),
|
|
478
510
|
_: 1
|
|
479
511
|
}, 8, ["loading", "confirm", "onConfirm"])
|
|
480
512
|
]);
|
|
481
513
|
}
|
|
482
|
-
const
|
|
514
|
+
const ae = /* @__PURE__ */ L(z, [["render", G], ["__scopeId", "data-v-75f87789"]]);
|
|
483
515
|
export {
|
|
484
|
-
|
|
516
|
+
ae as default
|
|
485
517
|
};
|
|
486
518
|
//# sourceMappingURL=DPIMenu.vue.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DPIMenu.vue.mjs","sources":["../../lib/data-provider-interface/DPIMenu.vue"],"sourcesContent":["<template>\n <div id=\"wrapper\" data-cy=\"dpi-menu\">\n <div v-if=\"visible && showWarningBanner\" class=\"warning-banner\">\n <div class=\"warning-content\">\n {{ $t(\"message.dataupload.menu.warningbanner\") }}\n </div>\n </div>\n <nav v-if=\"visible\">\n <div>\n <h4 class=\"text-white\">{{ $t(\"message.dataupload.menu.dpi\") }}</h4>\n </div>\n\n <div style=\"margin-top: 1%\">\n <dropup\n v-for=\"(group, index) in menuGroups\"\n :key=\"`Group${index}`\"\n :groupName=\"group.group\"\n :groupItems=\"group.items\"\n :show=\"$env.content.dataProviderInterface.buttons[group.group]\"\n :isOperator=\"getUserData.roles.includes('operator')\"\n :isCatalog=\"group.group === 'Catalogue' ? true : false\"\n >\n </dropup>\n <ul>\n <div class=\"btn-group dropup\">\n <li v-for=\"(menuItem, index) in menuItems\" :key=\"`Menu${index}`\">\n <button\n type=\"button\"\n class=\"btn btn-default\"\n @click=\"scrollToTop()\"\n >\n <!-- Menu items are either buttons or router-link -->\n <!-- depending if they have a 'to' or 'handler' property -->\n <component\n :is=\"menuItem.handler ? 'button' : 'router-link'\"\n :class=\"{ disabled: menuItem.disabled }\"\n :to=\"menuItem.to\"\n @click.native=\"menuItem.handler ? menuItem.handler() : null\"\n >\n {{ menuItem.handler }}\n {{ menuItem.name }}\n </component>\n </button>\n </li>\n </div>\n </ul>\n </div>\n\n <div v-if=\"getUserData.userName\" class=\"logoutWrap\">\n <slot name=\"right\" :get-user-data=\"getUserData\">\n <small class=\"text-white\"\n >{{ $t(\"message.dataupload.menu.loggedInAs\") }}\n {{ getUserData.userName }}</small\n >\n <br />\n <button type=\"button\" class=\"btn btn-default logout\">\n <router-link :to=\"{ name: 'Logout' }\">{{\n $t(\"message.dataupload.menu.logout\")\n }}</router-link>\n </button>\n </slot>\n </div>\n </nav>\n\n <app-confirmation-dialog\n id=\"DPIMenuModal\"\n :loading=\"modal.loading\"\n :confirm=\"modal.confirm\"\n @confirm=\"modal.confirmHandler\"\n >\n {{ modal.message }}\n </app-confirmation-dialog>\n </div>\n</template>\n\n<script>\nimport axios from \"axios\";\nimport $ from \"jquery\";\nimport { has, isEmpty } from \"lodash-es\";\nimport { mapGetters, mapActions } from \"vuex\";\nimport Dropup from \"./components/Dropup\";\nimport { useWindowScroll } from \"@vueuse/core\";\n\nexport default {\n name: \"DPI-menu\",\n components: {\n Dropup,\n },\n props: {},\n data() {\n return {\n showRatingService: this.$env.content.datasetDetails?.showRatingService,\n visible: true,\n modal: {\n show: false,\n loading: false,\n error: null,\n message: \"\",\n confirm: \"Ok\",\n confirmHandler: () => null,\n },\n };\n },\n setup() {\n const scrollToTop = () => {\n let { x, y } = useWindowScroll({ behavior: \"smooth\" });\n y.value = 0;\n };\n return {\n scrollToTop,\n };\n },\n computed: {\n ...mapGetters(\"datasetDetails\", [\n \"getCatalog\",\n \"getID\",\n \"getLoading\",\n \"getTitle\",\n \"getDescription\",\n 'getAdmsIdentifiers',\n 'getIdentifiers',\n 'getOtherIdentifiers',\n ]),\n // Individual DOI checks for display\n hasAnyDoi() {\n const checkDoi = (value) => value && value.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n\n return (\n checkDoi(this.getIdentifiers?.[0]) || // Check Identifier\n checkDoi(this.getAdmsIdentifiers?.[0]?.identifier) || // Check Adms\n checkDoi(this.getOtherIdentifiers?.[0]?.identifier) // Check Others\n );\n },\n ...mapGetters(\"auth\", [\"getUserData\"]),\n menuGroups() {\n return [\n {\n group: \"Dataset\",\n items: [\n {\n key: \"create-dataset\",\n name: \"createDataset\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false }, // if edit is false -> reset is triggered\n params: { property: \"datasets\" },\n },\n },\n {\n name: \"deleteDataset\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage || this.hasAnyDoi,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.datasetDeletion.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.datasetDeletion.confirm\"\n ),\n confirmHandler: () =>\n this.handleDelete({\n id: this.getID,\n property: \"datasets\",\n catalog: this.getCatalog.id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"edit-dataset\",\n name: \"editDataset\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.getCatalog.id || \"undefined\",\n property: \"datasets\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n\n {\n key: \"draft-dataset\",\n name: \"setToDraft\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.markAsDraft.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.markAsDraft.confirm\"\n ),\n confirmHandler: () =>\n this.handleMarkAsDraft({\n id: this.getID,\n catalog: this.getCatalog.id,\n title: this.getTitle,\n description: this.getDescription,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"register-dataset\",\n name: \"registerDoi\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.registerADoi.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.registerADoi.confirm\"\n ),\n confirmHandler: () =>\n this.handleRegisterDoi({\n id: this.getID,\n catalog: this.getCatalog.id,\n type:\n this.$env.content.dataProviderInterface\n .doiRegistrationService.persistentIdentifierType ||\n \"mock\",\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n ],\n },\n {\n group: \"Catalogue\",\n items: [\n {\n name: \"CreateCatalogue\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false },\n params: { property: \"catalogues\" },\n },\n },\n {\n name: \"DeleteCatalogue\",\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message:\n \"Are you sure you want to delete this catalogue? This can not be reverted!\",\n confirm: \"Delete catlogue (irreversible)\",\n confirmHandler: () =>\n this.handleDelete({\n id: this.$route.params.ctlg_id,\n property: \"catalogues\",\n catalog: this.$route.params.ctlg_id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n name: \"EditCatalog\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.$route.params.ctlg_id\n ? this.$route.params.ctlg_id\n : \"undefined\",\n property: \"catalogues\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n ],\n },\n ];\n },\n\n menuItems() {\n let items = [\n {\n name: this.$t(\"message.dataupload.menu.draftDatasets\"),\n to: {\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.myCatalogues\"),\n to: {\n name: \"DataProviderInterface-UserCatalogues\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.userProfile\"),\n to: {\n name: \"DataProviderInterface-UserProfile\",\n query: { locale: this.$route.query.locale },\n },\n },\n ];\n if (this.showRatingService && this.isOperator) {\n items.push({\n name: \"Comment moderation\",\n to: {\n name: \"DataProviderInterface-CommentsModeration\",\n query: { locale: this.$route.query.locale },\n },\n });\n }\n return items;\n },\n isLocatedOnAuthorizedDatasetPage() {\n // Never return true while loading\n if (this.getLoading) return false;\n\n // Is the user located on the correct page?\n const isOnDatasetDetailsPage =\n this.$route.name === \"DatasetDetailsDataset\";\n if (!isOnDatasetDetailsPage) return false;\n const datasetId = isOnDatasetDetailsPage && this.$route.params.ds_id;\n\n // Does user have permission on dataset (based on current datasetDetails state)?\n const permissions = this.getUserData && this.getUserData.permissions;\n const catalogId = this.getCatalog && this.getCatalog.id;\n const hasPermission = permissions.find(\n (permission) => permission.rsname === catalogId\n );\n\n if (this.isOperator) {\n return true;\n }\n\n // Does the user have permission on the current dataset details page?\n return (\n hasPermission && isOnDatasetDetailsPage && datasetId === this.getID\n );\n },\n isLocatedOnAuthorizedCatalogPage() {\n // never return true while loading\n if (this.getLoading) return false;\n\n // is the user located on the correct page?\n const onCatalogPage = this.$route.name === \"CatalogueDetails\";\n if (!onCatalogPage) return false;\n const catalogId = onCatalogPage && this.$route.params.ctlg_id;\n\n // const permissions = this.getUserData && this.getUserData.permissions;\n // const hasPermission = permissions.find(permission => permission.rsname === catalogId);\n const hasPermission = true;\n // does user have permission on current catalogue\n return hasPermission && onCatalogPage;\n },\n isOperator() {\n return this.getUserData.roles.includes(\"operator\");\n },\n showWarningBanner() {\n return this.$env.content.dataProviderInterface?.showWarningBanner || false;\n }\n },\n methods: {\n checkDoi(doi = '') {\n return doi && doi.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n },\n ...mapActions(\"auth\", [\"updateUserData\"]),\n ...mapActions(\"snackbar\", [\"showSnackbar\"]),\n setupKeycloakWatcher() {\n if (this.$keycloak && this.$keycloak.authenticated) {\n // Set up watcher here since we this.$keycloak might not be available.\n // If this.$keycloak is ensured, move this watcher out of this created hook.\n this.$watch(\n \"$keycloak.token\",\n async (newToken) => {\n if (!newToken) return;\n\n let rtpToken = this.$keycloak.rtpToken;\n if (!rtpToken) {\n const rtpTokenFn = this.$keycloak.getRtpToken;\n if (rtpTokenFn) {\n const res = await rtpTokenFn({ autoRefresh: true });\n rtpToken = res;\n }\n }\n\n this.updateUserData({\n authToken: newToken,\n rtpToken: rtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n },\n { immediate: true }\n );\n\n this.$watch(\"$keycloak.rtpToken\", (newRtpToken) => {\n if (!newRtpToken) return;\n\n this.updateUserData({\n authToken: this.$keycloak.token,\n rtpToken: newRtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n });\n }\n },\n async handleConfirm(action, argsObj, { successMessage, errorMessage }) {\n this.modal.loading = true;\n try {\n // Sleep for 250ms for better UX\n this.$Progress.start();\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.set(25);\n await this.$store.dispatch(action, argsObj);\n\n // Successful DOI registration\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.finish();\n } catch (ex) {\n this.$Progress.fail();\n // eslint-disable-next-line no-console\n console.error(ex);\n\n const maybeErrorStatusMsg =\n ex.response && ex.response.data && ex.response.data.message;\n\n this.modal = {\n ...this.modal,\n ...{\n // Need to translate this\n message:\n \"DOI registration is not possible, the following error occured: \" +\n ex.response.data,\n confirm: \"Okay\",\n confirmHandler: () => $(\"#modal\").modal(\"hide\"),\n },\n };\n\n console.log(ex.response.data);\n let customErrorMessage =\n typeof errorMessage === \"string\" && errorMessage;\n customErrorMessage =\n typeof errorMessage === \"function\" && errorMessage(ex);\n // customErrorMessage = typeof errorMessage === 'object' && errorMessage.prefix && `${errorMessage.prefix}${maybeErrorStatusMsg && ` — ${maybeErrorStatusMsg}`}`;\n customErrorMessage =\n typeof errorMessage === \"object\" &&\n errorMessage.prefix + \" - \" + ex.response.data;\n\n console.log(errorMessage);\n const errorMsg =\n customErrorMessage ||\n maybeErrorStatusMsg ||\n ex.message ||\n \"An error occurred\";\n // show snackbar\n this.showSnackbar({\n message: errorMsg,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n async handleRegisterDoi({ id, catalog, type = \"eu-ra-doi\" }) {\n await this.handleConfirm(\n \"auth/createPersistentIdentifier\",\n { id, catalog, type },\n {\n successMessage: this.$te(\"message.snackbar.doiRegistration.success\")\n ? this.$t(\"message.snackbar.doiRegistration.success\")\n : \"Successfully registered DOI\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.doiRegistration.error\")\n ? this.$t(\"message.snackbar.doiRegistration.error\")\n : \"DOI registration failed\",\n },\n }\n );\n },\n async handleMarkAsDraft({ id, catalog, title, description }) {\n await this.handleConfirm(\n \"auth/putDatasetToDraft\",\n {\n id,\n catalog,\n title,\n description,\n },\n {\n successMessage: this.$te(\"message.snackbar.markAsDraft.success\")\n ? this.$t(\"message.snackbar.markAsDraft.success\")\n : \"Dataset successfully marked as draft\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.markAsDraft.error\")\n ? this.$t(\"message.snackbar.markAsDraft.error\")\n : \"Failed to mark dataset as draft\",\n },\n }\n );\n\n this.$router\n .push({\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n })\n .catch(() => {});\n },\n async handleDelete({ id, property, catalog }) {\n // todo: create user dataset api (and maybe integrate to store)\n // For now, do request manually using axios\n\n this.modal.loading = true;\n this.$Progress.start();\n try {\n let endpoint;\n\n if (property === \"datasets\") {\n endpoint = `${this.$env.api.hubUrl}datasets/${id}?useNormalizedId=true&catalogue=${catalog}`;\n } else if (property === \"catalogues\") {\n endpoint = `${this.$env.api.hubUrl}catalogues/${id}`;\n }\n\n await axios.delete(endpoint, {\n headers: {\n \"Content-Type\": \"text/turtle\",\n Authorization: `Bearer ${this.getUserData.rtpToken}`,\n },\n });\n\n let successMessage;\n if (property === \"datasets\") {\n successMessage = this.$te(\"message.snackbar.deleteDataset.success\")\n ? this.$t(\"message.snackbar.deleteDataset.success\")\n : \"Dataset successfully deleted\";\n } else if (property === \"catalogues\") {\n successMessage = this.$te(\"message.snackbar.deleteCatalog.success\")\n ? this.$t(\"message.snackbar.deleteCatalog.success\")\n : \"Catalog successfully deleted\";\n }\n\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n this.$Progress.finish();\n\n // Redirect to Home\n this.$router\n .push({\n name: \"Datasets\",\n query: { locale: this.$route.query.locale, refresh: true },\n })\n .catch(() => {});\n } catch (ex) {\n this.$Progress.fail();\n\n let errorMessage;\n\n if (property === \"datasets\") {\n errorMessage = this.$te(\"message.snackbar.deleteDataset.error\")\n ? this.$t(\"message.snackbar.deleteDataset.error\")\n : \"Failed to delete dataset\";\n } else if (property === \"catalogues\") {\n errorMessage = this.$te(\"message.snackbar.deleteCatalog.error\")\n ? this.$t(\"message.snackbar.deleteCatalog.error\")\n : \"Failed to delete catalog\";\n }\n\n this.showSnackbar({\n message: `${errorMessage}${\n ex.response?.data ? ` — ${ex.response?.data}` : ex.message\n }`,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n },\n created() {\n this.setupKeycloakWatcher();\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n#wrapper {\n background: linear-gradient(90deg, #082b7a, #0e47cb);\n width: 100%;\n position: sticky;\n bottom: 0;\n z-index: 999;\n}\n\nnav {\n max-width: 1400px;\n display: flex;\n flex-direction: row;\n margin: 0 auto;\n justify-content: space-between;\n font-size: 1rem;\n align-items: center;\n}\n\nul {\n float: right;\n\n li {\n display: inline;\n\n a {\n color: white;\n }\n }\n}\n\nbutton a {\n color: white;\n}\n\n.logout {\n display: block;\n margin: 0 auto;\n border: 1px solid white;\n padding: 0.1rem 1.5rem;\n}\n\n.logoutWrap {\n width: 14rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.warning-banner {\n background-color: #ffc107;\n color: #000;\n padding: 0.75rem 1rem;\n text-align: center;\n width: 100%;\n}\n\n.warning-content {\n max-width: 1400px;\n margin: 0 auto;\n}\n</style>\n"],"names":["_sfc_main","Dropup","_a","x","y","useWindowScroll","mapGetters","checkDoi","value","_c","_b","_e","_d","$","items","isOnDatasetDetailsPage","datasetId","permissions","catalogId","hasPermission","permission","onCatalogPage","doi","mapActions","newToken","rtpToken","rtpTokenFn","newRtpToken","action","argsObj","successMessage","errorMessage","resolve","ex","maybeErrorStatusMsg","customErrorMessage","errorMsg","id","catalog","type","title","description","property","endpoint","axios","_hoisted_3","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_9","_openBlock","_createElementBlock","_hoisted_1","$data","$options","_hoisted_2","_createElementVNode","_toDisplayString","_ctx","_hoisted_4","_Fragment","_renderList","group","index","_createBlock","_component_dropup","menuItem","$setup","_resolveDynamicComponent","_normalizeClass","_createTextVNode","_hoisted_8","_renderSlot","_hoisted_10","_createVNode","_component_router_link","_component_app_confirmation_dialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DPIMenu.vue.mjs","sources":["../../lib/data-provider-interface/DPIMenu.vue"],"sourcesContent":["<template>\n <div id=\"wrapper\" data-cy=\"dpi-menu\">\n <div v-if=\"visible && showWarningBanner\" class=\"warning-banner\">\n <div class=\"warning-content\">\n {{ $t(\"message.dataupload.menu.warningbanner\") }}\n </div>\n </div>\n <nav v-if=\"visible\">\n <div>\n <h4 class=\"text-white\">{{ $t(\"message.dataupload.menu.dpi\") }}</h4>\n </div>\n\n <div style=\"margin-top: 1%\">\n <!-- ADD env to hide \"old\" DPI -->\n <dropup\n v-if=\"!$env.content.dataProviderInterface.hideOldDPIFunctions\"\n v-for=\"(group, index) in menuGroups\"\n :key=\"`Group${index}`\"\n :groupName=\"group.group\"\n :groupItems=\"group.items\"\n :show=\"$env.content.dataProviderInterface.buttons[group.group]\"\n :isOperator=\"getUserData.roles.includes('operator')\"\n :isCatalog=\"group.group === 'Catalogue' ? true : false\"\n >\n </dropup>\n <ul>\n <div class=\"btn-group dropup\">\n <li v-for=\"(menuItem, index) in menuItems\" :key=\"`Menu${index}`\" >\n <button\n type=\"button\"\n class=\"btn btn-default\"\n @click=\"scrollToTop()\"\n >\n <!-- External links -->\n <a\n v-if=\"menuItem.external\"\n :href=\"menuItem.href\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ menuItem.name }} \n <span class=\"ml-2 external-link-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"16\" fill=\"currentColor\" class=\"bi bi-box-arrow-up-right\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5\"/>\n <path fill-rule=\"evenodd\" d=\"M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0z\"/>\n </svg>\n </span>\n </a>\n \n <!-- Internal router links or handlers -->\n <component\n v-else\n :is=\"menuItem.handler ? 'button' : 'router-link'\"\n :class=\"{ disabled: menuItem.disabled }\"\n :to=\"menuItem.to\"\n @click.native=\"menuItem.handler ? menuItem.handler() : null\"\n >\n {{ menuItem.name }}\n </component>\n </button>\n</li>\n </div>\n </ul>\n </div>\n\n <div v-if=\"getUserData.userName\" class=\"logoutWrap\">\n <slot name=\"right\" :get-user-data=\"getUserData\">\n <small class=\"text-white\"\n >{{ $t(\"message.dataupload.menu.loggedInAs\") }}\n {{ getUserData.userName }}</small\n >\n <br />\n <button type=\"button\" class=\"btn btn-default logout\">\n <router-link :to=\"{ name: 'Logout' }\">{{\n $t(\"message.dataupload.menu.logout\")\n }}</router-link>\n </button>\n </slot>\n </div>\n </nav>\n\n <app-confirmation-dialog\n id=\"DPIMenuModal\"\n :loading=\"modal.loading\"\n :confirm=\"modal.confirm\"\n @confirm=\"modal.confirmHandler\"\n >\n {{ modal.message }}\n </app-confirmation-dialog>\n </div>\n</template>\n\n<script>\nimport axios from \"axios\";\nimport $ from \"jquery\";\nimport { has, isEmpty } from \"lodash-es\";\nimport { mapGetters, mapActions } from \"vuex\";\nimport Dropup from \"./components/Dropup\";\nimport { useWindowScroll } from \"@vueuse/core\";\n\nexport default {\n name: \"DPI-menu\",\n components: {\n Dropup,\n },\n props: {},\n data() {\n return {\n showRatingService: this.$env.content.datasetDetails?.showRatingService,\n rootUrl: this.$env.api.baseUrl?.split('.eu/')[0] + '.eu/' || 'https://ppe.data.europa.eu/',\n visible: true,\n modal: {\n show: false,\n loading: false,\n error: null,\n message: \"\",\n confirm: \"Ok\",\n confirmHandler: () => null,\n },\n };\n },\n setup() {\n const scrollToTop = () => {\n let { x, y } = useWindowScroll({ behavior: \"smooth\" });\n y.value = 0;\n };\n return {\n scrollToTop,\n };\n },\n computed: {\n ...mapGetters(\"datasetDetails\", [\n \"getCatalog\",\n \"getID\",\n \"getLoading\",\n \"getTitle\",\n \"getDescription\",\n 'getAdmsIdentifiers',\n 'getIdentifiers',\n 'getOtherIdentifiers',\n ]),\n // Individual DOI checks for display\n hasAnyDoi() {\n const checkDoi = (value) => value && value.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n\n return (\n checkDoi(this.getIdentifiers?.[0]) || // Check Identifier\n checkDoi(this.getAdmsIdentifiers?.[0]?.identifier) || // Check Adms\n checkDoi(this.getOtherIdentifiers?.[0]?.identifier) // Check Others\n );\n },\n ...mapGetters(\"auth\", [\"getUserData\"]),\n menuGroups() {\n return [\n {\n group: \"Dataset\",\n items: [\n {\n key: \"create-dataset\",\n name: \"createDataset\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false }, // if edit is false -> reset is triggered\n params: { property: \"datasets\" },\n },\n },\n {\n name: \"deleteDataset\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage || this.hasAnyDoi,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.datasetDeletion.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.datasetDeletion.confirm\"\n ),\n confirmHandler: () =>\n this.handleDelete({\n id: this.getID,\n property: \"datasets\",\n catalog: this.getCatalog.id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"edit-dataset\",\n name: \"editDataset\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.getCatalog.id || \"undefined\",\n property: \"datasets\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n\n {\n key: \"draft-dataset\",\n name: \"setToDraft\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.markAsDraft.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.markAsDraft.confirm\"\n ),\n confirmHandler: () =>\n this.handleMarkAsDraft({\n id: this.getID,\n catalog: this.getCatalog.id,\n title: this.getTitle,\n description: this.getDescription,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"register-dataset\",\n name: \"registerDoi\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.registerADoi.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.registerADoi.confirm\"\n ),\n confirmHandler: () =>\n this.handleRegisterDoi({\n id: this.getID,\n catalog: this.getCatalog.id,\n type:\n this.$env.content.dataProviderInterface\n .doiRegistrationService.persistentIdentifierType ||\n \"mock\",\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n ],\n },\n {\n group: \"Catalogue\",\n items: [\n {\n name: \"CreateCatalogue\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false },\n params: { property: \"catalogues\" },\n },\n },\n {\n name: \"DeleteCatalogue\",\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message:\n \"Are you sure you want to delete this catalogue? This can not be reverted!\",\n confirm: \"Delete catlogue (irreversible)\",\n confirmHandler: () =>\n this.handleDelete({\n id: this.$route.params.ctlg_id,\n property: \"catalogues\",\n catalog: this.$route.params.ctlg_id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n name: \"EditCatalog\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.$route.params.ctlg_id\n ? this.$route.params.ctlg_id\n : \"undefined\",\n property: \"catalogues\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n ],\n },\n ];\n },\n menuItems() {\n let items = [];\n // Only show Draft Datasets if hideOldDPIFunctions is not true\n if (!this.$env.content.dataProviderInterface.hideOldDPIFunctions) {\n items.push({\n name: this.$t(\"message.dataupload.menu.draftDatasets\"),\n to: {\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n },\n });\n }\n \n if (this.$env.content.dataProviderInterface.hideOldDPIFunctions) {\n items.push({\n name: \"Data Management\",\n href: `${this.rootUrl}/data-management/`,\n external: true,\n });\n }\n \n items.push(\n {\n name: this.$t(\"message.dataupload.menu.myCatalogues\"),\n to: {\n name: \"DataProviderInterface-UserCatalogues\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.userProfile\"),\n to: {\n name: \"DataProviderInterface-UserProfile\",\n query: { locale: this.$route.query.locale },\n },\n }\n );\n \n if (this.showRatingService && this.isOperator) {\n items.push({\n name: \"Comment moderation\",\n to: {\n name: \"DataProviderInterface-CommentsModeration\",\n query: { locale: this.$route.query.locale },\n },\n });\n }\n return items;\n },\n isLocatedOnAuthorizedDatasetPage() {\n // Never return true while loading\n if (this.getLoading) return false;\n\n // Is the user located on the correct page?\n const isOnDatasetDetailsPage =\n this.$route.name === \"DatasetDetailsDataset\";\n if (!isOnDatasetDetailsPage) return false;\n const datasetId = isOnDatasetDetailsPage && this.$route.params.ds_id;\n\n // Does user have permission on dataset (based on current datasetDetails state)?\n const permissions = this.getUserData && this.getUserData.permissions;\n const catalogId = this.getCatalog && this.getCatalog.id;\n const hasPermission = permissions.find(\n (permission) => permission.rsname === catalogId\n );\n\n if (this.isOperator) {\n return true;\n }\n\n // Does the user have permission on the current dataset details page?\n return (\n hasPermission && isOnDatasetDetailsPage && datasetId === this.getID\n );\n },\n isLocatedOnAuthorizedCatalogPage() {\n // never return true while loading\n if (this.getLoading) return false;\n\n // is the user located on the correct page?\n const onCatalogPage = this.$route.name === \"CatalogueDetails\";\n if (!onCatalogPage) return false;\n const catalogId = onCatalogPage && this.$route.params.ctlg_id;\n\n // const permissions = this.getUserData && this.getUserData.permissions;\n // const hasPermission = permissions.find(permission => permission.rsname === catalogId);\n const hasPermission = true;\n // does user have permission on current catalogue\n return hasPermission && onCatalogPage;\n },\n isOperator() {\n return this.getUserData.roles.includes(\"operator\");\n },\n showWarningBanner() {\n return this.$env.content.dataProviderInterface?.showWarningBanner || false;\n }\n },\n methods: {\n checkDoi(doi = '') {\n return doi && doi.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n },\n ...mapActions(\"auth\", [\"updateUserData\"]),\n ...mapActions(\"snackbar\", [\"showSnackbar\"]),\n setupKeycloakWatcher() {\n if (this.$keycloak && this.$keycloak.authenticated) {\n // Set up watcher here since we this.$keycloak might not be available.\n // If this.$keycloak is ensured, move this watcher out of this created hook.\n this.$watch(\n \"$keycloak.token\",\n async (newToken) => {\n if (!newToken) return;\n\n let rtpToken = this.$keycloak.rtpToken;\n if (!rtpToken) {\n const rtpTokenFn = this.$keycloak.getRtpToken;\n if (rtpTokenFn) {\n const res = await rtpTokenFn({ autoRefresh: true });\n rtpToken = res;\n }\n }\n\n this.updateUserData({\n authToken: newToken,\n rtpToken: rtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n },\n { immediate: true }\n );\n\n this.$watch(\"$keycloak.rtpToken\", (newRtpToken) => {\n if (!newRtpToken) return;\n\n this.updateUserData({\n authToken: this.$keycloak.token,\n rtpToken: newRtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n });\n }\n },\n async handleConfirm(action, argsObj, { successMessage, errorMessage }) {\n this.modal.loading = true;\n try {\n // Sleep for 250ms for better UX\n this.$Progress.start();\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.set(25);\n await this.$store.dispatch(action, argsObj);\n\n // Successful DOI registration\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.finish();\n } catch (ex) {\n this.$Progress.fail();\n // eslint-disable-next-line no-console\n console.error(ex);\n\n const maybeErrorStatusMsg =\n ex.response && ex.response.data && ex.response.data.message;\n\n this.modal = {\n ...this.modal,\n ...{\n // Need to translate this\n message:\n \"DOI registration is not possible, the following error occured: \" +\n ex.response.data,\n confirm: \"Okay\",\n confirmHandler: () => $(\"#modal\").modal(\"hide\"),\n },\n };\n\n console.log(ex.response.data);\n let customErrorMessage =\n typeof errorMessage === \"string\" && errorMessage;\n customErrorMessage =\n typeof errorMessage === \"function\" && errorMessage(ex);\n // customErrorMessage = typeof errorMessage === 'object' && errorMessage.prefix && `${errorMessage.prefix}${maybeErrorStatusMsg && ` — ${maybeErrorStatusMsg}`}`;\n customErrorMessage =\n typeof errorMessage === \"object\" &&\n errorMessage.prefix + \" - \" + ex.response.data;\n\n console.log(errorMessage);\n const errorMsg =\n customErrorMessage ||\n maybeErrorStatusMsg ||\n ex.message ||\n \"An error occurred\";\n // show snackbar\n this.showSnackbar({\n message: errorMsg,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n async handleRegisterDoi({ id, catalog, type = \"eu-ra-doi\" }) {\n await this.handleConfirm(\n \"auth/createPersistentIdentifier\",\n { id, catalog, type },\n {\n successMessage: this.$te(\"message.snackbar.doiRegistration.success\")\n ? this.$t(\"message.snackbar.doiRegistration.success\")\n : \"Successfully registered DOI\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.doiRegistration.error\")\n ? this.$t(\"message.snackbar.doiRegistration.error\")\n : \"DOI registration failed\",\n },\n }\n );\n },\n async handleMarkAsDraft({ id, catalog, title, description }) {\n await this.handleConfirm(\n \"auth/putDatasetToDraft\",\n {\n id,\n catalog,\n title,\n description,\n },\n {\n successMessage: this.$te(\"message.snackbar.markAsDraft.success\")\n ? this.$t(\"message.snackbar.markAsDraft.success\")\n : \"Dataset successfully marked as draft\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.markAsDraft.error\")\n ? this.$t(\"message.snackbar.markAsDraft.error\")\n : \"Failed to mark dataset as draft\",\n },\n }\n );\n\n this.$router\n .push({\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n })\n .catch(() => {});\n },\n async handleDelete({ id, property, catalog }) {\n // todo: create user dataset api (and maybe integrate to store)\n // For now, do request manually using axios\n\n this.modal.loading = true;\n this.$Progress.start();\n try {\n let endpoint;\n\n if (property === \"datasets\") {\n endpoint = `${this.$env.api.hubUrl}datasets/${id}?useNormalizedId=true&catalogue=${catalog}`;\n } else if (property === \"catalogues\") {\n endpoint = `${this.$env.api.hubUrl}catalogues/${id}`;\n }\n\n await axios.delete(endpoint, {\n headers: {\n \"Content-Type\": \"text/turtle\",\n Authorization: `Bearer ${this.getUserData.rtpToken}`,\n },\n });\n\n let successMessage;\n if (property === \"datasets\") {\n successMessage = this.$te(\"message.snackbar.deleteDataset.success\")\n ? this.$t(\"message.snackbar.deleteDataset.success\")\n : \"Dataset successfully deleted\";\n } else if (property === \"catalogues\") {\n successMessage = this.$te(\"message.snackbar.deleteCatalog.success\")\n ? this.$t(\"message.snackbar.deleteCatalog.success\")\n : \"Catalog successfully deleted\";\n }\n\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n this.$Progress.finish();\n\n // Redirect to Home\n this.$router\n .push({\n name: \"Datasets\",\n query: { locale: this.$route.query.locale, refresh: true },\n })\n .catch(() => {});\n } catch (ex) {\n this.$Progress.fail();\n\n let errorMessage;\n\n if (property === \"datasets\") {\n errorMessage = this.$te(\"message.snackbar.deleteDataset.error\")\n ? this.$t(\"message.snackbar.deleteDataset.error\")\n : \"Failed to delete dataset\";\n } else if (property === \"catalogues\") {\n errorMessage = this.$te(\"message.snackbar.deleteCatalog.error\")\n ? this.$t(\"message.snackbar.deleteCatalog.error\")\n : \"Failed to delete catalog\";\n }\n\n this.showSnackbar({\n message: `${errorMessage}${\n ex.response?.data ? ` — ${ex.response?.data}` : ex.message\n }`,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n },\n created() {\n this.setupKeycloakWatcher();\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n#wrapper {\n background: linear-gradient(90deg, #082b7a, #0e47cb);\n width: 100%;\n position: sticky;\n bottom: 0;\n z-index: 999;\n}\n\nnav {\n max-width: 1400px;\n display: flex;\n flex-direction: row;\n margin: 0 auto;\n justify-content: space-between;\n font-size: 1rem;\n align-items: center;\n}\n\nul {\n float: right;\n\n li {\n display: inline;\n\n a {\n color: white;\n }\n }\n}\n\nbutton a {\n color: white;\n}\n\n.logout {\n display: block;\n margin: 0 auto;\n border: 1px solid white;\n padding: 0.1rem 1.5rem;\n}\n\n.logoutWrap {\n width: 14rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.warning-banner {\n background-color: #ffc107;\n color: #000;\n padding: 0.75rem 1rem;\n text-align: center;\n width: 100%;\n}\n\n.warning-content {\n max-width: 1400px;\n margin: 0 auto;\n}\n\n.external-link-icon svg {\n vertical-align: text-top !important;\n}\n</style>\n"],"names":["_sfc_main","Dropup","_a","_b","x","y","useWindowScroll","mapGetters","checkDoi","value","_c","_e","_d","$","items","isOnDatasetDetailsPage","datasetId","permissions","catalogId","hasPermission","permission","onCatalogPage","doi","mapActions","newToken","rtpToken","rtpTokenFn","newRtpToken","action","argsObj","successMessage","errorMessage","resolve","ex","maybeErrorStatusMsg","customErrorMessage","errorMsg","id","catalog","type","title","description","property","endpoint","axios","_hoisted_3","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_10","_openBlock","_createElementBlock","_hoisted_1","$data","$options","_hoisted_2","_createElementVNode","_toDisplayString","_ctx","_hoisted_4","_Fragment","_renderList","group","index","_createBlock","_component_dropup","menuItem","$setup","_resolveDynamicComponent","_normalizeClass","_createTextVNode","_hoisted_9","_renderSlot","_hoisted_11","_createVNode","_component_router_link","_component_app_confirmation_dialog"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { openBlock as a, createElementBlock as
|
|
1
|
+
import { openBlock as a, createElementBlock as r, createElementVNode as s, createTextVNode as d, toDisplayString as l, Fragment as p, renderList as u, createBlock as i, resolveDynamicComponent as c, normalizeClass as m, withCtx as g, createCommentVNode as y } from "vue";
|
|
2
2
|
import "./Dropup.vue2.mjs";
|
|
3
|
-
import
|
|
4
|
-
const
|
|
3
|
+
import f from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
+
const h = {
|
|
5
5
|
name: "Dropup",
|
|
6
6
|
props: {
|
|
7
7
|
groupName: {
|
|
@@ -20,7 +20,7 @@ const f = {
|
|
|
20
20
|
type: Boolean
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
},
|
|
23
|
+
}, _ = {
|
|
24
24
|
key: 0,
|
|
25
25
|
class: "btn-group dropup"
|
|
26
26
|
}, k = {
|
|
@@ -29,36 +29,36 @@ const f = {
|
|
|
29
29
|
"data-toggle": "dropdown",
|
|
30
30
|
"aria-haspopup": "true",
|
|
31
31
|
"aria-expanded": "false"
|
|
32
|
-
},
|
|
33
|
-
function
|
|
34
|
-
return
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
}, w = { class: "dropdown-menu" }, C = ["data-cy"];
|
|
33
|
+
function b(n, t, o, B, D, N) {
|
|
34
|
+
return o.show && !o.isCatalog || o.show && o.isCatalog && o.isOperator || n.showOldDPIFunction ? (a(), r("div", _, [
|
|
35
|
+
s("button", k, [
|
|
36
|
+
d(l(n.$t("message.dataupload.menu." + o.groupName)), 1),
|
|
37
|
+
t[0] || (t[0] = s("span", { class: "caret" }, null, -1))
|
|
38
38
|
]),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
(a(!0),
|
|
39
|
+
t[1] || (t[1] = d()),
|
|
40
|
+
s("ul", w, [
|
|
41
|
+
(a(!0), r(p, null, u(o.groupItems, (e) => (a(), r("li", {
|
|
42
42
|
key: e.key,
|
|
43
43
|
"data-cy": e.key
|
|
44
44
|
}, [
|
|
45
|
-
(a(), c(
|
|
45
|
+
(a(), i(c(e.handler ? "a" : "router-link"), {
|
|
46
46
|
class: m(["dropdown-item", { disabled: e.disabled }]),
|
|
47
47
|
to: e.to || { name: "Datasets" },
|
|
48
48
|
href: e.handler ? "#" : "",
|
|
49
49
|
onClick: (v) => e.handler ? e.handler() : null
|
|
50
50
|
}, {
|
|
51
51
|
default: g(() => [
|
|
52
|
-
|
|
52
|
+
d(l(n.$t("message.dataupload.menu." + e.name)), 1)
|
|
53
53
|
]),
|
|
54
54
|
_: 2
|
|
55
55
|
}, 1032, ["class", "to", "href", "onClick"]))
|
|
56
|
-
], 8,
|
|
56
|
+
], 8, C))), 128))
|
|
57
57
|
])
|
|
58
58
|
])) : y("", !0);
|
|
59
59
|
}
|
|
60
|
-
const
|
|
60
|
+
const V = /* @__PURE__ */ f(h, [["render", b], ["__scopeId", "data-v-816f234d"]]);
|
|
61
61
|
export {
|
|
62
|
-
|
|
62
|
+
V as default
|
|
63
63
|
};
|
|
64
64
|
//# sourceMappingURL=Dropup.vue.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropup.vue.mjs","sources":["../../../lib/data-provider-interface/components/Dropup.vue"],"sourcesContent":["<template>\n <div class=\"btn-group dropup\" v-if=\"(show && !isCatalog) || (show && isCatalog && isOperator)\">\n <button type=\"button\" class=\"dpi-menu-dropup-btn btn btn-default dropdown-toggle\" data-toggle=\"dropdown\"\n aria-haspopup=\"true\" aria-expanded=\"false\">\n {{ $t('message.dataupload.menu.'+ groupName ) }}<span class=\"caret\"></span>\n </button>\n <ul class=\"dropdown-menu\">\n <li v-for=\"item in groupItems\" :key=\"item.key\" :data-cy=\"item.key\">\n <!-- Menu items are either buttons or router-link -->\n <!-- depending if they have a 'to' or 'handler' property -->\n <component :is=\"item.handler ? 'a' : 'router-link'\" class=\"dropdown-item\" :class=\"{ 'disabled': item.disabled }\"\n :to=\"item.to || { name: 'Datasets' }\" :href=\"item.handler ? '#' : ''\"\n @click=\"item.handler ? item.handler() : null\">\n {{ $t('message.dataupload.menu.'+ item.name ) }}\n </component>\n </li>\n </ul>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'Dropup',\n props: {\n groupName: {\n type: String,\n },\n groupItems: {\n type: Array,\n },\n show: {\n type: Boolean,\n },\n isCatalog: {\n type: Boolean,\n },\n isOperator: {\n type: Boolean,\n }\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\nbutton.dpi-menu-dropup-btn {\n color: white;\n}\n</style>"],"names":["_sfc_main","_hoisted_3","$props","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createTextVNode","_toDisplayString","
|
|
1
|
+
{"version":3,"file":"Dropup.vue.mjs","sources":["../../../lib/data-provider-interface/components/Dropup.vue"],"sourcesContent":["<template>\n <div class=\"btn-group dropup\" v-if=\"(show && !isCatalog) || (show && isCatalog && isOperator) || showOldDPIFunction\">\n <button type=\"button\" class=\"dpi-menu-dropup-btn btn btn-default dropdown-toggle\" data-toggle=\"dropdown\"\n aria-haspopup=\"true\" aria-expanded=\"false\">\n {{ $t('message.dataupload.menu.'+ groupName ) }}<span class=\"caret\"></span>\n </button>\n <ul class=\"dropdown-menu\">\n <li v-for=\"item in groupItems\" :key=\"item.key\" :data-cy=\"item.key\">\n <!-- Menu items are either buttons or router-link -->\n <!-- depending if they have a 'to' or 'handler' property -->\n <component :is=\"item.handler ? 'a' : 'router-link'\" class=\"dropdown-item\" :class=\"{ 'disabled': item.disabled }\"\n :to=\"item.to || { name: 'Datasets' }\" :href=\"item.handler ? '#' : ''\"\n @click=\"item.handler ? item.handler() : null\">\n {{ $t('message.dataupload.menu.'+ item.name ) }}\n </component>\n </li>\n </ul>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'Dropup',\n props: {\n groupName: {\n type: String,\n },\n groupItems: {\n type: Array,\n },\n show: {\n type: Boolean,\n },\n isCatalog: {\n type: Boolean,\n },\n isOperator: {\n type: Boolean,\n }\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\nbutton.dpi-menu-dropup-btn {\n color: white;\n}\n</style>"],"names":["_sfc_main","_hoisted_3","$props","_ctx","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createTextVNode","_toDisplayString","_Fragment","_renderList","item","_createBlock","_resolveDynamicComponent","_normalizeClass"],"mappings":";;;AAqBA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,IACP;AAAA,IACD,YAAY;AAAA,MACV,MAAM;AAAA,IACP;AAAA,IACD,MAAM;AAAA,MACJ,MAAM;AAAA,IACP;AAAA,IACD,WAAW;AAAA,MACT,MAAM;AAAA,IACP;AAAA,IACD,YAAY;AAAA,MACV,MAAM;AAAA,IACR;AAAA,EACD;AACH;;EAvCO,OAAM;;EACD,MAAK;AAAA,EAAS,OAAM;AAAA,EAAsD,eAAY;AAAA,EAC5F,iBAAc;AAAA,EAAO,iBAAc;GAGjCC,IAAA,EAAA,OAAM,gBAAe;;SALUC,EAAI,QAAA,CAAKA,eAAeA,EAAA,QAAQA,EAAS,aAAIA,EAAU,cAAKC,EAAkB,sBAAnHC,KAAAC,EAgBM,OAhBNC,GAgBM;AAAA,IAfJC,EAGS,UAHTC,GAGS;AAAA,MADJC,EAAAC,EAAAP,EAAA,gCAA+BD,EAAS,UAAA,GAAA,CAAA;AAAA,sBAAKK,EAA2B,QAAA,EAArB,OAAM,QAAO,GAAA,MAAA,EAAA;AAAA;;IAErEA,EAUK,MAVLN,GAUK;AAAA,cATHI,EAQKM,GAAA,MAAAC,EARcV,EAAU,YAAA,CAAlBW,YAAXR,EAQK,MAAA;AAAA,QAR2B,KAAKQ,EAAK;AAAA,QAAM,WAASA,EAAK;AAAA;cAG5DC,EAIYC,EAJIF,EAAK,UAAO,MAAA,aAAA,GAAA;AAAA,UAAwB,OAAMG,EAAA,CAAA,iBAAsC,EAAA,UAAAH,EAAK,SAAQ,CAAA,CAAA;AAAA,UAC1G,IAAIA,EAAK,MAAE,EAAA,MAAA,WAAA;AAAA,UAA2B,MAAMA,EAAK,UAAO,MAAA;AAAA,UACxD,gBAAOA,EAAK,UAAUA,EAAK,QAAO,IAAA;AAAA;qBACnC,MAAiD;AAAA,gBAA9CV,EAAE,GAAA,6BAA6BU,EAAK,KAAI,GAAA,CAAA;AAAA;;;;;;;;"}
|