2020-12-19 07:19:43 +13:00
|
|
|
<script>
|
2021-01-08 02:13:46 +13:00
|
|
|
import { TextArea, Label, Input, Heading } from "@budibase/bbui"
|
|
|
|
import Editor from "./QueryEditor.svelte"
|
2020-12-19 07:19:43 +13:00
|
|
|
|
2021-01-07 01:28:51 +13:00
|
|
|
const CAPTURE_VAR_INSIDE_MUSTACHE = /{{([^}]+)}}/g
|
|
|
|
|
2020-12-19 07:19:43 +13:00
|
|
|
const QueryTypes = {
|
|
|
|
SQL: "sql",
|
|
|
|
}
|
|
|
|
|
|
|
|
export let query
|
2020-12-31 00:46:37 +13:00
|
|
|
|
2021-01-08 02:13:46 +13:00
|
|
|
// TODO: bind these to the query
|
|
|
|
let parameters = []
|
|
|
|
|
|
|
|
$: query.parameters = parameters.reduce(
|
|
|
|
(acc, next) => ({ [next.key]: next.value, ...acc }),
|
|
|
|
{}
|
|
|
|
)
|
|
|
|
|
|
|
|
function newQueryParameter() {
|
|
|
|
parameters = [...parameters, {}]
|
|
|
|
}
|
|
|
|
|
|
|
|
function deleteQueryParameter(idx) {
|
|
|
|
parameters.splice(idx, 1)
|
|
|
|
parameters = parameters
|
|
|
|
}
|
2020-12-19 07:19:43 +13:00
|
|
|
</script>
|
|
|
|
|
2021-01-08 02:13:46 +13:00
|
|
|
<Heading extraSmall black>Parameters</Heading>
|
2021-01-07 01:28:51 +13:00
|
|
|
|
2021-01-08 02:13:46 +13:00
|
|
|
{#if query.queryType === QueryTypes.SQL}
|
|
|
|
<section>
|
|
|
|
<div class="parameters">
|
|
|
|
<Label extraSmall grey>Parameter Name</Label>
|
|
|
|
<Label extraSmall grey>Default Value</Label>
|
|
|
|
<!-- CLEAR ALL PARAMS OR SOMETHING -->
|
|
|
|
<i class="ri-close-circle-line delete" on:click={console.log} />
|
|
|
|
{#each parameters as parameter, idx}
|
|
|
|
<Input thin bind:value={parameter.key} />
|
|
|
|
<Input thin bind:value={parameter.value} />
|
|
|
|
<i
|
|
|
|
class="ri-close-circle-line delete"
|
|
|
|
on:click={() => deleteQueryParameter(idx)} />
|
|
|
|
{/each}
|
|
|
|
<i class="ri-add-circle-line" on:click={newQueryParameter} />
|
|
|
|
</div>
|
|
|
|
</section>
|
|
|
|
|
|
|
|
<Editor label="Query" bind:value={query.queryString} />
|
2020-12-19 07:19:43 +13:00
|
|
|
{/if}
|
2021-01-08 02:13:46 +13:00
|
|
|
|
|
|
|
<style>
|
|
|
|
.parameters {
|
|
|
|
display: grid;
|
|
|
|
grid-template-columns: 1fr 1fr 5%;
|
|
|
|
grid-gap: 10px;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
section {
|
|
|
|
margin-bottom: var(--spacing-xl);
|
|
|
|
}
|
|
|
|
</style>
|