多维表格
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.4 KiB

import type { ComputedRef, Ref } from 'vue'
import type { GalleryType, TableType, ViewType } from 'nocodb-sdk'
export function useGalleryViewData(
_meta: Ref<TableType | undefined> | ComputedRef<TableType | undefined>,
viewMeta: Ref<ViewType | undefined> | ComputedRef<(ViewType & { id: string }) | undefined>,
where?: ComputedRef<string | undefined>,
) {
const isPublic = inject(IsPublicInj, ref(false))
const { $api } = useNuxtApp()
const tablesStore = useTablesStore()
const { activeTable } = storeToRefs(tablesStore)
const { sharedView } = useSharedView()
const meta = computed(() => _meta.value || activeTable.value)
const viewData = ref<GalleryType | undefined>()
const {
cachedRows,
syncCount,
clearCache,
deleteRow,
loadData,
navigateToSiblingRow,
totalRows,
fetchChunk,
chunkStates,
isFirstRow,
isLastRow,
} = useInfiniteData({
meta,
viewMeta,
callbacks: {},
where,
})
async function loadGalleryData() {
if (!viewMeta?.value?.id) return
viewData.value = isPublic.value ? (sharedView.value?.view as GalleryType) : await $api.dbView.galleryRead(viewMeta.value.id)
}
return {
cachedRows,
deleteRow,
loadData,
navigateToSiblingRow,
loadGalleryData,
viewData,
totalRows,
clearCache,
chunkStates,
syncCount,
fetchChunk,
isFirstRow,
isLastRow,
}
}