From 6e207acb5aee4971b320737b12bea5ee7914b046 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Mon, 30 Jun 2025 20:54:19 +0530 Subject: [PATCH] fix: CSAT table header and date range translation issue on reload (#11836) # Pull Request Template ## Description This PR fixes the translation issue in the CSAT reports table header and date range filter, where labels reverted to English after a page reload. Fixes https://linear.app/chatwoot/issue/CW-4557/language-switching-on-page-reload ## Type of change - [x] Bug fix (non-breaking change which fixes an issue) ## How Has This Been Tested? https://github.com/user-attachments/assets/c68da978-1f17-44b5-bb21-5ea2668563fb ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --- .../settings/reports/components/CsatTable.vue | 8 ++-- .../reports/components/Filters/DateRange.vue | 45 ++++++++++--------- .../specs/Filters/FiltersDateRange.spec.js | 23 +++++----- 3 files changed, 40 insertions(+), 36 deletions(-) diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/components/CsatTable.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/components/CsatTable.vue index 8beeafd70..76a3e3079 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/reports/components/CsatTable.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/components/CsatTable.vue @@ -61,7 +61,7 @@ const defaultSpanRender = cellProps => { const columnHelper = createColumnHelper(); -const columns = [ +const columns = computed(() => [ columnHelper.accessor('contact', { header: t('CSAT_REPORTS.TABLE.HEADER.CONTACT_NAME'), width: 200, @@ -121,7 +121,7 @@ const columns = [ width: 100, cell: cellProps => h(ConversationCell, cellProps), }), -]; +]); const paginationParams = computed(() => { return { @@ -134,7 +134,9 @@ const table = useVueTable({ get data() { return tableData.value; }, - columns, + get columns() { + return columns.value; + }, manualPagination: true, enableSorting: false, getCoreRowModel: getCoreRowModel(), diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/DateRange.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/DateRange.vue index 4d1cc340f..9caab26dd 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/DateRange.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/DateRange.vue @@ -1,28 +1,33 @@ - @@ -31,7 +36,7 @@ export default { { - it('emits "on-range-change" event when updateRange is called', () => { + it('emits "onRangeChange" event when updateRange is called', () => { const wrapper = shallowMount(ReportFiltersDateRange, mountParams); const selectedRange = DATE_RANGE_OPTIONS.LAST_7_DAYS; wrapper.vm.updateRange(selectedRange); - expect(wrapper.emitted('on-range-change')).toBeTruthy(); - expect(wrapper.emitted('on-range-change')[0]).toEqual([selectedRange]); + expect(wrapper.emitted('onRangeChange')).toBeTruthy(); + expect(wrapper.emitted('onRangeChange')[0]).toEqual([selectedRange]); }); it('initializes options correctly', () => { const wrapper = shallowMount(ReportFiltersDateRange, mountParams); - const expectedOptions = Object.values(DATE_RANGE_OPTIONS).map(option => ({ - ...option, - name: option.translationKey, - })); + const expectedIds = Object.values(DATE_RANGE_OPTIONS).map( + option => option.id + ); + const receivedIds = wrapper.vm.options.map(option => option.id); - expect(wrapper.vm.options).toEqual(expectedOptions); + expect(receivedIds).toEqual(expectedIds); }); it('initializes selectedOption correctly', () => { const wrapper = shallowMount(ReportFiltersDateRange, mountParams); - const expectedSelectedOption = Object.values(DATE_RANGE_OPTIONS)[0]; - expect(wrapper.vm.selectedOption).toEqual({ - ...expectedSelectedOption, - name: expectedSelectedOption.translationKey, - }); + const expectedId = Object.values(DATE_RANGE_OPTIONS)[0].id; + expect(wrapper.vm.selectedOption.id).toBe(expectedId); }); });