budibase/packages/builder/src/actionsAndTriggers/TriggerView.svelte

68 lines
1.9 KiB
Svelte

<script>
import Textbox from "../common/Textbox.svelte";
import Button from "../common/Button.svelte";
import Dropdown from "../common/Dropdown.svelte";
import ButtonGroup from "../common/ButtonGroup.svelte";
import CodeArea from "../common/CodeArea.svelte";
import {cloneDeep, filter, keys, some,
map, isUndefined} from "lodash/fp";
import ErrorsBox from "../common/ErrorsBox.svelte";
import {validateTriggers, pipe, events} from "../common/core";
import getIcon from "../common/icon";
export let trigger;
export let onFinished = (action) => {};
export let allTriggers;
export let allActions;
export let isNew = true;
let clonedTrigger = cloneDeep(trigger);
let errors = [];
$: actionNames = map(a => a.name)(allActions);
let cancel = () => onFinished();
let save = () => {
const newTriggersList = [
...pipe(allTriggers ,[filter(t => t !== trigger)]),
clonedTrigger]
errors = validateTriggers(newTriggersList, allActions);
const test = map(t =>(!t.actionName || some(a => a.name === t.actionName)(allActions)))(newTriggersList)
if(errors.length === 0)
onFinished(clonedTrigger);
}
</script>
<div>
<ErrorsBox {errors} style="margin-bottom:20px"/>
<form class="uk-form-horizontal">
<Dropdown label="Event"
options={["",...events]}
bind:selected={clonedTrigger.eventName} />
<Dropdown label="Action"
options={["",...actionNames]}
bind:selected={clonedTrigger.actionName} />
<CodeArea label="Condition (javascript)"
bind:text={clonedTrigger.condition} />
<CodeArea label="Action Options Creator (javascript)"
bind:text={clonedTrigger.optionsCreator} />
</form>
<ButtonGroup>
<Button color="primary" grouped on:click={save}>Save</Button>
<Button color="tertiary" grouped on:click={cancel}>Cancel</Button>
</ButtonGroup>
</div>
<style>
</style>