{"version":3,"file":"DatasetDetailsProperty.vue.mjs","sources":["../../../lib/datasetDetails/properties/DatasetDetailsProperty.vue"],"sourcesContent":["<template>\n  <tr v-if=\"show\">\n    <td class=\"w-25 text-break font-weight-bold\">\n      <tooltip :title=\"labelDisplay[0]\">\n        {{ labelDisplay[1] }}\n      </tooltip>\n    </td>\n    <td\n      v-if=\"\n        ['string', 'date', 'number', 'first:number', 'translation'].includes(\n          type\n        )\n      \"\n    >\n      {{ value }}\n    </td>\n    <td v-if=\"type === 'uri'\">\n      <a :href=\"value\">{{ value }}</a>\n    </td>\n    <td v-if=\"type === 'links'\">\n      <div v-for=\"(v, i) of value\" :key=\"i\">\n        <div v-if=\"name === 'identifiers'\">{{ v.label }}</div>\n        <app-link\n          v-if=\"!isNil(v) && v.link && name !== 'languages' && name != 'identifiers'\"\n          :to=\"v.link\"\n          >{{ truncate(v.label, 75) }}</app-link\n        >\n        <div v-if=\"(!isNil(v) && !v.link) || name === 'languages' && name != 'identifiers'\">\n          {{ truncate(v.label, 75) }}\n        </div>\n      </div>\n    </td>\n    <td v-if=\"type === 'object'\">\n      <values-list\n        :values=\"value\"\n        :interpretTranslateKey=\"interpretTranslateKey\"\n        :itemstyles=\"itemstyles\"\n      />\n    </td>\n    <td v-if=\"type === 'objects'\">\n      <div v-for=\"(item, i) of value\" :key=\"i\">\n        <values-list\n          :values=\"item\"\n          :interpretTranslateKey=\"interpretTranslateKey\"\n          :itemstyles=\"itemstyles\"\n        />\n      </div>\n    </td>\n  </tr>\n</template>\n\n<script>\nimport AppLink from \"../../widgets/AppLink\";\nimport Tooltip from \"../../widgets/Tooltip\";\nimport { isNil, isArray } from \"lodash\";\nimport { showByType } from \"./typeCheckers.ts\";\nimport ValuesList from \"./ValuesList\";\nimport { mapGetters } from \"vuex\";\nimport dateFilters from \"../../filters/dateFilters.ts\";\nimport { truncate, getTranslationFor } from \"../../utils/helpers\";\n\nexport default {\n  name: \"DatasetDetailsProperty\",\n  props: {\n    type: String, // Can be any of the types recognized in typeCheckers.ts\n    translate: String | Array, // i18n key for the tooltip and label string values (if not given, name is used!)\n    name: String, // Key to extract the value from the Datasets store\n    propertyFields: String, // Comma-separated keys for extracting data from an object\n    itemstyles: String, // Styles to apply to an object key-value block\n    track: String, // Comma-separated keys for tracking\n    preTransform: Function, // Transform raw data from dataset service\n    transform: Function, // Transform data after preparing by this.value\n  },\n  components: {\n    Tooltip,\n    AppLink,\n    ValuesList,\n  },\n  computed: {\n    ...mapGetters(\"datasetDetails\", [\"getProperty\"]),\n    labelDisplay() {\n      const prefix = [\"message.tooltip.datasetDetails\", \"message.metadata\"];\n      let translateItems;\n      if (this.translate) {\n        translateItems = this.translate.split(\",\");\n        if (translateItems.length === 1) {\n          translateItems.push(translateItems[0]);\n        }\n      } else {\n        translateItems = [this.name, this.name];\n      }\n      return translateItems.map((item, i) =>\n        this.interpretTranslateKey(item, prefix[i])\n      );\n    },\n    data() {\n      let d = this.getProperty(this.name);\n      if (this.name === \"languages\") {\n        d.sort((a, b) => {\n          if (a.id < b.id) return -1;\n          if (a.id > b.id) return 1;\n          return 0;\n        });\n      }\n      return d;\n    },\n    preparedFields() {\n      return this.propertyFields?.split(\",\").map((field) => field.split(\":\"));\n    },\n    preparedTrack() {\n      return this.track?.split(\",\");\n    },\n    value() {\n      let v = this.data;\n      if (this.preTransform) v = this.preTransform(v);\n      switch (this.type) {\n        case \"date\":\n          v = dateFilters.formatEU(v);\n          break;\n        case \"links\":\n          v = this.data.map((item) => {\n            if (item) {\n              const link = typeof item === \"string\" ? item : item.resource;\n              const label =\n                typeof item === \"string\"\n                  ? item\n                  : item.label || item.id || item.resource;\n              return { link, label };\n            }\n          });\n          break;\n        case \"object\":\n          v = this.prepareObject(this.data);\n          break;\n        case \"objects\":\n          v = this.data.map((item) => {\n            return this.prepareObject(item);\n          });\n          break;\n        case \"translation\":\n          v = this.getTranslationFor(v, this.$route.query.locale, [\"en\"]);\n          break;\n        default:\n          if (this.type.startsWith(\"first\")) {\n            v = this.data[0];\n          }\n      }\n      if (this.transform) v = this.transform(v);\n      return v;\n    },\n    show() {\n      return showByType(this.type, this.data);\n    },\n  },\n  methods: {\n    isNil,\n    isArray,\n    truncate,\n    getTranslationFor,\n    dateValue() {\n      return dateFilters.formatEU(this.value);\n    },\n    prepareObject(object) {\n      // Because this.fields can contain \":\" signs that split a key into an array,\n      // we also transform the keys in the case this.fields is undefined into arrays:\n      let keys = this.preparedFields ?? Object.keys(object).map((key) => [key]);\n\n      // Now key[0] holds the actual key in all cases. Check if the value given\n      // For a key is undefined and filter them out:\n      keys = keys.filter((key) => !isNil(object[key[0]]));\n\n      return keys.map((key) => {\n        let value = object[key[0]];\n\n        // Values can be arrays for displaying several values. For uniform treatment,\n        // transform single values into arrays of length 1:\n        if (!isArray(value)) value = [value];\n\n        // First step: an object holding key and value:\n        const result = { key: key[0], value };\n\n        // Enrich the object when appropriate:\n        if (key[1] !== undefined) result.type = key[1];\n        if (key[2] !== undefined) result.translation = key[2];\n\n        return result;\n      });\n    },\n    interpretTranslateKey(key, prefix) {\n      // console.log(key);\n\n      if (key === \"\") return \"\";\n      if (key.startsWith(\"/\"))\n        return `${this.i18n.global.t(key.substring(1))}:`;\n      if (key.startsWith(\"'\")) return key.substring(1, key.length - 1);\n      return `${this.i18n.global.t(`${prefix}.${key}`)}:`;\n    },\n  },\n};\n</script>\n\n<style scoped>\ntr {\n  width: 100%;\n}\n.w-25 {\n  min-width: 160px;\n}\n</style>\n"],"names":["_sfc_main","Tooltip","AppLink","ValuesList","mapGetters","prefix","translateItems","item","i","d","a","b","_a","field","v","dateFilters","link","label","showByType","isNil","isArray","truncate","getTranslationFor","object","keys","key","value","result","_hoisted_2","$options","_createElementBlock","_hoisted_1","_createElementVNode","_createVNode","_component_tooltip","$props","_openBlock","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","_hoisted_7","_toDisplayString","_createBlock","_component_app_link","_hoisted_8","_hoisted_9","_component_values_list","_hoisted_10"],"mappings":"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"}