diff --git a/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/InputField.vue b/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/InputField.vue index 519f267e4cc8f8d6ee588b0c9fa4693fed4bc455..c35cbc682eef01a066baf699fbf387ca0c7c1dfb 100644 --- a/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/InputField.vue +++ b/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/InputField.vue @@ -143,7 +143,7 @@ </div> </div> <div class="dpiV3_hintText" v-if="!showError && initialHintText"> - <span>This is a supporting message.</span> + <span>{{ supportingHintMessage }}</span> </div> <div class="dpiV3_errorText" v-if="showError && initialHintText"> <span>This is an error message.</span> @@ -336,6 +336,7 @@ let isInput_box_hovered = ref(false); let text_input_border_leading_text = ref(); const props = defineProps({ + supportingHintMessage: { type: String, default: "hint message" }, isDisabled: { type: Boolean, default: false, diff --git a/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/ChangeLicenseV3.vue b/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/ChangeLicenseV3.vue index c387960d60f5a01491d6bdbf114f123e4ae7daec..9ef37369d9ca41c54ab2ba989ed98ea4312e331c 100644 --- a/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/ChangeLicenseV3.vue +++ b/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/ChangeLicenseV3.vue @@ -40,11 +40,12 @@ :placeholder="'Bitte ' + 'Namensnennungstext' + ' eingeben...'" :preIcon="false" inputFieldSize="large" - :initialHintText="false" + :initialHintText="true" label="Nennung des Datenbereitstellers" :showEndIcon="false" :defaultInput="!showDeleteButton" @deleteButtonClicked="deleteModifiedField" + supportingHintMessage="Dieser Namensnennungstext stellt sicher, dass die Lizenzbedingungen eingehalten werden." /> </template> <script setup> diff --git a/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/DocumentationsV3.vue b/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/DocumentationsV3.vue index dc0f50227b194a17f987450705f573e6868311bf..e3272a08f268f3391baaeb11f19c4a6a98d9bd29 100644 --- a/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/DocumentationsV3.vue +++ b/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/DocumentationsV3.vue @@ -1,10 +1,10 @@ <template> - <div class="dpiV3_documentationsWrap" :class="{ 'dpiV3_docAllAsCard': asCard }"> + <div class="dpiV3_documentationsWrap" :class="{ dpiV3_docAllAsCard: asCard }"> <div v-for="documentation in documentations" :key="documentation.id" class="dpiV3AutoCompleteWrap" - :class="{ 'dpiV3_docAsCard': asCard }" + :class="{ dpiV3_docAsCard: asCard }" > <div class="dpiV3_LinkAndMetadata"> <InputField @@ -14,11 +14,19 @@ :addOnText="false" :datePicker="false" :infoIcon="false" - placeholder="Bitte URL eingeben..." + :placeholder=" + $t( + 'message.dataupload.datasets.dcat:distribution.advanced.documentation.URL-label-placeholder' + ) + " :preIcon="false" inputFieldSize="large" :initialHintText="false" - label="URL" + :label=" + $t( + 'message.dataupload.datasets.dcat:distribution.advanced.documentation.dcat:downloadURL-label' + ) + " :showEndIcon="false" v-model="documentation['dcat:downloadURL']" /> @@ -27,7 +35,11 @@ :addOnText="false" :datePicker="false" :infoIcon="false" - placeholder="Bitte Titel eingeben..." + :placeholder=" + $t( + 'message.dataupload.datasets.dcat:distribution.advanced.documentation.title-placeholder' + ) + " :preIcon="false" inputFieldSize="large" :initialHintText="false" @@ -38,6 +50,8 @@ " :showEndIcon="false" v-model="documentation['dct:title']" + :defaultInput="!showDeleteButton" + @deleteButtonClicked="deleteField('dct:title', documentation.id)" /> <TextAreaV3 @input=" @@ -54,12 +68,15 @@ 'message.dataupload.datasets.dcat:distribution.advanced.documentation.placeholder' ) " - :value="documentation['dct:description']" + v-model="documentation['dct:description']" + :showDeleteButton="showDeleteButton" + @deleteClicked="deleteField('dct:description', documentation.id)" /> <Dropdown @input="updateDocumentation($event, 'dct:format', documentation.id)" dropdownWidth="large" type="inputField" + v-model="documentation['dct:format']" :inputFieldProps="{ addOnText: false, initialHintText: false, @@ -75,16 +92,21 @@ ), inputFieldSize: 'large', autocomplete: 'true', + modelValue: documentation['dct:format'], + defaultInput: !showDeleteButton, }" :data="filteredData" :autocomplete="true" - :value="documentation['dct:format']" /> <p v-if="minimumDocError && documentations.length === 1" class="copy-mini-regular dpiV3_text_error" > - Mindestens eine URL muss vorhanden sein. + {{ + $t( + "message.dataupload.datasets.dcat:distribution.advanced.documentation.error-message" + ) + }} </p> </div> <ButtonV3 @@ -141,6 +163,7 @@ const props = defineProps({ fileTypes: { type: Array, required: false, default: () => [] }, distributionId: { type: Number, required: true }, asCard: { type: Boolean, required: false, default: false }, + showDeleteButton: { type: Boolean, required: false, default: false} }); const emit = defineEmits(["update"]); @@ -152,11 +175,7 @@ const documentationToDelete = ref(null); let activeV3Modal = ref(false); onMounted(() => { - console.log("Component Mounted: Documentations received for distributionId:", props.distributionId); - console.log("Documentations:", props.documentations); - if (props.documentations.length === 0) { - console.log("No documentations found, initializing first documentation."); emit("update", [ { id: 1, @@ -193,8 +212,6 @@ const addDocumentation = () => { }; const updateDocumentation = (event, field, docId) => { - let inputValue = event?.target?.value ?? event; - if (field === "dct:format") { filteredData.value = [...props.fileTypes]; //reset bec. used in more dropdowns @@ -223,8 +240,8 @@ const confirmDelete = (documentation) => { header: "Dokumentation löschen", text: "Sind Sie sicher, dass Sie die Dokumentation löschen wollen?", action: "delete", - optionalString_1: documentation['dct:title'], - optionalString_2: documentation['dcat:downloadURL'] + optionalString_1: documentation["dct:title"], + optionalString_2: documentation["dcat:downloadURL"], }; activeV3Modal.value = true; documentationToDelete.value = documentation; @@ -246,11 +263,26 @@ const deleteDocumentation = () => { emit("update", updatedDocs); }; + +const deleteField = (field) => { + switch (field) { + case 'dct:description': + console.log('dct:desriptiondelete') + break; + case 'dct:title': + console.log('dct:titledelete') + break; + + default: + break; + } + +} </script> <style scoped> .dpiV3AutoCompleteWrap { - margin-bottom: var(--Spacing-3, 8px); + margin-bottom: var(--Spacing-3, 8px); } .dpiV3_text_error { @@ -265,12 +297,12 @@ const deleteDocumentation = () => { } .dpiV3_docAllAsCard { - background: var(--Colour-blue-Blue10, #F3FBFF); - width: 100%; + background: var(--Colour-blue-Blue10, #f3fbff); + width: 100%; } .dpiV3_docAsCard { - background-color: white; - margin-bottom: var(--Spacing-3, 8px); + background-color: white; + margin-bottom: var(--Spacing-3, 8px); } </style> diff --git a/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/LanguageV3.vue b/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/LanguageV3.vue index 6cd590b2cdc51a2c973a1f4e1c063f842481658a..9f7f212dcf3ca38fff8f7698a127d5a0f14b6358 100644 --- a/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/LanguageV3.vue +++ b/packages/piveau-hub-ui-modules/lib/data-provider-interface/HappyFlowComponents/ui/OptionalInformation/LanguageV3.vue @@ -10,21 +10,24 @@ datePicker: false, infoIcon: false, preIcon: false, - label: 'Sprache (optional)', + label: t('message.dataupload.datasets.dcat:distribution.advanced.dct:language')+ ' (optional)', dropdown_dpiV3: true, - placeholder: 'Geben Sie die Sprache ein...', + placeholder: t('message.dataupload.datasets.dcat:distribution.advanced.language-placeholder'), inputFieldSize: 'large', modelValue: languageTexVal, defaultInput: !showDeleteButton }" :data="languageOptions" - @deleteButtonClicked="deleteLanguageField" + @deleteDropdownField="deleteLanguageField" /> </template> <script setup> import { getLanguages } from "../../services/dpiV3_apis"; import Dropdown from "../Dropdown.vue"; import {onMounted, getCurrentInstance, ref, defineProps, defineEmits, watch } from "vue"; +import { useI18n } from "vue-i18n"; + +const { t } = useI18n(); onMounted(async () => { const instance = getCurrentInstance(); diff --git a/packages/piveau-hub-ui-modules/lib/data-provider-interface/components/DistributionSimplePage.vue b/packages/piveau-hub-ui-modules/lib/data-provider-interface/components/DistributionSimplePage.vue index 23ab3425af05754c9d51aa925e1d65510d3cd129..270f5bc82df405086916f00d8d599eefe8056e85 100644 --- a/packages/piveau-hub-ui-modules/lib/data-provider-interface/components/DistributionSimplePage.vue +++ b/packages/piveau-hub-ui-modules/lib/data-provider-interface/components/DistributionSimplePage.vue @@ -90,13 +90,14 @@ <div class="dpiV3_Documentation"> <DocumentationsV3 :documentations="distribution.documentations" - :fileTypes="fileTypes" + :fileTypes="allFileTypes" @update=" (updatedDocs) => updateDocumentations(distribution.id, updatedDocs) " :distributionId="distribution.id" asCard="true" + :showDeleteButton="true" /> </div> </div> @@ -340,8 +341,10 @@ > <LanguageV3 @addLanguage="handleAddLanguage" + @deleteButtonClicked="removeLanguage(distribution.id)" :languageText="distribution['dct:language']" :distributionId="distribution.id" + :showDeleteButton="true" /> </div> @@ -357,7 +360,7 @@ :distributionId="distribution.id" @addByteSize="handleByteSize" @deleteButtonClicked="removeByteSize(distribution.id)" - showDeleteButton="true" + :showDeleteButton="true" /> </div> <!------------------- End Byte Size,dcat:byteSize -------------------> @@ -769,6 +772,11 @@ const removeByteSize = (distributionId) => { distribution['dcat:byteSize'] = undefined; }; +const removeLanguage = (distributionId) => { + const distribution = distributions.value.find((d) => d.id === distributionId); + distribution['dct:language'] = undefined; +}; + const removePolicyItemsBlock = (distributionId) => { const distribution = distributions.value.find((d) => d.id === distributionId); distribution.policyItems = [];