From 4fae48c151043396865be226769e14811fbd4b75 Mon Sep 17 00:00:00 2001 From: Daria Golova Date: Mon, 5 Dec 2022 14:04:07 +0300 Subject: [PATCH] =?UTF-8?q?WIP=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/clients/components/ClientsTable.vue | 55 +++++++++++++------ .../clients/components/ClientsTableHat.vue | 10 +++- .../clients/components/ClientsTableRow.vue | 2 +- 3 files changed, 48 insertions(+), 19 deletions(-) diff --git a/src/pages/clients/components/ClientsTable.vue b/src/pages/clients/components/ClientsTable.vue index 8d6b1aa..fde1ffe 100644 --- a/src/pages/clients/components/ClientsTable.vue +++ b/src/pages/clients/components/ClientsTable.vue @@ -3,6 +3,8 @@ clients-table-hat( :is-open-actions="marked.length", :open-form="openForm", + :clearing-text-search="clearingTextSearch", + :change-clearing-text-search="changeClearingTextSearch", @search="filterDataClients", ) .flex.flex-col.h-full.gap-y-2.table-container.w-full.mt-8.mb-3 @@ -75,7 +77,8 @@ export default { dataClients: [], currentTablePage: 1, limit: 14, - count: 0, + clientsCount: 0, + filteredClientsCount: 0, textSearch: "", paginationInfo: { currentPage: 0, @@ -84,15 +87,13 @@ export default { showModal: false, deletedClientId: "", deletedRowId: "", + clearingTextSearch: false, }; }, - computed: { - pageCount() { - return Math.ceil(this.count / this.limit); - }, - }, methods: { updateDataClient() { + if (this.textSearch) this.filteredClientsCount -= 1; + else this.clientsCount -= 1; if (this.dataClients.find(({ id }) => id === this.deletedRowId)) { if (this.dataClients.length === 1) this.currentTablePage -= 1; else this.fetchDataClients(); @@ -100,11 +101,18 @@ export default { }, saveDataClients(data) { this.dataClients = data.results; - this.count = data.count; + }, + saveClientsCount(data) { + if (!this.clientsCount) this.clientsCount = data.count; + }, + saveFilteredClientsCount(data) { + if (!this.filteredClientsCoun) this.filteredClientsCount = data.count; }, filterDataClients(text) { - if (text) this.textSearch = text; - else this.textSearch = ""; + if (text) { + this.textSearch = text; + this.filteredClientsCount = 0; + } else this.textSearch = ""; if (this.currentTablePage !== 1) this.currentTablePage = 1; else { this.fetchDataClients(); @@ -118,18 +126,28 @@ export default { this.limit }&offset=${(this.currentTablePage - 1) * this.limit}` ); + this.saveDataClients(response); + this.saveFilteredClientsCount(response); + this.paginationInfo = { + currentPage: this.currentTablePage, + length: this.calculatePageCount(this.filteredClientsCount), + }; } else { response = await fetchWrapper.get( `general/person/?limit=${this.limit}&offset=${ (this.currentTablePage - 1) * this.limit }` ); + this.saveDataClients(response); + this.saveClientsCount(response); + this.paginationInfo = { + currentPage: this.currentTablePage, + length: this.calculatePageCount(this.clientsCount), + }; } - this.saveDataClients(response); - this.paginationInfo = { - currentPage: this.currentTablePage, - length: this.pageCount, - }; + }, + calculatePageCount(count) { + return Math.ceil(count / this.limit); }, selectedCheck(e) { if (e.target.id === "checkbox") { @@ -178,14 +196,17 @@ export default { clearDeletedClientId() { this.deletedClientId = ""; }, + changeClearingTextSearch() { + this.clearingTextSearch = false; + }, }, watch: { updatedClients() { if (this.updatedClients === true) { this.textSearch = ""; - this.fetchDataClients().then( - () => (this.currentTablePage = this.pageCount) - ); + this.clearingTextSearch = true; + this.clientsCount += 1; + this.currentTablePage = this.calculatePageCount(this.clientsCount); this.$emit("reset-updated-clients"); } }, diff --git a/src/pages/clients/components/ClientsTableHat.vue b/src/pages/clients/components/ClientsTableHat.vue index 7c485de..73bdbb3 100644 --- a/src/pages/clients/components/ClientsTableHat.vue +++ b/src/pages/clients/components/ClientsTableHat.vue @@ -40,6 +40,8 @@ export default { props: { openForm: Function, isOpenActions: Number, + clearingTextSearch: Boolean, + changeClearingTextSearch: Function, }, data() { return { @@ -57,9 +59,15 @@ export default { }, watch: { searchClient() { - if (!this.searchClient) { + if (!this.searchClient && !this.clearingTextSearch) { this.$emit("search"); } + if (this.clearingTextSearch) this.changeClearingTextSearch(); + }, + clearingTextSearch() { + if (this.clearingTextSearch) { + this.searchClient = ""; + } }, }, }; diff --git a/src/pages/clients/components/ClientsTableRow.vue b/src/pages/clients/components/ClientsTableRow.vue index 692e61f..f68cf5b 100644 --- a/src/pages/clients/components/ClientsTableRow.vue +++ b/src/pages/clients/components/ClientsTableRow.vue @@ -191,7 +191,7 @@ export default { this.timer = null; }, startTimer() { - this.countdown = 30; + this.countdown = 10; this.timer = setInterval(() => { this.changeCountdown(); }, 1000);