update how we handle coercion of types

This commit is contained in:
Peter Clement 2022-02-11 14:20:25 +00:00
parent 4a02d36cd0
commit d4b98095c2
3 changed files with 32 additions and 13 deletions

View File

@ -11,6 +11,8 @@
ActionButton, ActionButton,
notifications, notifications,
Modal, Modal,
Toggle,
Tooltip,
} from "@budibase/bbui" } from "@budibase/bbui"
import ConfigModal from "./ConfigModal.svelte" import ConfigModal from "./ConfigModal.svelte"
@ -22,6 +24,7 @@
let blocks let blocks
let confirmDeleteDialog let confirmDeleteDialog
$: rowControl = $automationStore.selectedAutomation.automation.rowControl
$: { $: {
blocks = [] blocks = []
if (automation) { if (automation) {
@ -32,6 +35,13 @@
} }
} }
function toggleFieldControl(evt) {
automationStore.actions.toggleFieldControl(evt.detail)
automationStore.actions.save(
$automationStore.selectedAutomation?.automation
)
}
async function deleteAutomation() { async function deleteAutomation() {
await automationStore.actions.delete( await automationStore.actions.delete(
$automationStore.selectedAutomation?.automation $automationStore.selectedAutomation?.automation
@ -61,16 +71,11 @@
<div class="title"> <div class="title">
<div class="subtitle"> <div class="subtitle">
<Heading size="S">{automation.name}</Heading> <Heading size="S">{automation.name}</Heading>
<div style="display:flex;"> <div style="display:flex; align-items: center;">
<div class="iconPadding"> <div class="iconPadding">
<div class="icon"> <Tooltip direction="left" text="Allow binding to all inputs">
<Icon <Toggle bind:value={rowControl} on:change={toggleFieldControl} />
hoverable </Tooltip>
size="M"
on:click={configModal.show}
name="Settings"
/>
</div>
</div> </div>
<div class="iconPadding"> <div class="iconPadding">
<div class="icon"> <div class="icon">

View File

@ -20,7 +20,7 @@
boolean: "true", boolean: "true",
datetime: "2022-02-16T12:00:00.000Z ", datetime: "2022-02-16T12:00:00.000Z ",
options: "1", options: "1",
array: "1,2,3,4", array: "1 2 3 4",
link: "ro_ta_123_456", link: "ro_ta_123_456",
longform: "long form text", longform: "long form text",
} }
@ -43,19 +43,32 @@
const coerce = (value, type) => { const coerce = (value, type) => {
if (type === "boolean") { if (type === "boolean") {
if (typeof value === "boolean") {
return value
}
return value === "true" return value === "true"
} }
if (type === "number") { if (type === "number") {
if (typeof value === "number") {
return value
}
return Number(value) return Number(value)
} }
if (type === "options") { if (type === "options") {
return [value] return [value]
} }
if (type === "array") { if (type === "array") {
return value.split(",") if (Array.isArray(value)) {
return value
}
return value.split(",").map(x => x.trim())
} }
if (type === "link") { if (type === "link") {
if (Array.isArray(value)) {
return value
}
return [value] return [value]
} }
@ -102,6 +115,7 @@
type={value.customType} type={value.customType}
on:change={e => onChange(e, field, schema.type)} on:change={e => onChange(e, field, schema.type)}
{bindings} {bindings}
allowJS={true}
/> />
{/if} {/if}
{:else if $automationStore.selectedAutomation.automation.rowControl} {:else if $automationStore.selectedAutomation.automation.rowControl}
@ -116,7 +130,7 @@
type="string" type="string"
{bindings} {bindings}
fillWidth={true} fillWidth={true}
allowJS={false} allowJS={true}
/> />
{/if} {/if}
{/if} {/if}

View File

@ -59,6 +59,6 @@
type="string" type="string"
{bindings} {bindings}
fillWidth={true} fillWidth={true}
allowJS={false} allowJS={true}
/> />
{/if} {/if}