{"version":3,"file":"Catalogues.vue.mjs","sources":["../../lib/catalogues/Catalogues.vue"],"sourcesContent":["<template>\n  <div class=\"container-fluid catalogs content\">\n    <h1 class=\"row col-12 page-title text-primary\">{{ $t('message.header.navigation.data.catalogs') }}</h1>\n    <div class=\"row\">\n      <catalogues-facets v-if=\"useCatalogFacets\" class=\"col-md-3 col-12 mb-3 mb-md-0 px-0\"></catalogues-facets>\n      <section class=\"col-md col-12\">\n        <div class=\"filters-group\">\n          <div class=\"input-group\">\n            <input type=\"text\" class=\"form-control rounded-lg\"\n                  :aria-label=\"$t('message.catalogs.searchBar.placeholder')\"\n                  :placeholder=\"$t('message.catalogs.searchBar.placeholder')\"\n                  v-model=\"query\"\n                  @keyup.enter=\"changeQuery(query)\"\n                  @click=\"autocompleteData.show = autocompleteData.suggestions.length > 0 && query.length != 0 ? !autocompleteData.show : false\">\n            <div class=\"input-group-append ml-2\">\n              <button class=\"btn btn-sm btn-primary d-flex align-items-center search-button\" type=\"button\" @click=\"changeQuery(query)\">\n                <i class=\"material-icons\">search</i>\n              </button>\n            </div>\n            <div class=\"suggestion-list-group\" v-if=\"autocompleteData.show\">\n              <ul class=\"list-group suggestion-list\">\n                <button class=\"list-group-item list-group-item-action\"\n                        v-for=\"(suggestion) in autocompleteData.suggestions\"\n                        :key=\"suggestion.id\"\n                        @click=\"handleSuggestionSelection(suggestion)\">\n                  {{ getTranslationFor(suggestion.title, $route.query.locale, [suggestion.country.id].concat(suggestion.languages)) }}\n                </button>\n              </ul>\n            </div>\n          </div>\n          <ul class=\"mt-3 d-flex justify-content-between flex-wrap-reverse nav nav-tabs\" id=\"datasets-filters-tab\" role=\"tablist\">\n            <div class=\"datasets-filters-navigation d-flex cursor-pointer\">\n              <li class=\"nav-item mb-0\" role=\"tab\"\n                  :title=\"$t('message.tooltip.datasets')\"\n                  data-toggle=\"tooltip\"\n                  data-placement=\"top\"\n              >\n                <router-link\n                  :to=\"{name: 'Datasets', query: { locale: $route.query.locale }}\"\n                  class=\"nav-link router-link-inactive\"\n                  role=\"presentation\">\n                    {{ $t('message.header.navigation.data.datasets') }}\n                </router-link>\n              </li>\n              <li class=\"nav-item mb-0\"\n                  :title=\"$t('message.tooltip.catalogues')\"\n                  data-toggle=\"tooltip\"\n                  data-placement=\"top\">\n                <router-link\n                  :to=\"{name: 'Catalogues', query: { locale: $route.query.locale }}\"\n                  class=\"nav-link router-link-active\"\n                  role=\"presentation\">\n                  {{ $t('message.header.navigation.data.catalogs') }}\n                </router-link>\n              </li>\n              <li class=\"nav-item mb-0\">\n                <a\n                  :href=\"`/${this.$route.query.locale}/search?term=${query}&searchdomain=site`\"\n                  class=\"nav-link router-link-inactive\"\n                  role=\"presentation\"\n                  :title=\"$t('message.tooltip.editorialContent')\"\n                  data-toggle=\"tooltip\"\n                  data-placement=\"top\">\n                  {{ $t('message.searchTabs.editorialContent') }}\n                </a>\n              </li>\n            </div>\n            <div class=\"datasets-filters-filters btn-group mb-1 double-button\" role=\"group\" aria-label=\"Button group with nested dropdown\">\n              <button\n                type=\"button\"\n                class=\"custom-button pl-2 pr-2 border-radius-start d-flex align-items-center inactive-styles\"\n                :class=\"{'active-styles': isSortSelectedLabelActive($t('message.sort.lastUpdated'))}\"\n                :title=\"$t('message.tooltip.relevance')\"\n                data-toggle=\"tooltip\"\n                data-placement=\"top\"\n                @click=\"setSortMethod('modified', 'desc', $t('message.sort.lastUpdated'))\"\n              >\n                {{ $t('message.sort.lastUpdated') }}\n              </button>\n              <button\n                type=\"button\"\n                class=\"custom-middle-button pl-2 pr-2 d-flex align-items-center inactive-styles\"\n                :class=\"{'active-styles': isSortSelectedLabelActive($t('message.sort.relevance'))}\"\n                :title=\"$t('message.tooltip.relevance')\"\n                data-toggle=\"tooltip\"\n                data-placement=\"top\"\n                @click=\"setSortMethod('relevance', 'desc', $t('message.sort.relevance'))\"\n              >\n                {{ $t('message.sort.relevance') }}\n              </button>\n              <div class=\"btn-group\" role=\"group\">\n                <button v-if=\"isSortSelectedLabelInDropdown()\" class=\"active-styles d-flex align-items-center custom-dropdown-button border-radius-end\" id=\"btnGroupDrop1\" type=\"button\" data-toggle=\"dropdown\" aria-expanded=\"false\">\n                  <div class=\"pl-2 h-100 d-flex align-items-center\">\n                    {{ sortSelectedLabel }}\n                  </div>\n                  <i class=\"pr-2 material-icons small-icon dropdown-icon\">arrow_drop_down</i>\n                </button>\n                <button v-else class=\"d-flex align-items-center custom-dropdown-button border-radius-end inactive-styles\" id=\"btnGroupDrop1\" type=\"button\" data-toggle=\"dropdown\" aria-expanded=\"false\">\n                  <div class=\"pl-2\">\n                    {{ $t('message.catalogsAndDatasets.more') }}\n                  </div>\n                  <i class=\"pr-2 material-icons small-icon dropdown-icon\">arrow_drop_down</i>\n                </button>\n                <ul class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"btnGroupDrop1\">\n                <button class=\"dropdown-item\" @click=\"setSortMethod(`title.${$route.query.locale}`, 'asc', $t('message.sort.nameAZ'))\">\n                  {{ $t('message.sort.nameAZ') }}</button>\n                <button class=\"dropdown-item\" @click=\"setSortMethod(`title.${$route.query.locale}`, 'desc', $t('message.sort.nameZA'))\">\n                  {{ $t('message.sort.nameZA') }}</button>\n                <button class=\"dropdown-item\" @click=\"setSortMethod('issued', 'desc', $t('message.sort.lastCreated'))\">\n                  {{ $t('message.sort.lastCreated') }}</button>\n                </ul>\n              </div>\n            </div>\n          </ul>\n        </div>\n        <div class=\"alert alert-primary mt-3 d-flex flex-row\" :class=\"{ 'alert-danger': getCatalogsCount <= 0 && !getLoading}\">\n          <div>\n            {{ getLoading ? $t('message.catalogs.loadingMessage'):`${getCatalogsCount.toLocaleString('fi')}\n            ${$t('message.catalogs.countMessage')}`}}\n          </div>\n          <div class=\"loading-spinner ml-3\" v-if=\"getLoading\"></div>\n        </div>\n        <selectedFacetsOverview v-if=\"getFacets\" :selected-facets=\"getFacets\" :available-facets=\"getAvailableFacets\"></selectedFacetsOverview>\n        <pv-data-info-box\n          v-for=\"catalog in getCatalogs\"\n          :key=\"`data-info-box@${catalog.id}`\"\n          catalog-mode\n          :to=\"{\n            path: `/catalogues/${catalog.id}`,\n            query: {\n              locale: $route.query.locale\n            },\n          }\"\n          :src=\"getImg(getCatalogImage(catalog))\"\n          :dataset=\"{\n            title: getTranslationFor(catalog.title, $route.query.locale, getCatalogLanguages(catalog)),\n            description:\n              getTranslationFor(catalog.description, $route.query.locale, getCatalogLanguages(catalog)),\n            catalog: getTranslationFor(catalog.title, $route.query.locale, getCatalogLanguages(catalog)),\n            createdDate: null,\n            updatedDate: null,\n            formats: [],\n          }\"\n          :description-max-length=\"1000\"\n          :data-cy=\"`catalog@${catalog.id}`\"\n          class=\"mt-3\"\n        />\n        <div class=\"loading-spinner mx-auto mt-3 mb-3\" v-if=\"getLoading\"></div>\n      </section>\n    </div>\n    <div class=\"row\">\n      <div class=\"column col-12 col-md-9 offset-md-3\">\n        <pagination class=\"mt-3\"\n          :items-count=\"getCatalogsCount\"\n          :items-per-page=\"getLimit\"\n          :get-page=\"getPage\"\n          :get-page-count=\"getPageCount\"\n          @setPageLimit=\"setPageLimit\"></pagination>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\n  import $ from 'jquery';\n  import { mapActions, mapGetters } from 'vuex';\n  import { debounce, has } from 'lodash-es';\n  import fileTypes from '../utils/fileTypes';\n  import CataloguesFacets from './cataloguesFacets/CataloguesFacets.vue';\n  import Pagination from '../widgets/Pagination.vue';\n  import SelectedFacetsOverview from '../facets/SelectedFacetsOverview.vue';\n  import dateFilters from '../filters/dateFilters';\n  import SubNavigation from '../navigation/SubNavigation.vue';\n  import { getImg, getCountryFlagImg, getTranslationFor } from '../utils/helpers';\n  import { useDatasetsHead } from '../composables/head';\n\n  export default {\n    name: 'catalogs',\n    components: {\n      SelectedFacetsOverview,\n      CataloguesFacets,\n      Pagination\n    },\n    props: {\n      infiniteScrolling: {\n        type: Boolean,\n        default: false,\n      },\n      pagination: {\n        type: Boolean,\n        default: true,\n      },\n    },\n    data() {\n      return {\n        autocompleteData: {\n          suggestions: {},\n          show: true,\n        },\n        debouncedOnBottomScroll: debounce(this.onBottomScroll, 500),\n        facetFields: [],\n        query: '',\n        sortSelected: `relevance desc, modified desc, title.${this.$route.query.locale} asc`,\n        sortSelectedLabel: this.$t('message.sort.relevance'),\n        currentSearchQuery: this.$route.query.query,\n        useCatalogFacets: this.$env.content.catalogs.facets.useCatalogFacets,\n      };\n    },\n    computed: {\n      ...mapGetters('catalogs', [\n        'getCatalogs',\n        'getCatalogsCount',\n        'getFacets',\n        'getLimit',\n        'getLoading',\n        'getOffset',\n        'getPage',\n        'getPageCount',\n        'getAvailableFacets',\n      ]),\n      page() {\n        return this.$route.query.page;\n      },\n      facets() {\n        const facets = {};\n        for (const field of this.facetFields) {\n          let urlFacets = this.$route.query[field];\n          if (!urlFacets) urlFacets = [];\n          else if (!Array.isArray(urlFacets)) urlFacets = [urlFacets];\n          facets[field] = urlFacets;\n        }\n        return facets;\n      },\n    },\n    methods: {\n      ...mapActions('catalogs', [\n        'autocompleteQuery',\n        'loadCatalogs',\n        'loadAdditionalCatalogs',\n        'setQuery',\n        'setPage',\n        'addFacet',\n        'setFacets',\n        'setFacetOperator',\n        'setFacetGroupOperator',\n        'setPageCount',\n        'setSort',\n        'setLimit',\n        'setLoading',\n      ]),\n      has,\n      getImg,\n      getTranslationFor,\n      getCountryFlagImg,\n      initLimit() {\n        const limit = parseInt(this.$route.query.limit, 10);\n        if (limit > 0) this.setLimit(limit);\n      },\n      setPageLimit(value) {\n          this.setLimit(value);\n          this.initCatalogues();\n      },\n      initPage() {\n        const page = parseInt(this.$route.query.page, 10);\n        if (page > 0) this.setPage(page);\n        else this.setPage(1);\n      },\n      initQuery() {\n        let query = this.$route.query.query;\n        if (!query) {\n          query = '';\n          this.setQuery('');\n        } else {\n          this.query = query;\n          this.setQuery(query);\n        }\n      },\n      initSort() {\n        let sort = this.$route.query.sort;\n        if (sort) {\n          sort = sort.split(',')[0].toLowerCase();\n          if (sort === 'relevance+desc') this.sortSelectedLabel = this.$t('message.sort.relevance');\n          if (sort.includes('title') && sort.includes('asc')) this.sortSelectedLabel = this.$t('message.sort.nameAZ');\n          if (sort.includes('title') && sort.includes('desc')) this.sortSelectedLabel = this.$t('message.sort.nameZA');\n          if (sort === 'modified+desc') this.sortSelectedLabel = this.$t('message.sort.lastUpdated');\n          if (sort === 'issued+desc') this.sortSelectedLabel = this.$t('message.sort.lastCreated');\n          this.sortSelected = this.$route.query.sort;\n          this.setSort(sort);\n        }\n      },\n      initFacetOperator() {\n        const op = this.$route.query.facetOperator;\n        if (op === 'AND' || op === 'OR') this.setFacetOperator(op);\n      },\n      initFacetGroupOperator() {\n        // const op = this.$route.query.facetGroupOperator;\n        const op = this.$route.query.facetOperator;\n        if (op === 'AND' || op === 'OR') this.setFacetGroupOperator(op);\n      },\n      initFacets() {\n        const fields = this.$env.content.catalogs.facets.defaultFacetOrder;\n        for (const field of fields) {\n          this.facetFields.push(field);\n          if (!Object.prototype.hasOwnProperty.call(this.$route.query, [field])) {\n            this.$router.replace({\n              query: Object.assign({}, this.$route.query, { [field]: [] }),\n            });\n          } else {\n            for (const facet of this.$route.query[field]) {\n              this.addFacet({ field, facet });\n            }\n          }\n        }\n      },\n      initCatalogues() {\n        this.$nextTick(() => {\n          this.$Progress.start();\n          this.loadCatalogs({})\n            .then(() => {\n              this.setPageCount(Math.ceil(this.getCatalogsCount / this.getLimit));\n              this.$Progress.finish();\n              $('[data-toggle=\"tooltip\"]').tooltip({\n                  container: 'body',\n              });\n            })\n            .catch(() => this.$Progress.fail());\n        });\n      },\n      initInfiniteScrolling() {\n          if (this.infiniteScrolling) window.addEventListener('scroll', this.onScroll);\n      },\n      setSortMethod(method, order, label) {\n        this.sortSelectedLabel = label;\n        if (method === 'relevance') this.sortSelected = `${method}+${order}, modified+desc, title.${this.$route.query.locale}+asc`;\n        if (method === 'modified') this.sortSelected = `${method}+${order}, relevance+desc, title.${this.$route.query.locale}+asc`;\n        if (method === `title.${this.$route.query.locale}`) this.sortSelected = `${method}+${order}, relevance+desc, modified+desc`;\n        if (method === `title.${this.$route.query.locale}`) this.sortSelected = `${method}+${order}, relevance+desc, modified+desc`;\n        if (method === 'issued') this.sortSelected = `${method}+${order}, relevance+desc, title.${this.$route.query.locale}+asc`;\n      },\n      changeQuery(query) {\n        // this.autocomplete(query);\n        this.$router.replace({ query: Object.assign({}, this.$route.query, { query }) });\n        this.setQuery(query);\n      },\n      autocomplete(query) {\n        this.autocompleteQuery(query)\n          .then((response) => {\n            this.autocompleteData.suggestions = [];\n            const suggestions = response.data.result;\n            const displayedSuggestions = [];\n            for (const ds of suggestions.results) {\n              displayedSuggestions.push(ds);\n            }\n            this.autocompleteData.suggestions = displayedSuggestions;\n            this.autocompleteData.show = query.length !== 0;\n          })\n          .catch(error => { console.error(error); });\n      },\n      handleSuggestionSelection(suggestion) {\n        this.$router.push({ path: this.$route.path.slice(-1) === '/' ? `${this.$route.path}${suggestion.idName}` : `${this.$route.path}/${suggestion.idName}` });\n      },\n      onScroll() {\n        const items = this.$el.querySelectorAll('.catalog');\n        const lastItem = items[items.length - 1];\n        if (lastItem) {\n          const lastItemPos = lastItem.getBoundingClientRect();\n          if (lastItemPos.bottom - window.innerHeight <= 0) {\n            this.debouncedOnBottomScroll();\n          }\n        }\n      },\n      onBottomScroll() {\n        this.$nextTick(() => {\n          this.$Progress.start();\n          this.setLoading(true);\n          this.loadAdditionalCatalogs()\n            .then(() => {\n              this.$Progress.finish();\n              this.setLoading(false);\n            })\n            .catch(() => {\n              this.$Progress.fail();\n              this.setLoading(false);\n            });\n        });\n      },\n      removeDuplicatesOf(array) {\n        return [...new Set(array)];\n      },\n      getFileTypeColor(format) {\n        return fileTypes.getFileTypeColor(format);\n      },\n      filterDateFormatUS(date) {\n        return dateFilters.formatUS(date);\n      },\n      filterDateFormatEU(date) {\n        return dateFilters.formatEU(date);\n      },\n      filterDateFromNow(date) {\n        return dateFilters.fromNow(date);\n      },\n      getCatalogLink(catalog) {\n        return `/catalogues/${catalog.id}&locale=${this.$route.query.locale}`;\n      },\n      getCatalogImage(catalog) {\n        return this.$env.content.catalogs.useCatalogCountries\n          ? `${this.$env.content.catalogs.defaultCatalogImagePath}/${has(catalog, 'country.id') ? catalog.country.id : this.$env.content.catalogs.defaultCatalogCountryID}`\n          : `${this.$env.content.catalogs.defaultCatalogImagePath}/${has(catalog, 'id') ? catalog.id : this.$env.content.catalogs.defaultCatalogID}`;\n      },\n      getFooterTags(catalog) {\n        return [`${has(catalog, 'count') ? catalog.count : 0}`];\n      },\n      getCatalogLanguages(catalog) {\n        return has(catalog, 'country.id') ? [catalog.country.id].concat(catalog.languages) : catalog.languages;\n      },\n      isSortSelectedLabelInDropdown() {\n        if (this.sortSelectedLabel === this.$t('message.sort.nameAZ')\n          || this.sortSelectedLabel === this.$t('message.sort.nameZA')\n          || this.sortSelectedLabel === this.$t('message.sort.lastCreated')) {\n          return true;\n        }\n        return false;\n      },\n      isSortSelectedLabelActive(label) {\n        if (label === this.sortSelectedLabel) return true;\n        return false;\n      },\n    },\n    watch: {\n      facets: {\n        handler(facets) {\n          this.setFacets(facets);\n        },\n        deep: true,\n      },\n      page(pageStr) {\n        const page = parseInt(pageStr, 10);\n        if (page > 0) this.setPage(page);\n        else this.setPage(1);\n      },\n      sortSelected: {\n        handler(sort) {\n          this.$router.replace({ query: Object.assign({}, this.$route.query, { sort }) });\n          this.setSort(sort);\n        },\n        deep: true,\n      },\n      $route(to) {\n        this.currentSearchQuery = to.query.query;\n      },\n    },\n    created() {\n      this.initLimit();\n      this.initPage();\n      this.initQuery();\n      this.initSort();\n      this.initFacetOperator();\n      this.initFacetGroupOperator();\n      this.initFacets();\n      this.initCatalogues();\n      this.initInfiniteScrolling();\n    },\n    beforeUnmount() {\n      $('.tooltip').remove();\n      if (this.infiniteScrolling) window.removeEventListener('scroll', this.onScroll);\n    },\n    setup() {\n      useDatasetsHead({ isCatalog: true })\n    }\n  };\n</script>\n\n<style lang=\"scss\" scoped>\n\n  .alert-primary {\n    color: #042648;\n    background-color: #cddbe8;\n    border-color: #baccdf;\n  }\n\n  .page-title {\n    // maybe we can change custom theme h1 to 3rem\n    font-size: 3rem;\n    margin-bottom: 15px;\n  }\n\n  .search-button {\n    border-radius: 100% !important;\n\n    &:hover {\n      background-color: #196fd2;\n      border-color: #196fd2\n    }\n  }\n\n  .cursor-pointer {\n    cursor: pointer;\n  }\n  .custom-button {\n    border: 1px solid black;\n    background-color: white;\n    outline: none;\n  }\n  .custom-middle-button {\n    border: 1px solid black;\n    border-left: none;\n    background-color: white;\n    outline: none;\n  }\n  .custom-dropdown-button {\n    border: 1px solid black;\n    padding: 0;\n    background-color: white;\n    outline: none;\n  }\n  .active-styles {\n    background-color: rgba(0, 29, 133,0.1);\n    color: black;\n  }\n  .inactive-styles {\n    color: rgba(0, 0, 0, 0.5);\n\n    &:hover {\n      background-color: rgb(247, 247, 247);\n      color: black;\n    }\n    &:focus {\n      background-color: rgb(247, 247, 247);\n      color: black;\n    }\n  }\n  .custom-border-right {\n    border-right: 1px solid black;\n  }\n  .border-radius-start {\n    border-top-left-radius: 1.875rem;\n    border-bottom-left-radius: 1.875rem;\n  }\n  .border-radius-end {\n    border-top-right-radius: 1.875rem;\n    border-bottom-right-radius: 1.875rem;\n  }\n  .border-right-custom {\n    padding-right: 0.5rem;\n    border-right: 1px solid black\n  }\n  .router-link-active {\n    color: #175baf !important;\n    border: none !important;\n    border-bottom: 2px solid #175baf !important;\n  }\n  .router-link-inactive {\n    color: #7f7f7f;\n    border: none !important;\n    &:hover {\n      color: #175baf;\n    }\n  }\n  .suggestion-input-group {\n    position: relative;\n  }\n  .suggestion-input {\n    position: absolute;\n    top: 0;\n  }\n  .suggestion-list-group {\n    position: relative;\n    width: 100%;\n  }\n  .suggestion-list {\n    width: 100%;\n    position: absolute;\n    top: 0;\n    z-index: 100;\n  }\n</style>\n"],"names":["_sfc_main","SelectedFacetsOverview","CataloguesFacets","Pagination","debounce","mapGetters","facets","field","urlFacets","mapActions","has","getImg","getTranslationFor","getCountryFlagImg","limit","value","page","query","sort","op","fields","facet","$","method","order","label","response","suggestions","displayedSuggestions","ds","error","suggestion","items","lastItem","array","format","fileTypes","date","dateFilters","catalog","pageStr","to","useDatasetsHead","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_8","_hoisted_10","_hoisted_13","_hoisted_16","_hoisted_23","_hoisted_25","_hoisted_29","_hoisted_30","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_ctx","$data","_createBlock","_component_catalogues_facets","$event","_cache","_withKeys","$options","_hoisted_9","_Fragment","_renderList","_hoisted_11","_hoisted_12","_createVNode","_component_router_link","_hoisted_17","_hoisted_18","_normalizeClass","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_24","_hoisted_26","_hoisted_27","_component_selectedFacetsOverview","_component_pv_data_info_box","_hoisted_28","_component_pagination"],"mappings":"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"}