mirror of https://github.com/Budibase/budibase.git
nocodelowcodelow-codedockerdocker-composeinternal-projectinternal-toolinternal-toolslow-code-developmentlow-code-development-platformopensourceselfhostedweb-devweb-developmentweb-development-toolswebdevwebdevelopmentworkflow-automationautomationdeveloper-tools
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.
72 lines
1.9 KiB
72 lines
1.9 KiB
<script>
|
|
import api from "builderStore/api"
|
|
import { tables } from "stores/backend"
|
|
|
|
import Table from "./Table.svelte"
|
|
import CalculateButton from "./buttons/CalculateButton.svelte"
|
|
import GroupByButton from "./buttons/GroupByButton.svelte"
|
|
import ViewFilterButton from "./buttons/ViewFilterButton.svelte"
|
|
import ExportButton from "./buttons/ExportButton.svelte"
|
|
import ManageAccessButton from "./buttons/ManageAccessButton.svelte"
|
|
import HideAutocolumnButton from "./buttons/HideAutocolumnButton.svelte"
|
|
|
|
export let view = {}
|
|
|
|
let hideAutocolumns = true
|
|
let data = []
|
|
let loading = false
|
|
let type = "internal"
|
|
|
|
$: name = view.name
|
|
|
|
// Fetch rows for specified view
|
|
$: {
|
|
loading = true
|
|
fetchViewData(name, view.field, view.groupBy, view.calculation)
|
|
}
|
|
|
|
async function fetchViewData(name, field, groupBy, calculation) {
|
|
const _tables = $tables.list
|
|
const allTableViews = _tables.map(table => table.views)
|
|
const thisView = allTableViews.filter(
|
|
views => views != null && views[name] != null
|
|
)[0]
|
|
|
|
// don't fetch view data if the view no longer exists
|
|
if (!thisView) {
|
|
return
|
|
}
|
|
const params = new URLSearchParams()
|
|
if (calculation) {
|
|
params.set("field", field)
|
|
params.set("calculation", calculation)
|
|
}
|
|
if (groupBy) {
|
|
params.set("group", groupBy)
|
|
}
|
|
const QUERY_VIEW_URL = `/api/views/${name}?${params}`
|
|
const response = await api.get(QUERY_VIEW_URL)
|
|
data = await response.json()
|
|
loading = false
|
|
}
|
|
</script>
|
|
|
|
<Table
|
|
title={decodeURI(name)}
|
|
schema={view.schema}
|
|
tableId={view.tableId}
|
|
{data}
|
|
{loading}
|
|
{type}
|
|
allowEditing={!view?.calculation}
|
|
bind:hideAutocolumns
|
|
>
|
|
<ViewFilterButton {view} />
|
|
<CalculateButton {view} />
|
|
{#if view.calculation}
|
|
<GroupByButton {view} />
|
|
{/if}
|
|
<ManageAccessButton resourceId={decodeURI(name)} />
|
|
<HideAutocolumnButton bind:hideAutocolumns />
|
|
<ExportButton view={view.name} />
|
|
</Table>
|
|
|