forked from tsai/budibase
5 changed files with 103 additions and 9 deletions
@ -0,0 +1,48 @@ |
|||
<script> |
|||
import fetchData from "./fetchData.js" |
|||
import { isEmpty } from "lodash/fp" |
|||
import { onMount } from "svelte" |
|||
|
|||
import AgGrid from "@budibase/svelte-ag-grid" |
|||
|
|||
export let datasource = {} |
|||
|
|||
let dataLoaded = false |
|||
let data |
|||
let columnDefs |
|||
|
|||
onMount(async () => { |
|||
if (!isEmpty(datasource)) { |
|||
data = await fetchData(datasource) |
|||
if (data) { |
|||
// Construct column definitions |
|||
columnDefs = Object.keys(data[0]).map(key => { |
|||
return { |
|||
headerName: key.charAt(0).toUpperCase() + key.slice(1), // Capitalise first letter |
|||
field: key, |
|||
hide: shouldHideField(key), |
|||
sortable: true, |
|||
editable: true, |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
dataLoaded = true |
|||
}) |
|||
|
|||
const shouldHideField = name => { |
|||
if (name.startsWith("_")) return true |
|||
// always 'record' |
|||
if (name === "type") return true |
|||
// tables are always tied to a single modelId, this is irrelevant |
|||
if (name === "modelId") return true |
|||
|
|||
return false |
|||
} |
|||
</script> |
|||
|
|||
{#if dataLoaded} |
|||
<AgGrid bind:data {columnDefs} /> |
|||
{/if} |
|||
|
|||
<pre>{JSON.stringify(data, 0, 2)}</pre> |
|||
Loading…
Reference in new issue