From 6a91acb889169c5c746a479782c1d0ad3cd97aae Mon Sep 17 00:00:00 2001 From: benjaminedc <benjaminedc@verdnatura.es> Date: Thu, 27 Feb 2025 10:00:19 +0100 Subject: [PATCH 1/5] style: refs #8041 new variable --- src/css/app.scss | 10 ++++++---- src/css/quasar.variables.scss | 1 - 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/css/app.scss b/src/css/app.scss index 994ae7ff1..fab997eef 100644 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -15,6 +15,7 @@ body.body--light { --vn-empty-tag: #acacac; --vn-black-text-color: black; --vn-text-color-contrast: white; + --vn-link-color: #1e90ff; background-color: var(--vn-page-color); @@ -38,6 +39,7 @@ body.body--dark { --vn-empty-tag: #2d2d2d; --vn-black-text-color: black; --vn-text-color-contrast: black; + --vn-link-color: #66bfff; background-color: var(--vn-page-color); @@ -49,7 +51,7 @@ a { } .link { - color: $color-link; + color: var(--vn-link-color); cursor: pointer; &--white { @@ -58,14 +60,14 @@ a { } .tx-color-link { - color: $color-link !important; + color: var(--vn-link-color) !important; } .tx-color-font { - color: $color-link !important; + color: var(--vn-link-color) !important; } .header-link { - color: $color-link !important; + color: var(--vn-link-color) !important; cursor: pointer; border-bottom: solid $primary; border-width: 2px; diff --git a/src/css/quasar.variables.scss b/src/css/quasar.variables.scss index 22c6d2b56..45d18af7e 100644 --- a/src/css/quasar.variables.scss +++ b/src/css/quasar.variables.scss @@ -24,7 +24,6 @@ $alert: $negative; $white: #fff; $dark: #3d3d3d; // custom -$color-link: #66bfff; $color-spacer-light: #a3a3a31f; $color-spacer: #7979794d; $border-thin-light: 1px solid $color-spacer-light; From 8f0bd73e9f03ce0c29f59b3f9ca00f56a08ea122 Mon Sep 17 00:00:00 2001 From: benjaminedc <benjaminedc@verdnatura.es> Date: Thu, 27 Feb 2025 10:13:35 +0100 Subject: [PATCH 2/5] refactor: refs #8041 unify class link and unify titles to VnTitles --- src/components/FilterItemForm.vue | 2 +- src/components/FilterTravelForm.vue | 2 +- src/pages/Account/Alias/Card/AliasSummary.vue | 12 +++++------- src/pages/Account/Card/AccountSummary.vue | 12 +++++------- src/pages/Account/Role/Card/RoleSummary.vue | 12 +++++------- src/pages/Claim/Card/ClaimSummary.vue | 2 +- .../Customer/Card/CustomerFileManagement.vue | 15 ++++++++++++--- src/pages/Item/ItemType/Card/ItemTypeSummary.vue | 12 +++++------- src/pages/Route/Card/RouteSummary.vue | 8 ++++---- src/pages/Shelving/Card/ShelvingSummary.vue | 12 +++++------- .../Shelving/Parking/Card/ParkingSummary.vue | 12 +++++------- src/pages/Supplier/Card/SupplierConsumption.vue | 2 +- src/pages/Ticket/Negative/TicketLackTable.vue | 2 +- 13 files changed, 51 insertions(+), 54 deletions(-) diff --git a/src/components/FilterItemForm.vue b/src/components/FilterItemForm.vue index cacfde1b3..cca8d80c3 100644 --- a/src/components/FilterItemForm.vue +++ b/src/components/FilterItemForm.vue @@ -188,7 +188,7 @@ const selectItem = ({ id }) => { > <template #body-cell-id="{ row }"> <QTd auto-width @click.stop> - <QBtn flat color="blue">{{ row.id }}</QBtn> + <QBtn flat class="link">{{ row.id }}</QBtn> <ItemDescriptorProxy :id="row.id" /> </QTd> </template> diff --git a/src/components/FilterTravelForm.vue b/src/components/FilterTravelForm.vue index 765d97763..6dea57b1a 100644 --- a/src/components/FilterTravelForm.vue +++ b/src/components/FilterTravelForm.vue @@ -196,7 +196,7 @@ const selectTravel = ({ id }) => { > <template #body-cell-id="{ row }"> <QTd auto-width @click.stop data-cy="travelFk-travel-form"> - <QBtn flat color="blue">{{ row.id }}</QBtn> + <QBtn flat class="link">{{ row.id }}</QBtn> <TravelDescriptorProxy :id="row.id" /> </QTd> </template> diff --git a/src/pages/Account/Alias/Card/AliasSummary.vue b/src/pages/Account/Alias/Card/AliasSummary.vue index b4b9abd25..cfd33ec82 100644 --- a/src/pages/Account/Alias/Card/AliasSummary.vue +++ b/src/pages/Account/Alias/Card/AliasSummary.vue @@ -5,6 +5,7 @@ import { useI18n } from 'vue-i18n'; import CardSummary from 'components/ui/CardSummary.vue'; import VnLv from 'src/components/ui/VnLv.vue'; +import VnTitle from 'src/components/common/VnTitle.vue'; const route = useRoute(); const { t } = useI18n(); @@ -27,13 +28,10 @@ const entityId = computed(() => $props.id || route.params.id); <template #body="{ entity: alias }"> <QCard class="vn-one"> <QCardSection class="q-pa-none"> - <router-link - :to="{ name: 'AliasBasicData', params: { id: entityId } }" - class="header header-link" - > - {{ t('globals.summary.basicData') }} - <QIcon name="open_in_new" /> - </router-link> + <VnTitle + :url="`#/account/alias/${entityId}/basic-data`" + :text="t('globals.summary.basicData')" + /> </QCardSection> <VnLv :label="t('role.id')" :value="alias.id" /> <VnLv :label="t('role.description')" :value="alias.description" /> diff --git a/src/pages/Account/Card/AccountSummary.vue b/src/pages/Account/Card/AccountSummary.vue index f7a16e8c3..2172fec9a 100644 --- a/src/pages/Account/Card/AccountSummary.vue +++ b/src/pages/Account/Card/AccountSummary.vue @@ -5,6 +5,7 @@ import CardSummary from 'components/ui/CardSummary.vue'; import VnLv from 'src/components/ui/VnLv.vue'; import filter from './AccountFilter.js'; import AccountDescriptorMenu from './AccountDescriptorMenu.vue'; +import VnTitle from 'src/components/common/VnTitle.vue'; const $props = defineProps({ id: { type: Number, default: 0 } }); @@ -26,13 +27,10 @@ const entityId = computed(() => $props.id || route.params.id); <template #body="{ entity }"> <QCard class="vn-one"> <QCardSection class="q-pa-none"> - <router-link - :to="{ name: 'AccountBasicData', params: { id: entityId } }" - class="header header-link" - > - {{ $t('globals.pageTitles.basicData') }} - <QIcon name="open_in_new" /> - </router-link> + <VnTitle + :url="`#/account/${entityId}/basic-data`" + :text="$t('globals.pageTitles.basicData')" + /> </QCardSection> <VnLv :label="$t('account.card.nickname')" :value="entity.name" /> <VnLv :label="$t('account.card.role')" :value="entity.role?.name" /> diff --git a/src/pages/Account/Role/Card/RoleSummary.vue b/src/pages/Account/Role/Card/RoleSummary.vue index 410f90b17..baa4afeca 100644 --- a/src/pages/Account/Role/Card/RoleSummary.vue +++ b/src/pages/Account/Role/Card/RoleSummary.vue @@ -4,6 +4,7 @@ import { useRoute } from 'vue-router'; import { useI18n } from 'vue-i18n'; import CardSummary from 'components/ui/CardSummary.vue'; import VnLv from 'src/components/ui/VnLv.vue'; +import VnTitle from 'src/components/common/VnTitle.vue'; const route = useRoute(); const { t } = useI18n(); @@ -29,13 +30,10 @@ const entityId = computed(() => $props.id || route.params.id); <template #body="{ entity }"> <QCard class="vn-one"> <QCardSection class="q-pa-none"> - <a - class="header header-link" - :href="`#/VnUser/${entityId}/basic-data`" - > - {{ t('globals.pageTitles.basicData') }} - <QIcon name="open_in_new" /> - </a> + <VnTitle + :url="`#/account/role/${entityId}/basic-data`" + :text="$t('globals.pageTitles.basicData')" + /> </QCardSection> <VnLv :label="t('role.id')" :value="entity.id" /> <VnLv :label="t('globals.name')" :value="entity.name" /> diff --git a/src/pages/Claim/Card/ClaimSummary.vue b/src/pages/Claim/Card/ClaimSummary.vue index 210b0c982..73afe9a92 100644 --- a/src/pages/Claim/Card/ClaimSummary.vue +++ b/src/pages/Claim/Card/ClaimSummary.vue @@ -271,7 +271,7 @@ function claimUrl(section) { </VnLv> <VnLv v-if="$route.name != 'ClaimSummary'" :label="t('claim.customer')"> <template #value> - <span class="link cursor-pointer"> + <span class="link"> {{ claim.client?.name }} <CustomerDescriptorProxy :id="claim.clientFk" /> </span> diff --git a/src/pages/Customer/Card/CustomerFileManagement.vue b/src/pages/Customer/Card/CustomerFileManagement.vue index b565db6e7..419719251 100644 --- a/src/pages/Customer/Card/CustomerFileManagement.vue +++ b/src/pages/Customer/Card/CustomerFileManagement.vue @@ -86,12 +86,12 @@ const tableColumnComponents = { }, file: { component: QBtn, - props: () => ({ flat: true, color: 'blue' }), + props: () => ({ flat: true }), event: ({ row }) => downloadFile(row.dmsFk), }, employee: { component: QBtn, - props: () => ({ flat: true, color: 'blue' }), + props: () => ({ flat: true }), event: () => {}, }, created: { @@ -214,8 +214,17 @@ const toCustomerFileManagementCreate = () => { v-bind="tableColumnComponents[props.col.name].props(props)" > <template v-if="props.col.name !== 'original'"> - {{ props.value }} + <span + :class="{ + link: + props.col.name === 'employee' || + props.col.name === 'file', + }" + > + {{ props.value }} + </span> </template> + <WorkerDescriptorProxy :id="props.row.dms.workerFk" v-if="props.col.name === 'employee'" diff --git a/src/pages/Item/ItemType/Card/ItemTypeSummary.vue b/src/pages/Item/ItemType/Card/ItemTypeSummary.vue index 3b63c4b63..ba294e144 100644 --- a/src/pages/Item/ItemType/Card/ItemTypeSummary.vue +++ b/src/pages/Item/ItemType/Card/ItemTypeSummary.vue @@ -7,6 +7,7 @@ import filter from './ItemTypeFilter.js'; import CardSummary from 'components/ui/CardSummary.vue'; import VnLv from 'src/components/ui/VnLv.vue'; import VnToSummary from 'src/components/ui/VnToSummary.vue'; +import VnTitle from 'src/components/common/VnTitle.vue'; onUpdated(() => summaryRef.value.fetch()); @@ -62,13 +63,10 @@ async function setItemTypeData(data) { </template> <template #body> <QCard class="vn-one"> - <router-link - :to="{ name: 'ItemTypeBasicData', params: { id: entityId } }" - class="header header-link" - > - {{ t('globals.summary.basicData') }} - <QIcon name="open_in_new" /> - </router-link> + <VnTitle + :url="`#/item/item-type/${entityId}/basic-data`" + :text="$t('globals.summary.basicData')" + /> <VnLv :label="t('itemType.summary.id')" :value="itemType.id" /> <VnLv :label="t('itemType.shared.code')" :value="itemType.code" /> <VnLv :label="t('itemType.shared.name')" :value="itemType.name" /> diff --git a/src/pages/Route/Card/RouteSummary.vue b/src/pages/Route/Card/RouteSummary.vue index 3051972b2..32fa97cff 100644 --- a/src/pages/Route/Card/RouteSummary.vue +++ b/src/pages/Route/Card/RouteSummary.vue @@ -168,7 +168,7 @@ const ticketColumns = ref([ <VnLv :label="t('route.summary.volume')" :value="`${dashIfEmpty(entity?.route?.m3)} / ${dashIfEmpty( - entity?.route?.vehicle?.m3 + entity?.route?.vehicle?.m3, )} m³`" /> <VnLv @@ -221,7 +221,7 @@ const ticketColumns = ref([ <template #body-cell-city="{ value, row }"> <QTd auto-width> <span - class="link cursor-pointer" + class="link" @click="openBuscaman(entity?.route?.vehicleFk, [row])" > {{ value }} @@ -230,7 +230,7 @@ const ticketColumns = ref([ </template> <template #body-cell-client="{ value, row }"> <QTd auto-width> - <span class="link cursor-pointer"> + <span class="link"> {{ value }} <CustomerDescriptorProxy :id="row?.clientFk" /> </span> @@ -238,7 +238,7 @@ const ticketColumns = ref([ </template> <template #body-cell-ticket="{ value, row }"> <QTd auto-width class="text-center"> - <span class="link cursor-pointer"> + <span class="link"> {{ value }} <TicketDescriptorProxy :id="row?.id" /> </span> diff --git a/src/pages/Shelving/Card/ShelvingSummary.vue b/src/pages/Shelving/Card/ShelvingSummary.vue index f89ff4d78..4a6669624 100644 --- a/src/pages/Shelving/Card/ShelvingSummary.vue +++ b/src/pages/Shelving/Card/ShelvingSummary.vue @@ -6,6 +6,7 @@ import VnLv from 'components/ui/VnLv.vue'; import VnUserLink from 'components/ui/VnUserLink.vue'; import filter from './ShelvingFilter.js'; import ShelvingDescriptorMenu from './ShelvingDescriptorMenu.vue'; +import VnTitle from 'src/components/common/VnTitle.vue'; const $props = defineProps({ id: { @@ -38,13 +39,10 @@ const entityId = computed(() => $props.id || route.params.id); </template> <template #body="{ entity }"> <QCard class="vn-one"> - <RouterLink - class="header header-link" - :to="{ name: 'ShelvingBasicData', params: { id: entityId } }" - > - {{ $t('globals.pageTitles.basicData') }} - <QIcon name="open_in_new" /> - </RouterLink> + <VnTitle + :url="`#/shelving/${entityId}/basic-data`" + :text="$t('globals.pageTitles.basicData')" + /> <VnLv :label="$t('globals.code')" :value="entity.code" /> <VnLv :label="$t('shelving.list.parking')" diff --git a/src/pages/Shelving/Parking/Card/ParkingSummary.vue b/src/pages/Shelving/Parking/Card/ParkingSummary.vue index 7188ebeb6..1365c71ca 100644 --- a/src/pages/Shelving/Parking/Card/ParkingSummary.vue +++ b/src/pages/Shelving/Parking/Card/ParkingSummary.vue @@ -4,6 +4,7 @@ import { useRoute } from 'vue-router'; import { useI18n } from 'vue-i18n'; import CardSummary from 'components/ui/CardSummary.vue'; import VnLv from 'components/ui/VnLv.vue'; +import VnTitle from 'src/components/common/VnTitle.vue'; const $props = defineProps({ id: { @@ -28,13 +29,10 @@ const filter = { <template #body="{ entity }"> <QCard class="vn-one"> <QCardSection class="q-pa-none"> - <a - class="header header-link" - :href="`#/parking/${entityId}/basic-data`" - > - {{ t('globals.pageTitles.basicData') }} - <QIcon name="open_in_new" /> - </a> + <VnTitle + :url="`#/shelving/parking/${entityId}/basic-data`" + :text="$t('globals.pageTitles.basicData')" + /> </QCardSection> <VnLv :label="t('globals.code')" :value="entity.code" /> <VnLv diff --git a/src/pages/Supplier/Card/SupplierConsumption.vue b/src/pages/Supplier/Card/SupplierConsumption.vue index 718de95dd..259561f4c 100644 --- a/src/pages/Supplier/Card/SupplierConsumption.vue +++ b/src/pages/Supplier/Card/SupplierConsumption.vue @@ -203,7 +203,7 @@ onMounted(async () => { </QTr> <QTr v-for="(buy, index) in row.buys" :key="index"> <QTd no-hover> - <QBtn flat color="blue" dense no-caps>{{ buy.itemName }}</QBtn> + <QBtn flat class="link" dense no-caps>{{ buy.itemName }}</QBtn> <ItemDescriptorProxy :id="buy.itemFk" /> </QTd> diff --git a/src/pages/Ticket/Negative/TicketLackTable.vue b/src/pages/Ticket/Negative/TicketLackTable.vue index 176e8f7ad..c9c2a7cad 100644 --- a/src/pages/Ticket/Negative/TicketLackTable.vue +++ b/src/pages/Ticket/Negative/TicketLackTable.vue @@ -225,7 +225,7 @@ function onBuysFetched(data) { /> </div> <div class="flex column left" style="align-items: flex-start"> - <QBtn flat class="link text-blue"> + <QBtn flat class="link"> {{ item?.longName ?? item.name }} <ItemDescriptorProxy :id="entityId" /> <FetchedTags class="q-ml-md" :item="item" :columns="7" /> From 7b1f22a66006cffb81745031860ed732af7a0be7 Mon Sep 17 00:00:00 2001 From: benjaminedc <benjaminedc@verdnatura.es> Date: Mon, 3 Mar 2025 08:26:15 +0100 Subject: [PATCH 3/5] fix: refs #8041 update selector for summary header in ParkingList tests --- test/cypress/integration/shelving/parking/parkingList.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cypress/integration/shelving/parking/parkingList.spec.js b/test/cypress/integration/shelving/parking/parkingList.spec.js index ecee8aab7..7372da164 100644 --- a/test/cypress/integration/shelving/parking/parkingList.spec.js +++ b/test/cypress/integration/shelving/parking/parkingList.spec.js @@ -1,8 +1,8 @@ /// <reference types="cypress" /> describe('ParkingList', () => { const searchbar = '#searchbar input'; - const firstCard = ':nth-child(1) > .q-card > .no-margin > .q-py-none'; - const summaryHeader = '.summaryBody .header'; + const firstCard = ':nth-child(1) > .q-card > .no-margin > .q-py-none'; + const summaryHeader = '.header-link'; beforeEach(() => { cy.viewport(1920, 1080); From 98da599f76ff2bf9af9a39ac459306a76521eb9b Mon Sep 17 00:00:00 2001 From: benjaminedc <benjaminedc@verdnatura.es> Date: Fri, 7 Mar 2025 08:09:17 +0100 Subject: [PATCH 4/5] fix: refs #8041 update redirection from preview to summary in ShelvingList tests --- test/cypress/integration/shelving/shelvingList.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cypress/integration/shelving/shelvingList.spec.js b/test/cypress/integration/shelving/shelvingList.spec.js index 745dd1b78..20b72e419 100644 --- a/test/cypress/integration/shelving/shelvingList.spec.js +++ b/test/cypress/integration/shelving/shelvingList.spec.js @@ -16,8 +16,8 @@ describe('ShelvingList', () => { it('should redirect from preview to basic-data', () => { cy.typeSearchbar('{enter}'); cy.dataCy('cardBtn').eq(0).click(); - cy.get('.q-card > .header').click(); - cy.url().should('include', '/shelving/1/basic-data'); + cy.get('.summaryHeader > .header > .q-icon').click(); + cy.url().should('include', '/shelving/1/summary'); }); it('should filter and redirect if only one result', () => { From 6c76eb481bbd891d1eb176fcafe9ab53cf05158b Mon Sep 17 00:00:00 2001 From: benjaminedc <benjaminedc@verdnatura.es> Date: Mon, 10 Mar 2025 14:23:49 +0100 Subject: [PATCH 5/5] fix: refs #8041 update summaryHeader selector in ParkingList test --- test/cypress/integration/shelving/parking/parkingList.spec.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/cypress/integration/shelving/parking/parkingList.spec.js b/test/cypress/integration/shelving/parking/parkingList.spec.js index 466868bf4..7372da164 100644 --- a/test/cypress/integration/shelving/parking/parkingList.spec.js +++ b/test/cypress/integration/shelving/parking/parkingList.spec.js @@ -2,11 +2,7 @@ describe('ParkingList', () => { const searchbar = '#searchbar input'; const firstCard = ':nth-child(1) > .q-card > .no-margin > .q-py-none'; -<<<<<<< HEAD const summaryHeader = '.header-link'; -======= - const summaryHeader = '.summaryBody .header'; ->>>>>>> b39aeb46a2c5da08287888495414dbaba49cd5d8 beforeEach(() => { cy.viewport(1920, 1080);