{"version":3,"file":"Navigation.vue.mjs","sources":["../../../lib/data-provider-interface/components/Navigation.vue"],"sourcesContent":["<template>\n  <div>\n    <div id=\"nav\" class=\"d-flex \">\n      <div class=\"left-form-nav w-40\">\n        <!-- PREVIOUS STEP -->\n        <FormKit type=\"button\" :label=\"$t('message.dataupload.preview')\" @click=\"goToPreviousStep\" v-if=\"previousStep\"\n          class=\"prev-btn mx-1 my-0\"></FormKit>\n\n        <!-- CLEAR FORM -->\n        <FormKit type=\"button\" :label=\"$t('message.dataupload.clear')\" @click=\"handleClear\" class=\"clear-btn\"></FormKit>\n\n        <!-- CLEAR FORM -->\n        <FormKit type=\"button\" :label=\"$t('message.dataupload.cancelandexit')\" @click=\"handleCancelAndExit\"\n          class=\"clear-btn\"></FormKit>\n      </div>\n      <div class=\"right-form-nav w-80\">\n\n        <!-- DELETE DISTRIBUTION -->\n        <!-- <FormKit type=\"button\" label=\"Delete Distribution\" @click=\"handleDeleteDistribution()\"\n          v-if=\"isDistribution\" class=\"mx-1 my-0 delDisBtn\"></FormKit> -->\n\n        <!-- PUBLISH NEW CATALOGUE -->\n        <FormKit type=\"button\" @click=\"submit('createcatalogue')\"\n          v-if=\"!getIsEditMode && !getIsDraft && property === 'catalogues'\" class=\"mr-2\">\n          <span v-if=\"uploading.createcatalogue\" class=\"loading-spinner\"></span>{{\n            $t('message.dataupload.publishcatalogue') }}\n        </FormKit>\n\n        <!-- PUBLISH EDITED CATALOGUE -->\n        <FormKit type=\"button\" @click=\"submit('createcatalogue')\"\n          v-if=\"getIsEditMode && !getIsDraft && property === 'catalogues'\" class=\"mx-1 my-0\">\n          <span v-if=\"uploading.createcatalogue\" class=\"loading-spinner\"></span>{{\n            $t('message.dataupload.publishcatalogue') }}\n        </FormKit>\n\n        <!-- PUBLISH DATASET -->\n        <FormKit type=\"button\" v-if=\"property === 'datasets'\" @click=\"submit('dataset')\" :disabled=\"formErrorCount\"\n          class=\"mx-1 my-0\">\n          <span v-if=\"uploading.dataset\" class=\"loading-spinner\"></span>{{ $t('message.dataupload.publishdataset') }}\n        </FormKit>\n\n        <!-- SAVE AS DRAFT -->\n        <FormKit type=\"button\" v-if=\"property === 'datasets'\" @click=\"submit('draft')\" :disabled=\"formErrorCount\"\n          class=\"mx-1 my-0\">\n          <span v-if=\"uploading.draft\" class=\"loading-spinner\"></span>{{ $t('message.dataupload.saveasdraft') }}\n        </FormKit>\n\n        <!-- NEXT STEP -->\n        <FormKit type=\"button\" :label=\"$t('message.dataupload.next')\" @click=\"goToNextStep\" v-if=\"nextStep\"></FormKit>\n      </div>\n    </div>\n\n    <app-confirmation-dialog id=\"modal\" :confirm=\"modal.confirm\" @confirm=\"modal.callback\" :close=\"modal.confirm\">\n      {{ modal.message }}\n    </app-confirmation-dialog>\n  </div>\n</template>\n\n<script>\n/* eslint-disable */\nimport $ from 'jquery';\nimport { isNil } from 'lodash';\nimport { mapGetters, mapActions } from 'vuex';\nimport { useWindowScroll } from '@vueuse/core'\nimport axios from 'axios';\nimport { ref, nextTick } from 'vue'\nimport { getCurrentInstance } from \"vue\";\nimport { useI18n } from 'vue-i18n';\nimport { useDpiContext } from '../composables/useDpiContext';\n\nexport default {\n  name: 'Navigation',\n  props: ['steps', 'nextStep', 'previousStep', 'goToNextStep', 'goToPreviousStep'],\n  data() {\n    return {\n      instance: getCurrentInstance().appContext.app.config.globalProperties.$env,\n      uploading: {\n        dataset: false,\n        draft: false,\n      },\n      modal: {\n        confirm: '',\n        message: '',\n        callback: '',\n      },\n      modals: {\n        id: {\n          confirm: '',\n          message: 'Dataset ID already exists',\n          callback: this.closeModal,\n        },\n        clear: {\n          confirm: '',\n          message: '',\n          callback: this.clearStorage,\n        },\n      },\n      property: this.$route.params.property,\n      id: this.$route.params.id,\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('auth', [\n      'getIsEditMode',\n      'getIsDraft',\n      'getUserData',\n    ]),\n    ...mapGetters('dpiStore', [\n      'getData',\n    ]),\n    formErrorCount() {\n      let errorCount = 0;\n      Object.keys(this.steps).forEach(key => {\n        errorCount = errorCount + this.steps[key].blockingCount\n      })\n\n      return errorCount > 0;\n    }\n  },\n  created() {\n    // this.$i18n.locale = this.$route.query.locale\n    this.modals.clear.message = this.$t('message.dataupload.modal.resetForm')\n    this.modals.clear.confirm = this.$t('message.dataupload.modal.confirmReset')\n\n  },\n  methods: {\n    ...mapActions('auth', [\n      'setIsEditMode',\n      'setIsDraft',\n    ]),\n    ...mapActions('snackbar', [\n      'showSnackbar',\n    ]),\n    ...mapActions('dpiStore', [\n      'convertToRDF',\n      'clearAll',\n      // 'deleteDistribution',\n      // 'setDeleteDistributionInline',\n    ]),\n    closeModal() {\n      $('#modal').modal('hide');\n    },\n    handleIDError() {\n      this.modal = this.modals.id;\n      $('#modal').modal({ show: true });\n    },\n    handleClear() {\n      this.modal = this.modals.clear;\n      $('#modal').modal({ show: true });\n    },\n    handleCancelAndExit() {\n      if (!this.getIsEditMode) {\n        // Draft Mode → Go back to Drafts list\n        this.$router.push({\n          name: 'DataProviderInterface-Draft',\n          query: { locale: this.$route.query.locale }\n        }).catch(() => { });\n      } else {\n        const datasetId = this.$route.query.id;\n        console.log(\"Dataset ID:\", datasetId); // Debug log\n        if (!datasetId) {\n          console.error(\"No dataset ID found!\");\n          return;\n        }\n        this.$router\n          // .push({ name: 'DatasetDetailsDataset', params: { ds_id: 'finaltest-neu1'}, query: { locale: 'de' } })\n          .push({ name: 'DatasetDetailsDataset', params: { ds_id: datasetId }, query: { locale: this.$route.query.locale } })\n          .then(() => { this.$router.go(0) })\n      }\n      // const datasetId = this.getData(this.property)['datasetID'];\n\n      // this.$router.push({ name: 'DataProviderInterface-Draft', query: { locale: this.$route.query.locale } }).catch(() => { });\n    },\n    clearStorage() {\n      this.closeModal();\n      this.$formkit.reset('dpiForm');\n      this.clearAll();\n    },\n    async submit(mode) {\n      this.uploading[mode] = true;\n      this.$Progress?.start();\n\n      const specification = this.$env.content.dataProviderInterface.specification;\n      const RDFdata = await this.convertToRDF({ property: this.property, specification: specification }).then((response) => { return response; });\n      const rtpToken = this.getUserData.rtpToken;\n\n      const datasetId = this.getData(this.property)['datasetID'];\n      const title = this.getData(this.property)['dct:title'];\n      const description = this.getData(this.property)['dct:description'];\n      const catalogId =\n        this.dpiContext.edit?.catalog\n        || this.getData(this.property)['catalog']\n        || this.getData(this.property)['dcat:catalog']\n        || this.getData(this.property)['dct:catalog']\n\n      let uploadUrl;\n      let actionName;\n      let actionParams = {\n        id: datasetId,\n        catalog: catalogId,\n        body: RDFdata,\n        title,\n        description,\n      };\n\n      if (mode === 'dataset') {\n        // if no edit mode: just publish dataset regularly\n        // if edit mode but no draft: publish/save dataset regularly\n        // if (!this.getIsEditMode || (this.getIsEditMode && !this.getIsDraft) || (this.getIsEditMode && this.getIsDraft && localStorage.getItem('dpi_duplicate'))) {\n        //   uploadUrl = `${this.$env.api.hubUrl}datasets?id=${datasetId}&catalogue=${catalogId}`;\n        //   actionParams = { data: RDFdata, token: rtpToken, url: uploadUrl };\n        //   actionName = 'auth/createDataset';\n        // }\n        if (!this.getIsEditMode) {\n          uploadUrl = `${this.$env.api.hubUrl}datasets?id=${datasetId}&catalogue=${catalogId}`;\n          actionParams = { data: RDFdata, token: rtpToken, url: uploadUrl };\n          actionName = 'auth/createDataset';\n        }\n        // if edit mode but no draft\n        else if (this.getIsEditMode && !this.getIsDraft) {\n          uploadUrl = `${this.$env.api.hubUrl}datasets/${datasetId}`;\n          actionParams = { data: RDFdata, token: rtpToken, url: uploadUrl };\n          actionName = 'auth/createDataset';\n        }\n        // if edit mode and draft\n        else if (this.getIsEditMode && this.getIsDraft && localStorage.getItem('dpi_duplicate')) {\n          uploadUrl = `${this.$env.api.hubUrl}datasets?id=${datasetId}&catalogue=${catalogId}`;\n          actionParams = { data: RDFdata, token: rtpToken, url: uploadUrl };\n          actionName = 'auth/createDataset';\n        }\n        else {\n          // if edit mode and draft: publish user draft (remove from draft database and add to dataset database)-> publishUserDraftById\n          actionParams = { id: datasetId, catalog: catalogId };\n          actionName = 'auth/publishUserDraftById';\n        }\n\n      } else if (mode === 'draft') {\n        //if no edit mode: save draft regularly\n        // if edit mode and draft: save draft regularly\n        if (!this.getIsEditMode || (this.getIsEditMode && this.getIsDraft)) {\n          uploadUrl = `${this.$env.api.hubUrl}drafts/datasets/${datasetId}?catalogue=${catalogId}`;\n          actionName = 'auth/createUserDraft';\n        } else {\n          // if edit mode and no draft: save dataset as draft (remove from dataset database and add to draft database)-> putDatasetToDraft\n          actionParams = { id: datasetId, catalog: catalogId, title, description };\n          actionName = 'auth/putDatasetToDraft';\n        }\n\n      } else if (mode === 'createcatalogue') {\n        uploadUrl = `${this.$env.api.hubUrl}catalogues/${datasetId}`;\n        actionParams = { data: RDFdata, token: rtpToken, url: uploadUrl, id: datasetId };\n        actionName = 'auth/createCatalogue';\n      }\n\n      try {\n        // Dispatch the right action depending on the mode\n\n        const idIsUnqiue = this.idunique(datasetId);\n\n        if (idIsUnqiue) {\n          await this.$store.dispatch(actionName, actionParams);\n          // await new Promise(resolve => setTimeout(resolve, 250));\n\n          this.$Progress?.finish();\n          this.uploading[mode] = false;\n\n          if (mode === 'createcatalogue') this.createCatalogue(datasetId);\n          if (mode === 'dataset') this.createDataset(datasetId);\n          if (mode === 'draft') this.createDraft();\n\n          // store needs to be reset\n          this.clearAll();\n        }\n        else {\n          this.uploading[mode] = false;\n          this.$Progress?.fail();\n          this.handleIDError();\n        }\n      } catch (err) {\n        console.error(err)\n        this.uploading[mode] = false;\n        this.$Progress?.fail();\n        this.showSnackbar({ message: 'Network Error', variant: 'error' });\n      }\n    },\n    createDataset(datasetId) {\n      this.clearAll();\n      this.showSnackbar({ message: this.$t('message.dataupload.snackBar.datasetPublished'), variant: 'success' });\n      // this.$router.push({ name: 'DatasetDetailsDataset', params: { ds_id: datasetId }, query: { locale: this.$route.query.locale } }).catch(() => { });\n      this.$router\n        .push({ name: 'DatasetDetailsDataset', params: { ds_id: datasetId }, query: { locale: this.$route.query.locale } })\n        .then(() => { this.$router.go(0) })\n    },\n    createDraft() {\n      this.clearAll();\n      this.showSnackbar({ message: this.$t('message.dataupload.snackBar.draftCreated'), variant: 'success' });\n      this.$router.push({ name: 'DataProviderInterface-Draft', query: { locale: this.$route.query.locale } }).catch(() => { });\n    },\n    createCatalogue(datasetId) {\n      this.clearAll();\n      this.showSnackbar({ message: this.$t('message.dataupload.snackBar.catalogPublished'), variant: 'success' });\n      this.$router.push({ name: 'CatalogueDetails', query: { locale: this.$route.query.locale }, params: { ctlg_id: datasetId } }).catch(() => { });\n    },\n    async idunique(id) {\n      let isUniqueID = true;\n\n      const draftIDs = this.$store.getters['auth/getUserDraftIds'];\n\n      new Promise(() => {\n        if (isNil(id) || id === '' || id === undefined) isUniqueID = true;\n        else if (draftIDs.includes(id)) isUniqueID = false;\n        else {\n          const request = `${this.$env.api.hubUrl}datasets/${id}?useNormalizedId=true`;\n          axios.head(request)\n            .then(() => {\n              isUniqueID = false;\n            })\n            .catch((e) => {\n              isUniqueID = true;\n            });\n        }\n      });\n      return isUniqueID\n    }\n  },\n  setup() {\n    const dpiContext = useDpiContext()\n    return { dpiContext }\n  }\n};\n</script>\n\n<style lang=\"scss\">\n// @import '../../../styles/bootstrap_theme';\n// @import '../../../styles/utils/css-animations';</style>\n"],"names":["_sfc_main","getCurrentInstance","x","y","useWindowScroll","mapGetters","errorCount","key","mapActions","$","datasetId","mode","_a","specification","RDFdata","response","rtpToken","title","description","catalogId","_b","uploadUrl","actionName","actionParams","_c","_d","err","_e","id","isUniqueID","draftIDs","isNil","request","axios","e","useDpiContext","_hoisted_2","_hoisted_3","_createElementBlock","_createElementVNode","_hoisted_1","$props","_createBlock","_component_FormKit","_ctx","_createVNode","$options","$data","_openBlock","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_component_app_confirmation_dialog","_createTextVNode","_toDisplayString"],"mappings":"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"}