diff options
author | Santo Cariotti <santo@dcariotti.me> | 2022-10-15 11:33:38 +0200 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2022-10-15 11:33:38 +0200 |
commit | 698d6cc72ec6a117fddc1cbd5a7fabb5884ed4df (patch) | |
tree | 25e6829694d4d1c4dc6028d4812e75efce7f43e8 /pages/admin | |
parent | d76cde6dfc5da5b6a4d7dde640f7645800185cf5 (diff) |
Filter warnings by not resolved
Diffstat (limited to 'pages/admin')
-rw-r--r-- | pages/admin/reports.vue | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/pages/admin/reports.vue b/pages/admin/reports.vue index 513649d..a9939ad 100644 --- a/pages/admin/reports.vue +++ b/pages/admin/reports.vue @@ -5,6 +5,16 @@ div admin-sidebar section#tables.col-span-5 + input#notResolved.form-check-input.h-4.w-4.border.border-gray-300.rounded-sm.bg-white.transition.duration-200.mt-1.align-top.bg-no-repeat.bg-center.bg-contain.float-left.mr-2.cursor-pointer( + class="checked:bg-blue-600 checked:border-blue-600 focus:outline-none" + type="checkbox" + name="notResolved" + v-model="notResolved" + @change="filter" + ) + label.form-check-label.inline-block.text-gray-800(for="notResolved") + | Show only not resolved reports + v-table( :keys="['id', 'model_id', 'created', 'updated', 'user', 'resolved', 'note', 'admin_note']" :fields="warnings" @@ -30,6 +40,7 @@ export default { return { page: 0, pages: 0, + notResolved: false, }; }, components: { @@ -37,6 +48,16 @@ export default { pagination: Pagination, "v-table": VTable, }, + methods: { + filter() { + if (this.notResolved) { + window.location.href = + "/admin/reports?page=" + this.page + "¬_resolved"; + } else { + window.location.href = "/admin/reports?page=" + this.page; + } + }, + }, async mounted() { await this.$store.dispatch("auth/findMe"); @@ -45,9 +66,20 @@ export default { } this.page = this.$route.query.page ?? 0; - this.$store.dispatch("warnings/getWarnings", this.page).then(() => { - this.pages = Math.ceil(this.count / 20); - }); + this.notResolved = Object.keys(this.$route.query).includes("not_resolved"); + + // FIX: pagination for filtered warnings + if (this.notResolved) { + this.$store + .dispatch("warnings/filterWarnings", { page: this.page }) + .then(() => { + this.pages = Math.ceil(this.count / 20); + }); + } else { + this.$store.dispatch("warnings/getWarnings", this.page).then(() => { + this.pages = Math.ceil(this.count / 20); + }); + } }, }; </script> |