@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.
@@ -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 c from "jquery";
2
+ import m from "jquery";
3
3
  import "lodash-es";
4
4
  import { mapGetters as k, mapActions as y } from "vuex";
5
- import T from "./components/Dropup.vue.mjs";
6
- import { useWindowScroll as _ } from "../external/@vueuse/core/index";
7
- import { resolveComponent as p, openBlock as u, createElementBlock as h, createElementVNode as l, toDisplayString as m, createCommentVNode as D, createTextVNode as d, Fragment as b, renderList as v, createBlock as C, resolveDynamicComponent as O, normalizeClass as U, withCtx as $, renderSlot as q, createVNode as P } from "vue";
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 S from "../_virtual/_plugin-vue_export-helper.mjs";
9
+ import L from "../_virtual/_plugin-vue_export-helper.mjs";
10
10
  const z = {
11
11
  name: "DPI-menu",
12
12
  components: {
13
- Dropup: T
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 } = _({ behavior: "smooth" });
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
- }, c("#modal").modal({ show: !0 });
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
- }, c("#modal").modal({ show: !0 });
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
- }, c("#modal").modal({ show: !0 });
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
- }, c("#modal").modal({ show: !0 });
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
- name: this.$t("message.dataupload.menu.draftDatasets"),
209
- to: {
210
- name: "DataProviderInterface-Draft",
211
- query: { locale: this.$route.query.locale }
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: () => c("#modal").modal("hide")
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 g = i || o || a.message || "An error occurred";
317
+ const f = i || o || a.message || "An error occurred";
314
318
  this.showSnackbar({
315
- message: g,
319
+ message: f,
316
320
  variant: "error"
317
321
  });
318
322
  } finally {
319
- this.modal.loading = !1, c("#modal").modal("hide");
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, c("#modal").modal("hide");
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
- }, L = {
394
+ }, S = {
391
395
  id: "wrapper",
392
396
  "data-cy": "dpi-menu"
393
- }, R = {
397
+ }, M = {
394
398
  key: 0,
395
399
  class: "warning-banner"
396
- }, M = { class: "warning-content" }, N = { key: 1 }, B = { class: "text-white" }, E = { style: { "margin-top": "1%" } }, H = { class: "btn-group dropup" }, W = {
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
- }, x = { class: "text-white" }, F = {
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 = p("dropup"), g = p("router-link"), w = p("app-confirmation-dialog");
405
- return u(), h("div", L, [
406
- a.visible && o.showWarningBanner ? (u(), h("div", R, [
407
- l("div", M, m(e.$t("message.dataupload.menu.warningbanner")), 1)
408
- ])) : D("", !0),
409
- t[7] || (t[7] = d()),
410
- a.visible ? (u(), h("nav", N, [
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", B, m(e.$t("message.dataupload.menu.dpi")), 1)
416
+ l("h4", N, c(e.$t("message.dataupload.menu.dpi")), 1)
413
417
  ]),
414
- t[5] || (t[5] = d()),
415
- l("div", E, [
416
- (u(!0), h(b, null, v(o.menuGroups, (n, f) => (u(), C(i, {
417
- key: `Group${f}`,
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[1] || (t[1] = d()),
428
+ t[2] || (t[2] = d()),
425
429
  l("ul", null, [
426
- l("div", H, [
427
- (u(!0), h(b, null, v(o.menuItems, (n, f) => (u(), h("li", {
428
- key: `Menu${f}`
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(), C(O(n.handler ? "button" : "router-link"), {
436
- class: U({ disabled: n.disabled }),
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(m(n.handler) + " " + m(n.name), 1)
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[6] || (t[6] = d()),
451
- e.getUserData.userName ? (u(), h("div", W, [
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", x, m(e.$t("message.dataupload.menu.loggedInAs")) + " " + m(e.getUserData.userName), 1),
454
- t[2] || (t[2] = d()),
455
- t[3] || (t[3] = l("br", null, null, -1)),
456
- t[4] || (t[4] = d()),
457
- l("button", F, [
458
- P(g, { to: { name: "Logout" } }, {
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(m(e.$t("message.dataupload.menu.logout")), 1)
492
+ d(c(e.$t("message.dataupload.menu.logout")), 1)
461
493
  ]),
462
494
  _: 1
463
495
  })
464
496
  ])
465
497
  ], !0)
466
- ])) : D("", !0)
467
- ])) : D("", !0),
468
- t[8] || (t[8] = d()),
469
- P(w, {
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(m(a.modal.message), 1)
508
+ d(c(a.modal.message), 1)
477
509
  ]),
478
510
  _: 1
479
511
  }, 8, ["loading", "confirm", "onConfirm"])
480
512
  ]);
481
513
  }
482
- const te = /* @__PURE__ */ S(z, [["render", G], ["__scopeId", "data-v-6e4c60ea"]]);
514
+ const ae = /* @__PURE__ */ L(z, [["render", G], ["__scopeId", "data-v-75f87789"]]);
483
515
  export {
484
- te as default
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 n, createElementVNode as r, createTextVNode as s, toDisplayString as d, Fragment as p, renderList as u, createBlock as c, resolveDynamicComponent as i, normalizeClass as m, withCtx as g, createCommentVNode as y } from "vue";
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 _ from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const f = {
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
- }, h = {
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
- }, C = { class: "dropdown-menu" }, b = ["data-cy"];
33
- function w(l, o, t, B, D, N) {
34
- return t.show && !t.isCatalog || t.show && t.isCatalog && t.isOperator ? (a(), n("div", h, [
35
- r("button", k, [
36
- s(d(l.$t("message.dataupload.menu." + t.groupName)), 1),
37
- o[0] || (o[0] = r("span", { class: "caret" }, null, -1))
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
- o[1] || (o[1] = s()),
40
- r("ul", C, [
41
- (a(!0), n(p, null, u(t.groupItems, (e) => (a(), n("li", {
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(i(e.handler ? "a" : "router-link"), {
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
- s(d(l.$t("message.dataupload.menu." + e.name)), 1)
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, b))), 128))
56
+ ], 8, C))), 128))
57
57
  ])
58
58
  ])) : y("", !0);
59
59
  }
60
- const E = /* @__PURE__ */ _(f, [["render", w], ["__scopeId", "data-v-a905c157"]]);
60
+ const V = /* @__PURE__ */ f(h, [["render", b], ["__scopeId", "data-v-816f234d"]]);
61
61
  export {
62
- E as default
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","_ctx","_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;;AALU,SAAAC,EAAA,SAASA,EAAS,aAAMA,UAAQA,EAAA,aAAaA,EAAU,cAA5FC,KAAAC,EAgBM,OAhBNC,GAgBM;AAAA,IAfJC,EAGS,UAHTC,GAGS;AAAA,MADJC,EAAAC,EAAAC,EAAA,gCAA+BR,EAAS,UAAA,GAAA,CAAA;AAAA,sBAAKI,EAA2B,QAAA,EAArB,OAAM,QAAO,GAAA,MAAA,EAAA;AAAA;;IAErEA,EAUK,MAVLL,GAUK;AAAA,cATHG,EAQKO,GAAA,MAAAC,EARcV,EAAU,YAAA,CAAlBW,YAAXT,EAQK,MAAA;AAAA,QAR2B,KAAKS,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,gBAA9CH,EAAE,GAAA,6BAA6BG,EAAK,KAAI,GAAA,CAAA;AAAA;;;;;;;;"}
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;;;;;;;;"}