@piveau/piveau-hub-ui-modules 4.4.28 → 4.5.0
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/configurations/configureComponents.mjs +20 -18
- package/dist/configurations/configureComponents.mjs.map +1 -1
- package/dist/data-provider-interface/DataProviderInterface.vue.d.ts +378 -20
- package/dist/data-provider-interface/DataProviderInterface.vue.mjs.map +1 -1
- package/dist/data-provider-interface/DataProviderInterface.vue2.mjs +36 -25
- package/dist/data-provider-interface/DataProviderInterface.vue2.mjs.map +1 -1
- package/dist/data-provider-interface/components/AutocompleteInput.vue.mjs +92 -89
- package/dist/data-provider-interface/components/AutocompleteInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/ConditionalInput.vue.mjs +104 -107
- package/dist/data-provider-interface/components/ConditionalInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/SpatialInput.vue.mjs +190 -148
- package/dist/data-provider-interface/components/SpatialInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/components/UniqueIdentifierInput.vue.mjs +19 -8
- package/dist/data-provider-interface/components/UniqueIdentifierInput.vue.mjs.map +1 -1
- package/dist/data-provider-interface/composables/aucotomplete.d.ts +27 -0
- package/dist/data-provider-interface/composables/aucotomplete.mjs +52 -0
- package/dist/data-provider-interface/composables/aucotomplete.mjs.map +1 -0
- package/dist/data-provider-interface/composables/index.d.ts +4 -0
- package/dist/data-provider-interface/composables/useDpiContext.mjs +7 -9
- package/dist/data-provider-interface/composables/useDpiContext.mjs.map +1 -1
- package/dist/data-provider-interface/composables/useRequestUriName.d.ts +18 -0
- package/dist/data-provider-interface/composables/useRequestUriName.mjs +59 -0
- package/dist/data-provider-interface/composables/useRequestUriName.mjs.map +1 -0
- package/dist/data-provider-interface/config/dcatapde/vocab-prefixes.mjs +1 -1
- package/dist/data-provider-interface/config/dcatapde/vocab-prefixes.mjs.map +1 -1
- package/dist/data-provider-interface/index.mjs +10 -6
- package/dist/data-provider-interface/index.mjs.map +1 -1
- package/dist/data-provider-interface/store/dpiStore.d.ts +0 -26
- package/dist/data-provider-interface/store/dpiStore.mjs +12 -14
- package/dist/data-provider-interface/store/dpiStore.mjs.map +1 -1
- package/dist/data-provider-interface/views/InputPage.vue.d.ts +368 -20
- package/dist/data-provider-interface/views/InputPage.vue.mjs +125 -107
- package/dist/data-provider-interface/views/InputPage.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/CatalogueOverview.vue.d.ts +16 -6
- package/dist/data-provider-interface/views/OverviewPage/DatasetOverview.vue.d.ts +32 -14
- package/dist/data-provider-interface/views/OverviewPage/DatasetOverview.vue.mjs +27 -31
- package/dist/data-provider-interface/views/OverviewPage/DatasetOverview.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/DistributionOverview.vue.d.ts +16 -6
- package/dist/data-provider-interface/views/OverviewPage/Properties/SpecialProp.vue.d.ts +8 -3
- package/dist/data-provider-interface/views/OverviewPage/Properties/URIProp.vue.d.ts +8 -3
- package/dist/data-provider-interface/views/OverviewPage/Properties/URIProp.vue.mjs +57 -47
- package/dist/data-provider-interface/views/OverviewPage/Properties/URIProp.vue.mjs.map +1 -1
- package/dist/data-provider-interface/views/OverviewPage/PropertyEntry.vue.d.ts +16 -6
- package/dist/data-provider-interface/views/OverviewPage.vue.d.ts +367 -20
- package/dist/data-provider-interface/views/OverviewPage.vue.mjs +66 -58
- package/dist/data-provider-interface/views/OverviewPage.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsDataset.vue.mjs +50 -36
- package/dist/datasetDetails/DatasetDetailsDataset.vue.mjs.map +1 -1
- package/dist/datasetDetails/DatasetDetailsDataset.vue2.mjs +4 -4
- package/dist/datasetDetails/DatasetDetailsDataset.vue2.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsFeatures.vue.d.ts +3 -3
- package/dist/datasetDetails/features/DatasetDetailsFeatures.vue.mjs +3 -3
- package/dist/datasetDetails/features/DatasetDetailsFeatures.vue.mjs.map +1 -1
- package/dist/datasetDetails/features/DatasetDetailsIsUsedBy.vue.mjs +18 -18
- package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.mjs +58 -50
- package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.mjs.map +1 -1
- package/dist/external/@vueuse/core/index +3 -2
- package/dist/external/@vueuse/shared/index +86 -72
- package/dist/external/@vueuse/shared/index.map +1 -1
- package/dist/form/Repeatable.vue.d.ts +11 -10
- package/dist/form/Repeatable.vue.mjs +5 -62
- package/dist/form/Repeatable.vue.mjs.map +1 -1
- package/dist/form/Repeatable.vue2.mjs +72 -2
- package/dist/form/Repeatable.vue2.mjs.map +1 -1
- package/dist/form/Repeatable.vue3.mjs +5 -0
- package/dist/form/Repeatable.vue3.mjs.map +1 -0
- package/dist/piveau-hub-ui-modules.css +1 -1
- package/package.json +1 -1
- package/dist/data-provider-interface/store/modules/autocompleteStore.d.ts +0 -27
- package/dist/data-provider-interface/store/modules/autocompleteStore.mjs +0 -54
- package/dist/data-provider-interface/store/modules/autocompleteStore.mjs.map +0 -1
|
@@ -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 , 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';\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 },\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 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\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 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,14 +1,15 @@
|
|
|
1
|
-
import { setupDpiContext as
|
|
2
|
-
import { defineComponent as
|
|
3
|
-
import { mapGetters as S, mapActions as
|
|
4
|
-
import { config as
|
|
1
|
+
import { setupDpiContext as g } from "./composables/useDpiContext.mjs";
|
|
2
|
+
import { defineComponent as v, defineAsyncComponent as y, toRef as $, computed as s, toValue as E, provide as C, watchEffect as I } from "vue";
|
|
3
|
+
import { mapGetters as S, mapActions as d, useStore as b } from "vuex";
|
|
4
|
+
import { config as w } from "./config/dpi-spec-config.mjs";
|
|
5
5
|
import { useRuntimeEnv as D } from "../composables/useRuntimeEnv.mjs";
|
|
6
|
-
import { useRoute as
|
|
7
|
-
import { useDpiEditMode as
|
|
8
|
-
|
|
6
|
+
import { useRoute as A } from "vue-router";
|
|
7
|
+
import { useDpiEditMode as x } from "./composables/useDpiEditMode.mjs";
|
|
8
|
+
import { autocompleteKey as k, defaultAutocompleteAdapter as L } from "./composables/aucotomplete.mjs";
|
|
9
|
+
const j = v({
|
|
9
10
|
name: "DataProviderInterface",
|
|
10
11
|
components: {
|
|
11
|
-
InputPage:
|
|
12
|
+
InputPage: y(() => import("./views/InputPage.vue.mjs"))
|
|
12
13
|
},
|
|
13
14
|
props: {
|
|
14
15
|
name: {
|
|
@@ -19,6 +20,11 @@ const M = g({
|
|
|
19
20
|
type: Object,
|
|
20
21
|
default: () => {
|
|
21
22
|
}
|
|
23
|
+
},
|
|
24
|
+
autocomplete: {
|
|
25
|
+
type: Object,
|
|
26
|
+
default: () => {
|
|
27
|
+
}
|
|
22
28
|
}
|
|
23
29
|
},
|
|
24
30
|
metaInfo() {
|
|
@@ -46,19 +52,19 @@ const M = g({
|
|
|
46
52
|
}
|
|
47
53
|
},
|
|
48
54
|
methods: {
|
|
49
|
-
...
|
|
55
|
+
...d("dpiStore", [
|
|
50
56
|
"saveLocalstorageValues"
|
|
51
57
|
]),
|
|
52
|
-
...
|
|
58
|
+
...d("auth", [
|
|
53
59
|
"populateDraftAndEdit"
|
|
54
60
|
]),
|
|
55
61
|
getClearPath() {
|
|
56
62
|
return `${this.$env.content.dataProviderInterface.basePath}/${this.property}?locale=${this.$i18n.locale}&clear=true`;
|
|
57
63
|
},
|
|
58
64
|
handleScroll() {
|
|
59
|
-
var
|
|
65
|
+
var o, t, a;
|
|
60
66
|
try {
|
|
61
|
-
(
|
|
67
|
+
(o = document.getElementById("stepperAnchor")) != null && o.offsetTop || 0 >= 35 ? (t = document.getElementById("stepperAnchor")) == null || t.classList.add("border-bottom-lightgray") : (a = document.getElementById("stepperAnchor")) == null || a.classList.remove("border-bottom-lightgray");
|
|
62
68
|
} catch {
|
|
63
69
|
}
|
|
64
70
|
}
|
|
@@ -72,32 +78,37 @@ const M = g({
|
|
|
72
78
|
unmounted() {
|
|
73
79
|
window.removeEventListener("scroll", this.handleScroll);
|
|
74
80
|
},
|
|
75
|
-
setup(
|
|
76
|
-
const t =
|
|
77
|
-
const
|
|
81
|
+
setup(o) {
|
|
82
|
+
const t = A(), a = b(), i = D(), r = i.content.dataProviderInterface.specification, c = w[r], p = $(o, "dpiContext"), e = s(() => {
|
|
83
|
+
const h = E(p);
|
|
78
84
|
return {
|
|
79
85
|
specification: c,
|
|
80
|
-
specificationName:
|
|
86
|
+
specificationName: r,
|
|
81
87
|
edit: {
|
|
82
88
|
enabled: t.query.edit === "true",
|
|
83
89
|
id: t.query.id || void 0,
|
|
84
90
|
fromDraft: t.query.fromDraft === "true"
|
|
85
91
|
},
|
|
86
|
-
...
|
|
92
|
+
...h
|
|
87
93
|
};
|
|
88
|
-
}), m = s(() =>
|
|
89
|
-
|
|
90
|
-
|
|
94
|
+
}), m = s(() => e.value.specification), n = s(() => e.value.specificationName);
|
|
95
|
+
g(e);
|
|
96
|
+
const u = L({
|
|
97
|
+
envs: i,
|
|
98
|
+
dpiContext: e
|
|
99
|
+
});
|
|
100
|
+
C(k, o.autocomplete || u.adapter), I(() => {
|
|
101
|
+
a.dispatch("dpiStore/setSpecification", m.value), a.dispatch("dpiStore/setSpecificationname", n.value);
|
|
91
102
|
});
|
|
92
|
-
const
|
|
103
|
+
const l = s(() => `${t.query.key}@${n.value}`), { isReady: f } = x(e);
|
|
93
104
|
return {
|
|
94
|
-
resolvedDpiContext:
|
|
95
|
-
key:
|
|
96
|
-
isReady:
|
|
105
|
+
resolvedDpiContext: e,
|
|
106
|
+
key: l,
|
|
107
|
+
isReady: f
|
|
97
108
|
};
|
|
98
109
|
}
|
|
99
110
|
});
|
|
100
111
|
export {
|
|
101
|
-
|
|
112
|
+
j as default
|
|
102
113
|
};
|
|
103
114
|
//# sourceMappingURL=DataProviderInterface.vue2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataProviderInterface.vue2.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 , 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';\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 },\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 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\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":["_sfc_main","defineComponent","defineAsyncComponent","mapGetters","mapActions","_a","_b","_c","props","route","useRoute","store","useStore","userSpec","useRuntimeEnv","fallbackSpec","dpiSpecs","dpiContext","toRef","resolvedDpiContext","computed","_dpiContext","toValue","specification","specificationName","setupDpiContext","watchEffect","key","isReady","useDpiEditMode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataProviderInterface.vue2.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 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":["_sfc_main","defineComponent","defineAsyncComponent","mapGetters","mapActions","_a","_b","_c","props","route","useRoute","store","useStore","env","useRuntimeEnv","userSpec","fallbackSpec","dpiSpecs","dpiContext","toRef","resolvedDpiContext","computed","_dpiContext","toValue","specification","specificationName","setupDpiContext","defaultAutocompleteInstance","defaultAutocompleteAdapter","provide","autocompleteKey","watchEffect","key","isReady","useDpiEditMode"],"mappings":"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"}
|
|
@@ -1,74 +1,77 @@
|
|
|
1
|
-
import { getCurrentInstance as
|
|
2
|
-
import { useStore as
|
|
1
|
+
import { getCurrentInstance as ne, computed as L, ref as x, onMounted as ae, watch as B, watchEffect as le, openBlock as r, createElementBlock as i, unref as u, toDisplayString as v, createCommentVNode as $, createTextVNode as p, createElementVNode as s, withDirectives as X, isRef as N, vModelText as oe, Fragment as T, renderList as A, vShow as se, normalizeClass as re } from "vue";
|
|
2
|
+
import { useStore as ie } from "vuex";
|
|
3
3
|
import { getTranslationFor as M } from "../../utils/helpers.mjs";
|
|
4
|
-
import { getNode as
|
|
4
|
+
import { getNode as ue } from "@formkit/core";
|
|
5
5
|
import { onClickOutside as R } from "../../external/@vueuse/core/index";
|
|
6
|
-
import { useI18n as
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
6
|
+
import { useI18n as ce } from "vue-i18n";
|
|
7
|
+
import de from "qs";
|
|
8
|
+
import fe from "axios";
|
|
9
|
+
import { useAutocomplete as pe } from "../composables/aucotomplete.mjs";
|
|
10
|
+
const me = { class: "formkitProperty" }, ve = {
|
|
10
11
|
key: 0,
|
|
11
12
|
class: "formkitHeader"
|
|
12
|
-
},
|
|
13
|
+
}, ge = ["innerHTML"], ye = { class: "formkitCmpWrap" }, xe = { class: "formkit-outer" }, he = {
|
|
13
14
|
key: 0,
|
|
14
15
|
class: "d-flex formkit-inner"
|
|
15
|
-
},
|
|
16
|
+
}, ke = { class: "autocompleteInputSingleValue" }, be = { key: 1 }, we = { class: "d-flex align-items-center justify-content-center formkit-inner mb-2" }, _e = ["placeholder"], Ce = ["onClick"], Ie = {
|
|
16
17
|
key: 0,
|
|
17
18
|
class: "d-flex flex-wrap"
|
|
18
|
-
},
|
|
19
|
+
}, Le = { class: "activeResultsAutocompleteWrapper" }, Te = ["onClick"], Ae = ["onClick"], Se = { class: "w-100 mt-4" }, Ve = { class: "d-flex justify-content-between align-items-center flex-wrap" }, Pe = {
|
|
19
20
|
key: 0,
|
|
20
21
|
class: "annifresultContainer"
|
|
21
|
-
},
|
|
22
|
+
}, Oe = ["onClick"], $e = { class: "d-flex" }, Ne = {
|
|
22
23
|
key: 1,
|
|
23
24
|
class: "d-flex flex-wrap"
|
|
24
|
-
},
|
|
25
|
+
}, Me = ["onClick"], Re = ["innerHTML"], Xe = {
|
|
25
26
|
__name: "AutocompleteInput",
|
|
26
27
|
props: {
|
|
27
28
|
context: Object
|
|
28
29
|
},
|
|
29
|
-
setup(
|
|
30
|
-
let k =
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
setup(J) {
|
|
31
|
+
let k = ne().appContext.app.config.globalProperties.$env;
|
|
32
|
+
const { requestAutocompleteSuggestions: z, requestResourceName: G } = pe(), a = J;
|
|
33
|
+
ie();
|
|
34
|
+
const { t: j, locale: S } = ce();
|
|
35
|
+
let g = L(() => a.context.value), c, b = a.context.attrs.voc, K = L(() => j("message.dataupload.info.searchVocabulary")), Q = L(() => j("message.dataupload.info.matchesNothingFound")), _ = x({
|
|
36
|
+
value: { name: K }
|
|
37
|
+
}), f = x(), D = x(null), E = x(null), h = x({}), m = [], C = [], H = x({
|
|
35
38
|
value: !1
|
|
36
39
|
});
|
|
37
|
-
|
|
38
|
-
let
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
x();
|
|
41
|
+
let V = x({});
|
|
42
|
+
ae(async () => {
|
|
43
|
+
h.value = "";
|
|
41
44
|
});
|
|
42
|
-
let
|
|
45
|
+
let q = L(() => {
|
|
43
46
|
try {
|
|
44
47
|
if (a.context.attrs.class.includes("inDistribution"))
|
|
45
48
|
return !0;
|
|
46
49
|
} catch {
|
|
47
50
|
}
|
|
48
51
|
});
|
|
49
|
-
|
|
50
|
-
}),
|
|
52
|
+
B(_, async () => {
|
|
53
|
+
}), B(V, async () => {
|
|
51
54
|
});
|
|
52
|
-
const
|
|
55
|
+
const U = async (n) => {
|
|
53
56
|
if (n != null) {
|
|
54
57
|
let e = b === "iana-media-types" || b === "spdx-checksum-algorithm", t;
|
|
55
|
-
return await
|
|
58
|
+
return await G({ voc: b, uri: n, envs: k }).then(
|
|
56
59
|
(o) => {
|
|
57
|
-
a.context.attrs.property === "dcatde:politicalGeocodingURI" ? o != null && (t = e ? o.data.result.results.filter((l) => l.resource === n).map((l) => l.alt_label)[0].en : M(o.data.result.alt_label,
|
|
60
|
+
a.context.attrs.property === "dcatde:politicalGeocodingURI" ? o != null && (t = e ? o.data.result.results.filter((l) => l.resource === n).map((l) => l.alt_label)[0].en : M(o.data.result.alt_label, S.value, [])) : o != null && (t = e ? o.data.result.results.filter((l) => l.resource === n).map((l) => l.pref_label)[0].en : M(o.data.result.pref_label, S.value, []));
|
|
58
61
|
}
|
|
59
62
|
), t;
|
|
60
63
|
}
|
|
61
64
|
};
|
|
62
|
-
|
|
65
|
+
le(async () => {
|
|
63
66
|
const n = g.value;
|
|
64
67
|
if (n.hasOwnProperty("name") && n.name === n.resource) {
|
|
65
68
|
let e;
|
|
66
|
-
a.context.attrs.multiple || (e =
|
|
69
|
+
a.context.attrs.multiple || (e = U(n.resource), a.context.node.input({ name: await e, resource: n.resource }));
|
|
67
70
|
}
|
|
68
71
|
if (n.length >= 1) {
|
|
69
72
|
let e = [];
|
|
70
73
|
for (let t = 0; t < n.length; t++)
|
|
71
|
-
n[t].name === n[t].resource && (e.push({ name: await
|
|
74
|
+
n[t].name === n[t].resource && (e.push({ name: await U(n[t].resource), resource: n[t].resource }), a.context.node.input(e));
|
|
72
75
|
}
|
|
73
76
|
});
|
|
74
77
|
function P(n) {
|
|
@@ -85,11 +88,11 @@ const fe = { class: "formkitProperty" }, pe = {
|
|
|
85
88
|
}
|
|
86
89
|
window.removeEventListener("click", R);
|
|
87
90
|
}
|
|
88
|
-
R(
|
|
89
|
-
let
|
|
91
|
+
R(D, (n) => f.value = !1), R(E, (n) => h.value = "");
|
|
92
|
+
let F = async (n, e) => {
|
|
90
93
|
let t = 10;
|
|
91
94
|
e != null && (t = t + 10);
|
|
92
|
-
let o =
|
|
95
|
+
let o = de.stringify({
|
|
93
96
|
text: n,
|
|
94
97
|
limit: t
|
|
95
98
|
});
|
|
@@ -102,34 +105,34 @@ const fe = { class: "formkitProperty" }, pe = {
|
|
|
102
105
|
},
|
|
103
106
|
data: o
|
|
104
107
|
};
|
|
105
|
-
|
|
108
|
+
fe(d).then(async (l) => {
|
|
106
109
|
for (let y = 0; y < l.data.results.length; y++)
|
|
107
110
|
C[y] = { name: l.data.results[y].label, resource: l.data.results[y].uri, activeValue: !1 };
|
|
108
111
|
let w = [];
|
|
109
112
|
g.value.length > 0 && g.value.forEach((y) => {
|
|
110
113
|
w.push({ name: y.name, resource: y.resource, activeValue: !0 });
|
|
111
|
-
}), l.data.results.length > 9 && (C[C.length + 1] = { name: "...", resource: "invalid", activeValue: !1 }),
|
|
114
|
+
}), l.data.results.length > 9 && (C[C.length + 1] = { name: "...", resource: "invalid", activeValue: !1 }), V.value = Z(w, C);
|
|
112
115
|
}).catch(function(l) {
|
|
113
116
|
console.log(l);
|
|
114
117
|
});
|
|
115
118
|
};
|
|
116
|
-
async function
|
|
119
|
+
async function Y(n) {
|
|
117
120
|
n.resource === "invalid" ? I(5) : (O({ name: n.name, resource: n.resource }), I());
|
|
118
121
|
}
|
|
119
|
-
function
|
|
122
|
+
function Z(n, e) {
|
|
120
123
|
let t = n.concat(e), o = [], d = /* @__PURE__ */ new Set();
|
|
121
124
|
return t.forEach((l) => {
|
|
122
125
|
d.has(l.resource) || (d.add(l.resource), l.activeValue || o.push(l));
|
|
123
126
|
}), o;
|
|
124
127
|
}
|
|
125
128
|
const I = async (n) => {
|
|
126
|
-
let e =
|
|
129
|
+
let e = ue("Mandatory").value["dct:description"];
|
|
127
130
|
for (let t = 0; t < e.length; t++)
|
|
128
|
-
e[t]["@language"] === "en" && (n != null ? await
|
|
131
|
+
e[t]["@language"] === "en" && (n != null ? await F(e[t]["@value"], 5) : await F(e[t]["@value"]));
|
|
129
132
|
};
|
|
130
133
|
a.context.classes.outer += " autocompleteInput " + a.context.attrs.identifier;
|
|
131
134
|
const O = async (n) => {
|
|
132
|
-
if (
|
|
135
|
+
if (h.value = "", Object.keys(n).length !== 1) {
|
|
133
136
|
if (g.value.length > 0 && (m = g.value), a.context.attrs.multiple)
|
|
134
137
|
if (m.length != 0) {
|
|
135
138
|
let e = { name: n.name, resource: n.resource }, t = m.filter((o) => o.name != n.name);
|
|
@@ -143,74 +146,74 @@ const fe = { class: "formkitProperty" }, pe = {
|
|
|
143
146
|
}
|
|
144
147
|
P();
|
|
145
148
|
}
|
|
146
|
-
},
|
|
149
|
+
}, ee = async (n) => {
|
|
147
150
|
let e = n.target.value;
|
|
148
|
-
await
|
|
151
|
+
await z({ voc: b, text: e, base: k.api.baseUrl }).then((t) => {
|
|
149
152
|
const d = t.data.result.results.filter((l) => l.id !== "OP_DATPRO").map((l) => ({
|
|
150
|
-
name: M(l.pref_label,
|
|
153
|
+
name: M(l.pref_label, S.value, []) + " (" + l.id + ")",
|
|
151
154
|
resource: l.resource
|
|
152
155
|
}));
|
|
153
|
-
d.length === 0 ? _.value = { value: { name:
|
|
156
|
+
d.length === 0 ? _.value = { value: { name: Q } } : _.value = d;
|
|
154
157
|
});
|
|
155
158
|
};
|
|
156
|
-
function
|
|
159
|
+
function te(n) {
|
|
157
160
|
a.context.node.input({}), O("erase");
|
|
158
161
|
}
|
|
159
|
-
function
|
|
162
|
+
function W(n) {
|
|
160
163
|
k.content.dataProviderInterface.annifIntegration && I(), g.value.length > 0 && (m = g.value), m.splice(m.findIndex((e) => e.name == n.name), 1), c = m, a.context.node.input(c), P();
|
|
161
164
|
}
|
|
162
|
-
return (n, e) => (r(), i("div",
|
|
163
|
-
u(
|
|
165
|
+
return (n, e) => (r(), i("div", me, [
|
|
166
|
+
u(q) ? (r(), i("h4", ve, v(n.$t("message.dataupload.distributions." + a.context.attrs.identifier + ".label")), 1)) : $("", !0),
|
|
164
167
|
e[14] || (e[14] = p()),
|
|
165
|
-
a.context.attrs.identifier != "licence" && !u(
|
|
168
|
+
a.context.attrs.identifier != "licence" && !u(q) ? (r(), i("h4", {
|
|
166
169
|
key: 1,
|
|
167
170
|
innerHTML: n.$t("message.dataupload.datasets." + a.context.attrs.identifier + ".label")
|
|
168
|
-
}, null, 8,
|
|
171
|
+
}, null, 8, ge)) : $("", !0),
|
|
169
172
|
e[15] || (e[15] = p()),
|
|
170
|
-
s("div",
|
|
171
|
-
s("div",
|
|
172
|
-
!a.context.attrs.multiple && a.context.value.name ? (r(), i("div",
|
|
173
|
-
s("a",
|
|
173
|
+
s("div", ye, [
|
|
174
|
+
s("div", xe, [
|
|
175
|
+
!a.context.attrs.multiple && a.context.value.name ? (r(), i("div", he, [
|
|
176
|
+
s("a", ke, v(a.context.value.name), 1),
|
|
174
177
|
e[4] || (e[4] = p()),
|
|
175
178
|
s("div", {
|
|
176
179
|
class: "removeX",
|
|
177
|
-
onClick:
|
|
180
|
+
onClick: te
|
|
178
181
|
})
|
|
179
|
-
])) : (r(), i("div",
|
|
180
|
-
s("div",
|
|
181
|
-
|
|
182
|
+
])) : (r(), i("div", be, [
|
|
183
|
+
s("div", we, [
|
|
184
|
+
X(s("input", {
|
|
182
185
|
ref_key: "acInput",
|
|
183
|
-
ref:
|
|
186
|
+
ref: E,
|
|
184
187
|
class: "autocompleteInputfield",
|
|
185
188
|
placeholder: a.context.attrs.placeholder,
|
|
186
|
-
"onUpdate:modelValue": e[0] || (e[0] = (t) => N(
|
|
189
|
+
"onUpdate:modelValue": e[0] || (e[0] = (t) => N(h) ? h.value = t : h = t),
|
|
187
190
|
type: "text",
|
|
188
|
-
onKeyup: e[1] || (e[1] = (t) =>
|
|
191
|
+
onKeyup: e[1] || (e[1] = (t) => ee(t)),
|
|
189
192
|
onClick: e[2] || (e[2] = (t) => N(f) ? f.value = !u(f) : f = !u(f))
|
|
190
|
-
}, null, 40,
|
|
191
|
-
[
|
|
193
|
+
}, null, 40, _e), [
|
|
194
|
+
[oe, u(h)]
|
|
192
195
|
])
|
|
193
196
|
]),
|
|
194
197
|
e[11] || (e[11] = p()),
|
|
195
|
-
|
|
198
|
+
X(s("ul", {
|
|
196
199
|
ref_key: "dropdownList",
|
|
197
|
-
ref:
|
|
200
|
+
ref: D,
|
|
198
201
|
class: "autocompleteResultList"
|
|
199
202
|
}, [
|
|
200
|
-
(r(!0), i(
|
|
203
|
+
(r(!0), i(T, null, A(u(_), (t) => (r(), i("li", {
|
|
201
204
|
key: t,
|
|
202
205
|
onClick: (o) => {
|
|
203
206
|
O(t), N(f) ? f.value = !u(f) : f = !u(f);
|
|
204
207
|
},
|
|
205
208
|
class: "p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC"
|
|
206
|
-
}, v(t.name), 9,
|
|
209
|
+
}, v(t.name), 9, Ce))), 128))
|
|
207
210
|
], 512), [
|
|
208
|
-
[
|
|
211
|
+
[se, u(f)]
|
|
209
212
|
]),
|
|
210
213
|
e[12] || (e[12] = p()),
|
|
211
|
-
u(k).content.dataProviderInterface.annifIntegration && a.context.attrs.annifTheme ? (r(), i("div",
|
|
212
|
-
(r(!0), i(
|
|
213
|
-
s("div",
|
|
214
|
+
u(k).content.dataProviderInterface.annifIntegration && a.context.attrs.annifTheme ? (r(), i("div", Ie, [
|
|
215
|
+
(r(!0), i(T, null, A(u(g), (t) => (r(), i("div", { key: t }, [
|
|
216
|
+
s("div", Le, [
|
|
214
217
|
s("div", {
|
|
215
218
|
class: "d-flex",
|
|
216
219
|
onClick: (o) => {
|
|
@@ -221,14 +224,14 @@ const fe = { class: "formkitProperty" }, pe = {
|
|
|
221
224
|
e[5] || (e[5] = p()),
|
|
222
225
|
s("div", {
|
|
223
226
|
class: "removeX",
|
|
224
|
-
onClick: (o) =>
|
|
225
|
-
}, null, 8,
|
|
226
|
-
], 8,
|
|
227
|
+
onClick: (o) => W(t)
|
|
228
|
+
}, null, 8, Ae)
|
|
229
|
+
], 8, Te)
|
|
227
230
|
])
|
|
228
231
|
]))), 128)),
|
|
229
232
|
e[9] || (e[9] = p()),
|
|
230
233
|
s("div", Se, [
|
|
231
|
-
s("div",
|
|
234
|
+
s("div", Ve, [
|
|
232
235
|
s("h3", null, v(n.$t("message.dataupload.info.suggestions")), 1),
|
|
233
236
|
e[6] || (e[6] = p()),
|
|
234
237
|
s("span", null, v(n.$t("message.dataupload.info.suggestionText")), 1),
|
|
@@ -237,31 +240,31 @@ const fe = { class: "formkitProperty" }, pe = {
|
|
|
237
240
|
class: "navlikeButton",
|
|
238
241
|
type: "button",
|
|
239
242
|
onClick: e[3] || (e[3] = (t) => {
|
|
240
|
-
I(), u(
|
|
243
|
+
I(), u(H).value = !0;
|
|
241
244
|
})
|
|
242
245
|
}, v(n.$t("message.dataupload.info.tryIt")), 1)
|
|
243
246
|
]),
|
|
244
247
|
e[8] || (e[8] = p()),
|
|
245
|
-
u(
|
|
246
|
-
(r(!0), i(
|
|
248
|
+
u(H).value ? (r(), i("div", Pe, [
|
|
249
|
+
(r(!0), i(T, null, A(u(V), (t) => (r(), i("div", {
|
|
247
250
|
key: t,
|
|
248
251
|
class: "d-flex"
|
|
249
252
|
}, [
|
|
250
253
|
s("div", {
|
|
251
|
-
class:
|
|
254
|
+
class: re(["activeResultsAutocompleteWrapper annifResults", { loadMore: t.resource === "invalid" }]),
|
|
252
255
|
onClick: (o) => {
|
|
253
|
-
t.activeValue = !t.activeValue,
|
|
256
|
+
t.activeValue = !t.activeValue, Y(t);
|
|
254
257
|
}
|
|
255
258
|
}, [
|
|
256
|
-
s("div",
|
|
259
|
+
s("div", $e, [
|
|
257
260
|
s("span", null, v(t.name), 1)
|
|
258
261
|
])
|
|
259
|
-
], 10,
|
|
262
|
+
], 10, Oe)
|
|
260
263
|
]))), 128))
|
|
261
264
|
])) : $("", !0)
|
|
262
265
|
])
|
|
263
|
-
])) : (r(), i("div",
|
|
264
|
-
(r(!0), i(
|
|
266
|
+
])) : (r(), i("div", Ne, [
|
|
267
|
+
(r(!0), i(T, null, A(a.context.value, (t) => (r(), i("div", {
|
|
265
268
|
class: "activeResultsAutocompleteWrapper",
|
|
266
269
|
key: t
|
|
267
270
|
}, [
|
|
@@ -269,15 +272,15 @@ const fe = { class: "formkitProperty" }, pe = {
|
|
|
269
272
|
e[10] || (e[10] = p()),
|
|
270
273
|
s("div", {
|
|
271
274
|
class: "removeX",
|
|
272
|
-
onClick: (o) =>
|
|
273
|
-
}, null, 8,
|
|
275
|
+
onClick: (o) => W(t)
|
|
276
|
+
}, null, 8, Me)
|
|
274
277
|
]))), 128))
|
|
275
278
|
])),
|
|
276
279
|
e[13] || (e[13] = p()),
|
|
277
280
|
s("div", {
|
|
278
281
|
innerHTML: a.context.attrs.info,
|
|
279
282
|
class: "formkit-help"
|
|
280
|
-
}, null, 8,
|
|
283
|
+
}, null, 8, Re)
|
|
281
284
|
]))
|
|
282
285
|
])
|
|
283
286
|
])
|
|
@@ -285,6 +288,6 @@ const fe = { class: "formkitProperty" }, pe = {
|
|
|
285
288
|
}
|
|
286
289
|
};
|
|
287
290
|
export {
|
|
288
|
-
|
|
291
|
+
Xe as default
|
|
289
292
|
};
|
|
290
293
|
//# sourceMappingURL=AutocompleteInput.vue.mjs.map
|