@piveau/piveau-hub-ui-modules 4.9.0 → 4.9.1
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.mjs +19 -34
- package/dist/data-provider-interface/DPIMenu.vue.mjs.map +1 -1
- package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.d.ts +8 -0
- package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.mjs +6 -6
- package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.mjs.map +1 -1
- package/dist/datasetDetails/properties/DatasetDetailsProperty.vue.mjs +24 -24
- package/dist/datasetDetails/properties/DatasetDetailsProperty.vue.mjs.map +1 -1
- package/dist/datasetDetails/properties/specification.d.ts +9 -1
- package/dist/datasetDetails/properties/specification.mjs +26 -14
- package/dist/datasetDetails/properties/specification.mjs.map +1 -1
- package/dist/piveau-hub-ui-modules.css +1 -1
- package/dist/services/datasetService.mjs +11 -11
- package/dist/services/datasetService.mjs.map +1 -1
- package/dist/store/modules/datasetDetailsStore.d.ts +9 -7
- package/dist/store/modules/datasetDetailsStore.mjs +63 -29
- package/dist/store/modules/datasetDetailsStore.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import A from "axios";
|
|
2
2
|
import m from "jquery";
|
|
3
3
|
import "lodash-es";
|
|
4
|
-
import { mapGetters as
|
|
4
|
+
import { mapGetters as $, mapActions as y } from "vuex";
|
|
5
5
|
import O from "./components/Dropup.vue.mjs";
|
|
6
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
|
|
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 w, resolveDynamicComponent as U, normalizeClass as _, withCtx as k, renderSlot as q, createVNode as C } from "vue";
|
|
8
8
|
import "./DPIMenu.vue2.mjs";
|
|
9
9
|
import L from "../_virtual/_plugin-vue_export-helper.mjs";
|
|
10
10
|
const z = {
|
|
@@ -38,7 +38,7 @@ const z = {
|
|
|
38
38
|
};
|
|
39
39
|
},
|
|
40
40
|
computed: {
|
|
41
|
-
|
|
41
|
+
...$("datasetDetails", [
|
|
42
42
|
"getCatalog",
|
|
43
43
|
"getID",
|
|
44
44
|
"getLoading",
|
|
@@ -56,7 +56,7 @@ const z = {
|
|
|
56
56
|
e((s = (r = this.getAdmsIdentifiers) == null ? void 0 : r[0]) == null ? void 0 : s.identifier) || // Check Adms
|
|
57
57
|
e((o = (a = this.getOtherIdentifiers) == null ? void 0 : a[0]) == null ? void 0 : o.identifier);
|
|
58
58
|
},
|
|
59
|
-
|
|
59
|
+
...$("auth", ["getUserData"]),
|
|
60
60
|
menuGroups() {
|
|
61
61
|
return [
|
|
62
62
|
{
|
|
@@ -215,22 +215,7 @@ const z = {
|
|
|
215
215
|
name: "Data Management",
|
|
216
216
|
href: `${this.rootUrl}/data-management/`,
|
|
217
217
|
external: !0
|
|
218
|
-
}), e.push(
|
|
219
|
-
{
|
|
220
|
-
name: this.$t("message.dataupload.menu.myCatalogues"),
|
|
221
|
-
to: {
|
|
222
|
-
name: "DataProviderInterface-UserCatalogues",
|
|
223
|
-
query: { locale: this.$route.query.locale }
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
name: this.$t("message.dataupload.menu.userProfile"),
|
|
228
|
-
to: {
|
|
229
|
-
name: "DataProviderInterface-UserProfile",
|
|
230
|
-
query: { locale: this.$route.query.locale }
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
), this.showRatingService && this.isOperator && e.push({
|
|
218
|
+
}), this.showRatingService && this.isOperator && e.push({
|
|
234
219
|
name: "Comment moderation",
|
|
235
220
|
to: {
|
|
236
221
|
name: "DataProviderInterface-CommentsModeration",
|
|
@@ -314,9 +299,9 @@ const z = {
|
|
|
314
299
|
}, console.log(a.response.data);
|
|
315
300
|
let i = typeof s == "string" && s;
|
|
316
301
|
i = typeof s == "function" && s(a), i = typeof s == "object" && s.prefix + " - " + a.response.data, console.log(s);
|
|
317
|
-
const
|
|
302
|
+
const p = i || o || a.message || "An error occurred";
|
|
318
303
|
this.showSnackbar({
|
|
319
|
-
message:
|
|
304
|
+
message: p,
|
|
320
305
|
variant: "error"
|
|
321
306
|
});
|
|
322
307
|
} finally {
|
|
@@ -405,7 +390,7 @@ const z = {
|
|
|
405
390
|
class: "btn btn-default logout"
|
|
406
391
|
};
|
|
407
392
|
function G(e, t, r, s, a, o) {
|
|
408
|
-
const i = D("dropup"),
|
|
393
|
+
const i = D("dropup"), p = D("router-link"), P = D("app-confirmation-dialog");
|
|
409
394
|
return u(), h("div", S, [
|
|
410
395
|
a.visible && o.showWarningBanner ? (u(), h("div", M, [
|
|
411
396
|
l("div", R, c(e.$t("message.dataupload.menu.warningbanner")), 1)
|
|
@@ -417,8 +402,8 @@ function G(e, t, r, s, a, o) {
|
|
|
417
402
|
]),
|
|
418
403
|
t[6] || (t[6] = d()),
|
|
419
404
|
l("div", B, [
|
|
420
|
-
e.$env.content.dataProviderInterface.hideOldDPIFunctions ? g("", !0) : (u(!0), h(b, { key: 0 }, v(o.menuGroups, (n,
|
|
421
|
-
key: `Group${
|
|
405
|
+
e.$env.content.dataProviderInterface.hideOldDPIFunctions ? g("", !0) : (u(!0), h(b, { key: 0 }, v(o.menuGroups, (n, f) => (u(), w(i, {
|
|
406
|
+
key: `Group${f}`,
|
|
422
407
|
groupName: n.group,
|
|
423
408
|
groupItems: n.items,
|
|
424
409
|
show: e.$env.content.dataProviderInterface.buttons[n.group],
|
|
@@ -428,8 +413,8 @@ function G(e, t, r, s, a, o) {
|
|
|
428
413
|
t[2] || (t[2] = d()),
|
|
429
414
|
l("ul", null, [
|
|
430
415
|
l("div", F, [
|
|
431
|
-
(u(!0), h(b, null, v(o.menuItems, (n,
|
|
432
|
-
key: `Menu${
|
|
416
|
+
(u(!0), h(b, null, v(o.menuItems, (n, f) => (u(), h("li", {
|
|
417
|
+
key: `Menu${f}`
|
|
433
418
|
}, [
|
|
434
419
|
l("button", {
|
|
435
420
|
type: "button",
|
|
@@ -463,13 +448,13 @@ function G(e, t, r, s, a, o) {
|
|
|
463
448
|
})
|
|
464
449
|
])
|
|
465
450
|
], -1))
|
|
466
|
-
], 8, H)) : (u(),
|
|
451
|
+
], 8, H)) : (u(), w(U(n.handler ? "button" : "router-link"), {
|
|
467
452
|
key: 1,
|
|
468
453
|
class: _({ disabled: n.disabled }),
|
|
469
454
|
to: n.to,
|
|
470
455
|
onClick: (I) => n.handler ? n.handler() : null
|
|
471
456
|
}, {
|
|
472
|
-
default:
|
|
457
|
+
default: k(() => [
|
|
473
458
|
d(c(n.name), 1)
|
|
474
459
|
]),
|
|
475
460
|
_: 2
|
|
@@ -487,8 +472,8 @@ function G(e, t, r, s, a, o) {
|
|
|
487
472
|
t[4] || (t[4] = l("br", null, null, -1)),
|
|
488
473
|
t[5] || (t[5] = d()),
|
|
489
474
|
l("button", W, [
|
|
490
|
-
|
|
491
|
-
default:
|
|
475
|
+
C(p, { to: { name: "Logout" } }, {
|
|
476
|
+
default: k(() => [
|
|
492
477
|
d(c(e.$t("message.dataupload.menu.logout")), 1)
|
|
493
478
|
]),
|
|
494
479
|
_: 1
|
|
@@ -498,20 +483,20 @@ function G(e, t, r, s, a, o) {
|
|
|
498
483
|
])) : g("", !0)
|
|
499
484
|
])) : g("", !0),
|
|
500
485
|
t[9] || (t[9] = d()),
|
|
501
|
-
|
|
486
|
+
C(P, {
|
|
502
487
|
id: "DPIMenuModal",
|
|
503
488
|
loading: a.modal.loading,
|
|
504
489
|
confirm: a.modal.confirm,
|
|
505
490
|
onConfirm: a.modal.confirmHandler
|
|
506
491
|
}, {
|
|
507
|
-
default:
|
|
492
|
+
default: k(() => [
|
|
508
493
|
d(c(a.modal.message), 1)
|
|
509
494
|
]),
|
|
510
495
|
_: 1
|
|
511
496
|
}, 8, ["loading", "confirm", "onConfirm"])
|
|
512
497
|
]);
|
|
513
498
|
}
|
|
514
|
-
const ae = /* @__PURE__ */ L(z, [["render", G], ["__scopeId", "data-v-
|
|
499
|
+
const ae = /* @__PURE__ */ L(z, [["render", G], ["__scopeId", "data-v-912aa0d6"]]);
|
|
515
500
|
export {
|
|
516
501
|
ae as default
|
|
517
502
|
};
|
|
@@ -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 <!-- 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
|
+
{"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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"}
|
|
@@ -158,6 +158,14 @@ declare const _default: import('vue').DefineComponent<{}, {}, {
|
|
|
158
158
|
temporalResolution: {
|
|
159
159
|
type: string;
|
|
160
160
|
};
|
|
161
|
+
geoDcatAp: {
|
|
162
|
+
type: string;
|
|
163
|
+
translate: string;
|
|
164
|
+
fields: string;
|
|
165
|
+
preTransform: (data: any) => {
|
|
166
|
+
label: any;
|
|
167
|
+
}[];
|
|
168
|
+
};
|
|
161
169
|
} & {
|
|
162
170
|
politicalGeocodingLevelURI: {
|
|
163
171
|
type: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mapGetters as V } from "vuex";
|
|
2
2
|
import k from "./DatasetDetailsProperty.vue.mjs";
|
|
3
3
|
import { dcatSchema as P, dcatDeSchema as F, dcatFields as E, dcatDeFields as I } from "./specification.mjs";
|
|
4
|
-
import { resolveComponent as p, openBlock as o, createElementBlock as
|
|
4
|
+
import { resolveComponent as p, openBlock as o, createElementBlock as D, createElementVNode as d, renderSlot as l, createVNode as T, createTextVNode as a, withDirectives as b, Fragment as A, renderList as C, createBlock as H, vShow as v, createCommentVNode as M } from "vue";
|
|
5
5
|
import "./DatasetDetailsProperties.vue2.mjs";
|
|
6
6
|
import N from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
7
7
|
const $ = {
|
|
@@ -64,7 +64,7 @@ const $ = {
|
|
|
64
64
|
};
|
|
65
65
|
function q(e, t, n, z, r, i) {
|
|
66
66
|
const w = p("dataset-details-feature-header"), _ = p("dataset-details-property"), x = p("pv-show-more");
|
|
67
|
-
return o(),
|
|
67
|
+
return o(), D("div", B, [
|
|
68
68
|
d("div", L, [
|
|
69
69
|
l(e.$slots, "property-header", {}, () => [
|
|
70
70
|
T(w, {
|
|
@@ -75,12 +75,12 @@ function q(e, t, n, z, r, i) {
|
|
|
75
75
|
}, null, 8, ["title", "arrowDown", "onClick"])
|
|
76
76
|
], !0),
|
|
77
77
|
t[3] || (t[3] = a()),
|
|
78
|
-
|
|
78
|
+
b(d("div", j, [
|
|
79
79
|
l(e.$slots, "property-table-before", {}, void 0, !0),
|
|
80
80
|
t[0] || (t[0] = a()),
|
|
81
81
|
l(e.$slots, "property-table", {}, () => [
|
|
82
82
|
d("table", G, [
|
|
83
|
-
(o(!0),
|
|
83
|
+
(o(!0), D(A, null, C(i.fieldsArray, (s, S) => {
|
|
84
84
|
var h, f, m, c, g, u, y;
|
|
85
85
|
return o(), H(_, {
|
|
86
86
|
name: s,
|
|
@@ -97,7 +97,7 @@ function q(e, t, n, z, r, i) {
|
|
|
97
97
|
], 512)
|
|
98
98
|
], !0),
|
|
99
99
|
t[1] || (t[1] = a()),
|
|
100
|
-
|
|
100
|
+
b(d("div", O, null, 512), [
|
|
101
101
|
[v, i.showMoreVisible && !r.expanded]
|
|
102
102
|
]),
|
|
103
103
|
t[2] || (t[2] = a()),
|
|
@@ -116,7 +116,7 @@ function q(e, t, n, z, r, i) {
|
|
|
116
116
|
}, null, 8, ["label", "upArrow", "action"])) : M("", !0)
|
|
117
117
|
]);
|
|
118
118
|
}
|
|
119
|
-
const X = /* @__PURE__ */ N($, [["render", q], ["__scopeId", "data-v-
|
|
119
|
+
const X = /* @__PURE__ */ N($, [["render", q], ["__scopeId", "data-v-2672ed97"]]);
|
|
120
120
|
export {
|
|
121
121
|
X as default
|
|
122
122
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetDetailsProperties.vue.mjs","sources":["../../../lib/datasetDetails/properties/DatasetDetailsProperties.vue"],"sourcesContent":["<template>\n <div class=\"mt-5 dsd-properties\">\n <div class=\"col-12 mb-2 p-0 dsd-properties-list\">\n <slot name=\"property-header\">\n <dataset-details-feature-header
|
|
1
|
+
{"version":3,"file":"DatasetDetailsProperties.vue.mjs","sources":["../../../lib/datasetDetails/properties/DatasetDetailsProperties.vue"],"sourcesContent":["<template>\n <div class=\"mt-5 dsd-properties\">\n <div class=\"col-12 mb-2 p-0 dsd-properties-list\">\n <slot name=\"property-header\">\n <dataset-details-feature-header :title=\"$t('message.datasetDetails.additionalInfo')\" :arrowDown=\"!infoVisible\"\n tag=\"additional-information-toggle\" :onClick=\"toggleInfo\" />\n </slot>\n <div class=\"position-relative dsd-item additional-information\" data-cy=\"additional-information\"\n v-show=\"infoVisible\">\n <slot name=\"property-table-before\"></slot>\n <slot name=\"property-table\">\n <table class=\"table table-borderless table-responsive\" ref=\"dsdProperties\" role=\"tablist\" id=\"myTab\">\n <dataset-details-property v-for='(name, index) in fieldsArray' :name=\"name\"\n :translate=\"fieldSchema[name]?.translate\" :type=\"fieldSchema[name]?.type\"\n :propertyFields=\"fieldSchema[name]?.fields\" :track=\"fieldSchema[name]?.track\"\n :itemstyles=\"fieldSchema[name]?.itemstyles\" :preTransform=\"fieldSchema[name]?.preTransform\"\n :transform=\"fieldSchema[name]?.transform\" :key=\"index\" />\n </table>\n </slot>\n <div class=\"additional-information-overlay\" ref=\"overlay\" v-show=\"showMoreVisible && !expanded\"></div>\n <slot name=\"property-table-after\"></slot>\n </div>\n </div>\n <pv-show-more v-if=\"showMoreVisible\"\n :label=\"expanded ? $t('message.metadata.showLess') : $t('message.metadata.showMore')\" :upArrow=\"expanded\"\n :action=\"toggleExpanded\" class=\"row text-primary\" />\n </div>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\nimport DatasetDetailsProperty from \"./DatasetDetailsProperty\";\nimport { dcatDeFields, dcatFields, dcatSchema, dcatDeSchema } from \"./specification.ts\";\n\nexport default {\n name: \"DatasetDetailsProperties\",\n components: {\n DatasetDetailsProperty\n },\n data() {\n return {\n infoVisible: true,\n initialHeight: 0,\n restrictedHeight: 100,\n expanded: false,\n };\n },\n computed: {\n ...mapGetters('datasetDetails', [\n 'getDatasetDescriptionHeight'\n ]),\n fieldSchema() {\n return Object.assign(dcatSchema(this.i18n.global.t), dcatDeSchema())\n },\n propertyFields() {\n let properties = this.$env.content?.datasetDetails?.properties;\n if (!properties || properties === \"\") {\n properties = dcatFields;\n if (this.$env.content.dataProviderInterface.specification === 'dcatapde') {\n properties += \",\" + dcatDeFields;\n }\n }\n return properties;\n },\n fieldsArray() {\n return this.propertyFields.split(',').map(item => item.trim());\n },\n showMoreVisible() {\n return this.initialHeight > this.restrictedHeight;\n }\n },\n methods: {\n toggleInfo() {\n this.infoVisible = !this.infoVisible;\n },\n toggleExpanded() {\n this.expanded = !this.expanded;\n this.adaptHeight();\n },\n adaptHeight() {\n this.$refs.dsdProperties.style['flex'] = this.expanded ? \"0 0 100%\" : `0 0 ${this.restrictedHeight}px`;\n this.$refs.dsdProperties.style['max-height'] = this.expanded ? \"100%\" : `${this.restrictedHeight}px`;\n // this.$refs.dsdProperties.style['overflow-y'] = this.expanded ? \"auto\": \"hidden\";\n }\n },\n mounted() {\n this.initialHeight = this.$refs.dsdProperties.clientHeight;\n this.$refs.overlay.style.bottom = (this.$refs.dsdProperties.offsetHeight - this.$refs.dsdProperties.clientHeight) + \"px\";\n if (this.getDatasetDescriptionHeight >= this.initialHeight) {\n this.restrictedHeight = this.getDatasetDescriptionHeight;\n this.toggleExpanded()\n } else if ((this.getDatasetDescriptionHeight >= this.restrictedHeight) && (this.getDatasetDescriptionHeight <= this.initialHeight)) {\n this.restrictedHeight = this.getDatasetDescriptionHeight\n }\n this.adaptHeight();\n }\n}\n</script>\n\n<style scoped lang=\"scss\">\n.arrow {\n cursor: pointer;\n}\n\n.additional-information-overlay {\n width: 100%;\n height: 100px;\n position: absolute;\n left: 0;\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0, white 100%);\n pointer-events: none;\n}\n\ntable {\n background: #F5F5F5;\n}\n</style>\n"],"names":["_sfc_main","DatasetDetailsProperty","mapGetters","dcatSchema","dcatDeSchema","properties","_b","_a","dcatFields","dcatDeFields","item","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_createElementVNode","_renderSlot","_ctx","_createVNode","_component_dataset_details_feature_header","$data","$options","_withDirectives","_hoisted_3","_hoisted_4","_Fragment","_renderList","name","index","_createBlock","_component_dataset_details_property","_c","_d","_e","_f","_g","_hoisted_5","_vShow","_component_pv_show_more"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import N from "./ValuesList.vue.mjs";
|
|
|
6
6
|
import { mapGetters as S } from "vuex";
|
|
7
7
|
import b from "../../filters/dateFilters.mjs";
|
|
8
8
|
import { truncate as j, getTranslationFor as V } from "../../utils/helpers.mjs";
|
|
9
|
-
import { resolveComponent as f, openBlock as
|
|
9
|
+
import { resolveComponent as f, openBlock as a, createElementBlock as i, createElementVNode as _, createVNode as y, withCtx as k, createTextVNode as o, toDisplayString as d, createCommentVNode as u, Fragment as T, renderList as v, createBlock as B } from "vue";
|
|
10
10
|
import "./DatasetDetailsProperty.vue2.mjs";
|
|
11
11
|
import E from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
12
12
|
const O = {
|
|
@@ -70,10 +70,10 @@ const O = {
|
|
|
70
70
|
});
|
|
71
71
|
break;
|
|
72
72
|
case "object":
|
|
73
|
-
e = this.prepareObject(
|
|
73
|
+
e = this.prepareObject(e);
|
|
74
74
|
break;
|
|
75
75
|
case "objects":
|
|
76
|
-
e =
|
|
76
|
+
e = e.map((t) => this.prepareObject(t));
|
|
77
77
|
break;
|
|
78
78
|
case "translation":
|
|
79
79
|
e = this.getTranslationFor(e, this.$route.query.locale, ["en"]);
|
|
@@ -109,15 +109,15 @@ const O = {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
}, P = { key: 0 }, A = { class: "w-25 text-break font-weight-bold" }, C = { key: 0 }, L = { key: 1 }, W = ["href"], I = { key: 2 }, U = { key: 0 }, q = { key: 2 }, G = { key: 3 }, z = { key: 4 };
|
|
112
|
-
function H(e, t, r, l, m,
|
|
112
|
+
function H(e, t, r, l, m, s) {
|
|
113
113
|
const D = f("tooltip"), F = f("app-link"), h = f("values-list");
|
|
114
|
-
return
|
|
114
|
+
return s.show ? (a(), i("tr", P, [
|
|
115
115
|
_("td", A, [
|
|
116
116
|
y(D, {
|
|
117
|
-
title:
|
|
117
|
+
title: s.labelDisplay[0]
|
|
118
118
|
}, {
|
|
119
119
|
default: k(() => [
|
|
120
|
-
o(d(
|
|
120
|
+
o(d(s.labelDisplay[1]), 1)
|
|
121
121
|
]),
|
|
122
122
|
_: 1
|
|
123
123
|
}, 8, ["title"])
|
|
@@ -125,51 +125,51 @@ function H(e, t, r, l, m, a) {
|
|
|
125
125
|
t[2] || (t[2] = o()),
|
|
126
126
|
["string", "date", "number", "first:number", "translation"].includes(
|
|
127
127
|
r.type
|
|
128
|
-
) ? (
|
|
128
|
+
) ? (a(), i("td", C, d(s.value), 1)) : u("", !0),
|
|
129
129
|
t[3] || (t[3] = o()),
|
|
130
|
-
r.type === "uri" ? (
|
|
131
|
-
_("a", { href:
|
|
130
|
+
r.type === "uri" ? (a(), i("td", L, [
|
|
131
|
+
_("a", { href: s.value }, d(s.value), 9, W)
|
|
132
132
|
])) : u("", !0),
|
|
133
133
|
t[4] || (t[4] = o()),
|
|
134
|
-
r.type === "links" ? (
|
|
135
|
-
(
|
|
136
|
-
r.name === "identifiers" ? (
|
|
134
|
+
r.type === "links" ? (a(), i("td", I, [
|
|
135
|
+
(a(!0), i(T, null, v(s.value, (n, p) => (a(), i("div", { key: p }, [
|
|
136
|
+
r.name === "identifiers" ? (a(), i("div", U, d(n.label), 1)) : u("", !0),
|
|
137
137
|
t[0] || (t[0] = o()),
|
|
138
|
-
!
|
|
138
|
+
!s.isNil(n) && n.link && r.name !== "languages" && r.name != "identifiers" ? (a(), B(F, {
|
|
139
139
|
key: 1,
|
|
140
140
|
to: n.link
|
|
141
141
|
}, {
|
|
142
142
|
default: k(() => [
|
|
143
|
-
o(d(
|
|
143
|
+
o(d(s.truncate(n.label, 75)), 1)
|
|
144
144
|
]),
|
|
145
145
|
_: 2
|
|
146
146
|
}, 1032, ["to"])) : u("", !0),
|
|
147
147
|
t[1] || (t[1] = o()),
|
|
148
|
-
!
|
|
148
|
+
!s.isNil(n) && !n.link || r.name === "languages" && r.name != "identifiers" ? (a(), i("div", q, d(s.truncate(n.label, 75)), 1)) : u("", !0)
|
|
149
149
|
]))), 128))
|
|
150
150
|
])) : u("", !0),
|
|
151
151
|
t[5] || (t[5] = o()),
|
|
152
|
-
r.type === "object" ? (
|
|
152
|
+
r.type === "object" ? (a(), i("td", G, [
|
|
153
153
|
y(h, {
|
|
154
|
-
values:
|
|
155
|
-
interpretTranslateKey:
|
|
154
|
+
values: s.value,
|
|
155
|
+
interpretTranslateKey: s.interpretTranslateKey,
|
|
156
156
|
itemstyles: r.itemstyles
|
|
157
157
|
}, null, 8, ["values", "interpretTranslateKey", "itemstyles"])
|
|
158
158
|
])) : u("", !0),
|
|
159
159
|
t[6] || (t[6] = o()),
|
|
160
|
-
r.type === "objects" ? (
|
|
161
|
-
(
|
|
160
|
+
r.type === "objects" ? (a(), i("td", z, [
|
|
161
|
+
(a(!0), i(T, null, v(s.value, (n, p) => (a(), i("div", { key: p }, [
|
|
162
162
|
y(h, {
|
|
163
163
|
values: n,
|
|
164
|
-
interpretTranslateKey:
|
|
164
|
+
interpretTranslateKey: s.interpretTranslateKey,
|
|
165
165
|
itemstyles: r.itemstyles
|
|
166
166
|
}, null, 8, ["values", "interpretTranslateKey", "itemstyles"])
|
|
167
167
|
]))), 128))
|
|
168
168
|
])) : u("", !0)
|
|
169
169
|
])) : u("", !0);
|
|
170
170
|
}
|
|
171
|
-
const
|
|
171
|
+
const st = /* @__PURE__ */ E(O, [["render", H], ["__scopeId", "data-v-8e02a846"]]);
|
|
172
172
|
export {
|
|
173
|
-
|
|
173
|
+
st as default
|
|
174
174
|
};
|
|
175
175
|
//# sourceMappingURL=DatasetDetailsProperty.vue.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetDetailsProperty.vue.mjs","sources":["../../../lib/datasetDetails/properties/DatasetDetailsProperty.vue"],"sourcesContent":["<template>\n <tr v-if=\"show\">\n <td class=\"w-25 text-break font-weight-bold\">\n <tooltip :title=\"labelDisplay[0]\">\n {{ labelDisplay[1] }}\n </tooltip>\n </td>\n <td\n v-if=\"\n ['string', 'date', 'number', 'first:number', 'translation'].includes(\n type\n )\n \"\n >\n {{ value }}\n </td>\n <td v-if=\"type === 'uri'\">\n <a :href=\"value\">{{ value }}</a>\n </td>\n <td v-if=\"type === 'links'\">\n <div v-for=\"(v, i) of value\" :key=\"i\">\n <div v-if=\"name === 'identifiers'\">{{ v.label }}</div>\n <app-link\n v-if=\"!isNil(v) && v.link && name !== 'languages' && name != 'identifiers'\"\n :to=\"v.link\"\n >{{ truncate(v.label, 75) }}</app-link\n >\n <div v-if=\"(!isNil(v) && !v.link) || name === 'languages' && name != 'identifiers'\">\n {{ truncate(v.label, 75) }}\n </div>\n </div>\n </td>\n <td v-if=\"type === 'object'\">\n <values-list\n :values=\"value\"\n :interpretTranslateKey=\"interpretTranslateKey\"\n :itemstyles=\"itemstyles\"\n />\n </td>\n <td v-if=\"type === 'objects'\">\n <div v-for=\"(item, i) of value\" :key=\"i\">\n <values-list\n :values=\"item\"\n :interpretTranslateKey=\"interpretTranslateKey\"\n :itemstyles=\"itemstyles\"\n />\n </div>\n </td>\n </tr>\n</template>\n\n<script>\nimport AppLink from \"../../widgets/AppLink\";\nimport Tooltip from \"../../widgets/Tooltip\";\nimport { isNil, isArray } from \"lodash\";\nimport { showByType } from \"./typeCheckers.ts\";\nimport ValuesList from \"./ValuesList\";\nimport { mapGetters } from \"vuex\";\nimport dateFilters from \"../../filters/dateFilters.ts\";\nimport { truncate, getTranslationFor } from \"../../utils/helpers\";\n\nexport default {\n name: \"DatasetDetailsProperty\",\n props: {\n type: String, // Can be any of the types recognized in typeCheckers.ts\n translate: String | Array, // i18n key for the tooltip and label string values (if not given, name is used!)\n name: String, // Key to extract the value from the Datasets store\n propertyFields: String, // Comma-separated keys for extracting data from an object\n itemstyles: String, // Styles to apply to an object key-value block\n track: String, // Comma-separated keys for tracking\n preTransform: Function, // Transform raw data from dataset service\n transform: Function, // Transform data after preparing by this.value\n },\n components: {\n Tooltip,\n AppLink,\n ValuesList,\n },\n computed: {\n ...mapGetters(\"datasetDetails\", [\"getProperty\"]),\n labelDisplay() {\n const prefix = [\"message.tooltip.datasetDetails\", \"message.metadata\"];\n let translateItems;\n if (this.translate) {\n translateItems = this.translate.split(\",\");\n if (translateItems.length === 1) {\n translateItems.push(translateItems[0]);\n }\n } else {\n translateItems = [this.name, this.name];\n }\n return translateItems.map((item, i) =>\n this.interpretTranslateKey(item, prefix[i])\n );\n },\n data() {\n let d = this.getProperty(this.name);\n if (this.name === \"languages\") {\n d.sort((a, b) => {\n if (a.id < b.id) return -1;\n if (a.id > b.id) return 1;\n return 0;\n });\n }\n return d;\n },\n preparedFields() {\n return this.propertyFields?.split(\",\").map((field) => field.split(\":\"));\n },\n preparedTrack() {\n return this.track?.split(\",\");\n },\n value() {\n let v = this.data;\n if (this.preTransform) v = this.preTransform(v);\n switch (this.type) {\n case \"date\":\n v = dateFilters.formatEU(v);\n break;\n case \"links\":\n v = this.data.map((item) => {\n if (item) {\n const link = typeof item === \"string\" ? item : item.resource;\n const label =\n typeof item === \"string\"\n ? item\n : item.label || item.id || item.resource;\n return { link, label };\n }\n });\n break;\n case \"object\":\n v = this.prepareObject(this.data);\n break;\n case \"objects\":\n v = this.data.map((item) => {\n return this.prepareObject(item);\n });\n break;\n case \"translation\":\n v = this.getTranslationFor(v, this.$route.query.locale, [\"en\"]);\n break;\n default:\n if (this.type.startsWith(\"first\")) {\n v = this.data[0];\n }\n }\n if (this.transform) v = this.transform(v);\n return v;\n },\n show() {\n return showByType(this.type, this.data);\n },\n },\n methods: {\n isNil,\n isArray,\n truncate,\n getTranslationFor,\n dateValue() {\n return dateFilters.formatEU(this.value);\n },\n prepareObject(object) {\n // Because this.fields can contain \":\" signs that split a key into an array,\n // we also transform the keys in the case this.fields is undefined into arrays:\n let keys = this.preparedFields ?? Object.keys(object).map((key) => [key]);\n\n // Now key[0] holds the actual key in all cases. Check if the value given\n // For a key is undefined and filter them out:\n keys = keys.filter((key) => !isNil(object[key[0]]));\n\n return keys.map((key) => {\n let value = object[key[0]];\n\n // Values can be arrays for displaying several values. For uniform treatment,\n // transform single values into arrays of length 1:\n if (!isArray(value)) value = [value];\n\n // First step: an object holding key and value:\n const result = { key: key[0], value };\n\n // Enrich the object when appropriate:\n if (key[1] !== undefined) result.type = key[1];\n if (key[2] !== undefined) result.translation = key[2];\n\n return result;\n });\n },\n interpretTranslateKey(key, prefix) {\n // console.log(key);\n\n if (key === \"\") return \"\";\n if (key.startsWith(\"/\"))\n return `${this.i18n.global.t(key.substring(1))}:`;\n if (key.startsWith(\"'\")) return key.substring(1, key.length - 1);\n return `${this.i18n.global.t(`${prefix}.${key}`)}:`;\n },\n },\n};\n</script>\n\n<style scoped>\ntr {\n width: 100%;\n}\n.w-25 {\n min-width: 160px;\n}\n</style>\n"],"names":["_sfc_main","Tooltip","AppLink","ValuesList","mapGetters","prefix","translateItems","item","i","d","a","b","_a","field","v","dateFilters","link","label","showByType","isNil","isArray","truncate","getTranslationFor","object","keys","key","value","result","_hoisted_2","$options","_createElementBlock","_hoisted_1","_createElementVNode","_createVNode","_component_tooltip","$props","_openBlock","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","_hoisted_7","_toDisplayString","_createBlock","_component_app_link","_hoisted_8","_hoisted_9","_component_values_list","_hoisted_10"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatasetDetailsProperty.vue.mjs","sources":["../../../lib/datasetDetails/properties/DatasetDetailsProperty.vue"],"sourcesContent":["<template>\n <tr v-if=\"show\">\n <td class=\"w-25 text-break font-weight-bold\">\n <tooltip :title=\"labelDisplay[0]\">\n {{ labelDisplay[1] }}\n </tooltip>\n </td>\n <td\n v-if=\"\n ['string', 'date', 'number', 'first:number', 'translation'].includes(\n type\n )\n \"\n >\n {{ value }}\n </td>\n <td v-if=\"type === 'uri'\">\n <a :href=\"value\">{{ value }}</a>\n </td>\n <td v-if=\"type === 'links'\">\n <div v-for=\"(v, i) of value\" :key=\"i\">\n <div v-if=\"name === 'identifiers'\">{{ v.label }}</div>\n <app-link\n v-if=\"!isNil(v) && v.link && name !== 'languages' && name != 'identifiers'\"\n :to=\"v.link\"\n >{{ truncate(v.label, 75) }}</app-link\n >\n <div v-if=\"(!isNil(v) && !v.link) || name === 'languages' && name != 'identifiers'\">\n {{ truncate(v.label, 75) }}\n </div>\n </div>\n </td>\n <td v-if=\"type === 'object'\">\n <values-list\n :values=\"value\"\n :interpretTranslateKey=\"interpretTranslateKey\"\n :itemstyles=\"itemstyles\"\n />\n </td>\n <td v-if=\"type === 'objects'\">\n <div v-for=\"(item, i) of value\" :key=\"i\">\n <values-list\n :values=\"item\"\n :interpretTranslateKey=\"interpretTranslateKey\"\n :itemstyles=\"itemstyles\"\n />\n </div>\n </td>\n </tr>\n</template>\n\n<script>\nimport AppLink from \"../../widgets/AppLink\";\nimport Tooltip from \"../../widgets/Tooltip\";\nimport { isNil, isArray } from \"lodash\";\nimport { showByType } from \"./typeCheckers.ts\";\nimport ValuesList from \"./ValuesList\";\nimport { mapGetters } from \"vuex\";\nimport dateFilters from \"../../filters/dateFilters.ts\";\nimport { truncate, getTranslationFor } from \"../../utils/helpers\";\n\nexport default {\n name: \"DatasetDetailsProperty\",\n props: {\n type: String, // Can be any of the types recognized in typeCheckers.ts\n translate: String | Array, // i18n key for the tooltip and label string values (if not given, name is used!)\n name: String, // Key to extract the value from the Datasets store\n propertyFields: String, // Comma-separated keys for extracting data from an object\n itemstyles: String, // Styles to apply to an object key-value block\n track: String, // Comma-separated keys for tracking\n preTransform: Function, // Transform raw data from dataset service\n transform: Function, // Transform data after preparing by this.value\n },\n components: {\n Tooltip,\n AppLink,\n ValuesList,\n },\n computed: {\n ...mapGetters(\"datasetDetails\", [\"getProperty\"]),\n labelDisplay() {\n const prefix = [\"message.tooltip.datasetDetails\", \"message.metadata\"];\n let translateItems;\n if (this.translate) {\n translateItems = this.translate.split(\",\");\n if (translateItems.length === 1) {\n translateItems.push(translateItems[0]);\n }\n } else {\n translateItems = [this.name, this.name];\n }\n return translateItems.map((item, i) =>\n this.interpretTranslateKey(item, prefix[i])\n );\n },\n data() {\n let d = this.getProperty(this.name);\n if (this.name === \"languages\") {\n d.sort((a, b) => {\n if (a.id < b.id) return -1;\n if (a.id > b.id) return 1;\n return 0;\n });\n }\n return d;\n },\n preparedFields() {\n return this.propertyFields?.split(\",\").map((field) => field.split(\":\"));\n },\n preparedTrack() {\n return this.track?.split(\",\");\n },\n value() {\n let v = this.data;\n if (this.preTransform) v = this.preTransform(v);\n switch (this.type) {\n case \"date\":\n v = dateFilters.formatEU(v);\n break;\n case \"links\":\n v = this.data.map((item) => {\n if (item) {\n const link = typeof item === \"string\" ? item : item.resource;\n const label =\n typeof item === \"string\"\n ? item\n : item.label || item.id || item.resource;\n return { link, label };\n }\n });\n break;\n case \"object\":\n v = this.prepareObject(v);\n break;\n case \"objects\":\n v = v.map((item) => {\n return this.prepareObject(item);\n });\n break;\n case \"translation\":\n v = this.getTranslationFor(v, this.$route.query.locale, [\"en\"]);\n break;\n default:\n if (this.type.startsWith(\"first\")) {\n v = this.data[0];\n }\n }\n if (this.transform) v = this.transform(v);\n return v;\n },\n show() {\n return showByType(this.type, this.data);\n },\n },\n methods: {\n isNil,\n isArray,\n truncate,\n getTranslationFor,\n dateValue() {\n return dateFilters.formatEU(this.value);\n },\n prepareObject(object) {\n // Because this.fields can contain \":\" signs that split a key into an array,\n // we also transform the keys in the case this.fields is undefined into arrays:\n let keys = this.preparedFields ?? Object.keys(object).map((key) => [key]);\n\n // Now key[0] holds the actual key in all cases. Check if the value given\n // For a key is undefined and filter them out:\n keys = keys.filter((key) => !isNil(object[key[0]]));\n\n return keys.map((key) => {\n let value = object[key[0]];\n\n // Values can be arrays for displaying several values. For uniform treatment,\n // transform single values into arrays of length 1:\n if (!isArray(value)) value = [value];\n\n // First step: an object holding key and value:\n const result = { key: key[0], value };\n\n // Enrich the object when appropriate:\n if (key[1] !== undefined) result.type = key[1];\n if (key[2] !== undefined) result.translation = key[2];\n\n return result;\n });\n },\n interpretTranslateKey(key, prefix) {\n // console.log(key);\n\n if (key === \"\") return \"\";\n if (key.startsWith(\"/\"))\n return `${this.i18n.global.t(key.substring(1))}:`;\n if (key.startsWith(\"'\")) return key.substring(1, key.length - 1);\n return `${this.i18n.global.t(`${prefix}.${key}`)}:`;\n },\n },\n};\n</script>\n\n<style scoped>\ntr {\n width: 100%;\n}\n.w-25 {\n min-width: 160px;\n}\n</style>\n"],"names":["_sfc_main","Tooltip","AppLink","ValuesList","mapGetters","prefix","translateItems","item","i","d","a","b","_a","field","v","dateFilters","link","label","showByType","isNil","isArray","truncate","getTranslationFor","object","keys","key","value","result","_hoisted_2","$options","_createElementBlock","_hoisted_1","_createElementVNode","_createVNode","_component_tooltip","$props","_openBlock","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","_hoisted_7","_toDisplayString","_createBlock","_component_app_link","_hoisted_8","_hoisted_9","_component_values_list","_hoisted_10"],"mappings":"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"}
|