{"version":3,"file":"DatasetDetailsSimilarDatasets.vue.mjs","sources":["../../lib/datasetDetails/DatasetDetailsSimilarDatasets.vue"],"sourcesContent":["<template>\n  <div class=\"mt-3\">\n    <div class=\"row\">\n      <div class=\"col-10 offset-1\">\n        <h2>{{ $t('message.datasetDetails.subnav.similarDatasets') }}</h2>\n        <div class=\"loading-spinner mx-auto\" v-if=\"!similarDatasetsFetched\"></div>\n        <p v-if=\"!similarDatasetsPresent && similarDatasetsFetched\">{{ $t('message.similarDatasets.notFound') }}</p>\n        <div class=\"mt-4\" v-if=\"similarDatasetsPresent && similarDatasetsFetched\">\n          <div v-for=\"(similarDataset, i) in similarDatasets\" :key=\"i\">\n            <div class=\"mt-3 border-bottom border-secondary\">\n              <app-link v-if=\"has(similarDataset, 'uri')\" class=\"text-dark font-weight-bold\" :to=\"similarDatasetLink(similarDataset.uri)\">\n                <h3>{{ getTranslationFor(similarDataset.title, $route.query.locale, getLanguages) }}</h3>\n              </app-link>\n              <p class=\"text-muted text-truncate\">\n                <small>{{ getTranslationFor(similarDataset.description, $route.query.locale, getLanguages) }}</small>\n              </p>\n              <div class=\"mb-3\">\n                <PvBadge v-if=\"showSimilarbadge(similarDataset.similarity, 'verySimilar')\" class=\"p-1 ml-1 badge-success text-center text-white\" :value=\"{ label: $t('message.similarDatasets.verySimilar') }\"></PvBadge>\n                <PvBadge v-else-if=\"showSimilarbadge(similarDataset.similarity, 'similar')\" class=\"p-1 ml-1 badge-info text-center text-white\" :value=\"{ label: $t('message.similarDatasets.similar') }\"></PvBadge>\n                <PvBadge v-else-if=\"showSimilarbadge(similarDataset.similarity, 'lessSimilar')\" class=\"p-1 ml-1 badge-warning text-center text-white\" :value=\"{ label: $t('message.similarDatasets.lessSimilar') }\"></PvBadge>\n                <PvBadge v-else class=\"p-1 ml-1 badge-secondary text-center text-white\" :value=\"{ label: $t('message.similarDatasets.marginalSimilar') }\"></PvBadge>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\n  import { mapActions, mapGetters } from 'vuex';\n  import { has } from 'lodash-es';\n  import { getTranslationFor, appendCurrentLocaleToURL } from '../utils/helpers';\n  import AppLink from '../widgets/AppLink.vue';\n  import * as metaInfo from '../composables/head';\n  import PvBadge from \"../PvBadge/PvBadge.vue\";\n\n  export default {\n    name: 'datasetDetailsSimilarDatasets',\n    components: {\n      PvBadge,\n      AppLink\n    },\n    data() {\n      return {\n        similarDatasetsFetched: false,\n        similarDatasetsPresent: false,\n        breakpoints: this.$env.content.datasetDetails.similarDatasets.breakpoints,\n        useSimilarDatasets: this.$env.content.datasetDetails.similarDatasets.useSimilarDatasets,\n      };\n    },\n    computed: {\n      // import store-getters\n      ...mapGetters('datasetDetails', [\n        'getID',\n        'getLanguages',\n        'getSimilarDatasetsRequested',\n        'getSimilarDatasets',\n        'getTitle',\n        'getDescription'\n      ]),\n      similarDatasets() {\n        return this.getSimilarDatasets;\n      },\n    },\n    methods: {\n      // import store-actions\n      ...mapActions('datasetDetails', [\n        'loadDatasetDetails',\n        'loadSimilarDatasets',\n        'loadSimilarDatasetDetails',\n      ]),\n      has,\n      appendCurrentLocaleToURL,\n      getTranslationFor,\n      /**\n       * Update all similar datasets by adding title and description\n       */\n      updateSimilarDatasets() {\n        this.similarDatasets.forEach(this.getDatasetDetails);\n      },\n      /**\n       * Get dataset details by id\n       */\n      getDatasetDetails(similarDataset) {\n        this.loadSimilarDatasetDetails(similarDataset.id);\n      },\n      showSimilarbadge(similarity, similarType) {\n        return similarity >= this.breakpoints[similarType].start && similarity < this.breakpoints[similarType].end;\n      },\n      similarDatasetLink(url) {\n        const idIndex = url.lastIndexOf('/') + 1;\n        const id = url.substring(idIndex);\n        return \"../\" + id + `?locale=${this.$route.query.locale}`;\n      }\n    },\n    created() {\n      this.$nextTick(() => {\n        if (this.useSimilarDatasets) {\n          // Duplicated API call, execute only if data not already loaded\n          if (this.$route.params.ds_id !== this.getID) {\n            this.$Progress.start();\n            this.loadDatasetDetails(this.$route.params.ds_id)\n              .then(() => {\n                this.loadSimilarDatasets(this.$route.params.ds_id)\n                  .then((response) => {\n                    this.$nextTick(() => {\n                      this.updateSimilarDatasets();\n                      this.similarDatasetsFetched = true;\n                      this.similarDatasetsPresent = response.length > 0;\n                    });\n                    this.$Progress.finish();\n                  })\n                  .catch(() => {\n                    this.similarDatasetsFetched = true;\n                    this.$Progress.fail();\n                  });\n              })\n              .catch(() => {\n                this.$Progress.fail();\n                this.$router.replace({\n                  name: 'NotFound',\n                  query: { locale: this.$route.query.locale, dataset: this.$route.params.ds_id },\n                });\n              });\n          } else {\n            // Duplicated API call, execute only if data not already loaded\n            if (this.$route.params.ds_id !== this.getSimilarDatasetsRequested) {\n              this.loadSimilarDatasets(this.$route.params.ds_id)\n                .then((response) => {\n                  this.$nextTick(() => {\n                    this.updateSimilarDatasets();\n                    this.similarDatasetsFetched = true;\n                    this.similarDatasetsPresent = response.length > 0;\n                  });\n                  this.$Progress.finish();\n                })\n                .catch(() => {\n                  this.similarDatasetsFetched = true;\n                  this.$Progress.fail();\n                });\n            } else {\n              this.updateSimilarDatasets();\n              this.similarDatasetsFetched = true;\n              this.similarDatasetsPresent = this.similarDatasets.length > 0;\n            }\n          }\n        }\n      });\n    },\n    setup() {\n      metaInfo.useDatasetDetailsSimilarDatasetsHead();\n    }\n  };\n</script>\n\n"],"names":["_sfc_main","PvBadge","AppLink","mapGetters","mapActions","has","appendCurrentLocaleToURL","getTranslationFor","similarDataset","similarity","similarType","url","idIndex","response","metaInfo.useDatasetDetailsSimilarDatasetsHead","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_7","_hoisted_8","_hoisted_9","_openBlock","_createElementBlock","_createElementVNode","_ctx","$data","_hoisted_4","_hoisted_6","_Fragment","_renderList","$options","i","_createBlock","_component_app_link","_toDisplayString","_component_PvBadge"],"mappings":"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"}