From fc007921bd92b4ad5e05916666d7981fbc22d267 Mon Sep 17 00:00:00 2001 From: carlossa Date: Tue, 26 Nov 2024 12:40:32 +0100 Subject: [PATCH] fix: refs #4774 fix translation front --- src/pages/Worker/TranslationsVn copy.vue | 220 +++++++++++++++++++++++ src/pages/Worker/TranslationsVn.vue | 73 ++++---- 2 files changed, 253 insertions(+), 40 deletions(-) create mode 100644 src/pages/Worker/TranslationsVn copy.vue diff --git a/src/pages/Worker/TranslationsVn copy.vue b/src/pages/Worker/TranslationsVn copy.vue new file mode 100644 index 000000000..9f498b004 --- /dev/null +++ b/src/pages/Worker/TranslationsVn copy.vue @@ -0,0 +1,220 @@ + + + + + + es: + primaryKey: Clave primaria + defaultLang(en): Idioma por defecto(Eng) + secondLang: Idioma secundario + table: Tabla + lang: Idioma + en: + primaryKey: Primary key + defaultLang(en): Default language(Eng) + secondLang: Second language + table: Table + lang: Language + diff --git a/src/pages/Worker/TranslationsVn.vue b/src/pages/Worker/TranslationsVn.vue index fc41c1d2e..d835655ec 100644 --- a/src/pages/Worker/TranslationsVn.vue +++ b/src/pages/Worker/TranslationsVn.vue @@ -22,7 +22,7 @@ const columns = computed(() => [ { align: 'left', name: primaryKey, - label: t('primaryKey'), + label: primaryKey, create: true, }, { @@ -34,6 +34,7 @@ const columns = computed(() => [ align: 'left', name: lang, label: lang, + component: 'input', }, { align: 'right', @@ -77,30 +78,30 @@ const originalData = ref([]); const url = computed(() => table.value?.tableName + 's'); async function loadTable(data) { - if (data) { - originalData.value = []; - tableRef.value.CrudModelRef.formData = []; - const newData = {}; - for (const translation of data) { - if (!newData[translation[primaryKey.value]]) - newData[translation[primaryKey.value]] = {}; - newData[translation[primaryKey.value]][translation.lang] = - translation[field.value]; - } + console.log('data: ', data); + if (data) originalData.value = data; + if (!lang.value) return; + const toFilter = JSON.parse(JSON.stringify(originalData.value)); + console.log('toFilter: ', toFilter); - for (const currentData in newData) { - originalData.value.push({ - [primaryKey.value]: currentData, - ...newData[currentData], - }); - tableRef.value.CrudModelRef.formData.push({ - [primaryKey.value]: currentData, - ...newData[currentData], - }); - } - return; + const filtered = []; + for (const translation of toFilter) { + if (translation.lang != lang.value) continue; + translation[lang.value] = translation[field.value]; + translation.en = originalData.value.find( + (o) => o.lang == 'en' && o[primaryKey.value] == translation[primaryKey.value] + )[field.value]; + + filtered.push(translation); } - tableRef.value.CrudModelRef.formData = JSON.parse(JSON.stringify(originalData.value)); + + tableRef.value.CrudModelRef.formData = filtered; + + // PENDIENTE + /* + Borrar por id (nativo de crudModel) y poner mensaje para si se quiieren borrar todas la traducciones (confirmar con Javi) + Para guardar, Setear el original data de crudmodel para saber cuando cambia + */ } function resetOriginalData() { @@ -108,6 +109,7 @@ function resetOriginalData() { } async function upsertI18n(data) { + console.log('data: ', data); await axios.patch(url.value, { [field.value]: data[lang.value], [primaryKey.value]: data[primaryKey.value], @@ -163,7 +165,6 @@ async function removeLine(id) { data-key="translations" :url="url" :columns="columns" - :filter="{ limit: 50 }" :create="{ urlCreate: url, title: 'Create translation', @@ -174,24 +175,16 @@ async function removeLine(id) { @on-fetch="(data) => loadTable(data)" :save-fn="upsertI18n" :search-url="false" + :is-editable="true" > -