@piveau/piveau-hub-ui-modules 4.3.4 → 4.3.6

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.
@@ -7,7 +7,7 @@ import { isNil as u, has as q, isArray as w, isObject as z, isString as L } from
7
7
  import { truncate as U, getTranslationFor as E } from "../utils/helpers.mjs";
8
8
  import M from "../services/datasetService.mjs";
9
9
  import V from "axios";
10
- import { resolveComponent as b, openBlock as l, createElementBlock as i, createElementVNode as t, createTextVNode as r, renderSlot as D, createCommentVNode as g, toDisplayString as c, createVNode as p, withCtx as v, Fragment as N, renderList as S, withModifiers as T, normalizeClass as K, withDirectives as f, createBlock as C, vShow as y, pushScopeId as G, popScopeId as H } from "vue";
10
+ import { resolveComponent as b, openBlock as l, createElementBlock as i, createElementVNode as t, createTextVNode as r, renderSlot as D, createCommentVNode as c, toDisplayString as g, createVNode as p, withCtx as v, Fragment as N, renderList as S, withModifiers as T, normalizeClass as K, withDirectives as f, createBlock as C, vShow as y, pushScopeId as G, popScopeId as H } from "vue";
11
11
  import "./CatalogPage.vue2.mjs";
12
12
  import J from "../_virtual/_plugin-vue_export-helper.mjs";
13
13
  const W = {
@@ -119,6 +119,7 @@ const W = {
119
119
  this.$env.api.hubUrl,
120
120
  this.$env.api.qualityBaseUrl,
121
121
  this.$env.api.similarityBaseUrl,
122
+ this.$env.api.similarityServiceName,
122
123
  this.$env.content.datasets.facets.scoringFacets.defaultScoringFacets
123
124
  );
124
125
  let e = this.$route.params.ctlg_id;
@@ -136,7 +137,7 @@ const W = {
136
137
  // We should refactor this code to use the store instead of making
137
138
  // a dedicated HTTP request for dataset search.
138
139
  // This will ensure that the most relevant datasets for the catalog are always displayed,
139
- // even if the search page has filtered datasets.
140
+ // even if the search page has filtered datasets.
140
141
  V.get(`${this.$env.api.baseUrl}search`, {
141
142
  params: {
142
143
  q: "",
@@ -171,7 +172,7 @@ const W = {
171
172
  console.error(s), this.$Progress.fail();
172
173
  });
173
174
  }
174
- }, Q = (e) => (G("data-v-8471e7dd"), e = e(), H(), e), R = { class: "catalog-page-container" }, X = {
175
+ }, Q = (e) => (G("data-v-c6a4c80f"), e = e(), H(), e), R = { class: "catalog-page-container" }, X = {
175
176
  key: 0,
176
177
  class: "catalog-page-background",
177
178
  ref: "catBackground"
@@ -194,7 +195,7 @@ const W = {
194
195
  class: "nav nav-tabs card-header-tabs",
195
196
  role: "tablist",
196
197
  "aria-label": "Navigationsleiste"
197
- }, de = ["aria-controls", "aria-selected", "aria-label"], ge = ["onClick", "href"], ce = { class: "card-body my-5" }, he = {
198
+ }, de = ["aria-controls", "aria-selected", "aria-label"], ce = ["onClick", "href"], ge = { class: "card-body my-5" }, he = {
198
199
  key: 0,
199
200
  class: "tab-pane active catalog-about-tab d-flex align-items-start justify-content-between",
200
201
  id: "about",
@@ -238,17 +239,17 @@ function Ie(e, s, n, h, d, a) {
238
239
  class: "catalog-header-title-icon",
239
240
  src: e.getCatalog.catalogueFavIcon,
240
241
  alt: ""
241
- }, null, 8, ae)) : g("", !0),
242
+ }, null, 8, ae)) : c("", !0),
242
243
  r(),
243
244
  t("div", te, [
244
- t("h1", se, c(a.getTranslationFor(e.getCatalog.title, e.$route.query.locale, e.getCatalog.languages)), 1),
245
+ t("h1", se, g(a.getTranslationFor(e.getCatalog.title, e.$route.query.locale, e.getCatalog.languages)), 1),
245
246
  r(),
246
247
  t("h5", le, [
247
248
  p(m, {
248
249
  to: e.getCatalog.homepage
249
250
  }, {
250
251
  default: v(() => [
251
- r(c(e.getCatalog.homepage), 1)
252
+ r(g(e.getCatalog.homepage), 1)
252
253
  ]),
253
254
  _: 1
254
255
  }, 8, ["to"])
@@ -262,7 +263,7 @@ function Ie(e, s, n, h, d, a) {
262
263
  src: e.getCatalog.catalogueLogo,
263
264
  alt: "",
264
265
  "aria-label": "logo"
265
- }, null, 8, oe)) : g("", !0)
266
+ }, null, 8, oe)) : c("", !0)
266
267
  ], 512)
267
268
  ], !0),
268
269
  r(),
@@ -281,12 +282,12 @@ function Ie(e, s, n, h, d, a) {
281
282
  class: K(["catalog-nav-link nav-link", { active: o.id === d.activeTabName }]),
282
283
  href: `#${o.id}`,
283
284
  role: "tab"
284
- }, c(o.displayName), 11, ge)
285
+ }, g(o.displayName), 11, ce)
285
286
  ], 8, de))), 128))
286
287
  ])
287
288
  ]),
288
289
  r(),
289
- t("div", ce, [
290
+ t("div", ge, [
290
291
  d.activeTabName === "about" ? (l(), i("div", he, [
291
292
  t("div", null, [
292
293
  t("div", ue, [
@@ -303,8 +304,8 @@ function Ie(e, s, n, h, d, a) {
303
304
  class: "catalog-hero-pic img-fluid",
304
305
  src: e.getCatalog.catalogueProfile,
305
306
  alt: ""
306
- }, null, 8, be)) : g("", !0)
307
- ])) : g("", !0),
307
+ }, null, 8, be)) : c("", !0)
308
+ ])) : c("", !0),
308
309
  r(),
309
310
  f(t("div", me, [
310
311
  a.showArray(e.getDatasets) ? (l(), i("div", pe, [
@@ -350,15 +351,15 @@ function Ie(e, s, n, h, d, a) {
350
351
  a.has(e.getCatalog, "publisher") && a.showObject(e.getCatalog.publisher) && (a.showString(e.getCatalog.publisher.email) || a.showString(e.getCatalog.publisher.homepage) || a.showObject(e.getCatalog.publisher.address)) ? (l(), i("dl", we, [
351
352
  De,
352
353
  r(),
353
- a.has(e.getCatalog, "publisher.name") && a.showString(e.getCatalog.publisher.name) ? (l(), i("dt", Ne, c(e.getCatalog.publisher.name), 1)) : g("", !0),
354
+ a.has(e.getCatalog, "publisher.name") && a.showString(e.getCatalog.publisher.name) ? (l(), i("dt", Ne, g(e.getCatalog.publisher.name), 1)) : c("", !0),
354
355
  r(),
355
356
  a.has(e.getCatalog, "publisher.address") && a.showObject(e.getCatalog.publisher.address) ? (l(), i("dd", Se, [
356
- a.has(e.getCatalog, "publisher.address.street") && a.showString(e.getCatalog.publisher.address.street) ? (l(), i("span", Te, c(e.getCatalog.publisher.address.street), 1)) : g("", !0)
357
- ])) : g("", !0),
357
+ a.has(e.getCatalog, "publisher.address.street") && a.showString(e.getCatalog.publisher.address.street) ? (l(), i("span", Te, g(e.getCatalog.publisher.address.street), 1)) : c("", !0)
358
+ ])) : c("", !0),
358
359
  r(),
359
360
  a.has(e.getCatalog, "publisher.address") && a.showObject(e.getCatalog.publisher.address) ? (l(), i("dd", Ae, [
360
- a.has(e.getCatalog, "publisher.address.postalCode") && a.showString(e.getCatalog.publisher.address.locality) && a.has(e.getCatalog, "publisher.address.locality") && a.showString(e.getCatalog.publisher.address.postalCode) ? (l(), i("span", Fe, c(e.getCatalog.publisher.address.postalCode) + " " + c(e.getCatalog.publisher.address.locality), 1)) : g("", !0)
361
- ])) : g("", !0),
361
+ a.has(e.getCatalog, "publisher.address.postalCode") && a.showString(e.getCatalog.publisher.address.locality) && a.has(e.getCatalog, "publisher.address.locality") && a.showString(e.getCatalog.publisher.address.postalCode) ? (l(), i("span", Fe, g(e.getCatalog.publisher.address.postalCode) + " " + g(e.getCatalog.publisher.address.locality), 1)) : c("", !0)
362
+ ])) : c("", !0),
362
363
  r(),
363
364
  t("dd", null, [
364
365
  a.has(e.getCatalog, "publisher.email") && a.showString(e.getCatalog.publisher.email) ? (l(), C(m, {
@@ -366,10 +367,10 @@ function Ie(e, s, n, h, d, a) {
366
367
  to: e.getCatalog.publisher.email
367
368
  }, {
368
369
  default: v(() => [
369
- r(c(e.getCatalog.publisher.email.startsWith("mailto:") ? e.getCatalog.publisher.email.slice(7) : e.getCatalog.publisher.email), 1)
370
+ r(g(e.getCatalog.publisher.email.startsWith("mailto:") ? e.getCatalog.publisher.email.slice(7) : e.getCatalog.publisher.email), 1)
370
371
  ]),
371
372
  _: 1
372
- }, 8, ["to"])) : g("", !0)
373
+ }, 8, ["to"])) : c("", !0)
373
374
  ]),
374
375
  r(),
375
376
  t("dd", null, [
@@ -378,10 +379,10 @@ function Ie(e, s, n, h, d, a) {
378
379
  to: e.getCatalog.publisher.homepage
379
380
  }, {
380
381
  default: v(() => [
381
- r(c(e.getCatalog.publisher.homepage), 1)
382
+ r(g(e.getCatalog.publisher.homepage), 1)
382
383
  ]),
383
384
  _: 1
384
- }, 8, ["to"])) : g("", !0)
385
+ }, 8, ["to"])) : c("", !0)
385
386
  ])
386
387
  ])) : (l(), i("span", Oe, `
387
388
  Es sind keine Kontaktinformationen verfügbar.
@@ -395,7 +396,7 @@ function Ie(e, s, n, h, d, a) {
395
396
  ])
396
397
  ]);
397
398
  }
398
- const Je = /* @__PURE__ */ J(W, [["render", Ie], ["__scopeId", "data-v-8471e7dd"]]);
399
+ const Je = /* @__PURE__ */ J(W, [["render", Ie], ["__scopeId", "data-v-c6a4c80f"]]);
399
400
  export {
400
401
  Je as default
401
402
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogPage.vue.mjs","sources":["../../lib/catalogues/CatalogPage.vue"],"sourcesContent":["<template>\n <div class=\"catalog-page-container\">\n <div v-if=\"showArray(getCatalog.catalogueBackground)\" class=\"catalog-page-background\" ref=\"catBackground\">\n <img class=\"catalog-page-background-image\" :src=\"getCatalog.catalogueBackground\" alt=\"\">\n </div>\n <div v-else class=\"catalog-page-background-default\"></div>\n <div class=\"catalog-box\">\n\n <slot name=\"header\">\n <div class=\"catalog-header-container mx-auto d-flex justify-content-between align-items-center\" ref=\"catHeader\">\n <div class=\"catalog-header-info d-flex\">\n <img v-if=\"showArray(getCatalog.catalogueFavIcon)\" class=\"catalog-header-title-icon\"\n :src=\"getCatalog.catalogueFavIcon\" alt=\"\">\n <div class=\"catalog-header-title-text\">\n <h1 class=\"catalog-header-title-title\" aria-label=\"Katalogtitel\">\n {{ getTranslationFor(getCatalog.title, $route.query.locale, getCatalog.languages) }}\n </h1>\n <h5 class=\"catalog-header-title-subtitle\" aria-label=\"Homepage\">\n <app-link :to=\"getCatalog.homepage\">\n {{ getCatalog.homepage }}\n </app-link>\n </h5>\n </div>\n </div>\n <img v-if=\"showArray(getCatalog.catalogueLogo)\" class=\"catalog-header-logo d-none d-sm-block\"\n :src=\"getCatalog.catalogueLogo\" alt=\"\" aria-label=\"logo\">\n </div>\n </slot>\n\n <div class=\"catalog-card card\">\n <div class=\"card-header\" role=\"navigation\">\n <!-- CARD NAV -->\n <ul class=\"nav nav-tabs card-header-tabs\" role=\"tablist\" aria-label=\"Navigationsleiste\">\n <li v-for=\"tab in cardNavTabs\" :key=\"tab.id\" role=\"tab\" :aria-controls=\"tab.id\"\n :aria-selected=\"activeTabName === tab.id\" :aria-label=\"tab.displayName\">\n <a @click.prevent=\"setActiveTabName(tab.id)\" class=\"catalog-nav-link nav-link\"\n :class=\"{active: tab.id === activeTabName}\" :href=\"`#${tab.id}`\" role=\"tab\">\n {{ tab.displayName }}\n </a>\n </li>\n </ul>\n </div>\n <!-- CARD CONTENT -->\n <div class=\"card-body my-5\">\n\n <!-- \"ÜBER DIESEN KATALOG\" -->\n <div v-if=\"activeTabName === 'about'\"\n class=\"tab-pane active catalog-about-tab d-flex align-items-start justify-content-between\" id=\"about\"\n role=\"tabpanel\">\n <div>\n <div class=\"tab-content d-flex\">\n <app-markdown-content class=\"card-text\" tag=\"div\"\n :text=\"getTranslationFor(catalog.description, $route.query.locale, catalog.languages)\"/>\n </div>\n </div>\n <img v-if=\"showArray(getCatalog.catalogueProfile)\" class=\"catalog-hero-pic img-fluid\"\n :src=\"getCatalog.catalogueProfile\" alt=\"\">\n </div>\n\n <!-- \"INTERESSANTE DATENSÄTZE\" -->\n <div v-show=\"activeTabName === 'dataset-selections'\" class=\"tab-pane active\" id=\"dataset-selections\"\n role=\"tabpanel\" aria-labelledby=\"dataset-selections-tab\">\n <div v-if=\"showArray(getDatasets)\" class=\"tab-content d-flex flex-column align-items-center mt-3\">\n <div class=\"d-flex flex-wrap justify-content-center mb-5\">\n\n <DatasetCard\n v-for=\"dataset in (interestingDatasets.length > 0) ? interestingDatasets.slice(0, 3) : getDatasets.slice(0, 3)\"\n :key=\"dataset.id\"\n :to=\"`/datasets/${dataset.id}`\"\n :datasetTitle=\"getTranslationFor(dataset.title, $route.query.locale, dataset.languages) || dataset.id\"\n :datasetDescription=\"getTranslationFor(dataset.description, $route.query.locale, dataset.languages)\"\n :datasetCatalog=\"getTranslationFor(dataset.catalog.title, $route.query.locale, [])\"\n :descriptionMaxLength=\"175\"\n :data-cy=\"`dataset@${dataset.id}`\"\n class=\"mt-3\"\n />\n </div>\n\n <button @click.prevent=\"setActiveTabName('dataset-page')\" class=\"primary-button\" role=\"button\">\n Mehr Daten entdecken\n </button>\n </div>\n\n <span v-else>\n Es sind keine Datensätze verfügbar.\n </span>\n </div>\n\n <!-- \"ALLE DATENSÄTZE\" -->\n <div v-show=\"activeTabName === 'dataset-page'\" class=\"tab-pane active\" id=\"dataset-page\" role=\"tabpanel\"\n aria-labelledby=\"dataset-page-tab\">\n <slot name=\"card-datasets\">\n <div class=\"tab-content mt-3\">\n <Datasets/>\n </div>\n </slot>\n </div>\n\n <!-- \"KONTAKT\" -->\n <div v-show=\"activeTabName === 'contact'\" class=\"tab-pane active\" id=\"contact\" role=\"tabpanel\"\n aria-labelledby=\"contact-tab\">\n <div class=\"tab-content\">\n <dl v-if=\"has(getCatalog, 'publisher') && showObject(getCatalog.publisher) && (showString(getCatalog.publisher.email) || showString(getCatalog.publisher.homepage) || showObject(getCatalog.publisher.address))\">\n <h4 class=\"catalog-contact-header\">Fragen zu dieser Open Data Präsenz?</h4>\n <!-- publisher name -->\n <dt v-if=\"has(getCatalog, 'publisher.name') && showString(getCatalog.publisher.name)\">\n {{ getCatalog.publisher.name }}\n </dt>\n <!-- address -->\n <dd v-if=\"has(getCatalog, 'publisher.address') && showObject(getCatalog.publisher.address)\">\n <!-- E-Mail: -->\n <span\n v-if=\"has(getCatalog, 'publisher.address.street') && showString(getCatalog.publisher.address.street)\">{{\n getCatalog.publisher.address.street\n }}</span>\n </dd>\n <dd v-if=\"has(getCatalog, 'publisher.address') && showObject(getCatalog.publisher.address)\">\n <!-- E-Mail: -->\n <span\n v-if=\"has(getCatalog, 'publisher.address.postalCode') && showString(getCatalog.publisher.address.locality) && has(getCatalog, 'publisher.address.locality') && showString(getCatalog.publisher.address.postalCode)\">{{\n getCatalog.publisher.address.postalCode\n }} {{ getCatalog.publisher.address.locality }}</span>\n </dd>\n <!-- email -->\n <dd>\n <!-- E-Mail: -->\n <app-link v-if=\"has(getCatalog, 'publisher.email') && showString(getCatalog.publisher.email)\"\n :to=\"getCatalog.publisher.email\">\n {{\n getCatalog.publisher.email.startsWith(\"mailto:\") ? getCatalog.publisher.email.slice(7) : getCatalog.publisher.email\n }}\n </app-link>\n </dd>\n <!-- homepage -->\n <dd>\n <!-- Website: -->\n <app-link v-if=\"has(getCatalog, 'publisher.homepage') && showString(getCatalog.publisher.homepage)\"\n :to=\"getCatalog.publisher.homepage\">\n {{ getCatalog.publisher.homepage }}\n </app-link>\n </dd>\n </dl>\n <span v-else>\n Es sind keine Kontaktinformationen verfügbar.\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Datasets from \"../datasets/Datasets.vue\"\nimport {mapGetters, mapActions} from 'vuex';\nimport AppLink from \"../widgets/AppLink\";\nimport DatasetCard from \"./CatalogPageDatasetCard.vue\"\nimport AppMarkdownContent from \"../datasetDetails/AppMarkdownContent.vue\"\nimport {\n has,\n isArray,\n isNil,\n isObject,\n isString\n} from 'lodash-es';\nimport {getTranslationFor, truncate} from '../utils/helpers';\nimport datasetService from \"../services/datasetService\";\n\nimport Axios from 'axios';\n\nexport default {\n name: \"CatalogPage\",\n components: {\n Datasets,\n DatasetCard,\n AppLink,\n AppMarkdownContent,\n },\n data() {\n return {\n interestingDatasets: [],\n interestingDatasetsFallback: [],\n activeTabName: 'about',\n cardNavTabs: [\n {\n id: 'about',\n displayName: 'Über diese Seite',\n },\n {\n id: 'dataset-selections',\n displayName: 'Interessante Datensätze',\n },\n {\n id: 'dataset-page',\n displayName: 'Alle Datensätze',\n },\n {\n id: 'contact',\n displayName: 'Kontakt',\n },\n ],\n datasetService: null,\n };\n },\n computed: {\n ...mapGetters('catalogDetails', [\n 'getCatalog',\n ]),\n ...mapGetters('datasets', [\n 'getDatasets',\n 'getDatasetsCount',\n 'getLoading',\n 'getOffset',\n ]),\n catalog() {\n return this.getCatalog;\n },\n },\n methods: {\n isNil,\n // The imported Lodash has function. Must be defined in Methods so we can use it in template\n has,\n isArray,\n truncate,\n getTranslationFor,\n ...mapActions('catalogDetails', [\n 'loadCatalog',\n ]),\n ...mapActions('datasets', [\n 'loadDatasets',\n 'loadSingleDataset',\n ]),\n setActiveTabName(name) {\n this.activeTabName = name;\n },\n showObject(object) {\n return !isNil(object) && isObject(object) && !Object.values(object).reduce((keyUndefined, currentValue) => keyUndefined && currentValue === undefined, true);\n },\n showArrayOfStrings(stringArray) {\n return this.showArray(stringArray) && stringArray.every(currentString => this.showString(currentString));\n },\n showString(string) {\n return !isNil(string) && isString(string);\n },\n showArray(array) {\n return !isNil(array) && isArray(array) && array.length > 0;\n },\n showObjectArray(objectArray) {\n return this.showArray(objectArray) && !objectArray.reduce((objectUndefined, currentObject) => objectUndefined && Object.values(currentObject).reduce((keyUndefined, currentValue) => keyUndefined && currentValue === undefined, true), true);\n },\n loadCatalogInterestingDatasets(catalog) {\n for (let id of this.catalog.catalogueInterestingDatasets) {\n this.loadSingleDataset(id)\n .then(response => {\n this.interestingDatasets.push(response);\n })\n .catch(error => {\n console.log('error: ', error)\n });\n }\n },\n loadCatalogInterestingDatasetsFallback(catalog) {\n for (let id of this.catalog.catalogueInterestingDatasets) {\n this.datasetService.getSingle(id)\n .then(response => {\n this.interestingDatasetsFallback.push(response);\n })\n .catch(error => console.log('error: ', error));\n }\n }\n },\n mounted() {\n if (sessionStorage.activeTabName) {\n this.activeTabName = sessionStorage.activeTabName;\n }\n },\n watch: {\n activeTabName(activeTab) {\n sessionStorage.activeTabName = activeTab;\n },\n },\n created() {\n this.$Progress.start()\n\n // Hack: define fresh instance of datasetService to avoid going through store.\n // When going through store, it will cause mutations that will affect datasetDetails page.\n this.datasetService = new datasetService(\n this.$env.api.baseUrl,\n this.$env.api.hubUrl,\n this.$env.api.qualityBaseUrl,\n this.$env.api.similarityBaseUrl,\n this.$env.content.datasets.facets.scoringFacets.defaultScoringFacets,\n );\n\n let catalogId = this.$route.params.ctlg_id;\n if (catalogId === undefined || catalogId === null) {\n const host = window.location.host;\n const parts = host.split('.');\n if (parts.length > 1) {\n catalogId = parts[0];\n\n }\n }\n\n\n Promise.all([\n this.loadCatalog(catalogId)\n .then(result => {\n this.loadCatalogInterestingDatasets(result)\n }\n ),\n // TODO: This is a temporary workaround.\n // We should refactor this code to use the store instead of making\n // a dedicated HTTP request for dataset search.\n // This will ensure that the most relevant datasets for the catalog are always displayed,\n // even if the search page has filtered datasets. \n Axios.get(`${this.$env.api.baseUrl}search`, {\n params: {\n q: '',\n filter: 'dataset',\n limit: 3,\n page: 0,\n sort: 'relevance+desc,+modified+desc,+title.de+asc',\n facetOperator: 'AND',\n facetGroupOperator: 'AND',\n dataServices: false,\n includes: 'id,title.de,description.de,languages,modified,issued,catalog.id,catalog.title,catalog.country.id,distributions.id,distributions.format.label,distributions.format.id,distributions.license,categories.label,publisher',\n facets: JSON.stringify({\n license: [],\n format: [],\n categories: [],\n catalog: [catalogId],\n publisher: [],\n country: [],\n }),\n },\n }).then(response => {\n const interestingDatasets = response.data?.result?.results || [];\n this.loadCatalogInterestingDatasetsFallback(interestingDatasets)\n }).catch(error => {\n console.error(error)\n }),\n // ...this.activeTabName === 'dataset-page' ? [this.loadDatasets({locale: this.$route.query.locale})] : [],\n ]).then(results => {\n this.$Progress.finish()\n }).catch(error => {\n console.error(error)\n this.$Progress.fail()\n })\n }\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.catalog-page-container {\n margin-top: 0 !important;\n padding: 0 !important;\n}\n\n.catalog-page-background-image,\n.catalog-page-background-default {\n position: absolute;\n height: 360px;\n width: 100%;\n}\n\n.catalog-page-background-default {\n background-color: #F4F8FA;\n}\n\n.catalog-page-background-image {\n overflow: hidden;\n object-fit: cover;\n}\n\n.catalog-box {\n display: flex;\n flex-direction: column;\n margin-bottom: 95px;\n}\n\n.flag-img {\n width: 150px;\n height: auto;\n}\n\n.catalog-header-container {\n flex: 1 1 100%;\n width: 100%;\n max-width: 1040px;\n min-height: 180px;\n padding-left: 32px;\n padding-right: 32px;\n z-index: 1;\n}\n\n.catalog-header-title-subtitle {\n font-size: 14px;\n}\n\n.catalog-header-title-icon {\n height: 48px;\n width: 48px;\n padding: 5px;\n margin-right: 16px;\n border: 1px solid transparent;\n border-radius: 50%;\n background-color: white;\n box-shadow: 0px 0px 6px 0px #0000001F;\n object-fit: contain;\n}\n\n.catalog-header-logo {\n max-height: 80px;\n max-width: 192px;\n height: auto;\n width: auto;\n}\n\n.catalog-card {\n flex: 1 1 100%;\n padding: 32px;\n width: 100%;\n max-width: 1040px;\n border: none;\n}\n\n.catalog-about-tab {\n flex-direction: column;\n flex-wrap: wrap;\n}\n\n.card-header {\n background-color: transparent;\n padding: 0;\n}\n\n.card-header-tabs {\n margin-right: 0;\n margin-left: 0;\n margin-bottom: 0;\n flex-wrap: nowrap;\n white-space: nowrap;\n overflow-x: scroll;\n overflow-y: hidden;\n -ms-overflow-style: none;\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.card-header-tabs li {\n padding-right: 48px;\n}\n\n.card-header-tabs li:last-child {\n padding-right: 0;\n}\n\n.card-body {\n padding: 0;\n}\n\n.catalog-nav-link.nav-link {\n color: rgba(0, 0, 0, 0.7);\n padding-left: 0;\n padding-right: 0;\n margin-bottom: 0;\n background-color: transparent;\n border: 0;\n border-left: 0;\n border-right: 0;\n border-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom: 2px solid transparent !important;\n\n &:hover,\n &.active {\n color: #175baf !important;\n }\n\n &.active {\n border-bottom: 2px solid #175baf !important;\n }\n}\n\n.catalog-hero-pic {\n max-width: 250px !important;\n width: 100%;\n height: auto;\n margin-top: calc(48px - 1rem);\n}\n\n.catalog-contact-header {\n font-size: 18px;\n margin-bottom: 34px;\n}\n\n.tab-content dt {\n margin-bottom: 8px;\n}\n\n.tab-content dd {\n margin-bottom: 0;\n}\n\n@media screen and (min-width: 768px) {\n .catalog-header-container {\n padding-left: 0;\n padding-right: 0;\n }\n\n .catalog-box {\n padding-left: 32px;\n padding-right: 32px;\n }\n\n .catalog-card {\n border: none;\n box-shadow: 0px 2px 12px 0px #00000012;\n margin-left: auto;\n margin-right: auto;\n padding-left: 48px;\n padding-right: 48px;\n }\n\n .catalog-about-tab {\n flex-wrap: nowrap;\n flex-direction: row;\n }\n\n .catalog-hero-pic {\n margin-top: 0;\n margin-left: 1.5rem;\n }\n}\n</style>"],"names":["_sfc_main","Datasets","DatasetCard","AppLink","AppMarkdownContent","mapGetters","isNil","has","isArray","truncate","getTranslationFor","mapActions","name","object","isObject","keyUndefined","currentValue","stringArray","currentString","string","isString","array","objectArray","objectUndefined","currentObject","catalog","id","response","error","activeTab","datasetService","catalogId","parts","result","Axios","interestingDatasets","_b","_a","results","_hoisted_1","_hoisted_3","_hoisted_5","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_12","_hoisted_13","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_20","_hoisted_21","_hoisted_24","_hoisted_27","_hoisted_29","_hoisted_31","_withScopeId","_createElementVNode","_openBlock","_createElementBlock","$options","_ctx","_hoisted_2","_hoisted_4","_createTextVNode","_renderSlot","_hoisted_6","_createCommentVNode","_hoisted_10","_toDisplayString","_hoisted_11","_createVNode","_component_app_link","_withCtx","_hoisted_14","_hoisted_15","_Fragment","_renderList","$data","tab","_withModifiers","$event","_normalizeClass","_hoisted_19","_component_app_markdown_content","_withDirectives","_hoisted_22","_hoisted_23","dataset","_createBlock","_component_DatasetCard","_cache","_hoisted_25","_hoisted_26","_component_Datasets","_hoisted_28","_hoisted_30","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37"],"mappings":"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"}
1
+ {"version":3,"file":"CatalogPage.vue.mjs","sources":["../../lib/catalogues/CatalogPage.vue"],"sourcesContent":["<template>\n <div class=\"catalog-page-container\">\n <div v-if=\"showArray(getCatalog.catalogueBackground)\" class=\"catalog-page-background\" ref=\"catBackground\">\n <img class=\"catalog-page-background-image\" :src=\"getCatalog.catalogueBackground\" alt=\"\">\n </div>\n <div v-else class=\"catalog-page-background-default\"></div>\n <div class=\"catalog-box\">\n\n <slot name=\"header\">\n <div class=\"catalog-header-container mx-auto d-flex justify-content-between align-items-center\" ref=\"catHeader\">\n <div class=\"catalog-header-info d-flex\">\n <img v-if=\"showArray(getCatalog.catalogueFavIcon)\" class=\"catalog-header-title-icon\"\n :src=\"getCatalog.catalogueFavIcon\" alt=\"\">\n <div class=\"catalog-header-title-text\">\n <h1 class=\"catalog-header-title-title\" aria-label=\"Katalogtitel\">\n {{ getTranslationFor(getCatalog.title, $route.query.locale, getCatalog.languages) }}\n </h1>\n <h5 class=\"catalog-header-title-subtitle\" aria-label=\"Homepage\">\n <app-link :to=\"getCatalog.homepage\">\n {{ getCatalog.homepage }}\n </app-link>\n </h5>\n </div>\n </div>\n <img v-if=\"showArray(getCatalog.catalogueLogo)\" class=\"catalog-header-logo d-none d-sm-block\"\n :src=\"getCatalog.catalogueLogo\" alt=\"\" aria-label=\"logo\">\n </div>\n </slot>\n\n <div class=\"catalog-card card\">\n <div class=\"card-header\" role=\"navigation\">\n <!-- CARD NAV -->\n <ul class=\"nav nav-tabs card-header-tabs\" role=\"tablist\" aria-label=\"Navigationsleiste\">\n <li v-for=\"tab in cardNavTabs\" :key=\"tab.id\" role=\"tab\" :aria-controls=\"tab.id\"\n :aria-selected=\"activeTabName === tab.id\" :aria-label=\"tab.displayName\">\n <a @click.prevent=\"setActiveTabName(tab.id)\" class=\"catalog-nav-link nav-link\"\n :class=\"{active: tab.id === activeTabName}\" :href=\"`#${tab.id}`\" role=\"tab\">\n {{ tab.displayName }}\n </a>\n </li>\n </ul>\n </div>\n <!-- CARD CONTENT -->\n <div class=\"card-body my-5\">\n\n <!-- \"ÜBER DIESEN KATALOG\" -->\n <div v-if=\"activeTabName === 'about'\"\n class=\"tab-pane active catalog-about-tab d-flex align-items-start justify-content-between\" id=\"about\"\n role=\"tabpanel\">\n <div>\n <div class=\"tab-content d-flex\">\n <app-markdown-content class=\"card-text\" tag=\"div\"\n :text=\"getTranslationFor(catalog.description, $route.query.locale, catalog.languages)\"/>\n </div>\n </div>\n <img v-if=\"showArray(getCatalog.catalogueProfile)\" class=\"catalog-hero-pic img-fluid\"\n :src=\"getCatalog.catalogueProfile\" alt=\"\">\n </div>\n\n <!-- \"INTERESSANTE DATENSÄTZE\" -->\n <div v-show=\"activeTabName === 'dataset-selections'\" class=\"tab-pane active\" id=\"dataset-selections\"\n role=\"tabpanel\" aria-labelledby=\"dataset-selections-tab\">\n <div v-if=\"showArray(getDatasets)\" class=\"tab-content d-flex flex-column align-items-center mt-3\">\n <div class=\"d-flex flex-wrap justify-content-center mb-5\">\n\n <DatasetCard\n v-for=\"dataset in (interestingDatasets.length > 0) ? interestingDatasets.slice(0, 3) : getDatasets.slice(0, 3)\"\n :key=\"dataset.id\"\n :to=\"`/datasets/${dataset.id}`\"\n :datasetTitle=\"getTranslationFor(dataset.title, $route.query.locale, dataset.languages) || dataset.id\"\n :datasetDescription=\"getTranslationFor(dataset.description, $route.query.locale, dataset.languages)\"\n :datasetCatalog=\"getTranslationFor(dataset.catalog.title, $route.query.locale, [])\"\n :descriptionMaxLength=\"175\"\n :data-cy=\"`dataset@${dataset.id}`\"\n class=\"mt-3\"\n />\n </div>\n\n <button @click.prevent=\"setActiveTabName('dataset-page')\" class=\"primary-button\" role=\"button\">\n Mehr Daten entdecken\n </button>\n </div>\n\n <span v-else>\n Es sind keine Datensätze verfügbar.\n </span>\n </div>\n\n <!-- \"ALLE DATENSÄTZE\" -->\n <div v-show=\"activeTabName === 'dataset-page'\" class=\"tab-pane active\" id=\"dataset-page\" role=\"tabpanel\"\n aria-labelledby=\"dataset-page-tab\">\n <slot name=\"card-datasets\">\n <div class=\"tab-content mt-3\">\n <Datasets/>\n </div>\n </slot>\n </div>\n\n <!-- \"KONTAKT\" -->\n <div v-show=\"activeTabName === 'contact'\" class=\"tab-pane active\" id=\"contact\" role=\"tabpanel\"\n aria-labelledby=\"contact-tab\">\n <div class=\"tab-content\">\n <dl v-if=\"has(getCatalog, 'publisher') && showObject(getCatalog.publisher) && (showString(getCatalog.publisher.email) || showString(getCatalog.publisher.homepage) || showObject(getCatalog.publisher.address))\">\n <h4 class=\"catalog-contact-header\">Fragen zu dieser Open Data Präsenz?</h4>\n <!-- publisher name -->\n <dt v-if=\"has(getCatalog, 'publisher.name') && showString(getCatalog.publisher.name)\">\n {{ getCatalog.publisher.name }}\n </dt>\n <!-- address -->\n <dd v-if=\"has(getCatalog, 'publisher.address') && showObject(getCatalog.publisher.address)\">\n <!-- E-Mail: -->\n <span\n v-if=\"has(getCatalog, 'publisher.address.street') && showString(getCatalog.publisher.address.street)\">{{\n getCatalog.publisher.address.street\n }}</span>\n </dd>\n <dd v-if=\"has(getCatalog, 'publisher.address') && showObject(getCatalog.publisher.address)\">\n <!-- E-Mail: -->\n <span\n v-if=\"has(getCatalog, 'publisher.address.postalCode') && showString(getCatalog.publisher.address.locality) && has(getCatalog, 'publisher.address.locality') && showString(getCatalog.publisher.address.postalCode)\">{{\n getCatalog.publisher.address.postalCode\n }} {{ getCatalog.publisher.address.locality }}</span>\n </dd>\n <!-- email -->\n <dd>\n <!-- E-Mail: -->\n <app-link v-if=\"has(getCatalog, 'publisher.email') && showString(getCatalog.publisher.email)\"\n :to=\"getCatalog.publisher.email\">\n {{\n getCatalog.publisher.email.startsWith(\"mailto:\") ? getCatalog.publisher.email.slice(7) : getCatalog.publisher.email\n }}\n </app-link>\n </dd>\n <!-- homepage -->\n <dd>\n <!-- Website: -->\n <app-link v-if=\"has(getCatalog, 'publisher.homepage') && showString(getCatalog.publisher.homepage)\"\n :to=\"getCatalog.publisher.homepage\">\n {{ getCatalog.publisher.homepage }}\n </app-link>\n </dd>\n </dl>\n <span v-else>\n Es sind keine Kontaktinformationen verfügbar.\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Datasets from \"../datasets/Datasets.vue\"\nimport {mapGetters, mapActions} from 'vuex';\nimport AppLink from \"../widgets/AppLink\";\nimport DatasetCard from \"./CatalogPageDatasetCard.vue\"\nimport AppMarkdownContent from \"../datasetDetails/AppMarkdownContent.vue\"\nimport {\n has,\n isArray,\n isNil,\n isObject,\n isString\n} from 'lodash-es';\nimport {getTranslationFor, truncate} from '../utils/helpers';\nimport datasetService from \"../services/datasetService\";\n\nimport Axios from 'axios';\n\nexport default {\n name: \"CatalogPage\",\n components: {\n Datasets,\n DatasetCard,\n AppLink,\n AppMarkdownContent,\n },\n data() {\n return {\n interestingDatasets: [],\n interestingDatasetsFallback: [],\n activeTabName: 'about',\n cardNavTabs: [\n {\n id: 'about',\n displayName: 'Über diese Seite',\n },\n {\n id: 'dataset-selections',\n displayName: 'Interessante Datensätze',\n },\n {\n id: 'dataset-page',\n displayName: 'Alle Datensätze',\n },\n {\n id: 'contact',\n displayName: 'Kontakt',\n },\n ],\n datasetService: null,\n };\n },\n computed: {\n ...mapGetters('catalogDetails', [\n 'getCatalog',\n ]),\n ...mapGetters('datasets', [\n 'getDatasets',\n 'getDatasetsCount',\n 'getLoading',\n 'getOffset',\n ]),\n catalog() {\n return this.getCatalog;\n },\n },\n methods: {\n isNil,\n // The imported Lodash has function. Must be defined in Methods so we can use it in template\n has,\n isArray,\n truncate,\n getTranslationFor,\n ...mapActions('catalogDetails', [\n 'loadCatalog',\n ]),\n ...mapActions('datasets', [\n 'loadDatasets',\n 'loadSingleDataset',\n ]),\n setActiveTabName(name) {\n this.activeTabName = name;\n },\n showObject(object) {\n return !isNil(object) && isObject(object) && !Object.values(object).reduce((keyUndefined, currentValue) => keyUndefined && currentValue === undefined, true);\n },\n showArrayOfStrings(stringArray) {\n return this.showArray(stringArray) && stringArray.every(currentString => this.showString(currentString));\n },\n showString(string) {\n return !isNil(string) && isString(string);\n },\n showArray(array) {\n return !isNil(array) && isArray(array) && array.length > 0;\n },\n showObjectArray(objectArray) {\n return this.showArray(objectArray) && !objectArray.reduce((objectUndefined, currentObject) => objectUndefined && Object.values(currentObject).reduce((keyUndefined, currentValue) => keyUndefined && currentValue === undefined, true), true);\n },\n loadCatalogInterestingDatasets(catalog) {\n for (let id of this.catalog.catalogueInterestingDatasets) {\n this.loadSingleDataset(id)\n .then(response => {\n this.interestingDatasets.push(response);\n })\n .catch(error => {\n console.log('error: ', error)\n });\n }\n },\n loadCatalogInterestingDatasetsFallback(catalog) {\n for (let id of this.catalog.catalogueInterestingDatasets) {\n this.datasetService.getSingle(id)\n .then(response => {\n this.interestingDatasetsFallback.push(response);\n })\n .catch(error => console.log('error: ', error));\n }\n }\n },\n mounted() {\n if (sessionStorage.activeTabName) {\n this.activeTabName = sessionStorage.activeTabName;\n }\n },\n watch: {\n activeTabName(activeTab) {\n sessionStorage.activeTabName = activeTab;\n },\n },\n created() {\n this.$Progress.start()\n\n // Hack: define fresh instance of datasetService to avoid going through store.\n // When going through store, it will cause mutations that will affect datasetDetails page.\n this.datasetService = new datasetService(\n this.$env.api.baseUrl,\n this.$env.api.hubUrl,\n this.$env.api.qualityBaseUrl,\n this.$env.api.similarityBaseUrl,\n this.$env.api.similarityServiceName,\n this.$env.content.datasets.facets.scoringFacets.defaultScoringFacets,\n );\n\n let catalogId = this.$route.params.ctlg_id;\n if (catalogId === undefined || catalogId === null) {\n const host = window.location.host;\n const parts = host.split('.');\n if (parts.length > 1) {\n catalogId = parts[0];\n\n }\n }\n\n\n Promise.all([\n this.loadCatalog(catalogId)\n .then(result => {\n this.loadCatalogInterestingDatasets(result)\n }\n ),\n // TODO: This is a temporary workaround.\n // We should refactor this code to use the store instead of making\n // a dedicated HTTP request for dataset search.\n // This will ensure that the most relevant datasets for the catalog are always displayed,\n // even if the search page has filtered datasets.\n Axios.get(`${this.$env.api.baseUrl}search`, {\n params: {\n q: '',\n filter: 'dataset',\n limit: 3,\n page: 0,\n sort: 'relevance+desc,+modified+desc,+title.de+asc',\n facetOperator: 'AND',\n facetGroupOperator: 'AND',\n dataServices: false,\n includes: 'id,title.de,description.de,languages,modified,issued,catalog.id,catalog.title,catalog.country.id,distributions.id,distributions.format.label,distributions.format.id,distributions.license,categories.label,publisher',\n facets: JSON.stringify({\n license: [],\n format: [],\n categories: [],\n catalog: [catalogId],\n publisher: [],\n country: [],\n }),\n },\n }).then(response => {\n const interestingDatasets = response.data?.result?.results || [];\n this.loadCatalogInterestingDatasetsFallback(interestingDatasets)\n }).catch(error => {\n console.error(error)\n }),\n // ...this.activeTabName === 'dataset-page' ? [this.loadDatasets({locale: this.$route.query.locale})] : [],\n ]).then(results => {\n this.$Progress.finish()\n }).catch(error => {\n console.error(error)\n this.$Progress.fail()\n })\n }\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.catalog-page-container {\n margin-top: 0 !important;\n padding: 0 !important;\n}\n\n.catalog-page-background-image,\n.catalog-page-background-default {\n position: absolute;\n height: 360px;\n width: 100%;\n}\n\n.catalog-page-background-default {\n background-color: #F4F8FA;\n}\n\n.catalog-page-background-image {\n overflow: hidden;\n object-fit: cover;\n}\n\n.catalog-box {\n display: flex;\n flex-direction: column;\n margin-bottom: 95px;\n}\n\n.flag-img {\n width: 150px;\n height: auto;\n}\n\n.catalog-header-container {\n flex: 1 1 100%;\n width: 100%;\n max-width: 1040px;\n min-height: 180px;\n padding-left: 32px;\n padding-right: 32px;\n z-index: 1;\n}\n\n.catalog-header-title-subtitle {\n font-size: 14px;\n}\n\n.catalog-header-title-icon {\n height: 48px;\n width: 48px;\n padding: 5px;\n margin-right: 16px;\n border: 1px solid transparent;\n border-radius: 50%;\n background-color: white;\n box-shadow: 0px 0px 6px 0px #0000001F;\n object-fit: contain;\n}\n\n.catalog-header-logo {\n max-height: 80px;\n max-width: 192px;\n height: auto;\n width: auto;\n}\n\n.catalog-card {\n flex: 1 1 100%;\n padding: 32px;\n width: 100%;\n max-width: 1040px;\n border: none;\n}\n\n.catalog-about-tab {\n flex-direction: column;\n flex-wrap: wrap;\n}\n\n.card-header {\n background-color: transparent;\n padding: 0;\n}\n\n.card-header-tabs {\n margin-right: 0;\n margin-left: 0;\n margin-bottom: 0;\n flex-wrap: nowrap;\n white-space: nowrap;\n overflow-x: scroll;\n overflow-y: hidden;\n -ms-overflow-style: none;\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.card-header-tabs li {\n padding-right: 48px;\n}\n\n.card-header-tabs li:last-child {\n padding-right: 0;\n}\n\n.card-body {\n padding: 0;\n}\n\n.catalog-nav-link.nav-link {\n color: rgba(0, 0, 0, 0.7);\n padding-left: 0;\n padding-right: 0;\n margin-bottom: 0;\n background-color: transparent;\n border: 0;\n border-left: 0;\n border-right: 0;\n border-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom: 2px solid transparent !important;\n\n &:hover,\n &.active {\n color: #175baf !important;\n }\n\n &.active {\n border-bottom: 2px solid #175baf !important;\n }\n}\n\n.catalog-hero-pic {\n max-width: 250px !important;\n width: 100%;\n height: auto;\n margin-top: calc(48px - 1rem);\n}\n\n.catalog-contact-header {\n font-size: 18px;\n margin-bottom: 34px;\n}\n\n.tab-content dt {\n margin-bottom: 8px;\n}\n\n.tab-content dd {\n margin-bottom: 0;\n}\n\n@media screen and (min-width: 768px) {\n .catalog-header-container {\n padding-left: 0;\n padding-right: 0;\n }\n\n .catalog-box {\n padding-left: 32px;\n padding-right: 32px;\n }\n\n .catalog-card {\n border: none;\n box-shadow: 0px 2px 12px 0px #00000012;\n margin-left: auto;\n margin-right: auto;\n padding-left: 48px;\n padding-right: 48px;\n }\n\n .catalog-about-tab {\n flex-wrap: nowrap;\n flex-direction: row;\n }\n\n .catalog-hero-pic {\n margin-top: 0;\n margin-left: 1.5rem;\n }\n}\n</style>\n"],"names":["_sfc_main","Datasets","DatasetCard","AppLink","AppMarkdownContent","mapGetters","isNil","has","isArray","truncate","getTranslationFor","mapActions","name","object","isObject","keyUndefined","currentValue","stringArray","currentString","string","isString","array","objectArray","objectUndefined","currentObject","catalog","id","response","error","activeTab","datasetService","catalogId","parts","result","Axios","interestingDatasets","_b","_a","results","_hoisted_1","_hoisted_3","_hoisted_5","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_12","_hoisted_13","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_20","_hoisted_21","_hoisted_24","_hoisted_27","_hoisted_29","_hoisted_31","_withScopeId","_createElementVNode","_openBlock","_createElementBlock","$options","_ctx","_hoisted_2","_hoisted_4","_createTextVNode","_renderSlot","_hoisted_6","_createCommentVNode","_hoisted_10","_toDisplayString","_hoisted_11","_createVNode","_component_app_link","_withCtx","_hoisted_14","_hoisted_15","_Fragment","_renderList","$data","tab","_withModifiers","$event","_normalizeClass","_hoisted_19","_component_app_markdown_content","_withDirectives","_hoisted_22","_hoisted_23","dataset","_createBlock","_component_DatasetCard","_cache","_hoisted_25","_hoisted_26","_component_Datasets","_hoisted_28","_hoisted_30","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37"],"mappings":"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"}
@@ -21,7 +21,7 @@ const M = {
21
21
  loading: !1,
22
22
  error: null,
23
23
  message: "",
24
- confirm: "",
24
+ confirm: "Ok",
25
25
  confirmHandler: () => null
26
26
  }
27
27
  };
@@ -318,7 +318,7 @@ const M = {
318
318
  created() {
319
319
  this.setupKeycloakWatcher();
320
320
  }
321
- }, N = (e) => (S("data-v-f901edd8"), e = e(), z(), e), R = {
321
+ }, N = (e) => (S("data-v-f7ab70fb"), e = e(), z(), e), R = {
322
322
  id: "wrapper",
323
323
  "data-cy": "dpi-menu"
324
324
  }, E = { key: 0 }, H = { class: "text-white" }, x = { style: { "margin-top": "1%" } }, F = { class: "btn-group dropup" }, B = {
@@ -403,7 +403,7 @@ function K(e, a, o, s, t, r) {
403
403
  }, 8, ["loading", "confirm", "onConfirm"])
404
404
  ]);
405
405
  }
406
- const se = /* @__PURE__ */ L(M, [["render", K], ["__scopeId", "data-v-f901edd8"]]);
406
+ const se = /* @__PURE__ */ L(M, [["render", K], ["__scopeId", "data-v-f7ab70fb"]]);
407
407
  export {
408
408
  se as default
409
409
  };
@@ -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 <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 v-for=\"(group, index) in menuGroups\" :key=\"`Group${index}`\" :groupName=\"group.group\"\n :groupItems=\"group.items\" :show=\"$env.content.dataProviderInterface.buttons[group.group]\"\n :isOperator=\"getUserData.roles.includes('operator')\" :isCatalog=\"group.group === 'Catalogue' ? true : false\">\n </dropup>\n <ul>\n <div class=\"btn-group dropup\">\n <li v-for=\"(menuItem, index) in menuItems\" :key=\"`Menu${index}`\">\n <button type=\"button\" class=\"btn btn-default\" @click=\"scrollToTop()\">\n <!-- Menu items are either buttons or router-link -->\n <!-- depending if they have a 'to' or 'handler' property -->\n <component :is=\"menuItem.handler ? 'button' : 'router-link'\" :class=\"{ 'disabled': menuItem.disabled }\"\n :to=\"menuItem.to\" @click.native=\"menuItem.handler ? menuItem.handler() : null\">\n {{ menuItem.handler }}\n {{ menuItem.name }}\n </component>\n </button>\n </li>\n </div>\n </ul>\n </div>\n\n\n <div v-if=\"getUserData.userName\" class=\"logoutWrap\">\n <slot name=\"right\" :get-user-data=\"getUserData\">\n <small class=\"text-white\">{{ $t('message.dataupload.menu.loggedInAs') }} {{ getUserData.userName\n }}</small>\n <br>\n <button type=\"button\" class=\"btn btn-default logout\">\n <router-link :to=\"{ name: 'Logout' }\">{{ $t('message.dataupload.menu.logout') }}</router-link>\n </button>\n </slot>\n </div>\n </nav>\n\n <app-confirmation-dialog id=\"DPIMenuModal\" :loading=\"modal.loading\" :confirm=\"modal.confirm\"\n @confirm=\"modal.confirmHandler\">\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 visible: true,\n modal: {\n show: false,\n loading: false,\n error: null,\n message: '',\n confirm: '',\n confirmHandler: () => null,\n },\n };\n },\n setup() {\n const scrollToTop = () => {\n let { x, y } = useWindowScroll({ behavior: 'smooth' })\n y.value = 0\n\n }\n return {\n scrollToTop\n }\n },\n computed: {\n ...mapGetters('datasetDetails', [\n 'getCatalog',\n 'getID',\n 'getLoading',\n 'getTitle',\n 'getDescription',\n ]),\n ...mapGetters('auth', [\n 'getUserData',\n ]),\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,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t('message.dataupload.menu.datasetDeletion.message'),\n confirm: this.$t('message.dataupload.menu.datasetDeletion.confirm'),\n confirmHandler: () => this.handleDelete({ id: this.getID, property: 'datasets', catalog: this.getCatalog.id }),\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('message.dataupload.menu.markAsDraft.message'),\n confirm: this.$t('message.dataupload.menu.markAsDraft.confirm'),\n confirmHandler: () => this.handleMarkAsDraft({\n id: this.getID, catalog: this.getCatalog.id, title: this.getTitle, 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('message.dataupload.menu.registerADoi.message'),\n confirm: this.$t('message.dataupload.menu.registerADoi.confirm'),\n confirmHandler: () => this.handleRegisterDoi({ id: this.getID, catalog: this.getCatalog.id, type: this.$env.content.dataProviderInterface.doiRegistrationService.persistentIdentifierType || 'mock' }),\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: 'Are you sure you want to delete this catalogue? This can not be reverted!',\n confirm: 'Delete catlogue (irreversible)',\n confirmHandler: () => this.handleDelete({ id: this.$route.params.ctlg_id, property: 'catalogues', catalog: this.$route.params.ctlg_id }),\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 ? this.$route.params.ctlg_id : '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 return [\n {\n name: this.$t('message.dataupload.menu.draftDatasets'),\n to: { name: 'DataProviderInterface-Draft', query: { locale: this.$route.query.locale } },\n },\n {\n name: this.$t('message.dataupload.menu.myCatalogues'),\n to: { name: 'DataProviderInterface-UserCatalogues', query: { locale: this.$route.query.locale } },\n },\n {\n name: this.$t('message.dataupload.menu.userProfile'),\n to: { name: 'DataProviderInterface-UserProfile', query: { locale: this.$route.query.locale } },\n },\n ];\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 = 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(permission => permission.rsname === catalogId);\n\n // Does the user have permission on the current dataset details page?\n return hasPermission\n && isOnDatasetDetailsPage\n && datasetId === this.getID;\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\n // does user have permission on current catalogue\n return hasPermission && onCatalogPage;\n }\n },\n methods: {\n ...mapActions('auth', [\n 'updateUserData',\n ]),\n ...mapActions('snackbar', [\n 'showSnackbar',\n ]),\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('$keycloak.token', 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 }, { immediate: true });\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 = ex.response && ex.response.data && ex.response.data.message;\n\n this.modal = {\n ...this.modal,\n ...{\n // Need to translate this\n message: 'DOI registration is not possible, the following error occured: ' + ex.response.data,\n confirm: 'Okay',\n confirmHandler: () => $('#modal').modal('hide'),\n },\n };\n\n\n console.log(ex.response.data);\n let customErrorMessage = typeof errorMessage === 'string' && errorMessage;\n customErrorMessage = typeof errorMessage === 'function' && errorMessage(ex);\n // customErrorMessage = typeof errorMessage === 'object' && errorMessage.prefix && `${errorMessage.prefix}${maybeErrorStatusMsg && ` — ${maybeErrorStatusMsg}`}`;\n customErrorMessage = typeof errorMessage === 'object' && errorMessage.prefix + \" - \" + ex.response.data;\n\n console.log(errorMessage);\n const errorMsg = customErrorMessage || maybeErrorStatusMsg || ex.message || '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') ? this.$t('message.snackbar.doiRegistration.success') : 'Successfully registered DOI',\n errorMessage: { prefix: this.$te('message.snackbar.doiRegistration.error') ? this.$t('message.snackbar.doiRegistration.error') : 'DOI registration failed' },\n\n },\n );\n },\n async handleMarkAsDraft({\n id, catalog, title, description,\n }) {\n await this.handleConfirm('auth/putDatasetToDraft', {\n id, catalog, title, description,\n }, {\n successMessage: this.$te('message.snackbar.markAsDraft.success') ? this.$t('message.snackbar.markAsDraft.success') : 'Dataset successfully marked as draft',\n errorMessage: { prefix: this.$te('message.snackbar.markAsDraft.error') ? this.$t('message.snackbar.markAsDraft.error') : 'Failed to mark dataset as draft' },\n });\n\n this.$router.push({ name: 'DataProviderInterface-Draft', query: { locale: this.$route.query.locale } }).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\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\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') ? this.$t('message.snackbar.deleteDataset.success') : 'Dataset successfully deleted';\n } else if (property === 'catalogues') {\n successMessage = this.$te('message.snackbar.deleteCatalog.success') ? this.$t('message.snackbar.deleteCatalog.success') : 'Catalog successfully deleted';\n }\n\n\n this.showSnackbar({\n message: successMessage,\n variant: 'success',\n });\n this.$Progress.finish();\n\n // Redirect to Home\n this.$router.push({ name: 'Datasets', query: { locale: this.$route.query.locale, refresh: true } }).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') ? this.$t('message.snackbar.deleteDataset.error') : 'Failed to delete dataset';\n } else if (property === 'catalogues') {\n errorMessage = this.$te('message.snackbar.deleteCatalog.error') ? this.$t('message.snackbar.deleteCatalog.error') : 'Failed to delete catalog';\n }\n\n this.showSnackbar({\n message: `${errorMessage}${ex.response?.data ? ` — ${ex.response?.data}` : ex.message}`,\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</style>\n"],"names":["_sfc_main","Dropup","x","y","useWindowScroll","mapGetters","$","isOnDatasetDetailsPage","datasetId","permissions","catalogId","permission","onCatalogPage","mapActions","newToken","rtpToken","rtpTokenFn","newRtpToken","action","argsObj","successMessage","errorMessage","resolve","ex","maybeErrorStatusMsg","customErrorMessage","errorMsg","id","catalog","type","title","description","property","endpoint","axios","_a","_b","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_7","_createElementVNode","_openBlock","_createElementBlock","_hoisted_1","$data","_hoisted_2","_toDisplayString","_ctx","_createTextVNode","_Fragment","_renderList","$options","group","index","_createBlock","_component_dropup","menuItem","$setup","_resolveDynamicComponent","_normalizeClass","_withCtx","_hoisted_6","_renderSlot","_hoisted_8","_hoisted_9","_createVNode","_component_router_link","_createCommentVNode","_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 <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 v-for=\"(group, index) in menuGroups\" :key=\"`Group${index}`\" :groupName=\"group.group\"\n :groupItems=\"group.items\" :show=\"$env.content.dataProviderInterface.buttons[group.group]\"\n :isOperator=\"getUserData.roles.includes('operator')\" :isCatalog=\"group.group === 'Catalogue' ? true : false\">\n </dropup>\n <ul>\n <div class=\"btn-group dropup\">\n <li v-for=\"(menuItem, index) in menuItems\" :key=\"`Menu${index}`\">\n <button type=\"button\" class=\"btn btn-default\" @click=\"scrollToTop()\">\n <!-- Menu items are either buttons or router-link -->\n <!-- depending if they have a 'to' or 'handler' property -->\n <component :is=\"menuItem.handler ? 'button' : 'router-link'\" :class=\"{ 'disabled': menuItem.disabled }\"\n :to=\"menuItem.to\" @click.native=\"menuItem.handler ? menuItem.handler() : null\">\n {{ menuItem.handler }}\n {{ menuItem.name }}\n </component>\n </button>\n </li>\n </div>\n </ul>\n </div>\n\n\n <div v-if=\"getUserData.userName\" class=\"logoutWrap\">\n <slot name=\"right\" :get-user-data=\"getUserData\">\n <small class=\"text-white\">{{ $t('message.dataupload.menu.loggedInAs') }} {{ getUserData.userName\n }}</small>\n <br>\n <button type=\"button\" class=\"btn btn-default logout\">\n <router-link :to=\"{ name: 'Logout' }\">{{ $t('message.dataupload.menu.logout') }}</router-link>\n </button>\n </slot>\n </div>\n </nav>\n\n <app-confirmation-dialog id=\"DPIMenuModal\" :loading=\"modal.loading\" :confirm=\"modal.confirm\"\n @confirm=\"modal.confirmHandler\">\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 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 }\n return {\n scrollToTop\n }\n },\n computed: {\n ...mapGetters('datasetDetails', [\n 'getCatalog',\n 'getID',\n 'getLoading',\n 'getTitle',\n 'getDescription',\n ]),\n ...mapGetters('auth', [\n 'getUserData',\n ]),\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,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t('message.dataupload.menu.datasetDeletion.message'),\n confirm: this.$t('message.dataupload.menu.datasetDeletion.confirm'),\n confirmHandler: () => this.handleDelete({ id: this.getID, property: 'datasets', catalog: this.getCatalog.id }),\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('message.dataupload.menu.markAsDraft.message'),\n confirm: this.$t('message.dataupload.menu.markAsDraft.confirm'),\n confirmHandler: () => this.handleMarkAsDraft({\n id: this.getID, catalog: this.getCatalog.id, title: this.getTitle, 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('message.dataupload.menu.registerADoi.message'),\n confirm: this.$t('message.dataupload.menu.registerADoi.confirm'),\n confirmHandler: () => this.handleRegisterDoi({ id: this.getID, catalog: this.getCatalog.id, type: this.$env.content.dataProviderInterface.doiRegistrationService.persistentIdentifierType || 'mock' }),\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: 'Are you sure you want to delete this catalogue? This can not be reverted!',\n confirm: 'Delete catlogue (irreversible)',\n confirmHandler: () => this.handleDelete({ id: this.$route.params.ctlg_id, property: 'catalogues', catalog: this.$route.params.ctlg_id }),\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 ? this.$route.params.ctlg_id : '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 return [\n {\n name: this.$t('message.dataupload.menu.draftDatasets'),\n to: { name: 'DataProviderInterface-Draft', query: { locale: this.$route.query.locale } },\n },\n {\n name: this.$t('message.dataupload.menu.myCatalogues'),\n to: { name: 'DataProviderInterface-UserCatalogues', query: { locale: this.$route.query.locale } },\n },\n {\n name: this.$t('message.dataupload.menu.userProfile'),\n to: { name: 'DataProviderInterface-UserProfile', query: { locale: this.$route.query.locale } },\n },\n ];\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 = 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(permission => permission.rsname === catalogId);\n\n // Does the user have permission on the current dataset details page?\n return hasPermission\n && isOnDatasetDetailsPage\n && datasetId === this.getID;\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\n // does user have permission on current catalogue\n return hasPermission && onCatalogPage;\n }\n },\n methods: {\n ...mapActions('auth', [\n 'updateUserData',\n ]),\n ...mapActions('snackbar', [\n 'showSnackbar',\n ]),\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('$keycloak.token', 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 }, { immediate: true });\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 = ex.response && ex.response.data && ex.response.data.message;\n\n this.modal = {\n ...this.modal,\n ...{\n // Need to translate this\n message: 'DOI registration is not possible, the following error occured: ' + ex.response.data,\n confirm: 'Okay',\n confirmHandler: () => $('#modal').modal('hide'),\n },\n };\n\n\n console.log(ex.response.data);\n let customErrorMessage = typeof errorMessage === 'string' && errorMessage;\n customErrorMessage = typeof errorMessage === 'function' && errorMessage(ex);\n // customErrorMessage = typeof errorMessage === 'object' && errorMessage.prefix && `${errorMessage.prefix}${maybeErrorStatusMsg && ` — ${maybeErrorStatusMsg}`}`;\n customErrorMessage = typeof errorMessage === 'object' && errorMessage.prefix + \" - \" + ex.response.data;\n\n console.log(errorMessage);\n const errorMsg = customErrorMessage || maybeErrorStatusMsg || ex.message || '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') ? this.$t('message.snackbar.doiRegistration.success') : 'Successfully registered DOI',\n errorMessage: { prefix: this.$te('message.snackbar.doiRegistration.error') ? this.$t('message.snackbar.doiRegistration.error') : 'DOI registration failed' },\n\n },\n );\n },\n async handleMarkAsDraft({\n id, catalog, title, description,\n }) {\n await this.handleConfirm('auth/putDatasetToDraft', {\n id, catalog, title, description,\n }, {\n successMessage: this.$te('message.snackbar.markAsDraft.success') ? this.$t('message.snackbar.markAsDraft.success') : 'Dataset successfully marked as draft',\n errorMessage: { prefix: this.$te('message.snackbar.markAsDraft.error') ? this.$t('message.snackbar.markAsDraft.error') : 'Failed to mark dataset as draft' },\n });\n\n this.$router.push({ name: 'DataProviderInterface-Draft', query: { locale: this.$route.query.locale } }).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\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\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') ? this.$t('message.snackbar.deleteDataset.success') : 'Dataset successfully deleted';\n } else if (property === 'catalogues') {\n successMessage = this.$te('message.snackbar.deleteCatalog.success') ? this.$t('message.snackbar.deleteCatalog.success') : 'Catalog successfully deleted';\n }\n\n\n this.showSnackbar({\n message: successMessage,\n variant: 'success',\n });\n this.$Progress.finish();\n\n // Redirect to Home\n this.$router.push({ name: 'Datasets', query: { locale: this.$route.query.locale, refresh: true } }).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') ? this.$t('message.snackbar.deleteDataset.error') : 'Failed to delete dataset';\n } else if (property === 'catalogues') {\n errorMessage = this.$te('message.snackbar.deleteCatalog.error') ? this.$t('message.snackbar.deleteCatalog.error') : 'Failed to delete catalog';\n }\n\n this.showSnackbar({\n message: `${errorMessage}${ex.response?.data ? ` — ${ex.response?.data}` : ex.message}`,\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</style>\n"],"names":["_sfc_main","Dropup","x","y","useWindowScroll","mapGetters","$","isOnDatasetDetailsPage","datasetId","permissions","catalogId","permission","onCatalogPage","mapActions","newToken","rtpToken","rtpTokenFn","newRtpToken","action","argsObj","successMessage","errorMessage","resolve","ex","maybeErrorStatusMsg","customErrorMessage","errorMsg","id","catalog","type","title","description","property","endpoint","axios","_a","_b","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_7","_createElementVNode","_openBlock","_createElementBlock","_hoisted_1","$data","_hoisted_2","_toDisplayString","_ctx","_createTextVNode","_Fragment","_renderList","$options","group","index","_createBlock","_component_dropup","menuItem","$setup","_resolveDynamicComponent","_normalizeClass","_withCtx","_hoisted_6","_renderSlot","_hoisted_8","_hoisted_9","_createVNode","_component_router_link","_createCommentVNode","_component_app_confirmation_dialog"],"mappings":"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"}