forked from tsai/budibase
4 changed files with 100 additions and 3 deletions
@ -0,0 +1,75 @@ |
|||||
|
<script> |
||||
|
import { Button, Drawer, Spacer } from "@budibase/bbui" |
||||
|
import { createEventDispatcher } from "svelte" |
||||
|
import { notifier } from "builderStore/store/notifications" |
||||
|
import { |
||||
|
getDatasourceForProvider, |
||||
|
getSchemaForDatasource, |
||||
|
} from "builderStore/dataBinding" |
||||
|
import SaveFields from "./EventsEditor/actions/SaveFields.svelte" |
||||
|
|
||||
|
const dispatch = createEventDispatcher() |
||||
|
|
||||
|
export let value = {} |
||||
|
export let componentInstance |
||||
|
let drawer |
||||
|
let tempValue = value |
||||
|
|
||||
|
$: schemaFields = getSchemaFields(componentInstance) |
||||
|
|
||||
|
const getSchemaFields = component => { |
||||
|
const datasource = getDatasourceForProvider(component) |
||||
|
const { schema } = getSchemaForDatasource(datasource) |
||||
|
return Object.values(schema || {}) |
||||
|
} |
||||
|
|
||||
|
const saveFilter = async () => { |
||||
|
dispatch("change", tempValue) |
||||
|
notifier.success("Filters saved.") |
||||
|
drawer.hide() |
||||
|
} |
||||
|
|
||||
|
const onFieldsChanged = event => { |
||||
|
tempValue = event.detail |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<Button secondary wide on:click={drawer.show}>Define Filters</Button> |
||||
|
<Drawer bind:this={drawer} title={'Filtering'}> |
||||
|
<heading slot="buttons"> |
||||
|
<Button thin blue on:click={saveFilter}>Save</Button> |
||||
|
</heading> |
||||
|
<div slot="body"> |
||||
|
<div class="root"> |
||||
|
{#if !Object.keys(tempValue || {}).length} |
||||
|
<p>Add your first filter column.</p> |
||||
|
<Spacer small /> |
||||
|
{/if} |
||||
|
<div class="fields"> |
||||
|
<SaveFields |
||||
|
parameterFields={value} |
||||
|
{schemaFields} |
||||
|
on:fieldschanged={onFieldsChanged} /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</Drawer> |
||||
|
|
||||
|
<style> |
||||
|
.root { |
||||
|
padding: var(--spacing-m); |
||||
|
min-height: 40vh; |
||||
|
} |
||||
|
|
||||
|
p { |
||||
|
margin: 0 0 var(--spacing-s) 0; |
||||
|
} |
||||
|
|
||||
|
.fields { |
||||
|
display: grid; |
||||
|
column-gap: var(--spacing-s); |
||||
|
row-gap: var(--spacing-s); |
||||
|
grid-template-columns: auto 1fr auto 1fr auto; |
||||
|
align-items: baseline; |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue