1
0
Fork 0
mirror of synced 2024-06-03 02:55:14 +12:00
budibase/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte

65 lines
1.8 KiB
Svelte
Raw Normal View History

2020-12-19 07:19:43 +13:00
<script>
import { onMount } from "svelte"
2021-03-18 00:40:24 +13:00
import { goto } from "@roxi/routify"
2021-04-01 22:29:47 +13:00
import { database, datasources, queries } from "stores/backend"
2020-12-19 07:19:43 +13:00
import EditDatasourcePopover from "./popovers/EditDatasourcePopover.svelte"
2021-01-07 01:28:51 +13:00
import EditQueryPopover from "./popovers/EditQueryPopover.svelte"
2020-12-19 07:19:43 +13:00
import NavItem from "components/common/NavItem.svelte"
2021-01-13 05:49:11 +13:00
import ICONS from "./icons"
2020-12-19 07:19:43 +13:00
function selectDatasource(datasource) {
datasources.select(datasource._id)
2020-12-19 07:19:43 +13:00
$goto(`./datasource/${datasource._id}`)
}
2021-01-19 04:37:32 +13:00
function onClickQuery(query) {
if ($queries.selected === query._id) {
2020-12-19 07:19:43 +13:00
return
}
queries.select(query)
2021-01-19 04:37:32 +13:00
$goto(`./datasource/${query.datasourceId}/${query._id}`)
2020-12-19 07:19:43 +13:00
}
onMount(() => {
datasources.fetch()
queries.fetch()
2020-12-19 07:19:43 +13:00
})
</script>
{#if $database?._id}
2020-12-19 07:19:43 +13:00
<div class="hierarchy-items-container">
{#each $datasources.list as datasource, idx}
2020-12-19 07:19:43 +13:00
<NavItem
border={idx > 0}
text={datasource.name}
selected={$datasources.selected === datasource._id}
2020-12-19 07:19:43 +13:00
on:click={() => selectDatasource(datasource)}>
2021-01-13 05:49:11 +13:00
<div class="datasource-icon" slot="icon">
<svelte:component
this={ICONS[datasource.source]}
height="18"
width="18" />
2021-01-13 05:49:11 +13:00
</div>
2020-12-19 07:19:43 +13:00
<EditDatasourcePopover {datasource} />
</NavItem>
{#each $queries.list.filter(query => query.datasourceId === datasource._id) as query}
2020-12-19 07:19:43 +13:00
<NavItem
indentLevel={1}
icon="ri-eye-line"
2021-01-07 01:28:51 +13:00
text={query.name}
selected={$queries.selected === query._id}
2021-01-19 04:37:32 +13:00
on:click={() => onClickQuery(query)}>
2021-01-07 01:28:51 +13:00
<EditQueryPopover {query} />
2020-12-19 07:19:43 +13:00
</NavItem>
{/each}
{/each}
</div>
{/if}
<style>
.datasource-icon {
margin-right: 3px;
padding-top: 3px;
}
</style>