@piveau/piveau-hub-ui-modules 4.6.49 → 4.6.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/PvBadge/PvBadge.vue.mjs.map +1 -1
- package/dist/PvDataInfoBox/PvDataInfoBox.vue.mjs +2 -1
- package/dist/PvDataInfoBox/PvDataInfoBox.vue.mjs.map +1 -1
- package/dist/PvDataInfoBox/PvDataInfoBoxDescription.vue.mjs.map +1 -1
- package/dist/PvDataInfoBox/PvDataInfoBoxFooter.vue.mjs.map +1 -1
- package/dist/PvDataInfoBox/PvDataInfoBoxFormats.vue.mjs.map +1 -1
- package/dist/catalogues/CatalogPage.vue.mjs.map +1 -1
- package/dist/catalogues/CatalogPageDatasetCard.vue.mjs +6 -5
- package/dist/catalogues/CatalogPageDatasetCard.vue.mjs.map +1 -1
- package/dist/catalogues/Catalogues.vue.mjs.map +1 -1
- package/dist/catalogues/cataloguesFacets/CataloguesFacets.vue.mjs.map +1 -1
- package/dist/citation/DatasetCitationModal.vue.mjs.map +1 -1
- package/dist/citation/DatasetCitationTable.vue.mjs.map +1 -1
- package/dist/composables/useRuntimeEnv.d.ts +2 -2
- package/dist/configurations/config-schema/apiSchema.mjs +1 -1
- package/dist/configurations/config-schema/authenticationSchema.mjs +1 -1
- package/dist/configurations/config-schema/configSchema.d.ts +5 -5
- package/dist/configurations/config-schema/configSchema.mjs +18 -18
- package/dist/configurations/config-schema/contentSchema.mjs +1 -1
- package/dist/configurations/config-schema/languagesSchema.d.ts +2 -2
- package/dist/configurations/config-schema/languagesSchema.mjs +1 -1
- package/dist/configurations/config-schema/metadataSchema.mjs +1 -1
- package/dist/configurations/config-schema/routingSchema.mjs +1 -1
- package/dist/configurations/config-schema/themesSchema.mjs +1 -1
- package/dist/configurations/config-schema/trackerSchema.mjs +1 -1
- package/dist/data-provider-interface/CatalogueMQA.vue.mjs.map +1 -1
- package/dist/data-provider-interface/DPIMenu.vue.d.ts +10 -10
- package/dist/data-provider-interface/DPIMenu.vue.mjs.map +1 -1
- package/dist/data-provider-interface/DataProviderInterface.vue.d.ts +15 -17
- package/dist/data-provider-interface/DataProviderInterface.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/AutocompleteInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/ConditionalInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/DataFetchingComponent.vue.d.ts +2 -2
- package/dist/data-provider-interface/components/DistributionStepper.vue.mjs +2 -1
- package/dist/data-provider-interface/components/DistributionStepper.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/Dropup.vue.d.ts +1 -1
- package/dist/data-provider-interface/components/Dropup.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/FileUpload.vue.d.ts +1 -1
- package/dist/data-provider-interface/components/FileUpload.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/InfoSlot.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/InputPageStep.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/LanguageSelector.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/Navigation.vue.d.ts +8 -8
- package/dist/data-provider-interface/components/Navigation.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/SelectControlledGroup.vue.mjs +2 -1
- package/dist/data-provider-interface/components/SelectControlledGroup.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/SimpleAccessURLInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/SimpleInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/SimpleSelect.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/SpatialInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/UniqueIdentifierInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/WidgetInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/DistributionInputPage.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/DistributionOverview.vue.d.ts +2 -2
- package/dist/data-provider-interface/views/DistributionOverview.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/DraftsPage.vue.d.ts +5 -5
- package/dist/data-provider-interface/views/DraftsPage.vue.mjs +19 -14
- package/dist/data-provider-interface/views/DraftsPage.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/InputPage.vue.d.ts +12 -14
- package/dist/data-provider-interface/views/InputPage.vue.mjs +4 -2
- package/dist/data-provider-interface/views/InputPage.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/LinkedDataViewer.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/CatalogueOverview.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/DatasetOverview.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/DistributionOverview.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/Properties/MultilingualProp.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/Properties/SpecialProp.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/Properties/StringProp.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/Properties/URIProp.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/Properties/URLProp.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/PropertyEntry.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage.vue.d.ts +3 -5
- package/dist/data-provider-interface/views/OverviewPage.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/PropertyChooser.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/UserCataloguesPage.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/UserProfilePage.vue.mjs.map +1 -1
- package/dist/datasetDetails/AppMarkdownContent.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetails.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsActivityStream.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsBanners.vue.d.ts +1 -3
- package/dist/datasetDetails/DatasetDetailsBanners.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsCSVLinter.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsCategories.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsDataset.vue.mjs +3 -2
- package/dist/datasetDetails/DatasetDetailsDataset.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsDataset.vue2.mjs +61 -50
- package/dist/datasetDetails/DatasetDetailsDataset.vue2.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsDescription.vue.d.ts +1 -3
- package/dist/datasetDetails/DatasetDetailsDescription.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsFeedbackButton.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsLinkedMetricsButton.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsQuality.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsShareButton.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsSimilarDatasets.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsSkeleton.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/Distribution.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/DistributionAdded.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/DistributionDownloadAsModal.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/DistributionFormat.vue.d.ts +2 -2
- package/dist/datasetDetails/distributions/DistributionFormat.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/Distributions.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/DistributionsHeader.vue.d.ts +4 -4
- package/dist/datasetDetails/distributions/DistributionsHeader.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/DownloadAllDistributions.vue.d.ts +8 -8
- package/dist/datasetDetails/distributions/DownloadAllDistributions.vue.mjs +2 -1
- package/dist/datasetDetails/distributions/DownloadAllDistributions.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/FadingDistributionOverlay.vue.mjs +7 -5
- package/dist/datasetDetails/distributions/FadingDistributionOverlay.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionActions/DistributionActions.vue.mjs +6 -5
- package/dist/datasetDetails/distributions/distributionActions/DistributionActions.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionActions/DistributionDownload.vue.d.ts +2 -2
- package/dist/datasetDetails/distributions/distributionActions/DistributionDownload.vue.mjs +15 -12
- package/dist/datasetDetails/distributions/distributionActions/DistributionDownload.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionActions/DistributionDownloadAs.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionActions/DistributionDropdownDownload.vue.d.ts +2 -2
- package/dist/datasetDetails/distributions/distributionActions/DistributionDropdownDownload.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionActions/DistributionOptionsDropdown.vue.d.ts +4 -4
- package/dist/datasetDetails/distributions/distributionActions/DistributionOptionsDropdown.vue.mjs +6 -5
- package/dist/datasetDetails/distributions/distributionActions/DistributionOptionsDropdown.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionActions/DistributionPreview.vue.d.ts +4 -4
- package/dist/datasetDetails/distributions/distributionActions/DistributionPreview.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionActions/DistributionVisualizeButton.vue.d.ts +4 -4
- package/dist/datasetDetails/distributions/distributionActions/DistributionVisualizeButton.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionActions/LinkedDataButtonsDropdown.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionDetails/DistributionContent.vue.mjs +22 -21
- package/dist/datasetDetails/distributions/distributionDetails/DistributionContent.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionDetails/DistributionDescription.vue.d.ts +6 -6
- package/dist/datasetDetails/distributions/distributionDetails/DistributionDescription.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionDetails/DistributionDetails.vue.d.ts +16 -16
- package/dist/datasetDetails/distributions/distributionDetails/DistributionDetails.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionDetails/DistributionExpand.vue.d.ts +2 -2
- package/dist/datasetDetails/distributions/distributionDetails/DistributionExpand.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsCategoriesKey.vue.d.ts +1 -1
- package/dist/datasetDetails/features/DatasetDetailsCategoriesKey.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsDataServices.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsFeatureHeader.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsFeatures.vue.d.ts +2 -2
- package/dist/datasetDetails/features/DatasetDetailsFeatures.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsHvdThemes.vue.d.ts +1 -1
- package/dist/datasetDetails/features/DatasetDetailsHvdThemes.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsIsUsedBy.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsKeywords.vue.d.ts +1 -1
- package/dist/datasetDetails/features/DatasetDetailsKeywords.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsMap.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsPages.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsRelations.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsSubject.vue.d.ts +1 -1
- package/dist/datasetDetails/features/DatasetDetailsSubject.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsVisualisations.vue.mjs.map +1 -1
- package/dist/datasetDetails/header/DatasetDetailsHeader.vue.mjs.map +1 -1
- package/dist/datasetDetails/header/DatasetDetailsHeaderCatalogue.vue.d.ts +2 -2
- package/dist/datasetDetails/header/DatasetDetailsHeaderCatalogue.vue.mjs.map +1 -1
- package/dist/datasetDetails/header/DatasetDetailsHeaderTitle.vue.d.ts +2 -2
- package/dist/datasetDetails/header/DatasetDetailsHeaderTitle.vue.mjs.map +1 -1
- package/dist/datasetDetails/navigation/DatasetDetailsNavigation.vue.mjs.map +1 -1
- package/dist/datasetDetails/navigation/DatasetDetailsNavigationLinks.vue.d.ts +2 -2
- package/dist/datasetDetails/navigation/DatasetDetailsNavigationLinks.vue.mjs.map +1 -1
- package/dist/datasetDetails/navigation/DatasetDetailsNavigationPage.vue.mjs.map +1 -1
- package/dist/datasetDetails/navigation/DatasetDetailsNavigationPages.vue.d.ts +7 -1
- package/dist/datasetDetails/navigation/DatasetDetailsNavigationPages.vue.mjs.map +1 -1
- package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.d.ts +200 -1
- package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.mjs.map +1 -1
- package/dist/datasetDetails/properties/DatasetDetailsProperty.vue.mjs.map +1 -1
- package/dist/datasetDetails/properties/ValuesList.vue.mjs.map +1 -1
- package/dist/datasets/DatasetDate.vue.mjs.map +1 -1
- package/dist/datasets/DatasetList.vue.mjs.map +1 -1
- package/dist/datasets/Datasets.vue.mjs.map +1 -1
- package/dist/datasets/DatasetsFilters.vue.d.ts +1 -1
- package/dist/datasets/DatasetsFilters.vue.mjs.map +1 -1
- package/dist/datasets/DatasetsFiltersTabs.vue.d.ts +2 -2
- package/dist/datasets/DatasetsFiltersTabs.vue.mjs.map +1 -1
- package/dist/datasets/DatasetsTopControls.vue.d.ts +5 -5
- package/dist/datasets/DatasetsTopControls.vue.mjs +8 -6
- package/dist/datasets/DatasetsTopControls.vue.mjs.map +1 -1
- package/dist/datasets/datasetsFacets/DatasetsFacets.vue.mjs.map +1 -1
- package/dist/datasets/datasetsFacets/DatasetsFacetsItem.vue.mjs.map +1 -1
- package/dist/datasets/datasetsFacets/DatasetsMapFacet.vue.mjs.map +1 -1
- package/dist/embed/DatasetEmbedModal.vue.mjs.map +1 -1
- package/dist/embed/EmbedDataset.vue.mjs.map +1 -1
- package/dist/embed/EmbedDatasetSnippet.vue.mjs.map +1 -1
- package/dist/external/zod/dist/esm/v3/ZodError +84 -0
- package/dist/external/zod/dist/esm/v3/ZodError.map +1 -0
- package/dist/external/zod/dist/esm/v3/errors +10 -0
- package/dist/external/zod/dist/esm/v3/errors.map +1 -0
- package/dist/external/zod/dist/esm/v3/helpers/errorUtil +8 -0
- package/dist/external/zod/dist/esm/v3/helpers/errorUtil.map +1 -0
- package/dist/external/zod/dist/esm/v3/helpers/parseUtil +98 -0
- package/dist/external/zod/dist/esm/v3/helpers/parseUtil.map +1 -0
- package/dist/external/zod/dist/esm/v3/helpers/util +95 -0
- package/dist/external/zod/dist/esm/v3/helpers/util.map +1 -0
- package/dist/external/zod/dist/esm/v3/locales/en +62 -0
- package/dist/external/zod/dist/esm/v3/locales/en.map +1 -0
- package/dist/external/zod/dist/esm/v3/types +2440 -0
- package/dist/external/zod/dist/esm/v3/types.map +1 -0
- package/dist/facets/CatalogDetailsFacet.vue.mjs.map +1 -1
- package/dist/facets/ExpandableSelectFacet.vue.mjs.map +1 -1
- package/dist/facets/Facet.vue.mjs.map +1 -1
- package/dist/facets/FacetTitle.vue.mjs.map +1 -1
- package/dist/facets/RadioFacet.vue.mjs.map +1 -1
- package/dist/facets/SelectedFacetsOverview.vue.d.ts +2 -2
- package/dist/facets/SelectedFacetsOverview.vue.mjs.map +1 -1
- package/dist/form/FormKitGroup.vue.mjs.map +1 -1
- package/dist/form/Repeatable.vue2.mjs +2 -1
- package/dist/form/Repeatable.vue2.mjs.map +1 -1
- package/dist/map/MapBasic.vue.mjs.map +1 -1
- package/dist/map/MapBoundsReceiver.vue.mjs.map +1 -1
- package/dist/map/MapBoundsSender.vue.mjs.map +1 -1
- package/dist/modal/AppConfirmationDialog.vue.mjs.map +1 -1
- package/dist/modal/AppSnackbar.vue.mjs.map +1 -1
- package/dist/modal/AppToast.vue.mjs.map +1 -1
- package/dist/navigation/SubNavigation.vue.mjs.map +1 -1
- package/dist/pages/NotFound.vue.mjs.map +1 -1
- package/dist/pages/SparqlSearch.vue.mjs.map +1 -1
- package/dist/pages/user/UserImprint.vue.mjs.map +1 -1
- package/dist/pages/user/UserPrivacyPolicy.vue.mjs.map +1 -1
- package/dist/piveau-hub-ui-modules.css +1 -1
- package/dist/search/Search.vue.mjs.map +1 -1
- package/dist/services/datasetService.d.ts +1 -1
- package/dist/widgets/AppLink.vue.mjs.map +1 -1
- package/dist/widgets/Dropdown.vue.mjs.map +1 -1
- package/dist/widgets/Pagination.vue.d.ts +1 -1
- package/dist/widgets/Pagination.vue.mjs.map +1 -1
- package/dist/widgets/PropertyValue.vue.mjs.map +1 -1
- package/dist/widgets/PvBanner.vue.mjs.map +1 -1
- package/dist/widgets/PvButton.vue.mjs.map +1 -1
- package/dist/widgets/PvShowMore.vue.mjs.map +1 -1
- package/dist/widgets/ResourceAccessPopup.vue.d.ts +1 -1
- package/dist/widgets/ResourceAccessPopup.vue.mjs.map +1 -1
- package/dist/widgets/ResourceDetailsLinkedDataButton.vue.mjs.map +1 -1
- package/dist/widgets/Tooltip.vue.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/external/zod/lib/index +0 -2849
- package/dist/external/zod/lib/index.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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","_cache","_createTextVNode","_hoisted_4","_createCommentVNode","_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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"}
|
|
1
|
+
{"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":";;;;;;;;;AAyCA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,YAAY;AAAA,IACV,eAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,qBAAAC;AAAA,EACD;AAAA,EACD,cAAc,CAAC,gBAAgB;AAAA,EAC/B,OAAO;AACL,WAAO;AAAA,MACL,QAAQ,KAAK,KAAK,QAAQ,SAAS,OAAO;AAAA,MAC1C,iBAAiB,KAAK,KAAK,QAAQ,SAAS,OAAO;AAAA,MACnD,iBAAiB,KAAK,KAAK,QAAQ,SAAS,OAAO;AAAA,MACnD,oBAAoB;AAAA,MACpB,cAAc,CAAE;AAAA,MAChB,SAAS;AAAA;AAAA,QAEP;AAAA;AAAA,UAA2B,CAAC,CAAC,SAAS;AAAA;AAAA,MACvC;AAAA,MACD,mBAAmB,KAAK,KAAK,QAAQ,SAAS,OAAO;AAAA,MACrD,iBAAiB,KAAK,KAAK,QAAQ,SAAS,OAAO;AAAA,MACnD,iBAAiB,KAAK,KAAK,QAAQ,SAAS,OAAO;AAAA,MACnD,iBAAiB,KAAK,KAAK,QAAQ,SAAS,OAAO;AAAA,MACnD,uBAAuB,KAAK,KAAK,QAAQ,SAAS,OAAO;AAAA,MACzD,MAAM;AAAA,QACJ,KAAK,KAAK,KAAK,OAAO,EAAE,sBAAsB;AAAA,QAC9C,IAAI,KAAK,KAAK,OAAO,EAAE,qBAAqB;AAAA,QAC5C,UAAU,KAAK,KAAK,OAAO,EAAE,uCAAuC;AAAA,QACpE,OAAO,KAAK,KAAK,OAAO,EAAE,mCAAmC;AAAA;AAAA,MAE/D;AAAA;EAEH;AAAA,EACD,UAAU;AAAA,IACR,GAAGC,EAAW,kBAAkB;AAAA,MAC9B;AAAA,IACF,CAAC;AAAA,IACD,GAAGA,EAAW,YAAY;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,uBAAuB;AACrB,aAAO,KAAK;AAAA,IACb;AAAA,IACD,4BAA4B;AAC1B,aAAO,KAAK;AAAA,IACb;AAAA,IACD,sBAAsB;AACpB,aAAO,KAAK,KAAK,QAAQ,SAAS,OAAO,SAAS,KAAK,KAAK,KAAK,QAAQ,SAAS,OAAO,SAAS,KAAK,mBAAmB;AAAA,IAC3H;AAAA,IACD,kBAAkB;AAChB,YAAMC,IAAkB,KAAK,oBACvBC,IAAe,CAAA;AAErB,kBAAK,kBAAkB,QAAQ,CAACC,MAAU;AACxC,QAAAF,EAAgB,QAAQ,CAACG,MAAU;AACjC,UAAID,MAAUC,EAAM,MAAMA,EAAM,MAAM,SAAS,KAAGF,EAAa,KAAKE,CAAK;AAAA,QAC3E,CAAC;AAAA,MACH,CAAC,GAEMF;AAAA,IACR;AAAA;AAAA;AAAA,IAGD,qBAAqB;AACnB,YAAMG,IAAY,KAAK,cAAc,KAAK,WAAW;AACrD,aAAKC,EAAQD,CAAS,IACfA,EACJ,IAAI,CAAAE,MAAQA,KAAQA,EAAK,EAAE,EAC3B,OAAO,CAAAA,MAAQA,CAAI,IAHU,CAAA;AAAA,IAIlC;AAAA,EACD;AAAA,EACD,SAAS;AAAA,IACP,SAAAC;AAAA,IACA,WAAAC;AAAA,IACA,KAAAC;AAAA,IACA,OAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,GAAGC,EAAW,kBAAkB;AAAA,MAC9B;AAAA,IACF,CAAC;AAAA,IACD,GAAGA,EAAW,YAAY;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQD,eAAe;AACb,WAAK,SAAS,KAAK,UAAU,IAAI,KAAK,KAAK,KAAK,QAAQ,SAAS,OAAO;AAAA,IACzE;AAAA,IACD,YAAYC,GAAQC,GAAS;AAC3B,aAAIA,MAAY,YAAkBD,IAC3BA,EAAO,MAAO,EAAC,KAAK,CAAC,GAAGE,MACnBA,EAAE,QAAQ,EAAE,UACZ,IAAUA,EAAE,QAAQ,EAAE,QAC5B,EAAE,OAAOA,EAAE,OAAa,KACrB,CACR;AAAA,IACF;AAAA,IACD,WAAWD,GAAS;AAClB,aAAIA,MAAY,YACP,KAAK,KAAK,OAAO,EAAE,gDAAgD,IAClEA,MAAY,YACb,KAAK,KAAK,OAAO,EAAE,qCAAqC,IAExD,KAAK,KAAK,OAAO,EAAE,gCAAgCA,EAAQ,aAAa,EAAE;AAAA,IAKpF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,gBAAgBb,GAAOe,GAAM;AAC3B,YAAMhB,IAAQgB,EAAK;AACnB,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,OAAOf,CAAK;AAChE,eAAO;AAET,UAAIgB,IAAS,KAAK,OAAO,MAAMhB,CAAK;AACpC,aAAK,MAAM,QAAQgB,CAAM,MAAGA,IAAS,CAACA,CAAM,IACrCA,EAAO,QAAQjB,CAAK,IAAI;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,aAAaC,GAAOe,GAAM;AACxB,YAAMhB,IAAQgB,EAAK;AACnB,WAAK,YAAYf,GAAOD,CAAK;AAAA,IAE9B;AAAA,IACD,cAAc;AACZ,MAAI,OAAO,KAAK,KAAK,OAAO,KAAK,EAAE,KAAK,CAAAkB,MAAQA,MAAQ,YAAYA,MAAQ,UAAW,KAAK,OAAO,MAAMA,CAAG,EAAE,MAAM,KAClH,KAAK,QAAQ,KAAK,EAAE,OAAO,EAAE,QAAQ,KAAK,MAAM,QAAQ,MAAM,IAAI,EAAA,CAAG,EAClE,MAAM,CAAAC,MAAS;AAAE,gBAAQ,MAAMA,CAAK;AAAA,MAAC,CAAG;AAAA,IAE9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,YAAYlB,GAAOD,GAAO;;AACxB,MAAK,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,OAAO,CAACC,CAAK,CAAC,KAClE,KAAK,QAAQ,KAAK,EAAE,OAAO,OAAO,OAAO,CAAE,GAAE,KAAK,OAAO,OAAO,EAAE,CAACA,CAAK,GAAG,CAAC,EAAA,CAAG,EAAA,CAAG;AAEpF,UAAIY,KAASO,KAAAC,IAAA,KAAK,OAAO,UAAZ,gBAAAA,EAAoBpB,OAApB,gBAAAmB,EAA4B;AACzC,MAAKP,MAAQA,IAAS,KACjB,MAAM,QAAQA,CAAM,MAAGA,IAAS,CAACA,CAAM;AAC5C,YAAMS,IAAQT,EAAO,QAAQb,CAAK;AAClC,MAAIsB,IAAQ,KACVT,EAAO,OAAOS,GAAO,CAAC,IAEtBT,EAAO,KAAKb,CAAK,GAEnB,KAAK,QAAQ,KAAK,EAAE,OAAO,OAAO,OAAO,CAAA,GAAI,KAAK,OAAO,OAAO,EAAE,CAACC,CAAK,GAAGY,GAAQ,MAAM,GAAG,EAAA,CAAG;AAAA,IAChG;AAAA,IACD,oBAAoBU,GAAI;AACtB,WAAK,iBAAiBA,CAAE,GACxB,KAAK,sBAAsBA,CAAE;AAAA,IAC9B;AAAA,IACD,SAAS;;AACP,YAAMC,KAAgBH,IAAA,KAAK,OAAO,UAAZ,gBAAAA,EAAmB;AAEzC,cADsBG,KAAiBA,EAAc,gBAAgB,QAASA,EAAc,CAAC,IAAIA,OACzE,SAAU,SAAS;AAAA,IAC5C;AAAA,IACD,WAAWC,GAAM;;AACf,YAAMC,IAAc,QACdF,KAAgBH,IAAA,KAAK,OAAO,UAAZ,gBAAAA,EAAmB,cACnCM,IAAeH,KAAiBA,EAAc,gBAAgB,QAAQA,EAAc,CAAC,IAAIA;AAC/F,OAAKC,MAAS,WAAWE,MAAiBD,KAAiBD,MAAS,UAAUE,MAAiBD,OACzFC,MAAiBD,KACnB,OAAO,KAAK,OAAO,MAAM,iBAE3B,KAAK,YAAY,gBAAgBA,CAAW;AAAA,IAE/C;AAAA;AAAA;AAAA;AAAA,IAID,2BAA2B;AACzB,UAAIH,IAAK,KAAK;AACd,MAAAA,IAAKA,MAAO,KAAK,sBAAsB,MAAM,KAAK,sBAAsB,KAAK,KAAK,sBAAsB,KACxG,KAAK,sBAAsBA,CAAE;AAAA,IAC9B;AAAA,IACD,YAAY;AACV,WAAK,QAAQ,QAAQ,EAAE,OAAO,OAAO,OAAO,CAAA,GAAI,KAAK,OAAO,OAAO,EAAE,MAAM,EAAA,CAAG,EAAA,CAAG;AAAA,IAClF;AAAA,IACD,gBAAgB;AAEd,iBAAW,MAAM;AACf,eAAO,cAAc,IAAI,MAAM,QAAQ,CAAC;AAAA,MACzC,GAAE,GAAG;AAAA,IACP;AAAA,IACD,cAActB,GAAOD,GAAO;AAC1B,aAAIC,EAAM,OAAO,YAAkB,KAC5BD,EAAM;AAAA,IACf;AAAA,EACD;AAAA,EACD,OAAO;AAAA,IACL,sBAAsB;AAAA,MACpB,QAAQ4B,GAAe;AACrB,aAAK,QAAQ,QAAQ,EAAE,OAAO,OAAO,OAAO,CAAE,GAAE,KAAK,OAAO,OAAO,EAAE,eAAAA,EAAe,CAAA,EAAG,CAAA;AAAA,MACxF;AAAA,IACF;AAAA,IACD,2BAA2B;AAAA,MACzB,QAAQC,GAAoB;AAC1B,aAAK,QAAQ,QAAQ,EAAE,OAAO,OAAO,OAAO,CAAE,GAAE,KAAK,OAAO,OAAO,EAAE,oBAAAA,EAAoB,CAAA,EAAG,CAAA;AAAA,MAC7F;AAAA,IACF;AAAA,IACD,WAAWC,GAAS;AAClB,WAAK,eAAeA;AAAA,IACtB;AAAA,EACD;AAAA,EACD,UAAU;AACR,QAAI,KAAK,OAAO,MAAM,iBAAiB;AACrC,YAAMC,IAAkB,KAAK,OAAO,MAAM;AAC1C,UAAI,OAAOA,KAAoB,UAAU;AACvC,cAAMC,IAAYD,EAAgB,UAAUA,EAAgB,YAAY,GAAG,IAAI,CAAC;AAChF,aAAK,YAAYC,CAAS,EACvB;AAAA,UAAK,CAAAC,MAAU;AAAA,UAEZ;AAAA,QACJ;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACF,GAhSOC,IAAA,EAAA,OAAM,2BAA0B,GAC9BC,IAAA,EAAA,OAAM,mBAAkB,GACtBC,IAAA,EAAA,OAAM,MAAK;;EAGe,OAAM;;;;AALzC,SAAAC,EAAA,GAAAC,EAuBM,OAvBNJ,GAuBM;AAAA,IAtBJK,EAqBM,OArBNJ,GAqBM;AAAA,MApBJI,EAmBM,OAnBNH,GAmBM;AAAA,QAlBJI,EAC6CC,GAAA;AAAA,UADtB,OAAM;AAAA,UAAmB,SAASC,EAAY;AAAA,UAClE,oBAAoBC,EAAkB;AAAA;;QAC7BD,EAAe,wBAA3BJ,EAAuF,QAAvFM,GAAuE,WAAS;;QACzDF,EAAkB,uCAAzCG,EAA0EC,GAAA;AAAA;UAA/B,OAAM;AAAA;;SACjDT,EAAA,EAAA,GAAAC,EASMS,GATqD,MAAAC,EAAAL,EAAA,iBAAjB,CAAA1C,GAAOqB,YAAjDgB,EASM,OAAA;AAAA,UATD,OAAKW,EAAA,CAAC,wBAAsB,EAAA,QACZ3B,IAAK,EAAA,CAAA,CAAA;AAAA,UADmD,cAAcA,CAAK;AAAA;UAE3ErB,EAAM,OAAE,uBAA3B4C,EAEmDK,GAAA;AAAA;YAFF,OAAOR,EAAI,KAAC;AAAA,YAAQ,UAAUA,EAAI,KAAC;AAAA,YACjF,cAAcA,EAAI,KAAC;AAAA,YAAe,WAAW,CAAiB,QAAA,OAAA;AAAA,YAAG,eAAeA,EAAI,KAAC,KAAKA,EAAA,KAAK,EAAE;AAAA,YACjG,eAAeC,EAAM,OAAA;AAAA,YAAK,QAAQA,EAAU;AAAA;;UAC3B1C,EAAM,OAAE,uBAA5B4C,EAGqBM,GAAA;AAAA;YAH6B,SAASlD,EAAM;AAAA,YAAK,QAAQ0C,EAAA,WAAW1C,EAAM,EAAE;AAAA,YAC9F,OAAO0C,cAAY1C,EAAM,OAAOA,EAAM,EAAE;AAAA,YAAI,4BAA4B0C,EAAmB;AAAA,YAC3F,iBAAiBA,EAAe;AAAA,YAAG,cAAcA,EAAY;AAAA,YAAG,aAAa1C,EAAM,OAAE;AAAA,YACtF,OAAM;AAAA;;;QAEU0C,EAAmB,4BAAvCE,EAEqFO,GAAA;AAAA;UADlF,OAAOV,EAAA,UAAc,IAAAW,EAAA,0CAA0CA,EAAE,GAAA,mCAAA;AAAA,UACjE,SAASX,EAAM,WAAA;AAAA,UAAU,QAAQC,EAAY;AAAA,UAAE,OAAM;AAAA;;QACvCD,EAAe,wBAAhCG,EAA8GS,GAAA;AAAA;UAA5E,OAAM;AAAA,UAAgB,OAAM;AAAA,UAAyB,QAAQX,EAAW;AAAA;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetCitationModal.vue.mjs","sources":["../../lib/citation/DatasetCitationModal.vue"],"sourcesContent":["<template>\n <div class=\"modal fade\" id=\"citationModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\"\n aria-hidden=\"true\" data-cy=\"citation-modal\">\n <div class=\"modal-dialog modal-lg\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h2 class=\"modal-title\" id=\"deleteModalLabel\">\n {{ $t('message.cite.title') }}\n </h2>\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\" data-cy=\"citation-modal-close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <dataset-citation-table\n v-if=\"citationStyle && !getLoading && getID\"\n :modal-id=\"modalId\"\n :citation-style=\"citationStyle\"\n :available-citation-styles=\"availableCitationStyles\"\n />\n </div>\n <!-- Export options -->\n <!-- Currently unused but might be useful in the future -->\n <!-- <div v-if=\"false\" class=\"modal-footer\">\n <button v-for=\"({name, args, postprocess, extension, disabled}, format) in exportFormats\"\n :key=\"`format@${format}`\" type=\"button\" class=\"btn btn-link\" :disabled=\"disabled || getLoading || !citation\"\n @click=\"handleCitationExport({ args, postprocess, extension, filename: getID })\">\n {{ name }}\n </button>\n </div> -->\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { defineAsyncComponent } from 'vue';\nimport { mapGetters } from \"vuex\";\n\nexport default {\n components: {\n // Lazy-load DatasetCitationTable\n DatasetCitationTable: defineAsyncComponent(() => import(/* webpackChunkName: \"dataset-citation-table\" */ \"./DatasetCitationTable.vue\")),\n },\n props: {\n modalId: {\n type: String,\n default: 'citationModal',\n },\n citationStyle: {\n type: String,\n default: '',\n },\n availableCitationStyles: {\n type: Object,\n required: true,\n },\n },\n computed: {\n ...mapGetters('datasetDetails', [\n 'getLoading',\n 'getID'\n ]),\n }\n}\n</script>\n"],"names":["_sfc_main","defineAsyncComponent","mapGetters","_hoisted_3","_hoisted_4","_hoisted_6","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_5","_toDisplayString","_ctx","
|
|
1
|
+
{"version":3,"file":"DatasetCitationModal.vue.mjs","sources":["../../lib/citation/DatasetCitationModal.vue"],"sourcesContent":["<template>\n <div class=\"modal fade\" id=\"citationModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\"\n aria-hidden=\"true\" data-cy=\"citation-modal\">\n <div class=\"modal-dialog modal-lg\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h2 class=\"modal-title\" id=\"deleteModalLabel\">\n {{ $t('message.cite.title') }}\n </h2>\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\" data-cy=\"citation-modal-close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <dataset-citation-table\n v-if=\"citationStyle && !getLoading && getID\"\n :modal-id=\"modalId\"\n :citation-style=\"citationStyle\"\n :available-citation-styles=\"availableCitationStyles\"\n />\n </div>\n <!-- Export options -->\n <!-- Currently unused but might be useful in the future -->\n <!-- <div v-if=\"false\" class=\"modal-footer\">\n <button v-for=\"({name, args, postprocess, extension, disabled}, format) in exportFormats\"\n :key=\"`format@${format}`\" type=\"button\" class=\"btn btn-link\" :disabled=\"disabled || getLoading || !citation\"\n @click=\"handleCitationExport({ args, postprocess, extension, filename: getID })\">\n {{ name }}\n </button>\n </div> -->\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { defineAsyncComponent } from 'vue';\nimport { mapGetters } from \"vuex\";\n\nexport default {\n components: {\n // Lazy-load DatasetCitationTable\n DatasetCitationTable: defineAsyncComponent(() => import(/* webpackChunkName: \"dataset-citation-table\" */ \"./DatasetCitationTable.vue\")),\n },\n props: {\n modalId: {\n type: String,\n default: 'citationModal',\n },\n citationStyle: {\n type: String,\n default: '',\n },\n availableCitationStyles: {\n type: Object,\n required: true,\n },\n },\n computed: {\n ...mapGetters('datasetDetails', [\n 'getLoading',\n 'getID'\n ]),\n }\n}\n</script>\n"],"names":["_sfc_main","defineAsyncComponent","mapGetters","_hoisted_3","_hoisted_4","_hoisted_6","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_5","_toDisplayString","_ctx","$props","_createBlock","_component_dataset_citation_table"],"mappings":";;;AAuCA,MAAKA,IAAU;AAAA,EACb,YAAY;AAAA;AAAA,IAEV,sBAAsBC,EAAqB,MAAO;AAAA;AAAA,MAAwD;AAAA,IAA4B,CAAC;AAAA,EACxI;AAAA,EACD,OAAO;AAAA,IACL,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,yBAAyB;AAAA,MACvB,MAAM;AAAA,MACN,UAAU;AAAA,IACX;AAAA,EACF;AAAA,EACD,UAAU;AAAA,IACR,GAAGC,EAAW,kBAAkB;AAAA,MAC9B;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;EA/DO,OAAM;AAAA,EAAa,IAAG;AAAA,EAAgB,UAAS;AAAA,EAAK,MAAK;AAAA,EAAS,mBAAgB;AAAA,EACrF,eAAY;AAAA,EAAO,WAAQ;;EACtB,OAAM;AAAA,EAAwB,MAAK;GACjCC,IAAA,EAAA,OAAM,gBAAe,GACnBC,IAAA,EAAA,OAAM,eAAc;EACnB,OAAM;AAAA,EAAc,IAAG;GAOxBC,IAAA,EAAA,OAAM,aAAY;;;AAZ7B,SAAAC,EAAA,GAAAC,EA+BM,OA/BNC,GA+BM;AAAA,IA7BJC,EA4BM,OA5BNC,GA4BM;AAAA,MA3BJD,EA0BM,OA1BNN,GA0BM;AAAA,QAzBJM,EAOM,OAPNL,GAOM;AAAA,UANJK,EAEK,MAFLE,GAEKC,EADAC,EAAE,GAAA,oBAAA,CAAA,GAAA,CAAA;AAAA;0BAEPJ,EAES,UAAA;AAAA,YAFD,MAAK;AAAA,YAAS,OAAM;AAAA,YAAQ,gBAAa;AAAA,YAAQ,cAAW;AAAA,YAAQ,WAAQ;AAAA;YAClFA,EAAuC,QAAjC,EAAA,eAAY,OAAM,GAAC,GAAO;AAAA;;;QAGpCA,EAOM,OAPNJ,GAOM;AAAA,UALIS,EAAa,iBAAA,CAAKD,EAAU,cAAIA,EAAK,cAD7CE,EAKEC,GAAA;AAAA;YAHC,YAAUF,EAAO;AAAA,YACjB,kBAAgBA,EAAa;AAAA,YAC7B,6BAA2BA,EAAuB;AAAA;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetCitationTable.vue.mjs","sources":["../../lib/citation/DatasetCitationTable.vue"],"sourcesContent":["/**\n * Shows a table with the dataset citation based on the current state of DatasetDetails store.\n */\n\n<template>\n <div>\n <table class=\"table table-borderless table-responsive\">\n <tbody>\n <tr>\n <th scope=\"row\" class=\"text-muted font-weight-light\">\n {{ availableCitationStyles[citationStyle] }}\n </th>\n <td v-if=\"isReady\">\n <div ref=\"bibliography\" v-html=\"bibliographyHtml\" data-cy=\"bibliography\" />\n </td>\n <td v-else>\n <div>...</div>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"mt-3 d-flex justify-content-start align-items-center\">\n <button class=\"btn btn-sm btn-outline-primary\" :disabled=\"!isReady\" @click=\"handleCopyToClipboard\"\n data-cy=\"citation-copy-to-clipboard\">\n {{ $t('message.cite.copyToClipboard') }}\n </button>\n </div>\n </div>\n\n</template>\n\n<script>\nimport { debounce } from 'lodash-es';\nimport { mapGetters } from 'vuex';\nimport { getRepresentativeLocaleOf } from '../utils/helpers';\n\nexport default {\n props: {\n modalId: {\n type: String,\n required: true,\n },\n citationStyle: {\n type: String,\n required: true,\n },\n availableCitationStyles: {\n type: Object,\n required: true,\n },\n },\n emits: ['ready'],\n data: () => ({\n currentCitationId: null,\n citation: null,\n // Currently unused, but might be useful in the future\n // exportFormats: {\n // bibtex: {\n // name: 'BibTeX',\n // format: 'bibtex',\n // args: ['biblatex'],\n // extension: 'bib',\n // },\n // datacite: {\n // name: 'DataCite XML',\n // format: 'datacite',\n // args: ['data'],\n // extension: 'xml',\n // // todo\n // disabled: true,\n // },\n // json: {\n // name: 'JSON',\n // format: 'json',\n // args: ['data', { format: 'object' }],\n // extension: 'json',\n // postprocess: o => JSON.stringify(o[0], null, 2),\n // },\n // jsonld: {\n // name: 'JSON-LD',\n // format: 'json-ld',\n // extension: 'jsonld',\n // // todo\n // disabled: true,\n // },\n // },\n }),\n computed: {\n ...mapGetters('datasetDetails', [\n 'getLoading',\n 'getID',\n ]),\n /**\n * Provide bibliography html based on current citation and citation style\n */\n bibliographyHtml() {\n if (!this.citation) {\n return '';\n }\n let bibliography = this.citation.format('bibliography', {\n format: 'html',\n template: this.citationStyle || 'apa',\n lang: 'en-US',\n });\n\n // Bibliography conditional post-processing\n // Remove Vancouver citation style numbering header from bibliography\n const isVancouver = this.citationStyle === 'vancouver';\n bibliography = bibliography && isVancouver\n ? bibliography.replace(/<div class=\"csl-left-margin\">\\d+\\. <\\/div>/g, '')\n : bibliography;\n\n return bibliography || '';\n },\n /**\n * Provide bibliography text for clipboard content\n */\n bibliographyText() {\n if (!this.citation) {\n return '';\n }\n\n const bibliographyText = this.citationStyle === 'vancouver'\n // If vancouver style, refer to html text content because it has postformatting applied\n ? this.$refs.bibliography.textContent.trim()\n // Otherwise, just format bibliography as text\n : this.citation.format('bibliography', {\n format: 'text',\n template: this.citationStyle || 'apa',\n lang: 'en-US',\n });\n\n return bibliographyText || '';\n },\n isReady() {\n this.$emit('ready');\n return !this.getLoading && this.citation && this.bibliographyHtml;\n },\n },\n watch: {\n // Update citation when dataset details are loaded\n // Uses watcher instead of computed property because computed is unable to\n // handle async code (i.e. citation retrieval per http request)\n getLoading: {\n /**\n * Assign citation object (CSL) based on current dataset in store to vm.citation\n */\n handler(isLoading) {\n if (isLoading) return;\n if (this.currentCitationId === this.getID) return;\n this.currentCitationId = this.getID;\n this.retrieveCitation(this);\n },\n immediate: false,\n },\n },\n async created() {\n const { plugins } = await import('@citation-js/core');\n\n await import('@citation-js/plugin-csl');\n await import('@citation-js/plugin-doi');\n\n const { default: installDcatStateToCsl } = await import('./plugins/dcat-state-to-csl');\n const { default: installCslAddAccessed } = await import('./plugins/csl-add-accessed');\n installDcatStateToCsl(plugins);\n installCslAddAccessed(plugins);\n\n const { default: deu } = await import('./template/deu');\n const styleConfig = plugins.config.get('@csl');\n if (styleConfig) {\n // styleConfig.templates.add(chicago.name, chicago.csl);\n // styleConfig.templates.add(datacite.name, datacite.csl);\n styleConfig.templates.add(deu.name, deu.csl);\n }\n\n this.retrieveCitation(this);\n },\n methods: {\n /**\n * Retrieves Citation Style Language (CSL) based on current dataset in store\n * Side-effect: sets vm.citation to the resulting citation object\n * @param vm Vue instance\n */\n retrieveCitation: async (vm) => {\n // Deep-clone state to avoid any unintended mutations while citation is generated\n const dataset = JSON.parse(JSON.stringify(vm.$store.state.datasetDetails.dataset));\n Object.freeze(dataset);\n\n if (!dataset || !dataset.id) return null;\n\n const citationParams = [{\n // Pass some additional data to the dataset object\n __meta: {\n // Pass the chosen dataset language for the bibliography\n lang: getRepresentativeLocaleOf(dataset.title, vm.$route.query.locale || 'en', dataset.languages),\n // Pass dataset URL for the bibliography\n url: `http://data.europa.eu/88u/dataset/${dataset.id || vm.$route.params.ds_id}`,\n skipDoiNegotiation: false,\n },\n ...dataset,\n }, {\n forceType: '@piveau/dcat-state',\n generateGraph: false,\n }];\n\n let citation = null;\n\n const { Cite } = await import('@citation-js/core')\n try {\n citation = await Cite.async(...citationParams);\n // eslint-disable-next-line no-param-reassign\n vm.citation = citation;\n return citation;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n\n // Retry by using manual citation generation as fallback\n // in case above DOI content negotiation service fails\n try {\n // eslint-disable-next-line no-underscore-dangle\n citationParams[0].__meta = { ...citationParams[0].__meta, skipDoiNegotiation: true };\n citation = await Cite.async(...citationParams);\n // eslint-disable-next-line no-param-reassign\n vm.citation = citation;\n return citation;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n\n return citation;\n },\n /**\n * Handle export of the citation\n *\n * @param {Object} format - The export format object\n * @param {String} format.args - The arguments to be passed into citation.format\n * @param {String} format.postprocess - A function to be called on the result of citation.format\n * @param {String} format.extension - The file extension\n * @param {String} format.filename - The filename\n */\n // handleCitationExport({\n // args,\n // postprocess = o => o,\n // extension,\n // filename = 'dataset',\n // }) {\n // const exportedCitation = this.citation.format(\n // ...args,\n // { graph: false },\n // );\n // const postprocessedCitation = postprocess(exportedCitation);\n\n // this.download(`${filename}.${extension}`, postprocessedCitation);\n // },\n /**\n * Download the given content as a file\n *\n * @see https://stackoverflow.com/a/45831280\n *\n * @param {String} filename - The filename\n * @param {String} content - The content to be downloaded\n */\n // download(filename, text) {\n // const element = document.createElement('a');\n // element.setAttribute('href', `data:text/plain;charset=utf-8,${encodeURIComponent(text)}`);\n // element.setAttribute('download', filename);\n\n // element.style.display = 'none';\n // document.body.appendChild(element);\n\n // element.click();\n\n // document.body.removeChild(element);\n // },\n /**\n * Copy the bibliography to the clipboard\n */\n async handleCopyToClipboard() {\n // Select the bibliography text\n window.getSelection().selectAllChildren(this.$refs.bibliography);\n\n // Copy the text to the clipboard\n try {\n await navigator.clipboard.writeText(this.bibliographyText);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy to clipboard: ', err);\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","mapGetters","bibliography","isVancouver","isLoading","plugins","installDcatStateToCsl","installCslAddAccessed","deu","styleConfig","vm","dataset","citationParams","getRepresentativeLocaleOf","citation","Cite","e","err","_hoisted_1","_hoisted_4","_hoisted_6","_hoisted_7","_createElementBlock","_createElementVNode","_hoisted_2","_toDisplayString","$props","_cache","_createTextVNode","$options","_openBlock","_hoisted_3","_hoisted_5","args","_ctx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatasetCitationTable.vue.mjs","sources":["../../lib/citation/DatasetCitationTable.vue"],"sourcesContent":["/**\n * Shows a table with the dataset citation based on the current state of DatasetDetails store.\n */\n\n<template>\n <div>\n <table class=\"table table-borderless table-responsive\">\n <tbody>\n <tr>\n <th scope=\"row\" class=\"text-muted font-weight-light\">\n {{ availableCitationStyles[citationStyle] }}\n </th>\n <td v-if=\"isReady\">\n <div ref=\"bibliography\" v-html=\"bibliographyHtml\" data-cy=\"bibliography\" />\n </td>\n <td v-else>\n <div>...</div>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"mt-3 d-flex justify-content-start align-items-center\">\n <button class=\"btn btn-sm btn-outline-primary\" :disabled=\"!isReady\" @click=\"handleCopyToClipboard\"\n data-cy=\"citation-copy-to-clipboard\">\n {{ $t('message.cite.copyToClipboard') }}\n </button>\n </div>\n </div>\n\n</template>\n\n<script>\nimport { debounce } from 'lodash-es';\nimport { mapGetters } from 'vuex';\nimport { getRepresentativeLocaleOf } from '../utils/helpers';\n\nexport default {\n props: {\n modalId: {\n type: String,\n required: true,\n },\n citationStyle: {\n type: String,\n required: true,\n },\n availableCitationStyles: {\n type: Object,\n required: true,\n },\n },\n emits: ['ready'],\n data: () => ({\n currentCitationId: null,\n citation: null,\n // Currently unused, but might be useful in the future\n // exportFormats: {\n // bibtex: {\n // name: 'BibTeX',\n // format: 'bibtex',\n // args: ['biblatex'],\n // extension: 'bib',\n // },\n // datacite: {\n // name: 'DataCite XML',\n // format: 'datacite',\n // args: ['data'],\n // extension: 'xml',\n // // todo\n // disabled: true,\n // },\n // json: {\n // name: 'JSON',\n // format: 'json',\n // args: ['data', { format: 'object' }],\n // extension: 'json',\n // postprocess: o => JSON.stringify(o[0], null, 2),\n // },\n // jsonld: {\n // name: 'JSON-LD',\n // format: 'json-ld',\n // extension: 'jsonld',\n // // todo\n // disabled: true,\n // },\n // },\n }),\n computed: {\n ...mapGetters('datasetDetails', [\n 'getLoading',\n 'getID',\n ]),\n /**\n * Provide bibliography html based on current citation and citation style\n */\n bibliographyHtml() {\n if (!this.citation) {\n return '';\n }\n let bibliography = this.citation.format('bibliography', {\n format: 'html',\n template: this.citationStyle || 'apa',\n lang: 'en-US',\n });\n\n // Bibliography conditional post-processing\n // Remove Vancouver citation style numbering header from bibliography\n const isVancouver = this.citationStyle === 'vancouver';\n bibliography = bibliography && isVancouver\n ? bibliography.replace(/<div class=\"csl-left-margin\">\\d+\\. <\\/div>/g, '')\n : bibliography;\n\n return bibliography || '';\n },\n /**\n * Provide bibliography text for clipboard content\n */\n bibliographyText() {\n if (!this.citation) {\n return '';\n }\n\n const bibliographyText = this.citationStyle === 'vancouver'\n // If vancouver style, refer to html text content because it has postformatting applied\n ? this.$refs.bibliography.textContent.trim()\n // Otherwise, just format bibliography as text\n : this.citation.format('bibliography', {\n format: 'text',\n template: this.citationStyle || 'apa',\n lang: 'en-US',\n });\n\n return bibliographyText || '';\n },\n isReady() {\n this.$emit('ready');\n return !this.getLoading && this.citation && this.bibliographyHtml;\n },\n },\n watch: {\n // Update citation when dataset details are loaded\n // Uses watcher instead of computed property because computed is unable to\n // handle async code (i.e. citation retrieval per http request)\n getLoading: {\n /**\n * Assign citation object (CSL) based on current dataset in store to vm.citation\n */\n handler(isLoading) {\n if (isLoading) return;\n if (this.currentCitationId === this.getID) return;\n this.currentCitationId = this.getID;\n this.retrieveCitation(this);\n },\n immediate: false,\n },\n },\n async created() {\n const { plugins } = await import('@citation-js/core');\n\n await import('@citation-js/plugin-csl');\n await import('@citation-js/plugin-doi');\n\n const { default: installDcatStateToCsl } = await import('./plugins/dcat-state-to-csl');\n const { default: installCslAddAccessed } = await import('./plugins/csl-add-accessed');\n installDcatStateToCsl(plugins);\n installCslAddAccessed(plugins);\n\n const { default: deu } = await import('./template/deu');\n const styleConfig = plugins.config.get('@csl');\n if (styleConfig) {\n // styleConfig.templates.add(chicago.name, chicago.csl);\n // styleConfig.templates.add(datacite.name, datacite.csl);\n styleConfig.templates.add(deu.name, deu.csl);\n }\n\n this.retrieveCitation(this);\n },\n methods: {\n /**\n * Retrieves Citation Style Language (CSL) based on current dataset in store\n * Side-effect: sets vm.citation to the resulting citation object\n * @param vm Vue instance\n */\n retrieveCitation: async (vm) => {\n // Deep-clone state to avoid any unintended mutations while citation is generated\n const dataset = JSON.parse(JSON.stringify(vm.$store.state.datasetDetails.dataset));\n Object.freeze(dataset);\n\n if (!dataset || !dataset.id) return null;\n\n const citationParams = [{\n // Pass some additional data to the dataset object\n __meta: {\n // Pass the chosen dataset language for the bibliography\n lang: getRepresentativeLocaleOf(dataset.title, vm.$route.query.locale || 'en', dataset.languages),\n // Pass dataset URL for the bibliography\n url: `http://data.europa.eu/88u/dataset/${dataset.id || vm.$route.params.ds_id}`,\n skipDoiNegotiation: false,\n },\n ...dataset,\n }, {\n forceType: '@piveau/dcat-state',\n generateGraph: false,\n }];\n\n let citation = null;\n\n const { Cite } = await import('@citation-js/core')\n try {\n citation = await Cite.async(...citationParams);\n // eslint-disable-next-line no-param-reassign\n vm.citation = citation;\n return citation;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n\n // Retry by using manual citation generation as fallback\n // in case above DOI content negotiation service fails\n try {\n // eslint-disable-next-line no-underscore-dangle\n citationParams[0].__meta = { ...citationParams[0].__meta, skipDoiNegotiation: true };\n citation = await Cite.async(...citationParams);\n // eslint-disable-next-line no-param-reassign\n vm.citation = citation;\n return citation;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n\n return citation;\n },\n /**\n * Handle export of the citation\n *\n * @param {Object} format - The export format object\n * @param {String} format.args - The arguments to be passed into citation.format\n * @param {String} format.postprocess - A function to be called on the result of citation.format\n * @param {String} format.extension - The file extension\n * @param {String} format.filename - The filename\n */\n // handleCitationExport({\n // args,\n // postprocess = o => o,\n // extension,\n // filename = 'dataset',\n // }) {\n // const exportedCitation = this.citation.format(\n // ...args,\n // { graph: false },\n // );\n // const postprocessedCitation = postprocess(exportedCitation);\n\n // this.download(`${filename}.${extension}`, postprocessedCitation);\n // },\n /**\n * Download the given content as a file\n *\n * @see https://stackoverflow.com/a/45831280\n *\n * @param {String} filename - The filename\n * @param {String} content - The content to be downloaded\n */\n // download(filename, text) {\n // const element = document.createElement('a');\n // element.setAttribute('href', `data:text/plain;charset=utf-8,${encodeURIComponent(text)}`);\n // element.setAttribute('download', filename);\n\n // element.style.display = 'none';\n // document.body.appendChild(element);\n\n // element.click();\n\n // document.body.removeChild(element);\n // },\n /**\n * Copy the bibliography to the clipboard\n */\n async handleCopyToClipboard() {\n // Select the bibliography text\n window.getSelection().selectAllChildren(this.$refs.bibliography);\n\n // Copy the text to the clipboard\n try {\n await navigator.clipboard.writeText(this.bibliographyText);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy to clipboard: ', err);\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","mapGetters","bibliography","isVancouver","isLoading","plugins","installDcatStateToCsl","installCslAddAccessed","deu","styleConfig","vm","dataset","citationParams","getRepresentativeLocaleOf","citation","Cite","e","err","_hoisted_1","_hoisted_6","_createElementBlock","_createElementVNode","_hoisted_2","_toDisplayString","$props","$options","_hoisted_3","_hoisted_5","_cache","args","_ctx","_hoisted_7"],"mappings":"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"}
|
|
@@ -19,7 +19,6 @@ export declare function useRuntimeEnv(): {
|
|
|
19
19
|
corsproxyApiUrl: string;
|
|
20
20
|
};
|
|
21
21
|
authentication: {
|
|
22
|
-
useService: boolean;
|
|
23
22
|
login: {
|
|
24
23
|
useLogin: boolean;
|
|
25
24
|
loginTitle: string;
|
|
@@ -29,6 +28,7 @@ export declare function useRuntimeEnv(): {
|
|
|
29
28
|
logoutURL: string;
|
|
30
29
|
logoutRedirectUri: string;
|
|
31
30
|
};
|
|
31
|
+
useService: boolean;
|
|
32
32
|
keycloak: {
|
|
33
33
|
realm: string;
|
|
34
34
|
clientId: string;
|
|
@@ -309,9 +309,9 @@ export declare function useRuntimeEnv(): {
|
|
|
309
309
|
};
|
|
310
310
|
};
|
|
311
311
|
languages: {
|
|
312
|
+
useLanguageSelector: boolean;
|
|
312
313
|
locale: string;
|
|
313
314
|
fallbackLocale: string;
|
|
314
|
-
useLanguageSelector: boolean;
|
|
315
315
|
};
|
|
316
316
|
themes: {
|
|
317
317
|
header: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { object as a, string as e, boolean as t, number as u, enum as l } from "../../external/zod/
|
|
1
|
+
import { object as a, string as e, boolean as t, number as u, enum as l } from "../../external/zod/dist/esm/v3/types";
|
|
2
2
|
const o = a({
|
|
3
3
|
realm: e().default("piveau"),
|
|
4
4
|
url: e().url().optional(),
|
|
@@ -2054,13 +2054,13 @@ export declare const configSchema: z.ZodObject<{
|
|
|
2054
2054
|
locale: z.ZodDefault<z.ZodString>;
|
|
2055
2055
|
fallbackLocale: z.ZodDefault<z.ZodString>;
|
|
2056
2056
|
}, "strip", z.ZodTypeAny, {
|
|
2057
|
+
useLanguageSelector: boolean;
|
|
2057
2058
|
locale: string;
|
|
2058
2059
|
fallbackLocale: string;
|
|
2059
|
-
useLanguageSelector: boolean;
|
|
2060
2060
|
}, {
|
|
2061
|
+
useLanguageSelector?: boolean | undefined;
|
|
2061
2062
|
locale?: string | undefined;
|
|
2062
2063
|
fallbackLocale?: string | undefined;
|
|
2063
|
-
useLanguageSelector?: boolean | undefined;
|
|
2064
2064
|
}>>;
|
|
2065
2065
|
/**
|
|
2066
2066
|
* Theming options (optional).
|
|
@@ -2106,7 +2106,6 @@ export declare const configSchema: z.ZodObject<{
|
|
|
2106
2106
|
corsproxyApiUrl: string;
|
|
2107
2107
|
};
|
|
2108
2108
|
authentication: {
|
|
2109
|
-
useService: boolean;
|
|
2110
2109
|
login: {
|
|
2111
2110
|
useLogin: boolean;
|
|
2112
2111
|
loginTitle: string;
|
|
@@ -2116,6 +2115,7 @@ export declare const configSchema: z.ZodObject<{
|
|
|
2116
2115
|
logoutURL: string;
|
|
2117
2116
|
logoutRedirectUri: string;
|
|
2118
2117
|
};
|
|
2118
|
+
useService: boolean;
|
|
2119
2119
|
keycloak: {
|
|
2120
2120
|
realm: string;
|
|
2121
2121
|
clientId: string;
|
|
@@ -2396,9 +2396,9 @@ export declare const configSchema: z.ZodObject<{
|
|
|
2396
2396
|
};
|
|
2397
2397
|
};
|
|
2398
2398
|
languages: {
|
|
2399
|
+
useLanguageSelector: boolean;
|
|
2399
2400
|
locale: string;
|
|
2400
2401
|
fallbackLocale: string;
|
|
2401
|
-
useLanguageSelector: boolean;
|
|
2402
2402
|
};
|
|
2403
2403
|
themes: {
|
|
2404
2404
|
header: string;
|
|
@@ -2794,9 +2794,9 @@ export declare const configSchema: z.ZodObject<{
|
|
|
2794
2794
|
} | undefined;
|
|
2795
2795
|
} | undefined;
|
|
2796
2796
|
languages?: {
|
|
2797
|
+
useLanguageSelector?: boolean | undefined;
|
|
2797
2798
|
locale?: string | undefined;
|
|
2798
2799
|
fallbackLocale?: string | undefined;
|
|
2799
|
-
useLanguageSelector?: boolean | undefined;
|
|
2800
2800
|
} | undefined;
|
|
2801
2801
|
themes?: {
|
|
2802
2802
|
header?: string | undefined;
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
const j =
|
|
11
|
-
api:
|
|
12
|
-
authentication:
|
|
1
|
+
import { apiSchema as t } from "./apiSchema.mjs";
|
|
2
|
+
import { authenticationSchema as m } from "./authenticationSchema.mjs";
|
|
3
|
+
import { contentSchema as o } from "./contentSchema.mjs";
|
|
4
|
+
import { routingSchema as a } from "./routingSchema.mjs";
|
|
5
|
+
import { metadataSchema as e } from "./metadataSchema.mjs";
|
|
6
|
+
import { languagesSchema as r } from "./languagesSchema.mjs";
|
|
7
|
+
import { themesSchema as c } from "./themesSchema.mjs";
|
|
8
|
+
import { trackerSchema as i } from "./trackerSchema.mjs";
|
|
9
|
+
import { object as n } from "../../external/zod/dist/esm/v3/types";
|
|
10
|
+
const j = n({
|
|
11
|
+
api: t,
|
|
12
|
+
authentication: m,
|
|
13
13
|
/**
|
|
14
14
|
* Routing options (optional).
|
|
15
15
|
*/
|
|
16
|
-
routing:
|
|
16
|
+
routing: a,
|
|
17
17
|
/**
|
|
18
18
|
* Metadata options (optional).
|
|
19
19
|
*/
|
|
20
|
-
metadata:
|
|
20
|
+
metadata: e,
|
|
21
21
|
/**
|
|
22
22
|
* Content options (optional).
|
|
23
23
|
*/
|
|
24
|
-
content:
|
|
24
|
+
content: o,
|
|
25
25
|
/**
|
|
26
26
|
* Language options (optional).
|
|
27
27
|
*/
|
|
28
|
-
languages:
|
|
28
|
+
languages: r,
|
|
29
29
|
/**
|
|
30
30
|
* Theming options (optional).
|
|
31
31
|
*/
|
|
32
|
-
themes:
|
|
32
|
+
themes: c,
|
|
33
33
|
/**
|
|
34
34
|
* Tracker options (optional).
|
|
35
35
|
*/
|
|
36
|
-
tracker:
|
|
36
|
+
tracker: i
|
|
37
37
|
});
|
|
38
38
|
export {
|
|
39
39
|
j as configSchema
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { object as l, string as t, boolean as e, coerce as a, array as u, record as b, number as o, tuple as r, union as f, literal as s } from "../../external/zod/
|
|
1
|
+
import { object as l, string as t, boolean as e, coerce as a, array as u, record as b, number as o, tuple as r, union as f, literal as s } from "../../external/zod/dist/esm/v3/types";
|
|
2
2
|
const i = l({
|
|
3
3
|
or: t().default("OR"),
|
|
4
4
|
and: t().default("AND")
|
|
@@ -4,11 +4,11 @@ export declare const languagesSchema: z.ZodDefault<z.ZodObject<{
|
|
|
4
4
|
locale: z.ZodDefault<z.ZodString>;
|
|
5
5
|
fallbackLocale: z.ZodDefault<z.ZodString>;
|
|
6
6
|
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
useLanguageSelector: boolean;
|
|
7
8
|
locale: string;
|
|
8
9
|
fallbackLocale: string;
|
|
9
|
-
useLanguageSelector: boolean;
|
|
10
10
|
}, {
|
|
11
|
+
useLanguageSelector?: boolean | undefined;
|
|
11
12
|
locale?: string | undefined;
|
|
12
13
|
fallbackLocale?: string | undefined;
|
|
13
|
-
useLanguageSelector?: boolean | undefined;
|
|
14
14
|
}>>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { object as e, string as a } from "../../external/zod/
|
|
1
|
+
import { object as e, string as a } from "../../external/zod/dist/esm/v3/types";
|
|
2
2
|
const o = e({
|
|
3
3
|
title: a().default("piveau Hub-UI"),
|
|
4
4
|
description: a().default("A modern and customizable web application for data management of extensive data catalogs."),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { object as e, string as t, boolean as a, number as r, array as u } from "../../external/zod/
|
|
1
|
+
import { object as e, string as t, boolean as a, number as r, array as u } from "../../external/zod/dist/esm/v3/types";
|
|
2
2
|
const s = e({
|
|
3
3
|
routerOptions: e({
|
|
4
4
|
base: t().default("/"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CatalogueMQA.vue.mjs","sources":["../../lib/data-provider-interface/CatalogueMQA.vue"],"sourcesContent":["<template>\n <div class=\"container mb-3\">\n <div>\n <div>\n <div class=\"debug\">\n <strong> API object:</strong> <br><br>\n\n <textarea> {{ token }} </textarea>\n <hr>\n <!-- Disabled for PPE release (no backend on PPE yet)-->\n {{ notficationInfo }}\n\n <br> --- <br>\n\n {{ mailList }}\n\n <br>---<br>\n <strong>Fequency:</strong> <br>\n weekly: {{ weekly }}<br>\n monthly: {{ monthly }} <br>\n <p></p>\n unit: {{ frequencyUnit }} <br>\n value: {{ frequencyValue }}\n\n <br>---<br>\n threshold: {{ threshold }}\n\n </div>\n <h1>MQA notification settings</h1>\n <p>Configuration for\n\n <strong>{{ catalogId }}</strong>\n <!-- <strong>Test Catalogue</strong> -->\n </p>\n <p>For this Catalogue the <b>MQA Rating Checks </b>are currently <b>\n <span v-if=\"!active\">deactivated</span>\n <span v-if=\"active\">activated</span></b>.</p>\n </div>\n\n <button type=\"button\" :class=\"{ 'btn btn-primary mb-5': !active, 'btn btn-secondary': active }\" @click=\"handleActivate()\">\n {{ activatedString }}\n </button>\n </div>\n\n <div v-if=\"active\">\n <div class=\"mqaWrapper\" >\n <h3>Recipients Mail</h3>\n <span>Add and edit mail addresses for recieving the MQA report</span>\n <table class=\"mt-4\" ref=\"mailButtonWrap\" v-if=\"mailList.length !== 0\">\n <tr>\n <th>Mail</th>\n </tr>\n <tr v-for=\"(item, index) in mailList\" class=\"mailItems\" :key=\"index\">\n <td>\n <span v-if=\"!editMode\">{{ item }}</span>\n <input type=\"text\" v-model=\"mailList[index]\" class=\"mail-input\" v-if=\"editMode\"\n @input=\"editErrors[index] = ''\"\n :class=\"{ 'invalidNewMail': editErrors[index] }\" >\n\n <div>\n <button type=\"button\" class=\"btn btn-simple\"\n @click=\"editMode ? saveMail(index) : editMail(index)\">\n {{ editMode ? 'Save' : 'Edit' }}\n </button>\n <button type=\"button\" class=\"btn btn-simple\"\n @click=\"deleteMail(index)\">Delete</button>\n </div>\n </td>\n <span class=\"errormsg\" v-if=\"editErrors[index]\">{{ editErrors[index] }}</span>\n </tr>\n </table>\n <div class=\"d-flex mt-3\">\n <input type=\"text\" v-model=\"newMail.mail\" @input=\"newMail.isValid = true\"\n :class=\"{ 'invalidNewMail': !newMail.isValid }\" placeholder=\"Enter email address\"\n class=\"mail\">\n <button type=\"button\" class=\"btn btn-simple mx-3\" @click=\"addNewMail()\">+ Add Mail</button>\n </div>\n <span class=\"errormsg\" v-if=\"!newMail.isValid\">*Invalid email format</span>\n </div>\n <div class=\"mqaWrapper\">\n <h3>Frequency of Rating Checks</h3>\n <span>Configure the frequency of the MQA rating checks.</span>\n\n <div class=\"d-flex mt-3\">\n <div class=\"mr-3 my-3\">\n <button type=\"button\" class=\"btn btn-simple\" @click=\"setWeekly()\"\n :class=\"{ 'activeChoiceButton': weekly }\">Weekly</button>\n <div class=\"weekdays\" :class=\"{ 'blur': !weekly }\">\n <span v-for=\"(day, index) in week\" :key=\"index\">\n <button :disabled=\"!weekly\" class=\"dayButtons\"\n :class=\"{ 'activeItem': selectedDay === index }\" @click=\"selectDay(index)\">\n {{ day }}\n </button>\n </span>\n </div>\n </div>\n <div class=\"my-3\">\n <button type=\"button\" :class=\"{ 'activeChoiceButton': monthly }\" class=\"btn btn-simple\"\n @click=\"setMonthly()\">Monthly</button>\n <div class=\"d-flex daypicker my-3\" :class=\"{ 'blur': !monthly }\">\n <input v-model=\"daysInMonth\" @input=\"selectDay(index)\" :class=\"{ dynamicWidth: inputWidth }\"\n :disabled=\"!monthly\">\n <div class=\"caretWrap\">\n <button @click=\"editDate('up')\" class=\"caretButtons ml-1\"><svg\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" fill=\"currentColor\"\n class=\"bi bi-caret-up-fill\" viewBox=\"0 0 16 16\">\n <path\n d=\"m7.247 4.86-4.796 5.481c-.566.647-.106 1.659.753 1.659h9.592a1 1 0 0 0 .753-1.659l-4.796-5.48a1 1 0 0 0-1.506 0z\" />\n </svg></button>\n <button @click=\"editDate()\" class=\"caretButtons mr-1\"><svg\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" fill=\"currentColor\"\n class=\"bi bi-caret-down-fill\" viewBox=\"0 0 16 16\">\n <path\n d=\"M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n </svg></button>\n </div>\n <span>day of the month</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mqaWrapper\">\n <h3>Notification Threshold</h3>\n <span>This slider sets a threshold value. A notification email will be sent when the measured value increases and the difference between the first and last measurement exceeds the set threshold.</span>\n <div class=\"w-50 mt-3\">\n <div class=\"d-flex justify-content-between\">\n <span><b>0</b></span>\n <span><b>400</b></span>\n </div>\n <input type=\"range\" v-model=\"threshold\" min=\"0\" max=\"400\" />\n <p>Lower than <b>{{ threshold }}</b> Points</p>\n </div>\n </div>\n <div class=\"actionWrapper\">\n <button type=\"button\" class=\"btn btn-primary\" @click=\"postNotificationSettings\">Save</button>\n <button type=\"button\" class=\"btn btn-cancel\" @click=\"back()\">Cancel</button>\n </div>\n </div>\n </div>\n\n</template>\n<script setup>\n\nimport { ref } from 'vue';\nimport { useRoute } from 'vue-router'\nimport { getCurrentInstance } from \"vue\";\nimport { useStore } from 'vuex';\nimport { useRouter } from 'vue-router';\nimport { mapActions } from 'vuex'\nimport { computed } from 'vue'\nimport { mapGetters } from 'vuex'\n\nimport axios from 'axios'\n\nconst store = useStore();\nconst router = useRouter();\nconst getUserDrafts = computed(() => store.getters['auth/getUserDrafts'])\nconst getUserData = computed(() => store.getters['auth/getUserData'])\nconst token = computed(() => getUserData.value.rtpToken)\n\n// Update the mapActions usage\nconst authActions = mapActions('auth', {\n updateUserData: 'updateUserData'\n})\n\n// Destructure the action\nconst { updateUserData } = authActions\n\nconst showSnackbar = (payload) => {\n store.dispatch('snackbar/showSnackbar', payload);\n};\n\nconst triggerSnackbar = () => {\n showSnackbar({\n message: 'Saved Successfully',\n variant: 'success',\n });\n };\n\n// Map the showSnackbar action from the snackbar module\n\nconst route = useRoute()\n\nlet monthly = ref(false)\nlet weekly = ref(false)\nlet mailButtonWrap = ref(null)\nlet activatedString = ref('Activate')\nlet inputWidth = ref(false)\nlet active = ref(false)\nlet mailList = ref()\nlet week = ['Mo', 'Tue', 'We', 'Th', 'Fr', 'Sa', 'Su']\nlet daysInMonth = ref(1)\nlet editMode = ref(false);\nlet threshold = ref(0);\nlet frequencyUnit = ref('');\nlet frequencyValue = ref('');\nlet selectedDay = ref(null);\nconst catalogId = route.params.id\nconst app = getCurrentInstance()\nconst notificationBaseUrl = app.appContext.app.config.globalProperties.$env.api.notificationBaseUrl\nconst apiKey = app.appContext.app.config.globalProperties.$env.api.apiKey\n\n\n\nconst selectDay = (index) => {\n if (weekly.value) {\n selectedDay.value = index;\n frequencyValue.value = selectedDay; // Update frequencyValue when a day is selected\n }\n};\n\nconst setWeekly = () => {\n weekly.value = true;\n monthly.value = false;\n selectedDay.value = frequencyValue.value; // Set the selected day based on frequencyValue\n};\n\nconst setMonthly = () => {\n weekly.value = false;\n monthly.value = true;\n selectedDay.value = frequencyValue.value; // Set the day of the month based on frequencyValue\n};\n\nconst notficationInfo = ref({})\n\nconst isValidEmail = (email) => {\n const regex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return regex.test(email);\n};\n\nlet newMail = ref({ mail: '', isValid: true });\nlet editErrors = ref({});\n\n// enabeld for PPE release (dummy data)\n// mailList.value = [{ 'mail': \"mail@mail2.com\" }, { 'mail': \"mail@mail1.com\" }]\n\nconst fetchNotificationInfo = async () => {\n const config = {\n method: 'get',\n url: `${notificationBaseUrl}/catalogue/${catalogId}/setting`,\n headers: {\n Authorization: `Bearer ${token.value}`,\n },\n }\n\n try {\n const response = await axios.request(config)\n notficationInfo.value = response.data\n\n if (notficationInfo.value.activeStatus === true) {\n active.value = true\n activatedString.value = 'Deactivate'\n } if (notficationInfo.value.activeStatus === false) {\n active.value = false\n activatedString.value = 'Activate'\n }\n\n mailList.value = notficationInfo.value.receiverEmailList\n frequencyUnit.value = notficationInfo.value.frequency.unit\n frequencyValue.value = notficationInfo.value.frequency.value\n threshold.value = notficationInfo.value.threshold\n\n if (frequencyUnit.value === 'week') {\n weekly.value = true\n monthly.value = false\n selectedDay.value = frequencyValue.value; // Set the selected day based on frequencyValue\n } else if (frequencyUnit.value === 'month') {\n weekly.value = false\n monthly.value = true\n daysInMonth.value = frequencyValue.value\n }\n\n console.log('Response:', response)\n } catch (error) {\n console.log('Full error:', error)\n }\n}\n\nconst postNotificationSettings = async () => {\n\n if (weekly.value === true) {\n frequencyUnit.value = \"week\"\n frequencyValue.value = selectedDay.value\n } else if (monthly.value === true) {\n frequencyUnit.value = \"month\"\n frequencyValue.value = daysInMonth.value\n }\n\n const config = {\n method: 'post',\n url: `${notificationBaseUrl}/catalogue/${catalogId}/setting`,\n headers: {\n Authorization: `Bearer ${token.value}`,\n 'Content-Type': 'application/json',\n },\n withCredentials: true,\n data: JSON.stringify({\n receiverEmailList: mailList.value,\n threshold: Number(threshold.value),\n frequency: {\n unit: frequencyUnit.value,\n value: frequencyValue.value\n },\n activeStatus: true\n })\n }\n\n try {\n const response = await axios.request(config)\n console.log('Settings updated:', response.data)\n triggerSnackbar();\n router.push({ name: 'DataProviderInterface-UserCatalogues' });\n return response.data\n\n } catch (error) {\n triggerSnackbar({\n message: 'Error updating settings.',\n variant: 'error',\n });\n\n console.log('Error updating settings:', error)\n\n throw error\n }\n}\n\nfetchNotificationInfo()\n\nconst postDeactive = async () => {\n\n const config = {\n method: 'post',\n url: `${notificationBaseUrl}/catalogue/${catalogId}/setting`,\n headers: {\n Authorization: `Bearer ${token.value}`,\n 'Content-Type': 'application/json',\n },\n withCredentials: true,\n data: JSON.stringify({\n activeStatus: active.value\n })\n }\n\n try {\n const response = await axios.request(config)\n console.log('Settings updated:', response.data)\n triggerSnackbar();\n if(!active.value) {router.push({ name: 'DataProviderInterface-UserCatalogues' });}\n return response.data\n\n\n } catch (error) {\n triggerSnackbar({\n message: 'Error updating settings.',\n variant: 'error',\n });\n\n console.log('Error updating settings:', error)\n\n throw error\n\n }\n}\n\nconst editMail = () => {\n editMode.value = true\n showSnackbar({\n message: 'Email added successfully.',\n variant: 'success',\n });\n}\n\nconst saveMail = (index) => {\n const email = mailList.value[index].trim();\n if (isValidEmail(email)) {\n editMode.value = false;\n delete editErrors.value[index];\n } else {\n editErrors.value[index] = '*Invalid email format';\n }\n};\n\nconst deleteMail = (index) => {\n mailList.value.splice(index, 1);\n}\n\nconst editDate = (count) => {\n if (count === \"up\" && daysInMonth.value < 28) {\n if (daysInMonth.value > 8) {\n inputWidth.value = true\n }\n daysInMonth.value++\n }\n else if (daysInMonth.value > 1) {\n if (daysInMonth.value < 11) {\n inputWidth.value = false\n }\n daysInMonth.value--\n }\n}\n\nconst addNewMail = () => {\n if (newMail.value.mail.trim() === '') {\n newMail.value.isValid = false;\n return;\n }\n if (isValidEmail(newMail.value.mail)) {\n mailList.value.push(newMail.value.mail);\n newMail.value.mail = ''; // Clear input after successful addition\n newMail.value.isValid = true;\n } else {\n newMail.value.isValid = false;\n }\n}\nconst handleActivate = () => {\n if (!active.value) {\n active.value = true\n activatedString.value = 'Deactivate'\n postDeactive()\n } else {\n active.value = false\n activatedString.value = 'Activate'\n postDeactive()\n }\n}\n\nconst back = () => {\n router.push({ name: 'DataProviderInterface-UserCatalogues' });\n}\n\n</script>\n<style scoped>\n.debug {\n position: fixed;\n right: 20px;\n top: 20px;\n border-radius: 20px;\n width: 400px;\n z-index: 999999;\n padding: 20px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 16px;\n box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);\n backdrop-filter: blur(5px);\n -webkit-backdrop-filter: blur(5px);\n border: 1px solid rgba(255, 255, 255, 0.3);\n display: none;\n}\n\n.btn-simple {\n border-color: rgb(115, 115, 115);\n}\n\n.btn-cancel {\n border-color: transparent;\n}\n\n.mail {\n width: 270px;\n padding: 5px 5px 5px 10px;\n}\n\n\n.errormsg {\n color: red;\n font-size: 10px;\n}\n\n.activeChoiceButton {\n background-color: var(--primary);\n color: white;\n border-color: var(--primary);\n\n &:active {\n background-color: #3E6CD5 !important;\n }\n\n &:focus {\n outline: none;\n background-color: #3E6CD5;\n }\n\n &:focus-visible {\n outline: none;\n background-color: #3E6CD5;\n }\n}\n\n\n.invalid {\n border-bottom: 1px solid red !important;\n}\n\n.blur {\n opacity: 0.3;\n}\n\n.invalidNewMail {\n\n border-radius: 2px;\n border: 2px solid rgba(255, 0, 0, 0.336);\n\n &:focus {\n border-radius: 2px;\n box-shadow: 0 0 0 0.1rem rgba(255, 0, 0, 0.774);\n border: 1px solid rgba(255, 0, 0, 0.336);\n }\n\n &:focus-visible {\n outline: 0;\n border-radius: 2px;\n box-shadow: 0 0 0 0.1rem rgba(255, 0, 0, 0.774);\n border: 1px solid rgba(255, 0, 0, 0.336);\n }\n}\n\n.editable {\n transition: all 200ms ease-in-out;\n padding-left: 0.5rem;\n border-bottom: 2px solid var(--primary) !important;\n}\n\n.invalid {\n border-bottom: 1px solid red !important;\n}\n\n.caretButtons {\n all: unset;\n cursor: pointer;\n}\n\n.caretWrap {\n display: contents;\n\n}\n\n.actionWrapper {\n display: flex;\n flex-direction: row-reverse;\n margin-bottom: 100px;\n\n button {\n margin-left: 1rem;\n }\n}\n\ninput[type=\"range\"] {\n width: 100%;\n}\n\n.mqaWrapper {\n margin: 3rem 0;\n}\n\ntable {\n margin-top: 1rem;\n min-width: 50%;\n}\n\nth {\n border-bottom: 1px solid lightgray;\n}\n\ntd {\n display: flex;\n justify-content: space-between;\n padding: 15px 0 0 0cap;\n}\n\n.daypicker {\n padding: 1rem;\n border: 1px solid lightgray;\n border-radius: 15px;\n\n input {\n width: 25px;\n border: none;\n background-color: unset;\n font-weight: 700;\n }\n\n}\n\n.dynamicWidth {\n width: 22px !important;\n}\n\n.activeItem {\n background-color: var(--primary);\n color: white;\n}\n\n.weekdays {\n border: 1px solid lightgray;\n border-radius: 15px;\n margin: 1rem 0;\n overflow: hidden;\n\n .dayButtons {\n border: none;\n display: inline-block;\n text-align: center;\n flex-direction: row;\n min-width: 60px;\n padding: 1rem;\n border-right: 1px solid lightgray;\n cursor: pointer;\n\n &:focus-visible {\n outline: unset;\n background-color: #3E6CD5;\n color: white;\n }\n\n &:hover {\n background-color: #3E6CD5;\n color: white;\n }\n }\n\n span:last-child button {\n border: none;\n }\n}\n\n.mqaWrapper {\n padding: 1rem;\n background-color: #f3f6fc;\n border-radius: 3px;\n}\n\nbutton {\n background-color: unset;\n border: 1px solid var(--primary);\n color: black;\n\n &:hover {\n background-color: #3E6CD5;\n color: white;\n border: 1px solid #3E6CD5;\n }\n}\n\n.btn-primary {\n background-color: var(--primary);\n color: white;\n\n}\n\n.btn-secondary {\n color: #0e47cb;\n}\n\nbutton,\nspan {\n transition: all 100ms ease-in-out;\n}\n</style>\n"],"names":["store","useStore","router","useRouter","computed","getUserData","token","mapActions","showSnackbar","payload","triggerSnackbar","route","useRoute","monthly","ref","weekly","mailButtonWrap","activatedString","inputWidth","active","mailList","week","daysInMonth","editMode","threshold","frequencyUnit","frequencyValue","selectedDay","catalogId","app","getCurrentInstance","notificationBaseUrl","selectDay","index","setWeekly","setMonthly","notficationInfo","isValidEmail","email","newMail","editErrors","fetchNotificationInfo","config","response","axios","error","postNotificationSettings","postDeactive","editMail","saveMail","deleteMail","editDate","count","addNewMail","handleActivate","back"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CatalogueMQA.vue.mjs","sources":["../../lib/data-provider-interface/CatalogueMQA.vue"],"sourcesContent":["<template>\n <div class=\"container mb-3\">\n <div>\n <div>\n <div class=\"debug\">\n <strong> API object:</strong> <br><br>\n\n <textarea> {{ token }} </textarea>\n <hr>\n <!-- Disabled for PPE release (no backend on PPE yet)-->\n {{ notficationInfo }}\n\n <br> --- <br>\n\n {{ mailList }}\n\n <br>---<br>\n <strong>Fequency:</strong> <br>\n weekly: {{ weekly }}<br>\n monthly: {{ monthly }} <br>\n <p></p>\n unit: {{ frequencyUnit }} <br>\n value: {{ frequencyValue }}\n\n <br>---<br>\n threshold: {{ threshold }}\n\n </div>\n <h1>MQA notification settings</h1>\n <p>Configuration for\n\n <strong>{{ catalogId }}</strong>\n <!-- <strong>Test Catalogue</strong> -->\n </p>\n <p>For this Catalogue the <b>MQA Rating Checks </b>are currently <b>\n <span v-if=\"!active\">deactivated</span>\n <span v-if=\"active\">activated</span></b>.</p>\n </div>\n\n <button type=\"button\" :class=\"{ 'btn btn-primary mb-5': !active, 'btn btn-secondary': active }\" @click=\"handleActivate()\">\n {{ activatedString }}\n </button>\n </div>\n\n <div v-if=\"active\">\n <div class=\"mqaWrapper\" >\n <h3>Recipients Mail</h3>\n <span>Add and edit mail addresses for recieving the MQA report</span>\n <table class=\"mt-4\" ref=\"mailButtonWrap\" v-if=\"mailList.length !== 0\">\n <tr>\n <th>Mail</th>\n </tr>\n <tr v-for=\"(item, index) in mailList\" class=\"mailItems\" :key=\"index\">\n <td>\n <span v-if=\"!editMode\">{{ item }}</span>\n <input type=\"text\" v-model=\"mailList[index]\" class=\"mail-input\" v-if=\"editMode\"\n @input=\"editErrors[index] = ''\"\n :class=\"{ 'invalidNewMail': editErrors[index] }\" >\n\n <div>\n <button type=\"button\" class=\"btn btn-simple\"\n @click=\"editMode ? saveMail(index) : editMail(index)\">\n {{ editMode ? 'Save' : 'Edit' }}\n </button>\n <button type=\"button\" class=\"btn btn-simple\"\n @click=\"deleteMail(index)\">Delete</button>\n </div>\n </td>\n <span class=\"errormsg\" v-if=\"editErrors[index]\">{{ editErrors[index] }}</span>\n </tr>\n </table>\n <div class=\"d-flex mt-3\">\n <input type=\"text\" v-model=\"newMail.mail\" @input=\"newMail.isValid = true\"\n :class=\"{ 'invalidNewMail': !newMail.isValid }\" placeholder=\"Enter email address\"\n class=\"mail\">\n <button type=\"button\" class=\"btn btn-simple mx-3\" @click=\"addNewMail()\">+ Add Mail</button>\n </div>\n <span class=\"errormsg\" v-if=\"!newMail.isValid\">*Invalid email format</span>\n </div>\n <div class=\"mqaWrapper\">\n <h3>Frequency of Rating Checks</h3>\n <span>Configure the frequency of the MQA rating checks.</span>\n\n <div class=\"d-flex mt-3\">\n <div class=\"mr-3 my-3\">\n <button type=\"button\" class=\"btn btn-simple\" @click=\"setWeekly()\"\n :class=\"{ 'activeChoiceButton': weekly }\">Weekly</button>\n <div class=\"weekdays\" :class=\"{ 'blur': !weekly }\">\n <span v-for=\"(day, index) in week\" :key=\"index\">\n <button :disabled=\"!weekly\" class=\"dayButtons\"\n :class=\"{ 'activeItem': selectedDay === index }\" @click=\"selectDay(index)\">\n {{ day }}\n </button>\n </span>\n </div>\n </div>\n <div class=\"my-3\">\n <button type=\"button\" :class=\"{ 'activeChoiceButton': monthly }\" class=\"btn btn-simple\"\n @click=\"setMonthly()\">Monthly</button>\n <div class=\"d-flex daypicker my-3\" :class=\"{ 'blur': !monthly }\">\n <input v-model=\"daysInMonth\" @input=\"selectDay(index)\" :class=\"{ dynamicWidth: inputWidth }\"\n :disabled=\"!monthly\">\n <div class=\"caretWrap\">\n <button @click=\"editDate('up')\" class=\"caretButtons ml-1\"><svg\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" fill=\"currentColor\"\n class=\"bi bi-caret-up-fill\" viewBox=\"0 0 16 16\">\n <path\n d=\"m7.247 4.86-4.796 5.481c-.566.647-.106 1.659.753 1.659h9.592a1 1 0 0 0 .753-1.659l-4.796-5.48a1 1 0 0 0-1.506 0z\" />\n </svg></button>\n <button @click=\"editDate()\" class=\"caretButtons mr-1\"><svg\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" fill=\"currentColor\"\n class=\"bi bi-caret-down-fill\" viewBox=\"0 0 16 16\">\n <path\n d=\"M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n </svg></button>\n </div>\n <span>day of the month</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mqaWrapper\">\n <h3>Notification Threshold</h3>\n <span>This slider sets a threshold value. A notification email will be sent when the measured value increases and the difference between the first and last measurement exceeds the set threshold.</span>\n <div class=\"w-50 mt-3\">\n <div class=\"d-flex justify-content-between\">\n <span><b>0</b></span>\n <span><b>400</b></span>\n </div>\n <input type=\"range\" v-model=\"threshold\" min=\"0\" max=\"400\" />\n <p>Lower than <b>{{ threshold }}</b> Points</p>\n </div>\n </div>\n <div class=\"actionWrapper\">\n <button type=\"button\" class=\"btn btn-primary\" @click=\"postNotificationSettings\">Save</button>\n <button type=\"button\" class=\"btn btn-cancel\" @click=\"back()\">Cancel</button>\n </div>\n </div>\n </div>\n\n</template>\n<script setup>\n\nimport { ref } from 'vue';\nimport { useRoute } from 'vue-router'\nimport { getCurrentInstance } from \"vue\";\nimport { useStore } from 'vuex';\nimport { useRouter } from 'vue-router';\nimport { mapActions } from 'vuex'\nimport { computed } from 'vue'\nimport { mapGetters } from 'vuex'\n\nimport axios from 'axios'\n\nconst store = useStore();\nconst router = useRouter();\nconst getUserDrafts = computed(() => store.getters['auth/getUserDrafts'])\nconst getUserData = computed(() => store.getters['auth/getUserData'])\nconst token = computed(() => getUserData.value.rtpToken)\n\n// Update the mapActions usage\nconst authActions = mapActions('auth', {\n updateUserData: 'updateUserData'\n})\n\n// Destructure the action\nconst { updateUserData } = authActions\n\nconst showSnackbar = (payload) => {\n store.dispatch('snackbar/showSnackbar', payload);\n};\n\nconst triggerSnackbar = () => {\n showSnackbar({\n message: 'Saved Successfully',\n variant: 'success',\n });\n };\n\n// Map the showSnackbar action from the snackbar module\n\nconst route = useRoute()\n\nlet monthly = ref(false)\nlet weekly = ref(false)\nlet mailButtonWrap = ref(null)\nlet activatedString = ref('Activate')\nlet inputWidth = ref(false)\nlet active = ref(false)\nlet mailList = ref()\nlet week = ['Mo', 'Tue', 'We', 'Th', 'Fr', 'Sa', 'Su']\nlet daysInMonth = ref(1)\nlet editMode = ref(false);\nlet threshold = ref(0);\nlet frequencyUnit = ref('');\nlet frequencyValue = ref('');\nlet selectedDay = ref(null);\nconst catalogId = route.params.id\nconst app = getCurrentInstance()\nconst notificationBaseUrl = app.appContext.app.config.globalProperties.$env.api.notificationBaseUrl\nconst apiKey = app.appContext.app.config.globalProperties.$env.api.apiKey\n\n\n\nconst selectDay = (index) => {\n if (weekly.value) {\n selectedDay.value = index;\n frequencyValue.value = selectedDay; // Update frequencyValue when a day is selected\n }\n};\n\nconst setWeekly = () => {\n weekly.value = true;\n monthly.value = false;\n selectedDay.value = frequencyValue.value; // Set the selected day based on frequencyValue\n};\n\nconst setMonthly = () => {\n weekly.value = false;\n monthly.value = true;\n selectedDay.value = frequencyValue.value; // Set the day of the month based on frequencyValue\n};\n\nconst notficationInfo = ref({})\n\nconst isValidEmail = (email) => {\n const regex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return regex.test(email);\n};\n\nlet newMail = ref({ mail: '', isValid: true });\nlet editErrors = ref({});\n\n// enabeld for PPE release (dummy data)\n// mailList.value = [{ 'mail': \"mail@mail2.com\" }, { 'mail': \"mail@mail1.com\" }]\n\nconst fetchNotificationInfo = async () => {\n const config = {\n method: 'get',\n url: `${notificationBaseUrl}/catalogue/${catalogId}/setting`,\n headers: {\n Authorization: `Bearer ${token.value}`,\n },\n }\n\n try {\n const response = await axios.request(config)\n notficationInfo.value = response.data\n\n if (notficationInfo.value.activeStatus === true) {\n active.value = true\n activatedString.value = 'Deactivate'\n } if (notficationInfo.value.activeStatus === false) {\n active.value = false\n activatedString.value = 'Activate'\n }\n\n mailList.value = notficationInfo.value.receiverEmailList\n frequencyUnit.value = notficationInfo.value.frequency.unit\n frequencyValue.value = notficationInfo.value.frequency.value\n threshold.value = notficationInfo.value.threshold\n\n if (frequencyUnit.value === 'week') {\n weekly.value = true\n monthly.value = false\n selectedDay.value = frequencyValue.value; // Set the selected day based on frequencyValue\n } else if (frequencyUnit.value === 'month') {\n weekly.value = false\n monthly.value = true\n daysInMonth.value = frequencyValue.value\n }\n\n console.log('Response:', response)\n } catch (error) {\n console.log('Full error:', error)\n }\n}\n\nconst postNotificationSettings = async () => {\n\n if (weekly.value === true) {\n frequencyUnit.value = \"week\"\n frequencyValue.value = selectedDay.value\n } else if (monthly.value === true) {\n frequencyUnit.value = \"month\"\n frequencyValue.value = daysInMonth.value\n }\n\n const config = {\n method: 'post',\n url: `${notificationBaseUrl}/catalogue/${catalogId}/setting`,\n headers: {\n Authorization: `Bearer ${token.value}`,\n 'Content-Type': 'application/json',\n },\n withCredentials: true,\n data: JSON.stringify({\n receiverEmailList: mailList.value,\n threshold: Number(threshold.value),\n frequency: {\n unit: frequencyUnit.value,\n value: frequencyValue.value\n },\n activeStatus: true\n })\n }\n\n try {\n const response = await axios.request(config)\n console.log('Settings updated:', response.data)\n triggerSnackbar();\n router.push({ name: 'DataProviderInterface-UserCatalogues' });\n return response.data\n\n } catch (error) {\n triggerSnackbar({\n message: 'Error updating settings.',\n variant: 'error',\n });\n\n console.log('Error updating settings:', error)\n\n throw error\n }\n}\n\nfetchNotificationInfo()\n\nconst postDeactive = async () => {\n\n const config = {\n method: 'post',\n url: `${notificationBaseUrl}/catalogue/${catalogId}/setting`,\n headers: {\n Authorization: `Bearer ${token.value}`,\n 'Content-Type': 'application/json',\n },\n withCredentials: true,\n data: JSON.stringify({\n activeStatus: active.value\n })\n }\n\n try {\n const response = await axios.request(config)\n console.log('Settings updated:', response.data)\n triggerSnackbar();\n if(!active.value) {router.push({ name: 'DataProviderInterface-UserCatalogues' });}\n return response.data\n\n\n } catch (error) {\n triggerSnackbar({\n message: 'Error updating settings.',\n variant: 'error',\n });\n\n console.log('Error updating settings:', error)\n\n throw error\n\n }\n}\n\nconst editMail = () => {\n editMode.value = true\n showSnackbar({\n message: 'Email added successfully.',\n variant: 'success',\n });\n}\n\nconst saveMail = (index) => {\n const email = mailList.value[index].trim();\n if (isValidEmail(email)) {\n editMode.value = false;\n delete editErrors.value[index];\n } else {\n editErrors.value[index] = '*Invalid email format';\n }\n};\n\nconst deleteMail = (index) => {\n mailList.value.splice(index, 1);\n}\n\nconst editDate = (count) => {\n if (count === \"up\" && daysInMonth.value < 28) {\n if (daysInMonth.value > 8) {\n inputWidth.value = true\n }\n daysInMonth.value++\n }\n else if (daysInMonth.value > 1) {\n if (daysInMonth.value < 11) {\n inputWidth.value = false\n }\n daysInMonth.value--\n }\n}\n\nconst addNewMail = () => {\n if (newMail.value.mail.trim() === '') {\n newMail.value.isValid = false;\n return;\n }\n if (isValidEmail(newMail.value.mail)) {\n mailList.value.push(newMail.value.mail);\n newMail.value.mail = ''; // Clear input after successful addition\n newMail.value.isValid = true;\n } else {\n newMail.value.isValid = false;\n }\n}\nconst handleActivate = () => {\n if (!active.value) {\n active.value = true\n activatedString.value = 'Deactivate'\n postDeactive()\n } else {\n active.value = false\n activatedString.value = 'Activate'\n postDeactive()\n }\n}\n\nconst back = () => {\n router.push({ name: 'DataProviderInterface-UserCatalogues' });\n}\n\n</script>\n<style scoped>\n.debug {\n position: fixed;\n right: 20px;\n top: 20px;\n border-radius: 20px;\n width: 400px;\n z-index: 999999;\n padding: 20px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 16px;\n box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);\n backdrop-filter: blur(5px);\n -webkit-backdrop-filter: blur(5px);\n border: 1px solid rgba(255, 255, 255, 0.3);\n display: none;\n}\n\n.btn-simple {\n border-color: rgb(115, 115, 115);\n}\n\n.btn-cancel {\n border-color: transparent;\n}\n\n.mail {\n width: 270px;\n padding: 5px 5px 5px 10px;\n}\n\n\n.errormsg {\n color: red;\n font-size: 10px;\n}\n\n.activeChoiceButton {\n background-color: var(--primary);\n color: white;\n border-color: var(--primary);\n\n &:active {\n background-color: #3E6CD5 !important;\n }\n\n &:focus {\n outline: none;\n background-color: #3E6CD5;\n }\n\n &:focus-visible {\n outline: none;\n background-color: #3E6CD5;\n }\n}\n\n\n.invalid {\n border-bottom: 1px solid red !important;\n}\n\n.blur {\n opacity: 0.3;\n}\n\n.invalidNewMail {\n\n border-radius: 2px;\n border: 2px solid rgba(255, 0, 0, 0.336);\n\n &:focus {\n border-radius: 2px;\n box-shadow: 0 0 0 0.1rem rgba(255, 0, 0, 0.774);\n border: 1px solid rgba(255, 0, 0, 0.336);\n }\n\n &:focus-visible {\n outline: 0;\n border-radius: 2px;\n box-shadow: 0 0 0 0.1rem rgba(255, 0, 0, 0.774);\n border: 1px solid rgba(255, 0, 0, 0.336);\n }\n}\n\n.editable {\n transition: all 200ms ease-in-out;\n padding-left: 0.5rem;\n border-bottom: 2px solid var(--primary) !important;\n}\n\n.invalid {\n border-bottom: 1px solid red !important;\n}\n\n.caretButtons {\n all: unset;\n cursor: pointer;\n}\n\n.caretWrap {\n display: contents;\n\n}\n\n.actionWrapper {\n display: flex;\n flex-direction: row-reverse;\n margin-bottom: 100px;\n\n button {\n margin-left: 1rem;\n }\n}\n\ninput[type=\"range\"] {\n width: 100%;\n}\n\n.mqaWrapper {\n margin: 3rem 0;\n}\n\ntable {\n margin-top: 1rem;\n min-width: 50%;\n}\n\nth {\n border-bottom: 1px solid lightgray;\n}\n\ntd {\n display: flex;\n justify-content: space-between;\n padding: 15px 0 0 0cap;\n}\n\n.daypicker {\n padding: 1rem;\n border: 1px solid lightgray;\n border-radius: 15px;\n\n input {\n width: 25px;\n border: none;\n background-color: unset;\n font-weight: 700;\n }\n\n}\n\n.dynamicWidth {\n width: 22px !important;\n}\n\n.activeItem {\n background-color: var(--primary);\n color: white;\n}\n\n.weekdays {\n border: 1px solid lightgray;\n border-radius: 15px;\n margin: 1rem 0;\n overflow: hidden;\n\n .dayButtons {\n border: none;\n display: inline-block;\n text-align: center;\n flex-direction: row;\n min-width: 60px;\n padding: 1rem;\n border-right: 1px solid lightgray;\n cursor: pointer;\n\n &:focus-visible {\n outline: unset;\n background-color: #3E6CD5;\n color: white;\n }\n\n &:hover {\n background-color: #3E6CD5;\n color: white;\n }\n }\n\n span:last-child button {\n border: none;\n }\n}\n\n.mqaWrapper {\n padding: 1rem;\n background-color: #f3f6fc;\n border-radius: 3px;\n}\n\nbutton {\n background-color: unset;\n border: 1px solid var(--primary);\n color: black;\n\n &:hover {\n background-color: #3E6CD5;\n color: white;\n border: 1px solid #3E6CD5;\n }\n}\n\n.btn-primary {\n background-color: var(--primary);\n color: white;\n\n}\n\n.btn-secondary {\n color: #0e47cb;\n}\n\nbutton,\nspan {\n transition: all 100ms ease-in-out;\n}\n</style>\n"],"names":["store","useStore","router","useRouter","computed","getUserData","token","mapActions","showSnackbar","payload","triggerSnackbar","route","useRoute","monthly","ref","weekly","mailButtonWrap","activatedString","inputWidth","active","mailList","week","daysInMonth","editMode","threshold","frequencyUnit","frequencyValue","selectedDay","catalogId","app","getCurrentInstance","notificationBaseUrl","selectDay","index","setWeekly","setMonthly","notficationInfo","isValidEmail","email","newMail","editErrors","fetchNotificationInfo","config","response","axios","error","postNotificationSettings","postDeactive","editMail","saveMail","deleteMail","editDate","count","addNewMail","handleActivate","back","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_cache","_toDisplayString","_unref","_createTextVNode","_normalizeClass","_hoisted_5","_hoisted_6","_Fragment","_renderList","item","$event","_vModelText","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","day","_hoisted_17","_hoisted_18","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23"],"mappings":"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"}
|