forked from tsai/budibase
6 changed files with 125 additions and 10 deletions
@ -0,0 +1,74 @@ |
|||||
|
<script> |
||||
|
import { onMount } from "svelte" |
||||
|
|
||||
|
export let _bb |
||||
|
export let _instanceId |
||||
|
export let model |
||||
|
export let layout = "list" |
||||
|
|
||||
|
let headers = [] |
||||
|
let store = _bb.store |
||||
|
let target |
||||
|
|
||||
|
async function fetchData() { |
||||
|
if (!model || !model.length) return |
||||
|
|
||||
|
const FETCH_RECORDS_URL = `/api/${_instanceId}/views/all_${model}` |
||||
|
const response = await _bb.api.get(FETCH_RECORDS_URL) |
||||
|
if (response.status === 200) { |
||||
|
const json = await response.json() |
||||
|
|
||||
|
_bb.attachChildren(target, { |
||||
|
hydrate: false, |
||||
|
context: json, |
||||
|
}) |
||||
|
} else { |
||||
|
throw new Error("Failed to fetch records.", response) |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
$: if (model) fetchData() |
||||
|
|
||||
|
onMount(async () => { |
||||
|
await fetchData() |
||||
|
}) |
||||
|
</script> |
||||
|
|
||||
|
<section class:grid={layout === 'grid'} class:list={layout === 'list'}> |
||||
|
<div class="data-card" bind:this={target}> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<style> |
||||
|
.list { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
font-family: Roboto; |
||||
|
} |
||||
|
|
||||
|
.grid { |
||||
|
display: grid; |
||||
|
grid-template-columns: 1fr 1fr 1fr; |
||||
|
} |
||||
|
|
||||
|
ul { |
||||
|
list-style-type: none; |
||||
|
} |
||||
|
|
||||
|
li { |
||||
|
margin: 5px 0 5px 0; |
||||
|
} |
||||
|
|
||||
|
.data-card { |
||||
|
border: 1px solid #ccc; |
||||
|
border-radius: 5px; |
||||
|
padding: 10px; |
||||
|
} |
||||
|
|
||||
|
.data-key { |
||||
|
font-weight: bold; |
||||
|
font-size: 20px; |
||||
|
text-transform: capitalize; |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue