{"version":3,"file":"DatasetDetailsSubject.vue.mjs","sources":["../../../lib/datasetDetails/features/DatasetDetailsSubject.vue"],"sourcesContent":["<template>\n  <div class=\"mt-2 flex-column dsd-feature\">\n    <div>\n      <dataset-details-feature-header\n        :title=\"`EuroVoc Descriptors (${\n          getSubject ? getSubject.length.toLocaleString('fi') : 0\n        })`\"\n        :arrowDown=\"!expanded\"\n        tag=\"keywords-toggle\"\n        :onClick=\"toggleExpanded\"\n        class=\"ml-0\"\n      />\n    </div>\n    <div v-if=\"expanded\" class=\"keywords__item row mt-4\">\n      <span\n        v-for=\"(subject, i) in displayedSubjects\"\n        :key=\"i\"\n        class=\"col-6 col-sm-3 col-md-2 mt-md-0 mt-3 mb-2 mx-0 px-1\"\n      >\n        <app-link :to=\"getSubjectLink(subject)\">\n          <small\n            v-if=\"typeof subject.title === 'object'\"\n            class=\"d-inline-block w-100 py-2 rounded-pill text-center d-inline-block text-nowrap w-100 py-2 rounded-pill text-center text-white tag-color\"\n          >\n            <span v-for=\"(value, key) in subject.title\" :key=\"key\">\n              <tooltip :title=\"value\" data-placement=\"top\">\n                {{ truncate(value, maxSubjectLength, false) }}\n              </tooltip>\n            </span>\n          </small>\n          <small\n            v-else-if=\"typeof subject.title === 'string'\"\n            class=\"d-inline-block w-100 py-2 rounded-pill text-cente d-inline-block text-nowrap w-100 py-2 rounded-pill text-center text-white tag-color\"\n          >\n            <span>\n              <tooltip :title=\"subject.title\" data-placement=\"top\">\n                {{ truncate(subject.title, maxSubjectLength, false) }}\n              </tooltip>\n            </span>\n          </small>\n        </app-link>\n      </span>\n    </div>\n    <div v-if=\"expanded && displayedSubjects.length > defaultDisplayCount\">\n      <pv-show-more\n        :label=\"isSubjectAllDisplayed ? $t('message.metadata.showLess') : $t('message.metadata.showMore')\"\n        :upArrow=\"isSubjectAllDisplayed\"\n        :action=\"toggleDisplayCount\"\n        class=\"row text-primary\"\n      />\n    </div>\n  </div>\n</template>\n\n<script>\nimport { truncate } from \"../../utils/helpers\";\nimport { has } from \"lodash\";\nimport { mapGetters } from \"vuex\";\nimport Tooltip from \"../../widgets/Tooltip\";\nimport AppLink from \"../../widgets/AppLink\";\nimport { sortAlphabetically } from \"./utils/sortAlphabetically\";\nimport $ from \"jquery\";\n\nexport default {\n  name: \"DatasetDetailsSubject\",\n  components: { Tooltip, AppLink },\n  data() {\n    return {\n      showTitle: this.$env.content.datasetDetails.keywords.showTitle,\n      maxSubjectLength: this.$env.content.datasets.maxKeywordLength,\n      defaultDisplayCount: 24,\n      followSubjectLinks: this.$env.content.datasets.followSubjectLinks,\n      expanded: false, // Toggle state\n      subject: {\n        displayAll: false,\n        displayCount: 24,\n        incrementSteps: [12, 60],\n      },\n    };\n  },\n  computed: {\n    ...mapGetters(\"datasetDetails\", [\"getSubject\"]),\n    displayedSubjects() {\n      const subjects = this.subject.displayAll\n        ? Object.freeze(this.sortedSubject)\n        : Object.freeze(this.sortedSubject.slice(0, this.subject.displayCount));\n      return subjects.filter((subject) => subject.title);\n    },\n    isSubjectAllDisplayed() {\n      return this.subject.displayCount >= this.displayedSubjects.length;\n    },\n    sortedSubject() {\n      let selected = [];\n      const selectedLanguage = this.$route.query.locale;\n      this.getSubject.forEach((element) => {\n        if (has(element, \"title\") && element.title !== null) {\n          if (typeof element.title === \"object\") {\n            Object.keys(element.title).forEach((key) => {\n              if (key !== selectedLanguage) {\n                delete element.title[key];\n              }\n            });\n          }\n          selected.push(element);\n        }\n      });\n      this.sortAlphabetically(selected, \"title\", selectedLanguage);\n      return selected;\n    },\n  },\n  methods: {\n    truncate,\n    sortAlphabetically,\n    toggleDisplayCount() {\n      $('body').tooltip({ selector: '[data-toggle=\"tooltip\"]' });\n      if (this.subject.displayCount < this.getSubject.length) {\n        this.subject.displayCount = this.getSubject.length;\n      } else {\n        this.subject.displayCount = this.defaultDisplayCount;\n      }\n      this.subject.displayAll = !this.subject.displayAll;\n    },\n    toggleExpanded() {\n      this.expanded = !this.expanded; // Toggle visibility\n    },\n    getSubjectLink(subject) {\n      const urlResource = subject.id;\n      return {\n        path: `/datasets`,\n        query: {\n          locale: this.$route.query.locale,\n          subject: urlResource,\n        },\n      };\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n.subject {\n  background-color: #196fd2;\n}\n\n.keywords-header {\n  justify-content: flex-start; /* Aligned header to the left */\n}\n\n.keywords-header .keywords-toggle {\n  margin-left: 0; /* The toggle header is on the left */\n}\n</style>\n"],"names":["_sfc_main","Tooltip","AppLink","mapGetters","subject","selected","selectedLanguage","element","has","key","truncate","sortAlphabetically","$","urlResource","_hoisted_1","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_component_dataset_details_feature_header","_ctx","$data","$options","_hoisted_2","_Fragment","_renderList","i","_component_app_link","_hoisted_3","value","_component_tooltip","_hoisted_4","_createTextVNode","_toDisplayString","_hoisted_5","_component_pv_show_more"],"mappings":"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"}