Files
nocodb/packages/nc-gui/components/shared-view/Grid.vue
Anbarasu bd00e8e243 feat: groupby aggregation (#8838)
* feat: groupby aggregation

* fix: reload data

* fix(nc-gui): fix: better aggregate update condition

* fix(nc-gui): limit api aggregation calls

* fix(nocodb): aggregation api refactor feat(nocodb): bulk aggregate apis

* feat(nocodb): update swagger.json fix(nocodb): parse aggregation json feat(nocodb): public endpoint

* fix: get first res

* fix: swagger bugs

* fix: integrate bulk aggregation

* fix(nc-gui): bulk agg not triggering in shared view

* fix(nc-gui): avoid agg load inside table in groupby

* fix(nc-gui): issue when key is decimal

* fix(nc-gui): trigger aggregate before ui update

* fix(nc-gui): update triggering bulk api calls

* fix(nc-gui): custom label in pagination

* test: unit tests

* chore: move to ee

* fix: gui separation

* fix: pagination gui

* fix: summary flicker

* fix: pr review

* fix: groupby pagination

* fix: aggregation alias handling

* fix:  agg not updating

* fix: expanded-form broken

* fix: unit tests

* fix: playwright tests

* fix: playwright tests

* fix: user select, groupby tests

* fix: groupby inner pagination alignment

* fix: stddev sqlite value

* fix: review changes

* fix: ui flicker
2024-07-01 17:02:41 +05:30

63 lines
1.4 KiB
Vue

<script lang="ts" setup>
const { sharedView, meta, nestedFilters } = useSharedView()
const { signedIn } = useGlobal()
const { loadProject } = useBase()
const { isLocked, xWhere } = useProvideSmartsheetStore(sharedView, meta, true, ref([]), nestedFilters)
useProvideKanbanViewStore(meta, sharedView)
useProvideCalendarViewStore(meta, sharedView)
const reloadEventHook = createEventHook()
const columns = ref(meta.value?.columns || [])
provide(ReloadViewDataHookInj, reloadEventHook)
provide(ReadonlyInj, ref(true))
provide(MetaInj, meta)
provide(ActiveViewInj, sharedView)
provide(IsPublicInj, ref(true))
provide(IsLockedInj, isLocked)
provide(ReloadAggregateHookInj, createEventHook())
useProvideViewColumns(sharedView, meta, () => reloadEventHook?.trigger(), true)
useProvideViewGroupBy(sharedView, meta, xWhere, true)
useProvideSmartsheetLtarHelpers(meta)
if (signedIn.value) {
try {
await loadProject()
} catch (e: any) {
console.error(e)
message.error(await extractSdkResponseErrorMsg(e))
}
}
watch(
() => meta.value?.columns,
() => (columns.value = meta.value?.columns || []),
{
immediate: true,
},
)
</script>
<template>
<div class="nc-container flex flex-col h-full">
<LazySmartsheetToolbar />
<LazySmartsheetGrid />
</div>
</template>
<style scoped>
.nc-container {
height: 100%;
padding-bottom: 0.5rem;
flex: 1 1 100%;
}
</style>