This commit is contained in:
vadim committed 2026-09-24 15:13:12 +03:00
1 parent fcec12e5ba
commit 13f6ad35c5
5 files changed
+4 -101

No files matched your search

-1
View File
@@ -8,7 +8,6 @@ import IssueDetails from '@/components/IssueDetails.vue'
import IssueCreate from '@/components/IssueCreate.vue'
import type { Issue } from '@/api/issue.api.ts'
import IssuesListElement from '@/components/IssuesListElement.vue'
import IssueFilter from '@/components/IssueFilter.vue'
import IssueStats from '@/components/IssueStats.vue'
const issueStore = useIssueStore()
+1 -1
View File
@@ -1,5 +1,5 @@
<script setup lang="ts">
import { computed, onMounted, onUnmounted, ref } from 'vue'
import { computed, onUnmounted, ref } from 'vue'
const cards = ref<string[]>([])
+2 -93
View File
@@ -1,96 +1,5 @@
<script setup lang="ts">
import { ref, watch, watchEffect } from 'vue'
import { type Item, useIssueStore } from '@/stores/issue'
import { useRoute, useRouter } from 'vue-router'
const issueStore = useIssueStore()
const route = useRoute()
const router = useRouter()
const itemsPerPage = ref(10)
const page = ref(1)
const text = ref<string | null>(null)
const serverItems = ref<Item[]>([])
const loading = ref(true)
const totalItems = ref(0)
async function fetch() {
syncQuery()
loading.value = true
const res = await issueStore.list({
page: page.value,
itemsPerPage: itemsPerPage.value,
text: text.value,
})
serverItems.value = res.items
totalItems.value = res.total
loading.value = false
}
async function loadItems(params: { page: number; itemsPerPage: number; sortBy?: unknown }) {
page.value = params.page
itemsPerPage.value = params.itemsPerPage
await fetch()
}
async function onSearch() {
page.value = 1
await fetch()
}
function syncQuery() {
const query: Record<string, string> = {
page: String(page.value),
}
if (text.value) query.text = text.value
router.replace({ query })
}
watch(
() => route.query,
(query) => {
page.value = query.page ? Number(query.page) : 1
text.value = query.text ? String(query.text) : null
},
{ immediate: true },
)
</script>
<script setup lang="ts"></script>
<template>
<div class="d-flex flex-column ga-2">
<v-text-field
v-model="text"
clearable
variant="outlined"
density="compact"
placeholder="Search name..."
hide-details
@keydown.enter.prevent="onSearch"
@click:clear="onSearch"
/>
<v-data-table-server
density="compact"
hide-default-header
hover
:headers="[
{ key: 'key', title: 'key' },
{ key: 'text', title: 'text' },
{ key: 'status', title: 'status' },
{ key: 'priority', title: 'priority' },
{ key: 'assignee', title: 'assignee' },
]"
:items-per-page="itemsPerPage"
:items-per-page-options="[itemsPerPage]"
:page="page"
:items="serverItems"
:items-length="totalItems"
item-value="text"
@update:options="loadItems"
/>
</div>
<div class="">reports</div>
</template>