@piveau/piveau-hub-ui-modules 4.6.66 → 4.6.68
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 +1 -1
- 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 +4 -4
- 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 +7 -7
- package/dist/data-provider-interface/DPIMenu.vue.mjs.map +1 -1
- package/dist/data-provider-interface/DataProviderInterface.vue.d.ts +8 -10
- 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 +1 -1
- 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.mjs.map +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 +3 -3
- 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.mjs.map +1 -1
- package/dist/data-provider-interface/views/DraftsPage.vue.d.ts +3 -3
- 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 +5 -7
- 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 +2 -4
- 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 +2 -1
- package/dist/datasetDetails/DatasetDetailsDataset.vue.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.mjs.map +1 -1
- package/dist/datasetDetails/distributions/Distributions.vue.mjs.map +1 -1
- package/dist/datasetDetails/distributions/DistributionsHeader.vue.mjs.map +1 -1
- 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.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.mjs.map +1 -1
- 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.mjs.map +1 -1
- 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.mjs.map +1 -1
- package/dist/datasetDetails/distributions/distributionDetails/DistributionDetails.vue.mjs.map +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/datasetDetails/header/DatasetDetailsHeaderCatalogue.vue.mjs.map +1 -1
- 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.mjs.map +1 -1
- package/dist/datasetDetails/navigation/DatasetDetailsNavigationPage.vue.mjs.map +1 -1
- package/dist/datasetDetails/navigation/DatasetDetailsNavigationPages.vue.mjs.map +1 -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/v3/ZodError +88 -0
- package/dist/external/zod/v3/ZodError.map +1 -0
- package/dist/external/zod/v3/errors +10 -0
- package/dist/external/zod/v3/errors.map +1 -0
- package/dist/external/zod/v3/helpers/errorUtil +8 -0
- package/dist/external/zod/v3/helpers/errorUtil.map +1 -0
- package/dist/external/zod/v3/helpers/parseUtil +98 -0
- package/dist/external/zod/v3/helpers/parseUtil.map +1 -0
- package/dist/external/zod/v3/helpers/util +95 -0
- package/dist/external/zod/v3/helpers/util.map +1 -0
- package/dist/external/zod/v3/locales/en +62 -0
- package/dist/external/zod/v3/locales/en.map +1 -0
- package/dist/external/zod/v3/types +2420 -0
- package/dist/external/zod/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/bulkDownloadCorsProxyService.mjs +32 -31
- package/dist/services/bulkDownloadCorsProxyService.mjs.map +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.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":"DPIMenu.vue.mjs","sources":["../../lib/data-provider-interface/DPIMenu.vue"],"sourcesContent":["<template>\n <div id=\"wrapper\" data-cy=\"dpi-menu\">\n <nav v-if=\"visible\">\n <div>\n <h4 class=\"text-white\">{{ $t(\"message.dataupload.menu.dpi\") }}</h4>\n </div>\n\n <div style=\"margin-top: 1%\">\n <dropup\n v-for=\"(group, index) in menuGroups\"\n :key=\"`Group${index}`\"\n :groupName=\"group.group\"\n :groupItems=\"group.items\"\n :show=\"$env.content.dataProviderInterface.buttons[group.group]\"\n :isOperator=\"getUserData.roles.includes('operator')\"\n :isCatalog=\"group.group === 'Catalogue' ? true : false\"\n >\n </dropup>\n <ul>\n <div class=\"btn-group dropup\">\n <li v-for=\"(menuItem, index) in menuItems\" :key=\"`Menu${index}`\">\n <button\n type=\"button\"\n class=\"btn btn-default\"\n @click=\"scrollToTop()\"\n >\n <!-- Menu items are either buttons or router-link -->\n <!-- depending if they have a 'to' or 'handler' property -->\n <component\n :is=\"menuItem.handler ? 'button' : 'router-link'\"\n :class=\"{ disabled: menuItem.disabled }\"\n :to=\"menuItem.to\"\n @click.native=\"menuItem.handler ? menuItem.handler() : null\"\n >\n {{ menuItem.handler }}\n {{ menuItem.name }}\n </component>\n </button>\n </li>\n </div>\n </ul>\n </div>\n\n <div v-if=\"getUserData.userName\" class=\"logoutWrap\">\n <slot name=\"right\" :get-user-data=\"getUserData\">\n <small class=\"text-white\"\n >{{ $t(\"message.dataupload.menu.loggedInAs\") }}\n {{ getUserData.userName }}</small\n >\n <br />\n <button type=\"button\" class=\"btn btn-default logout\">\n <router-link :to=\"{ name: 'Logout' }\">{{\n $t(\"message.dataupload.menu.logout\")\n }}</router-link>\n </button>\n </slot>\n </div>\n </nav>\n\n <app-confirmation-dialog\n id=\"DPIMenuModal\"\n :loading=\"modal.loading\"\n :confirm=\"modal.confirm\"\n @confirm=\"modal.confirmHandler\"\n >\n {{ modal.message }}\n </app-confirmation-dialog>\n </div>\n</template>\n\n<script>\nimport axios from \"axios\";\nimport $ from \"jquery\";\nimport { has, isEmpty } from \"lodash-es\";\nimport { mapGetters, mapActions } from \"vuex\";\nimport Dropup from \"./components/Dropup\";\nimport { useWindowScroll } from \"@vueuse/core\";\n\nexport default {\n name: \"DPI-menu\",\n components: {\n Dropup,\n },\n props: {},\n data() {\n return {\n showRatingService: this.$env.content.datasetDetails?.showRatingService,\n visible: true,\n modal: {\n show: false,\n loading: false,\n error: null,\n message: \"\",\n confirm: \"Ok\",\n confirmHandler: () => null,\n },\n };\n },\n setup() {\n const scrollToTop = () => {\n let { x, y } = useWindowScroll({ behavior: \"smooth\" });\n y.value = 0;\n };\n return {\n scrollToTop,\n };\n },\n computed: {\n ...mapGetters(\"datasetDetails\", [\n \"getCatalog\",\n \"getID\",\n \"getLoading\",\n \"getTitle\",\n \"getDescription\",\n 'getAdmsIdentifiers',\n 'getIdentifiers',\n 'getOtherIdentifiers',\n ]),\n // Individual DOI checks for display\n hasAnyDoi() {\n const checkDoi = (value) => value && value.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n\n return (\n checkDoi(this.getIdentifiers?.[0]) || // Check Identifier\n checkDoi(this.getAdmsIdentifiers?.[0]?.identifier) || // Check Adms\n checkDoi(this.getOtherIdentifiers?.[0]?.identifier) // Check Others\n );\n },\n ...mapGetters(\"auth\", [\"getUserData\"]),\n menuGroups() {\n return [\n {\n group: \"Dataset\",\n items: [\n {\n key: \"create-dataset\",\n name: \"createDataset\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false }, // if edit is false -> reset is triggered\n params: { property: \"datasets\" },\n },\n },\n {\n name: \"deleteDataset\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage || this.hasAnyDoi,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.datasetDeletion.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.datasetDeletion.confirm\"\n ),\n confirmHandler: () =>\n this.handleDelete({\n id: this.getID,\n property: \"datasets\",\n catalog: this.getCatalog.id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"edit-dataset\",\n name: \"editDataset\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.getCatalog.id || \"undefined\",\n property: \"datasets\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n\n {\n key: \"draft-dataset\",\n name: \"setToDraft\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.markAsDraft.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.markAsDraft.confirm\"\n ),\n confirmHandler: () =>\n this.handleMarkAsDraft({\n id: this.getID,\n catalog: this.getCatalog.id,\n title: this.getTitle,\n description: this.getDescription,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"register-dataset\",\n name: \"registerDoi\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.registerADoi.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.registerADoi.confirm\"\n ),\n confirmHandler: () =>\n this.handleRegisterDoi({\n id: this.getID,\n catalog: this.getCatalog.id,\n type:\n this.$env.content.dataProviderInterface\n .doiRegistrationService.persistentIdentifierType ||\n \"mock\",\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n ],\n },\n {\n group: \"Catalogue\",\n items: [\n {\n name: \"CreateCatalogue\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false },\n params: { property: \"catalogues\" },\n },\n },\n {\n name: \"DeleteCatalogue\",\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message:\n \"Are you sure you want to delete this catalogue? This can not be reverted!\",\n confirm: \"Delete catlogue (irreversible)\",\n confirmHandler: () =>\n this.handleDelete({\n id: this.$route.params.ctlg_id,\n property: \"catalogues\",\n catalog: this.$route.params.ctlg_id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n name: \"EditCatalog\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.$route.params.ctlg_id\n ? this.$route.params.ctlg_id\n : \"undefined\",\n property: \"catalogues\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n ],\n },\n ];\n },\n\n menuItems() {\n let items = [\n {\n name: this.$t(\"message.dataupload.menu.draftDatasets\"),\n to: {\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.myCatalogues\"),\n to: {\n name: \"DataProviderInterface-UserCatalogues\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.userProfile\"),\n to: {\n name: \"DataProviderInterface-UserProfile\",\n query: { locale: this.$route.query.locale },\n },\n },\n ];\n if (this.showRatingService && this.isOperator) {\n items.push({\n name: \"Comment Moderation\",\n to: {\n name: \"DataProviderInterface-CommentsModeration\",\n query: { locale: this.$route.query.locale },\n },\n });\n }\n return items;\n },\n isLocatedOnAuthorizedDatasetPage() {\n // Never return true while loading\n if (this.getLoading) return false;\n\n // Is the user located on the correct page?\n const isOnDatasetDetailsPage =\n this.$route.name === \"DatasetDetailsDataset\";\n if (!isOnDatasetDetailsPage) return false;\n const datasetId = isOnDatasetDetailsPage && this.$route.params.ds_id;\n\n // Does user have permission on dataset (based on current datasetDetails state)?\n const permissions = this.getUserData && this.getUserData.permissions;\n const catalogId = this.getCatalog && this.getCatalog.id;\n const hasPermission = permissions.find(\n (permission) => permission.rsname === catalogId\n );\n\n if (this.isOperator) {\n return true;\n }\n\n // Does the user have permission on the current dataset details page?\n return (\n hasPermission && isOnDatasetDetailsPage && datasetId === this.getID\n );\n },\n isLocatedOnAuthorizedCatalogPage() {\n // never return true while loading\n if (this.getLoading) return false;\n\n // is the user located on the correct page?\n const onCatalogPage = this.$route.name === \"CatalogueDetails\";\n if (!onCatalogPage) return false;\n const catalogId = onCatalogPage && this.$route.params.ctlg_id;\n\n // const permissions = this.getUserData && this.getUserData.permissions;\n // const hasPermission = permissions.find(permission => permission.rsname === catalogId);\n const hasPermission = true;\n // does user have permission on current catalogue\n return hasPermission && onCatalogPage;\n },\n isOperator() {\n return this.getUserData.roles.includes(\"operator\");\n }\n },\n methods: {\n checkDoi(doi = '') {\n return doi && doi.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n },\n ...mapActions(\"auth\", [\"updateUserData\"]),\n ...mapActions(\"snackbar\", [\"showSnackbar\"]),\n setupKeycloakWatcher() {\n if (this.$keycloak && this.$keycloak.authenticated) {\n // Set up watcher here since we this.$keycloak might not be available.\n // If this.$keycloak is ensured, move this watcher out of this created hook.\n this.$watch(\n \"$keycloak.token\",\n async (newToken) => {\n if (!newToken) return;\n\n let rtpToken = this.$keycloak.rtpToken;\n if (!rtpToken) {\n const rtpTokenFn = this.$keycloak.getRtpToken;\n if (rtpTokenFn) {\n const res = await rtpTokenFn({ autoRefresh: true });\n rtpToken = res;\n }\n }\n\n this.updateUserData({\n authToken: newToken,\n rtpToken: rtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n },\n { immediate: true }\n );\n\n this.$watch(\"$keycloak.rtpToken\", (newRtpToken) => {\n if (!newRtpToken) return;\n\n this.updateUserData({\n authToken: this.$keycloak.token,\n rtpToken: newRtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n });\n }\n },\n async handleConfirm(action, argsObj, { successMessage, errorMessage }) {\n this.modal.loading = true;\n try {\n // Sleep for 250ms for better UX\n this.$Progress.start();\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.set(25);\n await this.$store.dispatch(action, argsObj);\n\n // Successful DOI registration\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.finish();\n } catch (ex) {\n this.$Progress.fail();\n // eslint-disable-next-line no-console\n console.error(ex);\n\n const maybeErrorStatusMsg =\n ex.response && ex.response.data && ex.response.data.message;\n\n this.modal = {\n ...this.modal,\n ...{\n // Need to translate this\n message:\n \"DOI registration is not possible, the following error occured: \" +\n ex.response.data,\n confirm: \"Okay\",\n confirmHandler: () => $(\"#modal\").modal(\"hide\"),\n },\n };\n\n console.log(ex.response.data);\n let customErrorMessage =\n typeof errorMessage === \"string\" && errorMessage;\n customErrorMessage =\n typeof errorMessage === \"function\" && errorMessage(ex);\n // customErrorMessage = typeof errorMessage === 'object' && errorMessage.prefix && `${errorMessage.prefix}${maybeErrorStatusMsg && ` — ${maybeErrorStatusMsg}`}`;\n customErrorMessage =\n typeof errorMessage === \"object\" &&\n errorMessage.prefix + \" - \" + ex.response.data;\n\n console.log(errorMessage);\n const errorMsg =\n customErrorMessage ||\n maybeErrorStatusMsg ||\n ex.message ||\n \"An error occurred\";\n // show snackbar\n this.showSnackbar({\n message: errorMsg,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n async handleRegisterDoi({ id, catalog, type = \"eu-ra-doi\" }) {\n await this.handleConfirm(\n \"auth/createPersistentIdentifier\",\n { id, catalog, type },\n {\n successMessage: this.$te(\"message.snackbar.doiRegistration.success\")\n ? this.$t(\"message.snackbar.doiRegistration.success\")\n : \"Successfully registered DOI\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.doiRegistration.error\")\n ? this.$t(\"message.snackbar.doiRegistration.error\")\n : \"DOI registration failed\",\n },\n }\n );\n },\n async handleMarkAsDraft({ id, catalog, title, description }) {\n await this.handleConfirm(\n \"auth/putDatasetToDraft\",\n {\n id,\n catalog,\n title,\n description,\n },\n {\n successMessage: this.$te(\"message.snackbar.markAsDraft.success\")\n ? this.$t(\"message.snackbar.markAsDraft.success\")\n : \"Dataset successfully marked as draft\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.markAsDraft.error\")\n ? this.$t(\"message.snackbar.markAsDraft.error\")\n : \"Failed to mark dataset as draft\",\n },\n }\n );\n\n this.$router\n .push({\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n })\n .catch(() => {});\n },\n async handleDelete({ id, property, catalog }) {\n // todo: create user dataset api (and maybe integrate to store)\n // For now, do request manually using axios\n\n this.modal.loading = true;\n this.$Progress.start();\n try {\n let endpoint;\n\n if (property === \"datasets\") {\n endpoint = `${this.$env.api.hubUrl}datasets/${id}?useNormalizedId=true&catalogue=${catalog}`;\n } else if (property === \"catalogues\") {\n endpoint = `${this.$env.api.hubUrl}catalogues/${id}`;\n }\n\n await axios.delete(endpoint, {\n headers: {\n \"Content-Type\": \"text/turtle\",\n Authorization: `Bearer ${this.getUserData.rtpToken}`,\n },\n });\n\n let successMessage;\n if (property === \"datasets\") {\n successMessage = this.$te(\"message.snackbar.deleteDataset.success\")\n ? this.$t(\"message.snackbar.deleteDataset.success\")\n : \"Dataset successfully deleted\";\n } else if (property === \"catalogues\") {\n successMessage = this.$te(\"message.snackbar.deleteCatalog.success\")\n ? this.$t(\"message.snackbar.deleteCatalog.success\")\n : \"Catalog successfully deleted\";\n }\n\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n this.$Progress.finish();\n\n // Redirect to Home\n this.$router\n .push({\n name: \"Datasets\",\n query: { locale: this.$route.query.locale, refresh: true },\n })\n .catch(() => {});\n } catch (ex) {\n this.$Progress.fail();\n\n let errorMessage;\n\n if (property === \"datasets\") {\n errorMessage = this.$te(\"message.snackbar.deleteDataset.error\")\n ? this.$t(\"message.snackbar.deleteDataset.error\")\n : \"Failed to delete dataset\";\n } else if (property === \"catalogues\") {\n errorMessage = this.$te(\"message.snackbar.deleteCatalog.error\")\n ? this.$t(\"message.snackbar.deleteCatalog.error\")\n : \"Failed to delete catalog\";\n }\n\n this.showSnackbar({\n message: `${errorMessage}${\n ex.response?.data ? ` — ${ex.response?.data}` : ex.message\n }`,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n },\n created() {\n this.setupKeycloakWatcher();\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n#wrapper {\n background: linear-gradient(90deg, #082b7a, #0e47cb);\n width: 100%;\n position: sticky;\n bottom: 0;\n z-index: 999;\n}\n\nnav {\n max-width: 1400px;\n display: flex;\n flex-direction: row;\n margin: 0 auto;\n justify-content: space-between;\n font-size: 1rem;\n align-items: center;\n}\n\nul {\n float: right;\n\n li {\n display: inline;\n\n a {\n color: white;\n }\n }\n}\n\nbutton a {\n color: white;\n}\n\n.logout {\n display: block;\n margin: 0 auto;\n border: 1px solid white;\n padding: 0.1rem 1.5rem;\n}\n\n.logoutWrap {\n width: 14rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n</style>\n"],"names":["_sfc_main","Dropup","_a","x","y","useWindowScroll","mapGetters","checkDoi","value","_c","_b","_e","_d","$","items","isOnDatasetDetailsPage","datasetId","permissions","catalogId","hasPermission","permission","onCatalogPage","doi","mapActions","newToken","rtpToken","rtpTokenFn","newRtpToken","action","argsObj","successMessage","errorMessage","resolve","ex","maybeErrorStatusMsg","customErrorMessage","errorMsg","id","catalog","type","title","description","property","endpoint","axios","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_7","_openBlock","_createElementBlock","_hoisted_1","$data","_hoisted_2","_createElementVNode","_toDisplayString","_ctx","_cache","_createTextVNode","_Fragment","_renderList","$options","group","index","_createBlock","_component_dropup","menuItem","$setup","_resolveDynamicComponent","_normalizeClass","_withCtx","_hoisted_6","_renderSlot","_hoisted_8","_createVNode","_component_router_link","_createCommentVNode","_component_app_confirmation_dialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DPIMenu.vue.mjs","sources":["../../lib/data-provider-interface/DPIMenu.vue"],"sourcesContent":["<template>\n <div id=\"wrapper\" data-cy=\"dpi-menu\">\n <nav v-if=\"visible\">\n <div>\n <h4 class=\"text-white\">{{ $t(\"message.dataupload.menu.dpi\") }}</h4>\n </div>\n\n <div style=\"margin-top: 1%\">\n <dropup\n v-for=\"(group, index) in menuGroups\"\n :key=\"`Group${index}`\"\n :groupName=\"group.group\"\n :groupItems=\"group.items\"\n :show=\"$env.content.dataProviderInterface.buttons[group.group]\"\n :isOperator=\"getUserData.roles.includes('operator')\"\n :isCatalog=\"group.group === 'Catalogue' ? true : false\"\n >\n </dropup>\n <ul>\n <div class=\"btn-group dropup\">\n <li v-for=\"(menuItem, index) in menuItems\" :key=\"`Menu${index}`\">\n <button\n type=\"button\"\n class=\"btn btn-default\"\n @click=\"scrollToTop()\"\n >\n <!-- Menu items are either buttons or router-link -->\n <!-- depending if they have a 'to' or 'handler' property -->\n <component\n :is=\"menuItem.handler ? 'button' : 'router-link'\"\n :class=\"{ disabled: menuItem.disabled }\"\n :to=\"menuItem.to\"\n @click.native=\"menuItem.handler ? menuItem.handler() : null\"\n >\n {{ menuItem.handler }}\n {{ menuItem.name }}\n </component>\n </button>\n </li>\n </div>\n </ul>\n </div>\n\n <div v-if=\"getUserData.userName\" class=\"logoutWrap\">\n <slot name=\"right\" :get-user-data=\"getUserData\">\n <small class=\"text-white\"\n >{{ $t(\"message.dataupload.menu.loggedInAs\") }}\n {{ getUserData.userName }}</small\n >\n <br />\n <button type=\"button\" class=\"btn btn-default logout\">\n <router-link :to=\"{ name: 'Logout' }\">{{\n $t(\"message.dataupload.menu.logout\")\n }}</router-link>\n </button>\n </slot>\n </div>\n </nav>\n\n <app-confirmation-dialog\n id=\"DPIMenuModal\"\n :loading=\"modal.loading\"\n :confirm=\"modal.confirm\"\n @confirm=\"modal.confirmHandler\"\n >\n {{ modal.message }}\n </app-confirmation-dialog>\n </div>\n</template>\n\n<script>\nimport axios from \"axios\";\nimport $ from \"jquery\";\nimport { has, isEmpty } from \"lodash-es\";\nimport { mapGetters, mapActions } from \"vuex\";\nimport Dropup from \"./components/Dropup\";\nimport { useWindowScroll } from \"@vueuse/core\";\n\nexport default {\n name: \"DPI-menu\",\n components: {\n Dropup,\n },\n props: {},\n data() {\n return {\n showRatingService: this.$env.content.datasetDetails?.showRatingService,\n visible: true,\n modal: {\n show: false,\n loading: false,\n error: null,\n message: \"\",\n confirm: \"Ok\",\n confirmHandler: () => null,\n },\n };\n },\n setup() {\n const scrollToTop = () => {\n let { x, y } = useWindowScroll({ behavior: \"smooth\" });\n y.value = 0;\n };\n return {\n scrollToTop,\n };\n },\n computed: {\n ...mapGetters(\"datasetDetails\", [\n \"getCatalog\",\n \"getID\",\n \"getLoading\",\n \"getTitle\",\n \"getDescription\",\n 'getAdmsIdentifiers',\n 'getIdentifiers',\n 'getOtherIdentifiers',\n ]),\n // Individual DOI checks for display\n hasAnyDoi() {\n const checkDoi = (value) => value && value.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n\n return (\n checkDoi(this.getIdentifiers?.[0]) || // Check Identifier\n checkDoi(this.getAdmsIdentifiers?.[0]?.identifier) || // Check Adms\n checkDoi(this.getOtherIdentifiers?.[0]?.identifier) // Check Others\n );\n },\n ...mapGetters(\"auth\", [\"getUserData\"]),\n menuGroups() {\n return [\n {\n group: \"Dataset\",\n items: [\n {\n key: \"create-dataset\",\n name: \"createDataset\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false }, // if edit is false -> reset is triggered\n params: { property: \"datasets\" },\n },\n },\n {\n name: \"deleteDataset\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage || this.hasAnyDoi,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.datasetDeletion.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.datasetDeletion.confirm\"\n ),\n confirmHandler: () =>\n this.handleDelete({\n id: this.getID,\n property: \"datasets\",\n catalog: this.getCatalog.id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"edit-dataset\",\n name: \"editDataset\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.getCatalog.id || \"undefined\",\n property: \"datasets\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n\n {\n key: \"draft-dataset\",\n name: \"setToDraft\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.markAsDraft.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.markAsDraft.confirm\"\n ),\n confirmHandler: () =>\n this.handleMarkAsDraft({\n id: this.getID,\n catalog: this.getCatalog.id,\n title: this.getTitle,\n description: this.getDescription,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"register-dataset\",\n name: \"registerDoi\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.registerADoi.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.registerADoi.confirm\"\n ),\n confirmHandler: () =>\n this.handleRegisterDoi({\n id: this.getID,\n catalog: this.getCatalog.id,\n type:\n this.$env.content.dataProviderInterface\n .doiRegistrationService.persistentIdentifierType ||\n \"mock\",\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n ],\n },\n {\n group: \"Catalogue\",\n items: [\n {\n name: \"CreateCatalogue\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false },\n params: { property: \"catalogues\" },\n },\n },\n {\n name: \"DeleteCatalogue\",\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message:\n \"Are you sure you want to delete this catalogue? This can not be reverted!\",\n confirm: \"Delete catlogue (irreversible)\",\n confirmHandler: () =>\n this.handleDelete({\n id: this.$route.params.ctlg_id,\n property: \"catalogues\",\n catalog: this.$route.params.ctlg_id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n name: \"EditCatalog\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.$route.params.ctlg_id\n ? this.$route.params.ctlg_id\n : \"undefined\",\n property: \"catalogues\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n ],\n },\n ];\n },\n\n menuItems() {\n let items = [\n {\n name: this.$t(\"message.dataupload.menu.draftDatasets\"),\n to: {\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.myCatalogues\"),\n to: {\n name: \"DataProviderInterface-UserCatalogues\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.userProfile\"),\n to: {\n name: \"DataProviderInterface-UserProfile\",\n query: { locale: this.$route.query.locale },\n },\n },\n ];\n if (this.showRatingService && this.isOperator) {\n items.push({\n name: \"Comment Moderation\",\n to: {\n name: \"DataProviderInterface-CommentsModeration\",\n query: { locale: this.$route.query.locale },\n },\n });\n }\n return items;\n },\n isLocatedOnAuthorizedDatasetPage() {\n // Never return true while loading\n if (this.getLoading) return false;\n\n // Is the user located on the correct page?\n const isOnDatasetDetailsPage =\n this.$route.name === \"DatasetDetailsDataset\";\n if (!isOnDatasetDetailsPage) return false;\n const datasetId = isOnDatasetDetailsPage && this.$route.params.ds_id;\n\n // Does user have permission on dataset (based on current datasetDetails state)?\n const permissions = this.getUserData && this.getUserData.permissions;\n const catalogId = this.getCatalog && this.getCatalog.id;\n const hasPermission = permissions.find(\n (permission) => permission.rsname === catalogId\n );\n\n if (this.isOperator) {\n return true;\n }\n\n // Does the user have permission on the current dataset details page?\n return (\n hasPermission && isOnDatasetDetailsPage && datasetId === this.getID\n );\n },\n isLocatedOnAuthorizedCatalogPage() {\n // never return true while loading\n if (this.getLoading) return false;\n\n // is the user located on the correct page?\n const onCatalogPage = this.$route.name === \"CatalogueDetails\";\n if (!onCatalogPage) return false;\n const catalogId = onCatalogPage && this.$route.params.ctlg_id;\n\n // const permissions = this.getUserData && this.getUserData.permissions;\n // const hasPermission = permissions.find(permission => permission.rsname === catalogId);\n const hasPermission = true;\n // does user have permission on current catalogue\n return hasPermission && onCatalogPage;\n },\n isOperator() {\n return this.getUserData.roles.includes(\"operator\");\n }\n },\n methods: {\n checkDoi(doi = '') {\n return doi && doi.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n },\n ...mapActions(\"auth\", [\"updateUserData\"]),\n ...mapActions(\"snackbar\", [\"showSnackbar\"]),\n setupKeycloakWatcher() {\n if (this.$keycloak && this.$keycloak.authenticated) {\n // Set up watcher here since we this.$keycloak might not be available.\n // If this.$keycloak is ensured, move this watcher out of this created hook.\n this.$watch(\n \"$keycloak.token\",\n async (newToken) => {\n if (!newToken) return;\n\n let rtpToken = this.$keycloak.rtpToken;\n if (!rtpToken) {\n const rtpTokenFn = this.$keycloak.getRtpToken;\n if (rtpTokenFn) {\n const res = await rtpTokenFn({ autoRefresh: true });\n rtpToken = res;\n }\n }\n\n this.updateUserData({\n authToken: newToken,\n rtpToken: rtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n },\n { immediate: true }\n );\n\n this.$watch(\"$keycloak.rtpToken\", (newRtpToken) => {\n if (!newRtpToken) return;\n\n this.updateUserData({\n authToken: this.$keycloak.token,\n rtpToken: newRtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n });\n }\n },\n async handleConfirm(action, argsObj, { successMessage, errorMessage }) {\n this.modal.loading = true;\n try {\n // Sleep for 250ms for better UX\n this.$Progress.start();\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.set(25);\n await this.$store.dispatch(action, argsObj);\n\n // Successful DOI registration\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.finish();\n } catch (ex) {\n this.$Progress.fail();\n // eslint-disable-next-line no-console\n console.error(ex);\n\n const maybeErrorStatusMsg =\n ex.response && ex.response.data && ex.response.data.message;\n\n this.modal = {\n ...this.modal,\n ...{\n // Need to translate this\n message:\n \"DOI registration is not possible, the following error occured: \" +\n ex.response.data,\n confirm: \"Okay\",\n confirmHandler: () => $(\"#modal\").modal(\"hide\"),\n },\n };\n\n console.log(ex.response.data);\n let customErrorMessage =\n typeof errorMessage === \"string\" && errorMessage;\n customErrorMessage =\n typeof errorMessage === \"function\" && errorMessage(ex);\n // customErrorMessage = typeof errorMessage === 'object' && errorMessage.prefix && `${errorMessage.prefix}${maybeErrorStatusMsg && ` — ${maybeErrorStatusMsg}`}`;\n customErrorMessage =\n typeof errorMessage === \"object\" &&\n errorMessage.prefix + \" - \" + ex.response.data;\n\n console.log(errorMessage);\n const errorMsg =\n customErrorMessage ||\n maybeErrorStatusMsg ||\n ex.message ||\n \"An error occurred\";\n // show snackbar\n this.showSnackbar({\n message: errorMsg,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n async handleRegisterDoi({ id, catalog, type = \"eu-ra-doi\" }) {\n await this.handleConfirm(\n \"auth/createPersistentIdentifier\",\n { id, catalog, type },\n {\n successMessage: this.$te(\"message.snackbar.doiRegistration.success\")\n ? this.$t(\"message.snackbar.doiRegistration.success\")\n : \"Successfully registered DOI\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.doiRegistration.error\")\n ? this.$t(\"message.snackbar.doiRegistration.error\")\n : \"DOI registration failed\",\n },\n }\n );\n },\n async handleMarkAsDraft({ id, catalog, title, description }) {\n await this.handleConfirm(\n \"auth/putDatasetToDraft\",\n {\n id,\n catalog,\n title,\n description,\n },\n {\n successMessage: this.$te(\"message.snackbar.markAsDraft.success\")\n ? this.$t(\"message.snackbar.markAsDraft.success\")\n : \"Dataset successfully marked as draft\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.markAsDraft.error\")\n ? this.$t(\"message.snackbar.markAsDraft.error\")\n : \"Failed to mark dataset as draft\",\n },\n }\n );\n\n this.$router\n .push({\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n })\n .catch(() => {});\n },\n async handleDelete({ id, property, catalog }) {\n // todo: create user dataset api (and maybe integrate to store)\n // For now, do request manually using axios\n\n this.modal.loading = true;\n this.$Progress.start();\n try {\n let endpoint;\n\n if (property === \"datasets\") {\n endpoint = `${this.$env.api.hubUrl}datasets/${id}?useNormalizedId=true&catalogue=${catalog}`;\n } else if (property === \"catalogues\") {\n endpoint = `${this.$env.api.hubUrl}catalogues/${id}`;\n }\n\n await axios.delete(endpoint, {\n headers: {\n \"Content-Type\": \"text/turtle\",\n Authorization: `Bearer ${this.getUserData.rtpToken}`,\n },\n });\n\n let successMessage;\n if (property === \"datasets\") {\n successMessage = this.$te(\"message.snackbar.deleteDataset.success\")\n ? this.$t(\"message.snackbar.deleteDataset.success\")\n : \"Dataset successfully deleted\";\n } else if (property === \"catalogues\") {\n successMessage = this.$te(\"message.snackbar.deleteCatalog.success\")\n ? this.$t(\"message.snackbar.deleteCatalog.success\")\n : \"Catalog successfully deleted\";\n }\n\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n this.$Progress.finish();\n\n // Redirect to Home\n this.$router\n .push({\n name: \"Datasets\",\n query: { locale: this.$route.query.locale, refresh: true },\n })\n .catch(() => {});\n } catch (ex) {\n this.$Progress.fail();\n\n let errorMessage;\n\n if (property === \"datasets\") {\n errorMessage = this.$te(\"message.snackbar.deleteDataset.error\")\n ? this.$t(\"message.snackbar.deleteDataset.error\")\n : \"Failed to delete dataset\";\n } else if (property === \"catalogues\") {\n errorMessage = this.$te(\"message.snackbar.deleteCatalog.error\")\n ? this.$t(\"message.snackbar.deleteCatalog.error\")\n : \"Failed to delete catalog\";\n }\n\n this.showSnackbar({\n message: `${errorMessage}${\n ex.response?.data ? ` — ${ex.response?.data}` : ex.message\n }`,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n },\n created() {\n this.setupKeycloakWatcher();\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n#wrapper {\n background: linear-gradient(90deg, #082b7a, #0e47cb);\n width: 100%;\n position: sticky;\n bottom: 0;\n z-index: 999;\n}\n\nnav {\n max-width: 1400px;\n display: flex;\n flex-direction: row;\n margin: 0 auto;\n justify-content: space-between;\n font-size: 1rem;\n align-items: center;\n}\n\nul {\n float: right;\n\n li {\n display: inline;\n\n a {\n color: white;\n }\n }\n}\n\nbutton a {\n color: white;\n}\n\n.logout {\n display: block;\n margin: 0 auto;\n border: 1px solid white;\n padding: 0.1rem 1.5rem;\n}\n\n.logoutWrap {\n width: 14rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n</style>\n"],"names":["_sfc_main","Dropup","_a","x","y","useWindowScroll","mapGetters","checkDoi","value","_c","_b","_e","_d","$","items","isOnDatasetDetailsPage","datasetId","permissions","catalogId","hasPermission","permission","onCatalogPage","doi","mapActions","newToken","rtpToken","rtpTokenFn","newRtpToken","action","argsObj","successMessage","errorMessage","resolve","ex","maybeErrorStatusMsg","customErrorMessage","errorMsg","id","catalog","type","title","description","property","endpoint","axios","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_7","_openBlock","_createElementBlock","_hoisted_1","$data","_hoisted_2","_createElementVNode","_toDisplayString","_ctx","_Fragment","_renderList","$options","group","index","_createBlock","_component_dropup","menuItem","$setup","_resolveDynamicComponent","_normalizeClass","_createTextVNode","_hoisted_6","_renderSlot","_hoisted_8","_createVNode","_component_router_link","_component_app_confirmation_dialog"],"mappings":"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"}
|
|
@@ -20,10 +20,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
20
20
|
key: import('vue').ComputedRef<string>;
|
|
21
21
|
isReady: import('vue').ComputedRef<boolean>;
|
|
22
22
|
}, {
|
|
23
|
-
property:
|
|
24
|
-
id:
|
|
23
|
+
property: any;
|
|
24
|
+
id: any;
|
|
25
25
|
}, {
|
|
26
|
-
mode():
|
|
26
|
+
mode(): any;
|
|
27
27
|
getIsEditMode: import('vuex').Computed;
|
|
28
28
|
}, {
|
|
29
29
|
getClearPath(): string;
|
|
@@ -387,9 +387,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
387
387
|
useCombinedSearch: boolean;
|
|
388
388
|
};
|
|
389
389
|
languages: {
|
|
390
|
+
useLanguageSelector: boolean;
|
|
390
391
|
locale: string;
|
|
391
392
|
fallbackLocale: string;
|
|
392
|
-
useLanguageSelector: boolean;
|
|
393
393
|
};
|
|
394
394
|
themes: {
|
|
395
395
|
header: string;
|
|
@@ -400,9 +400,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
400
400
|
trackerUrl: string;
|
|
401
401
|
};
|
|
402
402
|
};
|
|
403
|
-
dpiLocale:
|
|
404
|
-
[x: string]: string[];
|
|
405
|
-
} | import('vue-router').LocationQueryValue[];
|
|
403
|
+
dpiLocale: any;
|
|
406
404
|
}, {
|
|
407
405
|
showDatasetsOverview(): boolean;
|
|
408
406
|
showCatalogsOverview(): boolean;
|
|
@@ -1668,9 +1666,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1668
1666
|
useCombinedSearch: boolean;
|
|
1669
1667
|
};
|
|
1670
1668
|
languages: {
|
|
1669
|
+
useLanguageSelector: boolean;
|
|
1671
1670
|
locale: string;
|
|
1672
1671
|
fallbackLocale: string;
|
|
1673
|
-
useLanguageSelector: boolean;
|
|
1674
1672
|
};
|
|
1675
1673
|
themes: {
|
|
1676
1674
|
header: string;
|
|
@@ -1702,8 +1700,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1702
1700
|
callback: Function;
|
|
1703
1701
|
};
|
|
1704
1702
|
};
|
|
1705
|
-
property:
|
|
1706
|
-
id:
|
|
1703
|
+
property: any;
|
|
1704
|
+
id: any;
|
|
1707
1705
|
}, {
|
|
1708
1706
|
formErrorCount(): boolean;
|
|
1709
1707
|
getData: import('vuex').Computed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataProviderInterface.vue.mjs","sources":["../../lib/data-provider-interface/DataProviderInterface.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column bg-transparent container-fluid justify-content-between dpi position-relative w-100\" :key=\"property\">\n <!-- CONTENT -->\n <router-view v-if=\"isReady\" ref=\"view\" :key=\"key\">\n </router-view>\n </div>\n</template>\n\n<script lang=\"ts\">\n/* eslint-disable no-nested-ternary, no-lonely-if, no-param-reassign */\nimport { DpiContext, setupDpiContext } from './composables/useDpiContext';\nimport { computed, defineAsyncComponent, defineComponent, PropType , provide, ref, toRef, toRefs, toValue, watch, watchEffect} from 'vue';\nimport { mapActions, mapGetters, useStore } from 'vuex';\nimport dpiSpecs from './config/dpi-spec-config';\nimport { useRuntimeEnv } from '../composables/useRuntimeEnv';\nimport { useRoute } from 'vue-router';\nimport { useAsyncState, watchOnce } from '@vueuse/core';\nimport { useDpiEditMode } from './composables/useDpiEditMode';\nimport { AutocompleteInstance, autocompleteKey, defaultAutocompleteAdapter, useAutocomplete } from './composables/aucotomplete';\n\n\n\nexport default defineComponent({\n name: 'DataProviderInterface',\n components: {\n InputPage: defineAsyncComponent(() => import('./views/InputPage.vue')),\n },\n props: {\n name: {\n type: String,\n default: '',\n },\n dpiContext: {\n type: Object as PropType<DpiContext>,\n default: () => undefined,\n },\n autocomplete: {\n type: Object as PropType<AutocompleteInstance>,\n default: () => undefined,\n }\n },\n metaInfo() {\n return {\n title: `${this.$t('message.metadata.upload')} | ${this.$t('message.header.navigation.data.datasets')}`,\n meta: [\n { name: 'description', vmid: 'description', content: `${this.$t('message.datasets.meta.description')}` },\n { name: 'keywords', vmid: 'keywords', content: `${this.$env.metadata.keywords} ${this.$t('message.datasets.meta.description')}}` },\n { name: 'robots', content: 'noindex, follow' },\n ],\n };\n },\n data() {\n return {\n property: this.$route.params.property,\n id: this.$route.params.id,\n };\n },\n computed: {\n ...mapGetters('auth', [\n 'getIsEditMode',\n ]),\n mode() {\n return this.property === 'catalogues'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editCatalogue')\n : this.$t('message.dataupload.createNewCatalogue')\n : this.property === 'datasets'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editDataset')\n : this.$t('message.dataupload.createNewDataset')\n : 'Edit Distribution';\n },\n },\n methods: {\n ...mapActions('dpiStore', [\n 'saveLocalstorageValues',\n ]),\n ...mapActions('auth', [\n 'populateDraftAndEdit',\n ]),\n getClearPath() {\n return `${this.$env.content.dataProviderInterface.basePath}/${this.property}?locale=${this.$i18n.locale}&clear=true`;;\n },\n handleScroll() {\n try {\n if (document.getElementById(\"stepperAnchor\")?.offsetTop || 0 >= 35) {\n document.getElementById(\"stepperAnchor\")?.classList.add(\"border-bottom-lightgray\");\n }\n else {\n document.getElementById(\"stepperAnchor\")?.classList.remove(\"border-bottom-lightgray\");\n }\n } catch (error) {\n \n }\n }\n\n },\n created() {\n window.addEventListener('scroll', this.handleScroll);\n this.populateDraftAndEdit();\n },\n mounted() {\n this.saveLocalstorageValues(this.property);\n },\n unmounted() {\n window.removeEventListener('scroll', this.handleScroll);\n },\n setup(props) {\n const route = useRoute()\n const store = useStore()\n const env = useRuntimeEnv()\n const userSpec = env.content.dataProviderInterface.specification as 'dcatap' | 'dcatapde' | 'dcatapdeODB'\n const fallbackSpec = dpiSpecs[userSpec]\n const dpiContext = toRef(props, 'dpiContext')\n\n const resolvedDpiContext = computed<DpiContext>(() => {\n const _dpiContext = toValue(dpiContext)\n\n return {\n specification: fallbackSpec,\n specificationName: userSpec,\n edit: {\n enabled: route.query.edit === 'true',\n id: route.query.id as string || undefined,\n catalog: route.query.catalog as string || undefined,\n fromDraft: route.query.fromDraft === 'true',\n },\n ..._dpiContext\n }\n })\n\n const specification = computed(() => {\n return resolvedDpiContext.value.specification\n })\n\n const specificationName = computed(() => {\n return resolvedDpiContext.value.specificationName\n })\n\n setupDpiContext(resolvedDpiContext)\n const defaultAutocompleteInstance = defaultAutocompleteAdapter({\n envs: env,\n dpiContext: resolvedDpiContext\n });\n provide(autocompleteKey, props.autocomplete || defaultAutocompleteInstance.adapter);\n\n watchEffect(() => {\n store.dispatch('dpiStore/setSpecification', specification.value)\n store.dispatch('dpiStore/setSpecificationname', specificationName.value)\n })\n\n const key = computed(() => {\n return `${route.query.key}@${specificationName.value}`\n })\n\n const { isReady } = useDpiEditMode(resolvedDpiContext)\n\n return {\n resolvedDpiContext,\n key,\n isReady,\n }\n\n }\n});\n</script>\n\n<style lang=\"scss\">\n.border-bottom-lightgray {\n border-bottom: 1px solid lightgray;\n}\n.stickyStepper {\n position: sticky;\n top: 0;\n background: #ffffff;\n z-index: 999;\n}\n\n.stickyStepper .SSfirstRow {\n margin: 1vh 0;\n display: flex;\n align-items: center;\n}\n\n.stickyStepper .stickyNav {\n border-left: 1px solid black;\n margin-left: 1vh;\n padding-left: 1vh;\n}\n\n#stepper {\n width: 100% !important;\n}\n\n#input {\n padding: 10px;\n}\n\n.small-headline {\n font-size: 1.5rem;\n min-width: max-content;\n}\n\n.property {\n margin: 20px;\n background-color: #ffffff;\n border: solid 0.5px rgb(225, 225, 225);\n margin-top: 30px;\n}\n\n.infoBox .material-icons {\n font-size: 20px;\n vertical-align: text-bottom;\n margin-right: 5px;\n margin-bottom: 1px;\n}\n\n.infoBox {\n width: 100%;\n height: 30%;\n background-color: #f7f7f7;\n padding: 5%;\n border-radius: 0.25rem;\n margin-top: 20px;\n\n .input_subpage_nav {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 15px;\n }\n}\n\n.besides {\n .formkit-input-group-repeatable {\n display: flex;\n flex-direction: row;\n background-color: transparent;\n padding: 0px;\n }\n}\n\n.main {\n width: 75%;\n margin: 0 5px 0 5px;\n}\n\n.sub {\n width: 20%;\n margin: 0 5px 0 5px;\n}\n\n#subStepperBox {\n position: sticky;\n top: 154px;\n z-index: 10;\n width: 100%;\n padding: 0 10%;\n\n .step-progress__bar {\n border-top: none !important;\n }\n\n .step-progress__step--active {\n .step-progress__step-label {\n background-color: lightsteelblue !important;\n }\n\n }\n}\n\n.step-progress__step span{\n \n color:white !important;\n \n}\n// Stepper Customizing -------------\n\n// #stepper,\n// #subStepper {\n// .step-progress__step {\n// display: flex;\n// align-items: center;\n// justify-content: center;\n// height: 70%;\n// width: 20%;\n// display: flex;\n// align-items: center;\n// z-index: 1;\n\n\n// span {\n// color: grey;\n// font-size: 18px;\n// display: none;\n// }\n\n// div {\n// padding: 1rem;\n// height: 100%;\n// display: flex;\n// align-items: center;\n// color: white;\n// font-weight: 300;\n\n// }\n\n// .step-progress__step-label {\n\n// background: lightgrey;\n// background-size: 400% 400%;\n// background-position: 100% 0%;\n// transition: all 300ms ease-in-out;\n// border-right: 1px white solid;\n// font-size: 14px;\n// display: flex;\n// align-items: center;\n// justify-content: center;\n\n\n// }\n\n\n// .step-progress__step-label:hover {\n// background-position: 65% 0%;\n// color: black;\n\n// }\n\n// }\n\n// .step-progress__step--active {\n\n// z-index: 7 !important;\n\n\n// span {\n// color: black;\n// }\n\n// div {\n// background: white;\n// }\n\n// .step-progress__step-label {\n// background: rgb(236, 236, 236);\n// background-position: 50% 0%;\n// box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12) !important;\n// transform: scale(1.1);\n// z-index: 8;\n// font-size: 16px;\n// }\n\n// }\n\n// .step-progress__step--valid {\n// div {\n// color: white;\n\n// }\n\n// .step-progress__step-label {\n// background: rgba(0, 235, 0, 0.2);\n// color: lightslategrey;\n\n\n// }\n\n// .step-progress__step-label:hover {\n// color: black;\n// }\n// }\n\n// .step-progress__step--active .step-progress__step-label {\n// color: rgb(31, 31, 31);\n// }\n\n// .step-progress__wrapper-after {\n// display: none;\n// }\n\n// .step-progress__step-icon {\n// display: none !important;\n// }\n\n// .step-progress__bar {\n// margin: 0;\n// height: 5rem;\n// border-top: 1px solid lightslategray;\n\n// }\n\n// .step-progress__step-label {\n// position: unset;\n// transform: unset;\n// flex-grow: 1;\n// }\n\n// .step-progress__step {}\n\n// .step-progress__wrapper-before {\n// display: none !important;\n// }\n\n// #stepper .step-progress__step::after {\n// display: none !important;\n// }\n// }\n#stepper .step-progress__step{\n border: solid white 20px;\n}\n#stepper .step-progress__step-icon, #subStepper .step-progress__step-icon {\n font-size: 25px;\n}\n.step-progress__step-label{\n cursor: pointer;\n}\n// Input Form Margins & Borders ----\n\n.formkit-input[data-classification=group] [data-is-repeatable] {\n border: none;\n padding: 1em 1em 1em 0em;\n}\n\n.formkit-input[data-classification=group] [data-is-repeatable] .formkit-input-group-repeatable {\n border-bottom: none;\n}\n\n.formkit-input-element--checkbox {\n margin-right: 5px;\n}\n\n.formkit-input-wrapper {\n font-family: \"Ubuntu\";\n}\n\n.formkit-input[data-classification=button] button[data-ghost] {\n font-weight: 400;\n}\n\n.formkit-input-error {\n color: #e13737 !important;\n font-weight: 400 !important;\n}\n\n// General Formkit Styling ----\n\n.formkit {\n &-input {\n .formkit {\n &-input {\n &-element {\n max-width: 100%;\n }\n\n &-error {\n font-weight: bold;\n }\n }\n }\n }\n\n .formkit-input-group-add-more {\n display: flex;\n justify-content: flex-end;\n\n button {\n border: black;\n }\n }\n\n .formkit-input {\n &[data-classification=\"text\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n &[data-classification=\"select\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n }\n\n .formkit-input[data-classification=\"button\"] {\n button {\n &[data-ghost] {\n color: white;\n background-color: #001d85;\n border-color: #001d85;\n border-radius: 1.875rem;\n\n &:hover {\n background-color: #196fd2;\n border-color: #196fd2;\n }\n }\n }\n }\n}\n\n.formkit-input.besides {\n border-bottom: 1px solid lightgrey !important;\n}\n\n.formkit-input-label {\n font-weight: 500 !important;\n}\n\n.formkit-input-element {\n\n &--textarea {\n width: 100%;\n }\n}\n\n.formkit-input-element--group {\n display: block !important;\n}\n\n.formkit-input.besides>.formkit-input-wrapper>.formkit-input-label {\n\n\n text-decoration: underline !important;\n}\n\n// #stepper,\n// #subStepper {\n\n\n// .step-progress__step::after {\n// display: none;\n// }\n\n// .step-progress__step-label {\n// cursor: pointer;\n// }\n// }\n</style>\n"],"names":["_resolveComponent","property","_createElementBlock","isReady","_ctx","_openBlock","_createBlock","_component_router_view","_createCommentVNode"],"mappings":";;;;;YACEA,EAIM,aAAA;SAJmHC,EAAQ,GAAAC,EAAA,OAAA;AAAA,IAAA,OAAA;AAAA,IAE5GC,KAAAA,EAAAA;AAAAA,EAAAA,GAAAA;AAAAA,IAASC,EAAA,WAAAC,KAAoBC,EAAAC,GAAA;AAAA,MAAA,KAAA;AAAA,MAHpD,KAAAH,EAAA;AAAA,IAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA;;;"}
|
|
1
|
+
{"version":3,"file":"DataProviderInterface.vue.mjs","sources":["../../lib/data-provider-interface/DataProviderInterface.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column bg-transparent container-fluid justify-content-between dpi position-relative w-100\" :key=\"property\">\n <!-- CONTENT -->\n <router-view v-if=\"isReady\" ref=\"view\" :key=\"key\">\n </router-view>\n </div>\n</template>\n\n<script lang=\"ts\">\n/* eslint-disable no-nested-ternary, no-lonely-if, no-param-reassign */\nimport { DpiContext, setupDpiContext } from './composables/useDpiContext';\nimport { computed, defineAsyncComponent, defineComponent, PropType , provide, ref, toRef, toRefs, toValue, watch, watchEffect} from 'vue';\nimport { mapActions, mapGetters, useStore } from 'vuex';\nimport dpiSpecs from './config/dpi-spec-config';\nimport { useRuntimeEnv } from '../composables/useRuntimeEnv';\nimport { useRoute } from 'vue-router';\nimport { useAsyncState, watchOnce } from '@vueuse/core';\nimport { useDpiEditMode } from './composables/useDpiEditMode';\nimport { AutocompleteInstance, autocompleteKey, defaultAutocompleteAdapter, useAutocomplete } from './composables/aucotomplete';\n\n\n\nexport default defineComponent({\n name: 'DataProviderInterface',\n components: {\n InputPage: defineAsyncComponent(() => import('./views/InputPage.vue')),\n },\n props: {\n name: {\n type: String,\n default: '',\n },\n dpiContext: {\n type: Object as PropType<DpiContext>,\n default: () => undefined,\n },\n autocomplete: {\n type: Object as PropType<AutocompleteInstance>,\n default: () => undefined,\n }\n },\n metaInfo() {\n return {\n title: `${this.$t('message.metadata.upload')} | ${this.$t('message.header.navigation.data.datasets')}`,\n meta: [\n { name: 'description', vmid: 'description', content: `${this.$t('message.datasets.meta.description')}` },\n { name: 'keywords', vmid: 'keywords', content: `${this.$env.metadata.keywords} ${this.$t('message.datasets.meta.description')}}` },\n { name: 'robots', content: 'noindex, follow' },\n ],\n };\n },\n data() {\n return {\n property: this.$route.params.property,\n id: this.$route.params.id,\n };\n },\n computed: {\n ...mapGetters('auth', [\n 'getIsEditMode',\n ]),\n mode() {\n return this.property === 'catalogues'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editCatalogue')\n : this.$t('message.dataupload.createNewCatalogue')\n : this.property === 'datasets'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editDataset')\n : this.$t('message.dataupload.createNewDataset')\n : 'Edit Distribution';\n },\n },\n methods: {\n ...mapActions('dpiStore', [\n 'saveLocalstorageValues',\n ]),\n ...mapActions('auth', [\n 'populateDraftAndEdit',\n ]),\n getClearPath() {\n return `${this.$env.content.dataProviderInterface.basePath}/${this.property}?locale=${this.$i18n.locale}&clear=true`;;\n },\n handleScroll() {\n try {\n if (document.getElementById(\"stepperAnchor\")?.offsetTop || 0 >= 35) {\n document.getElementById(\"stepperAnchor\")?.classList.add(\"border-bottom-lightgray\");\n }\n else {\n document.getElementById(\"stepperAnchor\")?.classList.remove(\"border-bottom-lightgray\");\n }\n } catch (error) {\n \n }\n }\n\n },\n created() {\n window.addEventListener('scroll', this.handleScroll);\n this.populateDraftAndEdit();\n },\n mounted() {\n this.saveLocalstorageValues(this.property);\n },\n unmounted() {\n window.removeEventListener('scroll', this.handleScroll);\n },\n setup(props) {\n const route = useRoute()\n const store = useStore()\n const env = useRuntimeEnv()\n const userSpec = env.content.dataProviderInterface.specification as 'dcatap' | 'dcatapde' | 'dcatapdeODB'\n const fallbackSpec = dpiSpecs[userSpec]\n const dpiContext = toRef(props, 'dpiContext')\n\n const resolvedDpiContext = computed<DpiContext>(() => {\n const _dpiContext = toValue(dpiContext)\n\n return {\n specification: fallbackSpec,\n specificationName: userSpec,\n edit: {\n enabled: route.query.edit === 'true',\n id: route.query.id as string || undefined,\n catalog: route.query.catalog as string || undefined,\n fromDraft: route.query.fromDraft === 'true',\n },\n ..._dpiContext\n }\n })\n\n const specification = computed(() => {\n return resolvedDpiContext.value.specification\n })\n\n const specificationName = computed(() => {\n return resolvedDpiContext.value.specificationName\n })\n\n setupDpiContext(resolvedDpiContext)\n const defaultAutocompleteInstance = defaultAutocompleteAdapter({\n envs: env,\n dpiContext: resolvedDpiContext\n });\n provide(autocompleteKey, props.autocomplete || defaultAutocompleteInstance.adapter);\n\n watchEffect(() => {\n store.dispatch('dpiStore/setSpecification', specification.value)\n store.dispatch('dpiStore/setSpecificationname', specificationName.value)\n })\n\n const key = computed(() => {\n return `${route.query.key}@${specificationName.value}`\n })\n\n const { isReady } = useDpiEditMode(resolvedDpiContext)\n\n return {\n resolvedDpiContext,\n key,\n isReady,\n }\n\n }\n});\n</script>\n\n<style lang=\"scss\">\n.border-bottom-lightgray {\n border-bottom: 1px solid lightgray;\n}\n.stickyStepper {\n position: sticky;\n top: 0;\n background: #ffffff;\n z-index: 999;\n}\n\n.stickyStepper .SSfirstRow {\n margin: 1vh 0;\n display: flex;\n align-items: center;\n}\n\n.stickyStepper .stickyNav {\n border-left: 1px solid black;\n margin-left: 1vh;\n padding-left: 1vh;\n}\n\n#stepper {\n width: 100% !important;\n}\n\n#input {\n padding: 10px;\n}\n\n.small-headline {\n font-size: 1.5rem;\n min-width: max-content;\n}\n\n.property {\n margin: 20px;\n background-color: #ffffff;\n border: solid 0.5px rgb(225, 225, 225);\n margin-top: 30px;\n}\n\n.infoBox .material-icons {\n font-size: 20px;\n vertical-align: text-bottom;\n margin-right: 5px;\n margin-bottom: 1px;\n}\n\n.infoBox {\n width: 100%;\n height: 30%;\n background-color: #f7f7f7;\n padding: 5%;\n border-radius: 0.25rem;\n margin-top: 20px;\n\n .input_subpage_nav {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 15px;\n }\n}\n\n.besides {\n .formkit-input-group-repeatable {\n display: flex;\n flex-direction: row;\n background-color: transparent;\n padding: 0px;\n }\n}\n\n.main {\n width: 75%;\n margin: 0 5px 0 5px;\n}\n\n.sub {\n width: 20%;\n margin: 0 5px 0 5px;\n}\n\n#subStepperBox {\n position: sticky;\n top: 154px;\n z-index: 10;\n width: 100%;\n padding: 0 10%;\n\n .step-progress__bar {\n border-top: none !important;\n }\n\n .step-progress__step--active {\n .step-progress__step-label {\n background-color: lightsteelblue !important;\n }\n\n }\n}\n\n.step-progress__step span{\n \n color:white !important;\n \n}\n// Stepper Customizing -------------\n\n// #stepper,\n// #subStepper {\n// .step-progress__step {\n// display: flex;\n// align-items: center;\n// justify-content: center;\n// height: 70%;\n// width: 20%;\n// display: flex;\n// align-items: center;\n// z-index: 1;\n\n\n// span {\n// color: grey;\n// font-size: 18px;\n// display: none;\n// }\n\n// div {\n// padding: 1rem;\n// height: 100%;\n// display: flex;\n// align-items: center;\n// color: white;\n// font-weight: 300;\n\n// }\n\n// .step-progress__step-label {\n\n// background: lightgrey;\n// background-size: 400% 400%;\n// background-position: 100% 0%;\n// transition: all 300ms ease-in-out;\n// border-right: 1px white solid;\n// font-size: 14px;\n// display: flex;\n// align-items: center;\n// justify-content: center;\n\n\n// }\n\n\n// .step-progress__step-label:hover {\n// background-position: 65% 0%;\n// color: black;\n\n// }\n\n// }\n\n// .step-progress__step--active {\n\n// z-index: 7 !important;\n\n\n// span {\n// color: black;\n// }\n\n// div {\n// background: white;\n// }\n\n// .step-progress__step-label {\n// background: rgb(236, 236, 236);\n// background-position: 50% 0%;\n// box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12) !important;\n// transform: scale(1.1);\n// z-index: 8;\n// font-size: 16px;\n// }\n\n// }\n\n// .step-progress__step--valid {\n// div {\n// color: white;\n\n// }\n\n// .step-progress__step-label {\n// background: rgba(0, 235, 0, 0.2);\n// color: lightslategrey;\n\n\n// }\n\n// .step-progress__step-label:hover {\n// color: black;\n// }\n// }\n\n// .step-progress__step--active .step-progress__step-label {\n// color: rgb(31, 31, 31);\n// }\n\n// .step-progress__wrapper-after {\n// display: none;\n// }\n\n// .step-progress__step-icon {\n// display: none !important;\n// }\n\n// .step-progress__bar {\n// margin: 0;\n// height: 5rem;\n// border-top: 1px solid lightslategray;\n\n// }\n\n// .step-progress__step-label {\n// position: unset;\n// transform: unset;\n// flex-grow: 1;\n// }\n\n// .step-progress__step {}\n\n// .step-progress__wrapper-before {\n// display: none !important;\n// }\n\n// #stepper .step-progress__step::after {\n// display: none !important;\n// }\n// }\n#stepper .step-progress__step{\n border: solid white 20px;\n}\n#stepper .step-progress__step-icon, #subStepper .step-progress__step-icon {\n font-size: 25px;\n}\n.step-progress__step-label{\n cursor: pointer;\n}\n// Input Form Margins & Borders ----\n\n.formkit-input[data-classification=group] [data-is-repeatable] {\n border: none;\n padding: 1em 1em 1em 0em;\n}\n\n.formkit-input[data-classification=group] [data-is-repeatable] .formkit-input-group-repeatable {\n border-bottom: none;\n}\n\n.formkit-input-element--checkbox {\n margin-right: 5px;\n}\n\n.formkit-input-wrapper {\n font-family: \"Ubuntu\";\n}\n\n.formkit-input[data-classification=button] button[data-ghost] {\n font-weight: 400;\n}\n\n.formkit-input-error {\n color: #e13737 !important;\n font-weight: 400 !important;\n}\n\n// General Formkit Styling ----\n\n.formkit {\n &-input {\n .formkit {\n &-input {\n &-element {\n max-width: 100%;\n }\n\n &-error {\n font-weight: bold;\n }\n }\n }\n }\n\n .formkit-input-group-add-more {\n display: flex;\n justify-content: flex-end;\n\n button {\n border: black;\n }\n }\n\n .formkit-input {\n &[data-classification=\"text\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n &[data-classification=\"select\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n }\n\n .formkit-input[data-classification=\"button\"] {\n button {\n &[data-ghost] {\n color: white;\n background-color: #001d85;\n border-color: #001d85;\n border-radius: 1.875rem;\n\n &:hover {\n background-color: #196fd2;\n border-color: #196fd2;\n }\n }\n }\n }\n}\n\n.formkit-input.besides {\n border-bottom: 1px solid lightgrey !important;\n}\n\n.formkit-input-label {\n font-weight: 500 !important;\n}\n\n.formkit-input-element {\n\n &--textarea {\n width: 100%;\n }\n}\n\n.formkit-input-element--group {\n display: block !important;\n}\n\n.formkit-input.besides>.formkit-input-wrapper>.formkit-input-label {\n\n\n text-decoration: underline !important;\n}\n\n// #stepper,\n// #subStepper {\n\n\n// .step-progress__step::after {\n// display: none;\n// }\n\n// .step-progress__step-label {\n// cursor: pointer;\n// }\n// }\n</style>\n"],"names":["_resolveComponent","property","_createElementBlock","isReady","_ctx","_openBlock","_createBlock","_component_router_view"],"mappings":";;;;;YACEA,EAIM,aAAA;SAJmHC,EAAQ,GAAAC,EAAA,OAAA;AAAA,IAAA,OAAA;AAAA,IAE5GC,KAAAA,EAAAA;AAAAA,EAAAA,GAAAA;AAAAA,IAASC,EAAA,WAAAC,KAAoBC,EAAAC,GAAA;AAAA,MAAA,KAAA;AAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteInput.vue.mjs","sources":["../../../lib/data-provider-interface/components/AutocompleteInput.vue"],"sourcesContent":["<template>\n <div class=\"formkitProperty\">\n\n <!-- need to make a condition for the licence property of the distribution - otherwise the dropdown doesnt work-->\n\n <h4 class=\"formkitHeader\" v-if=\"inDis\">\n {{ $t('message.dataupload.distributions.' + props.context.attrs.identifier + '.label') }}\n </h4>\n <h4 v-if=\"props.context.attrs.identifier != 'licence' && !inDis\" v-html=\"$t('message.dataupload.datasets.' + props.context.attrs.identifier + '.label')\">\n </h4>\n\n <div class=\"formkitCmpWrap\">\n\n <div class=\"formkit-outer\">\n <div class=\"d-flex formkit-inner\" v-if=\"!props.context.attrs.multiple && props.context.value.name\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n <a class=\"autocompleteInputSingleValue \">{{ props.context.value.name }}</a>\n <div class=\"removeX\" @click=\"removeProperty\"></div>\n </div>\n <div v-else>\n <div class=\"d-flex align-items-center justify-content-center formkit-inner mb-2\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n\n <input ref=\"acInput\" class=\"autocompleteInputfield\" :placeholder=\"props.context.attrs.placeholder\" v-model=\"inputText\"\n type=\"text\" v-on:keyup=\"getAutocompleteSuggestions($event)\" @click=\"activeList = !activeList\">\n </div>\n\n <ul ref=\"dropdownList\" v-show=\"activeList\" class=\"autocompleteResultList\">\n <li v-for=\"match in matches\" :key=\"match\" @click=\"setValue(match); activeList = !activeList\"\n class=\"p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC\">{{ match.name }}\n </li>\n </ul>\n <div v-if=\"instance.content.dataProviderInterface.annifIntegration && props.context.attrs.annifTheme\"\n class=\"d-flex flex-wrap\">\n <div v-for=\"item in listOfValues\" :key=\"item\">\n <div class=\"activeResultsAutocompleteWrapper\">\n <div class=\"d-flex\" @click=\"item.activeValue = !item.activeValue;\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n </div>\n <div class=\"w-100 mt-4\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h3>{{ $t('message.dataupload.info.suggestions') }}</h3>\n <span>{{ $t('message.dataupload.info.suggestionText') }}</span>\n <button class=\"navlikeButton\" type=\"button\"\n @click=\"fillAnnifsuggestions(); annifTrigger.value = true\">{{ $t('message.dataupload.info.tryIt')\n }}</button>\n </div>\n <div class=\"annifresultContainer\" v-if=\"annifTrigger.value\">\n <div v-for=\"item in annifSelectionList\" :key=\"item\" class=\"d-flex \">\n <div class=\"activeResultsAutocompleteWrapper annifResults\"\n :class=\"{ loadMore: item.resource === 'invalid' }\"\n @click=\"item.activeValue = !item.activeValue; updateAnnifselection(item)\">\n <div class=\"d-flex\">\n <span>{{ item.name }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n <div v-else class=\"d-flex flex-wrap\">\n <div class=\"activeResultsAutocompleteWrapper\" v-for=\"item in props.context.value\" :key=\"item\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n\n\n <!-- <div class=\"formkit-wrapper mb-3\">\n <div v-html=\"$t('message.dataupload.distributions.licence.vocabulary.help')\" class=\"formkit-help\"> \n </div> \n </div> -->\n\n <div v-html=\"props.context.attrs.info\" class=\"formkit-help\"></div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script setup>\nimport { ref, watch, computed, onMounted, watchEffect } from 'vue';\nimport { useStore } from 'vuex';\nimport { getTranslationFor } from \"../../utils/helpers\";\nimport { getCurrentInstance } from \"vue\";\nimport { getNode } from '@formkit/core'\nimport { onClickOutside } from '@vueuse/core'\nimport { useI18n } from 'vue-i18n';\n\nimport qs from 'qs';\nimport axios from 'axios';\nimport { useAutocomplete } from '../composables/aucotomplete';\n\nlet instance = getCurrentInstance().appContext.app.config.globalProperties.$env\n\nconst { requestAutocompleteSuggestions, requestResourceName } = useAutocomplete()\n\nconst props = defineProps({\n context: Object\n})\nconst store = useStore();\nconst { t, locale } = useI18n();\n\nlet listOfValues = computed(() => {\n return props.context.value;\n})\n\nlet selection;\nlet voc = props.context.attrs.voc;\n\nlet matchesSearchstring = computed(() => {\n return t('message.dataupload.info.searchVocabulary')\n})\nlet matchesNothingFound = computed(() => {\n return t('message.dataupload.info.matchesNothingFound')\n})\nlet matches = ref({\n value: { name: matchesSearchstring }\n})\nlet activeList = ref()\nlet dropdownList = ref(null)\nlet acInput = ref(null)\nlet inputText = ref({})\nlet cacheList = [];\nlet annifList = [];\nlet annifTrigger = ref({\n value: false\n});\nlet initialValues = ref();\nlet annifSelectionList = ref({})\n\nonMounted(async () => {\n inputText.value = \"\"\n});\nlet inDis = computed(() => {\n try {\n if (props.context.attrs.class.includes(\"inDistribution\")) {\n return true\n }\n } catch (error) {\n\n }\n\n\n});\nwatch(matches, async () => { })\nwatch(annifSelectionList, async () => { })\n\nconst requestURIname = async (res) => {\n\n if (res != undefined) {\n let vocMatch =\n voc === \"iana-media-types\" ||\n voc === \"spdx-checksum-algorithm\";\n\n let name;\n\n await requestResourceName({ voc: voc, uri: res, envs: instance }).then(\n (response) => {\n if (props.context.attrs.property === 'dcatde:politicalGeocodingURI') {\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.alt_label)[0].en\n : getTranslationFor(response.data.result.alt_label, locale.value, []);\n name = result;\n }\n } else {\n\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.pref_label)[0].en\n : getTranslationFor(response.data.result.pref_label, locale.value, []);\n name = result;\n\n }\n }\n }\n );\n return name\n }\n\n}\n\nwatchEffect(async () => {\n const values = listOfValues.value;\n\n // single URI's\n if (values.hasOwnProperty('name')) {\n if (values.name === values.resource) {\n let uriName;\n if (!props.context.attrs.multiple) {\n uriName = requestURIname(values.resource)\n props.context.node.input({ name: await uriName, resource: values.resource })\n\n }\n }\n }\n // multiple URI's\n if (values.length >= 1) {\n let uriNameList = [];\n for (let index = 0; index < values.length; index++) {\n if (values[index].name === values[index].resource) {\n uriNameList.push({ name: await requestURIname(values[index].resource), resource: values[index].resource })\n props.context.node.input(uriNameList)\n }\n }\n }\n});\nfunction findPropertyToUpdate(trigger) {\n\n let finalPath = { step: '', prop: props.context.node.name }\n let pathToLocalStorage = JSON.parse(localStorage.getItem('dpi_datasets'));\n\n for (let index = 0; index < Object.keys(pathToLocalStorage).length; index++) {\n for (let innerIndex = 0; innerIndex < Object.keys(pathToLocalStorage)[index].length; innerIndex++) {\n let ntry = Object.entries((pathToLocalStorage))\n try {\n Object.keys(ntry[index][innerIndex]).filter(e => {\n if (e === props.context.node.name) {\n finalPath.step = ntry[index][0]\n\n if (trigger === 'erase') {\n\n selection = {}\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n if (typeof selection === 'object') {\n\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n else pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n localStorage.setItem('dpi_datasets', JSON.stringify(pathToLocalStorage))\n }\n });\n } catch (error) {\n }\n }\n }\n\n window.removeEventListener(\"click\", onClickOutside);\n}\nonClickOutside(dropdownList, event => activeList.value = false)\nonClickOutside(acInput, event => inputText.value = \"\")\n\nlet annifHandlerTheme = async (input, limit) => {\n\n let finalLimit = 10;\n if (limit != undefined) {\n finalLimit = finalLimit + 10\n }\n\n let query = qs.stringify({\n 'text': input,\n 'limit': finalLimit\n });\n\n\n var config = {\n method: 'post',\n url: voc == \"eurovoc\"\n ? instance.content.dataProviderInterface.annifLinkSubject\n : instance.content.dataProviderInterface.annifLinkTheme,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/json'\n },\n data: query\n };\n\n let list = []\n\n axios(config)\n .then(async (response) => {\n\n for (let i = 0; i < response.data.results.length; i++) {\n\n\n annifList[i] = { \"name\": response.data.results[i].label, \"resource\": response.data.results[i].uri, \"activeValue\": false }\n }\n let annifCacheList = []\n if (listOfValues.value.length > 0) {\n listOfValues.value.forEach(element => {\n annifCacheList.push({ \"name\": element.name, \"resource\": element.resource, \"activeValue\": true })\n });\n }\n if (response.data.results.length > 9) {\n annifList[annifList.length + 1] = { \"name\": \"...\", \"resource\": \"invalid\", \"activeValue\": false }\n }\n\n annifSelectionList.value = eraseDuplicates(annifCacheList, annifList)\n\n })\n .catch(function (error) {\n console.log(error);\n });\n}\nasync function updateAnnifselection(item) {\n\n if (item.resource === 'invalid') {\n fillAnnifsuggestions(5);\n }\n else {\n setValue({ name: item.name, resource: item.resource })\n fillAnnifsuggestions()\n }\n}\nfunction eraseDuplicates(array1, array2) {\n\n let mergedArray = array1.concat(array2);\n let filteredArray = [];\n let resourceSet = new Set();\n\n mergedArray.forEach(obj => {\n if (!resourceSet.has(obj.resource)) {\n resourceSet.add(obj.resource);\n if (!obj.activeValue) {\n filteredArray.push(obj);\n }\n }\n });\n\n\n return filteredArray;\n}\nconst fillAnnifsuggestions = async (limitChange) => {\n\n let arr = getNode('Mandatory').value['dct:description']\n for (let i = 0; i < arr.length; i++) {\n if (arr[i]['@language'] === 'en') {\n if (limitChange != undefined) {\n await annifHandlerTheme(arr[i]['@value'], 5)\n }\n else await annifHandlerTheme(arr[i]['@value'])\n }\n }\n\n}\n\n// Need to append the classes to the formkit-outer element\nprops.context.classes.outer += ' autocompleteInput ' + props.context.attrs.identifier\n\nconst setValue = async (e) => {\n inputText.value = \"\"\n if (Object.keys(e).length === 1) {\n return\n }\n if (listOfValues.value.length > 0) {\n\n cacheList = listOfValues.value\n }\n\n // when its a multi input\n if (props.context.attrs.multiple) {\n // check for doubled values\n if (cacheList.length != 0) {\n let filteredProperty = { name: e.name, resource: e.resource };\n let filteredList = cacheList.filter((element) => element.name != e.name);\n filteredList.push(filteredProperty)\n selection = filteredList;\n await props.context.node.input(selection);\n\n }\n else {\n cacheList.push({ name: e.name, resource: e.resource })\n selection = cacheList\n await props.context.node.input(selection);\n }\n\n }\n else if (e.resource === \"invalid\") return\n else if (e === \"erase\") { await props.context.node.input({}); findPropertyToUpdate(e) }\n else {\n selection = { name: e.name, resource: e.resource };\n await props.context.node.input(selection);\n }\n findPropertyToUpdate();\n}\n\nconst getAutocompleteSuggestions = async (e) => {\n let innerText = e.target.value\n await requestAutocompleteSuggestions({ voc, text: innerText, base: instance.api.baseUrl }).then((response) => {\n // filter OP_DATPRO\n const updatedArray = response.data.result.results.filter(obj => obj.id !== 'OP_DATPRO');\n\n const results = updatedArray.map((r) => ({\n name: getTranslationFor(r.pref_label, locale.value, []) + \" (\" + r.id + \")\",\n resource: r.resource,\n }));\n if (results.length === 0) {\n matches.value = { value: { name: matchesNothingFound } }\n }\n else matches.value = results;\n });\n}\n\nfunction removeProperty(e) {\n props.context.node.input({})\n setValue('erase');\n}\nfunction removeMultipleProperty(e) {\n\n if (instance.content.dataProviderInterface.annifIntegration) {\n fillAnnifsuggestions()\n }\n if (listOfValues.value.length > 0) {\n cacheList = listOfValues.value\n }\n // Get Index in the array where all values of the Span are stored and cut it out of the list of Values\n cacheList.splice(cacheList.findIndex((element) => element.name == e.name), 1)\n selection = cacheList;\n props.context.node.input(selection);\n findPropertyToUpdate();\n}\n</script>\n"],"names":["instance","getCurrentInstance","requestAutocompleteSuggestions","requestResourceName","useAutocomplete","props","__props","useStore","t","locale","useI18n","listOfValues","computed","selection","voc","matchesSearchstring","matchesNothingFound","matches","ref","activeList","dropdownList","acInput","inputText","cacheList","annifList","annifTrigger","annifSelectionList","onMounted","inDis","watch","requestURIname","res","vocMatch","name","response","dataset","getTranslationFor","watchEffect","values","uriName","uriNameList","index","findPropertyToUpdate","trigger","finalPath","pathToLocalStorage","innerIndex","ntry","e","onClickOutside","event","annifHandlerTheme","input","limit","finalLimit","query","qs","config","axios","i","annifCacheList","element","eraseDuplicates","error","updateAnnifselection","item","fillAnnifsuggestions","setValue","array1","array2","mergedArray","filteredArray","resourceSet","obj","limitChange","arr","getNode","filteredProperty","filteredList","getAutocompleteSuggestions","innerText","results","r","removeProperty","removeMultipleProperty"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutocompleteInput.vue.mjs","sources":["../../../lib/data-provider-interface/components/AutocompleteInput.vue"],"sourcesContent":["<template>\n <div class=\"formkitProperty\">\n\n <!-- need to make a condition for the licence property of the distribution - otherwise the dropdown doesnt work-->\n\n <h4 class=\"formkitHeader\" v-if=\"inDis\">\n {{ $t('message.dataupload.distributions.' + props.context.attrs.identifier + '.label') }}\n </h4>\n <h4 v-if=\"props.context.attrs.identifier != 'licence' && !inDis\" v-html=\"$t('message.dataupload.datasets.' + props.context.attrs.identifier + '.label')\">\n </h4>\n\n <div class=\"formkitCmpWrap\">\n\n <div class=\"formkit-outer\">\n <div class=\"d-flex formkit-inner\" v-if=\"!props.context.attrs.multiple && props.context.value.name\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n <a class=\"autocompleteInputSingleValue \">{{ props.context.value.name }}</a>\n <div class=\"removeX\" @click=\"removeProperty\"></div>\n </div>\n <div v-else>\n <div class=\"d-flex align-items-center justify-content-center formkit-inner mb-2\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n\n <input ref=\"acInput\" class=\"autocompleteInputfield\" :placeholder=\"props.context.attrs.placeholder\" v-model=\"inputText\"\n type=\"text\" v-on:keyup=\"getAutocompleteSuggestions($event)\" @click=\"activeList = !activeList\">\n </div>\n\n <ul ref=\"dropdownList\" v-show=\"activeList\" class=\"autocompleteResultList\">\n <li v-for=\"match in matches\" :key=\"match\" @click=\"setValue(match); activeList = !activeList\"\n class=\"p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC\">{{ match.name }}\n </li>\n </ul>\n <div v-if=\"instance.content.dataProviderInterface.annifIntegration && props.context.attrs.annifTheme\"\n class=\"d-flex flex-wrap\">\n <div v-for=\"item in listOfValues\" :key=\"item\">\n <div class=\"activeResultsAutocompleteWrapper\">\n <div class=\"d-flex\" @click=\"item.activeValue = !item.activeValue;\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n </div>\n <div class=\"w-100 mt-4\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h3>{{ $t('message.dataupload.info.suggestions') }}</h3>\n <span>{{ $t('message.dataupload.info.suggestionText') }}</span>\n <button class=\"navlikeButton\" type=\"button\"\n @click=\"fillAnnifsuggestions(); annifTrigger.value = true\">{{ $t('message.dataupload.info.tryIt')\n }}</button>\n </div>\n <div class=\"annifresultContainer\" v-if=\"annifTrigger.value\">\n <div v-for=\"item in annifSelectionList\" :key=\"item\" class=\"d-flex \">\n <div class=\"activeResultsAutocompleteWrapper annifResults\"\n :class=\"{ loadMore: item.resource === 'invalid' }\"\n @click=\"item.activeValue = !item.activeValue; updateAnnifselection(item)\">\n <div class=\"d-flex\">\n <span>{{ item.name }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n <div v-else class=\"d-flex flex-wrap\">\n <div class=\"activeResultsAutocompleteWrapper\" v-for=\"item in props.context.value\" :key=\"item\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n\n\n <!-- <div class=\"formkit-wrapper mb-3\">\n <div v-html=\"$t('message.dataupload.distributions.licence.vocabulary.help')\" class=\"formkit-help\"> \n </div> \n </div> -->\n\n <div v-html=\"props.context.attrs.info\" class=\"formkit-help\"></div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script setup>\nimport { ref, watch, computed, onMounted, watchEffect } from 'vue';\nimport { useStore } from 'vuex';\nimport { getTranslationFor } from \"../../utils/helpers\";\nimport { getCurrentInstance } from \"vue\";\nimport { getNode } from '@formkit/core'\nimport { onClickOutside } from '@vueuse/core'\nimport { useI18n } from 'vue-i18n';\n\nimport qs from 'qs';\nimport axios from 'axios';\nimport { useAutocomplete } from '../composables/aucotomplete';\n\nlet instance = getCurrentInstance().appContext.app.config.globalProperties.$env\n\nconst { requestAutocompleteSuggestions, requestResourceName } = useAutocomplete()\n\nconst props = defineProps({\n context: Object\n})\nconst store = useStore();\nconst { t, locale } = useI18n();\n\nlet listOfValues = computed(() => {\n return props.context.value;\n})\n\nlet selection;\nlet voc = props.context.attrs.voc;\n\nlet matchesSearchstring = computed(() => {\n return t('message.dataupload.info.searchVocabulary')\n})\nlet matchesNothingFound = computed(() => {\n return t('message.dataupload.info.matchesNothingFound')\n})\nlet matches = ref({\n value: { name: matchesSearchstring }\n})\nlet activeList = ref()\nlet dropdownList = ref(null)\nlet acInput = ref(null)\nlet inputText = ref({})\nlet cacheList = [];\nlet annifList = [];\nlet annifTrigger = ref({\n value: false\n});\nlet initialValues = ref();\nlet annifSelectionList = ref({})\n\nonMounted(async () => {\n inputText.value = \"\"\n});\nlet inDis = computed(() => {\n try {\n if (props.context.attrs.class.includes(\"inDistribution\")) {\n return true\n }\n } catch (error) {\n\n }\n\n\n});\nwatch(matches, async () => { })\nwatch(annifSelectionList, async () => { })\n\nconst requestURIname = async (res) => {\n\n if (res != undefined) {\n let vocMatch =\n voc === \"iana-media-types\" ||\n voc === \"spdx-checksum-algorithm\";\n\n let name;\n\n await requestResourceName({ voc: voc, uri: res, envs: instance }).then(\n (response) => {\n if (props.context.attrs.property === 'dcatde:politicalGeocodingURI') {\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.alt_label)[0].en\n : getTranslationFor(response.data.result.alt_label, locale.value, []);\n name = result;\n }\n } else {\n\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.pref_label)[0].en\n : getTranslationFor(response.data.result.pref_label, locale.value, []);\n name = result;\n\n }\n }\n }\n );\n return name\n }\n\n}\n\nwatchEffect(async () => {\n const values = listOfValues.value;\n\n // single URI's\n if (values.hasOwnProperty('name')) {\n if (values.name === values.resource) {\n let uriName;\n if (!props.context.attrs.multiple) {\n uriName = requestURIname(values.resource)\n props.context.node.input({ name: await uriName, resource: values.resource })\n\n }\n }\n }\n // multiple URI's\n if (values.length >= 1) {\n let uriNameList = [];\n for (let index = 0; index < values.length; index++) {\n if (values[index].name === values[index].resource) {\n uriNameList.push({ name: await requestURIname(values[index].resource), resource: values[index].resource })\n props.context.node.input(uriNameList)\n }\n }\n }\n});\nfunction findPropertyToUpdate(trigger) {\n\n let finalPath = { step: '', prop: props.context.node.name }\n let pathToLocalStorage = JSON.parse(localStorage.getItem('dpi_datasets'));\n\n for (let index = 0; index < Object.keys(pathToLocalStorage).length; index++) {\n for (let innerIndex = 0; innerIndex < Object.keys(pathToLocalStorage)[index].length; innerIndex++) {\n let ntry = Object.entries((pathToLocalStorage))\n try {\n Object.keys(ntry[index][innerIndex]).filter(e => {\n if (e === props.context.node.name) {\n finalPath.step = ntry[index][0]\n\n if (trigger === 'erase') {\n\n selection = {}\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n if (typeof selection === 'object') {\n\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n else pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n localStorage.setItem('dpi_datasets', JSON.stringify(pathToLocalStorage))\n }\n });\n } catch (error) {\n }\n }\n }\n\n window.removeEventListener(\"click\", onClickOutside);\n}\nonClickOutside(dropdownList, event => activeList.value = false)\nonClickOutside(acInput, event => inputText.value = \"\")\n\nlet annifHandlerTheme = async (input, limit) => {\n\n let finalLimit = 10;\n if (limit != undefined) {\n finalLimit = finalLimit + 10\n }\n\n let query = qs.stringify({\n 'text': input,\n 'limit': finalLimit\n });\n\n\n var config = {\n method: 'post',\n url: voc == \"eurovoc\"\n ? instance.content.dataProviderInterface.annifLinkSubject\n : instance.content.dataProviderInterface.annifLinkTheme,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/json'\n },\n data: query\n };\n\n let list = []\n\n axios(config)\n .then(async (response) => {\n\n for (let i = 0; i < response.data.results.length; i++) {\n\n\n annifList[i] = { \"name\": response.data.results[i].label, \"resource\": response.data.results[i].uri, \"activeValue\": false }\n }\n let annifCacheList = []\n if (listOfValues.value.length > 0) {\n listOfValues.value.forEach(element => {\n annifCacheList.push({ \"name\": element.name, \"resource\": element.resource, \"activeValue\": true })\n });\n }\n if (response.data.results.length > 9) {\n annifList[annifList.length + 1] = { \"name\": \"...\", \"resource\": \"invalid\", \"activeValue\": false }\n }\n\n annifSelectionList.value = eraseDuplicates(annifCacheList, annifList)\n\n })\n .catch(function (error) {\n console.log(error);\n });\n}\nasync function updateAnnifselection(item) {\n\n if (item.resource === 'invalid') {\n fillAnnifsuggestions(5);\n }\n else {\n setValue({ name: item.name, resource: item.resource })\n fillAnnifsuggestions()\n }\n}\nfunction eraseDuplicates(array1, array2) {\n\n let mergedArray = array1.concat(array2);\n let filteredArray = [];\n let resourceSet = new Set();\n\n mergedArray.forEach(obj => {\n if (!resourceSet.has(obj.resource)) {\n resourceSet.add(obj.resource);\n if (!obj.activeValue) {\n filteredArray.push(obj);\n }\n }\n });\n\n\n return filteredArray;\n}\nconst fillAnnifsuggestions = async (limitChange) => {\n\n let arr = getNode('Mandatory').value['dct:description']\n for (let i = 0; i < arr.length; i++) {\n if (arr[i]['@language'] === 'en') {\n if (limitChange != undefined) {\n await annifHandlerTheme(arr[i]['@value'], 5)\n }\n else await annifHandlerTheme(arr[i]['@value'])\n }\n }\n\n}\n\n// Need to append the classes to the formkit-outer element\nprops.context.classes.outer += ' autocompleteInput ' + props.context.attrs.identifier\n\nconst setValue = async (e) => {\n inputText.value = \"\"\n if (Object.keys(e).length === 1) {\n return\n }\n if (listOfValues.value.length > 0) {\n\n cacheList = listOfValues.value\n }\n\n // when its a multi input\n if (props.context.attrs.multiple) {\n // check for doubled values\n if (cacheList.length != 0) {\n let filteredProperty = { name: e.name, resource: e.resource };\n let filteredList = cacheList.filter((element) => element.name != e.name);\n filteredList.push(filteredProperty)\n selection = filteredList;\n await props.context.node.input(selection);\n\n }\n else {\n cacheList.push({ name: e.name, resource: e.resource })\n selection = cacheList\n await props.context.node.input(selection);\n }\n\n }\n else if (e.resource === \"invalid\") return\n else if (e === \"erase\") { await props.context.node.input({}); findPropertyToUpdate(e) }\n else {\n selection = { name: e.name, resource: e.resource };\n await props.context.node.input(selection);\n }\n findPropertyToUpdate();\n}\n\nconst getAutocompleteSuggestions = async (e) => {\n let innerText = e.target.value\n await requestAutocompleteSuggestions({ voc, text: innerText, base: instance.api.baseUrl }).then((response) => {\n // filter OP_DATPRO\n const updatedArray = response.data.result.results.filter(obj => obj.id !== 'OP_DATPRO');\n\n const results = updatedArray.map((r) => ({\n name: getTranslationFor(r.pref_label, locale.value, []) + \" (\" + r.id + \")\",\n resource: r.resource,\n }));\n if (results.length === 0) {\n matches.value = { value: { name: matchesNothingFound } }\n }\n else matches.value = results;\n });\n}\n\nfunction removeProperty(e) {\n props.context.node.input({})\n setValue('erase');\n}\nfunction removeMultipleProperty(e) {\n\n if (instance.content.dataProviderInterface.annifIntegration) {\n fillAnnifsuggestions()\n }\n if (listOfValues.value.length > 0) {\n cacheList = listOfValues.value\n }\n // Get Index in the array where all values of the Span are stored and cut it out of the list of Values\n cacheList.splice(cacheList.findIndex((element) => element.name == e.name), 1)\n selection = cacheList;\n props.context.node.input(selection);\n findPropertyToUpdate();\n}\n</script>\n"],"names":["instance","getCurrentInstance","requestAutocompleteSuggestions","requestResourceName","useAutocomplete","props","__props","useStore","t","locale","useI18n","listOfValues","computed","selection","voc","matchesSearchstring","matchesNothingFound","matches","ref","activeList","dropdownList","acInput","inputText","cacheList","annifList","annifTrigger","annifSelectionList","onMounted","inDis","watch","requestURIname","res","vocMatch","name","response","dataset","getTranslationFor","watchEffect","values","uriName","uriNameList","index","findPropertyToUpdate","trigger","finalPath","pathToLocalStorage","innerIndex","ntry","e","onClickOutside","event","annifHandlerTheme","input","limit","finalLimit","query","qs","config","axios","i","annifCacheList","element","eraseDuplicates","error","updateAnnifselection","item","fillAnnifsuggestions","setValue","array1","array2","mergedArray","filteredArray","resourceSet","obj","limitChange","arr","getNode","filteredProperty","filteredList","getAutocompleteSuggestions","innerText","results","r","removeProperty","removeMultipleProperty","_openBlock","_createElementBlock","_hoisted_1","_unref","_hoisted_2","_toDisplayString","$t","_createElementVNode","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","$event","_cache","_isRef","_Fragment","_renderList","match","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_16","_hoisted_17","_hoisted_18","_normalizeClass","_hoisted_20","_hoisted_21"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalInput.vue.mjs","sources":["../../../lib/data-provider-interface/components/ConditionalInput.vue"],"sourcesContent":["<template>\n <div class=\"formkitProperty\">\n <!-- <h4 class=\"formkitHeader\">{{ props.context.attrs.identifier.charAt(0).toUpperCase() +\n props.context.attrs.identifier.slice(1) }}</h4> -->\n <h4 class=\"formkitHeader\"\n v-if=\"props.context.attrs.class != undefined && props.context.attrs.class.includes('inDistribution')\">\n {{ $t('message.dataupload.distributions.' + props.context.attrs.identifier + '.label') }}\n </h4>\n <h4 class=\"formkitHeader\" v-else>\n {{ $t('message.dataupload.datasets.' + props.context.attrs.identifier + '.label') }}\n </h4>\n <div v-if=\"props.context.attrs.identifier === 'licence' && env.content.dataProviderInterface.annifIntegration\"\n class=\"d-flex infoLicense py-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30px\" height=\"30px\" fill=\"currentColor\"\n class=\"bi bi-info-circle mx-3 mb-3 mt-1 infoboxI \" viewBox=\"0 0 16 16\">\n <path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16\" />\n <path\n d=\"m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0\" />\n </svg>\n <div class=\"w-80\">\n <p>For <strong>European</strong> <strong>Commission's datasets</strong>, bear in mind\n that <a href=\"https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32011D0833]\"\n target=\"_blank\" rel=\"nofollow noopener\"><ins>Decision 2011/833/EU</ins></a> allows for their commercial\n reuse without\n prior authorisation, except for the material subject to the third party intellectual property rights. This\n Decision has been implemented under the <a\n href=\"https://ec.europa.eu/transparency/documents-register/detail?ref=C(2019)1655&lang=en]\"\n target=\"_blank\" rel=\"nofollow noopener\"><ins>Decision C(2019) 1655 final</ins></a> by which Creative\n Commons\n Attribution 4.0 International Public License (CC BY 4.0) is adopted as an open licence for the Commission's\n reuse policy. Additionally, raw data, metadata or other documents of comparable nature may alternatively be\n distributed under the provisions of the Creative Commons Universal Public Domain Dedication deed (CC0\n 1.0).</p>\n <p>The <strong>Council</strong> and the <strong>European Court of Auditors</strong> have\n approved similar decisions on reuse. It is advisable that you check <strong>the reuse policy of your\n organisation</strong> before publishing or submitting your dataset.</p>\n <p>If you need further information regarding copyright issues, please contact us at <a\n href=\"mailto:op-copyright@publications.europa.eu\" target=\"_blank\"\n rel=\"nofollow noopener\">op-copyright@publications.europa.eu</a></p>\n </div>\n\n </div>\n\n <div v-if=\"props.context.attrs.identifier === 'rights' && env.content.dataProviderInterface.annifIntegration\"\n class=\"d-flex infoLicense py-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30px\" height=\"30px\" fill=\"currentColor\"\n class=\"bi bi-info-circle mx-3 mb-3 mt-1 infoboxI\" viewBox=\"0 0 16 16\">\n <path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16\" />\n <path\n d=\"m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0\" />\n </svg>\n <p class=\"textInfoI\">As owner of your dataset, you guarantee that it does not violate the copyright, other\n intellectual property or\n privacy rights of any third party. In particular, if third party material is included in the dataset, you must\n ensure that all necessary permissions have been obtained and appropriate acknowledgment is given, if necessary.\n <br><br>\n If you need further information regarding copyright issues, please contact us at\n <a href=\"mailto:op-copyright@publications.europa.eu\">op-copyright@publications.europa.eu</a>\n </p>\n </div>\n <!-- Choice between text and URL -->\n <div class=\"formkitCmpWrap simpleConditional\" v-if=\"props.context.attrs.identifier === 'rights'\">\n <div class=\"m-3\">\n <div class=\"conditionalSelectDiv\">\n <input ref=\"I1\" type=\"text\" class=\"conditionalSelect formkit-input formkit-inner\" @click=\"openSelect($event)\"\n :placeholder=\"props.context.attrs.placeholder\" v-model=\"selectModeVal\">\n <div v-if=\"showSelect\">\n <ul class=\"selectListConditional\">\n <li v-for=\"el, index in props.context.attrs.selection\" class=\"p-2 border-b border-gray-200 \"\n @click=\"selectMode(el, $t('message.dataupload.datasets.conditional.' + el))\">{{\n $t('message.dataupload.datasets.conditional.' + el) }}</li>\n </ul>\n </div>\n </div>\n <div class=\"conditionalManual\">\n <div class=\"d-flex\" v-if=\"selectedItem === 'URL' || props.context.node.value['@type'] === 'url'\">\n <FormKit type=\"url\" :placeholder=\"$t('message.dataupload.datasets.conditional.URL')\" name=\"rdfs:label\"\n validation=\"url\" class=\"w-100\" identifier=\"rightsUrl\" v-model=\"props.context.value['rdfs:value']\">\n </FormKit>\n </div>\n </div>\n <div v-if=\"selectedItem === 'Text' || props.context.value['@type'] === 'text'\">\n <FormKit type=\"text\" :placeholder=\"$t('message.dataupload.datasets.conditional.Text')\" name=\"rdfs:label\"\n class=\"w-100\" identifier=\"rightsText\" v-model=\"props.context.value['rdfs:value']\"></FormKit>\n </div>\n </div>\n </div>\n\n <!-- Choice between manualinput and vocabulary search -->\n <div class=\"formkitCmpWrap simpleConditional\" v-else>\n <div class=\"m-3\">\n <div class=\"conditionalSelectDiv\">\n <input ref=\"I1\" type=\"text\" class=\"conditionalSelect formkit-input formkit-inner\" @click=\"openSelect($event)\"\n :placeholder=props.context.attrs.placeholder v-model=\"selectModeVal\">\n\n <div v-if=\"showSelect\">\n <ul class=\"selectListConditional\">\n <li v-for=\"el, index in props.context.attrs.selection\" class=\"p-2 border-b border-gray-200 \"\n @click=\"selectMode(el, $t('message.dataupload.datasets.conditional.' + el))\">{{\n $t('message.dataupload.datasets.conditional.' + el) }}</li>\n </ul>\n </div>\n <div v-if=\"selectedItem === 'vocabulary'\"\n v-html=\"$t('message.dataupload.distributions.licence.vocabulary.help')\"\n class=\"formkit-help position-absolute\">\n </div>\n </div>\n <div class=\"conditionalManual\">\n <div class=\"d-flex\" v-if=\"selectedItem === 'manually' ||\n Object.keys(props.context.value).length > 0 && props.context.value['foaf:name']\n && selectedItem != 'vocabulary'\">\n <FormKit v-for=\"el, key in props.context.attrs.options\" :type=\"key\"\n :placeholder=\"$t('message.dataupload.datasets.individual.' + el)\" :name=\"el\" :validation=\"key\"\n class=\"w-100\"></FormKit>\n </div>\n </div>\n <div v-if=\"selectedItem === 'vocabulary' && !props.context.value['name']\" class=\"\">\n <AutocompleteInput :context=\"props.context\"></AutocompleteInput>\n </div>\n\n <div v-if=\"props.context.value['name']\" class=\"conditionalVocabulary d-flex\">\n <a class=\"autocompleteInputSingleValue\">{{\n resolvedUriName }}</a>\n <div class=\"removeX\" @click=\"removeProperty\"></div>\n\n </div>\n <div v-if=\"selectedItem === 'manually'\" v-html=\"props.context.attrs.info\" class=\"formkit-help\"></div>\n\n </div>\n\n </div>\n </div>\n\n</template>\n<script setup>\n\nimport AutocompleteInput from './AutocompleteInput.vue';\nimport { onClickOutside } from '@vueuse/core'\nimport { useRuntimeEnv } from \"../../composables/useRuntimeEnv.ts\";\nimport { ref, watch, computed, onMounted, watchEffect, toRef } from 'vue';\nimport { useStore } from 'vuex';\nimport { getTranslationFor } from \"../../utils/helpers\";\nimport { getCurrentInstance } from \"vue\";\nimport { getNode } from '@formkit/core'\nimport { useI18n } from 'vue-i18n';\nimport { useRequestUriName } from '../composables/useRequestUriName';\n\nlet env = useRuntimeEnv()\nconst props = defineProps({\n context: Object,\n})\nlet instance = getCurrentInstance().appContext.app.config.globalProperties.$env\nconst { t, locale } = useI18n();\nlet selectModeVal = ref()\nlet selectedItem = ref(false)\nlet showSelect = ref(false)\nlet voc = props.context.attrs.voc;\nconst store = useStore();\nlet resolvedUriName = ref();\n\nconst { execute: requestURIname, error: requestURInameError, isLoading: requestURInameLoading } = useRequestUriName({\n res: computed(() => props.context.value.name),\n voc: computed(() => props.context.attrs.voc),\n property: computed(() => props.context.attrs.property),\n locale,\n})\n\nwatchEffect(() => {\n if (props.context.value['name']) {\n if (resolvedUriName.value != props.context.value.name) {\n\n if (props.context.value.name === props.context.value.resource) {\n requestURIname().then(result => {\n resolvedUriName.value = result;\n }).catch(error => {\n console.error(error);\n })\n }\n else {\n resolvedUriName.value = props.context.value.name\n }\n }\n\n selectModeVal.value = t('message.dataupload.datasets.conditional.' + 'vocabulary');\n }\n if (props.context.value['foaf:name']) {\n selectModeVal.value = t('message.dataupload.datasets.conditional.' + 'manually');\n }\n});\n\nconst I1 = ref(null)\n\nconst openSelect = (e) => {\n\n showSelect.value = !showSelect.value\n\n}\nconst removeProperty = () => {\n props.context.node.reset()\n}\nconst selectMode = (e, translatedString) => {\n selectModeVal.value = translatedString\n selectedItem.value = e\n props.context.node.reset()\n props.context.value = \"\"\n}\n\nonClickOutside(I1, event => showSelect.value = false)\n\n</script>\n<style>\n.conditionalManual {\n .formkit-outer {\n width: 100%;\n }\n}\n\n.hover {\n text-decoration: underline;\n}\n\n.conditionalVocabulary {\n display: flex;\n align-items: center;\n margin: 1rem 0;\n}\n\n.w-80 {\n width: 80%;\n}\n\n.infoLicense {\n a {\n color: blue;\n }\n\n padding: 1rem;\n background-color: rgb(171, 225, 165)\n}\n\n.infoboxI {\n width: 5%;\n}\n\n.textInfoI {\n width: 95%;\n}\n</style>\n"],"names":["env","useRuntimeEnv","props","__props","getCurrentInstance","t","locale","useI18n","selectModeVal","ref","selectedItem","showSelect","useStore","resolvedUriName","requestURIname","requestURInameError","requestURInameLoading","useRequestUriName","computed","watchEffect","result","error","I1","openSelect","e","removeProperty","selectMode","translatedString","onClickOutside","event"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmJA,QAAIA,IAAMC,EAAc;AACxB,UAAMC,IAAQC;AAGC,IAAAC,EAAkB,EAAG,WAAW,IAAI,OAAO,iBAAiB;AACtE,UAAC,EAAE,GAAAC,GAAG,QAAAC,MAAWC;AACtB,QAAIC,IAAgBC,EAAI,GACpBC,IAAeD,EAAI,EAAK,GACxBE,IAAaF,EAAI,EAAK;AAChB,IAAAP,EAAM,QAAQ,MAAM,KAChBU,EAAU;AACxB,QAAIC,IAAkBJ,EAAG;AAEzB,UAAM,EAAE,SAASK,GAAgB,OAAOC,IAAqB,WAAWC,GAAuB,IAAGC,EAAkB;AAAA,MAClH,KAAKC,EAAS,MAAMhB,EAAM,QAAQ,MAAM,IAAI;AAAA,MAC5C,KAAKgB,EAAS,MAAMhB,EAAM,QAAQ,MAAM,GAAG;AAAA,MAC3C,UAAUgB,EAAS,MAAMhB,EAAM,QAAQ,MAAM,QAAQ;AAAA,MACrD,QAAAI;AAAA,IACF,CAAC;AAED,IAAAa,EAAY,MAAM;AAChB,MAAIjB,EAAM,QAAQ,MAAM,SAClBW,EAAgB,SAASX,EAAM,QAAQ,MAAM,SAE3CA,EAAM,QAAQ,MAAM,SAASA,EAAM,QAAQ,MAAM,WACnDY,EAAgB,EAAC,KAAK,CAAAM,MAAU;AAC9B,QAAAP,EAAgB,QAAQO;AAAA,MAClC,CAAS,EAAE,MAAM,CAAAC,MAAS;AAChB,gBAAQ,MAAMA,CAAK;AAAA,MAC7B,CAAS,IAGDR,EAAgB,QAAQX,EAAM,QAAQ,MAAM,OAIhDM,EAAc,QAAQH,EAAE,oDAAyD,IAE/EH,EAAM,QAAQ,MAAM,WAAW,MACjCM,EAAc,QAAQH,EAAE,kDAAuD;AAAA,IAEnF,CAAC;AAED,UAAMiB,IAAKb,EAAI,IAAI,GAEbc,IAAa,CAACC,MAAM;AAExB,MAAAb,EAAW,QAAQ,CAACA,EAAW;AAAA,IAEjC,GACMc,IAAiB,MAAM;AAC3B,MAAAvB,EAAM,QAAQ,KAAK,MAAM;AAAA,IAC3B,GACMwB,IAAa,CAACF,GAAGG,MAAqB;AAC1C,MAAAnB,EAAc,QAAQmB,GACtBjB,EAAa,QAAQc,GACrBtB,EAAM,QAAQ,KAAK,MAAM,GACzBA,EAAM,QAAQ,QAAQ;AAAA,IACxB;AAEA,WAAA0B,EAAeN,GAAI,CAAAO,MAASlB,EAAW,QAAQ,EAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"ConditionalInput.vue.mjs","sources":["../../../lib/data-provider-interface/components/ConditionalInput.vue"],"sourcesContent":["<template>\n <div class=\"formkitProperty\">\n <!-- <h4 class=\"formkitHeader\">{{ props.context.attrs.identifier.charAt(0).toUpperCase() +\n props.context.attrs.identifier.slice(1) }}</h4> -->\n <h4 class=\"formkitHeader\"\n v-if=\"props.context.attrs.class != undefined && props.context.attrs.class.includes('inDistribution')\">\n {{ $t('message.dataupload.distributions.' + props.context.attrs.identifier + '.label') }}\n </h4>\n <h4 class=\"formkitHeader\" v-else>\n {{ $t('message.dataupload.datasets.' + props.context.attrs.identifier + '.label') }}\n </h4>\n <div v-if=\"props.context.attrs.identifier === 'licence' && env.content.dataProviderInterface.annifIntegration\"\n class=\"d-flex infoLicense py-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30px\" height=\"30px\" fill=\"currentColor\"\n class=\"bi bi-info-circle mx-3 mb-3 mt-1 infoboxI \" viewBox=\"0 0 16 16\">\n <path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16\" />\n <path\n d=\"m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0\" />\n </svg>\n <div class=\"w-80\">\n <p>For <strong>European</strong> <strong>Commission's datasets</strong>, bear in mind\n that <a href=\"https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32011D0833]\"\n target=\"_blank\" rel=\"nofollow noopener\"><ins>Decision 2011/833/EU</ins></a> allows for their commercial\n reuse without\n prior authorisation, except for the material subject to the third party intellectual property rights. This\n Decision has been implemented under the <a\n href=\"https://ec.europa.eu/transparency/documents-register/detail?ref=C(2019)1655&lang=en]\"\n target=\"_blank\" rel=\"nofollow noopener\"><ins>Decision C(2019) 1655 final</ins></a> by which Creative\n Commons\n Attribution 4.0 International Public License (CC BY 4.0) is adopted as an open licence for the Commission's\n reuse policy. Additionally, raw data, metadata or other documents of comparable nature may alternatively be\n distributed under the provisions of the Creative Commons Universal Public Domain Dedication deed (CC0\n 1.0).</p>\n <p>The <strong>Council</strong> and the <strong>European Court of Auditors</strong> have\n approved similar decisions on reuse. It is advisable that you check <strong>the reuse policy of your\n organisation</strong> before publishing or submitting your dataset.</p>\n <p>If you need further information regarding copyright issues, please contact us at <a\n href=\"mailto:op-copyright@publications.europa.eu\" target=\"_blank\"\n rel=\"nofollow noopener\">op-copyright@publications.europa.eu</a></p>\n </div>\n\n </div>\n\n <div v-if=\"props.context.attrs.identifier === 'rights' && env.content.dataProviderInterface.annifIntegration\"\n class=\"d-flex infoLicense py-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30px\" height=\"30px\" fill=\"currentColor\"\n class=\"bi bi-info-circle mx-3 mb-3 mt-1 infoboxI\" viewBox=\"0 0 16 16\">\n <path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16\" />\n <path\n d=\"m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0\" />\n </svg>\n <p class=\"textInfoI\">As owner of your dataset, you guarantee that it does not violate the copyright, other\n intellectual property or\n privacy rights of any third party. In particular, if third party material is included in the dataset, you must\n ensure that all necessary permissions have been obtained and appropriate acknowledgment is given, if necessary.\n <br><br>\n If you need further information regarding copyright issues, please contact us at\n <a href=\"mailto:op-copyright@publications.europa.eu\">op-copyright@publications.europa.eu</a>\n </p>\n </div>\n <!-- Choice between text and URL -->\n <div class=\"formkitCmpWrap simpleConditional\" v-if=\"props.context.attrs.identifier === 'rights'\">\n <div class=\"m-3\">\n <div class=\"conditionalSelectDiv\">\n <input ref=\"I1\" type=\"text\" class=\"conditionalSelect formkit-input formkit-inner\" @click=\"openSelect($event)\"\n :placeholder=\"props.context.attrs.placeholder\" v-model=\"selectModeVal\">\n <div v-if=\"showSelect\">\n <ul class=\"selectListConditional\">\n <li v-for=\"el, index in props.context.attrs.selection\" class=\"p-2 border-b border-gray-200 \"\n @click=\"selectMode(el, $t('message.dataupload.datasets.conditional.' + el))\">{{\n $t('message.dataupload.datasets.conditional.' + el) }}</li>\n </ul>\n </div>\n </div>\n <div class=\"conditionalManual\">\n <div class=\"d-flex\" v-if=\"selectedItem === 'URL' || props.context.node.value['@type'] === 'url'\">\n <FormKit type=\"url\" :placeholder=\"$t('message.dataupload.datasets.conditional.URL')\" name=\"rdfs:label\"\n validation=\"url\" class=\"w-100\" identifier=\"rightsUrl\" v-model=\"props.context.value['rdfs:value']\">\n </FormKit>\n </div>\n </div>\n <div v-if=\"selectedItem === 'Text' || props.context.value['@type'] === 'text'\">\n <FormKit type=\"text\" :placeholder=\"$t('message.dataupload.datasets.conditional.Text')\" name=\"rdfs:label\"\n class=\"w-100\" identifier=\"rightsText\" v-model=\"props.context.value['rdfs:value']\"></FormKit>\n </div>\n </div>\n </div>\n\n <!-- Choice between manualinput and vocabulary search -->\n <div class=\"formkitCmpWrap simpleConditional\" v-else>\n <div class=\"m-3\">\n <div class=\"conditionalSelectDiv\">\n <input ref=\"I1\" type=\"text\" class=\"conditionalSelect formkit-input formkit-inner\" @click=\"openSelect($event)\"\n :placeholder=props.context.attrs.placeholder v-model=\"selectModeVal\">\n\n <div v-if=\"showSelect\">\n <ul class=\"selectListConditional\">\n <li v-for=\"el, index in props.context.attrs.selection\" class=\"p-2 border-b border-gray-200 \"\n @click=\"selectMode(el, $t('message.dataupload.datasets.conditional.' + el))\">{{\n $t('message.dataupload.datasets.conditional.' + el) }}</li>\n </ul>\n </div>\n <div v-if=\"selectedItem === 'vocabulary'\"\n v-html=\"$t('message.dataupload.distributions.licence.vocabulary.help')\"\n class=\"formkit-help position-absolute\">\n </div>\n </div>\n <div class=\"conditionalManual\">\n <div class=\"d-flex\" v-if=\"selectedItem === 'manually' ||\n Object.keys(props.context.value).length > 0 && props.context.value['foaf:name']\n && selectedItem != 'vocabulary'\">\n <FormKit v-for=\"el, key in props.context.attrs.options\" :type=\"key\"\n :placeholder=\"$t('message.dataupload.datasets.individual.' + el)\" :name=\"el\" :validation=\"key\"\n class=\"w-100\"></FormKit>\n </div>\n </div>\n <div v-if=\"selectedItem === 'vocabulary' && !props.context.value['name']\" class=\"\">\n <AutocompleteInput :context=\"props.context\"></AutocompleteInput>\n </div>\n\n <div v-if=\"props.context.value['name']\" class=\"conditionalVocabulary d-flex\">\n <a class=\"autocompleteInputSingleValue\">{{\n resolvedUriName }}</a>\n <div class=\"removeX\" @click=\"removeProperty\"></div>\n\n </div>\n <div v-if=\"selectedItem === 'manually'\" v-html=\"props.context.attrs.info\" class=\"formkit-help\"></div>\n\n </div>\n\n </div>\n </div>\n\n</template>\n<script setup>\n\nimport AutocompleteInput from './AutocompleteInput.vue';\nimport { onClickOutside } from '@vueuse/core'\nimport { useRuntimeEnv } from \"../../composables/useRuntimeEnv.ts\";\nimport { ref, watch, computed, onMounted, watchEffect, toRef } from 'vue';\nimport { useStore } from 'vuex';\nimport { getTranslationFor } from \"../../utils/helpers\";\nimport { getCurrentInstance } from \"vue\";\nimport { getNode } from '@formkit/core'\nimport { useI18n } from 'vue-i18n';\nimport { useRequestUriName } from '../composables/useRequestUriName';\n\nlet env = useRuntimeEnv()\nconst props = defineProps({\n context: Object,\n})\nlet instance = getCurrentInstance().appContext.app.config.globalProperties.$env\nconst { t, locale } = useI18n();\nlet selectModeVal = ref()\nlet selectedItem = ref(false)\nlet showSelect = ref(false)\nlet voc = props.context.attrs.voc;\nconst store = useStore();\nlet resolvedUriName = ref();\n\nconst { execute: requestURIname, error: requestURInameError, isLoading: requestURInameLoading } = useRequestUriName({\n res: computed(() => props.context.value.name),\n voc: computed(() => props.context.attrs.voc),\n property: computed(() => props.context.attrs.property),\n locale,\n})\n\nwatchEffect(() => {\n if (props.context.value['name']) {\n if (resolvedUriName.value != props.context.value.name) {\n\n if (props.context.value.name === props.context.value.resource) {\n requestURIname().then(result => {\n resolvedUriName.value = result;\n }).catch(error => {\n console.error(error);\n })\n }\n else {\n resolvedUriName.value = props.context.value.name\n }\n }\n\n selectModeVal.value = t('message.dataupload.datasets.conditional.' + 'vocabulary');\n }\n if (props.context.value['foaf:name']) {\n selectModeVal.value = t('message.dataupload.datasets.conditional.' + 'manually');\n }\n});\n\nconst I1 = ref(null)\n\nconst openSelect = (e) => {\n\n showSelect.value = !showSelect.value\n\n}\nconst removeProperty = () => {\n props.context.node.reset()\n}\nconst selectMode = (e, translatedString) => {\n selectModeVal.value = translatedString\n selectedItem.value = e\n props.context.node.reset()\n props.context.value = \"\"\n}\n\nonClickOutside(I1, event => showSelect.value = false)\n\n</script>\n<style>\n.conditionalManual {\n .formkit-outer {\n width: 100%;\n }\n}\n\n.hover {\n text-decoration: underline;\n}\n\n.conditionalVocabulary {\n display: flex;\n align-items: center;\n margin: 1rem 0;\n}\n\n.w-80 {\n width: 80%;\n}\n\n.infoLicense {\n a {\n color: blue;\n }\n\n padding: 1rem;\n background-color: rgb(171, 225, 165)\n}\n\n.infoboxI {\n width: 5%;\n}\n\n.textInfoI {\n width: 95%;\n}\n</style>\n"],"names":["env","useRuntimeEnv","props","__props","getCurrentInstance","t","locale","useI18n","selectModeVal","ref","selectedItem","showSelect","useStore","resolvedUriName","requestURIname","requestURInameError","requestURInameLoading","useRequestUriName","computed","watchEffect","result","error","I1","openSelect","e","removeProperty","selectMode","translatedString","onClickOutside","event","_openBlock","_createElementBlock","_hoisted_1","_hoisted_2","_toDisplayString","$t","_hoisted_3","_unref","_hoisted_4","_cache","_hoisted_5","_hoisted_6","_createElementVNode","_hoisted_7","_hoisted_8","$event","_hoisted_10","_hoisted_11","_Fragment","_renderList","el","index","_hoisted_12","_hoisted_13","_hoisted_14","_createVNode","_component_FormKit","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_24","_hoisted_25","key","_createBlock","_hoisted_26","AutocompleteInput","_hoisted_27","_hoisted_28"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DistributionStepper.vue.mjs","sources":["../../../lib/data-provider-interface/components/DistributionStepper.vue"],"sourcesContent":["<template>\n <FormKit type=\"form\" :actions=\"false\" :plugins=\"[stepPlugin]\">\n <div name=\"distribution-stepper\" class=\"singleDistributions\">\n <div class=\"disInfoWrapper\" v-if=\"!isCollapsed\">\n <ul class=\"steps\">\n <li v-for=\"(step, stepName, index) in steps\" :key=\"index\" class=\"step\"\n :data-step-active=\"activeStep === stepName\" :data-step-valid=\"step.valid && step.errorCount === 0\" :class=\"{\n activeItem: activeStep === stepName, inactiveStep: stepName != activeStep, 'has-errors': checkStepValidity(stepName)\n }\" @click=\"activeStep = stepName; indexOfDis = index + 1\">\n\n <div class=\"stepBubbleWrap\">\n <div class=\"circle stepCircle\">{{ convertToRoman(index + 1) }}</div>\n <span v-if=\"checkStepValidity(stepName)\" class=\"step--errors\"\n v-text=\"step.errorCount + step.blockingCount\" />\n {{ $t('message.dataupload.steps.' + stepName + 'Step') }}\n </div>\n <div\n v-if=\"index + 1 != Object.keys(getNavSteps($env.content.dataProviderInterface.specification).distributions).length\"\n class=\"seperatorHorizontalStepper\">\n </div>\n <div v-if=\"activeStep === 'overview'\" class=\"seperatorHorizontalStepper\"></div>\n </li>\n <li class=\"step inactiveStep\" v-if=\"activeStep === 'overview'\">\n <div class=\"circle stepCircle\"></div>\n </li>\n </ul>\n <div class=\"d-flex flex-column w-100\">\n <div v-for=\"(stepName, i) in getNavSteps($env.content.dataProviderInterface.specification).distributions\"\n :key=\"i\">\n <InputPageStep :name=\"stepName\">\n <!-- <PropertyChooser></PropertyChooser> -->\n\n <FormKitSchema :schema=\"schema[stepName]\" :library=\"library\" />\n <p v-if=\"stepName === 'Mandatory'\" class=\"p-1\"> <b>*</b> {{ $t('message.dataupload.steps.MandatoryStep')\n }}</p>\n </InputPageStep>\n </div>\n </div>\n </div>\n </div>\n </FormKit>\n\n <div class=\"m-3 d-flex justify-content-end\">\n\n <button v-if=\"indexOfDis > 1\" type=\"button\" class=\"btn btn-secondary\"\n @click=\"goToPreviousStep(); scrollToTop(); indexOfDis = indexOfDis - 1\">{{\n $t('message.dataupload.steps.previousDisStep')\n }}</button>\n <button v-if=\"indexOfDis < 4\" type=\"button\" class=\"btn btn-secondary ml-3\"\n @click=\"goToNextStep(); scrollToTop(); indexOfDis = indexOfDis + 1\">{{\n $t('message.dataupload.steps.nextDisStep')\n }}</button>\n </div>\n</template>\n\n<script>\nimport { defineComponent, markRaw, reactive } from 'vue';\nimport { mapGetters } from 'vuex';\nimport { useDpiStepper } from '../composables/useDpiStepper';\nimport InputPageStep from '../components/InputPageStep.vue';\nimport SelectControlledGroup from './SelectControlledGroup.vue';\nimport { useWindowScroll } from '@vueuse/core'\n\n\nexport default defineComponent({\n props: {\n name: {\n type: String,\n default: '',\n },\n index: {\n required: true\n },\n schema: {\n required: true,\n type: Object,\n },\n context: {\n type: Object,\n },\n distributionIsCollapsed: {\n type: Boolean,\n },\n collapseDistributions: {\n type: Function,\n },\n deleteDistribution: {\n type: Function,\n },\n },\n components: {\n InputPageStep,\n },\n data() {\n return {\n isCollapsed: false,\n camel2title: (str) =>\n str\n .replace(/([A-Z])/g, (match) => ` ${match}`)\n .replace(/^./, (match) => match.toUpperCase())\n .trim(),\n isActive: false,\n indexOfDis: 1,\n\n }\n },\n methods: {\n editDistribution() {\n this.isCollapsed = !this.isCollapsed;\n this.collapseDistributions(this.index);\n },\n scrollToTop() {\n let { x, y } = useWindowScroll({ behavior: 'smooth' })\n y.value = 0\n\n },\n convertToRoman(element) {\n if (element === 1) {\n return \"A\"\n }\n if (element === 2) {\n return \"B\"\n }\n if (element === 3) {\n return \"C\"\n }\n if (element === 4) {\n return \"D\"\n }\n }\n },\n computed: {\n ...mapGetters('dpiStore', [\n 'getNavSteps'\n ]),\n getName() {\n return this.name\n || values['Distributions']['distributionList'][this.name - 1]['Mandatory']['dcat:accessURL'][0]['@id'];\n },\n },\n watch: {\n distributionIsCollapsed: {\n handler(newValue) {\n this.isCollapsed = newValue;\n },\n },\n },\n created() { },\n setup() {\n const {\n steps,\n activeStep,\n visitedSteps,\n previousStep,\n nextStep,\n stepPlugin,\n goToNextStep,\n goToPreviousStep,\n } = useDpiStepper();\n\n const checkStepValidity = (stepName) => {\n return (steps[stepName].errorCount > 0 || steps[stepName].blockingCount > 0) && visitedSteps.value.includes(stepName)\n }\n\n const library = markRaw({\n SelectControlledGroup,\n })\n\n return {\n steps,\n visitedSteps,\n activeStep,\n previousStep,\n nextStep,\n stepPlugin,\n checkStepValidity,\n goToNextStep,\n goToPreviousStep,\n library,\n }\n }\n});\n</script>\n\n<style></style>"],"names":["_sfc_main","defineComponent","InputPageStep","str","match","x","y","useWindowScroll","element","mapGetters","newValue","steps","activeStep","visitedSteps","previousStep","nextStep","stepPlugin","goToNextStep","goToPreviousStep","useDpiStepper","checkStepValidity","stepName","library","markRaw","SelectControlledGroup","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_11","_hoisted_13","_openBlock","_createElementBlock","_Fragment","_createVNode","_component_FormKit","_ctx","_withCtx","_createElementVNode","_hoisted_1","_createCommentVNode","_hoisted_2","_renderList","step","index","_normalizeClass","_toDisplayString","_cache","_createTextVNode","_hoisted_8","_hoisted_9","_hoisted_10","i","_component_InputPageStep","_component_FormKitSchema","_hoisted_12"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DistributionStepper.vue.mjs","sources":["../../../lib/data-provider-interface/components/DistributionStepper.vue"],"sourcesContent":["<template>\n <FormKit type=\"form\" :actions=\"false\" :plugins=\"[stepPlugin]\">\n <div name=\"distribution-stepper\" class=\"singleDistributions\">\n <div class=\"disInfoWrapper\" v-if=\"!isCollapsed\">\n <ul class=\"steps\">\n <li v-for=\"(step, stepName, index) in steps\" :key=\"index\" class=\"step\"\n :data-step-active=\"activeStep === stepName\" :data-step-valid=\"step.valid && step.errorCount === 0\" :class=\"{\n activeItem: activeStep === stepName, inactiveStep: stepName != activeStep, 'has-errors': checkStepValidity(stepName)\n }\" @click=\"activeStep = stepName; indexOfDis = index + 1\">\n\n <div class=\"stepBubbleWrap\">\n <div class=\"circle stepCircle\">{{ convertToRoman(index + 1) }}</div>\n <span v-if=\"checkStepValidity(stepName)\" class=\"step--errors\"\n v-text=\"step.errorCount + step.blockingCount\" />\n {{ $t('message.dataupload.steps.' + stepName + 'Step') }}\n </div>\n <div\n v-if=\"index + 1 != Object.keys(getNavSteps($env.content.dataProviderInterface.specification).distributions).length\"\n class=\"seperatorHorizontalStepper\">\n </div>\n <div v-if=\"activeStep === 'overview'\" class=\"seperatorHorizontalStepper\"></div>\n </li>\n <li class=\"step inactiveStep\" v-if=\"activeStep === 'overview'\">\n <div class=\"circle stepCircle\"></div>\n </li>\n </ul>\n <div class=\"d-flex flex-column w-100\">\n <div v-for=\"(stepName, i) in getNavSteps($env.content.dataProviderInterface.specification).distributions\"\n :key=\"i\">\n <InputPageStep :name=\"stepName\">\n <!-- <PropertyChooser></PropertyChooser> -->\n\n <FormKitSchema :schema=\"schema[stepName]\" :library=\"library\" />\n <p v-if=\"stepName === 'Mandatory'\" class=\"p-1\"> <b>*</b> {{ $t('message.dataupload.steps.MandatoryStep')\n }}</p>\n </InputPageStep>\n </div>\n </div>\n </div>\n </div>\n </FormKit>\n\n <div class=\"m-3 d-flex justify-content-end\">\n\n <button v-if=\"indexOfDis > 1\" type=\"button\" class=\"btn btn-secondary\"\n @click=\"goToPreviousStep(); scrollToTop(); indexOfDis = indexOfDis - 1\">{{\n $t('message.dataupload.steps.previousDisStep')\n }}</button>\n <button v-if=\"indexOfDis < 4\" type=\"button\" class=\"btn btn-secondary ml-3\"\n @click=\"goToNextStep(); scrollToTop(); indexOfDis = indexOfDis + 1\">{{\n $t('message.dataupload.steps.nextDisStep')\n }}</button>\n </div>\n</template>\n\n<script>\nimport { defineComponent, markRaw, reactive } from 'vue';\nimport { mapGetters } from 'vuex';\nimport { useDpiStepper } from '../composables/useDpiStepper';\nimport InputPageStep from '../components/InputPageStep.vue';\nimport SelectControlledGroup from './SelectControlledGroup.vue';\nimport { useWindowScroll } from '@vueuse/core'\n\n\nexport default defineComponent({\n props: {\n name: {\n type: String,\n default: '',\n },\n index: {\n required: true\n },\n schema: {\n required: true,\n type: Object,\n },\n context: {\n type: Object,\n },\n distributionIsCollapsed: {\n type: Boolean,\n },\n collapseDistributions: {\n type: Function,\n },\n deleteDistribution: {\n type: Function,\n },\n },\n components: {\n InputPageStep,\n },\n data() {\n return {\n isCollapsed: false,\n camel2title: (str) =>\n str\n .replace(/([A-Z])/g, (match) => ` ${match}`)\n .replace(/^./, (match) => match.toUpperCase())\n .trim(),\n isActive: false,\n indexOfDis: 1,\n\n }\n },\n methods: {\n editDistribution() {\n this.isCollapsed = !this.isCollapsed;\n this.collapseDistributions(this.index);\n },\n scrollToTop() {\n let { x, y } = useWindowScroll({ behavior: 'smooth' })\n y.value = 0\n\n },\n convertToRoman(element) {\n if (element === 1) {\n return \"A\"\n }\n if (element === 2) {\n return \"B\"\n }\n if (element === 3) {\n return \"C\"\n }\n if (element === 4) {\n return \"D\"\n }\n }\n },\n computed: {\n ...mapGetters('dpiStore', [\n 'getNavSteps'\n ]),\n getName() {\n return this.name\n || values['Distributions']['distributionList'][this.name - 1]['Mandatory']['dcat:accessURL'][0]['@id'];\n },\n },\n watch: {\n distributionIsCollapsed: {\n handler(newValue) {\n this.isCollapsed = newValue;\n },\n },\n },\n created() { },\n setup() {\n const {\n steps,\n activeStep,\n visitedSteps,\n previousStep,\n nextStep,\n stepPlugin,\n goToNextStep,\n goToPreviousStep,\n } = useDpiStepper();\n\n const checkStepValidity = (stepName) => {\n return (steps[stepName].errorCount > 0 || steps[stepName].blockingCount > 0) && visitedSteps.value.includes(stepName)\n }\n\n const library = markRaw({\n SelectControlledGroup,\n })\n\n return {\n steps,\n visitedSteps,\n activeStep,\n previousStep,\n nextStep,\n stepPlugin,\n checkStepValidity,\n goToNextStep,\n goToPreviousStep,\n library,\n }\n }\n});\n</script>\n\n<style></style>"],"names":["_sfc_main","defineComponent","InputPageStep","str","match","x","y","useWindowScroll","element","mapGetters","newValue","steps","activeStep","visitedSteps","previousStep","nextStep","stepPlugin","goToNextStep","goToPreviousStep","useDpiStepper","checkStepValidity","stepName","library","markRaw","SelectControlledGroup","_hoisted_3","_hoisted_5","_hoisted_6","_hoisted_11","_hoisted_13","_createVNode","_component_FormKit","_ctx","_createElementVNode","_hoisted_1","_openBlock","_createElementBlock","_hoisted_2","_Fragment","step","index","_toDisplayString","_hoisted_8","_hoisted_9","_hoisted_10","_cache","_renderList","i","_component_InputPageStep","_component_FormKitSchema","_hoisted_12","_createTextVNode"],"mappings":";;;;;;;AAgEA,MAAKA,IAAaC,EAAa;AAAA,EAC7B,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,OAAO;AAAA,MACL,UAAU;AAAA,IACX;AAAA,IACD,QAAQ;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACP;AAAA,IACD,SAAS;AAAA,MACP,MAAM;AAAA,IACP;AAAA,IACD,yBAAyB;AAAA,MACvB,MAAM;AAAA,IACP;AAAA,IACD,uBAAuB;AAAA,MACrB,MAAM;AAAA,IACP;AAAA,IACD,oBAAoB;AAAA,MAClB,MAAM;AAAA,IACP;AAAA,EACF;AAAA,EACD,YAAY;AAAA,mBACVC;AAAAA,EACD;AAAA,EACD,OAAO;AACL,WAAO;AAAA,MACL,aAAa;AAAA,MACb,aAAa,CAACC,MACZA,EACG,QAAQ,YAAY,CAACC,MAAU,IAAIA,CAAK,EAAE,EAC1C,QAAQ,MAAM,CAACA,MAAUA,EAAM,YAAW,CAAE,EAC5C,KAAM;AAAA,MACX,UAAU;AAAA,MACV,YAAY;AAAA,IAEd;AAAA,EACD;AAAA,EACD,SAAS;AAAA,IACP,mBAAmB;AACjB,WAAK,cAAc,CAAC,KAAK,aACzB,KAAK,sBAAsB,KAAK,KAAK;AAAA,IACtC;AAAA,IACD,cAAc;AACZ,UAAI,EAAE,GAAAC,GAAG,GAAAC,MAAMC,EAAgB,EAAE,UAAU,UAAU;AACrD,MAAAD,EAAE,QAAQ;AAAA,IAEX;AAAA,IACD,eAAeE,GAAS;AACtB,UAAIA,MAAY;AACd,eAAO;AAET,UAAIA,MAAY;AACd,eAAO;AAET,UAAIA,MAAY;AACd,eAAO;AAET,UAAIA,MAAY;AACd,eAAO;AAAA,IAEX;AAAA,EACD;AAAA,EACD,UAAU;AAAA,IACR,GAAGC,EAAW,YAAY;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,IACD,UAAU;AACR,aAAO,KAAK,QACP,OAAO,cAAiB,iBAAoB,KAAK,OAAO,CAAC,EAAE,UAAa,gBAAgB,EAAE,CAAC,EAAE,KAAK;AAAA,IACxG;AAAA,EACF;AAAA,EACD,OAAO;AAAA,IACL,yBAAyB;AAAA,MACvB,QAAQC,GAAU;AAChB,aAAK,cAAcA;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAAA,EACD,UAAU;AAAA,EAAG;AAAA,EACb,QAAQ;AACN,UAAM;AAAA,MACJ,OAAAC;AAAA,MACA,YAAAC;AAAA,MACA,cAAAC;AAAA,MACA,cAAAC;AAAA,MACA,UAAAC;AAAA,MACA,YAAAC;AAAA,MACA,cAAAC;AAAA,MACA,kBAAAC;AAAA,IACF,IAAIC,EAAa,GAEXC,IAAoB,CAACC,OACjBV,EAAMU,CAAQ,EAAE,aAAa,KAAKV,EAAMU,CAAQ,EAAE,gBAAgB,MAAMR,EAAa,MAAM,SAASQ,CAAQ,GAGhHC,IAAUC,EAAQ;AAAA,MACtB,uBAAAC;AAAAA,KACD;AAED,WAAO;AAAA,MACL,OAAAb;AAAA,MACA,cAAAE;AAAA,MACA,YAAAD;AAAA,MACA,cAAAE;AAAA,MACA,UAAAC;AAAA,MACA,YAAAC;AAAA,MACA,mBAAAI;AAAA,MACA,cAAAH;AAAA,MACA,kBAAAC;AAAA,MACA,SAAAI;AAAA,IACF;AAAA,EACF;AACF,CAAC;EAnLQ,MAAK;AAAA,EAAuB,OAAM;;;EAChC,OAAM;GACLG,IAAA,EAAA,OAAM,QAAO,2DAMRC,IAAA,EAAA,OAAM,iBAAgB,GACpBC,IAAA,EAAA,OAAM,oBAAmB;;EAO9B,OAAM;;;EAE8B,OAAM;;;EAE1C,OAAM;GAIPC,IAAA,EAAA,OAAM,2BAA0B;;EAOI,OAAM;GAShDC,IAAA,EAAA,OAAM,iCAAgC;;;;IAzC3CC,EAuCUC,GAAA;AAAA,MAvCD,MAAK;AAAA,MAAQ,SAAS;AAAA,MAAQ,UAAUC,EAAU,UAAA;AAAA;iBACzD,MAqCM;AAAA,QArCNC,EAqCM,OArCNC,GAqCM;AAAA,UApC+BF,EAAW,2BAA9CG,KAAAC,EAmCM,OAnCNC,GAmCM;AAAA,YAlCJJ,EAqBK,MArBLR,GAqBK;AAAA,eApBHU,EAAA,EAAA,GAAAC,EAgBKE,WAhBiCN,EAAK,OAAA,CAA/BO,GAAMlB,GAAUmB,YAA5BJ,EAgBK,MAAA;AAAA,gBAhByC,KAAKI;AAAA,gBAAO,UAAM,QAAM;AAAA,8BACmER,EAAU,eAAKX;AAAA,kBAAwB,cAAAA,KAAYW,EAAU;AAAA,kBAAA,cAAgBA,EAAiB,kBAACX,CAAQ;AAAA;gBAA7O,oBAAkBW,EAAU,eAAKX;AAAA,gBAAW,mBAAiBkB,EAAK,SAASA,EAAK,eAAU;AAAA,gBAEvF;AAAO,kBAAAP,EAAU,aAAGX,GAAUW,EAAA,aAAaQ,IAAK;AAAA,gBAAA;AAAA;gBAEpDP,EAKM,OALNP,GAKM;AAAA,kBAJJO,EAAoE,OAApEN,GAAkCc,EAAAT,EAAA,eAAeQ,IAAK,CAAA,CAAA,GAAA,CAAA;AAAA;kBAC1CR,EAAA,kBAAkBX,CAAQ,UAAtCe,EACkD,QAAA;AAAA;oBADT,OAAM;AAAA,oBAC7C,aAAAK,EAA6CF,EAAhC,aAAaA,EAAK,aAAa;AAAA;oBAAI,MAClDE,EAAGT,EAAE,GAAA,8BAA+BX,IAAQ,MAAA,CAAA,GAAA,CAAA;AAAA;;gBAGtCmB,SAAa,OAAO,KAAKR,cAAYA,EAAA,KAAK,QAAQ,sBAAsB,aAAa,EAAE,aAAa,EAAE,UAD9GG,KAAAC,EAGM,OAHNM,CAGM;;gBACKV,EAAU,eAAA,cAArBG,KAAAC,EAA+E,OAA/EO,CAA+E;;;cAE7CX,EAAU,eAAA,cAA9CG,EAAA,GAAAC,EAEK,MAFLQ,GAEKC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,gBADHZ,EAAqC,OAAA,EAAhC,OAAM,oBAAmB,GAAA,MAAA,EAAA;AAAA;;;YAGlCA,EAWM,OAXNL,GAWM;AAAA,eAVJO,EAAA,EAAA,GAAAC,EASME,GATuB,MAAAQ,EAAAd,EAAA,YAAYA,EAAA,KAAK,QAAQ,sBAAsB,aAAa,EAAE,eAA9E,CAAAX,GAAU0B,YAAvBX,EASM,OAAA,EARH,KAAKW,KAAC;AAAA,gBACPjB,EAMgBkB,GAAA,EANA,MAAM3B,EAAQ,GAAA;AAAA,6BAG5B,MAA+D;AAAA,oBAA/DS,EAA+DmB,GAAA;AAAA,sBAA/C,QAAQjB,EAAM,OAACX,CAAQ;AAAA,sBAAI,SAASW,EAAO;AAAA;;oBAClDX,MAAQ,eAAjBc,KAAAC,EACM,KADNc,GACM;AAAA,sBAD0CL,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAZ,EAAQ,WAAL,KAAC,EAAA;AAAA,sBAAIkB,EAAA,QAAInB,EAAE,GAAA,wCAAA,CAAA,GAAA,CAAA;AAAA;;;;;;;;;;;;;IAS1EC,EAUM,OAVNJ,GAUM;AAAA,MARUG,EAAU,aAAA,UAAxBI,EAGa,UAAA;AAAA;QAHiB,MAAK;AAAA,QAAS,OAAM;AAAA,QAC/C;AAAO,UAAAJ,EAAgB,iBAAA,GAAIA,cAAW,GAAIA,EAAA,aAAaA,EAAU,aAAA;AAAA,QAAA;AAAA,WAChEA,EAAE,GAAA,0CAAA,CAAA,GAAA,CAAA;;MAEQA,EAAU,aAAA,UAAxBI,EAGa,UAAA;AAAA;QAHiB,MAAK;AAAA,QAAS,OAAM;AAAA,QAC/C;AAAO,UAAAJ,EAAY,aAAA,GAAIA,cAAW,GAAIA,EAAA,aAAaA,EAAU,aAAA;AAAA,QAAA;AAAA,WAC5DA,EAAE,GAAA,sCAAA,CAAA,GAAA,CAAA;;;;;"}
|