<!-- SPDX-FileCopyrightText: 2023-2024 Andreas Palm SPDX-License-Identifier: LicenseRef-EGPL-3.1 --> <script setup> import {ref, onMounted} from "vue"; import axios from "axios"; import Dialog from "primevue/dialog"; import Button from "primevue/button"; import Fluid from "primevue/fluid"; import InputText from "primevue/inputtext"; import Select from "primevue/select"; import {AlertErrorHandler} from "@res/js/ajaxErrorHandler"; const props = defineProps({ type: String, id: String, }); const emit = defineEmits(['save', 'close']); const model = ref({}); const languages = ref([]); onMounted(async () => { if (props.id > 0) { const url = 'index.php?module=matrixprodukt&action=translation&cmd=edit'; model.value = await axios.get(url, { params: props }).then(response => response.data) } axios.get('index.php', { params: { module: 'ajax', action: 'filter', filtername: 'activelanguages', object: true } }).then(response => { languages.value = response.data; }); }) async function save() { if (!parseInt(props.id) > 0) model.value.id = 0; const url = 'index.php?module=matrixprodukt&action=translation&cmd=save'; await axios.post(url, {...props, ...model.value}) .catch(AlertErrorHandler) .then(() => {emit('save')}); } function ready() { if (model.value.nameExternalFrom && !model.value.nameExternalTo) return false; return model.value.languageTo && model.value.nameFrom && model.value.nameTo; } </script> <template> <Dialog visible modal header="Übersetzung anlegen/bearbeiten" style="width: 500px" @update:visible="emit('close')"> <Fluid> <div class="grid gap-1" style="grid-template-columns: 25% 75%"> <label for="matrixProduct_nameFrom">DE Name:</label> <InputText v-model="model.nameFrom" required autofocus /> <label for="matrixProduct_nameExternalFrom">DE Name Extern:</label> <InputText v-model="model.nameExternalFrom" /> <label for="matrixProduct_languageTo">Sprache:</label> <Select v-model="model.languageTo" :options="languages" option-label="bezeichnung_de" option-value="iso" /> <label for="matrixProduct_nameTo">Übersetzung Name:</label> <InputText v-model="model.nameTo" required /> <label for="matrixProduct_nameTo">Übersetzung Name Extern:</label> <InputText v-model="model.nameExternalTo" :required="model.nameExternalFrom" /> </div> </Fluid> <template #footer> <Button label="ABBRECHEN" @click="emit('close')" /> <Button label="SPEICHERN" @click="save" :disabled="!ready()"/> </template> </Dialog> </template>