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
2 KiB
Svelte
Raw Normal View History

2020-12-19 07:19:43 +13:00
<script>
import { onMount } from "svelte"
import { goto } from "@sveltech/routify"
import { backendUiStore } from "builderStore"
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) {
2021-01-04 23:39:17 +13:00
backendUiStore.actions.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 ($backendUiStore.selectedQueryId === query._id) {
2020-12-19 07:19:43 +13:00
return
}
2021-01-19 04:37:32 +13:00
backendUiStore.actions.queries.select(query)
$goto(`./datasource/${query.datasourceId}/${query._id}`)
2020-12-19 07:19:43 +13:00
}
onMount(() => {
backendUiStore.actions.datasources.fetch()
2021-01-07 01:28:51 +13:00
backendUiStore.actions.queries.fetch()
2020-12-19 07:19:43 +13:00
})
</script>
{#if $backendUiStore.selectedDatabase && $backendUiStore.selectedDatabase._id}
<div class="hierarchy-items-container">
{#each $backendUiStore.datasources as datasource, idx}
<NavItem
border={idx > 0}
text={datasource.name}
selected={$backendUiStore.selectedDatasourceId === datasource._id}
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>
2021-01-07 01:28:51 +13:00
{#each $backendUiStore.queries.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={$backendUiStore.selectedQueryId === 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>