in seatunnel-ui/src/views/virtual-tables/list/use-table.ts [24:112]
export function useTable() {
const state = reactive({
params: {
pluginName: null,
datasourceName: null
},
list: [],
loading: false,
page: 1,
pageSize: 10,
itemCount: 0
})
const route = useRoute()
const router = useRouter()
const getList = async () => {
const result = await getVirtualTableList({
pageNo: state.page,
pageSize: state.pageSize,
pluginName: state.params.pluginName || '',
datasourceName: state.params.datasourceName || '',
})
state.list = result?.data
state.itemCount = result?.total
}
const updateList = () => {
if (state.list.length === 1 && state.page > 1) {
--state.page
}
getList()
}
const onDelete = async (id: string) => {
await deleteVirtualTable(id)
updateList()
}
const initSearch = () => {
const { pluginName, datasourceName } = route.query
if (pluginName) {
state.params.pluginName = pluginName as any
if (datasourceName) {
state.params.datasourceName = datasourceName as any
}
}
}
const onSearch = () => {
const query = (
state.params.pluginName ? { pluginName: state.params.pluginName } : null
) as any
if (state.params.datasourceName) {
query.datasourceName = state.params.datasourceName
}
if (query) {
router.replace({ query: { tab: route.query.tab, ...query } })
}
state.page = 1
getList()
}
const onPageChange = (page: number) => {
state.page = page
getList()
}
const onPageSizeChange = (pageSize: number) => {
state.page = 1
state.pageSize = pageSize
getList()
}
onMounted(() => {
initSearch()
onSearch()
})
return {
state,
onSearch,
onDelete,
onPageChange,
onPageSizeChange
}
}