Update buttons for legacy views
This commit is contained in:
parent
b76a0b6e89
commit
d316ba71e1
|
@ -1,80 +0,0 @@
|
||||||
<script>
|
|
||||||
import { API } from "api"
|
|
||||||
import { tables } from "stores/builder"
|
|
||||||
|
|
||||||
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"
|
|
||||||
import { notifications } from "@budibase/bbui"
|
|
||||||
import { ROW_EXPORT_FORMATS } from "constants/backend"
|
|
||||||
|
|
||||||
export let view = {}
|
|
||||||
|
|
||||||
let hideAutocolumns = true
|
|
||||||
let data = []
|
|
||||||
let loading = false
|
|
||||||
|
|
||||||
$: name = view.name
|
|
||||||
$: schema = view.schema
|
|
||||||
$: calculation = view.calculation
|
|
||||||
|
|
||||||
$: supportedFormats = Object.values(ROW_EXPORT_FORMATS).filter(key => {
|
|
||||||
if (calculation && key === ROW_EXPORT_FORMATS.JSON_WITH_SCHEMA) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
|
|
||||||
// Fetch rows for specified view
|
|
||||||
$: fetchViewData(name, view.field, view.groupBy, view.calculation)
|
|
||||||
|
|
||||||
async function fetchViewData(name, field, groupBy, calculation) {
|
|
||||||
loading = true
|
|
||||||
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) {
|
|
||||||
loading = false
|
|
||||||
return
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
data = await API.fetchViewData({
|
|
||||||
name,
|
|
||||||
calculation,
|
|
||||||
field,
|
|
||||||
groupBy,
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
notifications.error("Error fetching view data")
|
|
||||||
}
|
|
||||||
loading = false
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<Table
|
|
||||||
title={decodeURI(name)}
|
|
||||||
{schema}
|
|
||||||
tableId={view.tableId}
|
|
||||||
{data}
|
|
||||||
{loading}
|
|
||||||
rowCount={10}
|
|
||||||
allowEditing={false}
|
|
||||||
bind:hideAutocolumns
|
|
||||||
>
|
|
||||||
<ViewFilterButton {view} />
|
|
||||||
<CalculateButton {view} />
|
|
||||||
{#if view.calculation}
|
|
||||||
<GroupByButton {view} />
|
|
||||||
{/if}
|
|
||||||
<ManageAccessButton resourceId={decodeURI(name)} />
|
|
||||||
<HideAutocolumnButton bind:hideAutocolumns />
|
|
||||||
<ExportButton view={view.name} formats={supportedFormats} />
|
|
||||||
</Table>
|
|
|
@ -115,9 +115,7 @@
|
||||||
{#if relationshipsEnabled}
|
{#if relationshipsEnabled}
|
||||||
<GridRelationshipButton />
|
<GridRelationshipButton />
|
||||||
{/if}
|
{/if}
|
||||||
{#if isUsersTable}
|
{#if !isUsersTable}
|
||||||
<EditRolesButton />
|
|
||||||
{:else}
|
|
||||||
<GridImportButton />
|
<GridImportButton />
|
||||||
{/if}
|
{/if}
|
||||||
<GridExportButton />
|
<GridExportButton />
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
<script>
|
|
||||||
import { onMount } from "svelte"
|
|
||||||
import { views, viewsV2 } from "stores/builder"
|
|
||||||
import { redirect } from "@roxi/routify"
|
|
||||||
|
|
||||||
onMount(async () => {
|
|
||||||
if ($viewsV2.selected) {
|
|
||||||
$redirect(`./v2/${$viewsV2.selected.id}`)
|
|
||||||
} else if ($viewsV2.list?.length) {
|
|
||||||
$redirect(`./v2/${$viewsV2.list[0].id}`)
|
|
||||||
} else if ($views.selected) {
|
|
||||||
$redirect(`./${encodeURIComponent($views.selected?.name)}`)
|
|
||||||
} else if ($views.list?.length) {
|
|
||||||
$redirect(`./${encodeURIComponent($views.list[0].name)}`)
|
|
||||||
} else {
|
|
||||||
$redirect("../")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
</script>
|
|
|
@ -1,24 +0,0 @@
|
||||||
<script>
|
|
||||||
import { views, builderStore } from "stores/builder"
|
|
||||||
import { syncURLToState } from "helpers/urlStateSync"
|
|
||||||
import * as routify from "@roxi/routify"
|
|
||||||
import { onDestroy } from "svelte"
|
|
||||||
|
|
||||||
$: name = $views.selectedViewName
|
|
||||||
$: builderStore.selectResource(name)
|
|
||||||
|
|
||||||
const stopSyncing = syncURLToState({
|
|
||||||
urlParam: "viewName",
|
|
||||||
stateKey: "selectedViewName",
|
|
||||||
validate: name => $views.list?.some(view => view.name === name),
|
|
||||||
update: views.select,
|
|
||||||
fallbackUrl: "../../",
|
|
||||||
store: views,
|
|
||||||
routify,
|
|
||||||
decode: decodeURIComponent,
|
|
||||||
})
|
|
||||||
|
|
||||||
onDestroy(stopSyncing)
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<slot />
|
|
|
@ -1,18 +0,0 @@
|
||||||
<script>
|
|
||||||
import ViewDataTable from "components/backend/DataTable/ViewDataTable.svelte"
|
|
||||||
import { views } from "stores/builder"
|
|
||||||
|
|
||||||
$: selectedView = $views.selected
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{#if selectedView}
|
|
||||||
<ViewDataTable view={selectedView} />
|
|
||||||
{:else}<i>Create your first table to start building</i>{/if}
|
|
||||||
|
|
||||||
<style>
|
|
||||||
i {
|
|
||||||
font-size: var(--font-size-m);
|
|
||||||
color: var(--grey-4);
|
|
||||||
margin-top: 2px;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<script>
|
|
||||||
import { redirect } from "@roxi/routify"
|
|
||||||
|
|
||||||
$redirect("../")
|
|
||||||
</script>
|
|
|
@ -1,12 +1,82 @@
|
||||||
<script>
|
<script>
|
||||||
import ViewDataTable from "components/backend/DataTable/ViewDataTable.svelte"
|
|
||||||
import { views } from "stores/builder"
|
import { views } from "stores/builder"
|
||||||
|
import { API } from "api"
|
||||||
|
import { tables } from "stores/builder"
|
||||||
|
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"
|
||||||
|
import { notifications } from "@budibase/bbui"
|
||||||
|
import { ROW_EXPORT_FORMATS } from "constants/backend"
|
||||||
|
|
||||||
$: selectedView = $views.selected
|
let hideAutocolumns = true
|
||||||
|
let data = []
|
||||||
|
let loading = false
|
||||||
|
|
||||||
|
$: view = $views.selected
|
||||||
|
$: name = view.name
|
||||||
|
$: schema = view.schema
|
||||||
|
$: calculation = view.calculation
|
||||||
|
$: supportedFormats = Object.values(ROW_EXPORT_FORMATS).filter(key => {
|
||||||
|
if (calculation && key === ROW_EXPORT_FORMATS.JSON_WITH_SCHEMA) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
|
// Fetch rows for specified view
|
||||||
|
$: fetchViewData(name, view.field, view.groupBy, view.calculation)
|
||||||
|
|
||||||
|
async function fetchViewData(name, field, groupBy, calculation) {
|
||||||
|
loading = true
|
||||||
|
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) {
|
||||||
|
loading = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
data = await API.fetchViewData({
|
||||||
|
name,
|
||||||
|
calculation,
|
||||||
|
field,
|
||||||
|
groupBy,
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
notifications.error("Error fetching view data")
|
||||||
|
}
|
||||||
|
loading = false
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if selectedView}
|
{#if view}
|
||||||
<ViewDataTable view={selectedView} />
|
<Table
|
||||||
|
title={decodeURI(name)}
|
||||||
|
{schema}
|
||||||
|
tableId={view.tableId}
|
||||||
|
{data}
|
||||||
|
{loading}
|
||||||
|
rowCount={10}
|
||||||
|
allowEditing={false}
|
||||||
|
bind:hideAutocolumns
|
||||||
|
>
|
||||||
|
<ViewFilterButton {view} />
|
||||||
|
<CalculateButton {view} />
|
||||||
|
{#if view.calculation}
|
||||||
|
<GroupByButton {view} />
|
||||||
|
{/if}
|
||||||
|
<ManageAccessButton resourceId={decodeURI(name)} />
|
||||||
|
<HideAutocolumnButton bind:hideAutocolumns />
|
||||||
|
<ExportButton view={view.name} formats={supportedFormats} />
|
||||||
|
</Table>
|
||||||
{:else}<i>Create your first table to start building</i>{/if}
|
{:else}<i>Create your first table to start building</i>{/if}
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|
Loading…
Reference in New Issue