From 4f63307c7ee514c4ed6a9ed7fd19bf465d75c99d Mon Sep 17 00:00:00 2001 From: provira Date: Fri, 14 Feb 2025 10:01:46 +0100 Subject: [PATCH 01/16] fix: refs #8593 fixed parking e2e tests --- .../integration/parking/parkingBasicData.spec.js | 10 +++++----- test/cypress/integration/parking/parkingList.spec.js | 6 ++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/test/cypress/integration/parking/parkingBasicData.spec.js b/test/cypress/integration/parking/parkingBasicData.spec.js index f64f23ec83e..1ad06a4f662 100644 --- a/test/cypress/integration/parking/parkingBasicData.spec.js +++ b/test/cypress/integration/parking/parkingBasicData.spec.js @@ -9,15 +9,15 @@ describe('ParkingBasicData', () => { }); it('should edit the code and sector', () => { - cy.get(sectorSelect).type('Second'); + cy.get(sectorSelect).type('First'); cy.get(sectorOpt).click(); cy.get(codeInput).eq(0).clear(); - cy.get(codeInput).eq(0).type('900-001'); + cy.get(codeInput).eq(0).type('900-002'); cy.saveCard(); - - cy.get(sectorSelect).should('have.value', 'Second sector'); - cy.get(codeInput).should('have.value', '900-001'); + cy.get('.q-notification__message').should('have.text', 'Data saved'); + cy.get(sectorSelect).should('have.value', 'First sector'); + cy.get(codeInput).should('have.value', '900-002'); }); }); diff --git a/test/cypress/integration/parking/parkingList.spec.js b/test/cypress/integration/parking/parkingList.spec.js index 8b7152ca43a..a4f2146c0a0 100644 --- a/test/cypress/integration/parking/parkingList.spec.js +++ b/test/cypress/integration/parking/parkingList.spec.js @@ -30,4 +30,10 @@ describe('ParkingList', () => { cy.get(firstDetailBtn).click(); cy.get(summaryHeader).contains('Basic data'); }); + + it('should filter and redirect to summary if only one result', () => { + cy.dataCy('Code_input').type('A{enter}'); + cy.dataCy('Sector_select').type('First Sector{enter}'); + cy.url().should('match', /\/shelving\/parking\/\d+\/summary/); + }); }); From 744d56e31889eca167e75df315637944cf8f1ac7 Mon Sep 17 00:00:00 2001 From: carlossa Date: Fri, 14 Feb 2025 13:28:39 +0100 Subject: [PATCH 02/16] fix: fix sctions --- src/i18n/locale/es.yml | 2 +- src/pages/Worker/Card/WorkerBasicData.vue | 14 ++++++++++++-- src/pages/Worker/Card/WorkerOperator.vue | 7 +++++-- src/pages/Worker/Card/WorkerPBX.vue | 22 ++++++++++++++++------ src/pages/Worker/Card/WorkerPda.vue | 1 + 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index 1dbe253664e..efb1abe5d2d 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -785,7 +785,7 @@ worker: notes: Notas operator: numberOfWagons: Número de vagones - train: tren + train: Tren itemPackingType: Tipo de embalaje warehouse: Almacén sector: Sector diff --git a/src/pages/Worker/Card/WorkerBasicData.vue b/src/pages/Worker/Card/WorkerBasicData.vue index fcf0f0369e2..38c2e839e82 100644 --- a/src/pages/Worker/Card/WorkerBasicData.vue +++ b/src/pages/Worker/Card/WorkerBasicData.vue @@ -46,8 +46,18 @@ const maritalStatus = [ > From 4354fc22937085e90a5a63f0e72aa8f1d6be48f8 Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 24 Feb 2025 13:48:19 +0100 Subject: [PATCH 06/16] refactor: refs #6897 update VnTable components for improved value handling and UI adjustments --- src/components/VnTable/VnFilter.vue | 1 - src/components/VnTable/VnTable.vue | 74 ++++++++++++++++----------- src/pages/Entry/Card/EntryBuys.vue | 4 +- src/pages/Entry/EntryList.vue | 2 +- src/pages/Route/RouteExtendedList.vue | 2 +- 5 files changed, 48 insertions(+), 35 deletions(-) diff --git a/src/components/VnTable/VnFilter.vue b/src/components/VnTable/VnFilter.vue index 0de3834eadb..e9660e4c229 100644 --- a/src/components/VnTable/VnFilter.vue +++ b/src/components/VnTable/VnFilter.vue @@ -91,7 +91,6 @@ const components = { event: updateEvent, attrs: { ...defaultAttrs, - style: 'min-width: 150px', }, forceAttrs, }, diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index 1050101405a..3323ee6cc4f 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -31,6 +31,8 @@ import VnLv from 'components/ui/VnLv.vue'; import VnTableOrder from 'src/components/VnTable/VnOrder.vue'; import VnTableFilter from './VnTableFilter.vue'; import { getColAlign } from 'src/composables/getColAlign'; +import RightMenu from '../common/RightMenu.vue'; +import { QItemSection } from 'quasar'; const arrayData = useArrayData(useAttrs()['data-key']); const $props = defineProps({ @@ -414,20 +416,13 @@ async function renderInput(rowId, field, clickedElement) { eventHandlers: { 'update:modelValue': async (value) => { if (isSelect && value) { - row[column.name] = value[column.attrs?.optionValue ?? 'id']; - row[column?.name + 'TextValue'] = - value[column.attrs?.optionLabel ?? 'name']; - await column?.cellEvent?.['update:modelValue']?.( - value, - oldValue, - row, - ); + await updateSelectValue(value, column, row, oldValue); } else row[column.name] = value; await column?.cellEvent?.['update:modelValue']?.(value, oldValue, row); }, keyup: async (event) => { if (event.key === 'Enter') - await destroyInput(rowIndex, field, clickedElement); + await destroyInput(rowId, field, clickedElement); }, keydown: async (event) => { switch (event.key) { @@ -458,6 +453,17 @@ async function renderInput(rowId, field, clickedElement) { node.el?.querySelector('span > div > div').focus(); } +async function updateSelectValue(value, column, row, oldValue) { + row[column.name] = value[column.attrs?.optionValue ?? 'id']; + + row[column?.name + 'VnTableTextValue'] = value[column.attrs?.optionLabel ?? 'name']; + + if (column?.attrs?.find?.label) + row[column?.attrs?.find?.label] = value[column.attrs?.optionLabel ?? 'name']; + + await column?.cellEvent?.['update:modelValue']?.(value, oldValue, row); +} + async function destroyInput(rowIndex, field, clickedElement) { if (!clickedElement) clickedElement = document.querySelector( @@ -520,9 +526,9 @@ function getToggleIcon(value) { } function formatColumnValue(col, row, dashIfEmpty) { - if (col?.format || row[col?.name + 'TextValue']) { - if (selectRegex.test(col?.component) && row[col?.name + 'TextValue']) { - return dashIfEmpty(row[col?.name + 'TextValue']); + if (col?.format || row[col?.name + 'VnTableTextValue']) { + if (selectRegex.test(col?.component) && row[col?.name + 'VnTableTextValue']) { + return dashIfEmpty(row[col?.name + 'VnTableTextValue']); } else { return col.format(row, dashIfEmpty); } @@ -555,19 +561,33 @@ function formatColumnValue(col, row, dashIfEmpty) { } return dashIfEmpty(row[col?.name]); } + function cardClick(_, row) { if ($props.redirect) router.push({ path: `/${$props.redirect}/${row.id}` }); } + +function removeTextValue(data, getChanges) { + let changes = data.updates; + if (!changes) return data; + + for (const change of changes) { + for (const key in change.data) { + if (key.endsWith('VnTableTextValue')) { + delete change.data[key]; + } + } + } + + data.updates = changes.filter((change) => Object.keys(change.data).length > 0); + + if ($attrs?.beforeSaveFn) data = $attrs.beforeSaveFn(data, getChanges); + + return data; +} + - -