Fix query params directly mutating the stored app definition

This commit is contained in:
Andrew Kingston 2021-12-08 09:31:39 +00:00
parent 42995a33c5
commit 47befceae7
1 changed files with 19 additions and 15 deletions

View File

@ -31,6 +31,7 @@
const arrayTypes = ["attachment", "array"] const arrayTypes = ["attachment", "array"]
let anchorRight, dropdownRight let anchorRight, dropdownRight
let drawer let drawer
let tmpQueryParams
$: text = value?.label ?? "Choose an option" $: text = value?.label ?? "Choose an option"
$: tables = $tablesStore.list.map(m => ({ $: tables = $tablesStore.list.map(m => ({
@ -105,12 +106,12 @@
} }
}) })
function handleSelected(selected) { const handleSelected = selected => {
dispatch("change", selected) dispatch("change", selected)
dropdownRight.hide() dropdownRight.hide()
} }
function fetchQueryDefinition(query) { const fetchQueryDefinition = query => {
const source = $datasources.list.find( const source = $datasources.list.find(
ds => ds._id === query.datasourceId ds => ds._id === query.datasourceId
).source ).source
@ -124,6 +125,19 @@
const getQueryDatasource = query => { const getQueryDatasource = query => {
return $datasources.list.find(ds => ds._id === query?.datasourceId) return $datasources.list.find(ds => ds._id === query?.datasourceId)
} }
const openQueryParamsDrawer = () => {
tmpQueryParams = value.queryParams
drawer.show()
}
const saveQueryParams = () => {
handleSelected({
...value,
queryParams: tmpQueryParams,
})
drawer.hide()
}
</script> </script>
<div class="container" bind:this={anchorRight}> <div class="container" bind:this={anchorRight}>
@ -134,24 +148,14 @@
on:click={dropdownRight.show} on:click={dropdownRight.show}
/> />
{#if value?.type === "query"} {#if value?.type === "query"}
<i class="ri-settings-5-line" on:click={drawer.show} /> <i class="ri-settings-5-line" on:click={openQueryParamsDrawer} />
<Drawer title={"Query Parameters"} bind:this={drawer}> <Drawer title={"Query Parameters"} bind:this={drawer}>
<Button <Button slot="buttons" cta on:click={saveQueryParams}>Save</Button>
slot="buttons"
cta
on:click={() => {
notifications.success("Query parameters saved.")
handleSelected(value)
drawer.hide()
}}
>
Save
</Button>
<DrawerContent slot="body"> <DrawerContent slot="body">
<Layout noPadding> <Layout noPadding>
{#if getQueryParams(value).length > 0} {#if getQueryParams(value).length > 0}
<ParameterBuilder <ParameterBuilder
bind:customParams={value.queryParams} bind:customParams={tmpQueryParams}
parameters={getQueryParams(value)} parameters={getQueryParams(value)}
{bindings} {bindings}
/> />