{"version":3,"file":"CataloguesFacets.vue.mjs","sources":["../../../lib/catalogues/cataloguesFacets/CataloguesFacets.vue"],"sourcesContent":["<template>\n  <div class=\"container catalog-facets\">\n    <div class=\"row mx-3 mr-md-0\">\n      <div class=\"col\">\n        <catalog-details-facet class=\"catalog-details\" :catalog=\"superCatalog\"\n          :catalogLanguageIds=\"catalogLanguageIds\" />\n        <span v-if=\"showFacetsTitle\" class=\"row h5 font-weight-bold mt-4 mb-3\">Filter by</span>\n        <settings-facet v-if=\"!showCatalogDetails\" class=\"row facet-field mb-3\" />\n        <div class=\"row facet-field mb-3\" v-for=\"(field, index) in getSortedFacets\" :key=\"`facet@${index}`\"\n          :class=\"{ 'mt-3': (index > 0) }\">\n          <radio-facet v-if=\"field.id === 'superCatalog'\" :title=\"erpd.title\" :property=\"erpd.property\"\n            :toolTipTitle=\"erpd.toolTipTitle\" :optionIds=\"['true', 'false']\" :optionLabels=\"[erpd.yes, erpd.no]\"\n            :initialOption=\"isErpd()\" :change=\"changeErpd\" />\n          <select-facet v-if=\"field.id !== 'superCatalog'\" :fieldId=\"field.id\" :header=\"facetTitle(field.id)\"\n            :items=\"sortByCount(field.items, field.id)\" :getFacetTranslationWrapper=\"getFacetTranslation\"\n            :facetIsSelected=\"facetIsSelected\" :facetClicked=\"facetClicked\" :multiSelect=\"field.id !== 'scoring'\"\n            class=\"col pr-0\" />\n        </div>\n        <pv-show-more v-if=\"showMoreFacetsShown\"\n          :label=\"cutoff >= 0 ? $t('message.datasetFacets.moreFilters') : $t('message.datasetFacets.lessFilters')\"\n          :upArrow=\"cutoff === -1\" :action=\"toggleCutoff\" class=\"p-0 row facets-show-more\" />\n        <pv-button v-if=\"showClearButton\" label=\"Clear filters\" class=\"row mt-5 facets-clear\" :action=\"clearFacets\" />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapActions, mapGetters } from 'vuex';\nimport {\n  isEmpty,\n  isBoolean,\n  has,\n  isNil,\n  isArray\n} from 'lodash';\nimport DatasetsFacetsItem from '../../datasets/datasetsFacets/DatasetsFacetsItem.vue';\nimport { getTranslationFor, getCountryFlagImg, getFacetTranslation } from '../../utils/helpers';\nimport SettingsFacet from \"../../datasets/datasetsFacets/SettingsFacet\";\nimport CatalogDetailsFacet from '../../facets/CatalogDetailsFacet.vue'\n\nexport default {\n  name: 'catalogueFacets',\n  components: {\n    SettingsFacet,\n    DatasetsFacetsItem,\n    CatalogDetailsFacet\n  },\n  dependencies: ['catalogService'],\n  data() {\n    return {\n      cutoff: this.$env.content.catalogs.facets.cutoff,\n      showClearButton: this.$env.content.catalogs.facets.showClearButton,\n      showFacetsTitle: this.$env.content.catalogs.facets.showFacetsTitle,\n      showCatalogDetails: false,\n      superCatalog: {},\n      browser: {\n        /* eslint-disable-next-line */\n        isIE: /*@cc_on!@*/false || !!document.documentMode,\n      },\n      defaultFacetOrder: this.$env.content.catalogs.facets.defaultFacetOrder,\n      MIN_FACET_LIMIT: this.$env.content.catalogs.facets.MIN_FACET_LIMIT,\n      MAX_FACET_LIMIT: this.$env.content.catalogs.facets.MAX_FACET_LIMIT,\n      FACET_OPERATORS: this.$env.content.catalogs.facets.FACET_OPERATORS,\n      FACET_GROUP_OPERATORS: this.$env.content.catalogs.facets.FACET_GROUP_OPERATORS,\n      erpd: {\n        yes: this.i18n.global.t('message.metadata.yes'),\n        no: this.i18n.global.t('message.metadata.no'),\n        property: this.i18n.global.t('message.datasetFacets.facets.erpdOnly'),\n        title: this.i18n.global.t('message.datasetFacets.facets.erpd'),\n        // toolTipTitle: \"TOOLTIP\",//this.i18n.global.t('message.helpIcon.dataServices'),\n      }\n    };\n  },\n  computed: {\n    ...mapGetters('catalogDetails', [\n      'getCatalog',\n    ]),\n    ...mapGetters('catalogs', [\n      'getAvailableFacets',\n      'getCatalogsCount',\n      'getFacetOperator',\n      'getFacetGroupOperator',\n      'getLimit',\n      'getPage',\n      'getFacets',\n    ]),\n    facetOperatorWatcher() {\n      return this.getFacetOperator;\n    },\n    facetGroupOperatorWatcher() {\n      return this.getFacetGroupOperator;\n    },\n    showMoreFacetsShown() {\n      return this.$env.content.catalogs.facets.cutoff > 0 && this.$env.content.catalogs.facets.cutoff < this.getAvailableFacets.length;\n    },\n    getSortedFacets() {\n      const availableFacets = this.getAvailableFacets;\n      const sortedFacets = [];\n\n      this.defaultFacetOrder.forEach((facet) => {\n        availableFacets.forEach((field) => {\n          if (facet === field.id && field.items.length > 0) sortedFacets.push(field);\n        });\n      });\n\n      return sortedFacets;\n    },\n    // Returns the current catalog's available language ids\n    // example: ['en', 'de', 'sv']\n    catalogLanguageIds() {\n      const languages = this.getCatalog && this.getCatalog.languages;\n      if (!isArray(languages)) return [];\n      return languages\n        .map(lang => lang && lang.id)\n        .filter(lang => lang);\n    }\n  },\n  methods: {\n    isEmpty,\n    isBoolean,\n    has,\n    isNil,\n    getFacetTranslation,\n    getCountryFlagImg,\n    getTranslationFor,\n    ...mapActions('catalogDetails', [\n      'loadCatalog',\n    ]),\n    ...mapActions('catalogs', [\n      'addFacet',\n      'removeFacet',\n      'setFacetOperator',\n      'setFacetGroupOperator',\n      'setPage',\n      'setPageCount',\n    ]),\n    /**\n     * @description Sorts an array of facets by their count.\n     * @param {Array<Object>} facets - The facets to sort\n     * @param {Number} facet.count - The amount of catalogs having this facet assigned\n     * @param {String} facet.name - The name of this facet\n     * @returns {Array<Object>}\n     */\n    toggleCutoff() {\n      this.cutoff = this.cutoff >= 0 ? -1 : this.$env.content.datasets.facets.cutoff;\n    },\n    sortByCount(facets, fieldId) {\n      if (fieldId === 'scoring') return facets;\n      return facets.slice().sort((a, b) => {\n        const n = b.count - a.count;\n        if (n !== 0) return b.count - a.count;\n        if (a.name < b.name) return -1;\n        return 1;\n      });\n    },\n    facetTitle(fieldId) {\n      if (fieldId === 'scoring'){\n        return this.i18n.global.t('message.header.navigation.data.metadataquality')\n      }else if (fieldId === 'country'){\n        return this.i18n.global.t(`message.datasetFacets.facets.origin`)\n      }else {\n        return this.i18n.global.t(`message.datasetFacets.facets.${fieldId.toLowerCase()}`);\n      }\n      // return fieldId === 'scoring' ?\n      // this.i18n.global.t('message.header.navigation.data.metadataquality')\n      //   : this.i18n.global.t(`message.datasetFacets.facets.${fieldId.toLowerCase()}`);\n    },\n    /**\n     * @description Returns whether a facet is selected or not.\n     * @param field - The field of the facet to check.\n     * @param facet - The facet to check.\n     * @returns {boolean}\n     */\n    facetIsSelected(field, item) {\n      const facet = item.id;\n      if (!Object.prototype.hasOwnProperty.call(this.$route.query, field)) {\n        return false;\n      }\n      let qField = this.$route.query[field];\n      if (!Array.isArray(qField)) qField = [qField];\n      return qField.indexOf(facet) > -1;\n    },\n    /**\n     * @description Wrapping callback-function for a click on a facet.\n     * @param field - The field of the clicked facet\n     * @param facet - The clicked facet\n     */\n    facetClicked(field, item) {\n      const facet = item.id;\n      this.toggleFacet(field, facet);\n      // this.resetPage();\n    },\n    clearFacets() {\n      if (Object.keys(this.$route.query).some(key => (key !== 'locale' && key !== 'page') && this.$route.query[key].length)) {\n        this.$router.push({ query: { locale: this.$i18n.locale, page: \"1\" } })\n          .catch(error => { console.error(error); });\n      }\n    },\n    /**\n     * @description Add/Remove a facet from the routers query parameters.\n     * @param field - The field of the facet\n     * @param facet - The given facet\n     */\n    toggleFacet(field, facet) {\n      if (!Object.prototype.hasOwnProperty.call(this.$route.query, [field])) {\n        this.$router.push({ query: Object.assign({}, this.$route.query, { [field]: [] }) });\n      }\n      let facets = this.$route.query?.[field]?.slice();\n      if (!facets) facets = [];\n      if (!Array.isArray(facets)) facets = [facets];\n      const index = facets.indexOf(facet);\n      if (index > -1) {\n        facets.splice(index, 1);\n      } else {\n        facets.push(facet);\n      }\n      this.$router.push({ query: Object.assign({}, this.$route.query, { [field]: facets, page: 1 }) });\n    },\n    changeFacetOperator(op) {\n      this.setFacetOperator(op);\n      this.setFacetGroupOperator(op);\n    },\n    isErpd() {\n      const superCatalogs = this.$route.query?.superCatalog;\n      const superCatalog = (superCatalogs && superCatalogs.constructor === Array) ? superCatalogs[0] : superCatalogs;\n      return superCatalog === 'erpd' ?  'true' : 'false';\n    },\n    changeErpd(erpd) {\n      const erdpCatalog = 'erpd';\n      const superCatalogs = this.$route.query?.superCatalog;\n      const superCatalog = superCatalogs && superCatalogs.constructor === Array ? superCatalogs[0] : superCatalogs;\n      if ((erpd === 'false' && superCatalog === erdpCatalog) || (erpd === 'true' && superCatalog !== erdpCatalog)) {\n        if (superCatalog === erdpCatalog) {\n          delete this.$route.query.showsubcatalogs;\n        }\n        this.toggleFacet('superCatalog', erdpCatalog);\n      }\n    },\n    /**\n     * @description Toggles the facetoperator between 'or'/'and'.\n     */\n    toggleFacetGroupOperator() {\n      let op = this.getFacetGroupOperator;\n      op = op === this.FACET_GROUP_OPERATORS.and ? this.FACET_GROUP_OPERATORS.or : this.FACET_GROUP_OPERATORS.and;\n      this.setFacetGroupOperator(op);\n    },\n    resetPage() {\n      this.$router.replace({ query: Object.assign({}, this.$route.query, { page: 1 }) });\n    },\n    triggerResize() {\n      // Note: Trigger resize after 200ms when Modal element is visible to properly display the map component\n      setTimeout(() => {\n        window.dispatchEvent(new Event('resize'));\n      }, 200);\n    },\n    getFacetCount(field, facet) {\n      if (field.id === 'scoring') return '';\n      return facet.count;\n    }\n  },\n  watch: {\n    facetOperatorWatcher: {\n      handler(facetOperator) {\n        this.$router.replace({ query: Object.assign({}, this.$route.query, { facetOperator }) });\n      },\n    },\n    facetGroupOperatorWatcher: {\n      handler(facetGroupOperator) {\n        this.$router.replace({ query: Object.assign({}, this.$route.query, { facetGroupOperator }) });\n      },\n    },\n    getCatalog(catalog) {\n      this.superCatalog = catalog;\n    }\n  },\n  created() {\n    if (this.$route.query.showsubcatalogs) {\n      const superCatalogUrl = this.$route.query.superCatalog;\n      if (typeof superCatalogUrl === 'string') {\n        const catalogId = superCatalogUrl.substring(superCatalogUrl.lastIndexOf('/') + 1);\n        this.loadCatalog(catalogId)\n          .then(result => {\n                // console.log(\"HELLLLO\", result)\n              }\n          )\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.facet:hover {\n  cursor: pointer;\n}\n\n.custom-control {\n  padding-left: 1.5rem;\n  margin-right: 1rem;\n}\n\n.custom-control-label {\n  &::before {\n    left: -1.5rem !important;\n  }\n\n  &::after {\n    left: -1.5rem !important;\n  }\n}\n\n.custom-control-input:checked~.custom-control-label::before {\n  border-color: var(--primary);\n  background-color: var(--primary);\n}\n\n.map {\n  z-index: 0;\n}\n\n.suggestion-input-group {\n  position: relative;\n}\n\n.suggestion-input {\n  position: absolute;\n  top: 0;\n}\n\n.suggestion-list-group {\n  position: relative;\n  width: 100%;\n}\n\n.suggestion-list {\n  width: 100%;\n  position: absolute;\n  top: 0;\n  z-index: 100;\n}\n\n.map-modal-button {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n}\n\n.reset-bounds-button {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n}\n\n#modal-map-wrapper {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n</style>\n"],"names":["_sfc_main","SettingsFacet","DatasetsFacetsItem","CatalogDetailsFacet","mapGetters","availableFacets","sortedFacets","facet","field","languages","isArray","lang","isEmpty","isBoolean","has","isNil","getFacetTranslation","getCountryFlagImg","getTranslationFor","mapActions","facets","fieldId","b","item","qField","key","error","_b","_a","index","op","superCatalogs","erpd","erdpCatalog","superCatalog","facetOperator","facetGroupOperator","catalog","superCatalogUrl","catalogId","result","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_component_catalog_details_facet","$data","$options","_hoisted_4","_createBlock","_component_settings_facet","_Fragment","_renderList","_normalizeClass","_component_radio_facet","_component_select_facet","_component_pv_show_more","_ctx","_component_pv_button"],"mappings":"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"}