Skip to content

Commit e7b69d8

Browse files
remove updateQuery
1 parent db000a7 commit e7b69d8

File tree

1 file changed

+60
-17
lines changed

1 file changed

+60
-17
lines changed

app/src/pages/tickets.vue

Lines changed: 60 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ div
66
.q-pa-md
77
q-table(
88
:rows="data?.data" :rows-per-page-options="[5, 10, 15]" :loading="pending" :columns="columns" row-key="id" :visible-columns="visibleColumns"
9-
v-model:pagination="pagination" @update:pagination="paginationQuery($event)" title="Tickets" @request="onRequest"
9+
v-model:pagination="pagination" title="Tickets" @request="onRequest"
1010
rows-per-page-label="Lignes par page" no-data-label="Aucune donnée" loading-label="Chargement..." no-results-label="Aucun résultat"
1111
:pagination-label="(firstRowIndex, endRowIndex, totalRowsNumber) => `${firstRowIndex}-${endRowIndex} sur ${totalRowsNumber} lignes`"
1212
)
@@ -29,7 +29,7 @@ div
2929
<script lang="ts" setup>
3030
import { ref } from "vue";
3131
import { useApiFetch } from "../composables/useApiFetch";
32-
import { computed, useDayjs } from "#imports";
32+
import { computed, useDayjs, onMounted } from "#imports";
3333
import type { QTableProps } from "quasar";
3434
import type { schemas } from "../composables/useApiFetch";
3535
import { useRoute, useRouter } from "nuxt/app";
@@ -39,6 +39,28 @@ type Ticket = schemas['TicketDto']
3939
const daysjs = useDayjs()
4040
const route = useRoute()
4141
const router = useRouter()
42+
43+
44+
onMounted(() => {
45+
pagination.value!.rowsNumber = getTotalRowsNumber.value
46+
const query = { ...route.query }
47+
const limit = query.limit
48+
const skip = query.skip
49+
pagination.value!.rowsPerPage = parseInt(limit as string)
50+
pagination.value!.page = parseInt(skip as string) / parseInt(limit as string) + 1
51+
52+
let sortKey = 'updatedAt'
53+
let sortDirection = 'desc'
54+
for (const key in query) {
55+
if (key.startsWith('sort')) {
56+
sortKey = key.replace('sort[', '').replace(']', '')
57+
sortDirection = query[key] === 'desc' ? 'desc' : 'asc'
58+
}
59+
}
60+
pagination.value!.sortBy = sortKey
61+
pagination.value!.descending = sortDirection === 'desc'
62+
})
63+
4264
const columns = ref<QTableProps['columns']>([
4365
{
4466
name: 'sequence',
@@ -142,29 +164,50 @@ const pagination = ref<QTableProps['pagination']>({
142164
page: 1,
143165
rowsPerPage: 10,
144166
rowsNumber: 10,
145-
sortBy: 'sequence',
146-
descending: false
167+
sortBy: 'updatedAt',
168+
descending: true
147169
})
148170
149-
const onRequest = (request: any) => {
150-
const newPagination = { ...request.pagination }
151-
newPagination.rowsNumber = getTotalRowsNumber.value
152-
pagination.value = newPagination
153-
paginationQuery(newPagination)
171+
const onRequest = (props: any) => {
172+
const { page, rowsPerPage, sortBy, descending } = props.pagination
173+
pagination.value!.rowsNumber = getTotalRowsNumber.value
174+
pagination.value!.page = page
175+
pagination.value!.rowsPerPage = rowsPerPage
176+
pagination.value!.sortBy = sortBy
177+
pagination.value!.descending = descending
178+
paginationQuery()
154179
}
155180
156-
const paginationQuery = (pagination: QTableProps['pagination']) => {
157-
const skip = (pagination?.page! - 1) * pagination?.rowsPerPage!
158-
const limit = pagination?.rowsPerPage!
181+
const paginationQuery = () => {
182+
const query = removeSortKey()
183+
const skip = `${(pagination.value?.page! - 1) * pagination.value?.rowsPerPage!}`
184+
const limit = `${pagination.value?.rowsPerPage!}`
185+
let sortBy = pagination.value?.sortBy!
186+
if (sortBy === null) {
187+
sortBy = 'updatedAt'
188+
}
189+
190+
const sortKey = `sort[${sortBy}]`
191+
const sortDirection = pagination.value?.descending! ? `desc` : `asc`
192+
193+
query[sortKey] = sortDirection
194+
query['skip'] = skip
195+
query['limit'] = limit
159196
router.push({
160-
query: {
161-
...route.query,
162-
skip,
163-
limit,
164-
}
197+
query
165198
})
166199
}
167200
201+
const removeSortKey = () => {
202+
const query = { ...route.query }
203+
for (const key in query) {
204+
if (key.startsWith('sort[')) {
205+
delete query[key]
206+
}
207+
}
208+
return query
209+
}
210+
168211
const fieldsList = computed(() => {
169212
return columns.value!.reduce(
170213
(acc: { name: string, label: string, type?: string }[], column) => {

0 commit comments

Comments
 (0)