From e659e69e868473c876dee50665c05b1e46fd17a2 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 21 May 2020 21:40:16 +0100 Subject: [PATCH 001/161] workflow UI with DnD --- packages/builder/src/builderStore/index.js | 2 + .../src/builderStore/store/workflow.js | 34 + .../CreateEditModel/CreateEditModel.svelte | 4 +- packages/builder/src/flowy.css | 640 ++++++++++++++++++ packages/builder/src/global.css | 10 + packages/builder/src/index.html | 3 + packages/builder/src/main.js | 1 + .../workflow/BlockPanel/BlockPanel.svelte | 99 +++ .../workflow/BlockPanel/blockDefinitions.js | 54 ++ .../workflow/BlockPanel/index.js | 1 + .../WorkflowList/CreateWorkflowModal.svelte | 87 +++ .../workflow/WorkflowList/WorkflowList.svelte | 84 +++ .../workflow/WorkflowList/index.js | 1 + .../[application]/workflow/_layout.svelte | 47 ++ .../workflow/flowy/WorkflowBuilder.svelte | 43 ++ .../pages/[application]/workflow/flowy/apl.js | 0 .../pages/[application]/workflow/index.svelte | 5 + .../workflow/orchestrator/index.js | 38 ++ packages/client/src/render/screenRouter.js | 1 + .../src/Templates/indexDatatable.js | 80 --- .../src/Templates/recordForm.js | 149 ---- 21 files changed, 1152 insertions(+), 231 deletions(-) create mode 100644 packages/builder/src/builderStore/store/workflow.js create mode 100644 packages/builder/src/flowy.css create mode 100644 packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte create mode 100644 packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js create mode 100644 packages/builder/src/pages/[application]/workflow/BlockPanel/index.js create mode 100644 packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte create mode 100644 packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte create mode 100644 packages/builder/src/pages/[application]/workflow/WorkflowList/index.js create mode 100644 packages/builder/src/pages/[application]/workflow/_layout.svelte create mode 100644 packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte create mode 100644 packages/builder/src/pages/[application]/workflow/flowy/apl.js create mode 100644 packages/builder/src/pages/[application]/workflow/index.svelte create mode 100644 packages/builder/src/pages/[application]/workflow/orchestrator/index.js delete mode 100644 packages/materialdesign-components/src/Templates/indexDatatable.js delete mode 100644 packages/materialdesign-components/src/Templates/recordForm.js diff --git a/packages/builder/src/builderStore/index.js b/packages/builder/src/builderStore/index.js index 8ba017a7c8..dd6784c135 100644 --- a/packages/builder/src/builderStore/index.js +++ b/packages/builder/src/builderStore/index.js @@ -1,9 +1,11 @@ import { getStore } from "./store" import { getBackendUiStore } from "./store/backend" +import { getWorkflowStore } from "./store/workflow" import LogRocket from "logrocket" export const store = getStore() export const backendUiStore = getBackendUiStore() +export const workflowStore = getWorkflowStore() export const initialise = async () => { try { diff --git a/packages/builder/src/builderStore/store/workflow.js b/packages/builder/src/builderStore/store/workflow.js new file mode 100644 index 0000000000..b6aef38c72 --- /dev/null +++ b/packages/builder/src/builderStore/store/workflow.js @@ -0,0 +1,34 @@ +import { writable } from "svelte/store" +import api from "../api" + +export const getWorkflowStore = () => { + const INITIAL_WORKFLOW_STATE = { + workflows: [] + } + + const store = writable(INITIAL_WORKFLOW_STATE) + + store.actions = { + fetch: async instanceId => { + const WORKFLOWS_URL = `/api/${instanceId}/workflows`; + const workflowResponse = await api.get(WORKFLOWS_URL); + const json = await workflowResponse.json(); + store.update(state => { + state.workflows = json + return state + }) + }, + create: async ({ instanceId, name }) => { + const workflow = { name } + const CREATE_WORKFLOW_URL = `/api/${instanceId}/workflows`; + const response = await api.post(CREATE_WORKFLOW_URL, workflow) + const json = await response.json(); + store.update(state => { + state.workflows = state.workflows.concat(json.workflow) + return state + }) + }, + } + + return store +} \ No newline at end of file diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte index 97bb799c45..bd302df5b7 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte @@ -35,7 +35,7 @@ } - +
{#if !showFieldView}

Create / Edit Model

@@ -43,7 +43,7 @@

Create / Edit Field

{/if} - +
{#if !showFieldView}

Settings

diff --git a/packages/builder/src/flowy.css b/packages/builder/src/flowy.css new file mode 100644 index 0000000000..647f404730 --- /dev/null +++ b/packages/builder/src/flowy.css @@ -0,0 +1,640 @@ +body, html { + margin: 0px; + padding: 0px; + overflow: hidden; + background-repeat: repeat; + background-size: 30px 30px; + background-color: #FBFBFB; + height: 100%; +} +#navigation { + height: 71px; + background-color: #FFF; + border: 1px solid #E8E8EF; + width: 100%; + display: table; + box-sizing: border-box; + position: fixed; + top: 0; + z-index: 9 +} +#back { + width: 40px; + height: 40px; + border-radius: 100px; + background-color: #F1F4FC; + text-align: center; + display: inline-block; + vertical-align: top; + margin-top: 12px; + margin-right: 10px +} +#back img { + margin-top: 13px; +} +#names { + display: inline-block; + vertical-align: top; +} +#title { + font-family: Roboto; + font-weight: 500; + font-size: 16px; + color: #393C44; + margin-bottom: 0px; +} +#subtitle { + font-family: Roboto; + color: #808292; + font-size: 14px; + margin-top: 5px; +} +#leftside { + display: inline-block; + vertical-align: middle; + margin-left: 20px; +} +#centerswitch { + position: absolute; + width: 222px; + left: 50%; + margin-left: -111px; + top: 15px; +} +#leftswitch { + border: 1px solid #E8E8EF; + background-color: #FBFBFB; + width: 111px; + height: 39px; + line-height: 39px; + border-radius: 5px 0px 0px 5px; + font-family: Roboto; + color: #393C44; + display: inline-block; + font-size: 14px; + text-align: center; +} +#rightswitch { + font-family: Roboto; + color: #808292; + border-radius: 0px 5px 5px 0px; + border: 1px solid #E8E8EF; + height: 39px; + width: 102px; + display: inline-block; + font-size: 14px; + line-height: 39px; + text-align: center; + margin-left: -5px; +} +#discard { + font-family: Roboto; + font-weight: 500; + font-size: 14px; + color: #A6A6B3; + width: 95px; + height: 38px; + border: 1px solid #E8E8EF; + border-radius: 5px; + text-align: center; + line-height: 38px; + display: inline-block; + vertical-align: top; + transition: all .2s cubic-bezier(.05,.03,.35,1); +} +#discard:hover { + cursor: pointer; + opacity: .7; +} +#publish { + font-family: Roboto; + font-weight: 500; + font-size: 14px; + color: #FFF; + background-color: #217CE8; + border-radius: 5px; + width: 143px; + height: 38px; + margin-left: 10px; + display: inline-block; + vertical-align: top; + text-align: center; + line-height: 38px; + margin-right: 20px; + transition: all .2s cubic-bezier(.05,.03,.35,1); +} +#publish:hover { + cursor: pointer; + opacity: .7; +} +#buttonsright { + float: right; + margin-top: 15px; +} +#leftcard { + width: 363px; + background-color: #FFF; + border: 1px solid #E8E8EF; + box-sizing: border-box; + padding-top: 85px; + padding-left: 20px; + height: 100%; + position: absolute; + z-index: 2; +} +#search input { + width: 318px; + height: 40px; + background-color: #FFF; + border: 1px solid #E8E8EF; + box-sizing: border-box; + box-shadow: 0px 2px 8px rgba(34,34,87,0.05); + border-radius: 5px; + text-indent: 35px; + font-family: Roboto; + font-size: 16px; +} +::-webkit-input-placeholder { /* Edge */ + color: #C9C9D5; +} + +:-ms-input-placeholder { /* Internet Explorer 10-11 */ + color: #C9C9D5 +} + +::placeholder { + color: #C9C9D5; +} +#search img { + position: absolute; + margin-top: 10px; + width: 18px; + margin-left: 12px; +} +#header { + font-size: 20px; + font-family: Roboto; + font-weight: bold; + color: #393C44; +} +#subnav { + border-bottom: 1px solid #E8E8EF; + width: calc(100% + 20px); + margin-left: -20px; + margin-top: 10px; +} +.navdisabled { + transition: all .3s cubic-bezier(.05,.03,.35,1); +} +.navdisabled:hover { + cursor: pointer; + opacity: .5; +} +.navactive { + color: #393C44!important; +} +#triggers { + margin-left: 20px; + font-family: Roboto; + font-weight: 500; + font-size: 14px; + text-align: center; + color: #808292; + width: calc(88% / 3); + height: 48px; + line-height: 48px; + display: inline-block; + float: left; +} +.navactive:after { + display: block; + content: ""; + width: 100%; + height: 4px; + background-color: #217CE8; + margin-top: -4px; +} +#actions { + display: inline-block; + font-family: Roboto; + font-weight: 500; + color: #808292; + font-size: 14px; + height: 48px; + line-height: 48px; + width: calc(88% / 3); + text-align: center; + float: left; +} +#loggers { + width: calc(88% / 3); + display: inline-block; + font-family: Roboto; + font-weight: 500; + color: #808292; + font-size: 14px; + height: 48px; + line-height: 48px; + text-align: center; +} +#footer { + position: absolute; + left: 0; + padding-left: 20px; + line-height: 40px; + bottom: 0; + width: 362px; + border: 1px solid #E8E8EF; + height: 67px; + box-sizing: border-box; + background-color: #FFF; + font-family: Roboto; + font-size: 14px; +} +#footer a { + text-decoration: none; + color: #393C44; + transition: all .2s cubic-bezier(.05,.03,.35,1); +} +#footer a:hover { + opacity: .5; +} +#footer span { + color: #808292; +} +#footer p { + display: inline-block; + color: #808292; +} +#footer img { + margin-left: 5px; + margin-right: 5px; +} +.blockelem:first-child { + margin-top: 20px +} +.blockelem { + padding-top: 10px; + width: 318px; + border: 1px solid transparent; + transition-property: box-shadow, height; + transition-duration: .2s; + transition-timing-function: cubic-bezier(.05,.03,.35,1); + border-radius: 5px; + box-shadow: 0px 0px 30px rgba(22, 33, 74, 0); + box-sizing: border-box; +} +.blockelem:hover { + box-shadow: 0px 4px 30px rgba(22, 33, 74, 0.08); + border-radius: 5px; + background-color: #FFF; + cursor: pointer; +} +.grabme, .blockico { + display: inline-block; +} +.grabme { + margin-top: 10px; + margin-left: 10px; + margin-bottom: -14px; + width: 15px; +} +#blocklist { + height: calc(100% - 220px); + overflow: auto; +} +#proplist { + height: calc(100% - 305px); + overflow: auto; + margin-top: -30px; + padding-top: 30px; +} +.blockin { + display: inline-block; + vertical-align: top; + margin-left: 12px; +} +.blockico { + width: 36px; + height: 36px; + background-color: #F1F4FC; + border-radius: 5px; + text-align: center; + white-space: nowrap; +} +.blockico span { + height: 100%; + width: 0px; + display: inline-block; + vertical-align: middle; +} +.blockico img { + vertical-align: middle; + margin-left: auto; + margin-right: auto; + display: inline-block; +} +.blocktext { + display: inline-block; + width: 220px; + vertical-align: top; + margin-left: 12px +} +.blocktitle { + margin: 0px!important; + padding: 0px!important; + font-family: Roboto; + font-weight: 500; + font-size: 16px; + color: #393C44; +} +.blockdesc { + margin-top: 5px; + font-family: Roboto; + color: #808292; + font-size: 14px; + line-height: 21px; +} +.blockdisabled { + background-color: #F0F2F9; + opacity: .5; +} +#closecard { + position: absolute; + margin-left: 340px; + background-color: #FFF; + border-radius: 0px 5px 5px 0px; + border-bottom: 1px solid #E8E8EF; + border-right: 1px solid #E8E8EF; + border-top: 1px solid #E8E8EF; + width: 53px; + height: 53px; + text-align: center; + z-index: 10; +} +#closecard img { + margin-top: 15px +} +#canvas { + border: 1px solid green; + position: absolute; + width: calc(100% - 361px); + height: calc(100% - 71px); + top: 71px; + left: 361px; + z-index: 0; + overflow: auto; +} +#propwrap { + position: absolute; + right: 0; + top: 0; + width: 311px; + height: 100%; + padding-left: 20px; + overflow: hidden; + z-index: -2; +} +#properties { + position: absolute; + height: 100%; + width: 311px; + background-color: #FFF; + right: -150px; + opacity: 0; + z-index: 2; + top: 0px; + box-shadow: -4px 0px 40px rgba(26, 26, 73, 0); + padding-left: 20px; + transition: all .25s cubic-bezier(.05,.03,.35,1); +} +.itson { + z-index: 2!important; +} +.expanded { + right: 0!important; + opacity: 1!important; + box-shadow: -4px 0px 40px rgba(26, 26, 73, 0.05); + z-index: 2; +} +#header2 { + font-size: 20px; + font-family: Roboto; + font-weight: bold; + color: #393C44; + margin-top: 101px; +} +#close { + margin-top: 100px; + position: absolute; + right: 20px; + z-index: 9999; + transition: all .25s cubic-bezier(.05,.03,.35,1); +} +#close:hover { + cursor: pointer; + opacity: .7; +} +#propswitch { + border-bottom: 1px solid #E8E8EF; + width: 331px; + margin-top: 10px; + margin-left: -20px; + margin-bottom: 30px; +} +#dataprop { + font-family: Roboto; + font-weight: 500; + font-size: 14px; + text-align: center; + color: #393C44; + width: calc(88% / 3); + height: 48px; + line-height: 48px; + display: inline-block; + float: left; + margin-left: 20px; +} +#dataprop:after { + display: block; + content: ""; + width: 100%; + height: 4px; + background-color: #217CE8; + margin-top: -4px; +} +#alertprop { + display: inline-block; + font-family: Roboto; + font-weight: 500; + color: #808292; + font-size: 14px; + height: 48px; + line-height: 48px; + width: calc(88% / 3); + text-align: center; + float: left; +} +#logsprop { + width: calc(88% / 3); + display: inline-block; + font-family: Roboto; + font-weight: 500; + color: #808292; + font-size: 14px; + height: 48px; + line-height: 48px; + text-align: center; +} +.inputlabel { + font-family: Roboto; + font-size: 14px; + color: #253134; +} +.dropme { + background-color: #FFF; + border-radius: 5px; + border: 1px solid #E8E8EF; + box-shadow: 0px 2px 8px rgba(34, 34, 87, 0.05); + font-family: Roboto; + font-size: 14px; + color: #253134; + text-indent: 20px; + height: 40px; + line-height: 40px; + width: 287px; + margin-bottom: 25px; +} +.dropme img { + margin-top: 17px; + float: right; + margin-right: 15px; +} +.checkus { + margin-bottom: 10px; +} +.checkus img { + display: inline-block; + vertical-align: middle; +} +.checkus p { + display: inline-block; + font-family: Roboto; + font-size: 14px; + vertical-align: middle; + margin-left: 10px; +} +#divisionthing { + height: 1px; + width: 100%; + background-color: #E8E8EF; + position: absolute; + right: 0px; + bottom: 80; +} +#removeblock { + border-radius: 5px; + position: absolute; + bottom: 20px; + font-family: Roboto; + font-size: 14px; + text-align: center; + width: 287px; + height: 38px; + line-height: 38px; + color: #253134; + border: 1px solid #E8E8EF; + transition: all .3s cubic-bezier(.05,.03,.35,1); +} +#removeblock:hover { + cursor: pointer; + opacity: .5; +} +.noselect { + -webkit-touch-callout: none; /* iOS Safari */ + -webkit-user-select: none; /* Safari */ + -khtml-user-select: none; /* Konqueror HTML */ + -moz-user-select: none; /* Old versions of Firefox */ + -ms-user-select: none; /* Internet Explorer/Edge */ + user-select: none; /* Non-prefixed version, currently + supported by Chrome, Opera and Firefox */ +} +.blockyname { + font-family: Roboto; + font-weight: 500; + color: #253134; + display: inline-block; + vertical-align: middle; + margin-left: 8px; + font-size: 16px; +} +.blockyleft img { + display: inline-block; + vertical-align: middle; +} +.blockyright { + display: inline-block; + float: right; + vertical-align: middle; + margin-right: 20px; + margin-top: 10px; + width: 28px; + height: 28px; + border-radius: 5px; + text-align: center; + background-color: #FFF; + transition: all .3s cubic-bezier(.05,.03,.35,1); + z-index: 10; +} +.blockyright:hover { + background-color: #F1F4FC; + cursor: pointer; +} +.blockyright img { + margin-top: 12px; +} +.blockyleft { + display: inline-block; + margin-left: 20px; +} +.blockydiv { + width: 100%; + height: 1px; + background-color: #E9E9EF; +} +.blockyinfo { + font-family: Roboto; + font-size: 14px; + color: #808292; + margin-top: 15px; + text-indent: 20px; + margin-bottom: 20px; +} +.blockyinfo span { + color: #253134; + font-weight: 500; + display: inline-block; + border-bottom: 1px solid #D3DCEA; + line-height: 20px; + text-indent: 0px; +} +.block { + background-color: #FFF; + margin-top: 0px!important; + box-shadow: 0px 4px 30px rgba(22, 33, 74, 0.05); +} +.selectedblock { + border: 2px solid #217CE8; + box-shadow: 0px 4px 30px rgba(22, 33, 74, 0.08); +} + +@media only screen and (max-width: 832px) { + #centerswitch { + display: none; + } +} +@media only screen and (max-width: 560px) { + #names { + display: none; + } +} \ No newline at end of file diff --git a/packages/builder/src/global.css b/packages/builder/src/global.css index 999415931a..08921f95d2 100644 --- a/packages/builder/src/global.css +++ b/packages/builder/src/global.css @@ -58,6 +58,16 @@ --background-button: #f9f9f9; --button-text: #0055ff; + + /* Budibase Styleguide Colors */ + --primary: #0055ff; + --secondary: #f1f4fc; + --color: #393c44; + --dark-grey: #808192; + --medium-grey: #e8e8ef; + --background: rgb(251, 251, 251); + --font: #393c44; + --coral: #eb5757; } html, body { diff --git a/packages/builder/src/index.html b/packages/builder/src/index.html index 23c5aaf6c0..65239c2e69 100644 --- a/packages/builder/src/index.html +++ b/packages/builder/src/index.html @@ -10,15 +10,18 @@ + + + \ No newline at end of file diff --git a/packages/builder/src/main.js b/packages/builder/src/main.js index eb1357fde2..f664629c66 100644 --- a/packages/builder/src/main.js +++ b/packages/builder/src/main.js @@ -1,4 +1,5 @@ import "./global.css" +import "./flowy.css"; import "./fonts.css" import "./budibase.css" import "/assets/roboto-v20-latin-ext_latin-300" diff --git a/packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte b/packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte new file mode 100644 index 0000000000..f66cdcc580 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte @@ -0,0 +1,99 @@ + + +
+
+ Blocks + Props +
+
+ {#each SUB_TABS as tab} + (selectedTab = tab.key)}> + {tab.name} + + {/each} +
+
+ {#each definitions as blockDefinition} +
+ +
+ +
+
+
+ + +
+
+

{blockDefinition.name}

+

{blockDefinition.description}

+
+
+
+ {/each} +
+
+ + diff --git a/packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js b/packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js new file mode 100644 index 0000000000..d13f317a2b --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js @@ -0,0 +1,54 @@ +const ACTIONS = { + SET_STATE: { + name: "Update UI", + icon: "", + description: "Update your User Interface with some data.", + type: "CLIENT", + }, + NAVIGATE: { + name: "Navigate", + icon: "", + description: "Navigate to another page.", + type: "CLIENT" + }, + CREATE_RECORD: { + name: "Save Record", + icon: "", + description: "Save a record to your database.", + type: "SERVER", + }, + DELETE_RECORD: { + description: "Delete a record from your database.", + icon: "", + name: "Delete Record", + type: "SERVER", + } +}; + +const TRIGGERS = { + CLICK: { + name: "Click", + icon: "", + description: "Trigger when you click on an element in the UI." + }, + LOAD: { + name: "Load", + icon: "", + description: "Trigger an element has finished loading." + }, + INPUT: { + name: "Input", + icon: "", + description: "Trigger when you type into an input box." + }, +}; + +const UTILITIES = { + +} + +export default { + ACTIONS, + TRIGGERS, + UTILITIES +} \ No newline at end of file diff --git a/packages/builder/src/pages/[application]/workflow/BlockPanel/index.js b/packages/builder/src/pages/[application]/workflow/BlockPanel/index.js new file mode 100644 index 0000000000..73ebcd6949 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/BlockPanel/index.js @@ -0,0 +1 @@ +export { default as BlockPanel } from "./BlockPanel.svelte"; \ No newline at end of file diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte new file mode 100644 index 0000000000..510b21704e --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte @@ -0,0 +1,87 @@ + + +
+ + Create Workflow +
+
+ + +
+ + + diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte new file mode 100644 index 0000000000..c611143f78 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte @@ -0,0 +1,84 @@ + + +
+
+ Workflows + +
+
    + {#each $workflowStore.workflows as workflow} +
  • + + {workflow.name} +
  • + {/each} +
+
+ + diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowList/index.js b/packages/builder/src/pages/[application]/workflow/WorkflowList/index.js new file mode 100644 index 0000000000..18bd078eaa --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/WorkflowList/index.js @@ -0,0 +1 @@ +export { default as WorkflowList } from "./WorkflowList.svelte"; \ No newline at end of file diff --git a/packages/builder/src/pages/[application]/workflow/_layout.svelte b/packages/builder/src/pages/[application]/workflow/_layout.svelte new file mode 100644 index 0000000000..ec0a7d4ef9 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/_layout.svelte @@ -0,0 +1,47 @@ + + +
+ +
+ +
+ +
+ + diff --git a/packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte b/packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte new file mode 100644 index 0000000000..0d596915c3 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte @@ -0,0 +1,43 @@ + + +
diff --git a/packages/builder/src/pages/[application]/workflow/flowy/apl.js b/packages/builder/src/pages/[application]/workflow/flowy/apl.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/pages/[application]/workflow/index.svelte b/packages/builder/src/pages/[application]/workflow/index.svelte new file mode 100644 index 0000000000..766d9efaea --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/index.svelte @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/packages/builder/src/pages/[application]/workflow/orchestrator/index.js b/packages/builder/src/pages/[application]/workflow/orchestrator/index.js new file mode 100644 index 0000000000..5f037c07ff --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/orchestrator/index.js @@ -0,0 +1,38 @@ +import api from "builderStore/api"; + +class Orchestrator { + set strategy(strategy) { + this._stategy = strategy + } + + execute(workflow) { + this._strategy.execute(workflow); + } +} + +const ClientStrategy = { + execute: function(workflow) { + const block = workflow.next; + const EXECUTE_WORKFLOW_URL = `api/${workflow.instanceId}/workflows/${workflow._id}`; + + switch (block.type) { + case "CLIENT": + // fetch the workflow code from the server, then execute it here in the client + // catch any errors + // check against the conditions in the workflow + // if everything is fine, recurse + this.execute(workflow.next); + break; + case "SERVER": + // hit the server endpoint and wait for the response + // catch any errors + // check against the conditions in the workflow + // if everything is fine, recurse + await api.post() + break; + default: + break; + } + + } +} \ No newline at end of file diff --git a/packages/client/src/render/screenRouter.js b/packages/client/src/render/screenRouter.js index a45daca54f..f04df723a6 100644 --- a/packages/client/src/render/screenRouter.js +++ b/packages/client/src/render/screenRouter.js @@ -1,6 +1,7 @@ import regexparam from "regexparam" import { writable } from "svelte/store" +// TODO: refactor export const screenRouter = (screens, onScreenSelected, appRootPath) => { const makeRootedPath = url => { if (appRootPath) { diff --git a/packages/materialdesign-components/src/Templates/indexDatatable.js b/packages/materialdesign-components/src/Templates/indexDatatable.js deleted file mode 100644 index f242e7d8d6..0000000000 --- a/packages/materialdesign-components/src/Templates/indexDatatable.js +++ /dev/null @@ -1,80 +0,0 @@ -export default ({ indexes, helpers }) => - indexes.map(i => ({ - name: `Table based on view: ${i.name} `, - props: tableProps( - i, - helpers.indexSchema(i).filter(c => !excludedColumns.includes(c.name)) - ), - })) - -const excludedColumns = ["id", "key", "sortKey", "type", "isNew"] - -const tableProps = (index, indexSchema) => ({ - _component: "@budibase/materialdesign-components/Datatable", - _children: [ - { - _component: "@budibase/materialdesign-components/DatatableHead", - _children: [ - { - _component: "@budibase/materialdesign-components/DatatableRow", - isHeader: true, - _children: columnHeaders(indexSchema), - }, - ], - }, - { - _component: "@budibase/materialdesign-components/DatatableBody", - _children: [ - { - _code: rowCode(index), - _component: "@budibase/materialdesign-components/DatatableRow", - _children: dataCells(index, indexSchema), - }, - ], - }, - ], - onLoad: [ - { - "##eventHandlerType": "List Records", - parameters: { - indexKey: index.nodeKey(), - statePath: index.name, - }, - }, - ], -}) - -const columnHeaders = indexSchema => - indexSchema.map(col => ({ - _component: "@budibase/materialdesign-components/DatatableCell", - isHeader: true, - _children: [ - { - _component: "@budibase/standard-components/text", - type: "none", - text: col.name, - formattingTag: " - bold", - }, - ], - })) - -const dataCells = (index, indexSchema) => - indexSchema.map(col => ({ - _component: "@budibase/materialdesign-components/DatatableCell", - _children: [ - { - _component: "@budibase/standard-components/text", - type: "none", - text: `context.${dataItem(index)}.${col.name}`, - }, - ], - })) - -const dataItem = index => `${index.name}_item` -const dataCollection = index => `state.${index.name}` -const rowCode = index => - ` -if (!${dataCollection(index)}) return - -for (let ${dataItem(index)} of ${dataCollection(index)}) - render( { ${dataItem(index)} } )` diff --git a/packages/materialdesign-components/src/Templates/recordForm.js b/packages/materialdesign-components/src/Templates/recordForm.js deleted file mode 100644 index 38ab602a8e..0000000000 --- a/packages/materialdesign-components/src/Templates/recordForm.js +++ /dev/null @@ -1,149 +0,0 @@ -export default ({ records }) => - records.map(r => ({ - name: `Form for Record: ${r.nodeName()}`, - props: outerContainer(r), - })) - -const outerContainer = record => ({ - _component: "@budibase/standard-components/container", - _code: "", - type: "div", - onLoad: [ - { - "##eventHandlerType": "Get New Record", - parameters: { - collectionKey: record.collectionNodeKey(), - childRecordType: record.name, - statePath: record.name, - }, - }, - ], - _children: [ - heading(record), - ...record.fields.map(f => field(record, f)), - buttons(record), - ], -}) - -const heading = record => ({ - _component: "@budibase/materialdesign-components/H3", - text: capitalize(record.name), -}) - -const field = (record, f) => { - if (f.type === "bool") return checkbox(record, f) - if ( - f.type === "string" && - f.typeOptions && - f.typeOptions.values && - f.typeOptions.values.length > 0 - ) - return select(record, f) - return textField(record, f) -} - -const textField = (record, f) => ({ - _component: "@budibase/materialdesign-components/Textfield", - label: f.label, - variant: "filled", - disabled: false, - fullwidth: false, - colour: "primary", - maxLength: - f.typeOptions && f.typeOptions.maxLength ? f.typeOptions.maxLength : 0, - placeholder: f.label, - value: fieldValueBinding(record, f), -}) - -const checkbox = (record, f) => ({ - _component: "@budibase/materialdesign-components/Checkbox", - label: f.label, - checked: fieldValueBinding(record, f), -}) - -const select = (record, f) => ({ - _component: "@budibase/materialdesign-components/Select", - value: fieldValueBinding(record, f), - _children: f.typeOptions.values.map(val => ({ - _component: "@budibase/materialdesign-components/ListItem", - value: val, - text: val, - })), -}) - -const fieldValueBinding = (record, f) => `state.${record.name}.${f.name}` - -const capitalize = s => s.charAt(0).toUpperCase() + s.slice(1) - -const buttons = record => ({ - _component: "@budibase/standard-components/container", - borderWidth: "1px 0px 0px 0px", - borderColor: "lightgray", - borderStyle: "solid", - _styles: { - position: { - column: ["", ""], - row: ["", ""], - margin: ["", "", "", ""], - padding: ["30px", "", "", ""], - height: [""], - width: [""], - zindex: [""], - }, - layout: { - templaterows: [""], - templatecolumns: [""], - }, - }, - _children: [ - { - _component: "@budibase/materialdesign-components/Button", - onClick: [ - { - "##eventHandlerType": "Save Record", - parameters: { - statePath: `${record.name}`, - }, - }, - { - "##eventHandlerType": "Navigate To", - parameters: { - url: `/${record.name}s`, - }, - }, - ], - variant: "raised", - colour: "primary", - size: "medium", - text: `Save ${capitalize(record.name)}`, - }, - { - _component: "@budibase/materialdesign-components/Button", - _styles: { - position: { - row: ["", ""], - column: ["", ""], - padding: ["", "", "", ""], - margin: ["", "", "", "10px"], - width: [""], - height: [""], - zindex: [""], - }, - layout: { - templatecolumns: [""], - templaterows: [""], - }, - }, - onClick: [ - { - "##eventHandlerType": "Navigate To", - parameters: { - url: `/${record.name}s`, - }, - }, - ], - colour: "secondary", - text: "Cancel", - }, - ], -}) From cacee947bfcc9f49f1ce6fbf6c16e302570be4d3 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 22 May 2020 16:32:23 +0100 Subject: [PATCH 002/161] workflow charts --- packages/builder/src/builderStore/api.js | 2 + .../src/builderStore/store/workflow.js | 62 ++++++++++++------- packages/builder/src/flowy.css | 7 +++ .../workflow/BlockPanel/BlockPanel.svelte | 11 ++-- .../workflow/BlockPanel/blockDefinitions.js | 27 +++++--- .../WorkflowList/CreateWorkflowModal.svelte | 1 + .../workflow/WorkflowList/WorkflowList.svelte | 18 ++++-- .../[application]/workflow/_layout.svelte | 7 ++- .../workflow/flowy/WorkflowBuilder.svelte | 28 +++++---- .../materialdesign-components/src/index.js | 2 - packages/server/package.json | 2 +- .../server/src/api/controllers/workflow.js | 18 +++++- .../src/api/routes/tests/workflow.spec.js | 19 ++++++ packages/server/src/api/routes/workflow.js | 2 +- 14 files changed, 146 insertions(+), 60 deletions(-) diff --git a/packages/builder/src/builderStore/api.js b/packages/builder/src/builderStore/api.js index 7440fd7031..c9327a98f2 100644 --- a/packages/builder/src/builderStore/api.js +++ b/packages/builder/src/builderStore/api.js @@ -18,10 +18,12 @@ const post = apiCall("POST") const get = apiCall("GET") const patch = apiCall("PATCH") const del = apiCall("DELETE") +const put = apiCall("PUT") export default { post, get, patch, delete: del, + put } diff --git a/packages/builder/src/builderStore/store/workflow.js b/packages/builder/src/builderStore/store/workflow.js index b6aef38c72..6ce68e2fa9 100644 --- a/packages/builder/src/builderStore/store/workflow.js +++ b/packages/builder/src/builderStore/store/workflow.js @@ -1,6 +1,46 @@ import { writable } from "svelte/store" import api from "../api" +const workflowActions = store => ({ + fetch: async instanceId => { + const WORKFLOWS_URL = `/api/${instanceId}/workflows`; + const workflowResponse = await api.get(WORKFLOWS_URL); + const json = await workflowResponse.json(); + store.update(state => { + state.workflows = json + return state + }) + }, + create: async ({ instanceId, name }) => { + const workflow = { name } + const CREATE_WORKFLOW_URL = `/api/${instanceId}/workflows`; + const response = await api.post(CREATE_WORKFLOW_URL, workflow) + const json = await response.json(); + store.update(state => { + state.workflows = state.workflows.concat(json.workflow) + state.selectedWorkflowId = json.workflow._id + return state + }) + }, + update: async ({ instanceId, workflow }) => { + const UPDATE_WORKFLOW_URL = `/api/${instanceId}/workflows`; + const response = await api.put(UPDATE_WORKFLOW_URL, workflow) + const json = await response.json(); + store.update(state => { + const existingIdx = state.workflows.findIndex(existing => existing._id === workflow._id); + state.workflows.splice(existingIdx, 1, json.workflow); + state.workflows = state.workflows + return state + }) + }, + select: workflow => { + store.update(state => { + state.selectedWorkflowId = workflow._id + return state; + }) + } +}); + export const getWorkflowStore = () => { const INITIAL_WORKFLOW_STATE = { workflows: [] @@ -8,27 +48,7 @@ export const getWorkflowStore = () => { const store = writable(INITIAL_WORKFLOW_STATE) - store.actions = { - fetch: async instanceId => { - const WORKFLOWS_URL = `/api/${instanceId}/workflows`; - const workflowResponse = await api.get(WORKFLOWS_URL); - const json = await workflowResponse.json(); - store.update(state => { - state.workflows = json - return state - }) - }, - create: async ({ instanceId, name }) => { - const workflow = { name } - const CREATE_WORKFLOW_URL = `/api/${instanceId}/workflows`; - const response = await api.post(CREATE_WORKFLOW_URL, workflow) - const json = await response.json(); - store.update(state => { - state.workflows = state.workflows.concat(json.workflow) - return state - }) - }, - } + store.actions = workflowActions(store); return store } \ No newline at end of file diff --git a/packages/builder/src/flowy.css b/packages/builder/src/flowy.css index 647f404730..1fc6d12b3e 100644 --- a/packages/builder/src/flowy.css +++ b/packages/builder/src/flowy.css @@ -293,6 +293,7 @@ body, html { .grabme, .blockico { display: inline-block; } + .grabme { margin-top: 10px; margin-left: 10px; @@ -322,6 +323,12 @@ body, html { text-align: center; white-space: nowrap; } + +.blockico i { + font-size: 24px; + color: var(--dark-grey); +} + .blockico span { height: 100%; width: 0px; diff --git a/packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte b/packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte index f66cdcc580..4f2bc3c5cc 100644 --- a/packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte +++ b/packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte @@ -42,19 +42,18 @@
{#each definitions as blockDefinition} -
+
-
- -
- - +

{blockDefinition.name}

diff --git a/packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js b/packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js index d13f317a2b..2a90c8eeda 100644 --- a/packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js +++ b/packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js @@ -7,44 +7,55 @@ const ACTIONS = { }, NAVIGATE: { name: "Navigate", - icon: "", + icon: "ri-navigation-line", description: "Navigate to another page.", type: "CLIENT" }, - CREATE_RECORD: { + SAVE_RECORD: { name: "Save Record", - icon: "", + icon: "ri-save-3-fill", description: "Save a record to your database.", type: "SERVER", }, DELETE_RECORD: { description: "Delete a record from your database.", - icon: "", + icon: "ri-delete-bin-line", name: "Delete Record", type: "SERVER", } }; const TRIGGERS = { + SAVE_RECORD: { + name: "Record Saved", + icon: "ri-delete-bin-line", + description: "Save a record to your database.", + type: "SERVER", + }, CLICK: { name: "Click", - icon: "", + icon: "ri-cursor-line", description: "Trigger when you click on an element in the UI." }, LOAD: { name: "Load", - icon: "", + icon: "ri-loader-line", description: "Trigger an element has finished loading." }, INPUT: { name: "Input", - icon: "", + icon: "ri-text", description: "Trigger when you type into an input box." }, }; const UTILITIES = { - + IFELSE: { + name: "If/Else", + icon: "ri-git-branch-line", + description: "Perform different actions based on a condition", + type: "CLIENT" + }, } export default { diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte index 510b21704e..4420ab4db3 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte @@ -16,6 +16,7 @@ name, instanceId, }) + flowy.deleteBlocks(); onClosed() } diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte index c611143f78..5e1efe6868 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte @@ -1,10 +1,9 @@ @@ -30,7 +29,10 @@
    {#each $workflowStore.workflows as workflow} -
  • +
  • workflowStore.actions.select(workflow)}> {workflow.name}
  • @@ -71,7 +73,7 @@ border-radius: 3px; height: 40px; } - + .workflow-item i { font-size: 24px; margin-right: 10px; @@ -81,4 +83,8 @@ cursor: pointer; background: var(--secondary); } + + .workflow-item.selected { + background: var(--secondary); + } diff --git a/packages/builder/src/pages/[application]/workflow/_layout.svelte b/packages/builder/src/pages/[application]/workflow/_layout.svelte index ec0a7d4ef9..7b546e0397 100644 --- a/packages/builder/src/pages/[application]/workflow/_layout.svelte +++ b/packages/builder/src/pages/[application]/workflow/_layout.svelte @@ -1,6 +1,7 @@
    @@ -11,7 +12,9 @@
diff --git a/packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte b/packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte index 0d596915c3..2990eb9e86 100644 --- a/packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte +++ b/packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte @@ -1,25 +1,31 @@ \ No newline at end of file diff --git a/packages/builder/src/main.js b/packages/builder/src/main.js index f664629c66..eb1357fde2 100644 --- a/packages/builder/src/main.js +++ b/packages/builder/src/main.js @@ -1,5 +1,4 @@ import "./global.css" -import "./flowy.css"; import "./fonts.css" import "./budibase.css" import "/assets/roboto-v20-latin-ext_latin-300" diff --git a/packages/builder/src/pages/[application]/workflow/BlockPanel/index.js b/packages/builder/src/pages/[application]/workflow/BlockPanel/index.js deleted file mode 100644 index 73ebcd6949..0000000000 --- a/packages/builder/src/pages/[application]/workflow/BlockPanel/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as BlockPanel } from "./BlockPanel.svelte"; \ No newline at end of file diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte new file mode 100644 index 0000000000..1bfd17779a --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte @@ -0,0 +1,88 @@ + + +
+
+ Setup +
+
+ {#if workflowBlock} + + + {:else if $workflowStore.selectedWorkflowId} + +
+ +
+ +
+
+
+ + Some User Access Stuff Here +
+ + {/if} +
+
+ + diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte new file mode 100644 index 0000000000..1613a78f18 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte @@ -0,0 +1,17 @@ + + + +{#each workflowArgs as workflowArg} +
+ +
+ +
+
+{/each} diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/index.js b/packages/builder/src/pages/[application]/workflow/SetupPanel/index.js new file mode 100644 index 0000000000..800406ff7a --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/index.js @@ -0,0 +1 @@ +export { default as SetupPanel } from "./SetupPanel.svelte"; \ No newline at end of file diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/WorkflowBuilder.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/WorkflowBuilder.svelte new file mode 100644 index 0000000000..b9e43e7847 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/WorkflowBuilder.svelte @@ -0,0 +1,51 @@ + + +
+ +
diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte new file mode 100644 index 0000000000..d444c14848 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte @@ -0,0 +1,23 @@ + + +
+ {#each blocks as block, idx} + + {#if idx !== blocks.length - 1} + + {/if} + {/each} +
+ + diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte new file mode 100644 index 0000000000..d533e01fa8 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte @@ -0,0 +1,33 @@ + + +
+
{block.heading}
+
+

{block.body}

+
+ + diff --git a/packages/builder/src/pages/[application]/workflow/flowy/apl.js b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/api.js similarity index 100% rename from packages/builder/src/pages/[application]/workflow/flowy/apl.js rename to packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/api.js diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/index.js b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/index.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowList/index.js b/packages/builder/src/pages/[application]/workflow/WorkflowList/index.js deleted file mode 100644 index 18bd078eaa..0000000000 --- a/packages/builder/src/pages/[application]/workflow/WorkflowList/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as WorkflowList } from "./WorkflowList.svelte"; \ No newline at end of file diff --git a/packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/BlockList.svelte similarity index 57% rename from packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte rename to packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/BlockList.svelte index 4f2bc3c5cc..66330f11b5 100644 --- a/packages/builder/src/pages/[application]/workflow/BlockPanel/BlockPanel.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/BlockList.svelte @@ -1,8 +1,10 @@
-
- Blocks - Props -
{#each SUB_TABS as tab}
{#each definitions as blockDefinition} -
- -
-
- -
-
-

{blockDefinition.name}

-

{blockDefinition.description}

-
-
-
+ {/each}
diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte similarity index 98% rename from packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte rename to packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte index 4420ab4db3..510b21704e 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowList/CreateWorkflowModal.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte @@ -16,7 +16,6 @@ name, instanceId, }) - flowy.deleteBlocks(); onClosed() } diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte similarity index 74% rename from packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte rename to packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte index 5e1efe6868..ed28f1b2c2 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowList/WorkflowList.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte @@ -23,17 +23,16 @@
-
- Workflows - -
+
    {#each $workflowStore.workflows as workflow}
  • workflowStore.actions.select(workflow)}> - + {workflow.name}
  • {/each} @@ -41,16 +40,8 @@
diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowPanel.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowPanel.svelte new file mode 100644 index 0000000000..7de90a6e05 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowPanel.svelte @@ -0,0 +1,61 @@ + + +
+
+ (selectedTab = 'WORKFLOWS')}> + Workflows + + {#if $workflowStore.selectedWorkflowId} + (selectedTab = 'ADD')}> + Add + + {/if} +
+ {#if selectedTab === 'WORKFLOWS'} + + {:else if selectedTab === 'ADD'} + + {/if} +
+ + diff --git a/packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js similarity index 62% rename from packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js rename to packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js index 2a90c8eeda..5920070a7a 100644 --- a/packages/builder/src/pages/[application]/workflow/BlockPanel/blockDefinitions.js +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js @@ -1,6 +1,6 @@ const ACTIONS = { SET_STATE: { - name: "Update UI", + name: "Update UI State", icon: "", description: "Update your User Interface with some data.", type: "CLIENT", @@ -22,6 +22,24 @@ const ACTIONS = { icon: "ri-delete-bin-line", name: "Delete Record", type: "SERVER", + }, + FIND_RECORD: { + description: "Delete a record from your database.", + icon: "ri-delete-bin-line", + name: "Find Record", + type: "SERVER", + }, + CREATE_USER: { + description: "Create a new user.", + icon: "ri-user-add-fill", + name: "Create User", + type: "SERVER", + }, + SEND_EMAIL: { + description: "Send an email.", + icon: "ri-mail-open-fill", + name: "Send Email", + type: "SERVER", } }; @@ -49,11 +67,17 @@ const TRIGGERS = { }, }; -const UTILITIES = { - IFELSE: { - name: "If/Else", +const LOGIC = { + FILTER: { + name: "Filter", icon: "ri-git-branch-line", - description: "Perform different actions based on a condition", + description: "Filter any workflows which do not meet certain conditions.", + type: "CLIENT" + }, + DELAY: { + name: "Delay", + icon: "ri-git-branch-line", + description: "Delay the workflow until an amount of time has passed.", type: "CLIENT" }, } @@ -61,5 +85,5 @@ const UTILITIES = { export default { ACTIONS, TRIGGERS, - UTILITIES + LOGIC } \ No newline at end of file diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/index.js b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/index.js new file mode 100644 index 0000000000..dea50a6d41 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/index.js @@ -0,0 +1,3 @@ +export { default as WorkflowPanel } from "./WorkflowPanel.svelte"; +export { default as BlockList } from "./BlockList/BlockList.svelte"; +export { default as WorkflowList } from "./WorkflowList/WorkflowList.svelte"; \ No newline at end of file diff --git a/packages/builder/src/pages/[application]/workflow/_layout.svelte b/packages/builder/src/pages/[application]/workflow/_layout.svelte index 7b546e0397..54aa07717f 100644 --- a/packages/builder/src/pages/[application]/workflow/_layout.svelte +++ b/packages/builder/src/pages/[application]/workflow/_layout.svelte @@ -1,20 +1,18 @@
diff --git a/packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte b/packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte deleted file mode 100644 index 2990eb9e86..0000000000 --- a/packages/builder/src/pages/[application]/workflow/flowy/WorkflowBuilder.svelte +++ /dev/null @@ -1,49 +0,0 @@ - - -
diff --git a/packages/builder/src/pages/[application]/workflow/index.svelte b/packages/builder/src/pages/[application]/workflow/index.svelte index 766d9efaea..817aa67552 100644 --- a/packages/builder/src/pages/[application]/workflow/index.svelte +++ b/packages/builder/src/pages/[application]/workflow/index.svelte @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/packages/builder/src/pages/[application]/workflow/orchestrator/index.js b/packages/builder/src/pages/[application]/workflow/orchestrator/index.js deleted file mode 100644 index 5f037c07ff..0000000000 --- a/packages/builder/src/pages/[application]/workflow/orchestrator/index.js +++ /dev/null @@ -1,38 +0,0 @@ -import api from "builderStore/api"; - -class Orchestrator { - set strategy(strategy) { - this._stategy = strategy - } - - execute(workflow) { - this._strategy.execute(workflow); - } -} - -const ClientStrategy = { - execute: function(workflow) { - const block = workflow.next; - const EXECUTE_WORKFLOW_URL = `api/${workflow.instanceId}/workflows/${workflow._id}`; - - switch (block.type) { - case "CLIENT": - // fetch the workflow code from the server, then execute it here in the client - // catch any errors - // check against the conditions in the workflow - // if everything is fine, recurse - this.execute(workflow.next); - break; - case "SERVER": - // hit the server endpoint and wait for the response - // catch any errors - // check against the conditions in the workflow - // if everything is fine, recurse - await api.post() - break; - default: - break; - } - - } -} \ No newline at end of file diff --git a/packages/client/src/api/workflow/index.js b/packages/client/src/api/workflow/index.js index 7af5fc39dd..f9aa3403b3 100644 --- a/packages/client/src/api/workflow/index.js +++ b/packages/client/src/api/workflow/index.js @@ -2,7 +2,6 @@ import Orchestrator, { clientStrategy } from "./orchestrator"; export const triggerWorkflow = api => ({ workflow }) => { - console.log(workflow); const workflowOrchestrator = new Orchestrator( api, "inst_60dd510_700f7dc06735403e81d5af91072d7241" diff --git a/packages/client/src/api/workflow/orchestrator.js b/packages/client/src/api/workflow/orchestrator.js index 36c460876f..46b12f89a2 100644 --- a/packages/client/src/api/workflow/orchestrator.js +++ b/packages/client/src/api/workflow/orchestrator.js @@ -31,7 +31,7 @@ export default class Orchestrator { // Execute a workflow from a running budibase app export const clientStrategy = { context: {}, - bindContextArgs: function(args) { + bindContextArgs: function(args, api) { const mappedArgs = { ...args }; console.log("original args", args) @@ -50,12 +50,16 @@ export const clientStrategy = { // if the value is bound to state if (argValue.startsWith("$state")) { - const path = argValue.match("$context.", ""); - // pass in the value from context - mappedArgs[arg] = get(path, this.context); + const path = argValue.replace("$state.", ""); + // pass in the value from state + // TODO: not working + mappedArgs[arg] = api.getState(path); } } } + + console.log(mappedArgs); + return Object.values(mappedArgs); }, run: async function({ workflow, api, instanceId }) { @@ -85,7 +89,7 @@ export const clientStrategy = { url: EXECUTE_WORKFLOW_URL, body: { action: block.actionId, - args: block.args + args: this.bindContextArgs(block.args, api) } }); diff --git a/packages/server/package.json b/packages/server/package.json index 446679c5f0..6e2d095655 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -44,6 +44,7 @@ "@budibase/client": "^0.0.32", "@budibase/core": "^0.0.32", "@koa/router": "^8.0.0", + "@sendgrid/mail": "^7.1.1", "ajv": "^6.12.2", "bcryptjs": "^2.4.3", "dotenv": "^8.2.0", diff --git a/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js b/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js new file mode 100644 index 0000000000..072d61932f --- /dev/null +++ b/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js @@ -0,0 +1,27 @@ +const sgMail = require('@sendgrid/mail'); + +sgMail.setApiKey(process.env.SENDGRID_API_KEY); + +module.exports = async function sendEmail(args) { + + const msg = { + to: args.to, + from: args.from, + subject: args.subject, + text: args.text + }; + + try { + await sgMail.send(msg); + return { + success: true, + err + } + } catch (err) { + return { + success: false, + err + } + } + +} \ No newline at end of file diff --git a/packages/server/src/api/controllers/workflow/index.js b/packages/server/src/api/controllers/workflow/index.js index 8d9c7bc1e7..ee7c536519 100644 --- a/packages/server/src/api/controllers/workflow/index.js +++ b/packages/server/src/api/controllers/workflow/index.js @@ -65,7 +65,7 @@ exports.update = async function(ctx) { exports.fetch = async function(ctx) { const db = new CouchDB(ctx.params.instanceId) const response = await db.query(`database/by_type`, { - type: "workflow", + key: ["workflow"], include_docs: true, }) ctx.body = response.rows.map(row => row.doc) diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 8a64a7cb8a..763e28134e 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -194,6 +194,20 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@budibase/client@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.0.32.tgz#76d9f147563a0bf939eae7f32ce75b2a527ba496" + integrity sha512-jmCCLn0CUoQbL6h623S5IqK6+GYLqX3WzUTZInSb1SCBOM3pI0eLP5HwTR6s7r42SfD0v9jTWRdyTnHiElNj8A== + dependencies: + "@nx-js/compiler-util" "^2.0.0" + bcryptjs "^2.4.3" + deep-equal "^2.0.1" + lodash "^4.17.15" + lunr "^2.3.5" + regexparam "^1.3.0" + shortid "^2.2.8" + svelte "^3.9.2" + "@budibase/core@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@budibase/core/-/core-0.0.32.tgz#c5d9ab869c5e9596a1ac337aaf041e795b1cc7fa" @@ -409,6 +423,30 @@ resolved "https://registry.yarnpkg.com/@nx-js/compiler-util/-/compiler-util-2.0.0.tgz#c74c12165fa2f017a292bb79af007e8fce0af297" integrity sha512-AxSQbwj9zqt8DYPZ6LwZdytqnwfiOEdcFdq4l8sdjkZmU2clTht7RDLCI8xvkp7KqgcNaOGlTeCM55TULWruyQ== +"@sendgrid/client@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@sendgrid/client/-/client-7.1.1.tgz#09a25e58ac7e5321d66807e7110ff0fb61bb534f" + integrity sha512-V2BmOO81wHNmbTDwTJ07Olb9dWrj1G19xK4crwds68b9R0w05aOWDddZTvpn9mZnHwIJYqcZcBJuhdHDejuSHg== + dependencies: + "@sendgrid/helpers" "^7.0.1" + axios "^0.19.2" + +"@sendgrid/helpers@^7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@sendgrid/helpers/-/helpers-7.0.1.tgz#b97debc793ed3f9f56102e12c2a6d2bbbf0ffb78" + integrity sha512-i/zsissq1upgdywtuJKysaplJJZC24GdtEKiJC1IRlXvBHzIjH4eU+rqUFO8h+hGji3UMURGgMFuLUXTUYvZ9w== + dependencies: + chalk "^2.0.1" + deepmerge "^4.2.2" + +"@sendgrid/mail@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@sendgrid/mail/-/mail-7.1.1.tgz#26191594722d5961de1b61cd9c48fa9a69fd197b" + integrity sha512-VXdJ9J6vBNMw+wMIGFRvms6EmV6pvoRHMWoLJGweHlsZDnvmK3rWUnnNaS3OdDQ3A8B5bMv2WKsEnHsMZ6iDUg== + dependencies: + "@sendgrid/client" "^7.1.1" + "@sendgrid/helpers" "^7.0.1" + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -825,6 +863,11 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -897,6 +940,13 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== +available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -907,6 +957,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== +axios@^0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + babel-jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" @@ -1567,6 +1624,13 @@ dateformat@^3.0.3: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -1588,13 +1652,6 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1612,6 +1669,26 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +deep-equal@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0" + integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA== + dependencies: + es-abstract "^1.17.5" + es-get-iterator "^1.1.0" + is-arguments "^1.0.4" + is-date-object "^1.0.2" + is-regex "^1.0.5" + isarray "^2.0.5" + object-is "^1.1.2" + object-keys "^1.1.1" + object.assign "^4.1.0" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + which-boxed-primitive "^1.0.1" + which-collection "^1.0.1" + which-typed-array "^1.1.2" + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -1627,6 +1704,11 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + defer-to-connect@^1.0.1: version "1.1.3" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" @@ -1965,7 +2047,7 @@ error-inject@^1.0.0: resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc= -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -1982,6 +2064,19 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-get-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" + integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + dependencies: + es-abstract "^1.17.4" + has-symbols "^1.0.1" + is-arguments "^1.0.4" + is-map "^2.0.1" + is-set "^2.0.1" + is-string "^1.0.5" + isarray "^2.0.5" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2444,6 +2539,13 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -2967,11 +3069,21 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" + integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -2979,6 +3091,11 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" + integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -3015,7 +3132,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== @@ -3090,11 +3207,21 @@ is-installed-globally@^0.3.1: global-dirs "^2.0.1" is-path-inside "^3.0.1" +is-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" + integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== + is-npm@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== +is-number-object@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3131,11 +3258,21 @@ is-regex@^1.0.5: dependencies: has "^1.0.3" +is-set@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" + integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-string@^1.0.4, is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -3152,11 +3289,31 @@ is-type-of@^1.0.0: is-class-hotfix "~0.0.6" isstream "~0.1.2" +is-typed-array@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" + integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== + dependencies: + available-typed-arrays "^1.0.0" + es-abstract "^1.17.4" + foreach "^2.0.5" + has-symbols "^1.0.1" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakset@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" + integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -3182,6 +3339,11 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isbinaryfile@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" @@ -4589,6 +4751,14 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-is@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -5310,6 +5480,19 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexparam@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f" + integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g== + regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -5638,6 +5821,14 @@ shortid@^2.2.8: dependencies: nanoid "^2.1.0" +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -6046,6 +6237,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +svelte@^3.9.2: + version "3.22.3" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.22.3.tgz#6af3bdcfea44c2fadbf17a32c479f49bdf1aba4b" + integrity sha512-DumSy5eWPFPlMUGf3+eHyFSkt5yLqyAmMdCuXOE4qc5GtFyLxwTAGKZmgKmW2jmbpTTeFQ/fSQfDBQbl9Eo7yw== + symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -6526,11 +6722,44 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +which-boxed-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1" + integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ== + dependencies: + is-bigint "^1.0.0" + is-boolean-object "^1.0.0" + is-number-object "^1.0.3" + is-string "^1.0.4" + is-symbol "^1.0.2" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-typed-array@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" + integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== + dependencies: + available-typed-arrays "^1.0.2" + es-abstract "^1.17.5" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From 5894feaaff3a90e9da7ab85e84a5c26eb3835950 Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Thu, 28 May 2020 09:17:14 +0100 Subject: [PATCH 010/161] removed auth on execute workflow action --- packages/server/src/api/routes/workflow.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/server/src/api/routes/workflow.js b/packages/server/src/api/routes/workflow.js index 38563f0976..b4d8920261 100644 --- a/packages/server/src/api/routes/workflow.js +++ b/packages/server/src/api/routes/workflow.js @@ -15,11 +15,7 @@ router ) .put("/api/:instanceId/workflows", authorized(BUILDER), controller.update) .post("/api/:instanceId/workflows", authorized(BUILDER), controller.create) - .post( - "/api/:instanceId/workflows/action", - authorized(EXECUTE_WORKFLOW), - controller.executeAction - ) + .post("/api/:instanceId/workflows/action", controller.executeAction) .delete( "/api/:instanceId/workflows/:id/:rev", authorized(BUILDER), From 53ff560e428cb01c0c562abe0be130fb329c14fd Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Thu, 28 May 2020 15:39:29 +0100 Subject: [PATCH 011/161] server side record validation --- packages/server/package.json | 2 +- packages/server/src/api/controllers/record.js | 44 +++- packages/server/src/api/routes/model.js | 5 + .../src/api/routes/tests/couchTestUtils.js | 7 +- .../src/api/routes/tests/record.spec.js | 47 ++++- packages/server/yarn.lock | 197 +++++++++++++++++- 6 files changed, 277 insertions(+), 25 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index 156a25aa0b..023ee7c67f 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -44,7 +44,6 @@ "@budibase/client": "^0.0.32", "@budibase/core": "^0.0.32", "@koa/router": "^8.0.0", - "ajv": "^6.12.2", "bcryptjs": "^2.4.3", "dotenv": "^8.2.0", "electron-is-dev": "^1.2.0", @@ -66,6 +65,7 @@ "squirrelly": "^7.5.0", "tar-fs": "^2.0.0", "uuid": "^3.3.2", + "validate.js": "^0.13.1", "yargs": "^13.2.4", "zlib": "^1.0.5" }, diff --git a/packages/server/src/api/controllers/record.js b/packages/server/src/api/controllers/record.js index 7a5b045136..2fd81ffd8c 100644 --- a/packages/server/src/api/controllers/record.js +++ b/packages/server/src/api/controllers/record.js @@ -1,9 +1,7 @@ const CouchDB = require("../../db") -const Ajv = require("ajv") +const validateJs = require("validate.js") const newid = require("../../db/newid") -const ajv = new Ajv() - exports.save = async function(ctx) { const db = new CouchDB(ctx.params.instanceId) const record = ctx.request.body @@ -13,18 +11,18 @@ exports.save = async function(ctx) { record._id = newid() } - // validation with ajv const model = await db.get(record.modelId) - const validate = ajv.compile({ - properties: model.schema, - }) - const valid = validate(record) - if (!valid) { + const validateResult = await validate({ + record, + model, + }) + + if (!validateResult.valid) { ctx.status = 400 ctx.body = { status: 400, - errors: validate.errors, + errors: validateResult.errors, } return } @@ -84,3 +82,29 @@ exports.destroy = async function(ctx) { } ctx.body = await db.remove(ctx.params.recordId, ctx.params.revId) } + +exports.validate = async function(ctx) { + const errors = await validate({ + instanceId: ctx.params.instanceId, + modelId: ctx.params.modelId, + record: ctx.request.body, + }) + ctx.status = 200 + ctx.body = errors +} + +async function validate({ instanceId, modelId, record, model }) { + if (!model) { + const db = new CouchDB(instanceId) + model = await db.get(modelId) + } + const errors = {} + for (let fieldName in model.schema) { + const res = validateJs.single( + record[fieldName], + model.schema[fieldName].constraints + ) + if (res) errors[fieldName] = res + } + return { valid: Object.keys(errors).length === 0, errors } +} diff --git a/packages/server/src/api/routes/model.js b/packages/server/src/api/routes/model.js index d9eb5cf798..831aefd7f6 100644 --- a/packages/server/src/api/routes/model.js +++ b/packages/server/src/api/routes/model.js @@ -28,6 +28,11 @@ router authorized(WRITE_MODEL, ctx => ctx.params.modelId), recordController.save ) + .post( + "/api/:instanceId/:modelId/records/validate", + authorized(WRITE_MODEL, ctx => ctx.params.modelId), + recordController.validate + ) .delete( "/api/:instanceId/:modelId/records/:recordId/:revId", authorized(WRITE_MODEL, ctx => ctx.params.modelId), diff --git a/packages/server/src/api/routes/tests/couchTestUtils.js b/packages/server/src/api/routes/tests/couchTestUtils.js index de4ed7f87e..1f2017dcf0 100644 --- a/packages/server/src/api/routes/tests/couchTestUtils.js +++ b/packages/server/src/api/routes/tests/couchTestUtils.js @@ -27,7 +27,12 @@ exports.createModel = async (request, instanceId, model) => { type: "model", key: "name", schema: { - name: { type: "string" }, + name: { + type: "text", + constraints: { + type: "string", + }, + }, }, } diff --git a/packages/server/src/api/routes/tests/record.spec.js b/packages/server/src/api/routes/tests/record.spec.js index 16af0b6031..07e4d3cc4c 100644 --- a/packages/server/src/api/routes/tests/record.spec.js +++ b/packages/server/src/api/routes/tests/record.spec.js @@ -25,17 +25,17 @@ describe("/records", () => { server.close(); }) - describe("save, load, update, delete", () => { + beforeEach(async () => { + instance = await createInstance(request, app._id) + model = await createModel(request, instance._id) + record = { + name: "Test Contact", + status: "new", + modelId: model._id + } + }) - beforeEach(async () => { - instance = await createInstance(request, app._id) - model = await createModel(request, instance._id) - record = { - name: "Test Contact", - status: "new", - modelId: model._id - } - }) + describe("save, load, update, delete", () => { const createRecord = async r => await request @@ -119,4 +119,31 @@ describe("/records", () => { .expect(404) }) }) + + describe("validate", () => { + it("should return no errors on valid record", async () => { + const result = await request + .post(`/api/${instance._id}/${model._id}/records/validate`) + .send({ name: "ivan" }) + .set(defaultHeaders) + .expect('Content-Type', /json/) + .expect(200) + + expect(result.body.valid).toBe(true) + expect(Object.keys(result.body.errors)).toEqual([]) + }) + + it("should errors on invalid record", async () => { + const result = await request + .post(`/api/${instance._id}/${model._id}/records/validate`) + .send({ name: 1 }) + .set(defaultHeaders) + .expect('Content-Type', /json/) + .expect(200) + + expect(result.body.valid).toBe(false) + expect(Object.keys(result.body.errors)).toEqual(["name"]) + + }) + }) }) diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 8a64a7cb8a..ce52984cdf 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -194,6 +194,20 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@budibase/client@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.0.32.tgz#76d9f147563a0bf939eae7f32ce75b2a527ba496" + integrity sha512-jmCCLn0CUoQbL6h623S5IqK6+GYLqX3WzUTZInSb1SCBOM3pI0eLP5HwTR6s7r42SfD0v9jTWRdyTnHiElNj8A== + dependencies: + "@nx-js/compiler-util" "^2.0.0" + bcryptjs "^2.4.3" + deep-equal "^2.0.1" + lodash "^4.17.15" + lunr "^2.3.5" + regexparam "^1.3.0" + shortid "^2.2.8" + svelte "^3.9.2" + "@budibase/core@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@budibase/core/-/core-0.0.32.tgz#c5d9ab869c5e9596a1ac337aaf041e795b1cc7fa" @@ -655,7 +669,7 @@ ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.2: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0: version "6.12.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== @@ -825,6 +839,11 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -897,6 +916,13 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== +available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1612,6 +1638,26 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +deep-equal@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0" + integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA== + dependencies: + es-abstract "^1.17.5" + es-get-iterator "^1.1.0" + is-arguments "^1.0.4" + is-date-object "^1.0.2" + is-regex "^1.0.5" + isarray "^2.0.5" + object-is "^1.1.2" + object-keys "^1.1.1" + object.assign "^4.1.0" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + which-boxed-primitive "^1.0.1" + which-collection "^1.0.1" + which-typed-array "^1.1.2" + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -1965,7 +2011,7 @@ error-inject@^1.0.0: resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc= -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -1982,6 +2028,19 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-get-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" + integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + dependencies: + es-abstract "^1.17.4" + has-symbols "^1.0.1" + is-arguments "^1.0.4" + is-map "^2.0.1" + is-set "^2.0.1" + is-string "^1.0.5" + isarray "^2.0.5" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2967,11 +3026,21 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" + integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -2979,6 +3048,11 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" + integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -3015,7 +3089,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== @@ -3090,11 +3164,21 @@ is-installed-globally@^0.3.1: global-dirs "^2.0.1" is-path-inside "^3.0.1" +is-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" + integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== + is-npm@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== +is-number-object@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3131,11 +3215,21 @@ is-regex@^1.0.5: dependencies: has "^1.0.3" +is-set@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" + integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-string@^1.0.4, is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -3152,11 +3246,31 @@ is-type-of@^1.0.0: is-class-hotfix "~0.0.6" isstream "~0.1.2" +is-typed-array@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" + integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== + dependencies: + available-typed-arrays "^1.0.0" + es-abstract "^1.17.4" + foreach "^2.0.5" + has-symbols "^1.0.1" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakset@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" + integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -3182,6 +3296,11 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isbinaryfile@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" @@ -4589,6 +4708,14 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-is@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -5310,6 +5437,19 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexparam@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f" + integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g== + regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -5638,6 +5778,14 @@ shortid@^2.2.8: dependencies: nanoid "^2.1.0" +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -6046,6 +6194,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +svelte@^3.9.2: + version "3.23.0" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.23.0.tgz#bbcd6887cf588c24a975b14467455abfff9acd3f" + integrity sha512-cnyd96bK/Nw5DnYuB1hzm5cl6+I1fpmdKOteA7KLzU9KGLsLmvWsSkSKbcntzODCLmSySN3HjcgTHRo6/rJNTw== + symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -6458,6 +6611,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate.js@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/validate.js/-/validate.js-0.13.1.tgz#b58bfac04a0f600a340f62e5227e70d95971e92a" + integrity sha512-PnFM3xiZ+kYmLyTiMgTYmU7ZHkjBZz2/+F0DaALc/uUtVzdCt1wAosvYJ5hFQi/hz8O4zb52FQhHZRC+uVkJ+g== + vary@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -6526,11 +6684,44 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +which-boxed-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1" + integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ== + dependencies: + is-bigint "^1.0.0" + is-boolean-object "^1.0.0" + is-number-object "^1.0.3" + is-string "^1.0.4" + is-symbol "^1.0.2" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-typed-array@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" + integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== + dependencies: + available-typed-arrays "^1.0.2" + es-abstract "^1.17.5" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From 73223debe93850f3494a0e5c5128f57789d59fbe Mon Sep 17 00:00:00 2001 From: Conor_Mack Date: Thu, 28 May 2020 16:24:53 +0100 Subject: [PATCH 012/161] Complete OptionSelect Component --- .../ComponentsPaneSwitcher.svelte | 4 + .../userInterface/DesignView.svelte | 1 + .../userInterface/OptionSelect.svelte | 232 ++++++++++++++++-- .../userInterface/OptionSelectOld.svelte | 33 +++ .../userInterface/PropertyControl.svelte | 2 + .../userInterface/PropertyGroup.svelte | 12 +- .../userInterface/SettingsView.svelte | 4 + .../userInterface/UserInterfaceRoot.svelte | 3 +- .../userInterface/propertyCategories.js | 24 +- .../[application]/frontend/_layout.svelte | 1 - 10 files changed, 268 insertions(+), 48 deletions(-) create mode 100644 packages/builder/src/components/userInterface/OptionSelectOld.svelte diff --git a/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte b/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte index c85e23403c..25ecfd3280 100644 --- a/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte +++ b/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte @@ -78,4 +78,8 @@ .switcher > .selected { color: var(--ink); } + + .panel { + height: 100%; + } diff --git a/packages/builder/src/components/userInterface/DesignView.svelte b/packages/builder/src/components/userInterface/DesignView.svelte index 40aac9027a..9e005ee3bb 100644 --- a/packages/builder/src/components/userInterface/DesignView.svelte +++ b/packages/builder/src/components/userInterface/DesignView.svelte @@ -55,6 +55,7 @@ display: flex; flex-direction: column; width: 100%; + height: 100%; } .design-view-state-categories { diff --git a/packages/builder/src/components/userInterface/OptionSelect.svelte b/packages/builder/src/components/userInterface/OptionSelect.svelte index 4fbedde4ac..8ac0ca4184 100644 --- a/packages/builder/src/components/userInterface/OptionSelect.svelte +++ b/packages/builder/src/components/userInterface/OptionSelect.svelte @@ -1,36 +1,218 @@ - +
toggleSelect(!open)}> +
+ {displayLabel} + +
+
+
    + {#if isOptionsObject} + {#each options as { value: v, label }} +
  • + {label} +
  • + {/each} + {:else} + {#each options as v} +
  • + {v} +
  • + {/each} + {/if} +
+
+
+{#if open} +
toggleSelect(false)} class="overlay" /> +{/if} + + diff --git a/packages/builder/src/components/userInterface/OptionSelectOld.svelte b/packages/builder/src/components/userInterface/OptionSelectOld.svelte new file mode 100644 index 0000000000..db3c19de35 --- /dev/null +++ b/packages/builder/src/components/userInterface/OptionSelectOld.svelte @@ -0,0 +1,33 @@ + + + diff --git a/packages/builder/src/components/userInterface/PropertyControl.svelte b/packages/builder/src/components/userInterface/PropertyControl.svelte index cd1bad35f7..2946636872 100644 --- a/packages/builder/src/components/userInterface/PropertyControl.svelte +++ b/packages/builder/src/components/userInterface/PropertyControl.svelte @@ -49,6 +49,8 @@ .label { flex: 0 0 50px; + display: flex; + align-items: center; padding: 0px 5px; font-size: 12px; font-weight: 500; diff --git a/packages/builder/src/components/userInterface/PropertyGroup.svelte b/packages/builder/src/components/userInterface/PropertyGroup.svelte index 240618a4c7..2e227d0b61 100644 --- a/packages/builder/src/components/userInterface/PropertyGroup.svelte +++ b/packages/builder/src/components/userInterface/PropertyGroup.svelte @@ -70,12 +70,16 @@ } .property-panel { - height: 0px; - overflow: hidden; + /* height: 0px; + overflow: hidden; */ + display: none; } .show { - overflow: auto; - height: auto; + /* overflow: auto; + height: auto; */ + display: flex; + flex-direction: column; + flex: 1; } diff --git a/packages/builder/src/components/userInterface/SettingsView.svelte b/packages/builder/src/components/userInterface/SettingsView.svelte index 36b2ab9c75..e5b997b8aa 100644 --- a/packages/builder/src/components/userInterface/SettingsView.svelte +++ b/packages/builder/src/components/userInterface/SettingsView.svelte @@ -3,6 +3,7 @@ import InputGroup from "../common/Inputs/InputGroup.svelte" import Colorpicker from "../common/Colorpicker.svelte" import { excludeProps } from "./propertyCategories.js" + import OptionSelectNew from "./OptionSelectNew.svelte" export let panelDefinition = [] export let componentDefinition = {} @@ -16,6 +17,9 @@ } + + {#if panelDefinition.length > 0} {#each panelDefinition as definition} {#if propExistsOnComponentDef(definition.key)} diff --git a/packages/builder/src/components/userInterface/UserInterfaceRoot.svelte b/packages/builder/src/components/userInterface/UserInterfaceRoot.svelte index 13d7a7e2a1..68f3ff80da 100644 --- a/packages/builder/src/components/userInterface/UserInterfaceRoot.svelte +++ b/packages/builder/src/components/userInterface/UserInterfaceRoot.svelte @@ -151,8 +151,7 @@ .components-pane { grid-column: 3; background-color: var(--white); - height: 100vh; - overflow-y: scroll; + height: calc(100vh - 49px); } .components-nav-page { diff --git a/packages/builder/src/components/userInterface/propertyCategories.js b/packages/builder/src/components/userInterface/propertyCategories.js index 07101779a5..bbcef302f6 100644 --- a/packages/builder/src/components/userInterface/propertyCategories.js +++ b/packages/builder/src/components/userInterface/propertyCategories.js @@ -13,9 +13,9 @@ export const layout = [ control: OptionSelect, initialValue: "columnReverse", options: [ - { label: "row" }, + { label: "row", value: "row" }, { label: "row-reverse", value: "rowReverse" }, - { label: "column" }, + { label: "column", value: "column" }, { label: "column-reverse", value: "columnReverse" }, ], }, @@ -25,7 +25,10 @@ export const layout = [ label: "Wrap", key: "flex-wrap", control: OptionSelect, - options: [{ label: "wrap" }, { label: "no wrap", value: "noWrap" }], + options: [ + { label: "wrap", value: "wrap" }, + { label: "no wrap", value: "noWrap" }, + ], }, ] @@ -59,13 +62,7 @@ export const position = [ label: "Position", key: "position", control: OptionSelect, - options: [ - { label: "static" }, - { label: "relative" }, - { label: "fixed" }, - { label: "absolute" }, - { label: "sticky" }, - ], + options: ["static", "relative", "fixed", "absolute", "sticky"], }, ] @@ -91,12 +88,7 @@ export const typography = [ label: "Weight", key: "font-weight", control: OptionSelect, - options: [ - { label: "normal" }, - { label: "bold" }, - { label: "bolder" }, - { label: "lighter" }, - ], + options: ["normal", "bold", "bolder", "lighter"], }, { label: "size", key: "font-size", defaultValue: "", control: Input }, { label: "Line H", key: "line-height", control: Input }, diff --git a/packages/builder/src/pages/[application]/frontend/_layout.svelte b/packages/builder/src/pages/[application]/frontend/_layout.svelte index df9762fb07..8afee37d74 100644 --- a/packages/builder/src/pages/[application]/frontend/_layout.svelte +++ b/packages/builder/src/pages/[application]/frontend/_layout.svelte @@ -163,7 +163,6 @@ grid-column: 3; background-color: var(--white); min-height: 0px; - overflow-y: scroll; } .components-nav-page { From 6f0a84dd38735dfe113e10072ab9cf1ce54df824 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 28 May 2020 20:20:03 +0100 Subject: [PATCH 013/161] adding workflow blocks, parameter parsing, templating --- packages/builder/package.json | 2 + packages/builder/src/builderStore/api.js | 2 +- packages/builder/src/builderStore/index.js | 2 +- .../src/builderStore/store/workflow.js | 55 ----- .../builderStore/store/workflow/Workflow.js | 79 ++++++++ .../src/builderStore/store/workflow/index.js | 102 ++++++++++ .../store/workflow/tests/Workflow.js | 1 + .../ModelDataTable/modals/CreateUser.svelte | 2 +- .../ComponentPropertiesPanel.svelte | 2 +- packages/builder/src/global.css | 1 + .../SetupPanel/DeleteWorkflowModal.svelte | 87 ++++++++ .../ParamInputs/ComponentParam.svelte | 0 .../SetupPanel/ParamInputs/ModelParam.svelte | 0 .../SetupPanel/ParamInputs/NumberParam.svelte | 0 .../SetupPanel/ParamInputs/StringParam.svelte | 0 .../workflow/SetupPanel/SetupPanel.svelte | 35 ++-- .../SetupPanel/WorkflowBlockSetup.svelte | 63 +++++- .../workflow/SetupPanel/index.js | 2 +- .../WorkflowBuilder/WorkflowBuilder.svelte | 68 ++++--- .../svelte-flows/FlowChart.svelte | 4 +- .../svelte-flows/FlowItem.svelte | 26 ++- .../WorkflowPanel/BlockList/BlockList.svelte | 20 +- .../BlockList/WorkflowBlock.svelte | 10 +- .../WorkflowList/WorkflowList.svelte | 18 +- .../WorkflowPanel/WorkflowPanel.svelte | 12 +- .../WorkflowPanel/blockDefinitions.js | 81 ++++++-- .../workflow/WorkflowPanel/index.js | 6 +- .../[application]/workflow/_layout.svelte | 1 + .../pages/[application]/workflow/index.svelte | 6 +- packages/client/src/api/index.js | 8 +- packages/client/src/api/workflow/index.js | 10 +- .../client/src/api/workflow/orchestrator.js | 76 +++---- packages/server/src/api/controllers/record.js | 2 +- .../controllers/workflow/actions/CUSTOM_JS.js | 12 +- .../workflow/actions/SAVE_RECORD.js | 14 +- .../workflow/actions/SEND_EMAIL.js | 18 +- .../src/api/controllers/workflow/index.js | 23 +-- packages/server/src/app.js | 4 +- packages/server/src/events/index.js | 4 +- packages/server/src/schemas/index.js | 27 +-- packages/server/yarn.lock | 190 +----------------- 41 files changed, 630 insertions(+), 445 deletions(-) delete mode 100644 packages/builder/src/builderStore/store/workflow.js create mode 100644 packages/builder/src/builderStore/store/workflow/Workflow.js create mode 100644 packages/builder/src/builderStore/store/workflow/index.js create mode 100644 packages/builder/src/builderStore/store/workflow/tests/Workflow.js create mode 100644 packages/builder/src/pages/[application]/workflow/SetupPanel/DeleteWorkflowModal.svelte create mode 100644 packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/ComponentParam.svelte create mode 100644 packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/ModelParam.svelte create mode 100644 packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/NumberParam.svelte create mode 100644 packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/StringParam.svelte diff --git a/packages/builder/package.json b/packages/builder/package.json index 086d22382a..0926b82fb0 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -47,9 +47,11 @@ "lodash": "^4.17.13", "logrocket": "^1.0.6", "lunr": "^2.3.5", + "mustache": "^4.0.1", "safe-buffer": "^5.1.2", "shortid": "^2.2.8", "string_decoder": "^1.2.0", + "svelte-grid": "^1.10.8", "svelte-simple-modal": "^0.3.0", "uikit": "^3.1.7" }, diff --git a/packages/builder/src/builderStore/api.js b/packages/builder/src/builderStore/api.js index c9327a98f2..04dcce6cb9 100644 --- a/packages/builder/src/builderStore/api.js +++ b/packages/builder/src/builderStore/api.js @@ -25,5 +25,5 @@ export default { get, patch, delete: del, - put + put, } diff --git a/packages/builder/src/builderStore/index.js b/packages/builder/src/builderStore/index.js index dd6784c135..2af3a66667 100644 --- a/packages/builder/src/builderStore/index.js +++ b/packages/builder/src/builderStore/index.js @@ -1,6 +1,6 @@ import { getStore } from "./store" import { getBackendUiStore } from "./store/backend" -import { getWorkflowStore } from "./store/workflow" +import { getWorkflowStore } from "./store/workflow/" import LogRocket from "logrocket" export const store = getStore() diff --git a/packages/builder/src/builderStore/store/workflow.js b/packages/builder/src/builderStore/store/workflow.js deleted file mode 100644 index f1eb8b93f5..0000000000 --- a/packages/builder/src/builderStore/store/workflow.js +++ /dev/null @@ -1,55 +0,0 @@ -import { writable } from "svelte/store" -import api from "../api" - -const workflowActions = store => ({ - fetch: async instanceId => { - const WORKFLOWS_URL = `/api/${instanceId}/workflows`; - const workflowResponse = await api.get(WORKFLOWS_URL); - const json = await workflowResponse.json(); - store.update(state => { - state.workflows = json - return state - }) - }, - create: async ({ instanceId, name }) => { - const workflow = { name } - const CREATE_WORKFLOW_URL = `/api/${instanceId}/workflows`; - const response = await api.post(CREATE_WORKFLOW_URL, workflow) - const json = await response.json(); - store.update(state => { - state.workflows = state.workflows.concat(json.workflow) - state.selectedWorkflowId = json.workflow._id - return state - }) - }, - update: async ({ instanceId, workflow }) => { - const UPDATE_WORKFLOW_URL = `/api/${instanceId}/workflows`; - const response = await api.put(UPDATE_WORKFLOW_URL, workflow) - const json = await response.json(); - store.update(state => { - const existingIdx = state.workflows.findIndex(existing => existing._id === workflow._id); - state.workflows.splice(existingIdx, 1, json.workflow); - state.workflows = state.workflows - return state - }) - }, - select: workflow => { - store.update(state => { - state.selectedWorkflowId = workflow._id - state.selectedWorkflowBlock = null - return state; - }) - } -}); - -export const getWorkflowStore = () => { - const INITIAL_WORKFLOW_STATE = { - workflows: [] - } - - const store = writable(INITIAL_WORKFLOW_STATE) - - store.actions = workflowActions(store); - - return store -} \ No newline at end of file diff --git a/packages/builder/src/builderStore/store/workflow/Workflow.js b/packages/builder/src/builderStore/store/workflow/Workflow.js new file mode 100644 index 0000000000..b3e50466f7 --- /dev/null +++ b/packages/builder/src/builderStore/store/workflow/Workflow.js @@ -0,0 +1,79 @@ +import mustache from "mustache" +// TODO: tidy up import +import blockDefinitions from "../../../pages/[application]/workflow/WorkflowPanel/blockDefinitions" + +/** + * Class responsible for the traversing of the workflow definition. + * Workflow definitions are stored in linked lists. + */ +export default class Workflow { + constructor(workflow) { + this.workflow = workflow + } + + addBlock(block) { + let node = this.workflow.definition + while (node.next) node = node.next + node.next = block + } + + updateBlock(updatedBlock, id) { + let block = this.workflow.definition + + while (block.id !== id) block = block.next + if (!block) throw new Error("Block not found.") + + block = updatedBlock + } + + deleteBlock(id) { + let previous = null + let block = this.workflow.definition + + // iterate through the blocks + while (block.id !== id) { + previous = block + block = block.next + } + + // delete the block found + previous.next = block.next || {} + } + + createUiTree() { + if (!this.workflow.definition.next) return [] + return Workflow.buildUiTree(this.workflow.definition.next) + } + + static buildUiTree(block, tree = []) { + if (!block) return tree + + // The client side display definition for the block + const definition = blockDefinitions[block.type][block.actionId] + if (!definition) { + throw new Error( + `No block definition exists for the chosen block. Check there's an entry in the block definitions for ${block.actionId}` + ) + } + + if (!definition.params) { + throw new Error( + `Blocks should always have parameters. Ensure that the block definition is correct for ${block.actionId}` + ) + } + + const tagline = definition.tagline || "" + const args = block.args || {} + + tree.push({ + id: block.id, + type: block.type, + params: block.params, + args, + heading: block.actionId, + body: mustache.render(tagline, args), + }) + + return this.buildUiTree(block.next, tree) + } +} diff --git a/packages/builder/src/builderStore/store/workflow/index.js b/packages/builder/src/builderStore/store/workflow/index.js new file mode 100644 index 0000000000..fcdc299271 --- /dev/null +++ b/packages/builder/src/builderStore/store/workflow/index.js @@ -0,0 +1,102 @@ +import { writable } from "svelte/store" +import api from "../../api" +import Workflow from "./Workflow" + +const workflowActions = store => ({ + fetch: async instanceId => { + const WORKFLOWS_URL = `/api/${instanceId}/workflows` + const workflowResponse = await api.get(WORKFLOWS_URL) + const json = await workflowResponse.json() + store.update(state => { + state.workflows = json + return state + }) + }, + create: async ({ instanceId, name }) => { + const workflow = { name, definition: {} } + const CREATE_WORKFLOW_URL = `/api/${instanceId}/workflows` + const response = await api.post(CREATE_WORKFLOW_URL, workflow) + const json = await response.json() + store.update(state => { + state.workflows = state.workflows.concat(json.workflow) + state.currentWorkflow = new Workflow(json.workflow) + return state + }) + }, + save: async ({ instanceId, workflow }) => { + const UPDATE_WORKFLOW_URL = `/api/${instanceId}/workflows` + const response = await api.put(UPDATE_WORKFLOW_URL, workflow) + const json = await response.json() + store.update(state => { + const existingIdx = state.workflows.findIndex( + existing => existing._id === workflow._id + ) + state.workflows.splice(existingIdx, 1, json.workflow) + state.workflows = state.workflows + state.currentWorkflow = new Workflow(json.workflow) + return state + }) + }, + update: async ({ instanceId, workflow }) => { + const UPDATE_WORKFLOW_URL = `/api/${instanceId}/workflows` + const response = await api.put(UPDATE_WORKFLOW_URL, workflow) + const json = await response.json() + store.update(state => { + const existingIdx = state.workflows.findIndex( + existing => existing._id === workflow._id + ) + state.workflows.splice(existingIdx, 1, json.workflow) + state.workflows = state.workflows + return state + }) + }, + delete: async ({ instanceId, workflow }) => { + const { _id, _rev } = workflow + const DELETE_WORKFLOW_URL = `/api/${instanceId}/workflows/${_id}/${_rev}` + await api.delete(DELETE_WORKFLOW_URL) + + store.update(state => { + const existingIdx = state.workflows.findIndex( + existing => existing._id === _id + ) + state.workflows.splice(existingIdx, 1) + state.workflows = state.workflows + state.currentWorkflow = null + return state + }) + }, + select: workflow => { + store.update(state => { + // TODO: better naming + state.currentWorkflow = new Workflow(workflow) + state.selectedWorkflowBlock = null + return state + }) + }, + addBlockToWorkflow: block => { + store.update(state => { + state.currentWorkflow.addBlock(block) + state.selectedWorkflowBlock = block + return state + }) + }, + deleteWorkflowBlock: block => { + store.update(state => { + state.currentWorkflow.deleteBlock(block._id) + state.selectedWorkflowBlock = null + return state + }) + }, +}) + +export const getWorkflowStore = () => { + const INITIAL_WORKFLOW_STATE = { + workflows: [], + } + + const store = writable(INITIAL_WORKFLOW_STATE) + + store.actions = workflowActions(store) + + return store +} diff --git a/packages/builder/src/builderStore/store/workflow/tests/Workflow.js b/packages/builder/src/builderStore/store/workflow/tests/Workflow.js new file mode 100644 index 0000000000..a892d688b3 --- /dev/null +++ b/packages/builder/src/builderStore/store/workflow/tests/Workflow.js @@ -0,0 +1 @@ +describe("Workflow Data Object", () => {}) diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte index 77e0850b87..e81659f716 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte @@ -34,7 +34,7 @@
diff --git a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte index a255e92d90..c2cee9e6af 100644 --- a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte +++ b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte @@ -25,7 +25,7 @@ let categories = [ { value: "design", name: "Design" }, { value: "settings", name: "Settings" }, - { value: "events", name: "Events" } + { value: "events", name: "Events" }, ] let selectedCategory = categories[0] diff --git a/packages/builder/src/global.css b/packages/builder/src/global.css index 7edc1c6d40..852c5f044b 100644 --- a/packages/builder/src/global.css +++ b/packages/builder/src/global.css @@ -78,6 +78,7 @@ --primary: #0055ff; --secondary: #f1f4fc; --color: #393c44; + --light-grey: #fbfbfb; --dark-grey: #808192; --medium-grey: #e8e8ef; --background: rgb(251, 251, 251); diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/DeleteWorkflowModal.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/DeleteWorkflowModal.svelte new file mode 100644 index 0000000000..82af963cfc --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/DeleteWorkflowModal.svelte @@ -0,0 +1,87 @@ + + +
+ + Delete Workflow +
+
+

+ Are you sure you want to delete this workflow? This action can't be undone. +

+
+ + + diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/ComponentParam.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/ComponentParam.svelte new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/ModelParam.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/ModelParam.svelte new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/NumberParam.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/NumberParam.svelte new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/StringParam.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/StringParam.svelte new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte index 1bfd17779a..b23e7f4c4a 100644 --- a/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte @@ -1,20 +1,27 @@ @@ -26,10 +33,12 @@
{#if workflowBlock} - - {:else if $workflowStore.selectedWorkflowId} + {:else if $workflowStore.currentWorkflow}
@@ -44,7 +53,9 @@ Some User Access Stuff Here
- {/if} diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte index 1613a78f18..f3d0bdaba8 100644 --- a/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte @@ -1,17 +1,62 @@ - -{#each workflowArgs as workflowArg} -
- + +{#each workflowParams as [parameter, type]} +
+
- + {#if type === 'number'} + + {:else if type === 'model'} + + {:else if type === 'component'} + + {:else if type === 'string'} + + {/if}
{/each} + + diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/index.js b/packages/builder/src/pages/[application]/workflow/SetupPanel/index.js index 800406ff7a..ccfbddaf1c 100644 --- a/packages/builder/src/pages/[application]/workflow/SetupPanel/index.js +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/index.js @@ -1 +1 @@ -export { default as SetupPanel } from "./SetupPanel.svelte"; \ No newline at end of file +export { default as SetupPanel } from "./SetupPanel.svelte" diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/WorkflowBuilder.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/WorkflowBuilder.svelte index b9e43e7847..70f37e2638 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/WorkflowBuilder.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/WorkflowBuilder.svelte @@ -9,29 +9,13 @@ let uiTree let instanceId = $backendUiStore.selectedDatabase._id - $: workflow = $workflowStore.workflows.find( - wf => wf._id === $workflowStore.selectedWorkflowId - ) + $: workflow = $workflowStore.currentWorkflow - // Build a renderable UI Tree for the flowchart generator - function buildUiTree(block, tree = []) { - if (!block) return tree - - tree.push({ - type: block.type, - heading: block.actionId, - args: block.args, - body: JSON.stringify(block.args), - }) - - return buildUiTree(block.next, tree) - } - - $: if (workflow) uiTree = workflow.definition ? buildUiTree(workflow.definition.next) : [] + $: if (workflow) uiTree = workflow ? workflow.createUiTree() : [] function onDelete(block) { // TODO finish - workflowStore.actions.deleteWorkflowBlock(block); + workflowStore.actions.deleteWorkflowBlock(block) } function onSelect(block) { @@ -43,9 +27,45 @@
- + +
+ + +
+ + diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte index d444c14848..dc35b682c4 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte @@ -7,9 +7,9 @@
{#each blocks as block, idx} - + {#if idx !== blocks.length - 1} - + {/if} {/each}
diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte index d533e01fa8..858d7dc075 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte @@ -3,19 +3,22 @@ export let block function selectBlock() { - onSelect(block); + onSelect(block) } + + console.log(block) -
+
{block.heading}

-

{block.body}

+

+ {@html block.body} +

diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js index 5920070a7a..c0d81b95e8 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js @@ -1,89 +1,126 @@ -const ACTIONS = { +const ACTION = { SET_STATE: { name: "Update UI State", + tagline: "Update {{path}} to {{value}}", icon: "", description: "Update your User Interface with some data.", - type: "CLIENT", + environment: "CLIENT", + params: { + path: "string", + value: "string", + }, }, NAVIGATE: { name: "Navigate", icon: "ri-navigation-line", description: "Navigate to another page.", - type: "CLIENT" + environment: "CLIENT", + params: { + url: "string", + }, }, SAVE_RECORD: { name: "Save Record", icon: "ri-save-3-fill", description: "Save a record to your database.", - type: "SERVER", + environment: "SERVER", + params: { + model: "string", + }, }, DELETE_RECORD: { description: "Delete a record from your database.", icon: "ri-delete-bin-line", name: "Delete Record", - type: "SERVER", + environment: "SERVER", + params: { + record: "string", + }, }, FIND_RECORD: { description: "Delete a record from your database.", icon: "ri-delete-bin-line", name: "Find Record", - type: "SERVER", + environment: "SERVER", + params: { + record: "string", + }, }, CREATE_USER: { description: "Create a new user.", icon: "ri-user-add-fill", name: "Create User", - type: "SERVER", + environment: "SERVER", + params: { + name: "string", + password: "password", + accessLevel: "accessLevel", + }, }, SEND_EMAIL: { description: "Send an email.", + tagline: "Send email to {{to}}", icon: "ri-mail-open-fill", name: "Send Email", - type: "SERVER", - } -}; + environment: "SERVER", + params: { + to: "string", + from: "string", + subject: "string", + text: "string", + }, + }, +} -const TRIGGERS = { +const TRIGGER = { SAVE_RECORD: { name: "Record Saved", icon: "ri-delete-bin-line", + tagline: "Record is added to {{model}}", description: "Save a record to your database.", - type: "SERVER", + environment: "SERVER", + params: { + model: "model", + }, }, CLICK: { name: "Click", icon: "ri-cursor-line", - description: "Trigger when you click on an element in the UI." + description: "Trigger when you click on an element in the UI.", }, LOAD: { name: "Load", icon: "ri-loader-line", - description: "Trigger an element has finished loading." + description: "Trigger an element has finished loading.", }, INPUT: { name: "Input", icon: "ri-text", - description: "Trigger when you type into an input box." + description: "Trigger when you environment into an input box.", }, -}; +} const LOGIC = { FILTER: { name: "Filter", + tagline: "{{key}} {{condition}} {{value}}", icon: "ri-git-branch-line", description: "Filter any workflows which do not meet certain conditions.", - type: "CLIENT" + environment: "CLIENT", + params: { + if: "string", + }, }, DELAY: { name: "Delay", icon: "ri-git-branch-line", description: "Delay the workflow until an amount of time has passed.", - type: "CLIENT" + environment: "CLIENT", }, } export default { - ACTIONS, - TRIGGERS, - LOGIC -} \ No newline at end of file + ACTION, + TRIGGER, + LOGIC, +} diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/index.js b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/index.js index dea50a6d41..35fec385a7 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/index.js +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/index.js @@ -1,3 +1,3 @@ -export { default as WorkflowPanel } from "./WorkflowPanel.svelte"; -export { default as BlockList } from "./BlockList/BlockList.svelte"; -export { default as WorkflowList } from "./WorkflowList/WorkflowList.svelte"; \ No newline at end of file +export { default as WorkflowPanel } from "./WorkflowPanel.svelte" +export { default as BlockList } from "./BlockList/BlockList.svelte" +export { default as WorkflowList } from "./WorkflowList/WorkflowList.svelte" diff --git a/packages/builder/src/pages/[application]/workflow/_layout.svelte b/packages/builder/src/pages/[application]/workflow/_layout.svelte index 54aa07717f..f1cd9e76dd 100644 --- a/packages/builder/src/pages/[application]/workflow/_layout.svelte +++ b/packages/builder/src/pages/[application]/workflow/_layout.svelte @@ -24,6 +24,7 @@ .nav { padding: 20px; + height: 100%; } .root { diff --git a/packages/builder/src/pages/[application]/workflow/index.svelte b/packages/builder/src/pages/[application]/workflow/index.svelte index 817aa67552..88f65b0b18 100644 --- a/packages/builder/src/pages/[application]/workflow/index.svelte +++ b/packages/builder/src/pages/[application]/workflow/index.svelte @@ -1,5 +1,5 @@ - - \ No newline at end of file + diff --git a/packages/client/src/api/index.js b/packages/client/src/api/index.js index ef6c6d06b9..00f8405cfb 100644 --- a/packages/client/src/api/index.js +++ b/packages/client/src/api/index.js @@ -2,8 +2,7 @@ import { loadRecord } from "./loadRecord" import { listRecords } from "./listRecords" import { authenticate } from "./authenticate" import { saveRecord } from "./saveRecord" -import { triggerWorkflow } from "./workflow"; - +import { triggerWorkflow } from "./workflow" export const createApi = ({ rootPath = "", setState, getState }) => { const apiCall = method => async ({ url, body }) => { @@ -16,7 +15,6 @@ export const createApi = ({ rootPath = "", setState, getState }) => { credentials: "same-origin", }) - switch (response.status) { case 200: return response.json() @@ -27,7 +25,7 @@ export const createApi = ({ rootPath = "", setState, getState }) => { case 403: return error(`${url} Forbidden`) default: - if (response.status >= 200 && response.status < 400) { + if (response.status >= 200 && response.status < 400) { return response.json() } @@ -66,6 +64,6 @@ export const createApi = ({ rootPath = "", setState, getState }) => { listRecords: listRecords(apiOpts), authenticate: authenticate(apiOpts), saveRecord: saveRecord(apiOpts), - triggerWorkflow: triggerWorkflow(apiOpts) + triggerWorkflow: triggerWorkflow(apiOpts), } } diff --git a/packages/client/src/api/workflow/index.js b/packages/client/src/api/workflow/index.js index f9aa3403b3..2e3c025adb 100644 --- a/packages/client/src/api/workflow/index.js +++ b/packages/client/src/api/workflow/index.js @@ -1,15 +1,13 @@ -import Orchestrator, { clientStrategy } from "./orchestrator"; - +import Orchestrator, { clientStrategy } from "./orchestrator" export const triggerWorkflow = api => ({ workflow }) => { const workflowOrchestrator = new Orchestrator( api, "inst_60dd510_700f7dc06735403e81d5af91072d7241" - ); + ) workflowOrchestrator.strategy = clientStrategy - workflowOrchestrator.execute(workflow); + workflowOrchestrator.execute(workflow) // hit the API and get the workflow data back - -} \ No newline at end of file +} diff --git a/packages/client/src/api/workflow/orchestrator.js b/packages/client/src/api/workflow/orchestrator.js index 46b12f89a2..afa92d007e 100644 --- a/packages/client/src/api/workflow/orchestrator.js +++ b/packages/client/src/api/workflow/orchestrator.js @@ -1,11 +1,11 @@ -import get from "lodash/fp/get"; +import get from "lodash/fp/get" /** * The workflow orhestrator is a class responsible for executing workflows. - * It relies on the strategy pattern, which allows composable behaviour to be + * It relies on the strategy pattern, which allows composable behaviour to be * passed into its execute() function. This allows custom execution behaviour based * on where the orchestrator is run. - * + * */ export default class Orchestrator { constructor(api, instanceId) { @@ -18,13 +18,13 @@ export default class Orchestrator { } async execute(workflowId) { - const EXECUTE_WORKFLOW_URL = `/api/${this.instanceId}/workflows/${workflowId}`; - const workflow = await this.api.get({ url: EXECUTE_WORKFLOW_URL }) + const EXECUTE_WORKFLOW_URL = `/api/${this.instanceId}/workflows/${workflowId}` + const workflow = await this.api.get({ url: EXECUTE_WORKFLOW_URL }) this._strategy.run({ workflow: workflow.definition, api: this.api, - instanceId: this.instanceId - }); + instanceId: this.instanceId, + }) } } @@ -32,76 +32,76 @@ export default class Orchestrator { export const clientStrategy = { context: {}, bindContextArgs: function(args, api) { - const mappedArgs = { ...args }; + const mappedArgs = { ...args } console.log("original args", args) // bind the workflow action args to the workflow context, if required for (let arg in args) { - const argValue = args[arg]; + const argValue = args[arg] // Means that it's bound to state or workflow context if (argValue.startsWith("$")) { // if value is bound to workflow context. if (argValue.startsWith("$context")) { - const path = argValue.replace("$context.", ""); + const path = argValue.replace("$context.", "") // pass in the value from context - mappedArgs[arg] = get(path, this.context); + mappedArgs[arg] = get(path, this.context) } // if the value is bound to state if (argValue.startsWith("$state")) { - const path = argValue.replace("$state.", ""); + const path = argValue.replace("$state.", "") // pass in the value from state // TODO: not working - mappedArgs[arg] = api.getState(path); + mappedArgs[arg] = api.getState(path) } } } - console.log(mappedArgs); + console.log(mappedArgs) - return Object.values(mappedArgs); + return Object.values(mappedArgs) }, run: async function({ workflow, api, instanceId }) { - const block = workflow.next; + const block = workflow.next - console.log("Executing workflow block", block); + console.log("Executing workflow block", block) - if (!block) return; + if (!block) return // This code gets run in the browser - if (block.type === "CLIENT") { - if (block.actionId === "SET_STATE") { - // get props from the workflow context if required - api.setState(...this.bindContextArgs(block.args)) - // update the context with the data - this.context = { - ...this.context, - SET_STATE: block.args - } + if (block.environment === "CLIENT") { + if (block.actionId === "SET_STATE") { + // get props from the workflow context if required + api.setState(...this.bindContextArgs(block.args)) + // update the context with the data + this.context = { + ...this.context, + SET_STATE: block.args, } - }; + } + } // this workflow block gets executed on the server - if (block.type === "SERVER") { + if (block.environment === "SERVER") { const EXECUTE_WORKFLOW_URL = `/api/${instanceId}/workflows/action` - const response = await api.post({ - url: EXECUTE_WORKFLOW_URL, + const response = await api.post({ + url: EXECUTE_WORKFLOW_URL, body: { action: block.actionId, - args: this.bindContextArgs(block.args, api) - } - }); + args: this.bindContextArgs(block.args, api), + }, + }) this.context = { ...this.context, - [block.actionId]: response + [block.actionId]: response, } } console.log("workflowContext", this.context) // TODO: clean this up, don't pass all those args - this.run({ workflow: workflow.next, instanceId, api }); - } -} \ No newline at end of file + this.run({ workflow: workflow.next, instanceId, api }) + }, +} diff --git a/packages/server/src/api/controllers/record.js b/packages/server/src/api/controllers/record.js index c4ac1deba3..c3e1fa940d 100644 --- a/packages/server/src/api/controllers/record.js +++ b/packages/server/src/api/controllers/record.js @@ -5,7 +5,7 @@ const newid = require("../../db/newid") const ajv = new Ajv() exports.save = async function(ctx) { - console.log("THIS INSTANCE", ctx.params.instanceId); + console.log("THIS INSTANCE", ctx.params.instanceId) const db = new CouchDB(ctx.params.instanceId) const record = ctx.request.body record.modelId = ctx.params.modelId diff --git a/packages/server/src/api/controllers/workflow/actions/CUSTOM_JS.js b/packages/server/src/api/controllers/workflow/actions/CUSTOM_JS.js index 77ac39783d..73072f2ac9 100644 --- a/packages/server/src/api/controllers/workflow/actions/CUSTOM_JS.js +++ b/packages/server/src/api/controllers/workflow/actions/CUSTOM_JS.js @@ -1,9 +1,9 @@ -export default async function () { - const response = await fetch("www.google.com"); - console.log(response); - console.log("CUSTOM ACTION"); +export default async function() { + const response = await fetch("www.google.com") + console.log(response) + console.log("CUSTOM ACTION") return { message: "CUSTOM_WORKFLOW_SCRIPT", - response + response, } -} \ No newline at end of file +} diff --git a/packages/server/src/api/controllers/workflow/actions/SAVE_RECORD.js b/packages/server/src/api/controllers/workflow/actions/SAVE_RECORD.js index 05d42bfc11..24225f2287 100644 --- a/packages/server/src/api/controllers/workflow/actions/SAVE_RECORD.js +++ b/packages/server/src/api/controllers/workflow/actions/SAVE_RECORD.js @@ -1,20 +1,20 @@ -const recordController = require("../../record"); +const recordController = require("../../record") module.exports = async function saveRecord(args) { - console.log("SAVING this record", args.record); + console.log("SAVING this record", args.record) const ctx = { params: { instanceId: "inst_60dd510_700f7dc06735403e81d5af91072d7241", }, request: { - body: args.record - } + body: args.record, + }, } - await recordController.save(ctx); + await recordController.save(ctx) return { - record: ctx.body + record: ctx.body, } -} \ No newline at end of file +} diff --git a/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js b/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js index 072d61932f..ef582781b8 100644 --- a/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js +++ b/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js @@ -1,27 +1,25 @@ -const sgMail = require('@sendgrid/mail'); +const sgMail = require("@sendgrid/mail") -sgMail.setApiKey(process.env.SENDGRID_API_KEY); +sgMail.setApiKey(process.env.SENDGRID_API_KEY) module.exports = async function sendEmail(args) { - const msg = { to: args.to, from: args.from, subject: args.subject, - text: args.text - }; + text: args.text, + } try { - await sgMail.send(msg); + await sgMail.send(msg) return { success: true, - err + err, } } catch (err) { return { success: false, - err + err, } } - -} \ No newline at end of file +} diff --git a/packages/server/src/api/controllers/workflow/index.js b/packages/server/src/api/controllers/workflow/index.js index ee7c536519..1a4cfa8591 100644 --- a/packages/server/src/api/controllers/workflow/index.js +++ b/packages/server/src/api/controllers/workflow/index.js @@ -28,7 +28,6 @@ exports.create = async function(ctx) { // return // } - workflow.type = "workflow" const response = await db.post(workflow) workflow._rev = response.rev @@ -39,14 +38,14 @@ exports.create = async function(ctx) { workflow: { ...workflow, _rev: response.rev, - _id: response.id - } - }; + _id: response.id, + }, + } } exports.update = async function(ctx) { const db = new CouchDB(ctx.params.instanceId) - const workflow = ctx.request.body; + const workflow = ctx.request.body const response = await db.put(workflow) workflow._rev = response.rev @@ -57,7 +56,7 @@ exports.update = async function(ctx) { workflow: { ...workflow, _rev: response.rev, - _id: response.id + _id: response.id, }, } } @@ -77,15 +76,15 @@ exports.find = async function(ctx) { } exports.executeAction = async function(ctx) { - const workflowAction = require(`./actions/${ctx.request.body.action}`); - const response = await workflowAction(ctx.request.body.args); - ctx.body = response; + const workflowAction = require(`./actions/${ctx.request.body.action}`) + const response = await workflowAction(ctx.request.body.args) + ctx.body = response } exports.fetchActionScript = async function(ctx) { - const workflowAction = require(`./actions/${ctx.action}`); - console.log(workflowAction); - ctx.body = workflowAction; + const workflowAction = require(`./actions/${ctx.action}`) + console.log(workflowAction) + ctx.body = workflowAction } exports.destroy = async function(ctx) { diff --git a/packages/server/src/app.js b/packages/server/src/app.js index f947738567..57fb037626 100644 --- a/packages/server/src/app.js +++ b/packages/server/src/app.js @@ -4,7 +4,7 @@ const logger = require("koa-pino-logger") const http = require("http") const api = require("./api") const env = require("./environment") -const eventPublisher = require("./events"); +const eventPublisher = require("./events") const app = new Koa() @@ -20,7 +20,7 @@ app.use( }) ) -app.context.publisher = eventPublisher; +app.context.publisher = eventPublisher // api routes app.use(api.routes()) diff --git a/packages/server/src/events/index.js b/packages/server/src/events/index.js index 14e4e052e1..7d54c4cd95 100644 --- a/packages/server/src/events/index.js +++ b/packages/server/src/events/index.js @@ -1,3 +1,3 @@ -const EventEmitter = require("events").EventEmitter; +const EventEmitter = require("events").EventEmitter -module.exports = new EventEmitter(); \ No newline at end of file +module.exports = new EventEmitter() diff --git a/packages/server/src/schemas/index.js b/packages/server/src/schemas/index.js index 23a839bf97..63a6514043 100644 --- a/packages/server/src/schemas/index.js +++ b/packages/server/src/schemas/index.js @@ -2,37 +2,38 @@ const WORKFLOW_SCHEMA = { properties: { type: "workflow", pageId: { - type: "string" + type: "string", }, screenId: { - type: "string" + type: "string", }, live: { - type: "boolean" + type: "boolean", }, uiTree: { - type: "object" + type: "object", }, definition: { type: "object", properties: { triggers: { type: "array" }, - next: { + next: { type: "object", properties: { + environment: { environment: "string" }, type: { type: "string" }, actionId: { type: "string" }, args: { type: "object" }, conditions: { type: "array" }, errorHandling: { type: "object" }, - next: { type: "object" } - } + next: { type: "object" }, + }, }, - } - } - } -}; + }, + }, + }, +} module.exports = { - WORKFLOW_SCHEMA -}; \ No newline at end of file + WORKFLOW_SCHEMA, +} diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 763e28134e..3fc1f15622 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -194,20 +194,6 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@budibase/client@^0.0.32": - version "0.0.32" - resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.0.32.tgz#76d9f147563a0bf939eae7f32ce75b2a527ba496" - integrity sha512-jmCCLn0CUoQbL6h623S5IqK6+GYLqX3WzUTZInSb1SCBOM3pI0eLP5HwTR6s7r42SfD0v9jTWRdyTnHiElNj8A== - dependencies: - "@nx-js/compiler-util" "^2.0.0" - bcryptjs "^2.4.3" - deep-equal "^2.0.1" - lodash "^4.17.15" - lunr "^2.3.5" - regexparam "^1.3.0" - shortid "^2.2.8" - svelte "^3.9.2" - "@budibase/core@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@budibase/core/-/core-0.0.32.tgz#c5d9ab869c5e9596a1ac337aaf041e795b1cc7fa" @@ -863,11 +849,6 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -940,13 +921,6 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== - dependencies: - array-filter "^1.0.0" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1669,26 +1643,6 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -deep-equal@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0" - integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA== - dependencies: - es-abstract "^1.17.5" - es-get-iterator "^1.1.0" - is-arguments "^1.0.4" - is-date-object "^1.0.2" - is-regex "^1.0.5" - isarray "^2.0.5" - object-is "^1.1.2" - object-keys "^1.1.1" - object.assign "^4.1.0" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" - which-boxed-primitive "^1.0.1" - which-collection "^1.0.1" - which-typed-array "^1.1.2" - deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -2047,7 +2001,7 @@ error-inject@^1.0.0: resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc= -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -2064,19 +2018,6 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstrac string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" -es-get-iterator@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== - dependencies: - es-abstract "^1.17.4" - has-symbols "^1.0.1" - is-arguments "^1.0.4" - is-map "^2.0.1" - is-set "^2.0.1" - is-string "^1.0.5" - isarray "^2.0.5" - es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3069,21 +3010,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" - integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -3091,11 +3022,6 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" - integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -3132,7 +3058,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1, is-date-object@^1.0.2: +is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== @@ -3207,21 +3133,11 @@ is-installed-globally@^0.3.1: global-dirs "^2.0.1" is-path-inside "^3.0.1" -is-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" - integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== - is-npm@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== -is-number-object@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3258,21 +3174,11 @@ is-regex@^1.0.5: dependencies: has "^1.0.3" -is-set@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" - integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-string@^1.0.4, is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -3289,31 +3195,11 @@ is-type-of@^1.0.0: is-class-hotfix "~0.0.6" isstream "~0.1.2" -is-typed-array@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" - integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== - dependencies: - available-typed-arrays "^1.0.0" - es-abstract "^1.17.4" - foreach "^2.0.5" - has-symbols "^1.0.1" - is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -is-weakset@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" - integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== - is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -3339,11 +3225,6 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - isbinaryfile@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" @@ -4751,14 +4632,6 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== -object-is@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -5480,19 +5353,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexparam@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f" - integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g== - regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -5821,14 +5681,6 @@ shortid@^2.2.8: dependencies: nanoid "^2.1.0" -side-channel@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" - integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== - dependencies: - es-abstract "^1.17.0-next.1" - object-inspect "^1.7.0" - signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -6237,11 +6089,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -svelte@^3.9.2: - version "3.22.3" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.22.3.tgz#6af3bdcfea44c2fadbf17a32c479f49bdf1aba4b" - integrity sha512-DumSy5eWPFPlMUGf3+eHyFSkt5yLqyAmMdCuXOE4qc5GtFyLxwTAGKZmgKmW2jmbpTTeFQ/fSQfDBQbl9Eo7yw== - symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -6722,44 +6569,11 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -which-boxed-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1" - integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ== - dependencies: - is-bigint "^1.0.0" - is-boolean-object "^1.0.0" - is-number-object "^1.0.3" - is-string "^1.0.4" - is-symbol "^1.0.2" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-typed-array@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" - integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== - dependencies: - available-typed-arrays "^1.0.2" - es-abstract "^1.17.5" - foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" - which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From 0d637260beae86996779ca8032275271fe35440b Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Thu, 28 May 2020 22:26:32 +0100 Subject: [PATCH 014/161] create model & record - validation hooked up again --- .../modals/CreateEditModel/FieldView.svelte | 52 +++++++++++-------- .../modals/CreateEditRecord.svelte | 25 ++++++--- .../modals/RecordFieldControl.svelte | 26 ++++++++-- 3 files changed, 69 insertions(+), 34 deletions(-) diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/FieldView.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/FieldView.svelte index 65934a032d..ae78405ccb 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/FieldView.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/FieldView.svelte @@ -13,17 +13,33 @@ const FIELD_TYPES = ["string", "number", "boolean"] - export let field = { type: "string" } + export let field = { type: "string", constraints: { type: "string", presence: false } } export let schema export let goBack let errors = [] let draftField = cloneDeep(field) + + let type = field.type + let constraints = field.constraints + let required = field.constraints.presence && !field.constraints.presence.allowEmpty const save = () => { + constraints.presence = required ? { allowEmpty: false } : false + draftField.constraints = constraints + draftField.type = type schema[field.name] = draftField goBack() } + + $: constraints = + type === "string" ? { type: "string", length: {}, presence: false } + : type === "number" ? { type: "number", presence: false, numericality: {} } + : type === "boolean" ? { type: "boolean", presence: false } + : type === "datetime" ? { type: "date", datetime: {}, presence: false } + : type.startsWith('array') ? { type: "array", presence: false } + : { type: "string", presence: false } +
@@ -34,30 +50,22 @@ + + + - {#if field.type === 'string'} - - - {:else if field.type === 'boolean'} + {#if type === 'string'} + + + {:else if type === 'datetime'} - - {:else if field.format === 'datetime'} - - - - {:else if field.type === 'number'} - - - {:else if draftField.type.startsWith('array')} - - - + + + {:else if type === 'number'} + + {/if}
diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditRecord.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditRecord.svelte index 49749a70a1..d5320eca0d 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditRecord.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditRecord.svelte @@ -8,10 +8,6 @@ import * as api from "../api" import ErrorsBox from "components/common/ErrorsBox.svelte" - const CLASS_NAME_MAP = { - boolean: "uk-checkbox", - } - export let record = {} export let onClosed @@ -27,14 +23,25 @@ function closed() { onClosed() } - + + const isSelect = meta => + meta.type === "string" + && meta.constraints + && meta.constraints.inclusion + && meta.constraints.inclusion.length > 0 + function determineInputType(meta) { if (meta.type === "datetime") return "date" if (meta.type === "number") return "number" if (meta.type === "boolean") return "checkbox" - + if (isSelect(meta)) return "select" + return "text" } + + function determineOptions(meta) { + return isSelect(meta) ? meta.constraints.inclusion : [] + } async function saveRecord() { const recordResponse = await api.saveRecord( @@ -46,7 +53,9 @@ $backendUiStore.selectedModel._id ) if (recordResponse.errors) { - errors = recordResponse.errors + errors = Object.keys(recordResponse.errors) + .map(k => ({dataPath: k, message: recordResponse.errors[k]})) + .flat() return } @@ -65,8 +74,8 @@ {#each modelSchema as [key, meta]}
diff --git a/packages/builder/src/components/database/ModelDataTable/modals/RecordFieldControl.svelte b/packages/builder/src/components/database/ModelDataTable/modals/RecordFieldControl.svelte index 0839180601..b0571a2353 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/RecordFieldControl.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/RecordFieldControl.svelte @@ -3,10 +3,16 @@ export let value = "" export let label export let errors = [] - export let className = "uk-input" - + export let options = [] + let checked = type === "checkbox" ? value : false - + + const determineClassName = type => { + if (type === "checkbox") return "uk-checkbox" + if (type === "select") return "uk-select" + return "uk-input" + } + const handleInput = event => { if (event.target.type === "checkbox") { value = event.target.checked @@ -23,11 +29,23 @@ + +{#if type === "select"} + +{:else} 0} {checked} {type} {value} on:input={handleInput} on:change={handleInput} /> +{/if} From 7a3b36839955cf4fde2ee940a4b7ca29a067245b Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 28 May 2020 23:31:55 +0100 Subject: [PATCH 015/161] make alerts live, more hooks, app notifications --- packages/builder/package.json | 1 + packages/builder/rollup.config.js | 2 +- packages/builder/src/App.svelte | 5 +- packages/builder/src/budibase.css | 3 +- .../builderStore/store/workflow/Workflow.js | 8 ++- .../src/builderStore/store/workflow/index.js | 2 +- .../EventsEditor/EventsEditor.svelte | 1 + .../EventsEditor/StateBindingCascader.svelte | 34 +++++++----- .../src/pages/[application]/_layout.svelte | 14 +++-- .../SetupPanel/DeleteWorkflowModal.svelte | 2 + .../workflow/SetupPanel/SetupPanel.svelte | 5 +- .../SetupPanel/WorkflowBlockSetup.svelte | 21 +++++--- .../WorkflowBuilder/WorkflowBuilder.svelte | 50 ++++++++++++----- .../WorkflowBuilder/svelte-flows/Arrow.svelte | 9 ++++ .../svelte-flows/FlowChart.svelte | 3 +- .../svelte-flows/FlowItem.svelte | 32 +++++++++-- .../WorkflowPanel/BlockList/BlockList.svelte | 9 +++- .../WorkflowList/CreateWorkflowModal.svelte | 2 + .../WorkflowList/WorkflowList.svelte | 13 +++-- .../WorkflowPanel/WorkflowPanel.svelte | 22 -------- .../WorkflowPanel/blockDefinitions.js | 53 +++++++++++++++---- .../client/src/api/workflow/orchestrator.js | 9 +++- 22 files changed, 208 insertions(+), 92 deletions(-) create mode 100644 packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/Arrow.svelte diff --git a/packages/builder/package.json b/packages/builder/package.json index 0926b82fb0..1cb53bc99b 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -38,6 +38,7 @@ ] }, "dependencies": { + "@beyonk/svelte-notifications": "^2.0.3", "@budibase/client": "^0.0.32", "@nx-js/compiler-util": "^2.0.0", "codemirror": "^5.51.0", diff --git a/packages/builder/rollup.config.js b/packages/builder/rollup.config.js index fd7c487c3f..ae9a7e069e 100644 --- a/packages/builder/rollup.config.js +++ b/packages/builder/rollup.config.js @@ -152,7 +152,7 @@ export default { { find: "builderStore", replacement: path.resolve(projectRootDir, "src/builderStore"), - }, + } ], customResolver, }), diff --git a/packages/builder/src/App.svelte b/packages/builder/src/App.svelte index c6b76090f9..54968a52c2 100644 --- a/packages/builder/src/App.svelte +++ b/packages/builder/src/App.svelte @@ -7,6 +7,8 @@ import AppNotification, { showAppNotification, } from "components/common/AppNotification.svelte" + import { NotificationDisplay } from '@beyonk/svelte-notifications' + function showErrorBanner() { showAppNotification({ @@ -24,8 +26,7 @@ $basepath = "/_builder" - - + diff --git a/packages/builder/src/budibase.css b/packages/builder/src/budibase.css index f433b016da..2117926dd2 100644 --- a/packages/builder/src/budibase.css +++ b/packages/builder/src/budibase.css @@ -77,7 +77,8 @@ } .budibase__input { - width: 250px; + width: 100%; + max-width: 250px; height: 35px; border-radius: 3px; border: 1px solid #DBDBDB; diff --git a/packages/builder/src/builderStore/store/workflow/Workflow.js b/packages/builder/src/builderStore/store/workflow/Workflow.js index b3e50466f7..4a7daa5279 100644 --- a/packages/builder/src/builderStore/store/workflow/Workflow.js +++ b/packages/builder/src/builderStore/store/workflow/Workflow.js @@ -1,6 +1,7 @@ import mustache from "mustache" // TODO: tidy up import import blockDefinitions from "../../../pages/[application]/workflow/WorkflowPanel/blockDefinitions" +import { generate } from "shortid" /** * Class responsible for the traversing of the workflow definition. @@ -14,7 +15,10 @@ export default class Workflow { addBlock(block) { let node = this.workflow.definition while (node.next) node = node.next - node.next = block + node.next = { + id: generate(), + ...block + } } updateBlock(updatedBlock, id) { @@ -70,7 +74,7 @@ export default class Workflow { type: block.type, params: block.params, args, - heading: block.actionId, + heading: definition.actionId, body: mustache.render(tagline, args), }) diff --git a/packages/builder/src/builderStore/store/workflow/index.js b/packages/builder/src/builderStore/store/workflow/index.js index fcdc299271..971312c2ef 100644 --- a/packages/builder/src/builderStore/store/workflow/index.js +++ b/packages/builder/src/builderStore/store/workflow/index.js @@ -82,7 +82,7 @@ const workflowActions = store => ({ }, deleteWorkflowBlock: block => { store.update(state => { - state.currentWorkflow.deleteBlock(block._id) + state.currentWorkflow.deleteBlock(block.id) state.selectedWorkflowBlock = null return state }) diff --git a/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte b/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte index 2a61912173..d897ad9c2f 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte @@ -32,6 +32,7 @@ $: { events = Object.keys(component) + // TODO: use real events .filter(propName => ["onChange", "onClick", "onLoad"].includes(propName)) .map(propName => ({ name: propName, diff --git a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte index e3811cc176..09aa7ae9ad 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte @@ -9,7 +9,7 @@ EVENT_TYPE_MEMBER_NAME, allHandlers, } from "components/common/eventHandlers" - import { store } from "builderStore" + import { store, workflowStore } from "builderStore" import StateBindingOptions from "../PropertyCascader/StateBindingOptions.svelte" import { ArrowDownIcon } from "components/common/Icons/" @@ -22,18 +22,26 @@
{parameter.name}
- - - {#if isOpen} - { - onChange(option) - isOpen = false - }} /> + {#if parameter.name === 'workflow'} + + {:else} + + + {#if isOpen} + { + onChange(option) + isOpen = false + }} /> + {/if} {/if}
diff --git a/packages/builder/src/pages/[application]/_layout.svelte b/packages/builder/src/pages/[application]/_layout.svelte index 5de5e3379b..6e1cd982e8 100644 --- a/packages/builder/src/pages/[application]/_layout.svelte +++ b/packages/builder/src/pages/[application]/_layout.svelte @@ -56,11 +56,10 @@ on:click={() => $goto(`/settings`)}> - (location = `/${application}`)}> - + + + +
@@ -84,6 +83,11 @@ flex-direction: column; } + a { + text-transform: none; + color: var(--ink-lighter); + } + .top-nav { flex: 0 0 auto; height: 60px; diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/DeleteWorkflowModal.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/DeleteWorkflowModal.svelte index 82af963cfc..a3eef9d9d2 100644 --- a/packages/builder/src/pages/[application]/workflow/SetupPanel/DeleteWorkflowModal.svelte +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/DeleteWorkflowModal.svelte @@ -1,5 +1,6 @@ diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte index b23e7f4c4a..a7417002de 100644 --- a/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte @@ -1,13 +1,14 @@ diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte index f3d0bdaba8..e719da9fc2 100644 --- a/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte @@ -1,5 +1,5 @@ @@ -18,7 +19,15 @@
- {#if type === 'number'} + {#if Array.isArray(type)} + + {:else if type === 'number'} {:else if type === 'component'} - + {:else if type === 'string'} import { onMount } from "svelte" import { workflowStore, backendUiStore } from "builderStore" + import { notifier } from "@beyonk/svelte-notifications" import Flowchart from "./svelte-flows/Flowchart.svelte" import api from "builderStore/api" - let canvas - let workflow + let selectedWorkflow let uiTree let instanceId = $backendUiStore.selectedDatabase._id - $: workflow = $workflowStore.currentWorkflow + // TODO: better naming + $: selectedWorkflow = $workflowStore.currentWorkflow - $: if (workflow) uiTree = workflow ? workflow.createUiTree() : [] + $: workflowLive = selectedWorkflow && selectedWorkflow.workflow.live + + $: if (selectedWorkflow) + uiTree = selectedWorkflow ? selectedWorkflow.createUiTree() : [] + + $: instanceId = $backendUiStore.selectedDatabase._id function onDelete(block) { // TODO finish @@ -24,17 +30,37 @@ return state }) } + + function setWorkflowLive(live) { + const { workflow } = selectedWorkflow + workflow.live = live + workflowStore.actions.save({ instanceId, workflow }) + if (live) { + notifier.info(`Workflow ${workflow.name} enabled.`) + } else { + notifier.danger(`Workflow ${workflow.name} disabled.`) + } + }
- - + {#if selectedWorkflow} + + + {/if}
@@ -61,11 +87,11 @@ margin-right: 24px; } - .play-button:hover { + .play-button.highlighted { background: var(--primary); } - .stop-button:hover { + .stop-button.highlighted { background: var(--coral); } diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/Arrow.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/Arrow.svelte new file mode 100644 index 0000000000..f5b855c341 --- /dev/null +++ b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/Arrow.svelte @@ -0,0 +1,9 @@ + + + + diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte index dc35b682c4..40c54246e9 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte @@ -1,5 +1,6 @@ -
-
{block.heading}
+
+
+ {#if block.type === 'TRIGGER'} + + When this happens... + {:else if block.type === 'ACTION'} + + Do this... + {:else if block.type === 'LOGIC'} + + Only continue if... + {/if} +

{@html block.body} @@ -21,7 +32,6 @@ div { width: 320px; padding: 20px; - margin-bottom: 60px; border-radius: 5px; transition: 0.3s all; box-shadow: 0 4px 30px 0 rgba(57, 60, 68, 0.08); @@ -30,6 +40,18 @@ color: var(--white); } + header { + font-size: 16px; + font-weight: 500; + display: flex; + align-items: center; + } + + header i { + font-size: 20px; + margin-right: 5px; + } + .ACTION { background-color: var(--white); color: var(--font); diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/BlockList.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/BlockList.svelte index 8db781af36..e288e78e94 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/BlockList.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/BlockList.svelte @@ -52,16 +52,21 @@ grid-gap: 5px; grid-auto-flow: column; grid-auto-columns: 1fr 1fr 1fr; + margin-bottom: 10px; } .subtabs span { + transition: 0.3s all; text-align: center; - color: var(--font); + color: var(--dark-grey); font-weight: 500; + padding: 10px; } .subtabs span.selected { - border-bottom: 4px solid var(--primary); + background: var(--dark-grey); + color: var(--white); + border-radius: 2px; } .subtabs span:not(.selected) { diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte index 510b21704e..0a31cf3702 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte @@ -1,5 +1,6 @@ diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte index 2218414ad9..2dc3e05a80 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte @@ -1,5 +1,6 @@ @@ -82,7 +85,7 @@ display: flex; align-items: center; border-radius: 3px; - height: 40px; + height: 32px; font-weight: 500; } diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowPanel.svelte b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowPanel.svelte index c9625d2441..016c789c64 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowPanel.svelte +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowPanel.svelte @@ -5,17 +5,6 @@ import api from "builderStore/api" import blockDefinitions from "./blockDefinitions" - const WORKFLOW_TABS = [ - { - name: "Workflows", - key: "WORKFLOWS", - }, - { - name: "Add", - key: "ADD", - }, - ] - let selectedTab = "WORKFLOWS" let definitions = [] @@ -57,15 +46,4 @@ span:not(.selected) { color: var(--dark-grey); } - - .delete-workflow-button { - font-family: Roboto; - width: 100%; - border: solid 1px #f2f2f2; - border-radius: 2px; - background: var(--white); - height: 32px; - font-size: 12px; - font-weight: 500; - } diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js index c0d81b95e8..1d6402ebe5 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js @@ -2,7 +2,7 @@ const ACTION = { SET_STATE: { name: "Update UI State", tagline: "Update {{path}} to {{value}}", - icon: "", + icon: "ri-refresh-line", description: "Update your User Interface with some data.", environment: "CLIENT", params: { @@ -38,8 +38,8 @@ const ACTION = { }, }, FIND_RECORD: { - description: "Delete a record from your database.", - icon: "ri-delete-bin-line", + description: "Find a record in your database.", + icon: "ri-search-line", name: "Find Record", environment: "SERVER", params: { @@ -59,7 +59,7 @@ const ACTION = { }, SEND_EMAIL: { description: "Send an email.", - tagline: "Send email to {{to}}", + tagline: "Send email to {{to}}", icon: "ri-mail-open-fill", name: "Send Email", environment: "SERVER", @@ -73,9 +73,9 @@ const ACTION = { } const TRIGGER = { - SAVE_RECORD: { + RECORD_SAVED: { name: "Record Saved", - icon: "ri-delete-bin-line", + icon: "ri-save-line", tagline: "Record is added to {{model}}", description: "Save a record to your database.", environment: "SERVER", @@ -83,39 +83,72 @@ const TRIGGER = { model: "model", }, }, + RECORD_DELETED: { + name: "Record Deleted", + icon: "ri-delete-bin-line", + tagline: "Record is deleted from {{model}}", + description: "Fired when a record is deleted from your database.", + environment: "SERVER", + params: { + model: "model" + }, + }, CLICK: { name: "Click", icon: "ri-cursor-line", + tagline: "{{component}} is clicked", description: "Trigger when you click on an element in the UI.", + environment: "CLIENT", + params: { + component: "component" + } }, LOAD: { name: "Load", icon: "ri-loader-line", + tagline: "{{component}} is loaded", description: "Trigger an element has finished loading.", + environment: "CLIENT", + params: { + component: "component" + } }, INPUT: { name: "Input", icon: "ri-text", - description: "Trigger when you environment into an input box.", + tagline: "Text entered into {{component}", + description: "Trigger when you type into an input box.", + environment: "CLIENT", + params: { + component: "component" + } }, } const LOGIC = { FILTER: { name: "Filter", - tagline: "{{key}} {{condition}} {{value}}", + tagline: "{{field}} {{condition}} {{value}}", icon: "ri-git-branch-line", description: "Filter any workflows which do not meet certain conditions.", environment: "CLIENT", params: { - if: "string", + field: "string", + condition: [ + "equals" + ], + value: "string" }, }, DELAY: { name: "Delay", - icon: "ri-git-branch-line", + icon: "ri-time-fill", + tagline: "Delay for {{time}} milliseconds", description: "Delay the workflow until an amount of time has passed.", environment: "CLIENT", + params: { + time: "number", + }, }, } diff --git a/packages/client/src/api/workflow/orchestrator.js b/packages/client/src/api/workflow/orchestrator.js index afa92d007e..532219eebc 100644 --- a/packages/client/src/api/workflow/orchestrator.js +++ b/packages/client/src/api/workflow/orchestrator.js @@ -1,7 +1,7 @@ import get from "lodash/fp/get" /** - * The workflow orhestrator is a class responsible for executing workflows. + * The workflow orchestrator is a class responsible for executing workflows. * It relies on the strategy pattern, which allows composable behaviour to be * passed into its execute() function. This allows custom execution behaviour based * on where the orchestrator is run. @@ -30,6 +30,7 @@ export default class Orchestrator { // Execute a workflow from a running budibase app export const clientStrategy = { + delay: ms => new Promise(resolve => setTimeout(resolve, ms)), context: {}, bindContextArgs: function(args, api) { const mappedArgs = { ...args } @@ -80,6 +81,10 @@ export const clientStrategy = { SET_STATE: block.args, } } + + if (block.actionId === "DELAY") { + await this.delay(block.args.time) + } } // this workflow block gets executed on the server @@ -102,6 +107,6 @@ export const clientStrategy = { console.log("workflowContext", this.context) // TODO: clean this up, don't pass all those args - this.run({ workflow: workflow.next, instanceId, api }) + await this.run({ workflow: workflow.next, instanceId, api }) }, } From a9a0a35c5a294150d8642a460db7b1940e0eba5e Mon Sep 17 00:00:00 2001 From: Conor_Mack Date: Fri, 29 May 2020 10:45:19 +0100 Subject: [PATCH 016/161] Tidyup --- .../userInterface/OptionSelect.svelte | 26 ++++++++++--------- .../userInterface/SettingsView.svelte | 4 --- packages/builder/src/helpers.js | 13 ++++++++++ 3 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 packages/builder/src/helpers.js diff --git a/packages/builder/src/components/userInterface/OptionSelect.svelte b/packages/builder/src/components/userInterface/OptionSelect.svelte index 8ac0ca4184..197d3e6a0d 100644 --- a/packages/builder/src/components/userInterface/OptionSelect.svelte +++ b/packages/builder/src/components/userInterface/OptionSelect.svelte @@ -1,7 +1,6 @@ - - {#if panelDefinition.length > 0} {#each panelDefinition as definition} {#if propExistsOnComponentDef(definition.key)} diff --git a/packages/builder/src/helpers.js b/packages/builder/src/helpers.js new file mode 100644 index 0000000000..ee2053d8e4 --- /dev/null +++ b/packages/builder/src/helpers.js @@ -0,0 +1,13 @@ +export const buildStyle = styles => { + let str = "" + for (let s in styles) { + if (styles[s]) { + str += `${s}: ${styles[s]}; ` + } + } + return str +} + +export const convertCamel = str => { + return str.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`) +} From 6a9e5a9dd1a0a72dce3e6b4de2d76915265a8b71 Mon Sep 17 00:00:00 2001 From: Conor_Mack Date: Fri, 29 May 2020 10:49:51 +0100 Subject: [PATCH 017/161] Optionselect hover style fix --- .../builder/src/components/userInterface/OptionSelect.svelte | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/components/userInterface/OptionSelect.svelte b/packages/builder/src/components/userInterface/OptionSelect.svelte index 197d3e6a0d..bd05b3a171 100644 --- a/packages/builder/src/components/userInterface/OptionSelect.svelte +++ b/packages/builder/src/components/userInterface/OptionSelect.svelte @@ -205,13 +205,14 @@ ul { list-style-type: none; margin: 0; - padding: 5px 10px; + padding: 5px 0px; } li { height: auto; padding: 5px 0px; cursor: pointer; + padding-left: 10px } li:hover { From 6b00a079d1f25a6d0994c5105fc046595a07138e Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Fri, 29 May 2020 13:28:12 +0100 Subject: [PATCH 018/161] added common switcher component, and moved add component to left --- .../src/components/common/Switcher.svelte | 74 ++++++++++ .../ComponentSelectionList.svelte | 2 +- .../ComponentsPaneSwitcher.svelte | 81 ----------- .../userInterface/FrontendNavigatePane.svelte | 126 +++++++++++++++++ .../userInterface/ItemTab/Tab.svelte | 1 - .../[application]/frontend/_layout.svelte | 132 +++--------------- 6 files changed, 221 insertions(+), 195 deletions(-) create mode 100644 packages/builder/src/components/common/Switcher.svelte delete mode 100644 packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte create mode 100644 packages/builder/src/components/userInterface/FrontendNavigatePane.svelte diff --git a/packages/builder/src/components/common/Switcher.svelte b/packages/builder/src/components/common/Switcher.svelte new file mode 100644 index 0000000000..cf23e39507 --- /dev/null +++ b/packages/builder/src/components/common/Switcher.svelte @@ -0,0 +1,74 @@ + + +

+ +
+ + {#each tabs as tab} + + {/each} + +
+ +
+ {#if selectedIndex === 0} + + {:else if selectedIndex === 1} + + {:else if selectedIndex === 2} + + {:else if selectedIndex === 3} + + {/if} +
+ +
+ + diff --git a/packages/builder/src/components/userInterface/ComponentSelectionList.svelte b/packages/builder/src/components/userInterface/ComponentSelectionList.svelte index 0bf848e4a8..2a46e5d6f6 100644 --- a/packages/builder/src/components/userInterface/ComponentSelectionList.svelte +++ b/packages/builder/src/components/userInterface/ComponentSelectionList.svelte @@ -32,7 +32,7 @@ const onComponentChosen = component => { store.addChildComponent(component._component) - toggleTab() + toggleTab("Navigate") } diff --git a/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte b/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte deleted file mode 100644 index de523cd7bf..0000000000 --- a/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte +++ /dev/null @@ -1,81 +0,0 @@ - - -
- {#if $store.currentFrontEndType === 'page' || $store.screens.length} -
- - - - - -
- -
- {#if selected === PROPERTIES_TAB} - - {/if} - - {#if selected === COMPONENT_SELECTION_TAB} - - {/if} - -
- {/if} - -
- - diff --git a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte new file mode 100644 index 0000000000..8b4b8e1843 --- /dev/null +++ b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte @@ -0,0 +1,126 @@ + + +
+ + + +
+ +
+ + + +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/packages/builder/src/components/userInterface/ItemTab/Tab.svelte b/packages/builder/src/components/userInterface/ItemTab/Tab.svelte index 80f1733cc1..f811a56670 100644 --- a/packages/builder/src/components/userInterface/ItemTab/Tab.svelte +++ b/packages/builder/src/components/userInterface/ItemTab/Tab.svelte @@ -3,7 +3,6 @@ const dispatch = createEventDispatcher() import Item from "./Item.svelte" - import { store } from "builderStore" export let list let category = list diff --git a/packages/builder/src/pages/[application]/frontend/_layout.svelte b/packages/builder/src/pages/[application]/frontend/_layout.svelte index c480a75bfa..deea52ce3e 100644 --- a/packages/builder/src/pages/[application]/frontend/_layout.svelte +++ b/packages/builder/src/pages/[application]/frontend/_layout.svelte @@ -2,18 +2,17 @@ import { store, backendUiStore } from "builderStore" import { goto } from "@sveltech/routify" import { onMount } from "svelte" - import ComponentsHierarchy from "components/userInterface/ComponentsHierarchy.svelte" import ComponentsHierarchyChildren from "components/userInterface/ComponentsHierarchyChildren.svelte" - import PageLayout from "components/userInterface/PageLayout.svelte" - import PagesList from "components/userInterface/PagesList.svelte" import IconButton from "components/common/IconButton.svelte" - import NewScreen from "components/userInterface/NewScreen.svelte" import CurrentItemPreview from "components/userInterface/AppPreview" import PageView from "components/userInterface/PageView.svelte" - import ComponentsPaneSwitcher from "components/userInterface/ComponentsPaneSwitcher.svelte" + import ComponentPropertiesPanel from "components/userInterface/ComponentPropertiesPanel.svelte" + import ComponentSelectionList from "components/userInterface/ComponentSelectionList.svelte" + import Switcher from "components/common/Switcher.svelte" import ConfirmDialog from "components/common/ConfirmDialog.svelte" import { last } from "lodash/fp" import { AddIcon } from "components/common/Icons" + import FrontendNavigatePane from "components/userInterface/FrontendNavigatePane.svelte" $: instances = $store.appInstances @@ -27,13 +26,10 @@ } }) - let newScreenPicker + let confirmDeleteDialog let componentToDelete = "" - const newScreen = () => { - newScreenPicker.show() - } let settingsView const settings = () => { @@ -45,6 +41,8 @@ confirmDeleteDialog.show() } + let leftNavSwitcher + const lastPartOfName = c => (c ? last(c.split("/")) : "") @@ -52,54 +50,32 @@
-
- - -
- - - -
- -
- - -
+
+
+ +
+ {#if $store.currentPageName && $store.currentPageName.length > 0} + {/if}
{#if $store.currentFrontEndType === 'screen' || $store.currentFrontEndType === 'page'}
- +
{/if}
- + From cd9f539a0908b79616b1317dbc4fe1497f673cd0 Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Fri, 29 May 2020 14:06:25 +0100 Subject: [PATCH 019/161] configurable logLevel - defaults to error --- packages/server/.env.template | 5 ++++- packages/server/scripts/jestSetup.js | 1 + packages/server/src/app.js | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/server/.env.template b/packages/server/.env.template index bc2e7954a4..170d391520 100644 --- a/packages/server/.env.template +++ b/packages/server/.env.template @@ -12,4 +12,7 @@ ADMIN_SECRET={{adminSecret}} JWT_SECRET={{cookieKey1}} # port to run http server on -PORT=4001 \ No newline at end of file +PORT=4001 + +# error level for koa-pino +LOG_LEVEL=error \ No newline at end of file diff --git a/packages/server/scripts/jestSetup.js b/packages/server/scripts/jestSetup.js index 5289aef9f4..ab5bc83885 100644 --- a/packages/server/scripts/jestSetup.js +++ b/packages/server/scripts/jestSetup.js @@ -5,3 +5,4 @@ process.env.JWT_SECRET = "test-jwtsecret" process.env.CLIENT_ID = "test-client-id" process.env.BUDIBASE_DIR = tmpdir("budibase-unittests") process.env.ADMIN_SECRET = "test-admin-secret" +process.env.LOG_LEVEL = "silent" diff --git a/packages/server/src/app.js b/packages/server/src/app.js index bec5f8d16e..f23aeca02c 100644 --- a/packages/server/src/app.js +++ b/packages/server/src/app.js @@ -15,7 +15,7 @@ app.use( prettyPrint: { levelFirst: true, }, - level: process.env.NODE_ENV === "jest" ? "silent" : "info", + level: env.LOG_LEVEL || "error", }) ) From e648dc80e836bada7a33aa39a2d3a82bbf3f1c9a Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 29 May 2020 14:06:10 +0100 Subject: [PATCH 020/161] refactor client library --- .../builder/src/builderStore/store/index.js | 2 - .../AppPreview/CurrentItemPreview.svelte | 3 +- .../AppPreview/iframeTemplate.js | 1 - .../SetupPanel/WorkflowBlockSetup.svelte | 5 + .../WorkflowPanel/blockDefinitions.js | 4 +- .../appDirectoryTemplate/pages/main/page.json | 3 +- .../pages/unauthenticated/page.json | 3 +- .../cli/src/commands/new/page.template.json | 3 +- packages/client/package.json | 1 + packages/client/src/api/index.js | 6 - packages/client/src/api/listRecords.js | 19 -- packages/client/src/api/loadRecord.js | 19 -- packages/client/src/api/saveRecord.js | 29 -- .../client/src/api/workflow/orchestrator.js | 38 ++- packages/client/src/createApp.js | 8 +- packages/client/src/index.js | 11 +- packages/client/src/render/attachChildren.js | 4 - .../src/render/prepareRenderComponent.js | 11 +- packages/client/src/state/bbComponentApi.js | 17 +- packages/client/src/state/coreHandlers.js | 71 ----- packages/client/src/state/eventHandlers.js | 2 +- packages/client/src/state/getState.js | 67 +++-- packages/client/src/state/parseBinding.js | 2 +- packages/client/src/state/setState.js | 38 +-- packages/client/src/state/stateManager.js | 103 ++++--- .../client/src/state/stateManager/index.js | 283 ------------------ packages/client/tests/testAppDef.js | 32 +- .../server/src/utilities/builder/buildPage.js | 1 - 28 files changed, 161 insertions(+), 625 deletions(-) delete mode 100644 packages/client/src/api/listRecords.js delete mode 100644 packages/client/src/api/loadRecord.js delete mode 100644 packages/client/src/api/saveRecord.js delete mode 100644 packages/client/src/state/coreHandlers.js delete mode 100644 packages/client/src/state/stateManager/index.js diff --git a/packages/builder/src/builderStore/store/index.js b/packages/builder/src/builderStore/store/index.js index f4d47064be..2009737254 100644 --- a/packages/builder/src/builderStore/store/index.js +++ b/packages/builder/src/builderStore/store/index.js @@ -155,7 +155,6 @@ const createScreen = store => (screenName, route, layoutComponentName) => { description: "", url: "", _css: "", - uiFunctions: "", props: createProps(rootComponent).props, } @@ -281,7 +280,6 @@ const _savePage = async s => { const page = s.pages[s.currentPageName] await api.post(`/_builder/api/${s.appId}/pages/${s.currentPageName}`, { page: { componentLibraries: s.pages.componentLibraries, ...page }, - uiFunctions: s.currentPageFunctions, screens: page._screens, }) } diff --git a/packages/builder/src/components/userInterface/AppPreview/CurrentItemPreview.svelte b/packages/builder/src/components/userInterface/AppPreview/CurrentItemPreview.svelte index 27a4851c8d..ad52602afc 100644 --- a/packages/builder/src/components/userInterface/AppPreview/CurrentItemPreview.svelte +++ b/packages/builder/src/components/userInterface/AppPreview/CurrentItemPreview.svelte @@ -116,8 +116,7 @@ stylesheetLinks, selectedComponentType, selectedComponentId, - frontendDefinition: JSON.stringify(frontendDefinition), - currentPageFunctions: $store.currentPageFunctions, + frontendDefinition: JSON.stringify(frontendDefinition) })} /> {/if}
diff --git a/packages/builder/src/components/userInterface/AppPreview/iframeTemplate.js b/packages/builder/src/components/userInterface/AppPreview/iframeTemplate.js index dd2ca69dbb..da17bead3f 100644 --- a/packages/builder/src/components/userInterface/AppPreview/iframeTemplate.js +++ b/packages/builder/src/components/userInterface/AppPreview/iframeTemplate.js @@ -36,7 +36,6 @@ export default ({ diff --git a/packages/builder/src/components/userInterface/PagesList.svelte b/packages/builder/src/components/userInterface/PagesList.svelte index 562c813865..823f922bb6 100644 --- a/packages/builder/src/components/userInterface/PagesList.svelte +++ b/packages/builder/src/components/userInterface/PagesList.svelte @@ -20,7 +20,8 @@ }, ] - store.setCurrentPage($params.page ? $params.page : "main") + if (!$store.currentPageName) + store.setCurrentPage($params.page ? $params.page : "main") const changePage = id => { store.setCurrentPage(id) diff --git a/packages/builder/src/pages/[application]/frontend/_layout.svelte b/packages/builder/src/pages/[application]/frontend/_layout.svelte index deea52ce3e..293623f8d2 100644 --- a/packages/builder/src/pages/[application]/frontend/_layout.svelte +++ b/packages/builder/src/pages/[application]/frontend/_layout.svelte @@ -55,7 +55,8 @@
-
+ +
From b4b90fcaebc6f1179ab7cbaa6f3ff0b0ff7b8afc Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 29 May 2020 16:06:23 +0100 Subject: [PATCH 022/161] styling, bug fixes, client library state updates --- .../builderStore/store/workflow/Workflow.js | 9 +- .../workflow/SetupPanel/SetupPanel.svelte | 42 ++--- .../WorkflowBuilder/WorkflowBuilder.svelte | 10 +- .../WorkflowList/WorkflowList.svelte | 6 + .../WorkflowPanel/WorkflowPanel.svelte | 36 +++-- .../[application]/workflow/_layout.svelte | 8 +- .../client/src/api/workflow/orchestrator.js | 19 +++ packages/client/src/createApp.js | 24 ++- packages/client/src/state/bbComponentApi.js | 9 +- packages/client/src/state/eventHandlers.js | 6 +- packages/client/src/state/stateManager.js | 143 +++++++++--------- 11 files changed, 166 insertions(+), 146 deletions(-) diff --git a/packages/builder/src/builderStore/store/workflow/Workflow.js b/packages/builder/src/builderStore/store/workflow/Workflow.js index 4a7daa5279..2b495ef49b 100644 --- a/packages/builder/src/builderStore/store/workflow/Workflow.js +++ b/packages/builder/src/builderStore/store/workflow/Workflow.js @@ -40,8 +40,13 @@ export default class Workflow { block = block.next } - // delete the block found - previous.next = block.next || {} + // delete the block matching your id + if (!block.next) { + delete previous.next + } else { + previous.next = block.next + } + } createUiTree() { diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte b/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte index a7417002de..d91eb3ffaf 100644 --- a/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte +++ b/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte @@ -1,14 +1,15 @@ @@ -31,15 +32,15 @@
Setup
-
- {#if workflowBlock} - - - {:else if $workflowStore.currentWorkflow} + {#if workflowBlock} + + + {:else if $workflowStore.currentWorkflow} +
@@ -54,19 +55,22 @@ Some User Access Stuff Here
- - {/if} -
+
+ + {/if}
diff --git a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte index 8b4b8e1843..565301213d 100644 --- a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte +++ b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte @@ -3,7 +3,6 @@ import ComponentsHierarchy from "components/userInterface/ComponentsHierarchy.svelte" import PageLayout from "components/userInterface/PageLayout.svelte" import PagesList from "components/userInterface/PagesList.svelte" - import { AddIcon } from "components/common/Icons" import NewScreen from "components/userInterface/NewScreen.svelte" const newScreen = () => { @@ -13,64 +12,44 @@ let newScreenPicker -
- + - -
- -
+ -
-
- - + diff --git a/packages/builder/src/components/userInterface/UserInterfaceRoot.svelte b/packages/builder/src/components/userInterface/UserInterfaceRoot.svelte index 8b600047d8..3fe67e6482 100644 --- a/packages/builder/src/components/userInterface/UserInterfaceRoot.svelte +++ b/packages/builder/src/components/userInterface/UserInterfaceRoot.svelte @@ -120,7 +120,6 @@ background-color: var(--white); height: calc(100vh - 49px); padding: 0; - overflow: scroll; display: flex; flex-direction: column; } @@ -215,10 +214,6 @@ letter-spacing: 1px; } - .border-line { - border-bottom: 1px solid #d8d8d8; - } - .components-list-container { padding: 20px 0px 0 0; } diff --git a/packages/builder/src/pages/[application]/frontend/_layout.svelte b/packages/builder/src/pages/[application]/frontend/_layout.svelte index 536da887d6..1dfdb82168 100644 --- a/packages/builder/src/pages/[application]/frontend/_layout.svelte +++ b/packages/builder/src/pages/[application]/frontend/_layout.svelte @@ -100,7 +100,6 @@ background-color: var(--white); height: calc(100vh - 49px); padding: 0; - overflow: scroll; display: flex; flex-direction: column; } @@ -117,8 +116,6 @@ background-color: var(--white); } - - .nav-group-header > div:nth-child(1) { padding: 0rem 0.5rem 0rem 0rem; vertical-align: bottom; @@ -126,8 +123,6 @@ margin-right: 5px; } - - .nav-group-header > div:nth-child(3) { vertical-align: bottom; grid-column-start: button; diff --git a/packages/builder/src/pages/_layout.svelte b/packages/builder/src/pages/_layout.svelte index 363efcf619..001561cae9 100644 --- a/packages/builder/src/pages/_layout.svelte +++ b/packages/builder/src/pages/_layout.svelte @@ -119,22 +119,12 @@ diff --git a/packages/builder/src/components/common/Switcher.svelte b/packages/builder/src/components/common/Switcher.svelte index cf23e39507..b1c84e6eac 100644 --- a/packages/builder/src/components/common/Switcher.svelte +++ b/packages/builder/src/components/common/Switcher.svelte @@ -9,9 +9,6 @@ let selectedIndex = 0 const isSelected = tab => selected === tab - - -
@@ -19,9 +16,7 @@
{#each tabs as tab} - {/each} @@ -30,13 +25,13 @@
{#if selectedIndex === 0} - + {:else if selectedIndex === 1} - + {:else if selectedIndex === 2} - + {:else if selectedIndex === 3} - + {/if}
diff --git a/packages/builder/src/components/userInterface/ComponentSelectionList.svelte b/packages/builder/src/components/userInterface/ComponentSelectionList.svelte index d39acf872a..590cf9c985 100644 --- a/packages/builder/src/components/userInterface/ComponentSelectionList.svelte +++ b/packages/builder/src/components/userInterface/ComponentSelectionList.svelte @@ -33,15 +33,14 @@ const onComponentChosen = component => { store.addChildComponent(component._component) - + toggleTab("Navigate") - + // Get ID path const path = store.getPathToComponent($store.currentComponentInfo) // Go to correct URL $goto(`./:page/:screen/${path}`) - } diff --git a/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte b/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte index bb6d369956..714e1c2cc9 100644 --- a/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte +++ b/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte @@ -61,7 +61,7 @@ {/if} - + {screen.title}
diff --git a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte index 565301213d..cee63c4cbb 100644 --- a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte +++ b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte @@ -4,7 +4,7 @@ import PageLayout from "components/userInterface/PageLayout.svelte" import PagesList from "components/userInterface/PagesList.svelte" import NewScreen from "components/userInterface/NewScreen.svelte" - + const newScreen = () => { newScreenPicker.show() } @@ -14,15 +14,10 @@ - + - @@ -30,59 +25,25 @@ \ No newline at end of file + diff --git a/packages/builder/src/components/userInterface/PageLayout.svelte b/packages/builder/src/components/userInterface/PageLayout.svelte index f35a080a65..ec32e1cb44 100644 --- a/packages/builder/src/components/userInterface/PageLayout.svelte +++ b/packages/builder/src/components/userInterface/PageLayout.svelte @@ -55,8 +55,8 @@ class:rotate={$store.currentPreviewItem.name !== _layout.title}> - - Master Screen + + Master Screen
{#if $store.currentPreviewItem.name === _layout.title && _layout.component.props._children} @@ -79,7 +79,6 @@ onOk={() => store.deleteComponent(componentToDelete)} /> diff --git a/packages/builder/src/pages/[application]/frontend/_layout.svelte b/packages/builder/src/pages/[application]/frontend/_layout.svelte index 1dfdb82168..e30c11daae 100644 --- a/packages/builder/src/pages/[application]/frontend/_layout.svelte +++ b/packages/builder/src/pages/[application]/frontend/_layout.svelte @@ -26,11 +26,9 @@ } }) - let confirmDeleteDialog let componentToDelete = "" - let settingsView const settings = () => { settingsView.show() @@ -50,21 +48,20 @@
- +
- +
-
{#if $store.currentPageName && $store.currentPageName.length > 0} - + {/if}
@@ -76,8 +73,6 @@
- - div:nth-child(3):hover { color: var(--primary75); } - From c7b8220a62b3991a255e9ae9ad97fd1d3dcdb4fa Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Sat, 30 May 2020 00:14:41 +0100 Subject: [PATCH 025/161] significant client lib refactor --- .../EventsEditor/StateBindingCascader.svelte | 3 +- .../WorkflowPanel/blockDefinitions.js | 1 + .../client/src/api/workflow/orchestrator.js | 6 +- packages/client/src/common/trimSlash.js | 1 - packages/client/src/createApp.js | 38 +++--- .../src/render/prepareRenderComponent.js | 20 +++- packages/client/src/render/screenRouter.js | 34 ++---- packages/client/src/state/bbComponentApi.js | 8 +- packages/client/src/state/eventHandlers.js | 9 +- packages/client/src/state/getState.js | 49 +------- packages/client/src/state/parseBinding.js | 110 +++++++++--------- packages/client/src/state/setState.js | 39 ++----- packages/client/src/state/stateManager.js | 86 ++++++++------ packages/client/src/state/store.js | 16 +++ 14 files changed, 198 insertions(+), 222 deletions(-) delete mode 100644 packages/client/src/common/trimSlash.js create mode 100644 packages/client/src/state/store.js diff --git a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte index 09aa7ae9ad..79cd776c61 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte @@ -17,13 +17,14 @@ export let onChange let isOpen = false +
{parameter.name}
{#if parameter.name === 'workflow'} - {#each $workflowStore.workflows as workflow} {/each} diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js index 813099389d..c96a657bac 100644 --- a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js +++ b/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js @@ -12,6 +12,7 @@ const ACTION = { }, NAVIGATE: { name: "Navigate", + tagline: "Navigate to {{url}}", icon: "ri-navigation-line", description: "Navigate to another page.", environment: "CLIENT", diff --git a/packages/client/src/api/workflow/orchestrator.js b/packages/client/src/api/workflow/orchestrator.js index 7d28915d92..bd82daa9a9 100644 --- a/packages/client/src/api/workflow/orchestrator.js +++ b/packages/client/src/api/workflow/orchestrator.js @@ -44,7 +44,8 @@ export const clientStrategy = { // Means that it's bound to state or workflow context mappedArgs[arg] = mustache.render(argValue, { context: this.context, - state: api.getState() + // TODO: map to the real state + state: {} }); } // if (argValue.startsWith("$")) { @@ -88,6 +89,9 @@ export const clientStrategy = { } } + if (block.actionId === "NAVIGATE") { + } + if (block.actionId === "DELAY") { await this.delay(block.args.time) } diff --git a/packages/client/src/common/trimSlash.js b/packages/client/src/common/trimSlash.js deleted file mode 100644 index 5f403ee092..0000000000 --- a/packages/client/src/common/trimSlash.js +++ /dev/null @@ -1 +0,0 @@ -export const trimSlash = str => str.replace(/^\/+|\/+$/g, "") diff --git a/packages/client/src/createApp.js b/packages/client/src/createApp.js index 37e560bb87..9da7c80905 100644 --- a/packages/client/src/createApp.js +++ b/packages/client/src/createApp.js @@ -15,17 +15,17 @@ export const createApp = ({ let screenStateManager const onScreenSlotRendered = screenSlotNode => { - const onScreenSelected = (screen, store, url) => { + const onScreenSelected = (screen, url) => { const stateManager = createStateManager({ - store, frontendDefinition, componentLibraries, onScreenSlotRendered: () => {}, routeTo, appRootPath: frontendDefinition.appRootPath, }) + const getAttachChildrenParams = attachChildrenParams(stateManager) screenSlotNode.props._children = [screen.props] - const initialiseChildParams = attachChildrenParams(stateManager, screenSlotNode) + const initialiseChildParams = getAttachChildrenParams(screenSlotNode) attachChildren(initialiseChildParams)(screenSlotNode.rootElement, { hydrate: true, force: true, @@ -35,11 +35,11 @@ export const createApp = ({ currentUrl = url } - routeTo = screenRouter( - frontendDefinition.screens, + routeTo = screenRouter({ + screens: frontendDefinition.screens, onScreenSelected, - frontendDefinition.appRootPath - ) + appRootPath: frontendDefinition.appRootPath + }) const fallbackPath = window.location.pathname.replace( frontendDefinition.appRootPath, "" @@ -47,17 +47,21 @@ export const createApp = ({ routeTo(currentUrl || fallbackPath) } - const attachChildrenParams = (stateManager, treeNode) => ({ - componentLibraries, - treeNode, - onScreenSlotRendered, - setupState: stateManager.setup, - getCurrentState: stateManager.getCurrentState, - }); + const attachChildrenParams = stateManager => { + const getInitialiseParams = treeNode => ({ + componentLibraries, + treeNode, + onScreenSlotRendered, + setupState: stateManager.setup, + getCurrentState: stateManager.getCurrentState, + }) + + return getInitialiseParams + } let rootTreeNode const pageStateManager = createStateManager({ - store: writable({ _bbuser: user }), + // store: writable({ _bbuser: user }), frontendDefinition, componentLibraries, onScreenSlotRendered, @@ -73,8 +77,8 @@ export const createApp = ({ rootTreeNode.props = { _children: [page.props], } - rootTreeNode.rootElement = target - const initChildParams = attachChildrenParams(pageStateManager, rootTreeNode) + const getInitialiseParams = attachChildrenParams(pageStateManager) + const initChildParams = getInitialiseParams(rootTreeNode) attachChildren(initChildParams)(target, { hydrate: true, diff --git a/packages/client/src/render/prepareRenderComponent.js b/packages/client/src/render/prepareRenderComponent.js index 8efb577ed3..b92f946f90 100644 --- a/packages/client/src/render/prepareRenderComponent.js +++ b/packages/client/src/render/prepareRenderComponent.js @@ -1,10 +1,12 @@ +import { appStore } from "../state/store" +import mustache from "mustache"; + export const prepareRenderComponent = ({ ComponentConstructor, htmlElement, anchor, props, - parentNode, - getCurrentState, + parentNode }) => { const parentContext = (parentNode && parentNode.context) || {} @@ -36,6 +38,20 @@ export const prepareRenderComponent = ({ if (props._id && thisNode.rootElement) { thisNode.rootElement.classList.add(`${componentName}-${props._id}`) } + + // make this node listen to the store + if (thisNode.stateBound) { + const unsubscribe = appStore.subscribe(state => { + const storeBoundProps = { ...initialProps._bb.props }; + for (let prop in storeBoundProps) { + if (typeof storeBoundProps[prop] === "string") { + storeBoundProps[prop] = mustache.render(storeBoundProps[prop], { state }); + } + } + thisNode.component.$set(storeBoundProps); + }); + thisNode.unsubscribe = unsubscribe + } } } diff --git a/packages/client/src/render/screenRouter.js b/packages/client/src/render/screenRouter.js index f04df723a6..58a2277843 100644 --- a/packages/client/src/render/screenRouter.js +++ b/packages/client/src/render/screenRouter.js @@ -1,8 +1,8 @@ import regexparam from "regexparam" -import { writable } from "svelte/store" +import { routerStore } from "../state/store"; // TODO: refactor -export const screenRouter = (screens, onScreenSelected, appRootPath) => { +export const screenRouter = ({ screens, onScreenSelected, appRootPath }) => { const makeRootedPath = url => { if (appRootPath) { if (url) return `${appRootPath}${url.startsWith("/") ? "" : "/"}${url}` @@ -41,13 +41,14 @@ export const screenRouter = (screens, onScreenSelected, appRootPath) => { }) } - const storeInitial = {} - storeInitial["##routeParams"] = params - const store = writable(storeInitial) + routerStore.update(state => { + state["##routeParams"] = params; + return state; + }) const screenIndex = current !== -1 ? current : fallback - onScreenSelected(screens[screenIndex], store, _url) + onScreenSelected(screens[screenIndex], _url) try { !url.state && history.pushState(_url, null, _url) @@ -56,29 +57,8 @@ export const screenRouter = (screens, onScreenSelected, appRootPath) => { } } - function click(e) { - const x = e.target.closest("a") - const y = x && x.getAttribute("href") - - if ( - e.ctrlKey || - e.metaKey || - e.altKey || - e.shiftKey || - e.button || - e.defaultPrevented - ) - return - - if (!y || x.target || x.host !== location.host) return - - e.preventDefault() - route(y) - } - addEventListener("popstate", route) addEventListener("pushstate", route) - addEventListener("click", click) return route } diff --git a/packages/client/src/state/bbComponentApi.js b/packages/client/src/state/bbComponentApi.js index 9b904741ba..30925f14df 100644 --- a/packages/client/src/state/bbComponentApi.js +++ b/packages/client/src/state/bbComponentApi.js @@ -5,6 +5,8 @@ import { isBound } from "./parseBinding" import { attachChildren } from "../render/attachChildren" import { getContext, setContext } from "./getSetContext" +export const trimSlash = str => str.replace(/^\/+|\/+$/g, "") + export const bbFactory = ({ store, getCurrentState, @@ -61,11 +63,7 @@ export const bbFactory = ({ context: treeNode.context, props: treeNode.props, call: safeCallEvent, - setStateFromBinding: (binding, value) => - setStateFromBinding(store, binding, value), - setState: (path, value) => setState(store, path, value), - // getStateOrValue: (prop, currentContext) => - // getStateOrValue(getCurrentState(), prop, currentContext), + setState, getContext: getContext(treeNode), setContext: setContext(treeNode), store: store, diff --git a/packages/client/src/state/eventHandlers.js b/packages/client/src/state/eventHandlers.js index c4471bafbf..926eff89ca 100644 --- a/packages/client/src/state/eventHandlers.js +++ b/packages/client/src/state/eventHandlers.js @@ -1,6 +1,7 @@ import { setState } from "./setState" import { getState } from "./getState" import { isArray, isUndefined } from "lodash/fp" +import { appStore } from "./store"; import { createApi } from "../api" @@ -12,8 +13,6 @@ export const eventHandlers = (store, rootPath, routeTo) => { parameters, }) - const setStateWithStore = (path, value) => setState(store, path, value) - let currentState store.subscribe(state => { currentState = state @@ -21,11 +20,11 @@ export const eventHandlers = (store, rootPath, routeTo) => { const api = createApi({ rootPath, - setState: setStateWithStore, - getState: (path, fallback) => getState(currentState, path, fallback) + setState, + getState: (path, fallback) => getState(path, fallback) }) - const setStateHandler = ({ path, value }) => setState(store, path, value) + const setStateHandler = ({ path, value }) => setState(path, value) return { "Set State": handler(["path", "value"], setStateHandler), diff --git a/packages/client/src/state/getState.js b/packages/client/src/state/getState.js index 49e3453e52..980bb82b6e 100644 --- a/packages/client/src/state/getState.js +++ b/packages/client/src/state/getState.js @@ -1,49 +1,10 @@ // import { isUndefined, isObject } from "lodash/fp" +import { get } from "svelte/store"; import getOr from "lodash/fp/getOr"; -// import { parseBinding, isStoreBinding } from "./parseBinding" +import { appStore } from "./store"; -export const getState = (state, path, fallback) => { - if (!state) return fallback +export const getState = (path, fallback) => { if (!path || path.length === 0) return fallback - return getOr(fallback, path, state); - - // if (path === "$") return state - - // const pathParts = path.split(".") - // const safeGetPath = (obj, currentPartIndex = 0) => { - // const currentKey = pathParts[currentPartIndex] - - // if (pathParts.length - 1 == currentPartIndex) { - // const value = obj[currentKey] - // if (isUndefined(value)) return fallback - // else return value - // } - - // if ( - // obj[currentKey] === null || - // obj[currentKey] === undefined || - // !isObject(obj[currentKey]) - // ) { - // return fallback - // } - - // return safeGetPath(obj[currentKey], currentPartIndex + 1) - // } - - // return safeGetPath(state) -} - -// export const getStateOrValue = (globalState, prop, currentContext) => { -// if (!prop) return prop - -// const binding = parseBinding(prop) - -// if (binding) { -// const stateToUse = isStoreBinding(binding) ? globalState : currentContext - -// return getState(stateToUse, binding.path, binding.fallback) -// } - -// return prop -// } + return getOr(fallback, path, get(appStore)); +} \ No newline at end of file diff --git a/packages/client/src/state/parseBinding.js b/packages/client/src/state/parseBinding.js index 1cbda7c244..4ecf9887ef 100644 --- a/packages/client/src/state/parseBinding.js +++ b/packages/client/src/state/parseBinding.js @@ -1,67 +1,67 @@ -export const BB_STATE_BINDINGPATH = "##bbstate" -export const BB_STATE_BINDINGSOURCE = "##bbsource" -export const BB_STATE_FALLBACK = "##bbstatefallback" +// export const BB_STATE_BINDINGPATH = "##bbstate" +// export const BB_STATE_BINDINGSOURCE = "##bbsource" +// export const BB_STATE_FALLBACK = "##bbstatefallback" -export const isBound = prop => !!parseBinding(prop) +// export const isBound = prop => !!parseBinding(prop) -/** - * - * @param {object|string|number} prop - component property to parse for a dynamic state binding - * @returns {object|boolean} - */ -export const parseBinding = prop => { - if (!prop) return false +// /** +// * +// * @param {object|string|number} prop - component property to parse for a dynamic state binding +// * @returns {object|boolean} +// */ +// export const parseBinding = prop => { +// if (!prop) return false - if (isBindingExpression(prop)) { - return parseBindingExpression(prop) - } +// if (isBindingExpression(prop)) { +// return parseBindingExpression(prop) +// } - if (isAlreadyBinding(prop)) { - return { - path: prop.path, - source: prop.source || "store", - fallback: prop.fallback, - } - } +// if (isAlreadyBinding(prop)) { +// return { +// path: prop.path, +// source: prop.source || "store", +// fallback: prop.fallback, +// } +// } - if (hasBindingObject(prop)) { - return { - path: prop[BB_STATE_BINDINGPATH], - fallback: prop[BB_STATE_FALLBACK] || "", - source: prop[BB_STATE_BINDINGSOURCE] || "store", - } - } -} +// if (hasBindingObject(prop)) { +// return { +// path: prop[BB_STATE_BINDINGPATH], +// fallback: prop[BB_STATE_FALLBACK] || "", +// source: prop[BB_STATE_BINDINGSOURCE] || "store", +// } +// } +// } -export const isStoreBinding = binding => binding && binding.source === "store" -export const isContextBinding = binding => - binding && binding.source === "context" -// export const isEventBinding = binding => binding && binding.source === "event" +// export const isStoreBinding = binding => binding && binding.source === "store" +// export const isContextBinding = binding => +// binding && binding.source === "context" +// // export const isEventBinding = binding => binding && binding.source === "event" -const hasBindingObject = prop => - typeof prop === "object" && prop[BB_STATE_BINDINGPATH] !== undefined +// const hasBindingObject = prop => +// typeof prop === "object" && prop[BB_STATE_BINDINGPATH] !== undefined -const isAlreadyBinding = prop => typeof prop === "object" && prop.path +// const isAlreadyBinding = prop => typeof prop === "object" && prop.path -const isBindingExpression = prop => - typeof prop === "string" && - (prop.startsWith("state.") || - prop.startsWith("context.") || - prop.startsWith("event.") || - prop.startsWith("route.")) +// const isBindingExpression = prop => +// typeof prop === "string" && +// (prop.startsWith("state.") || +// prop.startsWith("context.") || +// prop.startsWith("event.") || +// prop.startsWith("route.")) -const parseBindingExpression = prop => { - let [source, ...rest] = prop.split(".") - let path = rest.join(".") +// const parseBindingExpression = prop => { +// let [source, ...rest] = prop.split(".") +// let path = rest.join(".") - if (source === "route") { - source = "state" - path = `##routeParams.${path}` - } +// if (source === "route") { +// source = "state" +// path = `##routeParams.${path}` +// } - return { - fallback: "", // TODO: provide fallback support - source, - path, - } -} +// return { +// fallback: "", // TODO: provide fallback support +// source, +// path, +// } +// } diff --git a/packages/client/src/state/setState.js b/packages/client/src/state/setState.js index 8554a35028..d50e6e6e62 100644 --- a/packages/client/src/state/setState.js +++ b/packages/client/src/state/setState.js @@ -1,40 +1,17 @@ -// import isObject from "lodash/fp/isObject" import set from "lodash/fp/set"; -import { parseBinding } from "./parseBinding" +import { appStore } from "./store"; -export const setState = (store, path, value) => { +export const setState = (path, value) => { if (!path || path.length === 0) return - // const pathParts = path.split(".") - - // const safeSetPath = (state, currentPartIndex = 0) => { - // const currentKey = pathParts[currentPartIndex] - - // if (pathParts.length - 1 == currentPartIndex) { - // state[currentKey] = value - // return - // } - - // if ( - // state[currentKey] === null || - // state[currentKey] === undefined || - // !isObject(state[currentKey]) - // ) { - // state[currentKey] = {} - // } - - // safeSetPath(state[currentKey], currentPartIndex + 1) - // } - - store.update(state => { - // safeSetPath(state) + appStore.update(state => { state = set(path, value, state); return state }) } -export const setStateFromBinding = (store, binding, value) => { - const parsedBinding = parseBinding(binding) - if (!parsedBinding) return - return setState(store, parsedBinding.path, value) -} +// export const setStateFromBinding = (store, binding, value) => { +// const parsedBinding = parseBinding(binding) +// if (!parsedBinding) return +// return setState(store, parsedBinding.path, value) +// } diff --git a/packages/client/src/state/stateManager.js b/packages/client/src/state/stateManager.js index 208b8f35c8..2ecf882962 100644 --- a/packages/client/src/state/stateManager.js +++ b/packages/client/src/state/stateManager.js @@ -8,6 +8,7 @@ import { createTreeNode } from "../render/prepareRenderComponent" import { getState } from "./getState" import { attachChildren } from "../render/attachChildren" import mustache from "mustache" +import { appStore } from "./store"; import { parseBinding } from "./parseBinding" @@ -24,14 +25,14 @@ const isMetaProp = propName => propName === "_styles" export const createStateManager = ({ - store, + // store, appRootPath, frontendDefinition, componentLibraries, onScreenSlotRendered, routeTo, }) => { - let handlerTypes = eventHandlers(store, appRootPath, routeTo) + let handlerTypes = eventHandlers(appStore, appRootPath, routeTo) let currentState // any nodes that have props that are bound to the store @@ -45,33 +46,40 @@ export const createStateManager = ({ // nodesBoundByProps, // nodesWithCodeBoundChildren // ) + const bb = bbFactory({ - store, + store: appStore, getCurrentState, frontendDefinition, componentLibraries, onScreenSlotRendered, }) - const setup = _setup(handlerTypes, getCurrentState, bb) + const setup = _setup({ handlerTypes, getCurrentState, bb, store: appStore }) - const unsubscribe = store.subscribe( - onStoreStateUpdated({ - setCurrentState: state => (currentState = state), - getCurrentState, - // nodesWithCodeBoundChildren, - // nodesBoundByProps, - componentLibraries, - onScreenSlotRendered, - setupState: setup, - }) - ) + // TODO: remove + const unsubscribe = appStore.subscribe(state => { + console.log("store updated", state); + return state; + }); + + // const unsubscribe = store.subscribe( + // onStoreStateUpdated({ + // setCurrentState: state => (currentState = state), + // getCurrentState, + // // nodesWithCodeBoundChildren, + // // nodesBoundByProps, + // componentLibraries, + // onScreenSlotRendered, + // setupState: setup, + // }) + // ) return { setup, destroy: () => unsubscribe(), getCurrentState, - store, + store: appStore, } } @@ -80,16 +88,19 @@ const onStoreStateUpdated = ({ getCurrentState, componentLibraries, onScreenSlotRendered, - setupState, + setupState }) => state => { - setCurrentState(state) - attachChildren({ - componentLibraries, - treeNode: createTreeNode(), - onScreenSlotRendered, - setupState, - getCurrentState, - })(document.querySelector("#app"), { hydrate: true, force: true }) + // fire the state update event to re-render anything bound to this + // setCurrentState(state) + + // setCurrentState(state) + // attachChildren({ + // componentLibraries, + // treeNode: createTreeNode(), + // onScreenSlotRendered, + // setupState, + // getCurrentState, + // })(document.querySelector("#app"), { hydrate: true, force: true }) // // the original array gets changed by components' destroy() // // so we make a clone and check if they are still in the original @@ -154,32 +165,41 @@ const onStoreStateUpdated = ({ // node.component.$set(newProps) // } -const _setup = ( +const _setup = ({ handlerTypes, getCurrentState, - bb -) => node => { - - console.log(node); + bb, + store +}) => node => { const props = node.props const context = node.context || {} const initialProps = { ...props } // const storeBoundProps = [] const currentStoreState = getCurrentState() + console.log("node", node); + + // console.log("node", node); + // console.log("nodeComponent", node.component); + for (let propName in props) { if (isMetaProp(propName)) continue const propValue = props[propName] // const binding = parseBinding(propValue) - // const isBound = !!binding + // TODO: better binding stuff + const isBound = typeof propValue === "string" && propValue.startsWith("{{"); - if (typeof propValue === "string") { + if (isBound) { initialProps[propName] = mustache.render(propValue, { state: currentStoreState, context }) + + if (!node.stateBound) { + node.stateBound = true + } } // if (isBound) binding.propName = propName @@ -254,7 +274,7 @@ const _setup = ( // registerBindings(node, storeBoundProps) - const setup = _setup(handlerTypes, getCurrentState, bb) + const setup = _setup({ handlerTypes, getCurrentState, bb, store }) initialProps._bb = bb(node, setup) return initialProps diff --git a/packages/client/src/state/store.js b/packages/client/src/state/store.js new file mode 100644 index 0000000000..e7e6351184 --- /dev/null +++ b/packages/client/src/state/store.js @@ -0,0 +1,16 @@ +import { writable } from "svelte/store"; + +const appStore = writable({}); +appStore.actions = { + +}; + +const routerStore = writable({}); +routerStore.actions = { + +} + +export { + appStore, + routerStore +} From 36da2576bca2180025cd6c7770ae01a96509391d Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Sat, 30 May 2020 00:40:33 +0100 Subject: [PATCH 026/161] separate workflow components from routify routes --- .../workflow/SetupPanel/DeleteWorkflowModal.svelte | 0 .../SetupPanel/ParamInputs/ComponentParam.svelte | 0 .../workflow/SetupPanel/ParamInputs/ModelParam.svelte | 0 .../SetupPanel/ParamInputs/NumberParam.svelte | 0 .../SetupPanel/ParamInputs/StringParam.svelte | 0 .../workflow/SetupPanel/SetupPanel.svelte | 0 .../workflow/SetupPanel/WorkflowBlockSetup.svelte | 0 .../workflow/SetupPanel/index.js | 0 .../workflow/WorkflowBuilder/WorkflowBuilder.svelte | 0 .../WorkflowBuilder/svelte-flows/Arrow.svelte | 0 .../WorkflowBuilder/svelte-flows/FlowChart.svelte | 0 .../WorkflowBuilder/svelte-flows/FlowItem.svelte | 0 .../workflow/WorkflowBuilder/svelte-flows/api.js | 0 .../workflow/WorkflowBuilder/svelte-flows/index.js | 0 .../workflow/WorkflowPanel/BlockList/BlockList.svelte | 0 .../WorkflowPanel/BlockList/WorkflowBlock.svelte | 0 .../WorkflowList/CreateWorkflowModal.svelte | 0 .../WorkflowPanel/WorkflowList/WorkflowList.svelte | 0 .../workflow/WorkflowPanel/WorkflowPanel.svelte | 0 .../workflow/WorkflowPanel/blockDefinitions.js | 0 .../workflow/WorkflowPanel/index.js | 0 packages/builder/src/components/workflow/index.js | 3 +++ .../src/pages/[application]/workflow/_layout.svelte | 3 +-- .../src/pages/[application]/workflow/index.svelte | 2 +- packages/client/src/render/attachChildren.js | 4 +--- packages/client/src/state/bbComponentApi.js | 11 +++-------- packages/client/src/state/stateManager.js | 8 ++------ 27 files changed, 11 insertions(+), 20 deletions(-) rename packages/builder/src/{pages/[application] => components}/workflow/SetupPanel/DeleteWorkflowModal.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/SetupPanel/ParamInputs/ComponentParam.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/SetupPanel/ParamInputs/ModelParam.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/SetupPanel/ParamInputs/NumberParam.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/SetupPanel/ParamInputs/StringParam.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/SetupPanel/SetupPanel.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/SetupPanel/WorkflowBlockSetup.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/SetupPanel/index.js (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowBuilder/WorkflowBuilder.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowBuilder/svelte-flows/Arrow.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowBuilder/svelte-flows/api.js (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowBuilder/svelte-flows/index.js (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowPanel/BlockList/BlockList.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowPanel/BlockList/WorkflowBlock.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowPanel/WorkflowPanel.svelte (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowPanel/blockDefinitions.js (100%) rename packages/builder/src/{pages/[application] => components}/workflow/WorkflowPanel/index.js (100%) create mode 100644 packages/builder/src/components/workflow/index.js diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/DeleteWorkflowModal.svelte b/packages/builder/src/components/workflow/SetupPanel/DeleteWorkflowModal.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/SetupPanel/DeleteWorkflowModal.svelte rename to packages/builder/src/components/workflow/SetupPanel/DeleteWorkflowModal.svelte diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/ComponentParam.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentParam.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/ComponentParam.svelte rename to packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentParam.svelte diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/ModelParam.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelParam.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/ModelParam.svelte rename to packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelParam.svelte diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/NumberParam.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/NumberParam.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/NumberParam.svelte rename to packages/builder/src/components/workflow/SetupPanel/ParamInputs/NumberParam.svelte diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/StringParam.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/StringParam.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/SetupPanel/ParamInputs/StringParam.svelte rename to packages/builder/src/components/workflow/SetupPanel/ParamInputs/StringParam.svelte diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte b/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/SetupPanel/SetupPanel.svelte rename to packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/SetupPanel/WorkflowBlockSetup.svelte rename to packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte diff --git a/packages/builder/src/pages/[application]/workflow/SetupPanel/index.js b/packages/builder/src/components/workflow/SetupPanel/index.js similarity index 100% rename from packages/builder/src/pages/[application]/workflow/SetupPanel/index.js rename to packages/builder/src/components/workflow/SetupPanel/index.js diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/WorkflowBuilder.svelte b/packages/builder/src/components/workflow/WorkflowBuilder/WorkflowBuilder.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowBuilder/WorkflowBuilder.svelte rename to packages/builder/src/components/workflow/WorkflowBuilder/WorkflowBuilder.svelte diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/Arrow.svelte b/packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/Arrow.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/Arrow.svelte rename to packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/Arrow.svelte diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte b/packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte rename to packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte b/packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte rename to packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/FlowItem.svelte diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/api.js b/packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/api.js similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/api.js rename to packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/api.js diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/index.js b/packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/index.js similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowBuilder/svelte-flows/index.js rename to packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/index.js diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/BlockList.svelte b/packages/builder/src/components/workflow/WorkflowPanel/BlockList/BlockList.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/BlockList.svelte rename to packages/builder/src/components/workflow/WorkflowPanel/BlockList/BlockList.svelte diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/WorkflowBlock.svelte b/packages/builder/src/components/workflow/WorkflowPanel/BlockList/WorkflowBlock.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowPanel/BlockList/WorkflowBlock.svelte rename to packages/builder/src/components/workflow/WorkflowPanel/BlockList/WorkflowBlock.svelte diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte b/packages/builder/src/components/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte rename to packages/builder/src/components/workflow/WorkflowPanel/WorkflowList/CreateWorkflowModal.svelte diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte b/packages/builder/src/components/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte rename to packages/builder/src/components/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowPanel.svelte b/packages/builder/src/components/workflow/WorkflowPanel/WorkflowPanel.svelte similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowPanel/WorkflowPanel.svelte rename to packages/builder/src/components/workflow/WorkflowPanel/WorkflowPanel.svelte diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js b/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowPanel/blockDefinitions.js rename to packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js diff --git a/packages/builder/src/pages/[application]/workflow/WorkflowPanel/index.js b/packages/builder/src/components/workflow/WorkflowPanel/index.js similarity index 100% rename from packages/builder/src/pages/[application]/workflow/WorkflowPanel/index.js rename to packages/builder/src/components/workflow/WorkflowPanel/index.js diff --git a/packages/builder/src/components/workflow/index.js b/packages/builder/src/components/workflow/index.js new file mode 100644 index 0000000000..2b3d68b5b7 --- /dev/null +++ b/packages/builder/src/components/workflow/index.js @@ -0,0 +1,3 @@ +export { default as WorkflowBuilder } from "./WorkflowBuilder/WorkflowBuilder.svelte"; +export { default as SetupPanel } from "./SetupPanel/SetupPanel.svelte"; +export { default as WorkflowPanel } from "./WorkflowPanel/WorkflowPanel.svelte"; diff --git a/packages/builder/src/pages/[application]/workflow/_layout.svelte b/packages/builder/src/pages/[application]/workflow/_layout.svelte index 6a1a5dcb53..acaf2350ee 100644 --- a/packages/builder/src/pages/[application]/workflow/_layout.svelte +++ b/packages/builder/src/pages/[application]/workflow/_layout.svelte @@ -1,7 +1,6 @@
diff --git a/packages/builder/src/pages/[application]/workflow/index.svelte b/packages/builder/src/pages/[application]/workflow/index.svelte index 88f65b0b18..781e492a0f 100644 --- a/packages/builder/src/pages/[application]/workflow/index.svelte +++ b/packages/builder/src/pages/[application]/workflow/index.svelte @@ -1,5 +1,5 @@ diff --git a/packages/client/src/render/attachChildren.js b/packages/client/src/render/attachChildren.js index 9e0659be82..89ee0cfe4a 100644 --- a/packages/client/src/render/attachChildren.js +++ b/packages/client/src/render/attachChildren.js @@ -9,7 +9,6 @@ export const attachChildren = initialiseOpts => (htmlElement, options) => { treeNode, onScreenSlotRendered, setupState, - getCurrentState, } = initialiseOpts const anchor = options && options.anchor ? options.anchor : null @@ -43,8 +42,7 @@ export const attachChildren = initialiseOpts => (htmlElement, options) => { parentNode: treeNode, ComponentConstructor, htmlElement, - anchor, - getCurrentState, + anchor }) for (let childNode of childNodesThisIteration) { diff --git a/packages/client/src/state/bbComponentApi.js b/packages/client/src/state/bbComponentApi.js index 30925f14df..71235756b3 100644 --- a/packages/client/src/state/bbComponentApi.js +++ b/packages/client/src/state/bbComponentApi.js @@ -1,7 +1,5 @@ -// import { getStateOrValue } from "./getState" -import { setState, setStateFromBinding } from "./setState" -import { trimSlash } from "../common/trimSlash" -import { isBound } from "./parseBinding" +import { setState } from "./setState" +// import { isBound } from "./parseBinding" import { attachChildren } from "../render/attachChildren" import { getContext, setContext } from "./getSetContext" @@ -9,7 +7,6 @@ export const trimSlash = str => str.replace(/^\/+|\/+$/g, "") export const bbFactory = ({ store, - getCurrentState, frontendDefinition, componentLibraries, onScreenSlotRendered, @@ -54,8 +51,7 @@ export const bbFactory = ({ componentLibraries, treeNode, onScreenSlotRendered, - setupState, - getCurrentState, + setupState } return { @@ -69,7 +65,6 @@ export const bbFactory = ({ store: store, relativeUrl, api, - isBound, parent, } } diff --git a/packages/client/src/state/stateManager.js b/packages/client/src/state/stateManager.js index 2ecf882962..c299c51b07 100644 --- a/packages/client/src/state/stateManager.js +++ b/packages/client/src/state/stateManager.js @@ -4,14 +4,10 @@ import { EVENT_TYPE_MEMBER_NAME, } from "./eventHandlers" import { bbFactory } from "./bbComponentApi" -import { createTreeNode } from "../render/prepareRenderComponent" -import { getState } from "./getState" -import { attachChildren } from "../render/attachChildren" import mustache from "mustache" +import { get } from "svelte/store"; import { appStore } from "./store"; -import { parseBinding } from "./parseBinding" - const doNothing = () => {} doNothing.isPlaceholder = true @@ -175,7 +171,7 @@ const _setup = ({ const context = node.context || {} const initialProps = { ...props } // const storeBoundProps = [] - const currentStoreState = getCurrentState() + const currentStoreState = get(appStore) console.log("node", node); From 9a898a8d74f7da86c75db165b09929744e89aff4 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Sat, 30 May 2020 13:41:46 +0100 Subject: [PATCH 027/161] =?UTF-8?q?orchestrator=20refactor,=C2=A0user=20cr?= =?UTF-8?q?eation=20block?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../builderStore/store/workflow/Workflow.js | 4 +- .../builder/src/components/common/binding.js | 52 +++++++++---------- .../ModelDataTable/ModelDataTable.svelte | 7 --- .../userInterface/StateBindingControl.svelte | 5 +- .../SetupPanel/WorkflowBlockSetup.svelte | 16 +++++- .../WorkflowPanel/blockDefinitions.js | 5 +- .../client/src/api/workflow/orchestrator.js | 48 +++++------------ packages/client/src/render/screenRouter.js | 1 + .../workflow/actions/CREATE_USER.js | 26 ++++++++++ packages/server/src/utilities/accessLevels.js | 2 + .../src/utilities/initialiseClientDb.js | 0 11 files changed, 91 insertions(+), 75 deletions(-) create mode 100644 packages/server/src/api/controllers/workflow/actions/CREATE_USER.js delete mode 100644 packages/server/src/utilities/initialiseClientDb.js diff --git a/packages/builder/src/builderStore/store/workflow/Workflow.js b/packages/builder/src/builderStore/store/workflow/Workflow.js index 2b495ef49b..623eb07f48 100644 --- a/packages/builder/src/builderStore/store/workflow/Workflow.js +++ b/packages/builder/src/builderStore/store/workflow/Workflow.js @@ -1,6 +1,6 @@ import mustache from "mustache" // TODO: tidy up import -import blockDefinitions from "../../../pages/[application]/workflow/WorkflowPanel/blockDefinitions" +import blockDefinitions from "../../../components/workflow/WorkflowPanel/blockDefinitions" import { generate } from "shortid" /** @@ -79,7 +79,7 @@ export default class Workflow { type: block.type, params: block.params, args, - heading: definition.actionId, + heading: block.actionId, body: mustache.render(tagline, args), }) diff --git a/packages/builder/src/components/common/binding.js b/packages/builder/src/components/common/binding.js index af04397327..18c31e8040 100644 --- a/packages/builder/src/components/common/binding.js +++ b/packages/builder/src/components/common/binding.js @@ -1,31 +1,31 @@ -import { isString } from "lodash/fp" +// import { isString } from "lodash/fp" -import { - BB_STATE_BINDINGPATH, - BB_STATE_FALLBACK, - BB_STATE_BINDINGSOURCE, - isBound, - parseBinding, -} from "@budibase/client/src/state/parseBinding" +// import { +// BB_STATE_BINDINGPATH, +// BB_STATE_FALLBACK, +// BB_STATE_BINDINGSOURCE, +// isBound, +// parseBinding, +// } from "@budibase/client/src/state/parseBinding" -export const isBinding = isBound +// export const isBinding = isBound -export const setBinding = ({ path, fallback, source }, binding = {}) => { - if (isNonEmptyString(path)) binding[BB_STATE_BINDINGPATH] = path - if (isNonEmptyString(fallback)) binding[BB_STATE_FALLBACK] = fallback - binding[BB_STATE_BINDINGSOURCE] = source || "store" - return binding -} +// export const setBinding = ({ path, fallback, source }, binding = {}) => { +// if (isNonEmptyString(path)) binding[BB_STATE_BINDINGPATH] = path +// if (isNonEmptyString(fallback)) binding[BB_STATE_FALLBACK] = fallback +// binding[BB_STATE_BINDINGSOURCE] = source || "store" +// return binding +// } -export const getBinding = val => { - const binding = parseBinding(val) - return binding - ? binding - : { - path: "", - source: "store", - fallback: "", - } -} +// export const getBinding = val => { +// const binding = parseBinding(val) +// return binding +// ? binding +// : { +// path: "", +// source: "store", +// fallback: "", +// } +// } -const isNonEmptyString = s => isString(s) && s.length > 0 +// const isNonEmptyString = s => isString(s) && s.length > 0 diff --git a/packages/builder/src/components/database/ModelDataTable/ModelDataTable.svelte b/packages/builder/src/components/database/ModelDataTable/ModelDataTable.svelte index 9e6ddc5042..8a16d5d0b1 100644 --- a/packages/builder/src/components/database/ModelDataTable/ModelDataTable.svelte +++ b/packages/builder/src/components/database/ModelDataTable/ModelDataTable.svelte @@ -43,13 +43,6 @@ ) } - async function selectRecord(record) { - return await api.loadRecord(record.key, { - appname: $store.appname, - instanceId: $backendUiStore.selectedDatabase._id, - }) - } - const ITEMS_PER_PAGE = 10 // Internal headers we want to hide from the user const INTERNAL_HEADERS = ["_id", "_rev", "modelId", "type"] diff --git a/packages/builder/src/components/userInterface/StateBindingControl.svelte b/packages/builder/src/components/userInterface/StateBindingControl.svelte index 01adfeeac3..a89b805e5b 100644 --- a/packages/builder/src/components/userInterface/StateBindingControl.svelte +++ b/packages/builder/src/components/userInterface/StateBindingControl.svelte @@ -2,8 +2,7 @@ import { backendUiStore } from "builderStore" import IconButton from "../common/IconButton.svelte" import Input from "../common/Input.svelte" - import PropertyCascader from "./PropertyCascader" - import { isBinding, getBinding, setBinding } from "../common/binding" + // import PropertyCascader from "./PropertyCascader" import Colorpicker from "../common/Colorpicker.svelte" export let value = "" @@ -50,7 +49,7 @@ {/each} {:else} - + {/if}
diff --git a/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte index fe72e348fc..2b35d0ab44 100644 --- a/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte @@ -5,6 +5,8 @@ let params + console.log("wfblock", workflowBlock) + $: workflowParams = workflowBlock.params ? Object.entries(workflowBlock.params) : [] @@ -13,7 +15,7 @@ {#each workflowParams as [parameter, type]}
@@ -27,6 +29,18 @@ {/each} + {:else if type === 'accessLevel'} + + {:else if type === 'password'} + {:else if type === 'number'} {{username}}", icon: "ri-user-add-fill", name: "Create User", environment: "SERVER", params: { - name: "string", + username: "string", password: "password", - accessLevel: "accessLevel", + accessLevelId: "accessLevel", }, }, SEND_EMAIL: { diff --git a/packages/client/src/api/workflow/orchestrator.js b/packages/client/src/api/workflow/orchestrator.js index bd82daa9a9..7a26c1648c 100644 --- a/packages/client/src/api/workflow/orchestrator.js +++ b/packages/client/src/api/workflow/orchestrator.js @@ -1,5 +1,7 @@ -import get from "lodash/fp/get" +import { get } from "svelte/store"; +import { setState } from "../../state/setState"; import mustache from "mustache"; +import { appStore } from "../../state/store"; /** * The workflow orchestrator is a class responsible for executing workflows. @@ -15,25 +17,21 @@ export default class Orchestrator { } set strategy(strategy) { - this._strategy = strategy + this._strategy = strategy({ api: this.api, instanceId: this.instanceId }); } async execute(workflowId) { const EXECUTE_WORKFLOW_URL = `/api/${this.instanceId}/workflows/${workflowId}` const workflow = await this.api.get({ url: EXECUTE_WORKFLOW_URL }) - this._strategy.run({ - workflow: workflow.definition, - api: this.api, - instanceId: this.instanceId, - }) + this._strategy.run(workflow.definition) } } // Execute a workflow from a running budibase app -export const clientStrategy = { +export const clientStrategy = ({ api, instanceId }) => ({ delay: ms => new Promise(resolve => setTimeout(resolve, ms)), context: {}, - bindContextArgs: function(args, api) { + bindContextArgs: function(args) { const mappedArgs = { ...args } console.log("original args", args) @@ -42,35 +40,18 @@ export const clientStrategy = { for (let arg in args) { const argValue = args[arg] // Means that it's bound to state or workflow context + console.log(argValue, get(appStore)); mappedArgs[arg] = mustache.render(argValue, { context: this.context, - // TODO: map to the real state - state: {} + state: get(appStore) }); } - // if (argValue.startsWith("$")) { - // // if value is bound to workflow context. - // if (argValue.startsWith("$context")) { - // const path = argValue.replace("$context.", "") - // // pass in the value from context - // mappedArgs[arg] = get(path, this.context) - // } - - // // if the value is bound to state - // if (argValue.startsWith("$state")) { - // const path = argValue.replace("$state.", "") - // // pass in the value from state - // // TODO: not working - // mappedArgs[arg] = api.getState(path) - // } - // } - // } console.log(mappedArgs) - return Object.values(mappedArgs) + return mappedArgs }, - run: async function({ workflow, api, instanceId }) { + run: async function(workflow) { const block = workflow.next console.log("Executing workflow block", block) @@ -81,7 +62,7 @@ export const clientStrategy = { if (block.environment === "CLIENT") { if (block.actionId === "SET_STATE") { // get props from the workflow context if required - api.setState(...this.bindContextArgs(block.args)) + setState(...Object.values(this.bindContextArgs(block.args))) // update the context with the data this.context = { ...this.context, @@ -135,7 +116,6 @@ export const clientStrategy = { console.log("workflowContext", this.context) - // TODO: clean this up, don't pass all those args - await this.run({ workflow: workflow.next, instanceId, api }) + await this.run(workflow.next) }, -} +}) diff --git a/packages/client/src/render/screenRouter.js b/packages/client/src/render/screenRouter.js index 58a2277843..afcb3049cf 100644 --- a/packages/client/src/render/screenRouter.js +++ b/packages/client/src/render/screenRouter.js @@ -1,5 +1,6 @@ import regexparam from "regexparam" import { routerStore } from "../state/store"; +import { initRouteStore } from "../state/store" // TODO: refactor export const screenRouter = ({ screens, onScreenSelected, appRootPath }) => { diff --git a/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js b/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js new file mode 100644 index 0000000000..96b0fa2584 --- /dev/null +++ b/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js @@ -0,0 +1,26 @@ +const userController = require("../../user") + +module.exports = async function createUser(user) { + console.log("SAVING this user", user) + + const ctx = { + params: { + instanceId: "inst_60dd510_700f7dc06735403e81d5af91072d7241", + }, + request: { + body: user + }, + } + + try { + const response = await userController.create(ctx) + return { + user: response + } + } catch (err) { + console.error(err); + return { + user: null + } + } +} diff --git a/packages/server/src/utilities/accessLevels.js b/packages/server/src/utilities/accessLevels.js index 56e1647c31..9fff76e531 100644 --- a/packages/server/src/utilities/accessLevels.js +++ b/packages/server/src/utilities/accessLevels.js @@ -2,9 +2,11 @@ const viewController = require("../api/controllers/view") const modelController = require("../api/controllers/model") const workflowController = require("../api/controllers/workflow") +// Access Level IDs const ADMIN_LEVEL_ID = "ADMIN" const POWERUSER_LEVEL_ID = "POWER_USER" +// Permissions const READ_MODEL = "read-model" const WRITE_MODEL = "write-model" const READ_VIEW = "read-view" diff --git a/packages/server/src/utilities/initialiseClientDb.js b/packages/server/src/utilities/initialiseClientDb.js deleted file mode 100644 index e69de29bb2..0000000000 From 5afc23517878f60640e926fa44621073d6feb934 Mon Sep 17 00:00:00 2001 From: Conor_Mack Date: Sat, 30 May 2020 18:48:20 +0100 Subject: [PATCH 028/161] Changes to FlatButtonGroup and more Styling --- .../src/components/common/Input.svelte | 43 +++--- .../common/Inputs/InputGroup.svelte | 52 ++----- .../userInterface/FlatButton.svelte | 14 +- .../userInterface/FlatButtonGroup.svelte | 6 +- .../userInterface/OptionSelect.svelte | 10 +- .../userInterface/PropertyControl.svelte | 1 + .../userInterface/propertyCategories.js | 144 +++++++++++++++--- packages/builder/src/helpers.js | 3 +- 8 files changed, 179 insertions(+), 94 deletions(-) diff --git a/packages/builder/src/components/common/Input.svelte b/packages/builder/src/components/common/Input.svelte index a136b4e2f3..442be58735 100644 --- a/packages/builder/src/components/common/Input.svelte +++ b/packages/builder/src/components/common/Input.svelte @@ -1,30 +1,33 @@ - + diff --git a/packages/builder/src/components/common/Inputs/InputGroup.svelte b/packages/builder/src/components/common/Inputs/InputGroup.svelte index ffe6880f51..3b747b47a0 100644 --- a/packages/builder/src/components/common/Inputs/InputGroup.svelte +++ b/packages/builder/src/components/common/Inputs/InputGroup.svelte @@ -1,35 +1,36 @@
{label}
{#each meta as { placeholder }, i} - handleChange(e.target.value || 0, i)} /> + + handleChange(e.target.value || 0, i)} /> + {/each}
diff --git a/packages/builder/src/components/userInterface/FlatButton.svelte b/packages/builder/src/components/userInterface/FlatButton.svelte index 7fb5742c46..7cd8b2bac7 100644 --- a/packages/builder/src/components/userInterface/FlatButton.svelte +++ b/packages/builder/src/components/userInterface/FlatButton.svelte @@ -1,21 +1,26 @@ -
onClick(value || text)}> +
onClick(value || text)}> {#if useIcon} {:else} - {text} + {@html text} {/if}
+ diff --git a/packages/builder/src/components/userInterface/FlatButtonGroup.svelte b/packages/builder/src/components/userInterface/FlatButtonGroup.svelte index ffa1a98393..ba49128716 100644 --- a/packages/builder/src/components/userInterface/FlatButtonGroup.svelte +++ b/packages/builder/src/components/userInterface/FlatButtonGroup.svelte @@ -27,13 +27,17 @@ } onChange(val) } + + const checkSelected = val => isMultiSelect ? value.includes(val) : value === val + + $: console.log("VALUE",value)
{#each buttonProps as props}
diff --git a/packages/builder/src/components/userInterface/OptionSelect.svelte b/packages/builder/src/components/userInterface/OptionSelect.svelte index bd05b3a171..841d413125 100644 --- a/packages/builder/src/components/userInterface/OptionSelect.svelte +++ b/packages/builder/src/components/userInterface/OptionSelect.svelte @@ -141,7 +141,7 @@ .bb-select-container { position: relative; outline: none; - width: 189px; + width: 160px; height: 32px; cursor: pointer; } @@ -158,15 +158,15 @@ .bb-select-anchor > span { color: #565a66; font-weight: 500; - width: 145px; + width: 140px; overflow-x: hidden; } .bb-select-anchor > i { transition: transform 0.13s ease; transform-origin: center; - width: 25px; - height: 25px; + width: 20px; + height: 20px; text-align: center; } @@ -181,7 +181,7 @@ box-sizing: border-box; flex-direction: column; opacity: 0; - width: 189px; + width: 160px; z-index: 2; color: #808192; font-weight: 500; diff --git a/packages/builder/src/components/userInterface/PropertyControl.svelte b/packages/builder/src/components/userInterface/PropertyControl.svelte index 632f7a9fc0..a7ea35c014 100644 --- a/packages/builder/src/components/userInterface/PropertyControl.svelte +++ b/packages/builder/src/components/userInterface/PropertyControl.svelte @@ -63,6 +63,7 @@ .control { flex: 1; + display: flex; padding-left: 2px; max-width: 164px; } diff --git a/packages/builder/src/components/userInterface/propertyCategories.js b/packages/builder/src/components/userInterface/propertyCategories.js index 41e2a2eb5e..676a8bb0bd 100644 --- a/packages/builder/src/components/userInterface/propertyCategories.js +++ b/packages/builder/src/components/userInterface/propertyCategories.js @@ -1,6 +1,7 @@ import Input from "../common/Input.svelte" import OptionSelect from "./OptionSelect.svelte" import InputGroup from "../common/Inputs/InputGroup.svelte" +import FlatButtonGroup from "./FlatButtonGroup.svelte" // import Colorpicker from "../common/Colorpicker.svelte" /* TODO: Allow for default values for all properties @@ -20,13 +21,16 @@ export const layout = [ { label: "Direction", key: "flex-direction", - control: OptionSelect, - initialValue: "Row", - options: [ - { label: "Row", value: "row" }, - { label: "Row Reverse", value: "rowReverse" }, - { label: "column", value: "column" }, - { label: "Column Reverse", value: "columnReverse" }, + control: FlatButtonGroup, + buttonProps: [ + { icon: "ri-arrow-right-line", padding: "4px 8px", value: "row" }, + { icon: "ri-arrow-left-line", padding: "4px 8px", value: "rowReverse" }, + { icon: "ri-arrow-down-line", padding: "4px 8px", value: "column" }, + { + icon: "ri-arrow-up-line", + padding: "4px 8px", + value: "columnReverse", + }, ], }, { @@ -68,10 +72,10 @@ export const layout = [ ] const spacingMeta = [ - { placeholder: "L" }, - { placeholder: "B" }, - { placeholder: "R" }, - { placeholder: "T" }, + { placeholder: "↑" }, + { placeholder: "→" }, + { placeholder: "↓" }, + { placeholder: "←" }, ] export const spacing = [ @@ -85,12 +89,54 @@ export const spacing = [ ] export const size = [ - { label: "Width", key: "width", control: Input }, - { label: "Height", key: "height", control: Input }, - { label: "Min W", key: "min-width", control: Input }, - { label: "Min H", key: "min-height", control: Input }, - { label: "Max W", key: "max-width", control: Input }, - { label: "Max H", key: "max-height", control: Input }, + { + label: "Width", + key: "width", + control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", + }, + { + label: "Height", + key: "height", + control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", + }, + { + label: "Min W", + key: "min-width", + control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", + }, + { + label: "Min H", + key: "min-height", + control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", + }, + { + label: "Max W", + key: "max-width", + control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", + }, + { + label: "Max H", + key: "max-height", + control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", + }, ] export const position = [ @@ -111,26 +157,41 @@ export const position = [ label: "Top", key: "top", control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", }, { label: "Right", key: "right", control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", }, { label: "Bottom", key: "bottom", control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", }, { label: "Left", key: "left", control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", }, { label: "Z-index", key: "z-index", control: Input, + placeholder: "Num", + width: "48px", + textAlign: "center", }, ] @@ -166,8 +227,23 @@ export const typography = [ control: OptionSelect, options: ["normal", "bold", "bolder", "lighter"], }, - { label: "size", key: "font-size", defaultValue: "", control: Input }, - { label: "Line H", key: "line-height", control: Input }, + { + label: "size", + key: "font-size", + defaultValue: "", + control: Input, + placeholder: "px", + width: "48px", + textAlign: "center", + }, + { + label: "Line H", + key: "line-height", + control: Input, + placeholder: "lh", + width: "48px", + textAlign: "center", + }, { label: "Color", key: "color", @@ -176,11 +252,31 @@ export const typography = [ { label: "align", key: "text-align", - control: OptionSelect, - options: ["initial", "left", "right", "center", "justify"], - }, //custom - { label: "transform", key: "text-transform", control: Input }, //custom - { label: "style", key: "font-style", control: Input }, //custom + control: FlatButtonGroup, + buttonProps: [ + { icon: "ri-align-left", padding: "4px 8px", value: "left" }, + { icon: "ri-align-center", padding: "4px 8px", value: "center" }, + { icon: "ri-align-right", padding: "4px 8px", value: "right" }, + { icon: "ri-align-justify", padding: "4px 8px", value: "justify" }, + ], + }, + { + label: "transform", + key: "text-transform", + control: FlatButtonGroup, + buttonProps: [ + { text: "BB", padding: "4px 8px", fontWeight: 500, value: "uppercase" }, + { text: "Bb", padding: "4px 8px", fontWeight: 500, value: "capitalize" }, + { text: "bb", padding: "4px 8px", fontWeight: 500, value: "lowercase" }, + { + text: "×", + padding: "4px 8px", + fontWeight: 500, + value: "none", + }, + ], + }, + { label: "style", key: "font-style", control: Input }, ] export const background = [ diff --git a/packages/builder/src/helpers.js b/packages/builder/src/helpers.js index ee2053d8e4..5d9ff750af 100644 --- a/packages/builder/src/helpers.js +++ b/packages/builder/src/helpers.js @@ -2,7 +2,8 @@ export const buildStyle = styles => { let str = "" for (let s in styles) { if (styles[s]) { - str += `${s}: ${styles[s]}; ` + let key = convertCamel(s) + str += `${key}: ${styles[s]}; ` } } return str From 5c1aa00fd0fb8835e5e6fe3b77c43384db0f8168 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Sun, 31 May 2020 17:12:52 +0100 Subject: [PATCH 029/161] server side event emitter --- packages/builder/package.json | 1 + .../builderStore/store/workflow/Workflow.js | 8 ++- .../ParamInputs/ComponentSelector.svelte | 45 ++++++++++++ .../SetupPanel/ParamInputs/ModelParam.svelte | 0 .../ParamInputs/ModelSelector.svelte | 17 +++++ .../SetupPanel/ParamInputs/NumberParam.svelte | 0 ...nentParam.svelte => RecordSelector.svelte} | 0 .../SetupPanel/ParamInputs/StringParam.svelte | 0 .../workflow/SetupPanel/SetupPanel.svelte | 5 +- .../SetupPanel/WorkflowBlockSetup.svelte | 28 +++----- .../WorkflowPanel/BlockList/BlockList.svelte | 45 ++++++------ .../BlockList/WorkflowBlock.svelte | 1 - .../WorkflowPanel/WorkflowPanel.svelte | 7 +- .../WorkflowPanel/blockDefinitions.js | 72 ++++++++++--------- packages/client/src/api/workflow/index.js | 2 - .../client/src/api/workflow/orchestrator.js | 15 ++-- .../server/src/api/controllers/instance.js | 10 +++ packages/server/src/api/controllers/record.js | 8 ++- .../src/api/controllers/workflow/index.js | 18 ----- packages/server/src/app.js | 4 +- packages/server/src/events/index.js | 30 +++++++- packages/server/src/schemas/index.js | 25 +++---- 22 files changed, 214 insertions(+), 127 deletions(-) create mode 100644 packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentSelector.svelte delete mode 100644 packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelParam.svelte create mode 100644 packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelSelector.svelte delete mode 100644 packages/builder/src/components/workflow/SetupPanel/ParamInputs/NumberParam.svelte rename packages/builder/src/components/workflow/SetupPanel/ParamInputs/{ComponentParam.svelte => RecordSelector.svelte} (100%) delete mode 100644 packages/builder/src/components/workflow/SetupPanel/ParamInputs/StringParam.svelte diff --git a/packages/builder/package.json b/packages/builder/package.json index 1cb53bc99b..5cd18c3955 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -43,6 +43,7 @@ "@nx-js/compiler-util": "^2.0.0", "codemirror": "^5.51.0", "date-fns": "^1.29.0", + "deepmerge": "^4.2.2", "feather-icons": "^4.21.0", "flatpickr": "^4.5.7", "lodash": "^4.17.13", diff --git a/packages/builder/src/builderStore/store/workflow/Workflow.js b/packages/builder/src/builderStore/store/workflow/Workflow.js index 623eb07f48..3e5a0e8b4e 100644 --- a/packages/builder/src/builderStore/store/workflow/Workflow.js +++ b/packages/builder/src/builderStore/store/workflow/Workflow.js @@ -1,6 +1,6 @@ import mustache from "mustache" // TODO: tidy up import -import blockDefinitions from "../../../components/workflow/WorkflowPanel/blockDefinitions" +import blockDefinitions from "components/workflow/WorkflowPanel/blockDefinitions" import { generate } from "shortid" /** @@ -12,6 +12,10 @@ export default class Workflow { this.workflow = workflow } + isEmpty() { + return !this.workflow.definition.next + } + addBlock(block) { let node = this.workflow.definition while (node.next) node = node.next @@ -74,6 +78,7 @@ export default class Workflow { const tagline = definition.tagline || "" const args = block.args || {} + // all the fields the workflow block needs to render in the UI tree.push({ id: block.id, type: block.type, @@ -81,6 +86,7 @@ export default class Workflow { args, heading: block.actionId, body: mustache.render(tagline, args), + name: definition.name }) return this.buildUiTree(block.next, tree) diff --git a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentSelector.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentSelector.svelte new file mode 100644 index 0000000000..fa7a57a57e --- /dev/null +++ b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentSelector.svelte @@ -0,0 +1,45 @@ + + +
+ +
+ +
+ {#if components.length > 0} + +
+ +
+ {/if} +
diff --git a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelParam.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelParam.svelte deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelSelector.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelSelector.svelte new file mode 100644 index 0000000000..3fd6344f99 --- /dev/null +++ b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelSelector.svelte @@ -0,0 +1,17 @@ + + + +
+ +
+ +
+
diff --git a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/NumberParam.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/NumberParam.svelte deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentParam.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/RecordSelector.svelte similarity index 100% rename from packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentParam.svelte rename to packages/builder/src/components/workflow/SetupPanel/ParamInputs/RecordSelector.svelte diff --git a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/StringParam.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/StringParam.svelte deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte b/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte index d91eb3ffaf..b0e94e4175 100644 --- a/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte @@ -79,10 +79,11 @@ display: flex; align-items: center; justify-content: space-between; + margin-bottom: 20px; } - span:not(.selected) { - color: var(--dark-grey); + header > span { + color: var(--font); } label { diff --git a/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte index 2b35d0ab44..22a7c56f4a 100644 --- a/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte @@ -1,21 +1,19 @@ {#each workflowParams as [parameter, type]}
@@ -29,6 +27,8 @@ {/each} + {:else if type === 'component'} + {:else if type === 'accessLevel'} - {#each $backendUiStore.models as model} - - {/each} - - {:else if type === 'component'} - + {:else if type === 'string'} diff --git a/packages/builder/src/components/workflow/WorkflowPanel/BlockList/BlockList.svelte b/packages/builder/src/components/workflow/WorkflowPanel/BlockList/BlockList.svelte index e288e78e94..a690492672 100644 --- a/packages/builder/src/components/workflow/WorkflowPanel/BlockList/BlockList.svelte +++ b/packages/builder/src/components/workflow/WorkflowPanel/BlockList/BlockList.svelte @@ -1,42 +1,45 @@
- {#each SUB_TABS as tab} + {#if $workflowStore.currentWorkflow.isEmpty()} (selectedTab = tab.key)}> - {tab.name} + class:selected={'TRIGGER' === selectedTab} + on:click={() => (selectedTab = 'TRIGGER')}> + Triggers - {/each} + {/if} + (selectedTab = 'ACTION')}> + Actions + + (selectedTab = 'LOGIC')}> + Logic +
{#each definitions as [actionId, blockDefinition]} diff --git a/packages/builder/src/components/workflow/WorkflowPanel/BlockList/WorkflowBlock.svelte b/packages/builder/src/components/workflow/WorkflowPanel/BlockList/WorkflowBlock.svelte index 31014b86f7..0907efe7ae 100644 --- a/packages/builder/src/components/workflow/WorkflowPanel/BlockList/WorkflowBlock.svelte +++ b/packages/builder/src/components/workflow/WorkflowPanel/BlockList/WorkflowBlock.svelte @@ -6,7 +6,6 @@ export let actionId function addBlockToWorkflow() { - // TODO: store the block type in the DB as well workflowStore.actions.addBlockToWorkflow({ ...blockDefinition, args: {}, diff --git a/packages/builder/src/components/workflow/WorkflowPanel/WorkflowPanel.svelte b/packages/builder/src/components/workflow/WorkflowPanel/WorkflowPanel.svelte index c831ed0304..b057177cae 100644 --- a/packages/builder/src/components/workflow/WorkflowPanel/WorkflowPanel.svelte +++ b/packages/builder/src/components/workflow/WorkflowPanel/WorkflowPanel.svelte @@ -11,7 +11,7 @@
(selectedTab = 'WORKFLOWS')}> Workflows @@ -37,10 +37,13 @@ font-weight: bold; display: flex; align-items: center; - justify-content: space-between; margin-bottom: 20px; } + .workflow-header { + margin-right: 20px; + } + span:not(.selected) { color: var(--dark-grey); } diff --git a/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js b/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js index 3f61e4f5d3..17203646a8 100644 --- a/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js +++ b/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js @@ -7,7 +7,7 @@ const ACTION = { environment: "CLIENT", params: { path: "string", - value: "string", + value: "longText", }, }, NAVIGATE: { @@ -77,8 +77,9 @@ const ACTION = { const TRIGGER = { RECORD_SAVED: { name: "Record Saved", + event: "record:save", icon: "ri-save-line", - tagline: "Record is added to {{model}}", + tagline: "Record is added to {{model.name}}", description: "Save a record to your database.", environment: "SERVER", params: { @@ -87,44 +88,45 @@ const TRIGGER = { }, RECORD_DELETED: { name: "Record Deleted", + event: "record:delete", icon: "ri-delete-bin-line", - tagline: "Record is deleted from {{model}}", + tagline: "Record is deleted from {{model.name}}", description: "Fired when a record is deleted from your database.", environment: "SERVER", params: { model: "model" }, }, - CLICK: { - name: "Click", - icon: "ri-cursor-line", - tagline: "{{component}} is clicked", - description: "Trigger when you click on an element in the UI.", - environment: "CLIENT", - params: { - component: "component" - } - }, - LOAD: { - name: "Load", - icon: "ri-loader-line", - tagline: "{{component}} is loaded", - description: "Trigger an element has finished loading.", - environment: "CLIENT", - params: { - component: "component" - } - }, - INPUT: { - name: "Input", - icon: "ri-text", - tagline: "Text entered into {{component}", - description: "Trigger when you type into an input box.", - environment: "CLIENT", - params: { - component: "component" - } - }, + // CLICK: { + // name: "Click", + // icon: "ri-cursor-line", + // tagline: "{{component}} is clicked", + // description: "Trigger when you click on an element in the UI.", + // environment: "CLIENT", + // params: { + // component: "component" + // } + // }, + // LOAD: { + // name: "Load", + // icon: "ri-loader-line", + // tagline: "{{component}} is loaded", + // description: "Trigger an element has finished loading.", + // environment: "CLIENT", + // params: { + // component: "component" + // } + // }, + // INPUT: { + // name: "Input", + // icon: "ri-text", + // tagline: "Text entered into {{component}", + // description: "Trigger when you type into an input box.", + // environment: "CLIENT", + // params: { + // component: "component" + // } + // }, } const LOGIC = { @@ -135,9 +137,9 @@ const LOGIC = { description: "Filter any workflows which do not meet certain conditions.", environment: "CLIENT", params: { - field: "string", + filter: "string", condition: [ - "equals" + "equals", ], value: "string" }, diff --git a/packages/client/src/api/workflow/index.js b/packages/client/src/api/workflow/index.js index 2e3c025adb..4226027df1 100644 --- a/packages/client/src/api/workflow/index.js +++ b/packages/client/src/api/workflow/index.js @@ -8,6 +8,4 @@ export const triggerWorkflow = api => ({ workflow }) => { workflowOrchestrator.strategy = clientStrategy workflowOrchestrator.execute(workflow) - - // hit the API and get the workflow data back } diff --git a/packages/client/src/api/workflow/orchestrator.js b/packages/client/src/api/workflow/orchestrator.js index 7a26c1648c..bd8f111861 100644 --- a/packages/client/src/api/workflow/orchestrator.js +++ b/packages/client/src/api/workflow/orchestrator.js @@ -23,7 +23,10 @@ export default class Orchestrator { async execute(workflowId) { const EXECUTE_WORKFLOW_URL = `/api/${this.instanceId}/workflows/${workflowId}` const workflow = await this.api.get({ url: EXECUTE_WORKFLOW_URL }) - this._strategy.run(workflow.definition) + + if (workflow.live) { + this._strategy.run(workflow.definition) + } } } @@ -80,17 +83,9 @@ export const clientStrategy = ({ api, instanceId }) => ({ if (block.actionId === "FILTER") { const { field, condition, value } = block.args; switch (condition) { - case "=": + case "equals": if (field !== value) return; break; - case "!=": - if (field === value) return; - break; - case "gt": - if (field < value) return; - break; - case "lt": - if (field > value) return; default: return; } diff --git a/packages/server/src/api/controllers/instance.js b/packages/server/src/api/controllers/instance.js index 573860438c..f5e8239168 100644 --- a/packages/server/src/api/controllers/instance.js +++ b/packages/server/src/api/controllers/instance.js @@ -29,6 +29,16 @@ exports.create = async function(ctx) { emit([doc.type], doc._id) }.toString(), }, + by_workflow_trigger: { + map: function(doc) { + if (doc.type === "workflow") { + const trigger = doc.definition.next + if (trigger) { + emit([trigger.event], trigger) + } + } + }.toString() + } }, }) diff --git a/packages/server/src/api/controllers/record.js b/packages/server/src/api/controllers/record.js index c3e1fa940d..f1c04d4a7a 100644 --- a/packages/server/src/api/controllers/record.js +++ b/packages/server/src/api/controllers/record.js @@ -5,7 +5,6 @@ const newid = require("../../db/newid") const ajv = new Ajv() exports.save = async function(ctx) { - console.log("THIS INSTANCE", ctx.params.instanceId) const db = new CouchDB(ctx.params.instanceId) const record = ctx.request.body record.modelId = ctx.params.modelId @@ -45,7 +44,11 @@ exports.save = async function(ctx) { record.type = "record" const response = await db.post(record) record._rev = response.rev - // ctx.eventPublisher.emit("RECORD_CREATED", record) + + ctx.eventEmitter.emit(`record:save`, { + record, + instanceId: ctx.params.instanceId + }) ctx.body = record ctx.status = 200 ctx.message = `${model.name} created successfully` @@ -85,4 +88,5 @@ exports.destroy = async function(ctx) { return } ctx.body = await db.remove(ctx.params.recordId, ctx.params.revId) + ctx.eventEmitter.emit(`record:delete`, record) } diff --git a/packages/server/src/api/controllers/workflow/index.js b/packages/server/src/api/controllers/workflow/index.js index 1a4cfa8591..34438b0892 100644 --- a/packages/server/src/api/controllers/workflow/index.js +++ b/packages/server/src/api/controllers/workflow/index.js @@ -10,24 +10,6 @@ exports.create = async function(ctx) { workflow._id = newid() - // TODO: Possibly validate the workflow against a schema - - // // validation with ajv - // const model = await db.get(record.modelId) - // const validate = ajv.compile({ - // properties: model.schema, - // }) - // const valid = validate(record) - - // if (!valid) { - // ctx.status = 400 - // ctx.body = { - // status: 400, - // errors: validate.errors, - // } - // return - // } - workflow.type = "workflow" const response = await db.post(workflow) workflow._rev = response.rev diff --git a/packages/server/src/app.js b/packages/server/src/app.js index 57fb037626..2fb959933e 100644 --- a/packages/server/src/app.js +++ b/packages/server/src/app.js @@ -4,7 +4,7 @@ const logger = require("koa-pino-logger") const http = require("http") const api = require("./api") const env = require("./environment") -const eventPublisher = require("./events") +const eventEmitter = require("./events") const app = new Koa() @@ -20,7 +20,7 @@ app.use( }) ) -app.context.publisher = eventPublisher +app.context.eventEmitter = eventEmitter // api routes app.use(api.routes()) diff --git a/packages/server/src/events/index.js b/packages/server/src/events/index.js index 7d54c4cd95..3e6d30869c 100644 --- a/packages/server/src/events/index.js +++ b/packages/server/src/events/index.js @@ -1,3 +1,31 @@ const EventEmitter = require("events").EventEmitter +const CouchDB = require("../db"); -module.exports = new EventEmitter() +const emitter = new EventEmitter() + +function determineWorkflowsToTrigger(instanceId, event) { + const db = new CouchDB(instanceId); + const workflowsToTrigger = await db.query("database/by_workflow_trigger", { + key: [event] + }) + + return workflowsToTrigger.rows; +} + +emitter.on("record:save", async function(event) { + const workflowsToTrigger = await determineWorkflowsToTrigger(instanceId, "record:save") + + for (let workflow of workflowsToTrigger) { + // SERVER SIDE STUFF!! + } +}) + +emitter.on("record:delete", function(event) { + const workflowsToTrigger = await determineWorkflowsToTrigger(instanceId, "record:delete") + + for (let workflow of workflowsToTrigger) { + // SERVER SIDE STUFF!! + } +}) + +module.exports = emitter diff --git a/packages/server/src/schemas/index.js b/packages/server/src/schemas/index.js index 63a6514043..93fa005a80 100644 --- a/packages/server/src/schemas/index.js +++ b/packages/server/src/schemas/index.js @@ -17,18 +17,19 @@ const WORKFLOW_SCHEMA = { type: "object", properties: { triggers: { type: "array" }, - next: { - type: "object", - properties: { - environment: { environment: "string" }, - type: { type: "string" }, - actionId: { type: "string" }, - args: { type: "object" }, - conditions: { type: "array" }, - errorHandling: { type: "object" }, - next: { type: "object" }, - }, - }, + steps: { type: "array" } + // next: { + // type: "object", + // properties: { + // environment: { environment: "string" }, + // type: { type: "string" }, + // actionId: { type: "string" }, + // args: { type: "object" }, + // conditions: { type: "array" }, + // errorHandling: { type: "object" }, + // next: { type: "object" }, + // }, + // }, }, }, }, From 353c9c81951a72d8b0a7737615f10b66936d53ee Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Mon, 1 Jun 2020 10:18:45 +0100 Subject: [PATCH 030/161] component nav dropdown menu --- .../builder/src/builderStore/store/index.js | 78 ++++++++++-- .../src/components/common/Icons/More.svelte | 8 ++ .../src/components/common/Icons/index.js | 1 + .../ComponentDropdownMenu.svelte | 116 ++++++++++++++++++ .../ComponentsHierarchyChildren.svelte | 54 +------- .../[application]/frontend/_layout.svelte | 1 + 6 files changed, 197 insertions(+), 61 deletions(-) create mode 100644 packages/builder/src/components/common/Icons/More.svelte create mode 100644 packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte diff --git a/packages/builder/src/builderStore/store/index.js b/packages/builder/src/builderStore/store/index.js index f4d47064be..6755bc0a7c 100644 --- a/packages/builder/src/builderStore/store/index.js +++ b/packages/builder/src/builderStore/store/index.js @@ -64,11 +64,16 @@ export const getStore = () => { store.getPathToComponent = getPathToComponent(store) store.addTemplatedComponent = addTemplatedComponent(store) store.setMetadataProp = setMetadataProp(store) + store.storeComponentForCopy = storeComponentForCopy(store) + store.pasteComponent = pasteComponent(store) return store } export default getStore +export const getComponentDefinition = (state, name) => + name.startsWith("##") ? getBuiltin(name) : state.components[name] + const setPackage = (store, initial) => async pkg => { const [main_screens, unauth_screens] = await Promise.all([ api @@ -317,8 +322,6 @@ const setCurrentPage = store => pageName => { }) } -// const getComponentDefinition = (components, name) => components.find(c => c.name === name) - /** * @param {string} componentToAdd - name of the component to add to the application * @param {string} presetName - name of the component preset if defined @@ -344,9 +347,7 @@ const addChildComponent = store => (componentToAdd, presetName) => { return state } - const component = componentToAdd.startsWith("##") - ? getBuiltin(componentToAdd) - : state.components[componentToAdd] + const component = getComponentDefinition(componentToAdd) const presetProps = presetName ? component.presets[presetName] : {} @@ -398,14 +399,18 @@ const addTemplatedComponent = store => props => { }) } +const _selectComponent = (state, component) => { + const componentDef = component._component.startsWith("##") + ? component + : state.components[component._component] + state.currentComponentInfo = makePropsSafe(componentDef, component) + state.currentView = "component" + return state +} + const selectComponent = store => component => { store.update(state => { - const componentDef = component._component.startsWith("##") - ? component - : state.components[component._component] - state.currentComponentInfo = makePropsSafe(componentDef, component) - state.currentView = "component" - return state + return _selectComponent(state, component) }) } @@ -534,7 +539,6 @@ const copyComponent = store => component => { p._id = uuid() }) parent._children = [...parent._children, copiedComponent] - s.curren _saveCurrentPreviewItem(s) s.currentComponentInfo = copiedComponent return s @@ -572,10 +576,58 @@ const getPathToComponent = store => component => { return path } +const generateNewIdsForComponent = component => + walkProps(component, p => { + p._id = uuid() + }) + +const storeComponentForCopy = store => (component, cut = false) => { + store.update(s => { + const copiedComponent = cloneDeep(component) + s.componentToPaste = copiedComponent + if (cut) { + const parent = getParent(s.currentPreviewItem.props, component._id) + parent._children = parent._children.filter(c => c._id !== component._id) + _selectComponent(s, parent) + } + + return s + }) +} + +const pasteComponent = store => (targetComponent, mode) => { + store.update(s => { + if (!s.componentToPaste) return s + + const componentToPaste = cloneDeep(s.componentToPaste) + generateNewIdsForComponent(componentToPaste) + delete componentToPaste._cutId + + if (mode === "inside") { + targetComponent._children.push(componentToPaste) + return s + } + + const parent = getParent(s.currentPreviewItem.props, targetComponent) + + const targetIndex = parent._children.indexOf(targetComponent) + const index = mode === "above" ? targetIndex : targetIndex + 1 + parent._children.splice(index, 0, cloneDeep(componentToPaste)) + + _saveCurrentPreviewItem(s) + _selectComponent(s, componentToPaste) + + return s + }) +} + const getParent = (rootProps, child) => { let parent walkProps(rootProps, (p, breakWalk) => { - if (p._children && p._children.includes(child)) { + if ( + p._children && + (p._children.includes(child) || p._children.some(c => c._id === child)) + ) { parent = p breakWalk() } diff --git a/packages/builder/src/components/common/Icons/More.svelte b/packages/builder/src/components/common/Icons/More.svelte new file mode 100644 index 0000000000..f072c48976 --- /dev/null +++ b/packages/builder/src/components/common/Icons/More.svelte @@ -0,0 +1,8 @@ + + + + diff --git a/packages/builder/src/components/common/Icons/index.js b/packages/builder/src/components/common/Icons/index.js index 69b78421da..4e4b41082d 100644 --- a/packages/builder/src/components/common/Icons/index.js +++ b/packages/builder/src/components/common/Icons/index.js @@ -31,3 +31,4 @@ export { default as EmailIcon } from "./Email.svelte" export { default as TwitterIcon } from "./Twitter.svelte" export { default as InfoIcon } from "./Info.svelte" export { default as CloseIcon } from "./Close.svelte" +export { default as MoreIcon } from "./More.svelte" diff --git a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte new file mode 100644 index 0000000000..5a485f9680 --- /dev/null +++ b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte @@ -0,0 +1,116 @@ + + +
{}}> + + +
+ + + + store.deleteComponent(component)} /> + + \ No newline at end of file diff --git a/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte b/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte index eafc1834d0..a61d6960f2 100644 --- a/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte +++ b/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte @@ -3,6 +3,7 @@ import { store } from "builderStore" import { last } from "lodash/fp" import { pipe } from "components/common/core" + import ComponentDropdownMenu from "./ComponentDropdownMenu.svelte" import { XCircleIcon, ChevronUpIcon, @@ -51,30 +52,9 @@ class:selected={currentComponent === component} style="padding-left: {level * 20 + 53}px">
{get_capitalised_name(component._component)}
-
- {#if index > 0} - - {/if} - {#if index < components.length - 1} - - {/if} +
+
- -
{#if component._children} @@ -111,7 +91,7 @@ font-size: 13px; } - .item button { + .actions { display: none; height: 20px; width: 28px; @@ -120,37 +100,15 @@ border-style: none; background: rgba(0, 0, 0, 0); cursor: pointer; - } - - .item button.copy { - width: 26px; + position: relative; } .item:hover { background: #fafafa; cursor: pointer; } - .item:hover button { + .item:hover .actions { display: block; } - .item:hover button:hover { - color: var(--button-text); - } - - .reorder-buttons { - display: flex; - flex-direction: column; - height: 100%; - } - - .reorder-buttons > button { - flex: 1 1 auto; - width: 30px; - height: 15px; - } - - .reorder-buttons > button.solo { - padding-top: 2px; - } diff --git a/packages/builder/src/pages/[application]/frontend/_layout.svelte b/packages/builder/src/pages/[application]/frontend/_layout.svelte index 536da887d6..9b38d64f5d 100644 --- a/packages/builder/src/pages/[application]/frontend/_layout.svelte +++ b/packages/builder/src/pages/[application]/frontend/_layout.svelte @@ -103,6 +103,7 @@ overflow: scroll; display: flex; flex-direction: column; + z-index: 5; } .preview-pane { From b29d39d525873c1a5d987274db868f1df0bfdf85 Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Mon, 1 Jun 2020 10:25:12 +0100 Subject: [PATCH 031/161] removing old component actions --- .../ComponentDropdownMenu.svelte | 20 ++----------------- .../userInterface/ComponentsHierarchy.svelte | 6 +----- .../ComponentsHierarchyChildren.svelte | 18 ++--------------- .../userInterface/PageLayout.svelte | 6 +----- 4 files changed, 6 insertions(+), 44 deletions(-) diff --git a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte index 5a485f9680..e2f8943d9e 100644 --- a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte +++ b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte @@ -20,23 +20,6 @@ const showDropdown = () => { dropdown.show() } -/* -{#if index > 0} - - {/if} - {#if index < components.length - 1} - - {/if} -*/ -
{}}> @@ -77,8 +60,9 @@ const showDropdown = () => { border-style: none; border-radius: 2px; padding: 5px; - background: var(--grey); + background: transparent; cursor: pointer; + color: var(--button-text) } .menu { diff --git a/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte b/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte index 26929fcdce..e02874c0dd 100644 --- a/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte +++ b/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte @@ -72,11 +72,7 @@ {#if $store.currentPreviewItem.name === screen.title && screen.component.props._children} + currentComponent={$store.currentComponentInfo} /> {/if} {/each} diff --git a/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte b/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte index a61d6960f2..16aab64576 100644 --- a/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte +++ b/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte @@ -15,23 +15,13 @@ export let currentComponent export let onSelect = () => {} export let level = 0 - export let onDeleteComponent - export let onMoveUpComponent - export let onMoveDownComponent - export let onCopyComponent + const capitalise = s => s.substring(0, 1).toUpperCase() + s.substring(1) const get_name = s => (!s ? "" : last(s.split("/"))) const get_capitalised_name = name => pipe(name, [get_name, capitalise]) - const moveDownComponent = component => { - const c = component - return () => { - return onMoveDownComponent(c) - } - } - const selectComponent = component => { // Set current component store.selectComponent(component) @@ -62,11 +52,7 @@ components={component._children} {currentComponent} {onSelect} - level={level + 1} - {onDeleteComponent} - {onMoveUpComponent} - {onMoveDownComponent} - {onCopyComponent} /> + level={level + 1} /> {/if} {/each} diff --git a/packages/builder/src/components/userInterface/PageLayout.svelte b/packages/builder/src/components/userInterface/PageLayout.svelte index 2a532f9624..c4b786c5b2 100644 --- a/packages/builder/src/components/userInterface/PageLayout.svelte +++ b/packages/builder/src/components/userInterface/PageLayout.svelte @@ -68,11 +68,7 @@ + currentComponent={$store.currentComponentInfo} /> {/if}
From 15ba1a5a12fdc19b98f53c446f744ca083b756e3 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 1 Jun 2020 10:41:28 +0100 Subject: [PATCH 032/161] move workflow to array data structure --- packages/builder/rollup.config.js | 2 +- packages/builder/src/App.svelte | 3 +- .../builderStore/store/workflow/Workflow.js | 133 +++++++++++------- .../src/builderStore/store/workflow/index.js | 3 +- .../AppPreview/CurrentItemPreview.svelte | 2 +- .../EventsEditor/StateBindingCascader.svelte | 6 +- .../SetupPanel/DeleteWorkflowModal.svelte | 2 +- .../ParamInputs/ComponentSelector.svelte | 2 +- .../ParamInputs/ModelSelector.svelte | 1 - .../SetupPanel/WorkflowBlockSetup.svelte | 8 +- .../svelte-flows/FlowChart.svelte | 2 +- .../WorkflowPanel/BlockList/BlockList.svelte | 5 +- .../WorkflowList/CreateWorkflowModal.svelte | 2 +- .../WorkflowList/WorkflowList.svelte | 9 +- .../WorkflowPanel/blockDefinitions.js | 8 +- .../builder/src/components/workflow/index.js | 6 +- packages/client/src/api/workflow/actions.js | 29 ++++ packages/client/src/api/workflow/index.js | 2 +- .../client/src/api/workflow/orchestrator.js | 95 +++++-------- packages/client/src/createApp.js | 4 +- packages/client/src/index.js | 2 +- packages/client/src/render/attachChildren.js | 2 +- .../src/render/prepareRenderComponent.js | 16 ++- packages/client/src/render/screenRouter.js | 6 +- packages/client/src/state/bbComponentApi.js | 2 +- packages/client/src/state/eventHandlers.js | 6 +- packages/client/src/state/getState.js | 10 +- packages/client/src/state/setState.js | 6 +- packages/client/src/state/stateManager.js | 56 ++++---- packages/client/src/state/store.js | 19 +-- packages/client/tests/testAppDef.js | 2 +- .../server/src/api/controllers/instance.js | 4 +- packages/server/src/api/controllers/record.js | 2 +- .../workflow/actions/CREATE_USER.js | 8 +- packages/server/src/events/index.js | 22 +-- packages/server/src/schemas/index.js | 2 +- 36 files changed, 257 insertions(+), 232 deletions(-) create mode 100644 packages/client/src/api/workflow/actions.js diff --git a/packages/builder/rollup.config.js b/packages/builder/rollup.config.js index ae9a7e069e..fd7c487c3f 100644 --- a/packages/builder/rollup.config.js +++ b/packages/builder/rollup.config.js @@ -152,7 +152,7 @@ export default { { find: "builderStore", replacement: path.resolve(projectRootDir, "src/builderStore"), - } + }, ], customResolver, }), diff --git a/packages/builder/src/App.svelte b/packages/builder/src/App.svelte index 54968a52c2..4ead618ba6 100644 --- a/packages/builder/src/App.svelte +++ b/packages/builder/src/App.svelte @@ -7,8 +7,7 @@ import AppNotification, { showAppNotification, } from "components/common/AppNotification.svelte" - import { NotificationDisplay } from '@beyonk/svelte-notifications' - + import { NotificationDisplay } from "@beyonk/svelte-notifications" function showErrorBanner() { showAppNotification({ diff --git a/packages/builder/src/builderStore/store/workflow/Workflow.js b/packages/builder/src/builderStore/store/workflow/Workflow.js index 3e5a0e8b4e..c8ae55dbf3 100644 --- a/packages/builder/src/builderStore/store/workflow/Workflow.js +++ b/packages/builder/src/builderStore/store/workflow/Workflow.js @@ -13,82 +13,109 @@ export default class Workflow { } isEmpty() { - return !this.workflow.definition.next + // return this.workflow.definition.next + return this.workflow.length > 0 } addBlock(block) { - let node = this.workflow.definition - while (node.next) node = node.next - node.next = { + // Make sure to add trigger if doesn't exist + this.workflow.definition.steps.push({ id: generate(), - ...block - } + ...block, + }) } updateBlock(updatedBlock, id) { - let block = this.workflow.definition + const { steps, trigger } = this.workflow.definition - while (block.id !== id) block = block.next - if (!block) throw new Error("Block not found.") + // if the block is a trigger do X - block = updatedBlock + // if step + const stepIdx = steps.findIndex(step => step.id === id) + + // while (block.id !== id) block = block.next + if (stepIdx < 0) throw new Error("Block not found.") + + steps.splice(stepIdx, 1, updatedBlock) } deleteBlock(id) { - let previous = null - let block = this.workflow.definition + const { steps, trigger } = this.workflow.definition - // iterate through the blocks - while (block.id !== id) { - previous = block - block = block.next - } + const stepIdx = steps.findIndex(step => step.id === id) - // delete the block matching your id - if (!block.next) { - delete previous.next - } else { - previous.next = block.next - } + if (stepIdx < 0) throw new Error("Block not found.") + steps.splice(stepIdx, 1) } createUiTree() { - if (!this.workflow.definition.next) return [] - return Workflow.buildUiTree(this.workflow.definition.next) + if (!this.workflow.definition) return [] + return Workflow.buildUiTree(this.workflow.definition) } - static buildUiTree(block, tree = []) { - if (!block) return tree + static buildUiTree(definition) { + return definition.steps.map(step => { + // The client side display definition for the block + const definition = blockDefinitions[step.type][step.actionId] + if (!definition) { + throw new Error( + `No block definition exists for the chosen block. Check there's an entry in the block definitions for ${step.actionId}` + ) + } - // The client side display definition for the block - const definition = blockDefinitions[block.type][block.actionId] - if (!definition) { - throw new Error( - `No block definition exists for the chosen block. Check there's an entry in the block definitions for ${block.actionId}` - ) - } + if (!definition.params) { + throw new Error( + `Blocks should always have parameters. Ensure that the block definition is correct for ${step.actionId}` + ) + } - if (!definition.params) { - throw new Error( - `Blocks should always have parameters. Ensure that the block definition is correct for ${block.actionId}` - ) - } + const tagline = definition.tagline || "" + const args = step.args || {} - const tagline = definition.tagline || "" - const args = block.args || {} - - // all the fields the workflow block needs to render in the UI - tree.push({ - id: block.id, - type: block.type, - params: block.params, - args, - heading: block.actionId, - body: mustache.render(tagline, args), - name: definition.name + return { + id: step.id, + type: step.type, + params: step.params, + args, + heading: step.actionId, + body: mustache.render(tagline, args), + name: definition.name, + } }) - - return this.buildUiTree(block.next, tree) } + + // static buildUiTree(block, tree = []) { + // if (!block) return tree + + // // The client side display definition for the block + // const definition = blockDefinitions[block.type][block.actionId] + // if (!definition) { + // throw new Error( + // `No block definition exists for the chosen block. Check there's an entry in the block definitions for ${block.actionId}` + // ) + // } + + // if (!definition.params) { + // throw new Error( + // `Blocks should always have parameters. Ensure that the block definition is correct for ${block.actionId}` + // ) + // } + + // const tagline = definition.tagline || "" + // const args = block.args || {} + + // // all the fields the workflow block needs to render in the UI + // tree.push({ + // id: block.id, + // type: block.type, + // params: block.params, + // args, + // heading: block.actionId, + // body: mustache.render(tagline, args), + // name: definition.name + // }) + + // return this.buildUiTree(block.next, tree) + // } } diff --git a/packages/builder/src/builderStore/store/workflow/index.js b/packages/builder/src/builderStore/store/workflow/index.js index 971312c2ef..8b534aab5c 100644 --- a/packages/builder/src/builderStore/store/workflow/index.js +++ b/packages/builder/src/builderStore/store/workflow/index.js @@ -13,7 +13,8 @@ const workflowActions = store => ({ }) }, create: async ({ instanceId, name }) => { - const workflow = { name, definition: {} } + // TODO: set these defaults in the backend + const workflow = { name, definition: { trigger: {}, steps: [] } } const CREATE_WORKFLOW_URL = `/api/${instanceId}/workflows` const response = await api.post(CREATE_WORKFLOW_URL, workflow) const json = await response.json() diff --git a/packages/builder/src/components/userInterface/AppPreview/CurrentItemPreview.svelte b/packages/builder/src/components/userInterface/AppPreview/CurrentItemPreview.svelte index ad52602afc..a7288c8c91 100644 --- a/packages/builder/src/components/userInterface/AppPreview/CurrentItemPreview.svelte +++ b/packages/builder/src/components/userInterface/AppPreview/CurrentItemPreview.svelte @@ -116,7 +116,7 @@ stylesheetLinks, selectedComponentType, selectedComponentId, - frontendDefinition: JSON.stringify(frontendDefinition) + frontendDefinition: JSON.stringify(frontendDefinition), })} /> {/if}
diff --git a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte index 79cd776c61..37681aa399 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte @@ -17,14 +17,16 @@ export let onChange let isOpen = false -
{parameter.name}
{#if parameter.name === 'workflow'} - {#each $workflowStore.workflows as workflow} {/each} diff --git a/packages/builder/src/components/workflow/SetupPanel/DeleteWorkflowModal.svelte b/packages/builder/src/components/workflow/SetupPanel/DeleteWorkflowModal.svelte index a3eef9d9d2..9f51362419 100644 --- a/packages/builder/src/components/workflow/SetupPanel/DeleteWorkflowModal.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/DeleteWorkflowModal.svelte @@ -1,6 +1,6 @@ - + {#each workflowParams as [parameter, type]}
diff --git a/packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte b/packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte index 40c54246e9..a1f488fecb 100644 --- a/packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte +++ b/packages/builder/src/components/workflow/WorkflowBuilder/svelte-flows/FlowChart.svelte @@ -1,6 +1,6 @@ diff --git a/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js b/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js index 17203646a8..4e36353532 100644 --- a/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js +++ b/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js @@ -94,7 +94,7 @@ const TRIGGER = { description: "Fired when a record is deleted from your database.", environment: "SERVER", params: { - model: "model" + model: "model", }, }, // CLICK: { @@ -138,10 +138,8 @@ const LOGIC = { environment: "CLIENT", params: { filter: "string", - condition: [ - "equals", - ], - value: "string" + condition: ["equals"], + value: "string", }, }, DELAY: { diff --git a/packages/builder/src/components/workflow/index.js b/packages/builder/src/components/workflow/index.js index 2b3d68b5b7..a3f5c4a2bc 100644 --- a/packages/builder/src/components/workflow/index.js +++ b/packages/builder/src/components/workflow/index.js @@ -1,3 +1,3 @@ -export { default as WorkflowBuilder } from "./WorkflowBuilder/WorkflowBuilder.svelte"; -export { default as SetupPanel } from "./SetupPanel/SetupPanel.svelte"; -export { default as WorkflowPanel } from "./WorkflowPanel/WorkflowPanel.svelte"; +export { default as WorkflowBuilder } from "./WorkflowBuilder/WorkflowBuilder.svelte" +export { default as SetupPanel } from "./SetupPanel/SetupPanel.svelte" +export { default as WorkflowPanel } from "./WorkflowPanel/WorkflowPanel.svelte" diff --git a/packages/client/src/api/workflow/actions.js b/packages/client/src/api/workflow/actions.js new file mode 100644 index 0000000000..44d863cd3f --- /dev/null +++ b/packages/client/src/api/workflow/actions.js @@ -0,0 +1,29 @@ +import { get } from "svelte/store" +import { setState } from "../../state/setState" +import { appStore } from "../../state/store" + +const delay = ms => new Promise(resolve => setTimeout(resolve, ms)) + +export default { + SET_STATE: ({ context, args, id }) => { + // get props from the workflow context if required + setState(...Object.values(args)) + // update the context with the data + context = { + ...context, + [id]: args, + } + }, + NAVIGATE: ({ context, args, id }) => {}, + DELAY: async ({ context, args }) => await delay(args.time), + FILTER: (context, args) => { + const { field, condition, value } = args + switch (condition) { + case "equals": + if (field !== value) return + break + default: + return + } + }, +} diff --git a/packages/client/src/api/workflow/index.js b/packages/client/src/api/workflow/index.js index 4226027df1..795dafca20 100644 --- a/packages/client/src/api/workflow/index.js +++ b/packages/client/src/api/workflow/index.js @@ -3,7 +3,7 @@ import Orchestrator, { clientStrategy } from "./orchestrator" export const triggerWorkflow = api => ({ workflow }) => { const workflowOrchestrator = new Orchestrator( api, - "inst_60dd510_700f7dc06735403e81d5af91072d7241" + "inst_ad75c7f_4f3e7d5d80a74b17a5187a18e2aba85e" ) workflowOrchestrator.strategy = clientStrategy diff --git a/packages/client/src/api/workflow/orchestrator.js b/packages/client/src/api/workflow/orchestrator.js index bd8f111861..1473b183e7 100644 --- a/packages/client/src/api/workflow/orchestrator.js +++ b/packages/client/src/api/workflow/orchestrator.js @@ -1,7 +1,7 @@ -import { get } from "svelte/store"; -import { setState } from "../../state/setState"; -import mustache from "mustache"; -import { appStore } from "../../state/store"; +import { get } from "svelte/store" +import mustache from "mustache" +import { appStore } from "../../state/store" +import clientActions from "./actions" /** * The workflow orchestrator is a class responsible for executing workflows. @@ -17,7 +17,7 @@ export default class Orchestrator { } set strategy(strategy) { - this._strategy = strategy({ api: this.api, instanceId: this.instanceId }); + this._strategy = strategy({ api: this.api, instanceId: this.instanceId }) } async execute(workflowId) { @@ -32,85 +32,58 @@ export default class Orchestrator { // Execute a workflow from a running budibase app export const clientStrategy = ({ api, instanceId }) => ({ - delay: ms => new Promise(resolve => setTimeout(resolve, ms)), context: {}, bindContextArgs: function(args) { const mappedArgs = { ...args } - console.log("original args", args) - // bind the workflow action args to the workflow context, if required for (let arg in args) { const argValue = args[arg] + + // We don't want to render mustache templates on non-strings + if (typeof argValue !== "string") continue + // Means that it's bound to state or workflow context - console.log(argValue, get(appStore)); mappedArgs[arg] = mustache.render(argValue, { context: this.context, - state: get(appStore) - }); + state: get(appStore), + }) } - console.log(mappedArgs) - return mappedArgs }, run: async function(workflow) { - const block = workflow.next + for (let block of workflow.steps) { + console.log("Executing workflow block", block) - console.log("Executing workflow block", block) + // This code gets run in the browser + if (block.environment === "CLIENT") { + const action = clientActions[block.actionId] + await action({ + context: this.context, + args: this.bindContextArgs(block.args), + id: block.id, + }) + } - if (!block) return + // this workflow block gets executed on the server + if (block.environment === "SERVER") { + const EXECUTE_WORKFLOW_URL = `/api/${instanceId}/workflows/action` + const response = await api.post({ + url: EXECUTE_WORKFLOW_URL, + body: { + action: block.actionId, + args: this.bindContextArgs(block.args, api), + }, + }) - // This code gets run in the browser - if (block.environment === "CLIENT") { - if (block.actionId === "SET_STATE") { - // get props from the workflow context if required - setState(...Object.values(this.bindContextArgs(block.args))) - // update the context with the data this.context = { ...this.context, - SET_STATE: block.args, + [block.actionId]: response, } } - if (block.actionId === "NAVIGATE") { - } - - if (block.actionId === "DELAY") { - await this.delay(block.args.time) - } - - if (block.actionId === "FILTER") { - const { field, condition, value } = block.args; - switch (condition) { - case "equals": - if (field !== value) return; - break; - default: - return; - } - } + console.log("workflowContext", this.context) } - - // this workflow block gets executed on the server - if (block.environment === "SERVER") { - const EXECUTE_WORKFLOW_URL = `/api/${instanceId}/workflows/action` - const response = await api.post({ - url: EXECUTE_WORKFLOW_URL, - body: { - action: block.actionId, - args: this.bindContextArgs(block.args, api), - }, - }) - - this.context = { - ...this.context, - [block.actionId]: response, - } - } - - console.log("workflowContext", this.context) - - await this.run(workflow.next) }, }) diff --git a/packages/client/src/createApp.js b/packages/client/src/createApp.js index 9da7c80905..4655c0ebe7 100644 --- a/packages/client/src/createApp.js +++ b/packages/client/src/createApp.js @@ -8,7 +8,7 @@ export const createApp = ({ componentLibraries, frontendDefinition, user, - window + window, }) => { let routeTo let currentUrl @@ -38,7 +38,7 @@ export const createApp = ({ routeTo = screenRouter({ screens: frontendDefinition.screens, onScreenSelected, - appRootPath: frontendDefinition.appRootPath + appRootPath: frontendDefinition.appRootPath, }) const fallbackPath = window.location.pathname.replace( frontendDefinition.appRootPath, diff --git a/packages/client/src/index.js b/packages/client/src/index.js index 7de1d4b478..3e86f3ddec 100644 --- a/packages/client/src/index.js +++ b/packages/client/src/index.js @@ -39,7 +39,7 @@ export const loadBudibase = async opts => { componentLibraries: componentLibraryModules, frontendDefinition, user, - window + window, }) const route = _window.location diff --git a/packages/client/src/render/attachChildren.js b/packages/client/src/render/attachChildren.js index 89ee0cfe4a..db3c3a212c 100644 --- a/packages/client/src/render/attachChildren.js +++ b/packages/client/src/render/attachChildren.js @@ -42,7 +42,7 @@ export const attachChildren = initialiseOpts => (htmlElement, options) => { parentNode: treeNode, ComponentConstructor, htmlElement, - anchor + anchor, }) for (let childNode of childNodesThisIteration) { diff --git a/packages/client/src/render/prepareRenderComponent.js b/packages/client/src/render/prepareRenderComponent.js index b92f946f90..30af819221 100644 --- a/packages/client/src/render/prepareRenderComponent.js +++ b/packages/client/src/render/prepareRenderComponent.js @@ -1,12 +1,12 @@ import { appStore } from "../state/store" -import mustache from "mustache"; +import mustache from "mustache" export const prepareRenderComponent = ({ ComponentConstructor, htmlElement, anchor, props, - parentNode + parentNode, }) => { const parentContext = (parentNode && parentNode.context) || {} @@ -42,14 +42,16 @@ export const prepareRenderComponent = ({ // make this node listen to the store if (thisNode.stateBound) { const unsubscribe = appStore.subscribe(state => { - const storeBoundProps = { ...initialProps._bb.props }; + const storeBoundProps = { ...initialProps._bb.props } for (let prop in storeBoundProps) { if (typeof storeBoundProps[prop] === "string") { - storeBoundProps[prop] = mustache.render(storeBoundProps[prop], { state }); + storeBoundProps[prop] = mustache.render(storeBoundProps[prop], { + state, + }) } - } - thisNode.component.$set(storeBoundProps); - }); + } + thisNode.component.$set(storeBoundProps) + }) thisNode.unsubscribe = unsubscribe } } diff --git a/packages/client/src/render/screenRouter.js b/packages/client/src/render/screenRouter.js index afcb3049cf..1325bbd20a 100644 --- a/packages/client/src/render/screenRouter.js +++ b/packages/client/src/render/screenRouter.js @@ -1,5 +1,5 @@ import regexparam from "regexparam" -import { routerStore } from "../state/store"; +import { routerStore } from "../state/store" import { initRouteStore } from "../state/store" // TODO: refactor @@ -43,8 +43,8 @@ export const screenRouter = ({ screens, onScreenSelected, appRootPath }) => { } routerStore.update(state => { - state["##routeParams"] = params; - return state; + state["##routeParams"] = params + return state }) const screenIndex = current !== -1 ? current : fallback diff --git a/packages/client/src/state/bbComponentApi.js b/packages/client/src/state/bbComponentApi.js index 71235756b3..34746058f7 100644 --- a/packages/client/src/state/bbComponentApi.js +++ b/packages/client/src/state/bbComponentApi.js @@ -51,7 +51,7 @@ export const bbFactory = ({ componentLibraries, treeNode, onScreenSlotRendered, - setupState + setupState, } return { diff --git a/packages/client/src/state/eventHandlers.js b/packages/client/src/state/eventHandlers.js index 926eff89ca..f1de2592f8 100644 --- a/packages/client/src/state/eventHandlers.js +++ b/packages/client/src/state/eventHandlers.js @@ -1,7 +1,7 @@ import { setState } from "./setState" import { getState } from "./getState" import { isArray, isUndefined } from "lodash/fp" -import { appStore } from "./store"; +import { appStore } from "./store" import { createApi } from "../api" @@ -21,7 +21,7 @@ export const eventHandlers = (store, rootPath, routeTo) => { const api = createApi({ rootPath, setState, - getState: (path, fallback) => getState(path, fallback) + getState: (path, fallback) => getState(path, fallback), }) const setStateHandler = ({ path, value }) => setState(path, value) @@ -29,7 +29,7 @@ export const eventHandlers = (store, rootPath, routeTo) => { return { "Set State": handler(["path", "value"], setStateHandler), "Navigate To": handler(["url"], param => routeTo(param && param.url)), - "Trigger Workflow": handler(["workflow"], api.triggerWorkflow) + "Trigger Workflow": handler(["workflow"], api.triggerWorkflow), } } diff --git a/packages/client/src/state/getState.js b/packages/client/src/state/getState.js index 980bb82b6e..4afe27236a 100644 --- a/packages/client/src/state/getState.js +++ b/packages/client/src/state/getState.js @@ -1,10 +1,10 @@ // import { isUndefined, isObject } from "lodash/fp" -import { get } from "svelte/store"; -import getOr from "lodash/fp/getOr"; -import { appStore } from "./store"; +import { get } from "svelte/store" +import getOr from "lodash/fp/getOr" +import { appStore } from "./store" export const getState = (path, fallback) => { if (!path || path.length === 0) return fallback - return getOr(fallback, path, get(appStore)); -} \ No newline at end of file + return getOr(fallback, path, get(appStore)) +} diff --git a/packages/client/src/state/setState.js b/packages/client/src/state/setState.js index d50e6e6e62..3d3b2045c8 100644 --- a/packages/client/src/state/setState.js +++ b/packages/client/src/state/setState.js @@ -1,11 +1,11 @@ -import set from "lodash/fp/set"; -import { appStore } from "./store"; +import set from "lodash/fp/set" +import { appStore } from "./store" export const setState = (path, value) => { if (!path || path.length === 0) return appStore.update(state => { - state = set(path, value, state); + state = set(path, value, state) return state }) } diff --git a/packages/client/src/state/stateManager.js b/packages/client/src/state/stateManager.js index c299c51b07..b4597be5dd 100644 --- a/packages/client/src/state/stateManager.js +++ b/packages/client/src/state/stateManager.js @@ -5,8 +5,8 @@ import { } from "./eventHandlers" import { bbFactory } from "./bbComponentApi" import mustache from "mustache" -import { get } from "svelte/store"; -import { appStore } from "./store"; +import { get } from "svelte/store" +import { appStore } from "./store" const doNothing = () => {} doNothing.isPlaceholder = true @@ -55,9 +55,9 @@ export const createStateManager = ({ // TODO: remove const unsubscribe = appStore.subscribe(state => { - console.log("store updated", state); - return state; - }); + console.log("store updated", state) + return state + }) // const unsubscribe = store.subscribe( // onStoreStateUpdated({ @@ -84,20 +84,18 @@ const onStoreStateUpdated = ({ getCurrentState, componentLibraries, onScreenSlotRendered, - setupState + setupState, }) => state => { - // fire the state update event to re-render anything bound to this - // setCurrentState(state) - - // setCurrentState(state) - // attachChildren({ - // componentLibraries, - // treeNode: createTreeNode(), - // onScreenSlotRendered, - // setupState, - // getCurrentState, - // })(document.querySelector("#app"), { hydrate: true, force: true }) - + // fire the state update event to re-render anything bound to this + // setCurrentState(state) + // setCurrentState(state) + // attachChildren({ + // componentLibraries, + // treeNode: createTreeNode(), + // onScreenSlotRendered, + // setupState, + // getCurrentState, + // })(document.querySelector("#app"), { hydrate: true, force: true }) // // the original array gets changed by components' destroy() // // so we make a clone and check if they are still in the original // const nodesWithBoundChildren_clone = [...nodesWithCodeBoundChildren] @@ -161,19 +159,14 @@ const onStoreStateUpdated = ({ // node.component.$set(newProps) // } -const _setup = ({ - handlerTypes, - getCurrentState, - bb, - store -}) => node => { +const _setup = ({ handlerTypes, getCurrentState, bb, store }) => node => { const props = node.props const context = node.context || {} const initialProps = { ...props } // const storeBoundProps = [] const currentStoreState = get(appStore) - console.log("node", node); + console.log("node", node) // console.log("node", node); // console.log("nodeComponent", node.component); @@ -185,12 +178,12 @@ const _setup = ({ // const binding = parseBinding(propValue) // TODO: better binding stuff - const isBound = typeof propValue === "string" && propValue.startsWith("{{"); + const isBound = typeof propValue === "string" && propValue.startsWith("{{") if (isBound) { initialProps[propName] = mustache.render(propValue, { state: currentStoreState, - context + context, }) if (!node.stateBound) { @@ -230,10 +223,11 @@ const _setup = ({ const resolvedParams = {} for (let paramName in handlerInfo.parameters) { const paramValue = handlerInfo.parameters[paramName] - resolvedParams[paramName] = () => mustache.render(paramValue, { - state: getCurrentState(), - context, - }) + resolvedParams[paramName] = () => + mustache.render(paramValue, { + state: getCurrentState(), + context, + }) // const paramBinding = parseBinding(paramValue) // if (!paramBinding) { // resolvedParams[paramName] = () => paramValue diff --git a/packages/client/src/state/store.js b/packages/client/src/state/store.js index e7e6351184..bdf85c1ae6 100644 --- a/packages/client/src/state/store.js +++ b/packages/client/src/state/store.js @@ -1,16 +1,9 @@ -import { writable } from "svelte/store"; +import { writable } from "svelte/store" -const appStore = writable({}); -appStore.actions = { +const appStore = writable({}) +appStore.actions = {} -}; +const routerStore = writable({}) +routerStore.actions = {} -const routerStore = writable({}); -routerStore.actions = { - -} - -export { - appStore, - routerStore -} +export { appStore, routerStore } diff --git a/packages/client/tests/testAppDef.js b/packages/client/tests/testAppDef.js index 03a5df9d11..c02c18a3b2 100644 --- a/packages/client/tests/testAppDef.js +++ b/packages/client/tests/testAppDef.js @@ -182,4 +182,4 @@ const maketestlib = window => ({ set(opts.props) opts.target.appendChild(node) }, -}) \ No newline at end of file +}) diff --git a/packages/server/src/api/controllers/instance.js b/packages/server/src/api/controllers/instance.js index f5e8239168..4e6db897d5 100644 --- a/packages/server/src/api/controllers/instance.js +++ b/packages/server/src/api/controllers/instance.js @@ -37,8 +37,8 @@ exports.create = async function(ctx) { emit([trigger.event], trigger) } } - }.toString() - } + }.toString(), + }, }, }) diff --git a/packages/server/src/api/controllers/record.js b/packages/server/src/api/controllers/record.js index f1c04d4a7a..7e43a9c882 100644 --- a/packages/server/src/api/controllers/record.js +++ b/packages/server/src/api/controllers/record.js @@ -47,7 +47,7 @@ exports.save = async function(ctx) { ctx.eventEmitter.emit(`record:save`, { record, - instanceId: ctx.params.instanceId + instanceId: ctx.params.instanceId, }) ctx.body = record ctx.status = 200 diff --git a/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js b/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js index 96b0fa2584..f53cf2c716 100644 --- a/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js +++ b/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js @@ -8,19 +8,19 @@ module.exports = async function createUser(user) { instanceId: "inst_60dd510_700f7dc06735403e81d5af91072d7241", }, request: { - body: user + body: user, }, } try { const response = await userController.create(ctx) return { - user: response + user: response, } } catch (err) { - console.error(err); + console.error(err) return { - user: null + user: null, } } } diff --git a/packages/server/src/events/index.js b/packages/server/src/events/index.js index 3e6d30869c..76dc231f15 100644 --- a/packages/server/src/events/index.js +++ b/packages/server/src/events/index.js @@ -1,27 +1,33 @@ const EventEmitter = require("events").EventEmitter -const CouchDB = require("../db"); +const CouchDB = require("../db") const emitter = new EventEmitter() -function determineWorkflowsToTrigger(instanceId, event) { - const db = new CouchDB(instanceId); +async function determineWorkflowsToTrigger(instanceId, event) { + const db = new CouchDB(instanceId) const workflowsToTrigger = await db.query("database/by_workflow_trigger", { - key: [event] + key: [event], }) - return workflowsToTrigger.rows; + return workflowsToTrigger.rows } emitter.on("record:save", async function(event) { - const workflowsToTrigger = await determineWorkflowsToTrigger(instanceId, "record:save") + const workflowsToTrigger = await determineWorkflowsToTrigger( + instanceId, + "record:save" + ) for (let workflow of workflowsToTrigger) { // SERVER SIDE STUFF!! } }) -emitter.on("record:delete", function(event) { - const workflowsToTrigger = await determineWorkflowsToTrigger(instanceId, "record:delete") +emitter.on("record:delete", async function(event) { + const workflowsToTrigger = await determineWorkflowsToTrigger( + instanceId, + "record:delete" + ) for (let workflow of workflowsToTrigger) { // SERVER SIDE STUFF!! diff --git a/packages/server/src/schemas/index.js b/packages/server/src/schemas/index.js index 93fa005a80..edc94dba52 100644 --- a/packages/server/src/schemas/index.js +++ b/packages/server/src/schemas/index.js @@ -17,7 +17,7 @@ const WORKFLOW_SCHEMA = { type: "object", properties: { triggers: { type: "array" }, - steps: { type: "array" } + steps: { type: "array" }, // next: { // type: "object", // properties: { From 50ecfba39535bd1728db8edcb86dea295e8c6d75 Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Mon, 1 Jun 2020 11:04:32 +0100 Subject: [PATCH 033/161] few bugfixes --- .../builder/src/builderStore/store/index.js | 2 +- .../userInterface/ComponentDropdownMenu.svelte | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/builder/src/builderStore/store/index.js b/packages/builder/src/builderStore/store/index.js index 6755bc0a7c..a034114b02 100644 --- a/packages/builder/src/builderStore/store/index.js +++ b/packages/builder/src/builderStore/store/index.js @@ -347,7 +347,7 @@ const addChildComponent = store => (componentToAdd, presetName) => { return state } - const component = getComponentDefinition(componentToAdd) + const component = getComponentDefinition(state, componentToAdd) const presetProps = presetName ? component.presets[presetName] : {} diff --git a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte index e2f8943d9e..5672ea6f4c 100644 --- a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte +++ b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte @@ -11,13 +11,15 @@ export let component let confirmDeleteDialog let dropdownEl -$: dropdown = UIkit.dropdown(dropdownEl, { mode: "click", offset: 0, pos: "bottom-right" }); +$: dropdown = UIkit.dropdown(dropdownEl, { mode: "click", offset: 0, pos: "bottom-right", "delay-hide": 0, animation: false }); +$: dropdown && UIkit.util.on(dropdown, "shown", () => hidden = false) $: noChildrenAllowed = !component || getComponentDefinition($store, component._component).children === false $: noPaste = !$store.componentToPaste || $store.componentToPaste._id === component._id const lastPartOfName = c => (c ? last(c._component.split("/")) : "") -const showDropdown = () => { - dropdown.show() + +const hideDropdown = () => { + dropdown.hide() } @@ -26,7 +28,7 @@ const showDropdown = () => { -
@@ -96,5 +95,4 @@ .item:hover .actions { display: block; } - diff --git a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte index cee63c4cbb..86804885ff 100644 --- a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte +++ b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte @@ -45,5 +45,4 @@ .newscreen:hover { background: var(--grey-light); } - From 4eb637d3bd091b718c53eecf73ef79f198e960ca Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Mon, 1 Jun 2020 15:31:55 +0100 Subject: [PATCH 038/161] UI update for dropdown --- .../ComponentDropdownMenu.svelte | 56 +++++++++++-------- .../ComponentsHierarchyChildren.svelte | 8 +-- .../userInterface/propertyCategories.js | 12 ++-- packages/builder/src/pages/_layout.svelte | 2 +- 4 files changed, 45 insertions(+), 33 deletions(-) diff --git a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte index 712031aa3d..a9edabfd16 100644 --- a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte +++ b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte @@ -1,4 +1,4 @@ - - -
-
- { - setBindingFallback(e.target.value) - onChanged(e.target.value) - }} /> - -
- {#if isOpen} - { - onChanged(option) - isOpen = false - }} /> - {/if} -
- - diff --git a/packages/builder/src/components/userInterface/PropertyCascader/StateBindingOptions.svelte b/packages/builder/src/components/userInterface/PropertyCascader/StateBindingOptions.svelte deleted file mode 100644 index 06f8289a34..0000000000 --- a/packages/builder/src/components/userInterface/PropertyCascader/StateBindingOptions.svelte +++ /dev/null @@ -1,63 +0,0 @@ - - -
    - {#each options as option} -
  • onSelect(`${option.name}.`)}> - {option.name} - {option.description} -
  • - {/each} -
- - diff --git a/packages/builder/src/components/userInterface/PropertyCascader/index.js b/packages/builder/src/components/userInterface/PropertyCascader/index.js deleted file mode 100644 index 2a2573830a..0000000000 --- a/packages/builder/src/components/userInterface/PropertyCascader/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./PropertyCascader.svelte" diff --git a/packages/builder/src/components/userInterface/StateBindingControl.svelte b/packages/builder/src/components/userInterface/StateBindingControl.svelte index a89b805e5b..57a6bf13f9 100644 --- a/packages/builder/src/components/userInterface/StateBindingControl.svelte +++ b/packages/builder/src/components/userInterface/StateBindingControl.svelte @@ -2,7 +2,6 @@ import { backendUiStore } from "builderStore" import IconButton from "../common/IconButton.svelte" import Input from "../common/Input.svelte" - // import PropertyCascader from "./PropertyCascader" import Colorpicker from "../common/Colorpicker.svelte" export let value = "" @@ -22,34 +21,32 @@ size="19" on:click={() => onChanged(!value)} />
- {:else if type === 'models'} - - {:else if type === 'options' || type === 'models'} - - {:else} - + {:else if type === 'models'} + + {:else if type === 'options' || type === 'models'} + {/if}
diff --git a/packages/builder/src/components/workflow/WorkflowPanel/BlockList/BlockList.svelte b/packages/builder/src/components/workflow/WorkflowPanel/BlockList/BlockList.svelte index b173f30f15..523545a929 100644 --- a/packages/builder/src/components/workflow/WorkflowPanel/BlockList/BlockList.svelte +++ b/packages/builder/src/components/workflow/WorkflowPanel/BlockList/BlockList.svelte @@ -13,7 +13,7 @@ $: { if ( - !$workflowStore.currentWorkflow.isEmpty() && + $workflowStore.currentWorkflow.hasTrigger() && selectedTab === "TRIGGER" ) { selectedTab = "ACTION" @@ -23,7 +23,7 @@
- {#if $workflowStore.currentWorkflow.isEmpty()} + {#if !$workflowStore.currentWorkflow.hasTrigger()} + store.setCurrentPage($params.page) + \ No newline at end of file diff --git a/packages/client/src/api/workflow/index.js b/packages/client/src/api/workflow/index.js index 795dafca20..94cd6fb6f8 100644 --- a/packages/client/src/api/workflow/index.js +++ b/packages/client/src/api/workflow/index.js @@ -1,11 +1,73 @@ -import Orchestrator, { clientStrategy } from "./orchestrator" +import { get } from "svelte/store" +import mustache from "mustache" +import { appStore } from "../../state/store" +import Orchestrator from "./orchestrator"; +import clientActions from "./actions" -export const triggerWorkflow = api => ({ workflow }) => { - const workflowOrchestrator = new Orchestrator( - api, - "inst_ad75c7f_4f3e7d5d80a74b17a5187a18e2aba85e" - ) +// Execute a workflow from a running budibase app +export const clientStrategy = ({ api, instanceId }) => ({ + context: {}, + bindContextArgs: function(args) { + const mappedArgs = { ...args } + + // bind the workflow action args to the workflow context, if required + for (let arg in args) { + const argValue = args[arg] + + // We don't want to render mustache templates on non-strings + if (typeof argValue !== "string") continue + + // Render the string with values from the workflow context and state + mappedArgs[arg] = mustache.render(argValue, { + context: this.context, + state: get(appStore), + }) + } + + return mappedArgs + }, + run: async function(workflow) { + for (let block of workflow.steps) { + console.log("Executing workflow block", block) + + // This code gets run in the browser + if (block.environment === "CLIENT") { + const action = clientActions[block.actionId] + await action({ + context: this.context, + args: this.bindContextArgs(block.args), + id: block.id, + }) + } + + // this workflow block gets executed on the server + if (block.environment === "SERVER") { + const EXECUTE_WORKFLOW_URL = `/api/${instanceId}/workflows/action` + const response = await api.post({ + url: EXECUTE_WORKFLOW_URL, + body: { + action: block.actionId, + args: this.bindContextArgs(block.args, api), + }, + }) + + this.context = { + ...this.context, + [block.actionId]: response, + } + } + } + }, +}) + +export const triggerWorkflow = api => async ({ workflow }) => { + const instanceId = "inst_ad75c7f_4f3e7d5d80a74b17a5187a18e2aba85e"; + + const workflowOrchestrator = new Orchestrator(api, instanceId) workflowOrchestrator.strategy = clientStrategy - workflowOrchestrator.execute(workflow) + const EXECUTE_WORKFLOW_URL = `/api/${instanceId}/workflows/${workflow}` + const workflowDefinition = await api.get({ url: EXECUTE_WORKFLOW_URL }) + + workflowOrchestrator.execute(workflowDefinition) } diff --git a/packages/client/src/api/workflow/orchestrator.js b/packages/client/src/api/workflow/orchestrator.js index e69e41b918..df0520409a 100644 --- a/packages/client/src/api/workflow/orchestrator.js +++ b/packages/client/src/api/workflow/orchestrator.js @@ -20,10 +20,7 @@ export default class Orchestrator { this._strategy = strategy({ api: this.api, instanceId: this.instanceId }) } - async execute(workflowId) { - const EXECUTE_WORKFLOW_URL = `/api/${this.instanceId}/workflows/${workflowId}` - const workflow = await this.api.get({ url: EXECUTE_WORKFLOW_URL }) - + async execute(workflow) { if (workflow.live) { this._strategy.run(workflow.definition) } diff --git a/packages/server/package.json b/packages/server/package.json index 6e2d095655..52a7200fee 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -28,7 +28,7 @@ "test:watch": "jest -w", "initialise": "node ../cli/bin/budi init -b local -q", "budi": "node ../cli/bin/budi", - "dev:builder": "node ../cli/bin/budi run", + "dev:builder": "nodemon ../cli/bin/budi run", "electron": "electron src/electron.js", "build:electron": "electron-builder --dir", "publish:electron": "electron-builder -mwl --publish always", @@ -61,6 +61,7 @@ "koa-session": "^5.12.0", "koa-static": "^5.0.0", "lodash": "^4.17.13", + "mustache": "^4.0.1", "pino-pretty": "^4.0.0", "pouchdb": "^7.2.1", "pouchdb-all-dbs": "^1.0.2", diff --git a/packages/server/src/api/controllers/instance.js b/packages/server/src/api/controllers/instance.js index 4e6db897d5..fe40cf9fb4 100644 --- a/packages/server/src/api/controllers/instance.js +++ b/packages/server/src/api/controllers/instance.js @@ -32,7 +32,7 @@ exports.create = async function(ctx) { by_workflow_trigger: { map: function(doc) { if (doc.type === "workflow") { - const trigger = doc.definition.next + const trigger = doc.definition.trigger if (trigger) { emit([trigger.event], trigger) } diff --git a/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js b/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js index ef582781b8..b56e95defa 100644 --- a/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js +++ b/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js @@ -14,9 +14,10 @@ module.exports = async function sendEmail(args) { await sgMail.send(msg) return { success: true, - err, + ...args, } } catch (err) { + console.error(err) return { success: false, err, diff --git a/packages/server/src/events/index.js b/packages/server/src/events/index.js index 5c386e97b6..93b08bd1d8 100644 --- a/packages/server/src/events/index.js +++ b/packages/server/src/events/index.js @@ -1,37 +1,33 @@ const EventEmitter = require("events").EventEmitter const CouchDB = require("../db") +const { Orchestrator, serverStrategy } = require("./workflow"); const emitter = new EventEmitter() -async function determineWorkflowsToTrigger(instanceId, event) { - const db = new CouchDB(instanceId) +async function executeRelevantWorkflows(event, eventType) { + const db = new CouchDB(event.instanceId) const workflowsToTrigger = await db.query("database/by_workflow_trigger", { - key: [event], + key: [eventType], + include_docs: true }) - return workflowsToTrigger.rows + const workflows = workflowsToTrigger.rows.map(wf => wf.doc) + + // Create orchestrator + const workflowOrchestrator = new Orchestrator() + workflowOrchestrator.strategy = serverStrategy + + for (let workflow of workflows) { + workflowOrchestrator.execute(workflow) + } } emitter.on("record:save", async function(event) { - const workflowsToTrigger = await determineWorkflowsToTrigger( - instanceId, - "record:save" - ) - - for (let workflow of workflowsToTrigger) { - // TODO: server side workflow triggers - } + await executeRelevantWorkflows(event, "record:save"); }) emitter.on("record:delete", async function(event) { - const workflowsToTrigger = await determineWorkflowsToTrigger( - instanceId, - "record:delete" - ) - - for (let workflow of workflowsToTrigger) { - // TODO: server side workflow triggers - } + await executeRelevantWorkflows(event, "record:delete"); }) module.exports = emitter diff --git a/packages/server/src/events/workflow.js b/packages/server/src/events/workflow.js new file mode 100644 index 0000000000..f2796d91e2 --- /dev/null +++ b/packages/server/src/events/workflow.js @@ -0,0 +1,52 @@ +const mustache = require("mustache") + +/** + * The workflow orchestrator is a class responsible for executing workflows. + * It relies on the strategy pattern, which allows composable behaviour to be + * passed into its execute() function. This allows custom execution behaviour based + * on where the orchestrator is run. + * + */ +exports.Orchestrator = class Orchestrator { + set strategy(strategy) { + this._strategy = strategy() + } + + async execute(workflow) { + if (workflow.live) { + this._strategy.run(workflow.definition) + } + } +} + +exports.serverStrategy = () => ({ + context: {}, + bindContextArgs: function(args) { + const mappedArgs = { ...args } + + // bind the workflow action args to the workflow context, if required + for (let arg in args) { + const argValue = args[arg] + // We don't want to render mustache templates on non-strings + if (typeof argValue !== "string") continue + + mappedArgs[arg] = mustache.render(argValue, { context: this.context }) + } + + return mappedArgs + }, + run: async function(workflow) { + for (let block of workflow.steps) { + console.log("Executing workflow block", block) + if (block.type === "CLIENT") continue + + const action = require(`../api/controllers/workflow/actions/${block.actionId}`) + const response = await action(this.bindContextArgs(block.args)) + + this.context = { + ...this.context, + [block.id]: response, + } + } + } +}); diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 3fc1f15622..62f4dc7d70 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -194,6 +194,20 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@budibase/client@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.0.32.tgz#76d9f147563a0bf939eae7f32ce75b2a527ba496" + integrity sha512-jmCCLn0CUoQbL6h623S5IqK6+GYLqX3WzUTZInSb1SCBOM3pI0eLP5HwTR6s7r42SfD0v9jTWRdyTnHiElNj8A== + dependencies: + "@nx-js/compiler-util" "^2.0.0" + bcryptjs "^2.4.3" + deep-equal "^2.0.1" + lodash "^4.17.15" + lunr "^2.3.5" + regexparam "^1.3.0" + shortid "^2.2.8" + svelte "^3.9.2" + "@budibase/core@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@budibase/core/-/core-0.0.32.tgz#c5d9ab869c5e9596a1ac337aaf041e795b1cc7fa" @@ -849,6 +863,11 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -921,6 +940,13 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== +available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1643,6 +1669,26 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +deep-equal@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0" + integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA== + dependencies: + es-abstract "^1.17.5" + es-get-iterator "^1.1.0" + is-arguments "^1.0.4" + is-date-object "^1.0.2" + is-regex "^1.0.5" + isarray "^2.0.5" + object-is "^1.1.2" + object-keys "^1.1.1" + object.assign "^4.1.0" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + which-boxed-primitive "^1.0.1" + which-collection "^1.0.1" + which-typed-array "^1.1.2" + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -2001,7 +2047,7 @@ error-inject@^1.0.0: resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc= -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -2018,6 +2064,19 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-get-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" + integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + dependencies: + es-abstract "^1.17.4" + has-symbols "^1.0.1" + is-arguments "^1.0.4" + is-map "^2.0.1" + is-set "^2.0.1" + is-string "^1.0.5" + isarray "^2.0.5" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3010,11 +3069,21 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" + integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -3022,6 +3091,11 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" + integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -3058,7 +3132,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== @@ -3133,11 +3207,21 @@ is-installed-globally@^0.3.1: global-dirs "^2.0.1" is-path-inside "^3.0.1" +is-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" + integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== + is-npm@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== +is-number-object@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3174,11 +3258,21 @@ is-regex@^1.0.5: dependencies: has "^1.0.3" +is-set@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" + integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-string@^1.0.4, is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -3195,11 +3289,31 @@ is-type-of@^1.0.0: is-class-hotfix "~0.0.6" isstream "~0.1.2" +is-typed-array@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" + integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== + dependencies: + available-typed-arrays "^1.0.0" + es-abstract "^1.17.4" + foreach "^2.0.5" + has-symbols "^1.0.1" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakset@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" + integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -3225,6 +3339,11 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isbinaryfile@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" @@ -4441,6 +4560,11 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +mustache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.0.1.tgz#d99beb031701ad433338e7ea65e0489416c854a2" + integrity sha512-yL5VE97+OXn4+Er3THSmTdCFCtx5hHWzrolvH+JObZnUYwuaG7XV+Ch4fR2cIrcYI0tFHxS7iyFYl14bW8y2sA== + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -4632,6 +4756,14 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-is@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -5353,6 +5485,19 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexparam@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f" + integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g== + regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -5681,6 +5826,14 @@ shortid@^2.2.8: dependencies: nanoid "^2.1.0" +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -6089,6 +6242,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +svelte@^3.9.2: + version "3.23.0" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.23.0.tgz#bbcd6887cf588c24a975b14467455abfff9acd3f" + integrity sha512-cnyd96bK/Nw5DnYuB1hzm5cl6+I1fpmdKOteA7KLzU9KGLsLmvWsSkSKbcntzODCLmSySN3HjcgTHRo6/rJNTw== + symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -6569,11 +6727,44 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +which-boxed-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1" + integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ== + dependencies: + is-bigint "^1.0.0" + is-boolean-object "^1.0.0" + is-number-object "^1.0.3" + is-string "^1.0.4" + is-symbol "^1.0.2" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-typed-array@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" + integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== + dependencies: + available-typed-arrays "^1.0.2" + es-abstract "^1.17.5" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From 787caa95e5558463df75f7a006d3990c07e5d137 Mon Sep 17 00:00:00 2001 From: Conor_Mack Date: Mon, 1 Jun 2020 16:31:58 +0100 Subject: [PATCH 040/161] Property panel updates --- .../builder/src/builderStore/generate_css.js | 90 +- .../builder/src/builderStore/store/index.js | 940 +++++++++--------- .../src/components/common/Input.svelte | 16 +- .../common/Inputs/InputGroup.svelte | 29 +- .../userInterface/FlatButton.svelte | 2 +- .../userInterface/FlatButtonGroup.svelte | 4 +- .../userInterface/OptionSelect.svelte | 2 + .../userInterface/propertyCategories.js | 708 ++++++------- 8 files changed, 888 insertions(+), 903 deletions(-) diff --git a/packages/builder/src/builderStore/generate_css.js b/packages/builder/src/builderStore/generate_css.js index 5826d4f824..cd284994f9 100644 --- a/packages/builder/src/builderStore/generate_css.js +++ b/packages/builder/src/builderStore/generate_css.js @@ -1,54 +1,42 @@ -export const generate_screen_css = component_arr => { - let styles = "" - for (const { _styles, _id, _children, _component } of component_arr) { - let [componentName] = _component.match(/[a-z]*$/) - Object.keys(_styles).forEach(selector => { - const cssString = generate_css(_styles[selector]) - if (cssString) { - styles += apply_class(_id, componentName, cssString, selector) - } - }) - if (_children && _children.length) { - styles += generate_screen_css(_children) + "\n" - } - } - return styles.trim() -} +export const generate_screen_css = (component_arr) => { + let styles = ''; + for (const { _styles, _id, _children, _component } of component_arr) { + let [ componentName ] = _component.match(/[a-z]*$/); + Object.keys(_styles).forEach((selector) => { + const cssString = generate_css(_styles[selector]); + if (cssString) { + styles += apply_class(_id, componentName, cssString, selector); + } + }); + if (_children && _children.length) { + styles += generate_screen_css(_children) + '\n'; + } + } + return styles.trim(); +}; -export const generate_css = style => { - let cssString = Object.entries(style).reduce((str, [key, value]) => { - //TODO Handle arrays and objects here also - if (typeof value === "string") { - if (value) { - return (str += `${key}: ${value};\n`) - } - } else if (Array.isArray(value)) { - if (value.length > 0 && !value.every(v => v === "")) { - return (str += `${key}: ${value - .map(generate_array_styles) - .join(" ")};\n`) - } - } - }, "") +export const generate_css = (style) => { + let cssString = Object.entries(style).reduce((str, [ key, value ]) => { + //TODO Handle arrays and objects here also + if (typeof value === 'string') { + if (value) { + return (str += `${key}: ${value};\n`); + } + } else if (Array.isArray(value)) { + if (value.length > 0 && !value.every((v) => v === '')) { + return (str += `${key}: ${value.join(' ')};\n`); + } + } + }, ''); - return (cssString || "").trim() -} + return (cssString || '').trim(); +}; -export const generate_array_styles = item => { - let safeItem = item === "" ? 0 : item - let hasPx = new RegExp("px$") - if (!hasPx.test(safeItem)) { - return `${safeItem}px` - } else { - return safeItem - } -} - -export const apply_class = (id, name = "element", styles, selector) => { - if (selector === "normal") { - return `.${name}-${id} {\n${styles}\n}` - } else { - let sel = selector === "selected" ? "::selection" : `:${selector}` - return `.${name}-${id}${sel} {\n${styles}\n}` - } -} +export const apply_class = (id, name = 'element', styles, selector) => { + if (selector === 'normal') { + return `.${name}-${id} {\n${styles}\n}`; + } else { + let sel = selector === 'selected' ? '::selection' : `:${selector}`; + return `.${name}-${id}${sel} {\n${styles}\n}`; + } +}; diff --git a/packages/builder/src/builderStore/store/index.js b/packages/builder/src/builderStore/store/index.js index f4d47064be..2943667033 100644 --- a/packages/builder/src/builderStore/store/index.js +++ b/packages/builder/src/builderStore/store/index.js @@ -1,321 +1,288 @@ -import { cloneDeep, values } from "lodash/fp" -import { backendUiStore } from "builderStore" -import * as backendStoreActions from "./backend" -import { writable, get } from "svelte/store" -import api from "../api" -import { DEFAULT_PAGES_OBJECT } from "../../constants" -import { getExactComponent } from "components/userInterface/pagesParsing/searchComponents" -import { rename } from "components/userInterface/pagesParsing/renameScreen" -import { - createProps, - makePropsSafe, - getBuiltin, -} from "components/userInterface/pagesParsing/createProps" -import { fetchComponentLibDefinitions } from "../loadComponentLibraries" -import { buildCodeForScreens } from "../buildCodeForScreens" -import { generate_screen_css } from "../generate_css" -import { insertCodeMetadata } from "../insertCodeMetadata" -import { uuid } from "../uuid" +import { cloneDeep, values } from 'lodash/fp'; +import { backendUiStore } from 'builderStore'; +import * as backendStoreActions from './backend'; +import { writable, get } from 'svelte/store'; +import api from '../api'; +import { DEFAULT_PAGES_OBJECT } from '../../constants'; +import { getExactComponent } from 'components/userInterface/pagesParsing/searchComponents'; +import { rename } from 'components/userInterface/pagesParsing/renameScreen'; +import { createProps, makePropsSafe, getBuiltin } from 'components/userInterface/pagesParsing/createProps'; +import { fetchComponentLibDefinitions } from '../loadComponentLibraries'; +import { buildCodeForScreens } from '../buildCodeForScreens'; +import { generate_screen_css } from '../generate_css'; +import { insertCodeMetadata } from '../insertCodeMetadata'; +import { uuid } from '../uuid'; export const getStore = () => { - const initial = { - apps: [], - appname: "", - pages: DEFAULT_PAGES_OBJECT, - mainUi: {}, - unauthenticatedUi: {}, - components: [], - currentPreviewItem: null, - currentComponentInfo: null, - currentFrontEndType: "none", - currentPageName: "", - currentComponentProps: null, - errors: [], - hasAppPackage: false, - libraries: null, - appId: "", - } + const initial = { + apps: [], + appname: '', + pages: DEFAULT_PAGES_OBJECT, + mainUi: {}, + unauthenticatedUi: {}, + components: [], + currentPreviewItem: null, + currentComponentInfo: null, + currentFrontEndType: 'none', + currentPageName: '', + currentComponentProps: null, + errors: [], + hasAppPackage: false, + libraries: null, + appId: '' + }; - const store = writable(initial) + const store = writable(initial); - store.setPackage = setPackage(store, initial) + store.setPackage = setPackage(store, initial); - store.createDatabaseForApp = backendStoreActions.createDatabaseForApp(store) + store.createDatabaseForApp = backendStoreActions.createDatabaseForApp(store); - store.saveScreen = saveScreen(store) - store.renameScreen = renameScreen(store) - store.deleteScreen = deleteScreen(store) - store.setCurrentScreen = setCurrentScreen(store) - store.setCurrentPage = setCurrentPage(store) - store.createScreen = createScreen(store) - store.addStylesheet = addStylesheet(store) - store.removeStylesheet = removeStylesheet(store) - store.savePage = savePage(store) - store.addChildComponent = addChildComponent(store) - store.selectComponent = selectComponent(store) - store.setComponentProp = setComponentProp(store) - store.setComponentStyle = setComponentStyle(store) - store.setComponentCode = setComponentCode(store) - store.setScreenType = setScreenType(store) - store.deleteComponent = deleteComponent(store) - store.moveUpComponent = moveUpComponent(store) - store.moveDownComponent = moveDownComponent(store) - store.copyComponent = copyComponent(store) - store.getPathToComponent = getPathToComponent(store) - store.addTemplatedComponent = addTemplatedComponent(store) - store.setMetadataProp = setMetadataProp(store) - return store -} + store.saveScreen = saveScreen(store); + store.renameScreen = renameScreen(store); + store.deleteScreen = deleteScreen(store); + store.setCurrentScreen = setCurrentScreen(store); + store.setCurrentPage = setCurrentPage(store); + store.createScreen = createScreen(store); + store.addStylesheet = addStylesheet(store); + store.removeStylesheet = removeStylesheet(store); + store.savePage = savePage(store); + store.addChildComponent = addChildComponent(store); + store.selectComponent = selectComponent(store); + store.setComponentProp = setComponentProp(store); + store.setComponentStyle = setComponentStyle(store); + store.setComponentCode = setComponentCode(store); + store.setScreenType = setScreenType(store); + store.deleteComponent = deleteComponent(store); + store.moveUpComponent = moveUpComponent(store); + store.moveDownComponent = moveDownComponent(store); + store.copyComponent = copyComponent(store); + store.getPathToComponent = getPathToComponent(store); + store.addTemplatedComponent = addTemplatedComponent(store); + store.setMetadataProp = setMetadataProp(store); + return store; +}; -export default getStore +export default getStore; -const setPackage = (store, initial) => async pkg => { - const [main_screens, unauth_screens] = await Promise.all([ - api - .get(`/_builder/api/${pkg.application._id}/pages/main/screens`) - .then(r => r.json()), - api - .get(`/_builder/api/${pkg.application._id}/pages/unauthenticated/screens`) - .then(r => r.json()), - ]) +const setPackage = (store, initial) => async (pkg) => { + const [ main_screens, unauth_screens ] = await Promise.all([ + api.get(`/_builder/api/${pkg.application._id}/pages/main/screens`).then((r) => r.json()), + api.get(`/_builder/api/${pkg.application._id}/pages/unauthenticated/screens`).then((r) => r.json()) + ]); - pkg.pages = { - main: { - ...pkg.pages.main, - _screens: Object.values(main_screens), - }, - unauthenticated: { - ...pkg.pages.unauthenticated, - _screens: Object.values(unauth_screens), - }, - } + pkg.pages = { + main: { + ...pkg.pages.main, + _screens: Object.values(main_screens) + }, + unauthenticated: { + ...pkg.pages.unauthenticated, + _screens: Object.values(unauth_screens) + } + }; - initial.libraries = pkg.application.componentLibraries - initial.components = await fetchComponentLibDefinitions(pkg.application._id) - initial.appname = pkg.application.name - initial.appId = pkg.application._id - initial.pages = pkg.pages - initial.hasAppPackage = true - initial.screens = values(pkg.screens) - initial.builtins = [getBuiltin("##builtin/screenslot")] - initial.appInstances = pkg.application.instances - initial.appId = pkg.application._id + initial.libraries = pkg.application.componentLibraries; + initial.components = await fetchComponentLibDefinitions(pkg.application._id); + initial.appname = pkg.application.name; + initial.appId = pkg.application._id; + initial.pages = pkg.pages; + initial.hasAppPackage = true; + initial.screens = values(pkg.screens); + initial.builtins = [ getBuiltin('##builtin/screenslot') ]; + initial.appInstances = pkg.application.instances; + initial.appId = pkg.application._id; - store.set(initial) - return initial -} + store.set(initial); + return initial; +}; -const saveScreen = store => screen => { - store.update(state => { - return _saveScreen(store, state, screen) - }) -} +const saveScreen = (store) => (screen) => { + store.update((state) => { + return _saveScreen(store, state, screen); + }); +}; const _saveScreen = async (store, s, screen) => { - const currentPageScreens = s.pages[s.currentPageName]._screens + const currentPageScreens = s.pages[s.currentPageName]._screens; - await api - .post(`/_builder/api/${s.appId}/pages/${s.currentPageName}/screen`, screen) - .then(() => { - if (currentPageScreens.includes(screen)) return + await api.post(`/_builder/api/${s.appId}/pages/${s.currentPageName}/screen`, screen).then(() => { + if (currentPageScreens.includes(screen)) return; - const screens = [...currentPageScreens, screen] + const screens = [ ...currentPageScreens, screen ]; - store.update(innerState => { - innerState.pages[s.currentPageName]._screens = screens - innerState.screens = screens - innerState.currentPreviewItem = screen - const safeProps = makePropsSafe( - innerState.components[screen.props._component], - screen.props - ) - innerState.currentComponentInfo = safeProps - screen.props = safeProps + store.update((innerState) => { + innerState.pages[s.currentPageName]._screens = screens; + innerState.screens = screens; + innerState.currentPreviewItem = screen; + const safeProps = makePropsSafe(innerState.components[screen.props._component], screen.props); + innerState.currentComponentInfo = safeProps; + screen.props = safeProps; - _savePage(innerState) - return innerState - }) - }) + _savePage(innerState); + return innerState; + }); + }); - return s -} + return s; +}; const _saveScreenApi = (screen, s) => { - api - .post(`/_builder/api/${s.appId}/pages/${s.currentPageName}/screen`, screen) - .then(() => _savePage(s)) -} + api.post(`/_builder/api/${s.appId}/pages/${s.currentPageName}/screen`, screen).then(() => _savePage(s)); +}; -const createScreen = store => (screenName, route, layoutComponentName) => { - store.update(state => { - const rootComponent = state.components[layoutComponentName] +const createScreen = (store) => (screenName, route, layoutComponentName) => { + store.update((state) => { + const rootComponent = state.components[layoutComponentName]; - const newScreen = { - name: screenName || "", - description: "", - url: "", - _css: "", - uiFunctions: "", - props: createProps(rootComponent).props, - } + const newScreen = { + name: screenName || '', + description: '', + url: '', + _css: '', + uiFunctions: '', + props: createProps(rootComponent).props + }; - newScreen.route = route - state.currentPreviewItem = newScreen - state.currentComponentInfo = newScreen.props - state.currentFrontEndType = "screen" + newScreen.route = route; + state.currentPreviewItem = newScreen; + state.currentComponentInfo = newScreen.props; + state.currentFrontEndType = 'screen'; - _saveScreen(store, state, newScreen) + _saveScreen(store, state, newScreen); - return state - }) -} + return state; + }); +}; -const setCurrentScreen = store => screenName => { - store.update(s => { - const screen = getExactComponent(s.screens, screenName) - screen._css = generate_screen_css([screen.props]) - s.currentPreviewItem = screen - s.currentFrontEndType = "screen" - s.currentView = "detail" +const setCurrentScreen = (store) => (screenName) => { + store.update((s) => { + const screen = getExactComponent(s.screens, screenName); + screen._css = generate_screen_css([ screen.props ]); + s.currentPreviewItem = screen; + s.currentFrontEndType = 'screen'; + s.currentView = 'detail'; - const safeProps = makePropsSafe( - s.components[screen.props._component], - screen.props - ) - screen.props = safeProps - s.currentComponentInfo = safeProps - setCurrentPageFunctions(s) - return s - }) -} + const safeProps = makePropsSafe(s.components[screen.props._component], screen.props); + screen.props = safeProps; + s.currentComponentInfo = safeProps; + setCurrentPageFunctions(s); + return s; + }); +}; -const deleteScreen = store => name => { - store.update(s => { - const components = s.components.filter(c => c.name !== name) - const screens = s.screens.filter(c => c.name !== name) +const deleteScreen = (store) => (name) => { + store.update((s) => { + const components = s.components.filter((c) => c.name !== name); + const screens = s.screens.filter((c) => c.name !== name); - s.components = components - s.screens = screens - if (s.currentPreviewItem.name === name) { - s.currentPreviewItem = null - s.currentFrontEndType = "" - } + s.components = components; + s.screens = screens; + if (s.currentPreviewItem.name === name) { + s.currentPreviewItem = null; + s.currentFrontEndType = ''; + } - api.delete(`/_builder/api/${s.appId}/screen/${name}`) + api.delete(`/_builder/api/${s.appId}/screen/${name}`); - return s - }) -} + return s; + }); +}; -const renameScreen = store => (oldname, newname) => { - store.update(s => { - const { screens, pages, error, changedScreens } = rename( - s.pages, - s.screens, - oldname, - newname - ) +const renameScreen = (store) => (oldname, newname) => { + store.update((s) => { + const { screens, pages, error, changedScreens } = rename(s.pages, s.screens, oldname, newname); - if (error) { - // should really do something with this - return s - } + if (error) { + // should really do something with this + return s; + } - s.screens = screens - s.pages = pages - if (s.currentPreviewItem.name === oldname) - s.currentPreviewItem.name = newname + s.screens = screens; + s.pages = pages; + if (s.currentPreviewItem.name === oldname) s.currentPreviewItem.name = newname; - const saveAllChanged = async () => { - for (let screenName of changedScreens) { - const changedScreen = getExactComponent(screens, screenName) - await api.post(`/_builder/api/${s.appId}/screen`, changedScreen) - } - } + const saveAllChanged = async () => { + for (let screenName of changedScreens) { + const changedScreen = getExactComponent(screens, screenName); + await api.post(`/_builder/api/${s.appId}/screen`, changedScreen); + } + }; - api - .patch(`/_builder/api/${s.appId}/screen`, { - oldname, - newname, - }) - .then(() => saveAllChanged()) - .then(() => { - _savePage(s) - }) + api + .patch(`/_builder/api/${s.appId}/screen`, { + oldname, + newname + }) + .then(() => saveAllChanged()) + .then(() => { + _savePage(s); + }); - return s - }) -} + return s; + }); +}; -const savePage = store => async page => { - store.update(state => { - if (state.currentFrontEndType !== "page" || !state.currentPageName) { - return state - } +const savePage = (store) => async (page) => { + store.update((state) => { + if (state.currentFrontEndType !== 'page' || !state.currentPageName) { + return state; + } - state.pages[state.currentPageName] = page - _savePage(state) - return state - }) -} + state.pages[state.currentPageName] = page; + _savePage(state); + return state; + }); +}; -const addStylesheet = store => stylesheet => { - store.update(s => { - s.pages.stylesheets.push(stylesheet) - _savePage(s) - return s - }) -} +const addStylesheet = (store) => (stylesheet) => { + store.update((s) => { + s.pages.stylesheets.push(stylesheet); + _savePage(s); + return s; + }); +}; -const removeStylesheet = store => stylesheet => { - store.update(state => { - state.pages.stylesheets = state.pages.stylesheets.filter( - s => s !== stylesheet - ) - _savePage(state) - return state - }) -} +const removeStylesheet = (store) => (stylesheet) => { + store.update((state) => { + state.pages.stylesheets = state.pages.stylesheets.filter((s) => s !== stylesheet); + _savePage(state); + return state; + }); +}; -const _savePage = async s => { - const page = s.pages[s.currentPageName] - await api.post(`/_builder/api/${s.appId}/pages/${s.currentPageName}`, { - page: { componentLibraries: s.pages.componentLibraries, ...page }, - uiFunctions: s.currentPageFunctions, - screens: page._screens, - }) -} +const _savePage = async (s) => { + const page = s.pages[s.currentPageName]; + await api.post(`/_builder/api/${s.appId}/pages/${s.currentPageName}`, { + page: { componentLibraries: s.pages.componentLibraries, ...page }, + uiFunctions: s.currentPageFunctions, + screens: page._screens + }); +}; -const setCurrentPage = store => pageName => { - store.update(state => { - const current_screens = state.pages[pageName]._screens +const setCurrentPage = (store) => (pageName) => { + store.update((state) => { + const current_screens = state.pages[pageName]._screens; - const currentPage = state.pages[pageName] + const currentPage = state.pages[pageName]; - state.currentFrontEndType = "page" - state.currentPageName = pageName - state.screens = Array.isArray(current_screens) - ? current_screens - : Object.values(current_screens) - const safeProps = makePropsSafe( - state.components[currentPage.props._component], - currentPage.props - ) - state.currentComponentInfo = safeProps - currentPage.props = safeProps - state.currentPreviewItem = state.pages[pageName] - state.currentPreviewItem._css = generate_screen_css([ - state.currentPreviewItem.props, - ]) + state.currentFrontEndType = 'page'; + state.currentPageName = pageName; + state.screens = Array.isArray(current_screens) ? current_screens : Object.values(current_screens); + const safeProps = makePropsSafe(state.components[currentPage.props._component], currentPage.props); + state.currentComponentInfo = safeProps; + currentPage.props = safeProps; + state.currentPreviewItem = state.pages[pageName]; + state.currentPreviewItem._css = generate_screen_css([ state.currentPreviewItem.props ]); - for (let screen of state.screens) { - screen._css = generate_screen_css([screen.props]) - } + for (let screen of state.screens) { + screen._css = generate_screen_css([ screen.props ]); + } - setCurrentPageFunctions(state) - return state - }) -} + setCurrentPageFunctions(state); + return state; + }); +}; // const getComponentDefinition = (components, name) => components.find(c => c.name === name) @@ -323,288 +290,267 @@ const setCurrentPage = store => pageName => { * @param {string} componentToAdd - name of the component to add to the application * @param {string} presetName - name of the component preset if defined */ -const addChildComponent = store => (componentToAdd, presetName) => { - store.update(state => { - function findSlot(component_array) { - for (let i = 0; i < component_array.length; i += 1) { - if (component_array[i]._component === "##builtin/screenslot") { - return true - } +const addChildComponent = (store) => (componentToAdd, presetName) => { + store.update((state) => { + function findSlot(component_array) { + for (let i = 0; i < component_array.length; i += 1) { + if (component_array[i]._component === '##builtin/screenslot') { + return true; + } - if (component_array[i]._children) findSlot(component_array[i]) - } + if (component_array[i]._children) findSlot(component_array[i]); + } - return false - } + return false; + } - if ( - componentToAdd.startsWith("##") && - findSlot(state.pages[state.currentPageName].props._children) - ) { - return state - } + if (componentToAdd.startsWith('##') && findSlot(state.pages[state.currentPageName].props._children)) { + return state; + } - const component = componentToAdd.startsWith("##") - ? getBuiltin(componentToAdd) - : state.components[componentToAdd] + const component = componentToAdd.startsWith('##') + ? getBuiltin(componentToAdd) + : state.components[componentToAdd]; - const presetProps = presetName ? component.presets[presetName] : {} + const presetProps = presetName ? component.presets[presetName] : {}; - const instanceId = get(backendUiStore).selectedDatabase._id + const instanceId = get(backendUiStore).selectedDatabase._id; - const newComponent = createProps( - component, - { - ...presetProps, - _instanceId: instanceId, - }, - state - ) + const newComponent = createProps( + component, + { + ...presetProps, + _instanceId: instanceId + }, + state + ); - state.currentComponentInfo._children = state.currentComponentInfo._children.concat( - newComponent.props - ) + state.currentComponentInfo._children = state.currentComponentInfo._children.concat(newComponent.props); - state.currentFrontEndType === "page" - ? _savePage(state) - : _saveScreenApi(state.currentPreviewItem, state) + state.currentFrontEndType === 'page' ? _savePage(state) : _saveScreenApi(state.currentPreviewItem, state); - state.currentView = "component" - state.currentComponentInfo = newComponent.props + state.currentView = 'component'; + state.currentComponentInfo = newComponent.props; - return state - }) -} + return state; + }); +}; /** * @param {string} props - props to add, as child of current component */ -const addTemplatedComponent = store => props => { - store.update(state => { - walkProps(props, p => { - p._id = uuid() - }) - state.currentComponentInfo._children = state.currentComponentInfo._children.concat( - props - ) - state.currentPreviewItem._css = generate_screen_css([ - state.currentPreviewItem.props, - ]) +const addTemplatedComponent = (store) => (props) => { + store.update((state) => { + walkProps(props, (p) => { + p._id = uuid(); + }); + state.currentComponentInfo._children = state.currentComponentInfo._children.concat(props); + state.currentPreviewItem._css = generate_screen_css([ state.currentPreviewItem.props ]); - setCurrentPageFunctions(state) - _saveCurrentPreviewItem(state) + setCurrentPageFunctions(state); + _saveCurrentPreviewItem(state); - return state - }) -} + return state; + }); +}; -const selectComponent = store => component => { - store.update(state => { - const componentDef = component._component.startsWith("##") - ? component - : state.components[component._component] - state.currentComponentInfo = makePropsSafe(componentDef, component) - state.currentView = "component" - return state - }) -} +const selectComponent = (store) => (component) => { + store.update((state) => { + const componentDef = component._component.startsWith('##') ? component : state.components[component._component]; + state.currentComponentInfo = makePropsSafe(componentDef, component); + state.currentView = 'component'; + return state; + }); +}; -const setComponentProp = store => (name, value) => { - store.update(state => { - const current_component = state.currentComponentInfo - state.currentComponentInfo[name] = value +const setComponentProp = (store) => (name, value) => { + store.update((state) => { + const current_component = state.currentComponentInfo; + state.currentComponentInfo[name] = value; - _saveCurrentPreviewItem(state) + _saveCurrentPreviewItem(state); - state.currentComponentInfo = current_component - return state - }) -} + state.currentComponentInfo = current_component; + return state; + }); +}; -const setComponentStyle = store => (type, name, value) => { - store.update(state => { - if (!state.currentComponentInfo._styles) { - state.currentComponentInfo._styles = {} - } - state.currentComponentInfo._styles[type][name] = value +const setComponentStyle = (store) => (type, name, value) => { + store.update((state) => { + if (!state.currentComponentInfo._styles) { + state.currentComponentInfo._styles = {}; + } + state.currentComponentInfo._styles[type][name] = value; - state.currentPreviewItem._css = generate_screen_css([ - state.currentPreviewItem.props, - ]) + state.currentPreviewItem._css = generate_screen_css([ state.currentPreviewItem.props ]); - // save without messing with the store - _saveCurrentPreviewItem(state) - return state - }) -} + // save without messing with the store + _saveCurrentPreviewItem(state); + return state; + }); +}; -const setComponentCode = store => code => { - store.update(state => { - state.currentComponentInfo._code = code +const setComponentCode = (store) => (code) => { + store.update((state) => { + state.currentComponentInfo._code = code; - setCurrentPageFunctions(state) - // save without messing with the store - _saveScreenApi(state.currentPreviewItem, state) + setCurrentPageFunctions(state); + // save without messing with the store + _saveScreenApi(state.currentPreviewItem, state); - return state - }) -} + return state; + }); +}; -const setCurrentPageFunctions = s => { - s.currentPageFunctions = buildPageCode(s.screens, s.pages[s.currentPageName]) - insertCodeMetadata(s.currentPreviewItem.props) -} +const setCurrentPageFunctions = (s) => { + s.currentPageFunctions = buildPageCode(s.screens, s.pages[s.currentPageName]); + insertCodeMetadata(s.currentPreviewItem.props); +}; -const buildPageCode = (screens, page) => buildCodeForScreens([page, ...screens]) +const buildPageCode = (screens, page) => buildCodeForScreens([ page, ...screens ]); -const setScreenType = store => type => { - store.update(state => { - state.currentFrontEndType = type +const setScreenType = (store) => (type) => { + store.update((state) => { + state.currentFrontEndType = type; - const pageOrScreen = - type === "page" - ? state.pages[state.currentPageName] - : state.pages[state.currentPageName]._screens[0] + const pageOrScreen = + type === 'page' ? state.pages[state.currentPageName] : state.pages[state.currentPageName]._screens[0]; - state.currentComponentInfo = pageOrScreen ? pageOrScreen.props : null - state.currentPreviewItem = pageOrScreen - return state - }) -} + state.currentComponentInfo = pageOrScreen ? pageOrScreen.props : null; + state.currentPreviewItem = pageOrScreen; + return state; + }); +}; -const deleteComponent = store => componentName => { - store.update(state => { - const parent = getParent(state.currentPreviewItem.props, componentName) +const deleteComponent = (store) => (componentName) => { + store.update((state) => { + const parent = getParent(state.currentPreviewItem.props, componentName); - if (parent) { - parent._children = parent._children.filter( - component => component !== componentName - ) - } + if (parent) { + parent._children = parent._children.filter((component) => component !== componentName); + } - _saveCurrentPreviewItem(state) + _saveCurrentPreviewItem(state); - return state - }) -} + return state; + }); +}; -const moveUpComponent = store => component => { - store.update(s => { - const parent = getParent(s.currentPreviewItem.props, component) +const moveUpComponent = (store) => (component) => { + store.update((s) => { + const parent = getParent(s.currentPreviewItem.props, component); - if (parent) { - const currentIndex = parent._children.indexOf(component) - if (currentIndex === 0) return s + if (parent) { + const currentIndex = parent._children.indexOf(component); + if (currentIndex === 0) return s; - const newChildren = parent._children.filter(c => c !== component) - newChildren.splice(currentIndex - 1, 0, component) - parent._children = newChildren - } - s.currentComponentInfo = component - _saveCurrentPreviewItem(s) + const newChildren = parent._children.filter((c) => c !== component); + newChildren.splice(currentIndex - 1, 0, component); + parent._children = newChildren; + } + s.currentComponentInfo = component; + _saveCurrentPreviewItem(s); - return s - }) -} + return s; + }); +}; -const moveDownComponent = store => component => { - store.update(s => { - const parent = getParent(s.currentPreviewItem.props, component) +const moveDownComponent = (store) => (component) => { + store.update((s) => { + const parent = getParent(s.currentPreviewItem.props, component); - if (parent) { - const currentIndex = parent._children.indexOf(component) - if (currentIndex === parent._children.length - 1) return s + if (parent) { + const currentIndex = parent._children.indexOf(component); + if (currentIndex === parent._children.length - 1) return s; - const newChildren = parent._children.filter(c => c !== component) - newChildren.splice(currentIndex + 1, 0, component) - parent._children = newChildren - } - s.currentComponentInfo = component - _saveCurrentPreviewItem(s) + const newChildren = parent._children.filter((c) => c !== component); + newChildren.splice(currentIndex + 1, 0, component); + parent._children = newChildren; + } + s.currentComponentInfo = component; + _saveCurrentPreviewItem(s); - return s - }) -} + return s; + }); +}; -const copyComponent = store => component => { - store.update(s => { - const parent = getParent(s.currentPreviewItem.props, component) - const copiedComponent = cloneDeep(component) - walkProps(copiedComponent, p => { - p._id = uuid() - }) - parent._children = [...parent._children, copiedComponent] - s.curren - _saveCurrentPreviewItem(s) - s.currentComponentInfo = copiedComponent - return s - }) -} +const copyComponent = (store) => (component) => { + store.update((s) => { + const parent = getParent(s.currentPreviewItem.props, component); + const copiedComponent = cloneDeep(component); + walkProps(copiedComponent, (p) => { + p._id = uuid(); + }); + parent._children = [ ...parent._children, copiedComponent ]; + s.curren; + _saveCurrentPreviewItem(s); + s.currentComponentInfo = copiedComponent; + return s; + }); +}; -const getPathToComponent = store => component => { - // Gets all the components to needed to construct a path. - const tempStore = get(store) - let pathComponents = [] - let parent = component - let root = false - while (!root) { - parent = getParent(tempStore.currentPreviewItem.props, parent) - if (!parent) { - root = true - } else { - pathComponents.push(parent) - } - } +const getPathToComponent = (store) => (component) => { + // Gets all the components to needed to construct a path. + const tempStore = get(store); + let pathComponents = []; + let parent = component; + let root = false; + while (!root) { + parent = getParent(tempStore.currentPreviewItem.props, parent); + if (!parent) { + root = true; + } else { + pathComponents.push(parent); + } + } - // Remove root entry since it's the screen or page layout. - // Reverse array since we need the correct order of the IDs - const reversedComponents = pathComponents.reverse().slice(1) + // Remove root entry since it's the screen or page layout. + // Reverse array since we need the correct order of the IDs + const reversedComponents = pathComponents.reverse().slice(1); - // Add component - const allComponents = [...reversedComponents, component] + // Add component + const allComponents = [ ...reversedComponents, component ]; - // Map IDs - const IdList = allComponents.map(c => c._id) + // Map IDs + const IdList = allComponents.map((c) => c._id); - // Construct ID Path: - const path = IdList.join("/") + // Construct ID Path: + const path = IdList.join('/'); - return path -} + return path; +}; const getParent = (rootProps, child) => { - let parent - walkProps(rootProps, (p, breakWalk) => { - if (p._children && p._children.includes(child)) { - parent = p - breakWalk() - } - }) - return parent -} + let parent; + walkProps(rootProps, (p, breakWalk) => { + if (p._children && p._children.includes(child)) { + parent = p; + breakWalk(); + } + }); + return parent; +}; const walkProps = (props, action, cancelToken = null) => { - cancelToken = cancelToken || { cancelled: false } - action(props, () => { - cancelToken.cancelled = true - }) + cancelToken = cancelToken || { cancelled: false }; + action(props, () => { + cancelToken.cancelled = true; + }); - if (props._children) { - for (let child of props._children) { - if (cancelToken.cancelled) return - walkProps(child, action, cancelToken) - } - } -} + if (props._children) { + for (let child of props._children) { + if (cancelToken.cancelled) return; + walkProps(child, action, cancelToken); + } + } +}; -const setMetadataProp = store => (name, prop) => { - store.update(s => { - s.currentPreviewItem[name] = prop - return s - }) -} +const setMetadataProp = (store) => (name, prop) => { + store.update((s) => { + s.currentPreviewItem[name] = prop; + return s; + }); +}; -const _saveCurrentPreviewItem = s => - s.currentFrontEndType === "page" - ? _savePage(s) - : _saveScreenApi(s.currentPreviewItem, s) +const _saveCurrentPreviewItem = (s) => + s.currentFrontEndType === 'page' ? _savePage(s) : _saveScreenApi(s.currentPreviewItem, s); diff --git a/packages/builder/src/components/common/Input.svelte b/packages/builder/src/components/common/Input.svelte index 442be58735..d53c0e9b1b 100644 --- a/packages/builder/src/components/common/Input.svelte +++ b/packages/builder/src/components/common/Input.svelte @@ -1,17 +1,20 @@ - + diff --git a/packages/builder/src/components/common/Inputs/InputGroup.svelte b/packages/builder/src/components/common/Inputs/InputGroup.svelte index 3b747b47a0..56c4cf365e 100644 --- a/packages/builder/src/components/common/Inputs/InputGroup.svelte +++ b/packages/builder/src/components/common/Inputs/InputGroup.svelte @@ -5,40 +5,41 @@ export let meta = [] export let label = "" export let value = ["0", "0", "0", "0"] - export let type = "number" + export let suffix = "" export let onChange = () => {} function handleChange(val, idx) { - value.splice(idx, 1, val) + value.splice(idx, 1, suffix ? val + suffix : val) value = value - console.log("IDX",idx) - let _value = value.map(v => !/px$/.test(v) ? `${v}px` : v) + let _value = value.map(v => (!v.endsWith(suffix) ? v + suffix : v)) onChange(_value) } - $: displayValues = value.map(v => v.toString().replace(/px$/, "")) + $: displayValues = value + ? value.map(v => v.replace(new RegExp(`${suffix}$`), "")) + : []
{label}
-
- {#each meta as { placeholder }, i} - - handleChange(e.target.value || 0, i)} /> - +
+ {#each meta as m, i} + handleChange(e.target.value || 0, i)} /> {/each}
diff --git a/packages/builder/src/components/userInterface/FlatButton.svelte b/packages/builder/src/components/userInterface/FlatButton.svelte index 7cd8b2bac7..e9798fc89c 100644 --- a/packages/builder/src/components/userInterface/FlatButton.svelte +++ b/packages/builder/src/components/userInterface/FlatButton.svelte @@ -3,7 +3,7 @@ export let value = "" export let text = "" export let icon = "" - export let padding = "8px 2px;" + export let padding = "8px 5px;" export let onClick = value => {} export let selected = false export let fontWeight = "" diff --git a/packages/builder/src/components/userInterface/FlatButtonGroup.svelte b/packages/builder/src/components/userInterface/FlatButtonGroup.svelte index ba49128716..26c0662f18 100644 --- a/packages/builder/src/components/userInterface/FlatButtonGroup.svelte +++ b/packages/builder/src/components/userInterface/FlatButtonGroup.svelte @@ -28,9 +28,9 @@ onChange(val) } - const checkSelected = val => isMultiSelect ? value.includes(val) : value === val + const checkSelected = val => + isMultiSelect ? value.includes(val) : value === val - $: console.log("VALUE",value)
diff --git a/packages/builder/src/components/userInterface/OptionSelect.svelte b/packages/builder/src/components/userInterface/OptionSelect.svelte index 841d413125..d226e6129c 100644 --- a/packages/builder/src/components/userInterface/OptionSelect.svelte +++ b/packages/builder/src/components/userInterface/OptionSelect.svelte @@ -144,6 +144,7 @@ width: 160px; height: 32px; cursor: pointer; + font-size: 12px; } .bb-select-anchor { @@ -153,6 +154,7 @@ background-color: #f2f2f2; border-radius: 2px; border: 1px solid var(--grey-dark); + align-items: center; } .bb-select-anchor > span { diff --git a/packages/builder/src/components/userInterface/propertyCategories.js b/packages/builder/src/components/userInterface/propertyCategories.js index 676a8bb0bd..b731c5ecd5 100644 --- a/packages/builder/src/components/userInterface/propertyCategories.js +++ b/packages/builder/src/components/userInterface/propertyCategories.js @@ -1,365 +1,407 @@ -import Input from "../common/Input.svelte" -import OptionSelect from "./OptionSelect.svelte" -import InputGroup from "../common/Inputs/InputGroup.svelte" -import FlatButtonGroup from "./FlatButtonGroup.svelte" +import Input from '../common/Input.svelte'; +import OptionSelect from './OptionSelect.svelte'; +import InputGroup from '../common/Inputs/InputGroup.svelte'; +import FlatButtonGroup from './FlatButtonGroup.svelte'; // import Colorpicker from "../common/Colorpicker.svelte" /* TODO: Allow for default values for all properties */ export const layout = [ - { - label: "Display", - key: "display", - control: OptionSelect, - initialValue: "Flex", - options: [ - { label: "Flex", value: "flex" }, - { label: "Inline Flex", value: "inline-flex" }, - ], - }, - { - label: "Direction", - key: "flex-direction", - control: FlatButtonGroup, - buttonProps: [ - { icon: "ri-arrow-right-line", padding: "4px 8px", value: "row" }, - { icon: "ri-arrow-left-line", padding: "4px 8px", value: "rowReverse" }, - { icon: "ri-arrow-down-line", padding: "4px 8px", value: "column" }, - { - icon: "ri-arrow-up-line", - padding: "4px 8px", - value: "columnReverse", - }, - ], - }, - { - label: "Justify", - key: "justify-content", - control: OptionSelect, - initialValue: "Flex Start", - options: [ - { label: "Flex Start", value: "flex-start" }, - { label: "Flex End", value: "flex-end" }, - { label: "Center", value: "center" }, - { label: "Space Between", value: "space-between" }, - { label: "Space Around", value: "space-around" }, - { label: "Space Evenly", value: "space-evenly" }, - ], - }, - { - label: "Align", - key: "align-items", - control: OptionSelect, - initialValue: "Flex Start", - options: [ - { label: "Flex Start", value: "flex-start" }, - { label: "Flex End", value: "flex-end" }, - { label: "Center", value: "center" }, - { label: "Baseline", value: "baseline" }, - { label: "Stretch", value: "stretch" }, - ], - }, - { - label: "Wrap", - key: "flex-wrap", - control: OptionSelect, - options: [ - { label: "wrap", value: "wrap" }, - { label: "no wrap", value: "noWrap" }, - ], - }, -] + { + label: 'Display', + key: 'display', + control: OptionSelect, + initialValue: 'Flex', + options: [ { label: 'Flex', value: 'flex' }, { label: 'Inline Flex', value: 'inline-flex' } ] + }, + { + label: 'Direction', + key: 'flex-direction', + control: FlatButtonGroup, + buttonProps: [ + { icon: 'ri-arrow-right-line', padding: '0px 5px', value: 'row' }, + { icon: 'ri-arrow-left-line', padding: '0px 5px', value: 'rowReverse' }, + { icon: 'ri-arrow-down-line', padding: '0px 5px', value: 'column' }, + { + icon: 'ri-arrow-up-line', + padding: '0px 5px', + value: 'columnReverse' + } + ] + }, + { + label: 'Justify', + key: 'justify-content', + control: OptionSelect, + initialValue: 'Flex Start', + options: [ + { label: 'Flex Start', value: 'flex-start' }, + { label: 'Flex End', value: 'flex-end' }, + { label: 'Center', value: 'center' }, + { label: 'Space Between', value: 'space-between' }, + { label: 'Space Around', value: 'space-around' }, + { label: 'Space Evenly', value: 'space-evenly' } + ] + }, + { + label: 'Align', + key: 'align-items', + control: OptionSelect, + initialValue: 'Flex Start', + options: [ + { label: 'Flex Start', value: 'flex-start' }, + { label: 'Flex End', value: 'flex-end' }, + { label: 'Center', value: 'center' }, + { label: 'Baseline', value: 'baseline' }, + { label: 'Stretch', value: 'stretch' } + ] + }, + { + label: 'Wrap', + key: 'flex-wrap', + control: OptionSelect, + options: [ { label: 'wrap', value: 'wrap' }, { label: 'no wrap', value: 'noWrap' } ] + } +]; -const spacingMeta = [ - { placeholder: "↑" }, - { placeholder: "→" }, - { placeholder: "↓" }, - { placeholder: "←" }, -] +const spacingMeta = [ { placeholder: 'T' }, { placeholder: 'R' }, { placeholder: 'B' }, { placeholder: 'L' } ]; export const spacing = [ - { label: "Margin", key: "margin", control: InputGroup, meta: spacingMeta }, - { - label: "Padding", - key: "padding", - control: InputGroup, - meta: spacingMeta, - }, -] + { + label: 'Margin', + key: 'margin', + control: InputGroup, + meta: spacingMeta, + suffix: 'px', + defaultValue: [ '0', '0', '0', '0' ] + }, + { + label: 'Padding', + key: 'padding', + control: InputGroup, + meta: spacingMeta, + suffix: 'px', + defaultValue: [ '0', '0', '0', '0' ] + } +]; export const size = [ - { - label: "Width", - key: "width", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, - { - label: "Height", - key: "height", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, - { - label: "Min W", - key: "min-width", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, - { - label: "Min H", - key: "min-height", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, - { - label: "Max W", - key: "max-width", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, - { - label: "Max H", - key: "max-height", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, -] + { + label: 'Width', + key: 'width', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + }, + { + label: 'Height', + key: 'height', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + }, + { + label: 'Min W', + key: 'min-width', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + }, + { + label: 'Min H', + key: 'min-height', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + }, + { + label: 'Max W', + key: 'max-width', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + }, + { + label: 'Max H', + key: 'max-height', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + } +]; export const position = [ - { - label: "Position", - key: "position", - control: OptionSelect, - initialValue: "Wrap", - options: [ - { label: "Static", value: "static" }, - { label: "Relative", value: "relative" }, - { label: "Fixed", value: "fixed" }, - { label: "Absolute", value: "absolute" }, - { label: "Sticky", value: "sticky" }, - ], - }, - { - label: "Top", - key: "top", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, - { - label: "Right", - key: "right", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, - { - label: "Bottom", - key: "bottom", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, - { - label: "Left", - key: "left", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, - { - label: "Z-index", - key: "z-index", - control: Input, - placeholder: "Num", - width: "48px", - textAlign: "center", - }, -] + { + label: 'Position', + key: 'position', + control: OptionSelect, + initialValue: 'Wrap', + options: [ + { label: 'Static', value: 'static' }, + { label: 'Relative', value: 'relative' }, + { label: 'Fixed', value: 'fixed' }, + { label: 'Absolute', value: 'absolute' }, + { label: 'Sticky', value: 'sticky' } + ] + }, + { + label: 'Top', + key: 'top', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + }, + { + label: 'Right', + key: 'right', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + }, + { + label: 'Bottom', + key: 'bottom', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + }, + { + label: 'Left', + key: 'left', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + }, + { + label: 'Z-index', + key: 'z-index', + control: Input, + placeholder: 'num', + width: '48px', + textAlign: 'center' + } +]; export const typography = [ - { - label: "Font", - key: "font-family", - control: OptionSelect, - defaultValue: "initial", - options: [ - "initial", - "Arial", - "Arial Black", - "Cursive", - "Courier", - "Comic Sans MS", - "Helvetica", - "Impact", - "Inter", - "Lucida Sans Unicode", - "Open Sans", - "Playfair", - "Roboto", - "Roboto Mono", - "Times New Roman", - "Verdana", - ], - styleBindingProperty: "font-family", - }, - { - label: "Weight", - key: "font-weight", - control: OptionSelect, - options: ["normal", "bold", "bolder", "lighter"], - }, - { - label: "size", - key: "font-size", - defaultValue: "", - control: Input, - placeholder: "px", - width: "48px", - textAlign: "center", - }, - { - label: "Line H", - key: "line-height", - control: Input, - placeholder: "lh", - width: "48px", - textAlign: "center", - }, - { - label: "Color", - key: "color", - control: Input, - }, - { - label: "align", - key: "text-align", - control: FlatButtonGroup, - buttonProps: [ - { icon: "ri-align-left", padding: "4px 8px", value: "left" }, - { icon: "ri-align-center", padding: "4px 8px", value: "center" }, - { icon: "ri-align-right", padding: "4px 8px", value: "right" }, - { icon: "ri-align-justify", padding: "4px 8px", value: "justify" }, - ], - }, - { - label: "transform", - key: "text-transform", - control: FlatButtonGroup, - buttonProps: [ - { text: "BB", padding: "4px 8px", fontWeight: 500, value: "uppercase" }, - { text: "Bb", padding: "4px 8px", fontWeight: 500, value: "capitalize" }, - { text: "bb", padding: "4px 8px", fontWeight: 500, value: "lowercase" }, - { - text: "×", - padding: "4px 8px", - fontWeight: 500, - value: "none", - }, - ], - }, - { label: "style", key: "font-style", control: Input }, -] + { + label: 'Font', + key: 'font-family', + control: OptionSelect, + defaultValue: 'initial', + options: [ + 'initial', + 'Arial', + 'Arial Black', + 'Cursive', + 'Courier', + 'Comic Sans MS', + 'Helvetica', + 'Impact', + 'Inter', + 'Lucida Sans Unicode', + 'Open Sans', + 'Playfair', + 'Roboto', + 'Roboto Mono', + 'Times New Roman', + 'Verdana' + ], + styleBindingProperty: 'font-family' + }, + { + label: 'Weight', + key: 'font-weight', + control: OptionSelect, + options: [ 'normal', 'bold', 'bolder', 'lighter' ] + }, + { + label: 'size', + key: 'font-size', + defaultValue: '', + control: Input, + placeholder: 'px', + width: '48px', + textAlign: 'center' + }, + { + label: 'Line H', + key: 'line-height', + control: Input, + placeholder: 'lh', + width: '48px', + textAlign: 'center' + }, + { + label: 'Color', + key: 'color', + control: Input, + placeholder: "hex", + }, + { + label: 'align', + key: 'text-align', + control: FlatButtonGroup, + buttonProps: [ + { icon: 'ri-align-left', padding: '0px 5px', value: 'left' }, + { icon: 'ri-align-center', padding: '0px 5px', value: 'center' }, + { icon: 'ri-align-right', padding: '0px 5px', value: 'right' }, + { icon: 'ri-align-justify', padding: '0px 5px', value: 'justify' } + ] + }, + { + label: 'transform', + key: 'text-transform', + control: FlatButtonGroup, + buttonProps: [ + { text: 'BB', padding: '0px 5px', fontWeight: 500, value: 'uppercase' }, + { text: 'Bb', padding: '0px 5px', fontWeight: 500, value: 'capitalize' }, + { text: 'bb', padding: '0px 5px', fontWeight: 500, value: 'lowercase' }, + { + text: '×', + padding: '0px 5px', + fontWeight: 500, + value: 'none' + } + ] + }, + { label: 'style', key: 'font-style', control: Input } +]; export const background = [ + { + label: 'Background', + key: 'background', + control: Input, + }, { - label: "Background", - key: "background", + label: "Image", + key: "background-image", control: Input, + placeholder: "src", }, - { label: "Image", key: "image", control: Input }, //custom -] +]; export const border = [ - { label: "Radius", key: "border-radius", control: Input }, - { label: "Width", key: "border-width", control: Input }, //custom - { - label: "Color", - key: "border-color", - control: Input, - }, - { - label: "Style", - key: "border-style", - control: OptionSelect, - options: [ - "none", - "hidden", - "dotted", - "dashed", - "solid", - "double", - "groove", - "ridge", - "inset", - "outset", - ], - }, -] + { + label: 'Radius', + key: 'border-radius', + control: Input, + width: '48px', + placeholder: 'px', + textAlign: 'center' + }, + { + label: 'Width', + key: 'border-width', + control: Input, + width: '48px', + placeholder: 'px', + textAlign: 'center' + }, //custom + { + label: 'Color', + key: 'border-color', + control: Input + }, + { + label: 'Style', + key: 'border-style', + control: OptionSelect, + options: [ 'none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset' ] + } +]; export const effects = [ - { label: "Opacity", key: "opacity", control: Input }, + { + label: 'Opacity', + key: 'opacity', + control: Input, + width: '48px', + textAlign: 'center', + placeholder: '%' + }, + { + label: 'Rotate', + key: 'transform', + control: Input, + width: '48px', + textAlign: 'center', + placeholder: 'deg' + }, //needs special control { - label: "Rotate", - key: "transform", - control: OptionSelect, - options: [ - { label: "None", value: "rotate(0deg)" }, - { label: "45 degrees", value: "rotate(45deg)" }, - { label: "90 degrees", value: "rotate(90deg)" }, - { label: "135 degrees", value: "rotate(135deg)" }, - { label: "180 degrees", value: "rotate(180deg)" }, - { label: "225 degrees", value: "rotate(225deg)" }, - { label: "270 degrees", value: "rotate(270deg)" }, - { label: "315 degrees", value: "rotate(315deg)" }, - { label: "360 degrees", value: "rotate(360deg)" }, - ], - }, //needs special control - { label: "Shadow", key: "box-shadow", control: Input }, -] + label: "Shadow", + key: "box-shadow", + control: InputGroup, + meta: [{ placeholder: "X" }, { placeholder: "Y" }, { placeholder: "B" }], + }, +]; export const transitions = [ - { label: "Property", key: "transition-property", control: Input }, - { label: "Duration", key: "transition-timing-function", control: Input }, - { label: "Ease", key: "transition-ease", control: Input }, -] + { + label: 'Property', + key: 'transition-property', + control: OptionSelect, + options: [ + 'None', + 'All', + 'Background Color', + 'Color', + 'Font Size', + 'Font Weight', + 'Height', + 'Margin', + 'Opacity', + 'Padding', + 'Rotate', + 'Shadow', + 'Width' + ] + }, + { + label: 'Duration', + key: 'transition-timing-function', + control: Input, + width: '48px', + textAlign: 'center', + placeholder: 'sec' + }, + { + label: 'Ease', + key: 'transition-ease', + control: OptionSelect, + options: [ 'linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out' ] + } +]; export const all = { - layout, - spacing, - size, - position, - typography, - background, - border, - effects, - transitions, -} + layout, + spacing, + size, + position, + typography, + background, + border, + effects, + transitions +}; export function excludeProps(props, propsToExclude) { - const modifiedProps = {} - for (const prop in props) { - if (!propsToExclude.includes(prop)) { - modifiedProps[prop] = props[prop] - } - } - return modifiedProps + const modifiedProps = {}; + for (const prop in props) { + if (!propsToExclude.includes(prop)) { + modifiedProps[prop] = props[prop]; + } + } + return modifiedProps; } From e6915b655f88e889429d262541c48622c16a3f4e Mon Sep 17 00:00:00 2001 From: Conor_Mack Date: Mon, 1 Jun 2020 17:14:54 +0100 Subject: [PATCH 041/161] Properties panel scrolling fix --- .../components/userInterface/ComponentPropertiesPanel.svelte | 1 - .../components/userInterface/ComponentsPaneSwitcher.svelte | 2 +- .../builder/src/components/userInterface/DesignView.svelte | 3 +++ .../builder/src/pages/[application]/frontend/_layout.svelte | 4 +++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte index 726fb35aae..fb4f01578c 100644 --- a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte +++ b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte @@ -104,7 +104,6 @@ height: 100%; display: flex; flex-direction: column; - overflow-x: hidden; } .title > div:nth-child(1) { diff --git a/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte b/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte index ecc7dd1d6d..9df2a928ca 100644 --- a/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte +++ b/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte @@ -54,7 +54,7 @@ height: 100%; display: flex; flex-direction: column; - padding: 20px 20px; + padding: 20px 5px 20px 10px; border-left: solid 1px var(--grey); } diff --git a/packages/builder/src/components/userInterface/DesignView.svelte b/packages/builder/src/components/userInterface/DesignView.svelte index 9e005ee3bb..f13f62663e 100644 --- a/packages/builder/src/components/userInterface/DesignView.svelte +++ b/packages/builder/src/components/userInterface/DesignView.svelte @@ -64,6 +64,9 @@ .design-view-property-groups { flex: 1; + overflow-y: auto; + overflow-x: hidden; + max-height: 500px; } .no-design { diff --git a/packages/builder/src/pages/[application]/frontend/_layout.svelte b/packages/builder/src/pages/[application]/frontend/_layout.svelte index 572ffe42ec..7847de710c 100644 --- a/packages/builder/src/pages/[application]/frontend/_layout.svelte +++ b/packages/builder/src/pages/[application]/frontend/_layout.svelte @@ -143,7 +143,7 @@ .ui-nav { grid-column: 1; background-color: var(--white); - height: calc(100vh - 49px); + height: calc(100vh - 69px); padding: 0; overflow: scroll; display: flex; @@ -161,6 +161,8 @@ grid-column: 3; background-color: var(--white); min-height: 0px; + height: calc(100vh - 69px); + overflow-y: hidden; } .components-nav-page { From 5494a6450eaa44537c6be16af1eff598a0e6424d Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Mon, 1 Jun 2020 17:17:35 +0100 Subject: [PATCH 042/161] Update ComponentDropdownMenu.svelte --- .../src/components/userInterface/ComponentDropdownMenu.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte index a9edabfd16..a4e8a1f7b3 100644 --- a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte +++ b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte @@ -163,8 +163,8 @@
  • storeComponentForCopy(false)}>Copy

  • pasteComponent('above')}>Paste above
  • -
  • pasteComponent('below')}>Paste below
  • -
  • pasteComponent('inside')}>Paste inside
  • +
  • pasteComponent('below')}>Paste below
  • +
  • pasteComponent('inside')}>Paste inside
  • From e7a1419740784797f29401a7b792296cb8c48993 Mon Sep 17 00:00:00 2001 From: Conor_Mack Date: Mon, 1 Jun 2020 18:04:45 +0100 Subject: [PATCH 043/161] CSS Element State Button Fix --- .../src/components/userInterface/FlatButtonGroup.svelte | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/components/userInterface/FlatButtonGroup.svelte b/packages/builder/src/components/userInterface/FlatButtonGroup.svelte index 26c0662f18..ad1107b1f1 100644 --- a/packages/builder/src/components/userInterface/FlatButtonGroup.svelte +++ b/packages/builder/src/components/userInterface/FlatButtonGroup.svelte @@ -28,6 +28,7 @@ onChange(val) } + const checkSelected = val => isMultiSelect ? value.includes(val) : value === val @@ -37,7 +38,7 @@ {#each buttonProps as props}
    From 28bf917210bd92a0dc07b329710c2f5743d85916 Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Mon, 1 Jun 2020 21:18:25 +0100 Subject: [PATCH 044/161] Padding and margin input fields fix --- .../builder/src/components/common/Input.svelte | 1 - .../ComponentsHierarchyChildren.svelte | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/builder/src/components/common/Input.svelte b/packages/builder/src/components/common/Input.svelte index a136b4e2f3..b80e24e000 100644 --- a/packages/builder/src/components/common/Input.svelte +++ b/packages/builder/src/components/common/Input.svelte @@ -16,7 +16,6 @@ line-height: 1.3; padding: 12px; width: 164px; - float: right; max-width: 100%; box-sizing: border-box; margin: 0; diff --git a/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte b/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte index 344e02d127..dfa6f67faa 100644 --- a/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte +++ b/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte @@ -40,7 +40,7 @@ class="budibase__nav-item item" class:selected={currentComponent === component} style="padding-left: {level * 20 + 53}px"> -
    {get_capitalised_name(component._component)}
    +
    @@ -72,8 +72,6 @@ border-radius: 3px; height: 35px; align-items: center; - font-weight: 400; - font-size: 13px; } .actions { @@ -95,4 +93,16 @@ .item:hover .actions { display: block; } + + .nav-item { + display: flex; + align-items: center; + font-size: 14px; + color: var(--ink); + } + + .icon { + color: var(--ink-light); + margin-right: 8px; + } From 400f8b42e439810dd14921763b784b4819d3bd0e Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Mon, 1 Jun 2020 21:18:43 +0100 Subject: [PATCH 045/161] Padding and margin fix --- packages/builder/src/builderStore/generate_css.js | 4 +++- .../src/components/common/Inputs/InputGroup.svelte | 11 ++++------- .../components/userInterface/propertyCategories.js | 14 +++++++++----- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/packages/builder/src/builderStore/generate_css.js b/packages/builder/src/builderStore/generate_css.js index 5826d4f824..d2d6f40bdf 100644 --- a/packages/builder/src/builderStore/generate_css.js +++ b/packages/builder/src/builderStore/generate_css.js @@ -1,3 +1,5 @@ +import {toNumber} from "lodash/fp" + export const generate_screen_css = component_arr => { let styles = "" for (const { _styles, _id, _children, _component } of component_arr) { @@ -37,7 +39,7 @@ export const generate_css = style => { export const generate_array_styles = item => { let safeItem = item === "" ? 0 : item let hasPx = new RegExp("px$") - if (!hasPx.test(safeItem)) { + if (!hasPx.test(safeItem) && !isNaN(toNumber(safeItem))) { return `${safeItem}px` } else { return safeItem diff --git a/packages/builder/src/components/common/Inputs/InputGroup.svelte b/packages/builder/src/components/common/Inputs/InputGroup.svelte index ffe6880f51..f5497b2a26 100644 --- a/packages/builder/src/components/common/Inputs/InputGroup.svelte +++ b/packages/builder/src/components/common/Inputs/InputGroup.svelte @@ -4,7 +4,7 @@ export let meta = [] export let label = "" export let value = [0, 0, 0, 0] - export let type = "number" + export let type = "text" export let onChange = () => {} function handleChange(val, idx) { @@ -28,8 +28,6 @@
    diff --git a/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte index 7bb16daa52..d629630099 100644 --- a/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte @@ -76,5 +76,7 @@ textarea { min-height: 150px; + font-family: inherit; + padding: 5px; } diff --git a/packages/builder/src/components/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte b/packages/builder/src/components/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte index 9b03ee2f6d..ff13782114 100644 --- a/packages/builder/src/components/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte +++ b/packages/builder/src/components/workflow/WorkflowPanel/WorkflowList/WorkflowList.svelte @@ -28,7 +28,6 @@ async function saveWorkflow() { const workflow = $workflowStore.currentWorkflow.workflow - // TODO: Clean up args await workflowStore.actions.save({ instanceId: $backendUiStore.selectedDatabase._id, workflow, diff --git a/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js b/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js index 4e36353532..96da6a3910 100644 --- a/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js +++ b/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js @@ -22,17 +22,19 @@ const ACTION = { }, SAVE_RECORD: { name: "Save Record", + tagline: "Save a {{model.name}} record", icon: "ri-save-3-fill", description: "Save a record to your database.", environment: "SERVER", params: { - model: "string", + model: "model", }, }, DELETE_RECORD: { description: "Delete a record from your database.", icon: "ri-delete-bin-line", name: "Delete Record", + tagline: "Delete a {{model.name}} record", environment: "SERVER", params: { record: "string", diff --git a/packages/client/src/api/workflow/actions.js b/packages/client/src/api/workflow/actions.js index 795d34fad3..f7d4755fbf 100644 --- a/packages/client/src/api/workflow/actions.js +++ b/packages/client/src/api/workflow/actions.js @@ -1,6 +1,4 @@ -import { get } from "svelte/store" import { setState } from "../../state/setState" -import { appStore } from "../../state/store" const delay = ms => new Promise(resolve => setTimeout(resolve, ms)) @@ -12,11 +10,11 @@ export default { [id]: args, } }, - NAVIGATE: ({ context, args, id }) => { + NAVIGATE: () => { // TODO client navigation }, - DELAY: async ({ context, args }) => await delay(args.time), - FILTER: ({ context, args }) => { + DELAY: async ({ args }) => await delay(args.time), + FILTER: ({ args }) => { const { field, condition, value } = args switch (condition) { case "equals": diff --git a/packages/client/src/api/workflow/index.js b/packages/client/src/api/workflow/index.js index 94cd6fb6f8..6d6d12a97e 100644 --- a/packages/client/src/api/workflow/index.js +++ b/packages/client/src/api/workflow/index.js @@ -1,7 +1,7 @@ import { get } from "svelte/store" import mustache from "mustache" import { appStore } from "../../state/store" -import Orchestrator from "./orchestrator"; +import Orchestrator from "./orchestrator" import clientActions from "./actions" // Execute a workflow from a running budibase app @@ -28,8 +28,6 @@ export const clientStrategy = ({ api, instanceId }) => ({ }, run: async function(workflow) { for (let block of workflow.steps) { - console.log("Executing workflow block", block) - // This code gets run in the browser if (block.environment === "CLIENT") { const action = clientActions[block.actionId] @@ -60,13 +58,11 @@ export const clientStrategy = ({ api, instanceId }) => ({ }, }) -export const triggerWorkflow = api => async ({ workflow }) => { - const instanceId = "inst_ad75c7f_4f3e7d5d80a74b17a5187a18e2aba85e"; - +export const triggerWorkflow = api => async ({ workflow, instanceId }) => { const workflowOrchestrator = new Orchestrator(api, instanceId) workflowOrchestrator.strategy = clientStrategy - const EXECUTE_WORKFLOW_URL = `/api/${instanceId}/workflows/${workflow}` + const EXECUTE_WORKFLOW_URL = `/api/workflows/${workflow}` const workflowDefinition = await api.get({ url: EXECUTE_WORKFLOW_URL }) workflowOrchestrator.execute(workflowDefinition) diff --git a/packages/client/src/createApp.js b/packages/client/src/createApp.js index d3fb51b124..a80c1009c7 100644 --- a/packages/client/src/createApp.js +++ b/packages/client/src/createApp.js @@ -1,4 +1,3 @@ -import { writable } from "svelte/store" import { attachChildren } from "./render/attachChildren" import { createTreeNode } from "./render/prepareRenderComponent" import { screenRouter } from "./render/screenRouter" @@ -7,7 +6,6 @@ import { createStateManager } from "./state/stateManager" export const createApp = ({ componentLibraries, frontendDefinition, - user, window, }) => { let routeTo diff --git a/packages/client/src/render/screenRouter.js b/packages/client/src/render/screenRouter.js index 1325bbd20a..262ed65f66 100644 --- a/packages/client/src/render/screenRouter.js +++ b/packages/client/src/render/screenRouter.js @@ -1,8 +1,6 @@ import regexparam from "regexparam" import { routerStore } from "../state/store" -import { initRouteStore } from "../state/store" -// TODO: refactor export const screenRouter = ({ screens, onScreenSelected, appRootPath }) => { const makeRootedPath = url => { if (appRootPath) { diff --git a/packages/client/src/state/eventHandlers.js b/packages/client/src/state/eventHandlers.js index 88418ba1a3..b013956dd4 100644 --- a/packages/client/src/state/eventHandlers.js +++ b/packages/client/src/state/eventHandlers.js @@ -6,17 +6,12 @@ import { createApi } from "../api" export const EVENT_TYPE_MEMBER_NAME = "##eventHandlerType" -export const eventHandlers = (store, rootPath, routeTo) => { +export const eventHandlers = (rootPath, routeTo) => { const handler = (parameters, execute) => ({ execute, parameters, }) - let currentState - store.subscribe(state => { - currentState = state - }) - const api = createApi({ rootPath, setState, diff --git a/packages/client/src/state/parseBinding.js b/packages/client/src/state/parseBinding.js deleted file mode 100644 index 4ecf9887ef..0000000000 --- a/packages/client/src/state/parseBinding.js +++ /dev/null @@ -1,67 +0,0 @@ -// export const BB_STATE_BINDINGPATH = "##bbstate" -// export const BB_STATE_BINDINGSOURCE = "##bbsource" -// export const BB_STATE_FALLBACK = "##bbstatefallback" - -// export const isBound = prop => !!parseBinding(prop) - -// /** -// * -// * @param {object|string|number} prop - component property to parse for a dynamic state binding -// * @returns {object|boolean} -// */ -// export const parseBinding = prop => { -// if (!prop) return false - -// if (isBindingExpression(prop)) { -// return parseBindingExpression(prop) -// } - -// if (isAlreadyBinding(prop)) { -// return { -// path: prop.path, -// source: prop.source || "store", -// fallback: prop.fallback, -// } -// } - -// if (hasBindingObject(prop)) { -// return { -// path: prop[BB_STATE_BINDINGPATH], -// fallback: prop[BB_STATE_FALLBACK] || "", -// source: prop[BB_STATE_BINDINGSOURCE] || "store", -// } -// } -// } - -// export const isStoreBinding = binding => binding && binding.source === "store" -// export const isContextBinding = binding => -// binding && binding.source === "context" -// // export const isEventBinding = binding => binding && binding.source === "event" - -// const hasBindingObject = prop => -// typeof prop === "object" && prop[BB_STATE_BINDINGPATH] !== undefined - -// const isAlreadyBinding = prop => typeof prop === "object" && prop.path - -// const isBindingExpression = prop => -// typeof prop === "string" && -// (prop.startsWith("state.") || -// prop.startsWith("context.") || -// prop.startsWith("event.") || -// prop.startsWith("route.")) - -// const parseBindingExpression = prop => { -// let [source, ...rest] = prop.split(".") -// let path = rest.join(".") - -// if (source === "route") { -// source = "state" -// path = `##routeParams.${path}` -// } - -// return { -// fallback: "", // TODO: provide fallback support -// source, -// path, -// } -// } diff --git a/packages/client/src/state/stateManager.js b/packages/client/src/state/stateManager.js index b4597be5dd..8e777ca4b9 100644 --- a/packages/client/src/state/stateManager.js +++ b/packages/client/src/state/stateManager.js @@ -21,27 +21,16 @@ const isMetaProp = propName => propName === "_styles" export const createStateManager = ({ - // store, appRootPath, frontendDefinition, componentLibraries, onScreenSlotRendered, routeTo, }) => { - let handlerTypes = eventHandlers(appStore, appRootPath, routeTo) + let handlerTypes = eventHandlers(appRootPath, routeTo) let currentState - // any nodes that have props that are bound to the store - // let nodesBoundByProps = [] - - // any node whose children depend on code, that uses the store - // let nodesWithCodeBoundChildren = [] - const getCurrentState = () => currentState - // const registerBindings = _registerBindings( - // nodesBoundByProps, - // nodesWithCodeBoundChildren - // ) const bb = bbFactory({ store: appStore, @@ -53,131 +42,26 @@ export const createStateManager = ({ const setup = _setup({ handlerTypes, getCurrentState, bb, store: appStore }) - // TODO: remove - const unsubscribe = appStore.subscribe(state => { - console.log("store updated", state) - return state - }) - - // const unsubscribe = store.subscribe( - // onStoreStateUpdated({ - // setCurrentState: state => (currentState = state), - // getCurrentState, - // // nodesWithCodeBoundChildren, - // // nodesBoundByProps, - // componentLibraries, - // onScreenSlotRendered, - // setupState: setup, - // }) - // ) - return { setup, - destroy: () => unsubscribe(), + destroy: () => {}, getCurrentState, store: appStore, } } -const onStoreStateUpdated = ({ - setCurrentState, - getCurrentState, - componentLibraries, - onScreenSlotRendered, - setupState, -}) => state => { - // fire the state update event to re-render anything bound to this - // setCurrentState(state) - // setCurrentState(state) - // attachChildren({ - // componentLibraries, - // treeNode: createTreeNode(), - // onScreenSlotRendered, - // setupState, - // getCurrentState, - // })(document.querySelector("#app"), { hydrate: true, force: true }) - // // the original array gets changed by components' destroy() - // // so we make a clone and check if they are still in the original - // const nodesWithBoundChildren_clone = [...nodesWithCodeBoundChildren] - // for (let node of nodesWithBoundChildren_clone) { - // if (!nodesWithCodeBoundChildren.includes(node)) continue - // attachChildren({ - // componentLibraries, - // treeNode: node, - // onScreenSlotRendered, - // setupState, - // getCurrentState, - // })(node.rootElement, { hydrate: true, force: true }) - // } -} - -// const _registerBindings = (nodesBoundByProps, nodesWithCodeBoundChildren) => ( -// node, -// bindings -// ) => { -// if (bindings.length > 0) { -// node.bindings = bindings -// nodesBoundByProps.push(node) -// const onDestroy = () => { -// nodesBoundByProps = nodesBoundByProps.filter(n => n === node) -// node.onDestroy = node.onDestroy.filter(d => d === onDestroy) -// } -// node.onDestroy.push(onDestroy) -// } -// if ( -// node.props._children && -// node.props._children.filter(c => c._codeMeta && c._codeMeta.dependsOnStore) -// .length > 0 -// ) { -// nodesWithCodeBoundChildren.push(node) -// const onDestroy = () => { -// nodesWithCodeBoundChildren = nodesWithCodeBoundChildren.filter( -// n => n === node -// ) -// node.onDestroy = node.onDestroy.filter(d => d === onDestroy) -// } -// node.onDestroy.push(onDestroy) -// } -// } - -// const setNodeState = (storeState, node) => { -// if (!node.component) return -// const newProps = { ...node.bindings.initialProps } - -// for (let binding of node.bindings) { -// const val = getState(storeState, binding.path, binding.fallback) - -// if (val === undefined && newProps[binding.propName] !== undefined) { -// delete newProps[binding.propName] -// } - -// if (val !== undefined) { -// newProps[binding.propName] = val -// } -// } - -// node.component.$set(newProps) -// } - const _setup = ({ handlerTypes, getCurrentState, bb, store }) => node => { const props = node.props const context = node.context || {} const initialProps = { ...props } - // const storeBoundProps = [] const currentStoreState = get(appStore) - console.log("node", node) - - // console.log("node", node); - // console.log("nodeComponent", node.component); - for (let propName in props) { if (isMetaProp(propName)) continue const propValue = props[propName] - // const binding = parseBinding(propValue) - // TODO: better binding stuff + // A little bit of a hack - won't bind if the string doesn't start with {{ const isBound = typeof propValue === "string" && propValue.startsWith("{{") if (isBound) { @@ -191,27 +75,6 @@ const _setup = ({ handlerTypes, getCurrentState, bb, store }) => node => { } } - // if (isBound) binding.propName = propName - - // if (isBound && binding.source === "state") { - // storeBoundProps.push(binding) - - // initialProps[propName] = !currentStoreState - // ? binding.fallback - // : getState( - // currentStoreState, - // binding.path, - // binding.fallback, - // binding.source - // ) - // } - - // if (isBound && binding.source === "context") { - // initialProps[propName] = !context - // ? propValue - // : getState(context, binding.path, binding.fallback, binding.source) - // } - if (isEventType(propValue)) { const handlersInfos = [] for (let event of propValue) { @@ -228,21 +91,6 @@ const _setup = ({ handlerTypes, getCurrentState, bb, store }) => node => { state: getCurrentState(), context, }) - // const paramBinding = parseBinding(paramValue) - // if (!paramBinding) { - // resolvedParams[paramName] = () => paramValue - // continue - // } - - // let paramValueSource - - // if (paramBinding.source === "context") paramValueSource = context - // if (paramBinding.source === "state") - // paramValueSource = getCurrentState() - - // // The new dynamic event parameter bound to the relevant source - // resolvedParams[paramName] = () => - // getState(paramValueSource, paramBinding.path, paramBinding.fallback) } handlerInfo.parameters = resolvedParams @@ -262,8 +110,6 @@ const _setup = ({ handlerTypes, getCurrentState, bb, store }) => node => { } } - // registerBindings(node, storeBoundProps) - const setup = _setup({ handlerTypes, getCurrentState, bb, store }) initialProps._bb = bb(node, setup) diff --git a/packages/client/tests/workflowOrchestrator.spec.js b/packages/client/tests/workflowOrchestrator.spec.js deleted file mode 100644 index 4858e9f51b..0000000000 --- a/packages/client/tests/workflowOrchestrator.spec.js +++ /dev/null @@ -1,43 +0,0 @@ -const TEST_WORKFLOW = { - "_id": "8ebe79daf1c744c7ab204c0b964e309e", - "_rev": "37-94ae573300721c98267cc1d18822c94d", - "name": "Workflow", - "type": "workflow", - "definition": { - "next": { - "type": "CLIENT", - "actionId": "SET_STATE", - "args": { - "path": "myPath", - "value": "foo" - }, - "next": { - "type": "SERVER", - "actionId": "SAVE_RECORD", - "args": { - "record": { - "modelId": "f452a2b9c3a94251b9ea7be1e20e3b19", - "name": "workflowRecord" - }, - "next": { - "type": "CLIENT", - "actionId": "SET_STATE", - "args": { - "path": "myPath", - "value": "$context.SAVE_RECORD.record.name" - }, - } - } - } - } - } -}; - -describe("Workflow Orchestrator", () => { - it("executes a workflow", () => { - }); - - it("", () => { - - }); -}); \ No newline at end of file diff --git a/packages/server/src/api/controllers/view.js b/packages/server/src/api/controllers/view.js index 8456837c6a..2f15d41570 100644 --- a/packages/server/src/api/controllers/view.js +++ b/packages/server/src/api/controllers/view.js @@ -11,7 +11,8 @@ const controller = { if ( !name.startsWith("all") && name !== "by_type" && - name !== "by_username" + name !== "by_username" && + name !== "by_workflow_trigger" ) { response.push({ name, diff --git a/packages/server/src/api/controllers/workflow/index.js b/packages/server/src/api/controllers/workflow/index.js index 55173c28cb..4c5394ab2f 100644 --- a/packages/server/src/api/controllers/workflow/index.js +++ b/packages/server/src/api/controllers/workflow/index.js @@ -1,5 +1,5 @@ -const CouchDB = require("../../db") -const newid = require("../../db/newid") +const CouchDB = require("../../../db") +const newid = require("../../../db/newid") exports.create = async function(ctx) { const db = new CouchDB(ctx.params.instanceId) @@ -49,7 +49,7 @@ exports.fetch = async function(ctx) { } exports.find = async function(ctx) { - const db = new CouchDB(ctx.params.instanceId) + const db = new CouchDB(ctx.user.instanceId) ctx.body = await db.get(ctx.params.id) } @@ -61,7 +61,6 @@ exports.executeAction = async function(ctx) { exports.fetchActionScript = async function(ctx) { const workflowAction = require(`./actions/${ctx.action}`) - console.log(workflowAction) ctx.body = workflowAction } diff --git a/packages/server/src/api/routes/workflow.js b/packages/server/src/api/routes/workflow.js index b4d8920261..2420e4cb52 100644 --- a/packages/server/src/api/routes/workflow.js +++ b/packages/server/src/api/routes/workflow.js @@ -1,13 +1,13 @@ const Router = require("@koa/router") const controller = require("../controllers/workflow") const authorized = require("../../middleware/authorized") -const { BUILDER, EXECUTE_WORKFLOW } = require("../../utilities/accessLevels") +const { BUILDER } = require("../../utilities/accessLevels") const router = Router() router .get("/api/:instanceId/workflows", authorized(BUILDER), controller.fetch) - .get("/api/:instanceId/workflows/:id", authorized(BUILDER), controller.find) + .get("/api/workflows/:id", authorized(BUILDER), controller.find) .get( "/api/:instanceId/workflows/:id/:action", authorized(BUILDER), diff --git a/packages/server/src/events/index.js b/packages/server/src/events/index.js index 93b08bd1d8..019b866f9b 100644 --- a/packages/server/src/events/index.js +++ b/packages/server/src/events/index.js @@ -1,6 +1,6 @@ const EventEmitter = require("events").EventEmitter const CouchDB = require("../db") -const { Orchestrator, serverStrategy } = require("./workflow"); +const { Orchestrator, serverStrategy } = require("./workflow") const emitter = new EventEmitter() @@ -8,7 +8,7 @@ async function executeRelevantWorkflows(event, eventType) { const db = new CouchDB(event.instanceId) const workflowsToTrigger = await db.query("database/by_workflow_trigger", { key: [eventType], - include_docs: true + include_docs: true, }) const workflows = workflowsToTrigger.rows.map(wf => wf.doc) @@ -22,12 +22,12 @@ async function executeRelevantWorkflows(event, eventType) { } } -emitter.on("record:save", async function(event) { - await executeRelevantWorkflows(event, "record:save"); +emitter.on("action", async function(event) { + await executeRelevantWorkflows(event, "record:save") }) emitter.on("record:delete", async function(event) { - await executeRelevantWorkflows(event, "record:delete"); + await executeRelevantWorkflows(event, "record:delete") }) module.exports = emitter diff --git a/packages/server/src/events/workflow.js b/packages/server/src/events/workflow.js index f2796d91e2..6368274dff 100644 --- a/packages/server/src/events/workflow.js +++ b/packages/server/src/events/workflow.js @@ -37,7 +37,6 @@ exports.serverStrategy = () => ({ }, run: async function(workflow) { for (let block of workflow.steps) { - console.log("Executing workflow block", block) if (block.type === "CLIENT") continue const action = require(`../api/controllers/workflow/actions/${block.actionId}`) @@ -48,5 +47,5 @@ exports.serverStrategy = () => ({ [block.id]: response, } } - } -}); + }, +}) From a6602ba1fcae42d9d7d579e49d005dd6bd61644e Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 1 Jun 2020 21:31:55 +0100 Subject: [PATCH 047/161] lint + format --- .../store/workflow/tests/testWorkflow.js | 1 - .../EventsEditor/StateBindingCascader.svelte | 4 +- .../userInterface/StateBindingControl.svelte | 52 +-- .../workflow/SetupPanel/SetupPanel.svelte | 8 +- .../workflow/[workflow]/_layout.svelte | 2 +- packages/builder/tests/createProps.spec.js | 12 - packages/client/src/api/workflow/actions.js | 1 + packages/client/tests/bindingDom.spec.js | 363 ------------------ packages/client/tests/domControlFlow.spec.js | 74 ---- packages/server/src/api/controllers/view.js | 2 +- 10 files changed, 33 insertions(+), 486 deletions(-) delete mode 100644 packages/client/tests/bindingDom.spec.js delete mode 100644 packages/client/tests/domControlFlow.spec.js diff --git a/packages/builder/src/builderStore/store/workflow/tests/testWorkflow.js b/packages/builder/src/builderStore/store/workflow/tests/testWorkflow.js index 2ef6018bf0..90c4b17924 100644 --- a/packages/builder/src/builderStore/store/workflow/tests/testWorkflow.js +++ b/packages/builder/src/builderStore/store/workflow/tests/testWorkflow.js @@ -3,7 +3,6 @@ export default { _rev: "4-02c6659734934895812fa7be0215ee59", name: "Test Workflow", definition: { - trigger: {}, steps: [ { id: "VFWeZcIPx", diff --git a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte index 130b0f8269..1edf5d45a0 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte @@ -5,9 +5,7 @@ import Input from "components/common/Input.svelte" import { find, map, keys, reduce, keyBy } from "lodash/fp" import { pipe } from "components/common/core" - import { - EVENT_TYPE_MEMBER_NAME - } from "components/common/eventHandlers" + import { EVENT_TYPE_MEMBER_NAME } from "components/common/eventHandlers" import { store, workflowStore } from "builderStore" import { ArrowDownIcon } from "components/common/Icons/" diff --git a/packages/builder/src/components/userInterface/StateBindingControl.svelte b/packages/builder/src/components/userInterface/StateBindingControl.svelte index 57a6bf13f9..0246fb71dc 100644 --- a/packages/builder/src/components/userInterface/StateBindingControl.svelte +++ b/packages/builder/src/components/userInterface/StateBindingControl.svelte @@ -21,32 +21,32 @@ size="19" on:click={() => onChanged(!value)} />
    - {:else if type === 'models'} - - {:else if type === 'options' || type === 'models'} - + {:else if type === 'models'} + + {:else if type === 'options' || type === 'models'} + {/if}
    diff --git a/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte b/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte index f7252a5707..1ae741b55a 100644 --- a/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte @@ -1,5 +1,5 @@ \ No newline at end of file + diff --git a/packages/builder/tests/createProps.spec.js b/packages/builder/tests/createProps.spec.js index 269ab8156a..bd468ba41a 100644 --- a/packages/builder/tests/createProps.spec.js +++ b/packages/builder/tests/createProps.spec.js @@ -1,6 +1,5 @@ import { createProps } from "../src/components/userInterface/pagesParsing/createProps" import { keys, some } from "lodash/fp" -import { BB_STATE_BINDINGPATH } from "@budibase/client/src/state/parseBinding" import { stripStandardProps } from "./testData" describe("createDefaultProps", () => { @@ -94,17 +93,6 @@ describe("createDefaultProps", () => { expect(props.onClick).toEqual([]) }) - it("should create a object with empty state when prop def is 'state' ", () => { - const comp = getcomponent() - comp.props.data = "state" - - const { props, errors } = createProps(comp) - - expect(errors).toEqual([]) - expect(props.data[BB_STATE_BINDINGPATH]).toBeDefined() - expect(props.data[BB_STATE_BINDINGPATH]).toBe("") - }) - it("should create a object children array when children == true ", () => { const comp = getcomponent() comp.children = true diff --git a/packages/client/src/api/workflow/actions.js b/packages/client/src/api/workflow/actions.js index f7d4755fbf..794cb184bf 100644 --- a/packages/client/src/api/workflow/actions.js +++ b/packages/client/src/api/workflow/actions.js @@ -9,6 +9,7 @@ export default { ...context, [id]: args, } + return context }, NAVIGATE: () => { // TODO client navigation diff --git a/packages/client/tests/bindingDom.spec.js b/packages/client/tests/bindingDom.spec.js deleted file mode 100644 index 2013803d27..0000000000 --- a/packages/client/tests/bindingDom.spec.js +++ /dev/null @@ -1,363 +0,0 @@ -import { load, makePage, makeScreen } from "./testAppDef" -import { EVENT_TYPE_MEMBER_NAME } from "../src/state/eventHandlers" - -describe("initialiseApp (binding)", () => { - it("should populate root element prop from store value", async () => { - const { dom } = await load( - makePage({ - _component: "testlib/div", - className: { - "##bbstate": "divClassName", - "##bbsource": "state", - "##bbstatefallback": "default", - }, - }) - ) - - const rootDiv = dom.window.document.body.children[0] - expect(rootDiv.className.includes("default")).toBe(true) - }) - - it("should update root element from store", async () => { - const { dom, app } = await load( - makePage({ - _component: "testlib/div", - className: { - "##bbstate": "divClassName", - "##bbsource": "state", - "##bbstatefallback": "default", - }, - }) - ) - - app.pageStore().update(s => { - s.divClassName = "newvalue" - return s - }) - - const rootDiv = dom.window.document.body.children[0] - expect(rootDiv.className.includes("newvalue")).toBe(true) - }) - - it("should update root element from store, using binding expression", async () => { - const { dom, app } = await load( - makePage({ - _component: "testlib/div", - className: "state.divClassName", - }) - ) - - app.pageStore().update(s => { - s.divClassName = "newvalue" - return s - }) - - const rootDiv = dom.window.document.body.children[0] - expect(rootDiv.className.includes("newvalue")).toBe(true) - }) - - it("should populate child component with store value", async () => { - const { dom } = await load( - makePage({ - _component: "testlib/div", - _children: [ - { - _component: "testlib/h1", - text: { - "##bbstate": "headerOneText", - "##bbsource": "state", - "##bbstatefallback": "header one", - }, - }, - { - _component: "testlib/h1", - text: { - "##bbstate": "headerTwoText", - "##bbsource": "state", - "##bbstatefallback": "header two", - }, - }, - ], - }) - ) - - const rootDiv = dom.window.document.body.children[0] - - expect(rootDiv.children.length).toBe(2) - expect(rootDiv.children[0].tagName).toBe("H1") - expect(rootDiv.children[0].innerText).toBe("header one") - expect(rootDiv.children[1].tagName).toBe("H1") - expect(rootDiv.children[1].innerText).toBe("header two") - }) - - it("should populate child component with store value", async () => { - const { dom, app } = await load( - makePage({ - _component: "testlib/div", - _children: [ - { - _component: "testlib/h1", - text: { - "##bbstate": "headerOneText", - "##bbsource": "state", - "##bbstatefallback": "header one", - }, - }, - { - _component: "testlib/h1", - text: { - "##bbstate": "headerTwoText", - "##bbsource": "state", - "##bbstatefallback": "header two", - }, - }, - ], - }) - ) - - app.pageStore().update(s => { - s.headerOneText = "header 1 - new val" - s.headerTwoText = "header 2 - new val" - return s - }) - - const rootDiv = dom.window.document.body.children[0] - - expect(rootDiv.children.length).toBe(2) - expect(rootDiv.children[0].tagName).toBe("H1") - expect(rootDiv.children[0].innerText).toBe("header 1 - new val") - expect(rootDiv.children[1].tagName).toBe("H1") - expect(rootDiv.children[1].innerText).toBe("header 2 - new val") - }) - - it("should populate screen child with store value", async () => { - const { dom, app } = await load( - makePage({ - _component: "testlib/div", - _children: [ - { - _component: "##builtin/screenslot", - text: "header one", - }, - ], - }), - [ - makeScreen("/", { - _component: "testlib/div", - className: "screen-class", - _children: [ - { - _component: "testlib/h1", - text: { - "##bbstate": "headerOneText", - "##bbsource": "state", - "##bbstatefallback": "header one", - }, - }, - { - _component: "testlib/h1", - text: { - "##bbstate": "headerTwoText", - "##bbsource": "state", - "##bbstatefallback": "header two", - }, - }, - ], - }), - ] - ) - - app.screenStore().update(s => { - s.headerOneText = "header 1 - new val" - s.headerTwoText = "header 2 - new val" - return s - }) - - const rootDiv = dom.window.document.body.children[0] - expect(rootDiv.children.length).toBe(1) - - const screenRoot = rootDiv.children[0] - - expect(screenRoot.children.length).toBe(1) - expect(screenRoot.children[0].children.length).toBe(2) - expect(screenRoot.children[0].children[0].innerText).toBe( - "header 1 - new val" - ) - expect(screenRoot.children[0].children[1].innerText).toBe( - "header 2 - new val" - ) - }) - - it("should fire events", async () => { - const { dom, app } = await load( - makePage({ - _component: "testlib/button", - onClick: [ - event("Set State", { - path: "address", - value: "123 Main Street", - }), - ], - }) - ) - - const button = dom.window.document.body.children[0] - expect(button.tagName).toBe("BUTTON") - - let storeAddress - app.pageStore().subscribe(s => { - storeAddress = s.address - }) - button.dispatchEvent(new dom.window.Event("click")) - expect(storeAddress).toBe("123 Main Street") - }) - - it("should alter event parameters based on store values", async () => { - const { dom, app } = await load( - makePage({ - _component: "testlib/button", - onClick: [ - event("Set State", { - path: "address", - value: { - "##bbstate": "sourceaddress", - "##bbsource": "state", - "##bbstatefallback": "fallback address", - }, - }), - ], - }) - ) - - const button = dom.window.document.body.children[0] - expect(button.tagName).toBe("BUTTON") - - let storeAddress - app.pageStore().subscribe(s => { - storeAddress = s.address - }) - - button.dispatchEvent(new dom.window.Event("click")) - expect(storeAddress).toBe("fallback address") - - app.pageStore().update(s => { - s.sourceaddress = "new address" - return s - }) - - button.dispatchEvent(new dom.window.Event("click")) - expect(storeAddress).toBe("new address") - }) - - it("should take event parameters from context values", async () => { - const { dom, app } = await load( - makePage({ - _component: "testlib/button", - _id: "with_context", - onClick: [ - event("Set State", { - path: "address", - value: { - "##bbstate": "testKey", - "##bbsource": "context", - "##bbstatefallback": "fallback address", - }, - }), - ], - }) - ) - - const button = dom.window.document.body.children[0] - expect(button.tagName).toBe("BUTTON") - - let storeAddress - app.pageStore().subscribe(s => { - storeAddress = s.address - }) - - button.dispatchEvent(new dom.window.Event("click")) - expect(storeAddress).toBe("test value") - }) -}) - -it("should rerender components when their code is bound to the store ", async () => { - const { dom, app } = await load( - makePage({ - _component: "testlib/div", - _children: [ - { - _component: "testlib/div", - _id: "n_clones_based_on_store", - className: "child_div", - }, - ], - }) - ) - - const rootDiv = dom.window.document.body.children[0] - expect(rootDiv.tagName).toBe("DIV") - expect(rootDiv.children.length).toBe(0) - - app.pageStore().update(s => { - s.componentCount = 3 - return s - }) - - expect(rootDiv.children.length).toBe(3) - expect(rootDiv.children[0].className.includes("child_div")).toBe(true) - - app.pageStore().update(s => { - s.componentCount = 5 - return s - }) - - expect(rootDiv.children.length).toBe(5) - expect(rootDiv.children[0].className.includes("child_div")).toBe(true) - - app.pageStore().update(s => { - s.componentCount = 0 - return s - }) - - expect(rootDiv.children.length).toBe(0) -}) - -it("should be able to read value from context, passed fromm parent, through code", async () => { - const { dom, app } = await load( - makePage({ - _component: "testlib/div", - _children: [ - { - _component: "testlib/div", - _id: "n_clones_based_on_store", - className: { - "##bbstate": "index", - "##bbsource": "context", - "##bbstatefallback": "nothing", - }, - }, - ], - }) - ) - - const rootDiv = dom.window.document.body.children[0] - expect(rootDiv.tagName).toBe("DIV") - expect(rootDiv.children.length).toBe(0) - - app.pageStore().update(s => { - s.componentCount = 3 - return s - }) - - expect(rootDiv.children.length).toBe(3) - expect(rootDiv.children[0].className.includes("index_0")).toBe(true) - expect(rootDiv.children[1].className.includes("index_1")).toBe(true) - expect(rootDiv.children[2].className.includes("index_2")).toBe(true) -}) - -const event = (handlerType, parameters) => { - const e = {} - e[EVENT_TYPE_MEMBER_NAME] = handlerType - e.parameters = parameters - return e -} diff --git a/packages/client/tests/domControlFlow.spec.js b/packages/client/tests/domControlFlow.spec.js deleted file mode 100644 index 3c817d859d..0000000000 --- a/packages/client/tests/domControlFlow.spec.js +++ /dev/null @@ -1,74 +0,0 @@ -import { load, makePage } from "./testAppDef" - -describe("controlFlow", () => { - it("should display simple div, with always true render function", async () => { - const { dom } = await load( - makePage({ - _component: "testlib/div", - className: "my-test-class", - _id: "always_render", - }) - ) - - expect(dom.window.document.body.children.length).toBe(1) - const child = dom.window.document.body.children[0] - expect(child.className.includes("my-test-class")).toBeTruthy() - }) - - it("should not display div, with always false render function", async () => { - const { dom } = await load( - makePage({ - _component: "testlib/div", - className: "my-test-class", - _id: "never_render", - }) - ) - - expect(dom.window.document.body.children.length).toBe(0) - }) - - it("should display 3 divs in a looped render function", async () => { - const { dom } = await load( - makePage({ - _component: "testlib/div", - className: "my-test-class", - _id: "three_clones", - }) - ) - - expect(dom.window.document.body.children.length).toBe(3) - - const child0 = dom.window.document.body.children[0] - expect(child0.className.includes("my-test-class")).toBeTruthy() - - const child1 = dom.window.document.body.children[1] - expect(child1.className.includes("my-test-class")).toBeTruthy() - - const child2 = dom.window.document.body.children[2] - expect(child2.className.includes("my-test-class")).toBeTruthy() - }) - - it("should display 3 div, in a looped render, as children", async () => { - const { dom } = await load( - makePage({ - _component: "testlib/div", - _children: [ - { - _component: "testlib/div", - className: "my-test-class", - _id: "three_clones", - }, - ], - }) - ) - - expect(dom.window.document.body.children.length).toBe(1) - - const rootDiv = dom.window.document.body.children[0] - expect(rootDiv.children.length).toBe(3) - - expect(rootDiv.children[0].className.includes("my-test-class")).toBeTruthy() - expect(rootDiv.children[1].className.includes("my-test-class")).toBeTruthy() - expect(rootDiv.children[2].className.includes("my-test-class")).toBeTruthy() - }) -}) diff --git a/packages/server/src/api/controllers/view.js b/packages/server/src/api/controllers/view.js index 2f15d41570..9e847da358 100644 --- a/packages/server/src/api/controllers/view.js +++ b/packages/server/src/api/controllers/view.js @@ -11,7 +11,7 @@ const controller = { if ( !name.startsWith("all") && name !== "by_type" && - name !== "by_username" && + name !== "by_username" && name !== "by_workflow_trigger" ) { response.push({ From 0b6cac2bf9499c61ccd71f5ff85b88a5e9b98359 Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Mon, 1 Jun 2020 21:34:03 +0100 Subject: [PATCH 048/161] Formatting update --- packages/builder/src/builderStore/generate_css.js | 2 +- .../builder/src/components/common/Inputs/InputGroup.svelte | 1 - .../userInterface/ComponentsHierarchyChildren.svelte | 5 ++++- .../src/components/userInterface/propertyCategories.js | 6 +----- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/builder/src/builderStore/generate_css.js b/packages/builder/src/builderStore/generate_css.js index d2d6f40bdf..bc82cb48f1 100644 --- a/packages/builder/src/builderStore/generate_css.js +++ b/packages/builder/src/builderStore/generate_css.js @@ -1,4 +1,4 @@ -import {toNumber} from "lodash/fp" +import { toNumber } from "lodash/fp" export const generate_screen_css = component_arr => { let styles = "" diff --git a/packages/builder/src/components/common/Inputs/InputGroup.svelte b/packages/builder/src/components/common/Inputs/InputGroup.svelte index f5497b2a26..95ebf1a3b4 100644 --- a/packages/builder/src/components/common/Inputs/InputGroup.svelte +++ b/packages/builder/src/components/common/Inputs/InputGroup.svelte @@ -28,7 +28,6 @@
    diff --git a/packages/builder/src/global.css b/packages/builder/src/global.css index dea20e4d26..10c1f376d6 100644 --- a/packages/builder/src/global.css +++ b/packages/builder/src/global.css @@ -88,6 +88,8 @@ html, body { #app { height: 100%; + box-sizing: border-box; + overflow-y: hidden; } h1 { diff --git a/packages/builder/src/pages/[application]/_reset.svelte b/packages/builder/src/pages/[application]/_reset.svelte index 5e3e973ae7..b688662b0a 100644 --- a/packages/builder/src/pages/[application]/_reset.svelte +++ b/packages/builder/src/pages/[application]/_reset.svelte @@ -81,7 +81,7 @@ From e7b05cfd0117a21d42984d24d7fd4ca83778c844 Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Mon, 1 Jun 2020 22:16:12 +0100 Subject: [PATCH 053/161] Frontend navigation panel tidy up - Additional margin around button - icon added to 'create screen' button - screen font weight reduced --- packages/builder/src/components/common/Switcher.svelte | 1 + .../userInterface/ComponentsHierarchy.svelte | 2 +- .../userInterface/FrontendNavigatePane.svelte | 10 ++++++++-- .../src/components/userInterface/PageLayout.svelte | 8 ++------ 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/builder/src/components/common/Switcher.svelte b/packages/builder/src/components/common/Switcher.svelte index b1c84e6eac..0253a7f9d3 100644 --- a/packages/builder/src/components/common/Switcher.svelte +++ b/packages/builder/src/components/common/Switcher.svelte @@ -61,6 +61,7 @@ font-weight: 700; color: var(--ink-lighter); margin-right: 20px; + background: none; } .switcher > .selected { diff --git a/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte b/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte index 7a2e38d3d2..041377aedc 100644 --- a/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte +++ b/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte @@ -80,7 +80,7 @@ margin-left: 10px; margin-top: 2px; font-size: 14px; - font-weight: 500; + font-weight: 400; } .icon { diff --git a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte index 86804885ff..f567766b50 100644 --- a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte +++ b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte @@ -14,7 +14,7 @@ - + @@ -31,7 +31,7 @@ border-radius: 3px; width: 100%; padding: 8px 16px; - margin: 12px 0px; + margin: 20px 0px 12px 0px; display: flex; justify-content: center; align-items: center; @@ -45,4 +45,10 @@ .newscreen:hover { background: var(--grey-light); } + + .icon { + color: var(--ink); + font-size: 16px; + margin-right: 4px; + } diff --git a/packages/builder/src/components/userInterface/PageLayout.svelte b/packages/builder/src/components/userInterface/PageLayout.svelte index 093dd12e4e..d63f8f7dc1 100644 --- a/packages/builder/src/components/userInterface/PageLayout.svelte +++ b/packages/builder/src/components/userInterface/PageLayout.svelte @@ -40,7 +40,7 @@ } -
    +
    {/if} -
    diff --git a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte index f567766b50..59fc13bcd1 100644 --- a/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte +++ b/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte @@ -14,7 +14,10 @@ - + diff --git a/packages/builder/src/components/userInterface/PageLayout.svelte b/packages/builder/src/components/userInterface/PageLayout.svelte index d63f8f7dc1..c2ad4b590b 100644 --- a/packages/builder/src/components/userInterface/PageLayout.svelte +++ b/packages/builder/src/components/userInterface/PageLayout.svelte @@ -40,29 +40,27 @@ } +
    + + + + + Master Screen +
    -
    - - - - - Master Screen -
    - - {#if $store.currentPreviewItem.name === _layout.title && _layout.component.props._children} - - {/if} +{#if $store.currentPreviewItem.name === _layout.title && _layout.component.props._children} + +{/if} diff --git a/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte index d629630099..08bf2d72db 100644 --- a/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte @@ -2,6 +2,7 @@ import { backendUiStore, store } from "builderStore" import ComponentSelector from "./ParamInputs/ComponentSelector.svelte" import ModelSelector from "./ParamInputs/ModelSelector.svelte" + import RecordSelector from "./ParamInputs/RecordSelector.svelte" export let workflowBlock @@ -51,6 +52,8 @@ bind:value={workflowBlock.args[parameter]} /> {:else if type === 'model'} + {:else if type === 'record'} + {:else if type === 'string'} {{model.name}}
    record", + tagline: "Save a {{record.model.name}} record", icon: "ri-save-3-fill", description: "Save a record to your database.", environment: "SERVER", params: { - model: "model", + record: "record", + }, + args: { + record: {}, }, }, DELETE_RECORD: { description: "Delete a record from your database.", icon: "ri-delete-bin-line", name: "Delete Record", - tagline: "Delete a {{model.name}} record", + tagline: "Delete a {{record.model.name}} record", environment: "SERVER", params: { - record: "string", + record: "record", + }, + args: { + record: {}, }, }, FIND_RECORD: { description: "Find a record in your database.", + tagline: "Find a {{record.model.name}} record", icon: "ri-search-line", name: "Find Record", environment: "SERVER", diff --git a/packages/client/src/state/setState.js b/packages/client/src/state/setState.js index ad25b631d5..ac17b1a681 100644 --- a/packages/client/src/state/setState.js +++ b/packages/client/src/state/setState.js @@ -8,4 +8,4 @@ export const setState = (path, value) => { state = set(path, value, state) return state }) -} \ No newline at end of file +} diff --git a/packages/client/src/state/stateManager.js b/packages/client/src/state/stateManager.js index 5d32f5a486..5dd0d9957d 100644 --- a/packages/client/src/state/stateManager.js +++ b/packages/client/src/state/stateManager.js @@ -33,7 +33,7 @@ export const createStateManager = ({ const getCurrentState = () => currentState const bb = bbFactory({ - store: appStore, + store: appStore, getCurrentState, frontendDefinition, componentLibraries, @@ -65,7 +65,7 @@ const _setup = ({ handlerTypes, getCurrentState, bb, store }) => node => { const isBound = typeof propValue === "string" && propValue.startsWith("{{") if (isBound) { - console.log("NODE IS BOUND", node); + console.log("NODE IS BOUND", node) initialProps[propName] = mustache.render(propValue, { state: currentStoreState, context, From 074cb2a886154a3f50532df5dff042e4a871e8e1 Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Tue, 2 Jun 2020 06:32:57 +0100 Subject: [PATCH 057/161] placeholder for "no model selected" --- .../backend/database/[selectedDatabase]/index.svelte | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte b/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte index 30988662ea..0bfa7f591f 100644 --- a/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte +++ b/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte @@ -40,8 +40,10 @@ {/if}
    -{#if $backendUiStore.selectedDatabase._id} +{#if $backendUiStore.selectedDatabase._id && $backendUiStore.selectedModel.name} +{:else} +

    Start building - create your first model >>>

    {/if} diff --git a/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js b/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js index d3b19d1e00..5fd281f015 100644 --- a/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js +++ b/packages/builder/src/components/workflow/WorkflowPanel/blockDefinitions.js @@ -46,16 +46,16 @@ const ACTION = { record: {}, }, }, - FIND_RECORD: { - description: "Find a record in your database.", - tagline: "Find a {{record.model.name}} record", - icon: "ri-search-line", - name: "Find Record", - environment: "SERVER", - params: { - record: "string", - }, - }, + // FIND_RECORD: { + // description: "Find a record in your database.", + // tagline: "Find a {{record.model.name}} record", + // icon: "ri-search-line", + // name: "Find Record", + // environment: "SERVER", + // params: { + // record: "string", + // }, + // }, CREATE_USER: { description: "Create a new user.", tagline: "Create user {{username}}", diff --git a/packages/client/src/api/workflow/index.js b/packages/client/src/api/workflow/index.js index 6d6d12a97e..4a2cac6fd8 100644 --- a/packages/client/src/api/workflow/index.js +++ b/packages/client/src/api/workflow/index.js @@ -5,7 +5,7 @@ import Orchestrator from "./orchestrator" import clientActions from "./actions" // Execute a workflow from a running budibase app -export const clientStrategy = ({ api, instanceId }) => ({ +export const clientStrategy = ({ api }) => ({ context: {}, bindContextArgs: function(args) { const mappedArgs = { ...args } @@ -40,7 +40,7 @@ export const clientStrategy = ({ api, instanceId }) => ({ // this workflow block gets executed on the server if (block.environment === "SERVER") { - const EXECUTE_WORKFLOW_URL = `/api/${instanceId}/workflows/action` + const EXECUTE_WORKFLOW_URL = `/api/workflows/action` const response = await api.post({ url: EXECUTE_WORKFLOW_URL, body: { @@ -58,8 +58,8 @@ export const clientStrategy = ({ api, instanceId }) => ({ }, }) -export const triggerWorkflow = api => async ({ workflow, instanceId }) => { - const workflowOrchestrator = new Orchestrator(api, instanceId) +export const triggerWorkflow = api => async ({ workflow }) => { + const workflowOrchestrator = new Orchestrator(api) workflowOrchestrator.strategy = clientStrategy const EXECUTE_WORKFLOW_URL = `/api/workflows/${workflow}` diff --git a/packages/client/src/api/workflow/orchestrator.js b/packages/client/src/api/workflow/orchestrator.js index df0520409a..b1d17fac59 100644 --- a/packages/client/src/api/workflow/orchestrator.js +++ b/packages/client/src/api/workflow/orchestrator.js @@ -1,8 +1,3 @@ -import { get } from "svelte/store" -import mustache from "mustache" -import { appStore } from "../../state/store" -import clientActions from "./actions" - /** * The workflow orchestrator is a class responsible for executing workflows. * It relies on the strategy pattern, which allows composable behaviour to be @@ -11,13 +6,12 @@ import clientActions from "./actions" * */ export default class Orchestrator { - constructor(api, instanceId) { + constructor(api) { this.api = api - this.instanceId = instanceId } set strategy(strategy) { - this._strategy = strategy({ api: this.api, instanceId: this.instanceId }) + this._strategy = strategy({ api: this.api }) } async execute(workflow) { @@ -26,59 +20,3 @@ export default class Orchestrator { } } } - -// Execute a workflow from a running budibase app -export const clientStrategy = ({ api, instanceId }) => ({ - context: {}, - bindContextArgs: function(args) { - const mappedArgs = { ...args } - - // bind the workflow action args to the workflow context, if required - for (let arg in args) { - const argValue = args[arg] - - // We don't want to render mustache templates on non-strings - if (typeof argValue !== "string") continue - - // Render the string with values from the workflow context and state - mappedArgs[arg] = mustache.render(argValue, { - context: this.context, - state: get(appStore), - }) - } - - return mappedArgs - }, - run: async function(workflow) { - for (let block of workflow.steps) { - console.log("Executing workflow block", block) - - // This code gets run in the browser - if (block.environment === "CLIENT") { - const action = clientActions[block.actionId] - await action({ - context: this.context, - args: this.bindContextArgs(block.args), - id: block.id, - }) - } - - // this workflow block gets executed on the server - if (block.environment === "SERVER") { - const EXECUTE_WORKFLOW_URL = `/api/${instanceId}/workflows/action` - const response = await api.post({ - url: EXECUTE_WORKFLOW_URL, - body: { - action: block.actionId, - args: this.bindContextArgs(block.args, api), - }, - }) - - this.context = { - ...this.context, - [block.actionId]: response, - } - } - } - }, -}) diff --git a/packages/client/src/state/stateManager.js b/packages/client/src/state/stateManager.js index 5dd0d9957d..8e777ca4b9 100644 --- a/packages/client/src/state/stateManager.js +++ b/packages/client/src/state/stateManager.js @@ -65,7 +65,6 @@ const _setup = ({ handlerTypes, getCurrentState, bb, store }) => node => { const isBound = typeof propValue === "string" && propValue.startsWith("{{") if (isBound) { - console.log("NODE IS BOUND", node) initialProps[propName] = mustache.render(propValue, { state: currentStoreState, context, diff --git a/packages/server/src/api/controllers/record.js b/packages/server/src/api/controllers/record.js index 08009f0031..5fab413f04 100644 --- a/packages/server/src/api/controllers/record.js +++ b/packages/server/src/api/controllers/record.js @@ -43,10 +43,11 @@ exports.save = async function(ctx) { const response = await db.post(record) record._rev = response.rev - ctx.eventEmitter.emit(`record:save`, { - record, - instanceId: ctx.params.instanceId, - }) + ctx.eventEmitter && + ctx.eventEmitter.emit(`record:save`, { + record, + instanceId: ctx.params.instanceId, + }) ctx.body = record ctx.status = 200 ctx.message = `${model.name} created successfully` @@ -86,7 +87,7 @@ exports.destroy = async function(ctx) { return } ctx.body = await db.remove(ctx.params.recordId, ctx.params.revId) - ctx.eventEmitter.emit(`record:delete`, record) + ctx.eventEmitter && ctx.eventEmitter.emit(`record:delete`, record) } exports.validate = async function(ctx) { diff --git a/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js b/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js index f53cf2c716..be78275133 100644 --- a/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js +++ b/packages/server/src/api/controllers/workflow/actions/CREATE_USER.js @@ -1,14 +1,12 @@ const userController = require("../../user") -module.exports = async function createUser(user) { - console.log("SAVING this user", user) - +module.exports = async function createUser({ args, instanceId }) { const ctx = { params: { - instanceId: "inst_60dd510_700f7dc06735403e81d5af91072d7241", + instanceId, }, request: { - body: user, + body: args.user, }, } diff --git a/packages/server/src/api/controllers/workflow/actions/CUSTOM_JS.js b/packages/server/src/api/controllers/workflow/actions/CUSTOM_JS.js deleted file mode 100644 index 73072f2ac9..0000000000 --- a/packages/server/src/api/controllers/workflow/actions/CUSTOM_JS.js +++ /dev/null @@ -1,9 +0,0 @@ -export default async function() { - const response = await fetch("www.google.com") - console.log(response) - console.log("CUSTOM ACTION") - return { - message: "CUSTOM_WORKFLOW_SCRIPT", - response, - } -} diff --git a/packages/server/src/api/controllers/workflow/actions/SAVE_RECORD.js b/packages/server/src/api/controllers/workflow/actions/SAVE_RECORD.js index 20d70850a3..45e0c1ee65 100644 --- a/packages/server/src/api/controllers/workflow/actions/SAVE_RECORD.js +++ b/packages/server/src/api/controllers/workflow/actions/SAVE_RECORD.js @@ -1,18 +1,29 @@ const recordController = require("../../record") -module.exports = async function saveRecord(args) { +module.exports = async function saveRecord({ args, instanceId }) { + const { model, ...record } = args.record + const ctx = { params: { - instanceId: "inst_60dd510_700f7dc06735403e81d5af91072d7241", + instanceId, + modelId: model._id, }, request: { - body: args.record, + body: record, }, } await recordController.save(ctx) - return { - record: ctx.body, + try { + return { + record: ctx.body, + } + } catch (err) { + console.error(err) + return { + record: null, + error: err.message, + } } } diff --git a/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js b/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js index b56e95defa..39cb7a8432 100644 --- a/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js +++ b/packages/server/src/api/controllers/workflow/actions/SEND_EMAIL.js @@ -2,7 +2,7 @@ const sgMail = require("@sendgrid/mail") sgMail.setApiKey(process.env.SENDGRID_API_KEY) -module.exports = async function sendEmail(args) { +module.exports = async function sendEmail({ args }) { const msg = { to: args.to, from: args.from, @@ -20,7 +20,7 @@ module.exports = async function sendEmail(args) { console.error(err) return { success: false, - err, + error: err.message, } } } diff --git a/packages/server/src/api/controllers/workflow/index.js b/packages/server/src/api/controllers/workflow/index.js index 4c5394ab2f..f1dd1bcb89 100644 --- a/packages/server/src/api/controllers/workflow/index.js +++ b/packages/server/src/api/controllers/workflow/index.js @@ -54,8 +54,12 @@ exports.find = async function(ctx) { } exports.executeAction = async function(ctx) { - const workflowAction = require(`./actions/${ctx.request.body.action}`) - const response = await workflowAction(ctx.request.body.args) + const { args, action } = ctx.request.body + const workflowAction = require(`./actions/${action}`) + const response = await workflowAction({ + args, + instanceId: ctx.user.instanceId, + }) ctx.body = response } diff --git a/packages/server/src/api/routes/workflow.js b/packages/server/src/api/routes/workflow.js index 2420e4cb52..fcb1d6e182 100644 --- a/packages/server/src/api/routes/workflow.js +++ b/packages/server/src/api/routes/workflow.js @@ -15,7 +15,7 @@ router ) .put("/api/:instanceId/workflows", authorized(BUILDER), controller.update) .post("/api/:instanceId/workflows", authorized(BUILDER), controller.create) - .post("/api/:instanceId/workflows/action", controller.executeAction) + .post("/api/workflows/action", controller.executeAction) .delete( "/api/:instanceId/workflows/:id/:rev", authorized(BUILDER), diff --git a/packages/server/src/electron.js b/packages/server/src/electron.js index 96fe7cd6c3..d496c276cc 100644 --- a/packages/server/src/electron.js +++ b/packages/server/src/electron.js @@ -1,4 +1,4 @@ -const { app, BrowserWindow } = require("electron") +const { app, BrowserWindow, shell } = require("electron") const { join } = require("path") const { homedir } = require("os") const isDev = require("electron-is-dev") @@ -18,6 +18,11 @@ const APP_TITLE = "Budibase Builder" let win +function handleRedirect(e, url) { + e.preventDefault() + shell.openExternal(url) +} + async function createWindow() { app.server = await require("./app")() win = new BrowserWindow({ width: 1920, height: 1080 }) @@ -28,6 +33,10 @@ async function createWindow() { } else { autoUpdater.checkForUpdatesAndNotify() } + + // open _blank in default browser + win.webContents.on("new-window", handleRedirect) + win.webContents.on("will-navigate", handleRedirect) } app.whenReady().then(createWindow) From b32336eed464a18c9f018244ce401022935372c9 Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Tue, 2 Jun 2020 11:11:53 +0100 Subject: [PATCH 065/161] bugfix: #284 styles not applied on component copy --- packages/builder/src/builderStore/store/index.js | 16 +++++----------- packages/builder/src/builderStore/storeUtils.js | 8 ++++++++ .../userInterface/ComponentDropdownMenu.svelte | 9 +++++---- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/packages/builder/src/builderStore/store/index.js b/packages/builder/src/builderStore/store/index.js index f94cea2399..61d58a2e00 100644 --- a/packages/builder/src/builderStore/store/index.js +++ b/packages/builder/src/builderStore/store/index.js @@ -23,6 +23,7 @@ import { savePage as _savePage, saveCurrentPreviewItem as _saveCurrentPreviewItem, saveScreenApi as _saveScreenApi, + regenerateCssForCurentScreen, } from "../storeUtils" export const getStore = () => { @@ -174,11 +175,10 @@ const createScreen = store => (screenName, route, layoutComponentName) => { const setCurrentScreen = store => screenName => { store.update(s => { const screen = getExactComponent(s.screens, screenName) - screen._css = generate_screen_css([screen.props]) s.currentPreviewItem = screen s.currentFrontEndType = "screen" s.currentView = "detail" - + regenerateCssForCurentScreen(s) const safeProps = makePropsSafe( s.components[screen.props._component], screen.props @@ -296,9 +296,7 @@ const setCurrentPage = store => pageName => { state.currentComponentInfo = safeProps currentPage.props = safeProps state.currentPreviewItem = state.pages[pageName] - state.currentPreviewItem._css = generate_screen_css([ - state.currentPreviewItem.props, - ]) + regenerateCssForCurentScreen(state) for (let screen of state.screens) { screen._css = generate_screen_css([screen.props]) @@ -375,9 +373,7 @@ const addTemplatedComponent = store => props => { state.currentComponentInfo._children = state.currentComponentInfo._children.concat( props ) - state.currentPreviewItem._css = generate_screen_css([ - state.currentPreviewItem.props, - ]) + regenerateCssForCurentScreen(state) setCurrentPageFunctions(state) _saveCurrentPreviewItem(state) @@ -411,9 +407,7 @@ const setComponentStyle = store => (type, name, value) => { } state.currentComponentInfo._styles[type][name] = value - state.currentPreviewItem._css = generate_screen_css([ - state.currentPreviewItem.props, - ]) + regenerateCssForCurentScreen(state) // save without messing with the store _saveCurrentPreviewItem(state) diff --git a/packages/builder/src/builderStore/storeUtils.js b/packages/builder/src/builderStore/storeUtils.js index 68e20e56b3..1ec9d54063 100644 --- a/packages/builder/src/builderStore/storeUtils.js +++ b/packages/builder/src/builderStore/storeUtils.js @@ -1,5 +1,6 @@ import { makePropsSafe } from "components/userInterface/pagesParsing/createProps" import api from "./api" +import { generate_screen_css } from "./generate_css" export const selectComponent = (state, component) => { const componentDef = component._component.startsWith("##") @@ -57,3 +58,10 @@ export const walkProps = (props, action, cancelToken = null) => { } } } + +export const regenerateCssForCurentScreen = state => { + state.currentPreviewItem._css = generate_screen_css([ + state.currentPreviewItem.props, + ]) + return state +} diff --git a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte index b7cb74fb3c..94c60fd93d 100644 --- a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte +++ b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte @@ -10,6 +10,7 @@ getParent, walkProps, saveCurrentPreviewItem, + regenerateCssForCurentScreen, } from "builderStore/storeUtils" import { uuid } from "builderStore/uuid" @@ -29,8 +30,7 @@ $: noChildrenAllowed = !component || getComponentDefinition($store, component._component).children === false - $: noPaste = - !$store.componentToPaste || $store.componentToPaste._id === component._id + $: noPaste = !$store.componentToPaste const lastPartOfName = c => (c ? last(c._component.split("/")) : "") @@ -86,6 +86,7 @@ parent._children = [...parent._children, copiedComponent] saveCurrentPreviewItem(s) s.currentComponentInfo = copiedComponent + regenerateCssForCurentScreen(s) return s }) } @@ -141,10 +142,10 @@ const targetIndex = parent._children.indexOf(component) const index = mode === "above" ? targetIndex : targetIndex + 1 parent._children.splice(index, 0, cloneDeep(componentToPaste)) - + regenerateCssForCurentScreen(s) saveCurrentPreviewItem(s) selectComponent(s, componentToPaste) - + return s }) } From a95e2447676d6cf651a58ba4c4d93f50135ac0f8 Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Tue, 2 Jun 2020 11:12:36 +0100 Subject: [PATCH 066/161] bugfix: left-nav not scrolling on windows --- packages/builder/src/components/common/Switcher.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/builder/src/components/common/Switcher.svelte b/packages/builder/src/components/common/Switcher.svelte index 23ced65692..391f4d7048 100644 --- a/packages/builder/src/components/common/Switcher.svelte +++ b/packages/builder/src/components/common/Switcher.svelte @@ -72,6 +72,7 @@ .panel { min-height: 0; + height: 100%; overflow-y: auto; } From 50bdb7801fdf381d6c7403f6f9beac273cc1bee2 Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Tue, 2 Jun 2020 11:16:30 +0100 Subject: [PATCH 067/161] wee typo --- packages/builder/src/builderStore/store/index.js | 10 +++++----- packages/builder/src/builderStore/storeUtils.js | 2 +- .../userInterface/ComponentDropdownMenu.svelte | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/builder/src/builderStore/store/index.js b/packages/builder/src/builderStore/store/index.js index 61d58a2e00..9181224c3d 100644 --- a/packages/builder/src/builderStore/store/index.js +++ b/packages/builder/src/builderStore/store/index.js @@ -23,7 +23,7 @@ import { savePage as _savePage, saveCurrentPreviewItem as _saveCurrentPreviewItem, saveScreenApi as _saveScreenApi, - regenerateCssForCurentScreen, + regenerateCssForCurrentScreen, } from "../storeUtils" export const getStore = () => { @@ -178,7 +178,7 @@ const setCurrentScreen = store => screenName => { s.currentPreviewItem = screen s.currentFrontEndType = "screen" s.currentView = "detail" - regenerateCssForCurentScreen(s) + regenerateCssForCurrentScreen(s) const safeProps = makePropsSafe( s.components[screen.props._component], screen.props @@ -296,7 +296,7 @@ const setCurrentPage = store => pageName => { state.currentComponentInfo = safeProps currentPage.props = safeProps state.currentPreviewItem = state.pages[pageName] - regenerateCssForCurentScreen(state) + regenerateCssForCurrentScreen(state) for (let screen of state.screens) { screen._css = generate_screen_css([screen.props]) @@ -373,7 +373,7 @@ const addTemplatedComponent = store => props => { state.currentComponentInfo._children = state.currentComponentInfo._children.concat( props ) - regenerateCssForCurentScreen(state) + regenerateCssForCurrentScreen(state) setCurrentPageFunctions(state) _saveCurrentPreviewItem(state) @@ -407,7 +407,7 @@ const setComponentStyle = store => (type, name, value) => { } state.currentComponentInfo._styles[type][name] = value - regenerateCssForCurentScreen(state) + regenerateCssForCurrentScreen(state) // save without messing with the store _saveCurrentPreviewItem(state) diff --git a/packages/builder/src/builderStore/storeUtils.js b/packages/builder/src/builderStore/storeUtils.js index 1ec9d54063..d6aa4d0308 100644 --- a/packages/builder/src/builderStore/storeUtils.js +++ b/packages/builder/src/builderStore/storeUtils.js @@ -59,7 +59,7 @@ export const walkProps = (props, action, cancelToken = null) => { } } -export const regenerateCssForCurentScreen = state => { +export const regenerateCssForCurrentScreen = state => { state.currentPreviewItem._css = generate_screen_css([ state.currentPreviewItem.props, ]) diff --git a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte index 94c60fd93d..cfdf01be84 100644 --- a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte +++ b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte @@ -10,7 +10,7 @@ getParent, walkProps, saveCurrentPreviewItem, - regenerateCssForCurentScreen, + regenerateCssForCurrentScreen, } from "builderStore/storeUtils" import { uuid } from "builderStore/uuid" @@ -86,7 +86,7 @@ parent._children = [...parent._children, copiedComponent] saveCurrentPreviewItem(s) s.currentComponentInfo = copiedComponent - regenerateCssForCurentScreen(s) + regenerateCssForCurrentScreen(s) return s }) } @@ -142,7 +142,7 @@ const targetIndex = parent._children.indexOf(component) const index = mode === "above" ? targetIndex : targetIndex + 1 parent._children.splice(index, 0, cloneDeep(componentToPaste)) - regenerateCssForCurentScreen(s) + regenerateCssForCurrentScreen(s) saveCurrentPreviewItem(s) selectComponent(s, componentToPaste) From fa2fcb0632c40b14b8a2831c5f5c530e0de3c96d Mon Sep 17 00:00:00 2001 From: Conor_Mack Date: Tue, 2 Jun 2020 11:19:22 +0100 Subject: [PATCH 068/161] Lint and testing --- .../builder/src/builderStore/store/index.js | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/packages/builder/src/builderStore/store/index.js b/packages/builder/src/builderStore/store/index.js index 9ac06a0a0d..9762ca4e27 100644 --- a/packages/builder/src/builderStore/store/index.js +++ b/packages/builder/src/builderStore/store/index.js @@ -1,4 +1,3 @@ - import { values } from "lodash/fp" import { backendUiStore } from "builderStore" import * as backendStoreActions from "./backend" @@ -120,28 +119,33 @@ const saveScreen = store => screen => { } const _saveScreen = async (store, s, screen) => { - const currentPageScreens = s.pages[s.currentPageName]._screens; + const currentPageScreens = s.pages[s.currentPageName]._screens - await api.post(`/_builder/api/${s.appId}/pages/${s.currentPageName}/screen`, screen).then(() => { - if (currentPageScreens.includes(screen)) return; + await api + .post(`/_builder/api/${s.appId}/pages/${s.currentPageName}/screen`, screen) + .then(() => { + if (currentPageScreens.includes(screen)) return - const screens = [ ...currentPageScreens, screen ]; + const screens = [...currentPageScreens, screen] - store.update((innerState) => { - innerState.pages[s.currentPageName]._screens = screens; - innerState.screens = screens; - innerState.currentPreviewItem = screen; - const safeProps = makePropsSafe(innerState.components[screen.props._component], screen.props); - innerState.currentComponentInfo = safeProps; - screen.props = safeProps; + store.update(innerState => { + innerState.pages[s.currentPageName]._screens = screens + innerState.screens = screens + innerState.currentPreviewItem = screen + const safeProps = makePropsSafe( + innerState.components[screen.props._component], + screen.props + ) + innerState.currentComponentInfo = safeProps + screen.props = safeProps - _savePage(innerState); - return innerState; - }); - }); + _savePage(innerState) + return innerState + }) + }) - return s; -}; + return s +} const createScreen = store => (screenName, route, layoutComponentName) => { store.update(state => { From f85bcf0625f166e15490f79ef02c39d181f51852 Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Tue, 2 Jun 2020 11:26:28 +0100 Subject: [PATCH 069/161] yarn lock --- packages/server/yarn.lock | 190 +------------------------------------- 1 file changed, 2 insertions(+), 188 deletions(-) diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index f6a2dd4dac..db51c0d834 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -194,20 +194,6 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@budibase/client@^0.0.32": - version "0.0.32" - resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.0.32.tgz#76d9f147563a0bf939eae7f32ce75b2a527ba496" - integrity sha512-jmCCLn0CUoQbL6h623S5IqK6+GYLqX3WzUTZInSb1SCBOM3pI0eLP5HwTR6s7r42SfD0v9jTWRdyTnHiElNj8A== - dependencies: - "@nx-js/compiler-util" "^2.0.0" - bcryptjs "^2.4.3" - deep-equal "^2.0.1" - lodash "^4.17.15" - lunr "^2.3.5" - regexparam "^1.3.0" - shortid "^2.2.8" - svelte "^3.9.2" - "@budibase/core@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@budibase/core/-/core-0.0.32.tgz#c5d9ab869c5e9596a1ac337aaf041e795b1cc7fa" @@ -863,11 +849,6 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -940,13 +921,6 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== - dependencies: - array-filter "^1.0.0" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1669,26 +1643,6 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -deep-equal@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0" - integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA== - dependencies: - es-abstract "^1.17.5" - es-get-iterator "^1.1.0" - is-arguments "^1.0.4" - is-date-object "^1.0.2" - is-regex "^1.0.5" - isarray "^2.0.5" - object-is "^1.1.2" - object-keys "^1.1.1" - object.assign "^4.1.0" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" - which-boxed-primitive "^1.0.1" - which-collection "^1.0.1" - which-typed-array "^1.1.2" - deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -2047,7 +2001,7 @@ error-inject@^1.0.0: resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc= -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -2064,19 +2018,6 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstrac string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" -es-get-iterator@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== - dependencies: - es-abstract "^1.17.4" - has-symbols "^1.0.1" - is-arguments "^1.0.4" - is-map "^2.0.1" - is-set "^2.0.1" - is-string "^1.0.5" - isarray "^2.0.5" - es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3069,21 +3010,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" - integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -3091,11 +3022,6 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" - integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -3132,7 +3058,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1, is-date-object@^1.0.2: +is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== @@ -3207,21 +3133,11 @@ is-installed-globally@^0.3.1: global-dirs "^2.0.1" is-path-inside "^3.0.1" -is-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" - integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== - is-npm@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== -is-number-object@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3258,21 +3174,11 @@ is-regex@^1.0.5: dependencies: has "^1.0.3" -is-set@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" - integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-string@^1.0.4, is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -3289,31 +3195,11 @@ is-type-of@^1.0.0: is-class-hotfix "~0.0.6" isstream "~0.1.2" -is-typed-array@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" - integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== - dependencies: - available-typed-arrays "^1.0.0" - es-abstract "^1.17.4" - foreach "^2.0.5" - has-symbols "^1.0.1" - is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -is-weakset@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" - integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== - is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -3339,11 +3225,6 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - isbinaryfile@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" @@ -4756,14 +4637,6 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== -object-is@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -5485,19 +5358,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexparam@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f" - integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g== - regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -5826,14 +5686,6 @@ shortid@^2.2.8: dependencies: nanoid "^2.1.0" -side-channel@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" - integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== - dependencies: - es-abstract "^1.17.0-next.1" - object-inspect "^1.7.0" - signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -6242,11 +6094,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -svelte@^3.9.2: - version "3.23.0" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.23.0.tgz#bbcd6887cf588c24a975b14467455abfff9acd3f" - integrity sha512-cnyd96bK/Nw5DnYuB1hzm5cl6+I1fpmdKOteA7KLzU9KGLsLmvWsSkSKbcntzODCLmSySN3HjcgTHRo6/rJNTw== - symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -6732,44 +6579,11 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -which-boxed-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1" - integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ== - dependencies: - is-bigint "^1.0.0" - is-boolean-object "^1.0.0" - is-number-object "^1.0.3" - is-string "^1.0.4" - is-symbol "^1.0.2" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-typed-array@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" - integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== - dependencies: - available-typed-arrays "^1.0.2" - es-abstract "^1.17.5" - foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" - which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From 527a25c7943b87fa0af92ba8e452fe7bef3660dd Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Jun 2020 11:40:33 +0100 Subject: [PATCH 070/161] model bugfixes --- packages/builder/src/builderStore/store/backend.js | 4 ++-- packages/builder/src/components/common/Switcher.svelte | 2 +- .../src/components/nav/SchemaManagementDrawer.svelte | 2 +- .../components/userInterface/ComponentDropdownMenu.svelte | 2 +- .../userInterface/ComponentPropertiesPanel.svelte | 2 +- .../src/components/workflow/SetupPanel/SetupPanel.svelte | 8 ++++---- .../backend/database/[selectedDatabase]/index.svelte | 4 +++- packages/server/src/api/routes/view.js | 2 +- 8 files changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index f4f4c20fd2..9a5a7b1fbc 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -32,7 +32,7 @@ export const getBackendUiStore = () => { state.selectedDatabase = db if (models && models.length > 0) { state.selectedModel = models[0] - state.selectedView = `${models[0]._id}` + state.selectedView = `all_${models[0]._id}` } state.breadcrumbs = [db.name] state.models = models @@ -76,7 +76,7 @@ export const getBackendUiStore = () => { state.models.push(model) state.models = state.models state.selectedModel = model - state.selectedView = `${model._id}` + state.selectedView = `all_${model._id}` return state }), }, diff --git a/packages/builder/src/components/common/Switcher.svelte b/packages/builder/src/components/common/Switcher.svelte index 391f4d7048..484d52ee07 100644 --- a/packages/builder/src/components/common/Switcher.svelte +++ b/packages/builder/src/components/common/Switcher.svelte @@ -69,7 +69,7 @@ .switcher > .selected { color: var(--ink); } - + .panel { min-height: 0; height: 100%; diff --git a/packages/builder/src/components/nav/SchemaManagementDrawer.svelte b/packages/builder/src/components/nav/SchemaManagementDrawer.svelte index 5fb6ed6c25..cc9e5d86a7 100644 --- a/packages/builder/src/components/nav/SchemaManagementDrawer.svelte +++ b/packages/builder/src/components/nav/SchemaManagementDrawer.svelte @@ -46,7 +46,7 @@ function selectModel(model) { backendUiStore.update(state => { state.selectedModel = model - state.selectedView = `${model._id}` + state.selectedView = `all_${model._id}` return state }) } diff --git a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte index cfdf01be84..151f013ffe 100644 --- a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte +++ b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte @@ -145,7 +145,7 @@ regenerateCssForCurrentScreen(s) saveCurrentPreviewItem(s) selectComponent(s, componentToPaste) - + return s }) } diff --git a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte index ab02d0c4ff..02b8f986c7 100644 --- a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte +++ b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte @@ -107,7 +107,7 @@ display: flex; flex-direction: column; overflow-x: hidden; - overflow-y: hidden; + overflow-y: hidden; padding: 20px; box-sizing: border-box; } diff --git a/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte b/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte index 676aa18d77..7d681a9ac0 100644 --- a/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/SetupPanel.svelte @@ -12,13 +12,13 @@ const ACCESS_LEVELS = [ { name: "Admin", - key: "ADMIN" + key: "ADMIN", }, { name: "Power User", - key: "POWER_USER" - } - ]; + key: "POWER_USER", + }, + ] let selectedTab = "SETUP" let testResult diff --git a/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte b/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte index cc5260e4b1..3ebe117636 100644 --- a/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte +++ b/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte @@ -43,7 +43,9 @@ {#if $backendUiStore.selectedDatabase._id && $backendUiStore.selectedModel.name} {:else} - create your first model to start building + + create your first model to start building + {/if} diff --git a/packages/builder/src/components/common/Modal.svelte b/packages/builder/src/components/common/Modal.svelte index 807dcee922..c91c30827e 100644 --- a/packages/builder/src/components/common/Modal.svelte +++ b/packages/builder/src/components/common/Modal.svelte @@ -50,10 +50,10 @@ diff --git a/packages/builder/src/components/database/ModelDataTable/ModelDataTable.svelte b/packages/builder/src/components/database/ModelDataTable/ModelDataTable.svelte index 8a16d5d0b1..f1d49894a0 100644 --- a/packages/builder/src/components/database/ModelDataTable/ModelDataTable.svelte +++ b/packages/builder/src/components/database/ModelDataTable/ModelDataTable.svelte @@ -145,19 +145,19 @@ } table { - border: 1px solid #ccc; + border: 1px solid var(--grey-dark); background: #fff; border-radius: 3px; border-collapse: collapse; } thead { - background: #f9f9f9; - border: 1px solid #ccc; + background: var(--blue-light); + border: 1px solid var(--grey-dark); } thead th { - color: var(--button-text); + color: var(--ink); text-transform: capitalize; font-weight: 500; font-size: 14px; @@ -166,14 +166,14 @@ } tbody tr { - border-bottom: 1px solid #ccc; + border-bottom: 1px solid var(--grey-dark); transition: 0.3s background-color; - color: var(--secondary100); + color: var(--ink); font-size: 14px; } tbody tr:hover { - background: #fafafa; + background: var(--grey-light); } .table-controls { diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte index bd302df5b7..df1b27e426 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte @@ -35,7 +35,7 @@ } -
    +
    {#if !showFieldView}

    Create / Edit Model

    @@ -43,22 +43,20 @@

    Create / Edit Field

    {/if} -
    +
    {#if !showFieldView}
    -

    Settings

    - {#if $store.errors && $store.errors.length > 0} {/if} - - - +
    + +
    - Fields -

    (showFieldView = true)}> + Fields +
    (showFieldView = true)}> Add new field -

    +
    @@ -67,7 +65,6 @@ - @@ -90,9 +87,9 @@ {/each}
    Edit Name TypeValues
    -
    +
    Save -
    +
    {:else} .padding { - padding: 20px; + padding-top: 40px; + } + + .label { + font-size: 14px; + font-weight: 500; + } + + .textbox { + margin: 0px 40px 0px 40px; + font-size: 14px; + font-weight: 500; } .new-field { font-size: 16px; font-weight: bold; - color: var(--button-text); + color: var(--blue); } .fields-table { - margin: 1rem 1rem 0rem 0rem; + margin: 8px 40px 0px 40px; border-collapse: collapse; + width: 88%; } tbody > tr:hover { - background-color: var(--primary10); + background-color: var(--blue-light); } .table-controls { display: flex; justify-content: space-between; align-items: center; + margin: 0px 40px; } .ri-more-line:hover { cursor: pointer; } - heading { - padding: 20px 20px 0 20px; + .heading { + padding: 40px 40px 0 40px; display: flex; align-items: center; } h3 { margin: 0 0 0 10px; + color: var(--ink); + } + + footer { + margin: 40px 40px 0px 40px; + background-color: var(--grey-light); + padding: 20px 0px; + display: flex; + justify-content: flex-end; } diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte index 606310d44f..7ca59e87f2 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte @@ -39,51 +39,49 @@ } - +

    Create / Edit View

    - -
    -

    Settings

    - {#if $store.errors && $store.errors.length > 0} - - {/if} -
    -
    - +
    + + {#if $store.errors && $store.errors.length > 0} + + {/if} +
    +
    +
    + +
    +
    +
    + {#each Object.values(SNIPPET_EDITORS) as snippetType} + (currentSnippetEditor = snippetType)}> + {snippetType} + + {/each} + {#if currentSnippetEditor === SNIPPET_EDITORS.MAP} + + {:else if currentSnippetEditor === SNIPPET_EDITORS.FILTER} + + {:else if currentSnippetEditor === SNIPPET_EDITORS.REDUCE} + + {/if}
    - -

    Snippets

    - {#each Object.values(SNIPPET_EDITORS) as snippetType} - (currentSnippetEditor = snippetType)}> - {snippetType} - - {/each} - {#if currentSnippetEditor === SNIPPET_EDITORS.MAP} - - {:else if currentSnippetEditor === SNIPPET_EDITORS.FILTER} - - {:else if currentSnippetEditor === SNIPPET_EDITORS.REDUCE} - - {/if} - - Save - Delete +
    +
    + Delete +
    + Save +
    diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte index e81659f716..35b9563a03 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte @@ -52,7 +52,7 @@ } footer { padding: 20px; - background: #fafafa; + background: var(--grey-light); border-radius: 0.5rem; } From 780f791048e396293532adb742d35e8e4ed97286 Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Tue, 2 Jun 2020 20:55:15 +0100 Subject: [PATCH 085/161] Defeat I stand defeated to UIKit and its CSS shackles --- packages/builder/src/budibase.css | 2 +- .../src/components/common/ActionButton.svelte | 4 ++-- .../builder/src/components/common/Select.svelte | 10 ++++------ .../CreateEditModel/CreateEditModel.svelte | 10 ++++++---- .../modals/CreateEditModel/FieldView.svelte | 17 +++++++++++++---- .../ModelDataTable/modals/CreateEditView.svelte | 3 ++- 6 files changed, 28 insertions(+), 18 deletions(-) diff --git a/packages/builder/src/budibase.css b/packages/builder/src/budibase.css index 7aa47605f9..910a795cd2 100644 --- a/packages/builder/src/budibase.css +++ b/packages/builder/src/budibase.css @@ -117,7 +117,7 @@ } .budibase__table tr { - border-bottom: 1px solid var(--blue-light); + border-bottom: 1px solid var(--grey-light); } .button--toggled { diff --git a/packages/builder/src/components/common/ActionButton.svelte b/packages/builder/src/components/common/ActionButton.svelte index 153d00b6a6..96e7c6b6ae 100644 --- a/packages/builder/src/components/common/ActionButton.svelte +++ b/packages/builder/src/components/common/ActionButton.svelte @@ -42,13 +42,13 @@ .secondary { color: var(--ink); border: solid 1px var(--grey-dark); - background: none; + background: white; } .button { font-size: 14px; font-weight: 500; - border-radius: 5px; + border-radius: 3px; padding: 10px 20px; height: 40px; } diff --git a/packages/builder/src/components/common/Select.svelte b/packages/builder/src/components/common/Select.svelte index 39dbe6d059..e89b8006a5 100644 --- a/packages/builder/src/components/common/Select.svelte +++ b/packages/builder/src/components/common/Select.svelte @@ -20,11 +20,9 @@ diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte index df1b27e426..ecb35c23ba 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte @@ -88,7 +88,7 @@
    - Save + Save
    {:else} @@ -128,7 +128,7 @@ } tbody > tr:hover { - background-color: var(--blue-light); + background-color: var(--grey-light); } .table-controls { @@ -154,10 +154,12 @@ } footer { - margin: 40px 40px 0px 40px; background-color: var(--grey-light); - padding: 20px 0px; + margin-top: 40px; + padding: 20px 40px 20px 40px; display: flex; justify-content: flex-end; } + + diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/FieldView.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/FieldView.svelte index 2c3443ae56..c17a0ac9c8 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/FieldView.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/FieldView.svelte @@ -79,19 +79,28 @@
    +
    + Cancel +
    Save - Cancel
    diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte index 7ca59e87f2..873e34950a 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte @@ -96,6 +96,7 @@ .snippet-selector__heading { margin-right: 20px; font-size: 14px; + color: var(--ink-lighter); } .header { @@ -109,7 +110,7 @@ } .code-snippets { - margin: 20px 0px 20px 0px; + margin: 20px 0px 20px 0px; } .buttons { From dad4b93459414f9f45a43b58886e5af1cca81876 Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Tue, 2 Jun 2020 20:56:16 +0100 Subject: [PATCH 086/161] formatting --- .../src/components/common/ActionButton.svelte | 4 ++-- .../src/components/common/Input.svelte | 22 +++++++++++++------ .../common/Inputs/InputGroup.svelte | 7 +++--- .../CreateEditModel/CreateEditModel.svelte | 4 +--- .../modals/CreateEditView.svelte | 12 +++++----- .../userInterface/FlatButton.svelte | 19 ++++++++++------ .../userInterface/FlatButtonGroup.svelte | 2 -- .../userInterface/OptionSelect.svelte | 6 ++--- 8 files changed, 43 insertions(+), 33 deletions(-) diff --git a/packages/builder/src/components/common/ActionButton.svelte b/packages/builder/src/components/common/ActionButton.svelte index 96e7c6b6ae..147737b5c6 100644 --- a/packages/builder/src/components/common/ActionButton.svelte +++ b/packages/builder/src/components/common/ActionButton.svelte @@ -30,8 +30,8 @@ .alert { color: white; - background: #E26D69; - border: solid 1px #E26D69; + background: #e26d69; + border: solid 1px #e26d69; } .cancel { diff --git a/packages/builder/src/components/common/Input.svelte b/packages/builder/src/components/common/Input.svelte index 3ac872dc5a..82305be60a 100644 --- a/packages/builder/src/components/common/Input.svelte +++ b/packages/builder/src/components/common/Input.svelte @@ -1,5 +1,5 @@ - handleChange(e.target.value)} /> + handleChange(e.target.value)} /> diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte index ecb35c23ba..6264b74e09 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditModel/CreateEditModel.svelte @@ -88,7 +88,7 @@
    - Save + Save
    {:else} @@ -160,6 +160,4 @@ display: flex; justify-content: flex-end; } - - diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte index 873e34950a..4db445e54f 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateEditView.svelte @@ -43,11 +43,11 @@

    Create / Edit View

    -
    - {#if $store.errors && $store.errors.length > 0} - - {/if} -
    + + {#if $store.errors && $store.errors.length > 0} + + {/if} +
    @@ -108,7 +108,7 @@ .main { margin: 20px 40px 0px 40px; } - + .code-snippets { margin: 20px 0px 20px 0px; } diff --git a/packages/builder/src/components/userInterface/FlatButton.svelte b/packages/builder/src/components/userInterface/FlatButton.svelte index e9798fc89c..2eff1a6be4 100644 --- a/packages/builder/src/components/userInterface/FlatButton.svelte +++ b/packages/builder/src/components/userInterface/FlatButton.svelte @@ -1,5 +1,5 @@ -
    onClick(value || text)}> +
    onClick(value || text)}> {#if useIcon} {:else} - {@html text} + + {@html text} + {/if}
    - diff --git a/packages/builder/src/components/userInterface/FlatButtonGroup.svelte b/packages/builder/src/components/userInterface/FlatButtonGroup.svelte index ad1107b1f1..c9523f4d5a 100644 --- a/packages/builder/src/components/userInterface/FlatButtonGroup.svelte +++ b/packages/builder/src/components/userInterface/FlatButtonGroup.svelte @@ -28,10 +28,8 @@ onChange(val) } - const checkSelected = val => isMultiSelect ? value.includes(val) : value === val -
    diff --git a/packages/builder/src/components/userInterface/OptionSelect.svelte b/packages/builder/src/components/userInterface/OptionSelect.svelte index d226e6129c..8a1e3685f6 100644 --- a/packages/builder/src/components/userInterface/OptionSelect.svelte +++ b/packages/builder/src/components/userInterface/OptionSelect.svelte @@ -1,6 +1,6 @@ -
    +
    +
    + +
    Create User
    +
    @@ -41,18 +45,41 @@
    - Cancel - Save +
    + Cancel +
    + Save
    From 4da8eef1de2b40184e6ed9aba5264a012057ba9f Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Tue, 2 Jun 2020 21:13:19 +0100 Subject: [PATCH 088/161] formatting update --- .../ModelDataTable/modals/CreateUser.svelte | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte b/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte index b29e5e83d2..d5c924405f 100644 --- a/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte +++ b/packages/builder/src/components/database/ModelDataTable/modals/CreateUser.svelte @@ -22,11 +22,11 @@
    -
    -
    - -
    Create User
    -
    +
    +
    + +
    Create User
    +
    @@ -45,15 +45,14 @@
    -
    - Cancel -
    - Save +
    + Cancel +
    + Save
    diff --git a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte index 151f013ffe..0b51b962ba 100644 --- a/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte +++ b/packages/builder/src/components/userInterface/ComponentDropdownMenu.svelte @@ -151,7 +151,7 @@ } -
    {}}> +
    {}}> diff --git a/packages/builder/src/components/userInterface/FlatButton.svelte b/packages/builder/src/components/userInterface/FlatButton.svelte index e9798fc89c..2eff1a6be4 100644 --- a/packages/builder/src/components/userInterface/FlatButton.svelte +++ b/packages/builder/src/components/userInterface/FlatButton.svelte @@ -1,5 +1,5 @@ -
    onClick(value || text)}> +
    onClick(value || text)}> {#if useIcon} {:else} - {@html text} + + {@html text} + {/if}
    - diff --git a/packages/builder/src/components/userInterface/FlatButtonGroup.svelte b/packages/builder/src/components/userInterface/FlatButtonGroup.svelte index ad1107b1f1..c9523f4d5a 100644 --- a/packages/builder/src/components/userInterface/FlatButtonGroup.svelte +++ b/packages/builder/src/components/userInterface/FlatButtonGroup.svelte @@ -28,10 +28,8 @@ onChange(val) } - const checkSelected = val => isMultiSelect ? value.includes(val) : value === val -
    diff --git a/packages/builder/src/components/userInterface/ModelSelect.svelte b/packages/builder/src/components/userInterface/ModelSelect.svelte new file mode 100644 index 0000000000..4eab7a3745 --- /dev/null +++ b/packages/builder/src/components/userInterface/ModelSelect.svelte @@ -0,0 +1,15 @@ + + +
    +
    + +
    +
    diff --git a/packages/builder/src/components/userInterface/OptionSelect.svelte b/packages/builder/src/components/userInterface/OptionSelect.svelte index d226e6129c..8a1e3685f6 100644 --- a/packages/builder/src/components/userInterface/OptionSelect.svelte +++ b/packages/builder/src/components/userInterface/OptionSelect.svelte @@ -1,6 +1,6 @@
    -
    + {#each $backendUiStore.models as model} {/each} From 4e01e9c091ff869a129979f2a6304ec8009080a6 Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Wed, 3 Jun 2020 09:25:56 +0100 Subject: [PATCH 092/161] replace DataList with new List --- .../src/components/userInterface/temporaryPanelStructure.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/components/userInterface/temporaryPanelStructure.js b/packages/builder/src/components/userInterface/temporaryPanelStructure.js index 1c809e0aab..ca2a001a8b 100644 --- a/packages/builder/src/components/userInterface/temporaryPanelStructure.js +++ b/packages/builder/src/components/userInterface/temporaryPanelStructure.js @@ -307,7 +307,7 @@ export default { }, children: [], }, - { + /*{ name: "List", _component: "@budibase/standard-components/datalist", description: "Shiny list", @@ -317,9 +317,9 @@ export default { settings: [{ label: "Model", key: "model", control: ModelSelect }], }, children: [], - }, + },*/ { - name: "Another List", + name: "List", _component: "@budibase/standard-components/list", description: "Shiny list", icon: "ri-file-list-fill", From 9b6ea6a5eb49da8e3727ccdb20f15f92f089e78f Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 3 Jun 2020 12:05:40 +0100 Subject: [PATCH 093/161] electron path fix --- packages/server/.env.template | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/server/.env.template b/packages/server/.env.template index 170d391520..3593f96ee8 100644 --- a/packages/server/.env.template +++ b/packages/server/.env.template @@ -15,4 +15,7 @@ JWT_SECRET={{cookieKey1}} PORT=4001 # error level for koa-pino -LOG_LEVEL=error \ No newline at end of file +LOG_LEVEL=error + +# Budibase app directory +BUDIBASE_DIR=~/.budibase \ No newline at end of file From 6a3a7c5e8724476670499c582e131d98b3779047 Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Wed, 3 Jun 2020 12:21:26 +0100 Subject: [PATCH 094/161] Removed unused images and added new BB logo --- .../builder/assets/budibase-emblem-white.svg | 29 ------------------ .../builder/assets/budibase-logo-only.png | Bin 4980 -> 0 bytes .../builder/assets/budibase-logo-white.png | Bin 12600 -> 0 bytes packages/builder/assets/budibase-logo.png | Bin 12702 -> 0 bytes packages/builder/src/favicon.ico | Bin 1150 -> 1150 bytes packages/builder/src/favicon.png | Bin 9737 -> 6835 bytes packages/cli/package.json | 2 +- packages/server/builder/assets/10-1.png | Bin 111399 -> 0 bytes .../builder/assets/budibase-emblem-white.svg | 29 ------------------ .../builder/assets/budibase-logo-only.png | Bin 4980 -> 0 bytes .../builder/assets/budibase-logo-white.png | Bin 12600 -> 0 bytes .../server/builder/assets/budibase-logo.png | Bin 12702 -> 0 bytes packages/server/builder/assets/space.jpeg | Bin 246676 -> 0 bytes packages/server/builder/assets/space.jpg | Bin 390585 -> 0 bytes 14 files changed, 1 insertion(+), 59 deletions(-) delete mode 100644 packages/builder/assets/budibase-emblem-white.svg delete mode 100644 packages/builder/assets/budibase-logo-only.png delete mode 100644 packages/builder/assets/budibase-logo-white.png delete mode 100644 packages/builder/assets/budibase-logo.png delete mode 100644 packages/server/builder/assets/10-1.png delete mode 100644 packages/server/builder/assets/budibase-emblem-white.svg delete mode 100644 packages/server/builder/assets/budibase-logo-only.png delete mode 100644 packages/server/builder/assets/budibase-logo-white.png delete mode 100644 packages/server/builder/assets/budibase-logo.png delete mode 100644 packages/server/builder/assets/space.jpeg delete mode 100644 packages/server/builder/assets/space.jpg diff --git a/packages/builder/assets/budibase-emblem-white.svg b/packages/builder/assets/budibase-emblem-white.svg deleted file mode 100644 index 728e859260..0000000000 --- a/packages/builder/assets/budibase-emblem-white.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/packages/builder/assets/budibase-logo-only.png b/packages/builder/assets/budibase-logo-only.png deleted file mode 100644 index 652444e5bdcad3ad5a11c9a781acf69b1f93fc68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4980 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 Zr5oRgtwB=Zt{Mm= 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 WLMMb$jYUhZR2d0*@lw&Re*XuLUll+A diff --git a/packages/builder/src/favicon.ico b/packages/builder/src/favicon.ico index 68b7d616ff798335ef9b3724db602570913151b4..c216bfc024a55c1beb00d04a95dd67bc2877a65a 100644 GIT binary patch literal 1150 zcmbu9T}YEr7{^c0T{qH2*IjlQDf4^N>C}ytt7*|tLJg*Qq0&VN(d>g|RHF|fv}mRx zVu)9TLUh$ggd|9Z_OZn_w=Q(fi(y;r{r8+B=jGi?A=>-$oadbXd4JDyK3~QT&|6Tz zs65I#4>ERyF?NiMBvN*Ca*R>m;X^wn+Emn5l)fWV$goG_3}G?f8raMxoNctjVXcFuvP{*QPTJtKTeZ2>dUdG*{g?Z&y!06#0`IXF ziy}yM|L_n#EiPg{5WtUc2;tCo+#mG9Vk}o#J{Hd3zA*s)eEYJBnO9RtZmi>XHY>D5 zd=1l6lZZv5NG6kTw_Sj_tXPd9c|}oh*Lw>_!wJm2c`aC8OpK18qVPEU&xVC|^V(IB zQ?7&LdFRK41w47+6LSzBQ}LC?^w@U~E5RVr=`?z}+%VIa^?WXuqcKLXl}h1fB7wJa zv-q{WE$SOIpVa0i#z*|HRvT4TJAcmm?hK-%)rFSkGwAE?LMD^J#Mn!;xz3@Z;C}0VJ&C? literal 1150 zcmb7@&r4KM9L2wq(83mK=x8dnXpzlKxoF`c+yuIC-Wvupsj#t#8i!UX6e8xrjS7|! z1VNBS&_W0bnuS4AyXY@y7X(7I>IV_HIGuCfy~4x{6vO9zzwdm{xo>9Py=G1Pw6+?r zN37Ir)@f$P2qh|s&SJ({drN}5uXBmgokp6;2&sD1ORJMeB+WcWS?`js1RnL$G;_YN zP`GDpCpXAPg52>Al0E|i8cxIY;?)aR-Bb#}d18D$TU zZGxCwJ>8G>i#fcwc@34tvO~Qz&E%2SXIfbGT|P)FWV>)d+#sGq%f8nrf(Ca$`04~L2Fgnd}Ef0K23nCl5SWwp0!_HUhY@L%UA iOx7A= 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 h#^X@tB_d0+0s-V*@k&+;dJ3{tNBoHp&11 literal 9737 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 - - - - - - - - - - - - - - - diff --git a/packages/server/builder/assets/budibase-logo-only.png b/packages/server/builder/assets/budibase-logo-only.png deleted file mode 100644 index 652444e5bdcad3ad5a11c9a781acf69b1f93fc68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4980 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 Zr5oRgtwB=Zt{Mm= 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 WLMMb$jYUhZR2d0*@lw&Re*XuLUll+A diff --git a/packages/server/builder/assets/space.jpeg b/packages/server/builder/assets/space.jpeg deleted file mode 100644 index 427aeb13c742b9a040dc608e593560359aa0a0c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246676 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

    Rw}5&s{#Ust0qFz;7|)XOz|6uu%~2 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 {|nvJ#V)9 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%0ARcL@v_DN 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 z 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

    lZDB907?C zaDL`ToVbsR+4P)~SuyZmZGv~CEZRsx39bXox`S@croaPggU~Ua#%k5${6B^wk{PQK zP(rj|PFOP9SmTZ(ocg9Zl|r#KpJy`;xls8Ji3mZP=d!QlZ@OgiyBjCDXK^r;Q?uIJ za&$*Zl`LMVoSmCCWaTKFF5wN{!s=AEos`+&ea$^qS8tD8^}6(|Z#WDa*f<>Dq8h>_ zT2hY{96f9iqyDCVS3eOVa)NSzH}a<^Wyb1kzc*^WIEL2FdW71Qla^M_CApJFkJ-&0 zU+G<*_WZ6@2bzy5zTy#;k)8NfyMeyc{L7~O zF_)3>bLV`3glvTg8>iE8MbWI@_?KiMv8{-BAZ-5 zv^d#ThciohmmbcWq%QOYt29hlHV(PDvDTc2HMKT%dd%u*dt4g16`QY#s|r5Yw`Kgt zZ5rzQby4G(rZtE%s+(?FbPct_+TowGZac#YxwHG#aB~|aWC_C3XVG%CxKpyp?rjlO zLw&N@OC{~Gj|NKjEl@V5>r6DtGVz((U7@j2+-Y}gm8QZnw6Z@E+lUxUyJF3I|my;sk+Dj^o0O0m9znG;LuX5!Hmb%a$_T zsNBh)Ekl@v4ei-w)vfoKVzZu@=m;#YPy=>`aeq90z%Ii^Gdx9e>K$3)r3>KHY18gL zppF9HC3O-)y5eQI0a@PbKA_WimTdR;24vb7Zx3&9Gnhv0;@Tes<%K6Dz2xrL&RBtSFxG- z3ga)!qyT_07kqSU#Ce-3BFu)v9(F57-;(RXiyFL~wgt!Rva*VWQD){K{>QwXCnk0k z#jgWiOQ3U-!dAI7ui0$To~{trhFaNiN?f%{^IRP;mp1*bBFVz!G;$lgkp%0cP-{#@ zc=jx_TCDSS!_ps7xQn?@sO?%AOn37g--|~J`e}UdUH5N-^mtkT7`2W}tR_7?z<>$a zd3m&48maQYl-8q}^#Idh%v_s;vb+=>;hHJ%#Dd-J1f5i{ax%$$z0SWN|Yu_rUfMD`HK~*WiVh|S&;Wd zYkk__)u^9GC?#x2oNB(JIjN}@saE`%UGaONz!cX5=|tyi5>_9dFFkL?xmo7=kHq;483;N8zRWgSMq zX~=V=Qsb~e+>7Z^h2=SLa=J2yC~@*+I_qCZ?%UDCpbV|P7W(>ylvC2}e;IF95tj9v z8M8BkxLo_-)<9!!{G4oHU{dW%~Uytosrp#kI)!2ve<2P$->k}WK;}3yM(a% zbZ7d$WeOS@+7RBsH%qPNpm5YUGV6jW%@DvT3A;*ajd+Y+#gxliQy#8%FPTy2!?@B) zX@y)JqFE{D_FUsEIYk~6Tvs8!XG@%z010zV><6+tg>(Z!Nq9IQ*E@{w)E$gCf2l_{ z7Q>2-ZWB{qgDV}Kk)%*9!jHmGP6IbZXg*!_Zjdv`dT_eFtBGH|e9Lc`nHhB8nR$io z7jX)`#|g=}JdzEr!?@IScCFp>3zZ(`n(R9XsXS9BQRtZ}r8dQ3aMG;;u6@PSFT5aA zDow8Q+Hf0$sPh%bL8EK%zAyaB>PRxQ&roS?_5CuUmtfKbKXX-khccrZ7xKiv5JHLj zEI+t~b2+lgu*$>N!z|ktH&^j6IKsLMFrN%2%p3=(k0ZNE=2%GS#&?aG(+I+WDAB~6IJ+r;UO z*tI}q{LS}8jMQN2OQ-JTwJNoZ^9r9&n{oxzuL|BJ{PPnAFD)+_aFEoocQ-Hf17;f& zBGdgvay)1_24baA9hCcoG8D4;x1w8iJgI=(sEFboz_>E!Qmp-t#ANR1-b>2f{{V?= zD5$Dc0@G~qT~$I71T-J1T7uXR01SDUM5)GB=tBOh&q5?4ohDWvO{#=daJWRR~tTP9Ola)YCTo+7{i_|fD57u0%<2&~3x2zo*%w#m#|B?(rI$anKh)vk>k1o3weI?;IhaBuU)m+? zw<%B+-!aw;NxLpp#*+Du8QdepRO~G-rG+;V7Z5(I`$~wfd--M`+;)u+qN)B;3$gA7 z`~zXhc<=3(i{SqNXz()qjo}A41=jn5sBu_|XyPwEDU8z`dP>OcEL7jGikt^=?xmpz z=+5|rI3-NUz8)Nu4lu)%FsnQ1{-Kq`taGDOR{4S=p*$hxl~*>QZXE3a0KV_8RDR{I0va?L+XN1 zUq=vbU~R9}$69wOL0T(1Zkct2sNQn}ZVLvB2ed5FDz0Mx09FCnt6l;OY8q)04dDq2 z1Jl$GnY)e1)jJA-8&}h1HpFE0V?N6l3`N6vLf|6Ko0}1Vo43njBir9hO8j@b>Uu1- z8tEl^q_DLhbh|F$<-y?4JWfwf`az9lxKFKAUW?WVjD)-#LHsS_RCed;Ws9n+r zyJa@tPQ+-)Rx54@)iNFAekvhcY}$ty(IT#uY~`(J>_~%9PZjS?V^={i~RoPAcC@KMaS3NWeHIRx2 z9vsJ+l?$>r2J~Fzn&o;*E(W#^YT!%ty{8axFYL+Q4LzVLw0)7kLeI7;O|@;n)wE@G z0#=tO$JL7GLSqCJvxcSVoy4VNHsU~j0*1>JKro@T&yGXZ1&lrE8MI2sRkV8EOeGOn zUD1U_U)`h+iITm+yi^D%AQ{raCDW-%QbB!ICvN^emZktYN;Oq-uIi>QX!&LIrCD zqn_VUFIvU)v3YK3E9M6xl)Y9ODL(4ieI&9aDvpK`8-W((aPAP{im%>Z@MgGqaS38R zDlIqH{zd|3h44!Lk3`y=VJcewzB8y|l-a4zi?uW2RPPe7(cZJg~#HzVy#0j6^rkEpN(#?4LwpU4;DrrfUy z%m-7ANB+-oH=2Kb5IEVN%&W%k^VHk$Td9>gt7ptLF{leEw zF>cY$=`kQ;@9T&R7U3MYiYm%=%&ZjNQmre9aq)8AC;WqNMP1tr?p{mZIcwm$i^g2I zY|-Ake-jo{R@V_JXvG;gTsXT5$;6{itqKx+Dx@dh!Ci@{s8VmVJ0E{d^Jh1K&r;#%FP zw}`vQmc3LAj>Cl&JLYZ^Zg!9xiiO*e?~0%Oi4?vVOoX=^{{U&nZ@yNS`gUzb=QoR4 zg!`p}6}L7##3921a>=zRk)U9ImXndN6|%d8zy%hg)VqC0o`3mBAfZUDub$NlQDzlF z&N!WhW5;r`4#gu~EvAyrdH(=t6O^_3d_hTj6I%BzUZK2>uz&?^rXwtivDjf;**BqE zoqjUFAbiSI%j+S;D)st^uC9JNsh0{SBp@h^4QGKAxVGIg*P<+hnp)kEs7iWlV7I1$ zf6OKAZ*E-o^9gED*>dYUDjHnzkcL=$HQBcwWy*+T2YttHSwIA?IWyq`$@}A|zGg;c zKcf5f2DPc4{%)&t(ag1TD{pa6j?f31 zO9++km0@hUt3PRIL5s*w+0;#!nQ)`IMB9L<5Qk9!-h)nhhl`fn#^%Y{{Urpwdm@v z=2WIpHWgU3-4Ih%Y|jp(HoVr#Buzz@1p2#(r6B~upa#dlDIVsL)BLAgOqnW(ON{KE znNV3F?TUOS^--}V2JIIr@!%m}6s#L*>Y$I?Y4wN+TVWD3kv1R(+B+8yj~6<*P4gL< zu^yv3I|#B7t2qeU3lPAIN9?8Mz)l&UcBQ@^r9R2oJB=<+P{D58s6Gp*DOE_omMNvn zDjH>}XoXUk3s#*ovgMp|)3h|FJ)=xRrApbyn5(IwGH&4X_bB34MWq!uQ=?L|s6`cL zOy#pHrB7$Uv&{y;S~yqA4*4D*&$>XP-IDN>1Z;Gq$)MU z5^#7G9Pr|T-CWySfC`oR?@@x{-AWgi8ie93V-f<7Bt93b`3EYfgtDHRlCBC0Q`8H5 zAv>4F&a{}o*W?xoYKr-c-1i%;5V*Mm;a>RK?{Ri@8T6E@m8q2)p1oLX=Mmv_!X~Xz zae!XRDpedu3VQBc6;ld>N>HeTzH>6&jo%7F%@nk?I5uC{9WkkM3vTTqK#D0G!d>a*_RzI@;tIgu8e z9@fD_?mdfR4sLSYPKZ=oT2XpsSpy$XOhALIw<1$W`s zF;FKXEh}DVz#hsdi8{lfnG^hw$*%4y*aE}13x>Kac)n07;Amq8ECj1TE1?ZUSS{nF zouSJIaIzec2@IP$1w1t*WO-aO9}aPOuJta57w?H6KR$@Lf~hqf}IF?^f28WCgpK zn2@m)#txG8oc!EvTb`xGkctVgS4&kBqo}qbmzb>)muyNo?r`MW&4pnt*r=3y+WHqd z-eS3J;$dv-#jK4$cOiF^;FT4r^(&n|J;I^Sdpq^%>QJWt01^2hdGn%b zpEX4rrSx)^Y^>Ln&K$IJd`_U{L{1Wr=j=t~Uga2#Qt6yyqr|V1;efJs{ls2HIiT#x z@Jv$$e)@Ix-rtoF1aQUtzt7cplr-_wIL4p7L;@?|GNbZ_&vgQB)(f73^UFM4rNS>U+>YzXdg42+YjI9}OJKxX zzX6GpfwLR~)7&l)@9D7R1A=W{$lrqE56}M1m9#|DWwKo9g>))bu7?$wdwf8a%8g#+ zdPd+{y4h?dvqwLPof6=DM#2ux7G2t-OPkkXO1}JV!*jgFII)iw9pFi47CA0gQ&7o?#AU&HLS@?UdjTo$nezF60r(N7`)UW<1?q3E=Y9wq;>&_;LOWuB zZ`f-Tw(`NsmR|hKI}u4@>gMfE_?#_%#|Z}5##_~;PGgyVWcxw4V=CY;!3CiTfp)(N zKJVCa0m3;NXi_9;TnUj6x0#jjaF-Z8_%h+MYDc`A2&4}kF&G{38o70kd=+gSG21YP zzy;can3sr^;by^Xy(ML;m*osbab<%G1)!bYy-!2jL*NG?aVE1SA*Q`%rghoPM$Ig? zud+O`SFEqT=P7;cW|;H;tX3G9fXWF9B{?ets?2WCno)F=&g+b2NMVR+5iL&V}*FL8SN+aC=0PFT7 z4V|07QsT6|-d%?(L7mIqgA*Az*X1t zr8OS)e^h0559Tjuvue=VYaXl~--J{OZb`_ivx3X+3AAle7Jj&y{{T|U;S=4c zsO}zx{{W=DpJOZ2n9(~YxEmG$+c$F!^9rYh*lk$RK)f_cWU|>?(zdkrbAo%7onThR z_v2~z9U)ZAl+@>Ido|e46ed;%?6T1IroB>%WJu8RM+EU@#22cfJ&&Y%jec zW8&+m>+;36f1_b^$DSZ{enhy~DjfJ`jdKCq=c#UD{70T9Y!+Mr$PX0RuH#*JTs?Tq zzllpbfwIAMp{C!&Lgoj*UpqB)4FH>8YIaMr?2X0W7 zES$~gnJ;(19RxpsizjjC#vX>Cfx=jrPW(D6>l!O`lJe54d?Yz18iSY^M(GE7TZG9> z?jqaiA0s`!qZ!{a{{XIKILxT)%(+`Rd~^;;{i7(!wrK zuBA!5aK!9d$ymAf<2su20@#@{WEZKvpe*#o3X%!}um;!2sFfP2MMZ3?>SI8Lg?C8v8+5z% zR18VyJW;xMYF|Ju)OCGI{^5|*ps}XugobFNUBf`q-)t_(H<*H`3Lc_yo!sbnE+wfu zsDvOHMNRFjtd^Mab@LENz0|uceU%api{=0h!D;xHHLLHbP^#P|&2u$DU>&;zy%o0A zv^!ulOjqH#Rz#zm^*1F#VRn+0thb66VVG?d?FA_C(;dgJXt&A;y3|UmZUd7nr#9ty zfo%T(P(rn8$9F9qSyGCeL58Bden8h|&Lh>t2s+i9qCD(x&~(E}JMdM-v))|zb}V2! z$clP#QjG~Rrd)5QxzgsFo}pCb%R(1lvnMdrTt8Lp+fSn+!lryRiQ2aGVZ;rADYIkD z7B+abom{UjAn%1rG6pN&TsYX+z;GLl7skxRx z#`SH@t#itDD$1f!V2)9KA*Ly%o!lOr&A3+V+vZ~aBu=LUct?^1Jlb-L@K{?$t!y%) z=e(<_IXl2}EU8SbzyR$M;v7)cA*&w7I6KS&bkFvVE|TKLJeoux!Yeu0!lBHpekFmt zoO1;UeLl^RgWeXD{l*T1WO=%fIg6ov2%Q85Ay*e|-{jMo*$}8fZ5%pkCh<|4D~}sq zEBl4YTQP1S#lGdbGg$XPS9pl)#maLG-$Tjd9rY`aOfQY=**2gnIbqAjK`XoU2eaG^ zN+>Y$*zpUCQNPE;+MV?XTLVRZV+!>u4TliB1uQw732Aj4UBi=xDw#56%kbD=bAc^n zw#v+#*h}k@?*9Pfd=kfTHabcni4sr=?>XR=7-R4!d#m!5{dis(JRTnFNOv| z^#cQ#jVD+%vYeu1q=SU8(K3-p6LP+>qwWCv9t*{KLGey)a6L(umvs=Fk&qfNk)_F1 z8@@7d4n}kzt1_?Rik1+|0ExkxZQG7DC3tE+`lV2@(nv&q)V z2IhKl*xD4f4^Ry|FWCsyAV9+TW96H4YS_k+hZ{Lpe*PzMuLOQYP0(x6%3s*Cn%E3| zh-(oDSgX>n-Q0BQ)-}@v9VO#GWv#KRu(M{R;~RZNSJH@hFVQxh0c5pt7Yzg4F75kS zr(J5MP`V>)&Qv&-9%j^{Bs?jThNZ5xFL|AAb_G5nSLehdR&L%Yd|8Mq*HlzVV}9L5 zyE=&=Tl%a%fJJG5r0Cl04fO`!QAmmdrX2Si(Hu;Od$*x^Z}>y0*hh9=?U~%t=({dH z{-N|-;JTd`JwR##C?$ZgET|;HN)icMzLEDpUx~_W6g1OBq7sk~9YCW9MipNNG3H!W ztveA47-?giGfr(k3yYHP&Jj+WLZw|A2K$ZpqBku}y!QiaR&Lqqpv#vV%#B(DEAj~nJd2PWV4e{2UcLUy6xTi zfXc=9upb+pO_fzBiC)(~>UX`erDqf3qf5-9jFm6D)BO_Ist=zHPKY<-{{WT&D59fA zjHG@kvYM|>38!kdB{ea_d~YI@PC;%IhH%@CyE}f#bMAnAm;RxFS2&Aq#-SF++b`l) z)6sPViQ#?*M5_z6xWlMdxkbhkfV$j5-$V&sJ0f^Fcg50!uF?wa$$kYut z#S>+3GMTZ-v%9!QdG+OS4UQYjdiI++}X_7&$k&O|8U) zeOzehfn3pvCblx$RtGt_om{n%7VifHZAGFPXUl!a1hRJQA!0Eg8YyR0k$8(8l(fDA z!(SU;7W-v|RHNoR0YOGfwvBu-hFFrxRHV`8|VQp>8 zZduuKt!9-JeM3y$)}{1RPjG9eqw#XQ1v(xM?hdgw>77Cz5acxIjiRQMg1~xX*TgEU zG09~zQS>2Kt-~G5HdzZ%&BQ8-@1IflgD;Hk7i_uP36kP*#I2OBV79Kz<_bTv`!$Hv z$vAr-NHTDjPlpa=7X)fIL^oS4ru^jZCr+dL4|3J3hcJXJM;`~YhsR)*Pe;=Yl{n!u z%3BglJaM{P(2ISM)mv075J~o>J#{T6H22P>?n^9>DW{fNEok;a)^2R@-;~hkr(>4& zGStvfNG`ryASsO=(+fycdkVuvF1n0*LGmR1wamlCOI6T#iEZl#osZD)50bYbaI5Bg zu6mDdwij{oQ$AflT4Hclt!st#D_EexUZVh3Y;j+67xoa@JAkN*9$3pza=@2ep|@@0OTqw z+c~LP?6HV_kl=#crtHn)BH_hrb-aE-KqPLt0IVfjDfB z(xueydyg=2^#QTJ40U*60RowO;A0o-R8=$p` zE-R~>afPLg6RBDBq`DKL1=9I{h|25)RoUUF^wy@nhMsFic( zIxC-Wbp3-1FMM;4nf{=g&d+qjX4Ji6)+ohJqg;eV7kLJY0*>1O9(P|6ZONy#Oiy<< zZ!O-Hu(z(ESB%5V>H)ayUJ=omm+gub9pM1;yH> z&X~xs)I1k04&YPfMSyZNey|f89mL)pLc3@83032s*4GtJdX-jv&rv>ZFb*edR-@b( zY8UFEYC%fXG&JDu>xkEklq6$>zf*vG&5giDg@16zCh$0U@tQ*IO^gLYo!l#P$K*I9 zJXOJZnKo?h3hGcfMs~FPC?Z_DE1<}7sJ5W2O+;p_sN)Pg15m@%VN>s8+1m@KQCIw!{BHSx#HCBx;fq}qFm=DDTZ0QNA`lbMgSD#09N}o*l{`j3rA(a9A#{kv3s4vyiCP{CpqI ze`icq4y4>7#gywts_cmTt~E1woz<+9qy#eFD*6{7`*v0=V9z@ngr zaFp`FRev+Nk(N&9x%mj(+KR+ciLjO(2yR+27pRI`vg7{6$#vXo-aP1%O^re0**AB!^&EnzueLXAYa>%{;W>~O$_4ot-9`0i zf?(^{c!3U-H2QN=#44EqfB+$I82*b-O=?FX9?M z4?%Tk)aD!1PRzdoa#Ly&@((!+sbC91OEV1bXK@SS<7)WJ*giHeKr~-q4t=m@lrFJv z9MngooTa=xLa2nORApdqjp>P2PI^qd=yL&c3Rm9O4RV$>4U-uP_F&L#bn7=M)tw(u zVFL5G-e?W*(jS{B5g$^vIIOT;OK%{p*9|@iOD&LVUyvZi4SaA{6pl$ZDk{>ki=x|G zLh4-HtYrld0iup-2#M!V)-;3cVzvm^*c+5QTfSw39*-f(Y(#QKF~co{HfB^igs7#l zq77|dJit9o7OZR>Kfep9W#o93!@94KKzf-wW?XdEck|RmZuM*&^s^_-CBuoAGIMeQ zC}z$6)9EyDt>gs}tBlaLuU%fp%JQKM$Vyci>6yk$Tmm8C;JYy!BNyAIT>HM~8uW4_ zP2`_D;C5CyI2T#|LVe1O_bUhoo%Q2LShfKMnSDBX?i`mkbK{HU@C*L@AhL+1BaT&X z?iC`h;pr+4V+32;h#5LYuk$MYrfA=V({ihv%)O54>Qe^M^DLh!R~^F|U~Mz*ck9Bc zeL+H2i>mha5|RrFF|QR#$JFI>FDJRFO|OJAF0U?8114-3)J!2e>Mi|!AeSysqc-I= zA5c4BHoZ}VQH@*{FQA53+}6gjcPrvwgP0afxr4}HmaS1P4wBE=lRdA<-&3EXI8+QJBjrzjky#`sYll?@!Qqr0(CwA0C64qW(d}94@iysr2ar^IV&b{Y(Bo_S5vuF zAqM33PekM7QWS z`BSNXFa&~~aVMuW&G3N@dNDJ_R_?toSnB z88?{>)4Z^+UbH=TqO`wK(_pp(o82e`V@RVg_{Wqv>JChn{6b<7Sh&wK_weEU1cQG2M&Bs;Fc~SH9iwDz+dK zu{(^_6`li;OYK%l0I8Q@rOO60gJRm*TAW$RloR$MmTk4vEfgHeScwqbwKb-l&MxKp z#DTOFZj!@swp7h(jjM)QdVfU)&f1fGH(lsFgmb@m556ph22f-_bBXHsd%JV}iqL+(-*w`%ca1O4nbrq_Wd{kgwTCK|C{>3#X)E;hZ zU?R(&xCQqLdMuSVH^!ZK2w*GB84}DdYBV*=+3F0OO%z(NGM;JY>SG}&2e#kXvR9qrIRuqY64h?k0qpk!Y)F$TGRp7o+3F$%aI%Cce8pzP zg+)VnoY6Oo_#%hTH*lw>zB+#47oVSA4RnjmLgyqbNV?MDRS!i%HXK{SEgx4ExKnXG z3}DE=dO``)DIAalduEwPV51}a-p%9?yT$+oeu@L}an)vP&OiP0I9aJ?*kp+Pp>Q}~t34zk!MyoA= zo9RMMm#vMk;FV|*dZ}9vM#u!&Eq?{WeBE;!_305RQYzwEWOQSArs34Kj_sS(5uzef zzIitK0{;LB+*=4&aZ6J=fw5TYGfVbO4W~z{po)l`)z)(O$sLb73B$H*Gb48jx%)d= zaVi5zh;qthY_9>R5n&!r9VBJy5{Cwy%-mmY8}6@wa=Df|QCxjSh@5yQX2sYgIpL$E z%GmHjk?l8eQec0?6V+S*6xk5mPV^->RYT60{6dlxtJSZ2?FN!Q?Co~|OB_4T9Q~1) zd~UTs6z2v5MBPgpepkz9NlTmBF?xMUGve*26-Zw546)$h!BJ+Ca+lS^G*C_|3$6P@LE48oIEqRWv_X`}VH*ly18g5@tbCCmBsDx<%y_QPl z50l`&r>olukus)NAE&G86d#s1e9QTkN1c@HC8q{On3cqO+0nIs!PH{5(>EzeMch8) z%-fk?z5y4RRI`BioDd5vsrONzxJ}uk;zG%MMQ+3eiq~PR&Y+hYf^P#Q;MJe%ZM~px z#ONVW+jYH4=A+khd^~v_Z2a&D=$f9Y897A}`wJ#Y_az!xuv!2F;V-CHo|6-R&xl;s zWNt6=@GDw{=*NEwZOkt`h%sIr{DQ}{7j^L-NX7<&fQn!KkZ+IKeh!psy%D=eu1?@u zad8x=YVQ6cuYT1XNR9It0okzPYheW)wH_G4$9GYeOF}6Z%N9J%h1^~t%-P7ZFMg)S zsYTHqrnne@OP_YOqF5Jam!x<$5xKAE4bvZdSf_T@2jMA-lItlkAkHP{)bvzwh}5i@ z_v;(Rva)Lu=<1?{%%Z%B@P1oWPA;BXbg^K;YtawdU`J7;BE;-Nm^~+hCBx z4G^CLE>{^Tw`EG(xK`W{2XsTVswwPNe=@G6(Z^-v9O4!GXgyfqTQhisi zneTjZN@{OukS-AvD<$K;&+MN}d7L5*2E|&Xv!1;ikwWaqec+QW8Qf$RRGR&6qtq?U zrq;nq1Ja0|-}5ixUP}QuWp6TzmyoHjzkV#^1yF7P7!enlN%W-Ip%*`xZB>32x_}2Z z!LVy-6Z*-0N_$+C!r(e%Q+R`@xT z!p{}5#N&6YsZx-o_XJ7Rl{A-ib5Bdlm2s8qR0zCY;cbG^I%A+p?T*&bb1Cv}LglcE zadPd9+`}E>2l>)bC6~1h6Uk=UdSEte=ZUi6YQe3tG02%+#QK-8ZH9=OlF1Whs-;1K z9Y2|bTM?3z)OicJbnB<-@T<7j-TweLt?uqSBdE0y#H6*wwHuc0oZGZf;r9>339FV) z;i^LA^P3AMDzWYek3vV(s$3p%wDUNA-|Ts4l%1X3b(VeLRcJMw6Ui|RjV2Q`GO<|3qYcnoEu9Ml%; z6<-fm{*}PtxIIcP?j&yKEbX6>xW+yYcZdBFv+CWvw#OYVa?f*bacQdDJOV-hcSu#x zvhZe~Tg0o1j7x+jM_GO=XAq72F>11@{N(zC%~__p8m54?Dy2#dI5?|DuRPZ57Q9+c z+X$@G?qzH&W;%5-(7O1LgdsBAqO)%c&dI?~eybWPX=0n>gGv{z%etJ(R^TW*tz8uY zeDa$Fi?)PQvg8uFZWe^+D3*>mffTc9bnI@>D7(_c=C`&kC4sRQ;n5f;OaaLSk!8B6 zdol$z8Ltt};Ofa8j@_TEfp=p8T~qYrn07ud96}Wkt>jtM4eR3Dl*)UJDW7#l->s+_ zaoE~^N{oHhFQUC7wH2JFF3Z?UbIewj^HpCr6@hr3;B&Pqrt-=oD`B+;^6heZ*^u5` zmEVfg4WY2uG>*CZk9;e3cdT`f+|XX4xAh(+uVT^iN?IJuzGgS9oYAb$-|prw6**@H zA!|mBrd;N?a`xfk7V2|y>fk|*&PW~;dET@^|8!jj_G= z{;)_L7;Ph);BrdP@!)tEw)TxIE!4rQIA%OohnPy6;B^j)i&i&n!}J;VIMJPkPuR(& zzNN%rxbsmTv^9F`t$l@61NSp-=AsdUOud=vH?ZO~$y8q1dY(G`i4%R&SngdMvxS*V z#9|vtptOzvTNlqMr=4DsCgx4Ja@4e86<>-8T*T|Sbp0_es%mUz^RrgGZ>pb4+X0^3 z7^^YTS4bdE7UwIkY-jIiiLpzKWpLvR=4=+BVAbT(d?H4I5YB^HV$aC;a)|1Lru{7L z2DbQ*JWY*Cq3T@^JwBoXPp=8~_*H|q!4RLY(X3M!U)FX?TSaWS?l6R9BoM;$F7@5( zA;J>h1#XdN(`XO1%#^)AiW<3U8CJYvScl^O03>i_>Ax@=FJKDlo*%dsaVeB)nDfm? zsN6Y^60UC2%O)b0u}BNYx~4uwf~Ah3?3J*CtXo@gN~kkJV~RD5AokCG3|Vw9!g#Il za|*)9?FiV$0vq>J)o2G29b{##FNl`mf>hE}Bm(18Bw^Vbb+7Gi8xf>EOs3D-hb5Bn zb=|bmS@lL*t+cP2pw(IpnQRRscj^>nkaXbv<@=v9rxWH7Am_5ZPm%?K6{%oesilw> z0ixKB0{WzO zajXx|?GE{YXMZ=4(w;rafv^eF4brWZ+^vLE$^N6qaLpOZp{`$*Yz&HlX=hQ1YQ)*4 zm;V4V65)5phBO*^yn0j_Q_AxbWz=AN7Eag`xrexWBP0Tv>8l7ru?_{dUf7LB*AX>} zfHdJ6I?~bcTLb~M8dNRl~)#O`V<$itq!b z!t$x6QF5|Va{2Lf6JZ$K?uXSjS$Oh^h6l=o5Bl056CtEk#@ml^TFq^qV;h6ayA3v*X3Rxrwb zkdPD6JHzP?nO<}^K67LR72sjy(Vld%G`)+qP6w z?Mk{0C8MmmXE8TrcK-nJ5VV03lDi-)hv!rBwLltbEdjQqlt!3wCwvrf7_%avEmsz`-0 ztU6^9D1UojhiJ_PlyxYVz}74a2`7EzvRS=Ba7eR|b= zcpGyK#jf@jD`xj7xNhlE)@{d8GFxJHWy48L87qp3;JB{zbVR1(2GH-|Jp$lr2pbCo zE9Vxz7?W-h!?^DwX5gFQ0N-(hzcKvP-~UOPW*~CO1QABEEc!6uUlXt%Jb*F*@`WK(GVR5V^?#l|$W><@fo+DHDhb6&NPUnh?KmHR>Tx znu5XVXA+}S^PWh-KQW0y27l55evXdX76zo@jxpmB;-zdScMc^$X51$e@>Rf;0*Fs< z7dZ%GQ#Rp|R?CKowZ(89+-uOaPyLyYl&_Xm%^TynUK3!Ucw82ZHNF61+(Gg$2-h_^ zj6EVj(>*{58fw&;x~Qs;ia3alt|-Iq5u0sOJ|{l3(l<5HOYj_(^C_-kH_T6Rnp4>s zjq>=HK&D*FgKX`1g?AOEWmk-|!TCf7gE!p4%pe<$`rfrR0RY53F0P&j#0SMn9Z17* zEMI{|JeM$K+dG%SmvOdn)h0@gZFiQxKo`~A4k}i_DvgPsReN5eWw)ir9vE9@rKZlp z6nknQv4SRe^}D3h}n@Qug4?t?NiwwKM`v0{{UyN8y=9O z9M{AM)fJt={?}5yq*$N=--P&XWF4K#XYVnGE5I_%)=ZAP2Q;2(23(?^bSt=&;O{Zj zH7)$1bVc1pf~wwC5#`F>J$Mu-7Ig(%sv1lM=a(H+q7nwmdygoWo z2hVe71~+^t8zkCZF4r+vMK@1Bz8?dSIN9GbZY4TOi27Q7n2;}0nrW2Y%GtvW{mP;o zOQKm*6`Sg3isk}}-6i7z^qwJ}5G62LmFDspl8fcHT<%mEaOBxjE>`gX zu{S_lFYfQbqkKTq?jvl|j7=s&iXUCVHW0ajr;7(<32{}+-rPY*z6npL3|L&L!v>qE zCm6+ag!i(ew^>PwY_}5O$5PY6-p->$MXb$-b?z+S z#YGTHRo}jtLv9gEbu93(#8{R+Gin4`?)#KS0W*q?4nkGMcJAe){tBf{mq>Q5p-qX` z*KiuS?jUV0orUW>E?~PU;XT;gT@%~^(kZ8wrD87R1xqOAIo$#W1TCRU6J`x=0Qx5;2bhIYY3D0A@&sgj{T z?0iYOI9%Q8zGv#1zG@`=iZN6ox`yy1)L~35Y5NZhyJosYGN;c`p}MF!Z3od-X$F4=Gy{Lal z5aAZKP9@~m*5?WC{{VNs=QeQl8Q7@}0hL*2{xJ0M} zUhX?9qEX<6*&vTGt@X|^Ls7Y-7b}^y;^xg++<1#)^7T`L#Y{HtH7LmJ;_?PawF##} z1ldp2t(#ldj3W+q1WYDgq96}QU7)cKb1TxEad*=DmiROBRl(ElBXP7Lc@wCCoi`5i zySOZ=Lll2=G?n3Fo*771+Zu~wY`;-u#|iObkAA}~VViI*l`>no+%{K=^%>TA7937s z1ZuF~%&|IrZp&^~u+|kb)#H`T3JFByW7JTGUP@%0FN!KF7h!*Y|RQ!^q1)tntbtyz)HrL^`SEi61S zYIO4owl;}%`kNXJDK>_*Q8cDI+(_JLl+BxSx!k8dFJOmmWoQ~?vlJz&kw@d0O8M}T zVCmy8$b1P+mfIF1I3?DYdJRIk64q~fn zaCbDE#(--1_?NM|BIL11EX9GMS->&bQ)tzMIDA97ZC!x6Ir164w=2tB=c5 zxY&djz%Pg^rn+J(E(K)*TdMjN52#)%zGdf^9wQxsfb|`uToEOu%Tv{W_aAL`S6%5! zd{SD>sNo2EefpTrRALIFLe3@D7D4E{qFD?Dv7G^-)3`iJHLnibQ4_G_0KFqp>T>X7 z%`~h;sFxRAsp*B#P8dMvg)Kk>;TP;+w#02%?1L^_9AYmO9Y(u1a^<%bSddc+x$84i z(9ve97g5on0jPou9&6FA02ZfZu~`k}9iLxQCG5-Luc0A6{ z0QDBwW8Q+5{;*kWy)|Uf$@dB05xeYj(}f#sT45_?m@m{PGf$wiKN07`yAqv28f|`p z+OBYO#9|g=0DxDzA3QmSE*x>xFClmCD8dHnNy+6R9X1ORu4?VucQ}WyR%zv@si$)3 z#6UI6hv8j@UTExSa6P2M4tx8kjz#;O-0oX*xP&>2ks?HHl%%_h@G$m5Aa|PS)zUch z&JwmcK$lIbaAFf8X#$s8a|?x$e`0I!#>thZ zu!IQ+jU?_|(T$~9qrXy~~cJP_(r5 z14?Kq=V3_sf~o19#xb@*Bws!j%jO9EB*=*h!b344g_d}_%Gpcgt0q3|jZZB8;OlDS zd>K$xvZ`h^+nn4~q8?+3iY2$oy5iJXQWZjvH;6Z1xu_154n7XSd2)iwz#m?pP zx1uE@PjbVzMk~~yN%6I@LCCK}L@RyF9+f#z!%>yD6DK6N6}cVyhGtgWiZHT~*8am~ zi2Xq6Sn&^V(0-D<7+VC@lrP4V?k@%_1x45nWoNh@Ou^6?pED^LrH0AmtHdP}cW2c~5t>wa=U^X0V6@a<8#|WY5Ea~o zO86Ib%PubY>MSfi!h5Y-t)j2h&?1LrFX>m|%u6ma>~sO37wiePM}%wC2)W@@KxrM0 zKFf_x>6v(n}Lp)YBU)h*%=0yM~o$ zx29yZ;GyHT6DlEfZ6|#fhRM&VH%JKmEZ|CKegoX&V!i<>$?hL2N-djhGNYj%wbW{p z)pb^k(c5N9WNBr<(l-jn-q_Lc!B-!0}*-3Bi5tS(QE9ahktYcqf(3YH; z{J~1yvo1Aq+~4HxF4+!Eh2#U?&O3v)Pv&WnexRwD&2G<+^lSWzqxc z70c}dp=+gfV<&Y8czXe1xV=KOA=FP?M9KLE$``5X5-D!dz%Fq*Kb9e}nvx4kV6Y=Z zZKnJ?a0uK3Y8Po5{!+KY9$-YK2%*K#fxDf~#x5Fa5UOo`?M4E1e?ckkRc&$>MP2s= zEjKfohb{53RI*)52MsYdNJ&2=c1HLSDT zrOIn#Y3^p{s@20OEIy#J-nQii zRl=vJc_y-lcU>Y~UrPwkPXXdz!AuNx6ph6N5ns%H=n$86!(xuOMf5-drkwW@GiJgu z!8NMUqd~r>3}PTMZC?Qzku;U!s$ES%Wn&p;t!TLdms+rtr!$F8 z^qbg3WRBnfA~vq%KrcyzA`2|JBK$qi!s@B7c0QA zfvjz)oWYj1A#ffh+t0)n9ut>4XjAe6v($N&I`uYWIb|&3Gxi=8fjz=j!Nw#A(ro$T z&)hkcP>H5SyaJM=s@YgY4%3-R1Th>)j3_kO?r}ee@p^@mP|9DxA@)NVlXJpkB_luq zupQD|GH%rOoK)Fc;^9AMaMWgk&|ksmdFjo!wA_#wpp^iqXfk|d30-&v&U2vvBl`a1O3yx%X5Xna;sJ2bM(2FU_r=cE6dA!Sul+2pt8#;$_7UtqhVe1K)%U!`TU<)|G-#Pv*&7p&{f*1h zvOgY)g@z^o=-hzQjv(0=(MdyMf{tx6P+s*y*>PC!!xf$38AK zab&jetx8k>0B)h`Uc}QXUPSot^UNnO7&^IYv6QbcHpm__p*7}f>0k4+9w&Utj3{X0 zQ7gr}aK2>^oV_aNCC1=!VuuzPP=s-6l*`UMSvJ<-E8q_kay&Kh2}nq==AgIpDHMjo zl&)@78I^FZVRtKL&rq-_Y0lZip$_c*m9{0p^BtQp9e_(aA~pNq9^Mne#+|569%kIb zs9j1BG*oFz+GF;%DvS+H*F5l-;{9Jyx=aztz5EffQ^gUU$~y}Da- zX!GFKT{5kDw-q{t!iHV4wTEyUfWq$hsZp(vSz~)L=}|3k096$!j>R4mqZu;Q^gMyT z8@wYGJ-APCB`^=q2;8>OKGDnAA)wiVYQIF^ALDE*t(|*X^uNeW)#qA8K>lqEQ|u5h6k0a20izDiY}NiFk&^6M^l&!lA?)OPI9tTmzHp zAx%#%pa)FDsWEEbRr9l2t)G_W^qOB^r^5G2_P7p!qNMFFLpewmt4WZzg zcxN{Tncqle_ zTU!Er1&5aWTT(fwYy|`?2OIdP?ptp{il;nHzGXWCVdhdUlHOF>!8Oy3$CCny>Zj~6 zm_{N9u!Uo2o z!$B(!Ge;WOLmpk%5MI?|5*A~rVxb65Ka51zJ`Q6K8Sln;-#wF~Cok;oduw&Sor+tI zpCeM35tQ$T11r0fL?^icHT0l2X5dE)H)C^Rt1cYEUd3|r0CP1eqCt3&;ilin6Dfqj zIc!YqXwt>6Kp(rDH5o+Taif=5*WiSr5{Gr%-#lEVKO&Zwxc>m{UAxo^wiUxLFKVF} zBu;C^n3Rta=3C&t_=ht6F*=1@u3!%Jv1%hQ^2I2);%vgHB*(O<2^RH}K_bX>4hNc> z>I9<6y?m0i6qIX)ot+@iL~qNlGh=d!sVbUNPF!B1!77Ut7JA>%#41%wEm)mL;#+J6 zg63`D&Obio$KHC`AIu&wOh&vR8_4VJ2ZbhvAiwt zc!Yh11Ra9*f>aEGi*#NIe7|5RlVCgO7fo{-F|9BW5#LNtuAT~8w=;2KrlR{k>nOcV zS+IcmjfB`?&+4uIF}Cv(rzbZK8iy=~N9Bf4`Ab8nhosMn6t0v?j+=(=-THIHtbK;}RMbAPpv8tGM>WiYSsN3T6GufV&70BA$1}eREPdfBSXtl03p77@QrY(qx{R*|T|(-~ zQ)`&r!5FkR*&aLs-BSl*-0pYaYBh5auLs3l{6J~-z86wCUZ66V>dqA~?Ee7dIf&bF zzZRsz{jnx-ag@^tn!*RjnZu|0VrQh9lXSkUfjeSn%qi|wG3#e=nsgC=xnYQ>63DN* z>UC{4qGT%e$avM=>}n)Xcj2A0;&0@rce%_$bz}U}w`SW?wlpkCl-R(ike#xaD3|8; zQ`AI_T~1g!unUyjs`oF%H=T%|HWKACsB_F}(r>xMp(6_(Ae%o$u~9_j9+Jx+(Xuq! zM2<(;N~l_oAL;{Y$7e9P(-NnCri4h!*;6i7F(5O2#|17>zKn_8V*s5O0*)$EL(?rv zl>nC>A8-`vd0sjIO~hUlabBVW&yF3H7TI&TY!qC(m>4sW*gAb%>zG7TIi^y!Heoc} zHNQ`)iymVx0%$_nL|N3U{Fc0U%Yhce?i|K1iJ;KlPZ_MB?H3e6#n43wlc+5$I_V0^ zvQ{i$O42g!ZO$_L@mn+kf`TX5W^o9?rW!Ei)x||o_YIoz+V1vihbR94We(|O@uO7C z3iFTz4HvTZYqKe2wo?J?3M`3<)Moi)OIs8og>DS)t%G;4Hwa4EqTbV0>L`{PhF0*p zG;)C%P%=DE&lpnm`B1v>F(WO7s3gDzdym0>1g-(ai#7Xk!O-4iFT2wA_&JBCJ(F2b zrtURTs;i3Y`Z}C^$TsW)(=H=UW%C6hHWRGT>t*fX;#{_r53kJRyMlhl40hZ!fgXFO z9!6dN0Ku0X2IS<$W!q^*Mhrt@(zIJRxpXGqt>naRF|qJVz;o1j9sXXiDU|amp>^@# zcZf`?MO`h7CAN$QZ>p%lwk($l(y2G?4kvVs7P8Ct3tNGEv*@S>&h{ph7U(Np>rYt@ zE>vo^7sUKZ9$|>Vqth22q^%7^jrVoO)0we9Tc`oUy+;HmAw!3Fu_4*?n|?Q84heIY zh*Vp7{{XO@#EY{%G^5za{E9Na^cPHG%V;I8J}xC0f7*?+_W7Y|nqIx`14RMqtXP_Wt%vJ0!LcHvWk zB(0A(DpR=x;v~Cym9zMnzf84<3vsk(5r=?|ToN@8l*nE25?%K#n7b2tjmD~&ONnF` zL8$3Yhu?CF3W@5aF{n)2hdfRPAgTg3Cn82`<*+ycPXdT!PncbiFRSii^9HZfD&c#+ z7z)gV`0gGn#Tk;~8O6i)ZEO@R*9YW7SKgmfX=$z*eFUkp$)g+mzf!|Nrk#qO-PZc3 zC72~6Yn1PsmV%HP9I}PoBY__IBr5W3?}?%=9{y?%>3%94T&;`D2yl#H*8z5K{g&qZ zXQ^0wuNzEdOFMJs9bEx$!7huyoa=(V#}C+rapUqX%&$v{XN_YvnYZ;1xtBEe6zHbv z`z+X^rDsxzMT+-*kn}7i3fLV{4{H*#wCZ&YHmgl#b)rP3glg4M^2@ox$H5=J4cyFQ z(S3ibXm|dXUJ=t&z#gDfE-ca?%R7`M8XD9eaaVCyR_d&@=1-*d&&bXb+R-PN1a`jdM`cP`+<9q_4sj1=NUEryB_{7yHnVX| zwQ8-thMnB;aU@#-L3qtSzmgt6)ILt;<-=R`NPIpi3BO*&~DC zgt1_wjCKU3_+iNxP_bMV@G*qZ2p(M({XAaORezYRGsBZ+v4z-Ns3P?Gs)~yC)z~S^ zDXwRAH^-(N$F>(Z<~&@r{>xkA1`T1JUo*C6sabHmxCwF05{Rq0TxCWqxIUkAhaj1q z!i%Z2PWz1X+;$%ykQ<%j%}#dJ!TJ}goLt{gQ?k}a7%U%t69i>Ut&~l*aM<@Y-wPdC z3Mvs$)^gm9z75LirAApCsPi`e0DSlHEZNUfBULxt zy_x3aJ0R;_(vXaQWQ z_?e~^PRlPys`D#qJmV`onXd5H$Uib=`5}yA6aCT*L5E$BT zakx}cUr`cLofNJaYLD^OPbhG8G=ToXddXHJPQ6S-Ym>}d2%=Kjmb`g^Ons%s_9<1| z;egAHN0@G=Z~TjQNaF!lRt1lC2^ih) zFs(eJ7H!6$l*>Q`XuQGmFz~j`h*=!%68206*r#>O;E^y+;begM2%+^m6BCwm;QOev zhf{5(OW7fOHtd?UG>0{UccXm50k37PyYbM8* zC~Pl~w*}MU*4;3Doaz+qF6oVq^*uOlfk9Vkt$x^WfV;rLYgd~T?{OwtB_ouREs~OHf~*!*(~Pr36I!CmX^xeW^oNI) zA6RJ<;?ee!y`fdtGpMlkgs+rdYXlJhq0~q@1-}J&W0U~HvNs;W{sf(|VnnvPzH(9S zT*x!rG^KaU4JcbluGp;e;^z>nmhp3x*^=dkO@#HCk@A=Lef zTL&gqOZk@B7UabtZcFr?#Md~3)GhkKx4?YLrKkiHMkeE9mp<*qILX->xt`_4 zwav~ZT((xm#MlRqSu0{abujRAQy|ne?h_)$=W_zC$$AU?E4la%#39;mdJjVzDyRw`;t_x5!gpsGuM5v3i-Y{dI7Yg`>#x800GRh|--OH}(7qW|s%-WXoKOxC{cLw4f5Lcz^AGaA>MZ0fH z;3|G)v~xF^YC65~UoacuH4zX*Rlj8-27eoKIx%@NSE+51(_dvnUKveFmBgqxEBsx! zzT28D+M2-kb+2rAf;ILjV_z*_A>P0sDbont7UNTbfBZymf0;wH(rQ$Z#xOX882H`54Buic#VZRU3}dqN7b%P-ykQe9DkEi(GGWs=0Jo z<5-n@Ez(t-!;OW?&0e%Th6a?DXnyHki!IjPqEdCtr1);-UQQBVsvwuP$@UDtFcW8R z;~JqW;#33sS$EQAI=lL<-y{sF9y!pxfNGeFiAepD_Eb2#&r_bR87#c?*b%EJx@mC3 zS?j#@(WGg*aaMBjwApOaSZZ5EjSoy81~`PGu35~{ zb3S5P16Y_KNEkHiAv?0A;V$c@DLlv^Opi#wmQDjY+3C1{(Xm`QtB}=SA-V?ZbxmS9I z_QJ;e3YOFZr6fygS!WCxlhDe2%Gf~*e&%^p_K960pUC*>xLi$wx4z*5RrLW{BCp2M z#hdDD1g(cL7%Y}AQH35L6-s3zlX?e9E32th4&qCh2HVU*rc@6L>Tz&b4aDCS&dRxL z<6XGo%5DQHTx!TdmnpoL3o~VI#`$3?HmX>kWad|8R_ZQfumu|0-z4~&ff2Z|sHM(b z$nwsmV)%%v7WFDAZN}HMf>a%!GR&+kmTc~p;Rdut3jupvB0gAJA;4Ij+#j2l1iYNb zt&Y3lp_FZ!FK+4-Z)+fIv^`iNtE;}Du)lLTx`O^HYQ4do`i{zHxLZ+%yh~SO#3EDo z6;Rl!a95@*waD6qO>zGK>V|gSJt0MS>TWNB_*!L=$~FuN;Hhra&Z90Z_c~>zb&9?%RGH^R-oq{?l_Vy3qp^I3exb+AFoJC>OC=uqB?{0wfVSu^S+2yAZ&w{YWt zokO!iTjM-5lk+#ayo)v_0%BgCF1o;G}p`kjh03Oq z)EICLY11rasA=Zmu~iiyEz$w@#HHaixKh$&l$!ql$W}whAfpxn`x#N<>R{y9*BrxH z7JG~}3B}#hF7h)M1u&&$eN9-WYMrR+P!K`|3&htFITd_+r40z%8<#0Hj?I+b z#3}_gUpxN*@^KgSkSN?1rS&UnGYq;5{f5M6OnHpu*za=oJw9!A$k(`vmojBSl<9wx zs#+JU!+1EEY+LSV_s*F^*Q+gtn#DOXb2oZ%wTU2_nMY(K35|Uf7Y$tPWYc5r@zX7G}TL@jop&2*B z)B#VQ8ZljtgBq1-7*#-TVq`g&2Hq#Xn6~J;fbpU{oRI6lv1j$*P}yDD z{VP*MQSP&-L4w9Lb^fKroWO>9gd(+!;wlkk!aG}R+v{i&d-_ZE&7;)f;8wBIiDLe_GOACF!GTt;K1)=8fwiN^bYZ2)Coarye(I#4u^Nz|=_sZn)mLlOuxih6m0jz;=e&uq(ab-4GuqY7TCZNjcCIW08mHm9W7T;D0nv?m z*8Gc5`D}s;s%Hj~m1fF0w3nln1+ZErj^W5uZ->Vd2o#w$?F+4|W+ZNi8!O@!*)!=z zrMtSen<;^5crL#~f=XJD;-Hl-bp3~H(JZ$@%WJEMBWm8lrRX-M2Q_0tn#f>a!&{Lo zB^4~AQnmq(sVDe9rV>^vg4sKyfV16HIg!ZL4^bqtpe^u;hpELKYPMEbi-*F|nMxrtB5ScsT6>Xj?+bgjEsz6o0fe*P` z1kw{0Q@adOaEN|XqdFn~0LZe2_E)1fM9OkMOvyAFl_1{$Ok>CUH91 z#cb|Y&8?SlzW9UjDY}~wv$8%rf+QmXVHhK(Tj08bu`6z9RydQa?L4CQ_*BWa^3ipe-? zAP}q~Rw;IltW}z=5~kGHdKoBFYTJ8*Lsvdl`0)`)8ikzCehy1lksv}&U=W?YnO{v=>C&W#( z^ZI;faH4xZct=w%kv zHY%;uA$=Jd4H>C_b|Ldy&e6k|4WT=3cO0f!J;XF%{SH4va@C;4tKX;xj|`{V;5aAlNic04I~t$a|>lI&&ZV7?i8$Y>`aX}Gbq|UuwCG{>yhJ6V@gO}>nMW? z5K&Uyg2Bo)(-G9Gy7;&-$1d;P2|A1!+X(1J6>wFfl~E3hS)j(LRbvTPemjND+lU#U zY-;SvdSw^7eO##emEk26_;{7f>L6E1YVnM!uHC)L7chpg0b}kx#{gQ^{5Mm*i7T9q zQ{whfv$k!qIHX#ZRJ$Npz-@H`*;9qWrc7(Y>mdRj;I`NwX?(;NCuv2>)ths4xa3|i z7H$dJ8Cd?Cc$N)P+DB$9Az@GD!Px@r0sxTG2B8GcTw7i=|rLfP#cFL zbKwZ)FCK;!sV5G_asHQ@qoovm&7dpF_7w$8{91y8e&WVtTTx`bOf?aWO=5Rf|@10}Xql(S@ z0O9oH6vR4*l-9t={{Y$PsXeSiu1NA$#{71&eR+>F0v#JQ}f$}0?R zJ;Vb_#j;lTWh7If5m2xhHPkMN?|bkpDP=V&lqUfal2K983X^QZb5fq6FX9=dF)c+a z0b>OL7{zGw3vC~4V;hw{9k1kq$;2xrWVb3rMCQpvrL(~FPzaDw(-ylcS+xOxUc|aE zXtVT{E%h9*m6zj25F35*{U3>*BZVnVJm-8AoL1W8*eeI-ibS;*SMd!5h8(f*~TQE_6^ydryCDqSo=FqIqD1iQIIl}lW-p!V|~ zA!+hQW_5A10^+vPHhkQ`v+g?a5P;mSxtPL)YGW#IyN%1@5gUQVc_K>390h4Y7m=qV zP4I+j`0jH%m32f$Q&V6GGJagG@XG|f>LqwW*xwM&7-Qi^CMt6%fW+9F4M~ysB44i* zdn*)F5;8Z&MzV1u6DMg)uwvRIuVz#U5&Uk$vp5r{s&RBY1sB z0-qy^aPtXjOlng{2I(2p4Wn?yTpjI^YjqCjm6TPE@(n4}*mE1ZVFTtK-M#j{U=uoH zltezB%Ousdf>GhWbKD?!0?5F&671FE0l=fj2yLhqymc}ce8gig=DNqvM6rO!=3KbD z%%i$M79hKq+HP-v%lV86O(5CYU3mcv3_@8-;>X!9$WFSB>3n1vrq@V)qsa)*(dGSZNQ08#)646*? z-O9Snq;QVLW9kHU&hqs`M%3i)MzSkIUg1FsC+I@@t@pb5gg|Cl9+c0jx7p=h*PA-7Z)ziNID}M5gLm!4$c@3g#4}tJK?H;dyXNfts`o)iCskY zneA|hDaurN*HeV5oVkJ>({iX>J5$LmQr52S&RvX@Qf=cA6#S-3U$}sV(*#A%TWsIP zL9VJCkEmR;na6a*gMR-26#bRwYKF@qYq3g%4cE8}a4b5-Zh3@~#^Pvna>XAaOeka< zmF=Ce;e~|*Rx{H>ksK~DFy|mHa}jNv%COwz1EafMslK4e9~L|JTo;y***We7Pkkne zj5vIt7X82$G720S4&+oy?}J#u~{&X(5p)}p@FU&ZaKO>piN@- zks7@=>I|OeaK{P9hzZup3M2dt`a3hl<{xnJRG)K5t8(57*J3|r?#5hstCxMjSe?Yz zW|*iOaBwo>){@GnbM`AP?Qw8Z-eF$l7;%-tTT;Gb&ojARE(!#{1Ry*Oz;8Xu{{Tr& z>o_Vj;#qeGJ5#7!1gmoa`AXZUERsvm9K7 zzAq)pm!wMJ1S6+1!CUNSbcW#+lmcEiId=6pktNeK$;xtK?BLX?eiB#vgG?1Z*|x&& z8J^}0LI>}Ua9$w1JY1^oWt$Pbfy_c&&vWi~l7yyz3L!;fQ?hqEm(F=pyW-hz7m|mE z@>2@|sb#;U6tQ3gpzc<|Z!f5O%WqfQtB3044x{QFr}?NVHLcle+);E9!V7AM+XYB3 zj{B91iL$B<-wTg?93~bafaq7J7*&i24a-~wxT-;oLu|e!qBqhbys%=pzOp%Gbf%ewf=RO1IgPGDF~LL~7@w1})j_4M0D6IPh8Cjkl(4ItE(_$?a7tCay`>dh zmt+GJmIJK4!T3a(-2I)#aUQusEaQn>)E09BevwVYa^q~@F6``fHfwBEY@Wb=c%ofy zWXpD!q&x&ZXBjGu^EE_3=|W_%3)aB~2E>!frSv0p|H=juZ z?Wi=|4ZgOw+_#Pj@0rh0DCYZNqjVbkgs!8LZnh`P@9J!NfVk=MpD5FyY^F<8PmKwj z6+)cAXTKa-4lXV+HGg^VFKV|33TqQQl~M4v3D^yBbq6o2$#(w$8vM?+H5lqxipr9% zftfO)gWOj0bApyJDN#krTSa4u0{j>ot|6#-V>j)!V|Ls^1Bqt#Jf6wvU#pP(0ErOJ zna!a3?hrlWUp+uj0a41YE?ay=p&9LQ9pRN^cHUYds;iyZ1mrT1Q!int+<59#OxPJz z<-Ufck(BZ>qix?9$kBLCJ7Y9-$s;yNf{$M6O)kJ71E{JRC6{VSXu{PN6q@ zExS(RcR7|!s2j{O<(CWKgvyjd>N%Bg@omkva?FR{EJ|9w<-|Jcsa-{fyoQjrAg6{Hj*C@a-uJb=}-ySkw5cT@1-p)ymlf6KrSnM zMLkN{`z>Yo=2lFHJ|6}`RG~+PZ1n=ZrIp8g%iXUIVWh|mt>d|DMe)$fA;R#-+boljmnjY^8ZIK79qXD34Kk$p2sIu8&f{kWTL6KG3D zH!jj;cmU~O>2k*S+jK)xJ0N6Dy=;`e2vDYT^e3+|>x+cou)`7h&GS!6o({ANvB4h11Gcqjn%2<#==V zv^ru$u66Dl!J7kW3sM)cm%rg*2jW)LVCFQ*`ax9NV>77rO02bh%Z%lPEs!ey?jmKO z1SpIlRbmxzH*!+I+|$i}hjQZ!Mx`J?s(w|1NOCxD=BC+I;<+Jb0`mY+*f_?HXHv@o zdWN#iOKYX{U!%ipsu?MiQrqqts5jTn_`C6uq%1le%c=*T*x!XzNcyx&%~4N4J_^ZJ zJZQ^G4U~Vs9sbMcLM_*QP16b7?FQFl?CMgaKVgwk)b!(w)|!QCx8sbI zvTxe)5(I66-K7k39nr|R3c~0`=#`gKvQ=W`czA#~FCzOt`8&u0zbb5D0B|@xn=fKh z;;oHnP9eE^#(~d?Ly0TJ=Ew1{((e2yHObMu!F|iSjf|~U63hPpkYzXKrS41EeNJyY zR>znop^jShEj>z!@fsMP+zCaE%ibe9k32@Lowpj7D{eA_#B8m2`;Re)PUW>b@kt$y zbEfu2+w%!*-fld(JChL6x(2$Y2nQ%RN&1v9w2 z1`}naTmyv~yBxBwCev38R;Wl6d+)_~BBjKnubA@&!nJvpxQeyMtQaH2W^700^gfwF zQ2T#_I;43gHmsy-xg(O1tAPSw#c(&ka(>Dnv3ywx6>#5jJe$Jq6gt08aJwbP=qe(C z9!XnLtk=}bCB%VqCtemZ!N}?s{{W(xRB5X=Fsze>jx83M9=c(>d8u}lu`-7D8u0Hz zHLx^eTSiKR&mG2+v}*v-Up9XcSu3q8UQdVV1KwZt7zHf8BTXu5iB>iIq1gW4(^8yc z#N@k{&hsIrjV-Re7{=}e>|%lS-b3!YMEVIb;{&j)2jB3Q=Sd&35}9Azzb^xBCy4XJ zy@xXxEO7kf?%U#3VOzxJe#{Z(+t(?VVL+_Ahi`og;e&NFCptQm*TgXTXUi$*z?DZ;MNunM0^oe z2%Vfq9DutrVp7DWnCFgX?B8)2dS7Qu!W8;}5Ydcq_zP|^@MTed#Q_aU?`;OK^(rQ( za7PTZI2g~^+QmM6ZP#;H!c=Oq)K_aPRVlvWBCNM^hMJEEoa}rFaj8r~!3(h}iujcu zxr_0uc5r385~@w3)5HR}o$R1?Xwl#y%W8DZn=N>-aYXFxDTPFh(f6jylU}-8SD>G> zmIXyG9FCx7x`9twQ)Wvx484Ro=5|i~6N4T{RHuUw%G;RG^RWxbb9NL4rRokCN4P=~ zxs*UJ!7+moBWl@tvaiC<5tN3LA!x?FfIrh?MX2qF6(-Q9A>91fcxqzGHLu$YwM%_e za{PBX@En%}fxUiO1VLh0?R(gGNTmb{Bho~9p2tyX4Tw|GzxF1kEDz4R`UN_HWVwAY zJR~YRY&1L&v9D6Mm{>@Ko_o=1`v_7?Lo_rD4nB}$2B@Rj>o&h;ky#NN*+4$eXMgfF zD|`SKhG47<$GAfqYRrYqqFBHR6PJK>Zt#uaZFx?$)UMhW`Fu}X+ynV6^^V09rCZXn zwkjK6GKMr5#d0orY={va<5xIkEC&dc>esEf{%%~LgbH$SuZ|EK4L#JdZu@f8bP!VI z(2l@#EewXi!|E)f&i%*WO@70`==ugyh|IKt?A6MGrSIHKVpUZ_&rL+ILK2xw;1y<6 zPX+v$lH#!yaFpfVOE@*0*yj4y6}1bB`uk8bH!x z1h|#Pah@+>WD=W{{!6$-V+*D4!up1n>KY$Xw~93J9a-C4*D=IZUr))T!%MNJAqkU${;>lvYM4C5g3H# zN|m|*sRe)~S(R|zvr9ZG<11Z-jd%n?_?px58{vZ0J;Yj3 zP&^@#HU%=L+)a$4BP*W?D{r|}-D{ahuz<>yD86EwNWU2>;@rR3ma6O4ueqeXu$>)8 z3Oyx9US?C{xJ#RN4(NE{t~)G(8GPK{hXZq3!LpBcDTKQSl_7OfisoeaAi~{?ZDrr) zQwR`5{TAtnq#+{6?V9)^c)Mas^&J~IYg-$*5J9+>SaFdR%|tdlj4ox(me#DC9(~m! z{J?5c66O4J1xituuc2fn#=Sz|oX5c5ek|~PK-nE45CQaa8CG^gl&R`7VRXe^&krz{ z8TmVvbuQuePI|_CC@?W46vbgv6!z6V<()!PvpR`Mf9+cg2rRNx7GK0fU0<&q^9ii9 z55}ETwEg1+-yb`1eK!mgvb3ZQeV30s%VLCZkEGhDt-R5_o|0cGfT;K5sYOE17Z1;` z`{a1oh0n-c?wbZ6?4|kCvG~rldEE`tdSeeLaWE5oE|OFQ#q5pCXobaudZ^w)#T_xE z0>g~MAsR}PCU(HN#Q61m0jk+t(I4elE2SDDX%e@>6ieC7E?Gsu$yWRJt|7XT1Wb3y zsc&d#WkxY6g2QSjDzHuw7=_C9<7X-*Yt}fWbgYHLkbtC4M3uZm_2CFO&JCJ<=`KOj z3=IpPNRU-0@DLU2_F`>46)BGG!PO);hQ=ZQXY3ssxl^1U$z%el%lt|gxlgbGDq2m& zE3`u`!)QI;)mXt`y=sq`DGu)&;*(^vyW(jZca?~?3VOG3sCt}66hO}4aZ}fcfk||l zss{qd2%9PQ9So=3u4B7r1`yUTZb7*H%%)nbJA%Z!hT}EGe!$seTG^v8FHGuZ6i zOKuB_ifP1#u7DTvE~Ytrr%Y7urhIrWz*~@(uQH>r5}$LYWkzjIOX_8}Q)OA+#0c?d zz=_0p;(o#>qHhOLIiHc+>J1Phe&JZl;W&(se)eA7!Y8ON6EBzoEWP--mOFB`0;G8v zE%XM}g6#;m1>#5QAoV(xZ!qv)bsDB{i}434Vwpg$?Ch6)pxWPC2AdjaG-ee8(+ZaQ zjxo7^N*N&(voWs)5lS`T3iTJs+3KF7F4gvx2y?m!4F;%_=A-bZs$vm zvtnKBtLis4Qtyn}Q0JLgL@Orc6$NQ!I}(+OKPrPBm&8%Mi>L%l426f#}*8kTx|t@mtK=!>2AK zXubY?f!s=A*Hl`CzXWHlBhabONbK^+-mc3+i>21RKxp}-o88r9WzC5OO4c6OaWB`o zQP~4yO<*pqn>}h}Ltc`Aevz^cV3;Bi1w)_`o8}!tt|ns`np$Oj!ux%qR>O#Jp4>#J z+u;GXuTVS*Y*}$p3jCzBz?10(W zZZ1=CmdoZ1mJQhXXezC^$}d`ofm6Vi#vsvs16TsP2vA>bzyWZA zqMSqc1_Z(r63$@aHF&{{saqJ;YQw#pvbXQX7ch@8jPbV$z&DQHqUFilue`XLd4|nj z_7bjbuUWc7XWAm19hU|Ekr<9v*_O2AS=q#{c6Q4O9u^A*f2c-V17(n?jlpbq$*;Iy z70h?I?#Cv;@TJGUMCCTB0po{)ZR+eX5>+);=qMnyrexjh z2h=-*NiqR5WlJMdxC+AVE`P69?xvKf1HDm^)n3+f9=vxg^$WP;%n%%*I?@!Sk9WuW z>J>8Lk-2=%;eAedZ0qh4-uJ<4EIQ0)T&sDO?E$_c&lTZIl@ne600wCIWicO3KWcN4dwIGb^*$kq6C zGu_P6;}F)Mz^JCphgLthh0<^+O(m`ub#mBvHN1kj#mu;AQG;BC%d%`5N}y8Z+V>oH zh2tmX!uNbIzZTAW@Ugjr1r%#q;gwSSb18PyU)*VPzAX}?Wy}8n7aP@C?gUcqY}i~X z+rA;pI9a|hQlXR*^vSB_4y_)LU!fqCt6#isHw?KXDU9kMoo+_mozynCXNpN2?#Sqm z2^=BMx$Ykm;=sfqM17Ne&3ld9yGgu+X=xKGg13Yud zGT@>kHXT#_OXtGeRj@__^Xs_#mb2r*$i;$PO071C;92QSHyH| z=95+44C2(Ew+qXOc*Uh%F*n$;&n^CWjzhV4lV#@)Yu(=z3V^HFZTpOqChH(R?o%7G z6%8-z<8tN_jb7ew1Vm3JI=>7`?njI#2&A^~ ztYEIsbR51)2Jzka_wxh`ex0IFy?T>=tjoE z1_?GihU8@2jcZgb!k}Jcc&S>!6Ivy5M!*BYc1l9tf0*3v8x6l2#&L6Zxb7Yj!KS@M z2Rw7?Y_lv;*vFA_o*;j%ln8CtiLM}DDX`xP1M6ngPGv*|n_gd#=69@GWz^wT7r-|L zot?RH?Ws=2Q*!N(pNV0gXx{8~ja+fx2~hPf!`$M+WCk+9Hti4h0AEiPu;x=Vdj9|m z>6O2~QfkW#CrcuJ82VL3Ze!g<*xs;@G0h>|_IMikhVr5?kXz>Hr2hc5DsQ=MOV~ha zD`FsY3I)f|u-N>wl2H<2WTx3rb(C!HiB0o1Tv-aWxG1RJ<8$UPTFBckdGML@<1sk! z(nBLx2jV@EwXQn{@&3eq0vZhBEKPbC6RLZ``RdK@VZi>?svH<{ZIU zX~rbEQFbg2BUSrQB}*-v?l?pmglXBADy0<+k_IS2N$A;HKJ5Y3`E8>UXK{hhdJ8TZ z*MdG}mO*crL)7WLt=hUCn9oqUV?pkg`(;Af(p(H`9s`BcsYR0|upw9A;#@r&)FQmB zxx%~*p!FSFRxVU4qLznB6YhkTx8auuZ7z3gx5fCm%4f@0qoKp{9@3;Ajg9y@rrkvq zrN_J2wZ5elJ9~sLt1lZ?Pu>}X+lZQ@eEq^zdJW$&4t1CFK4s%0yhi|=>H>+zg}z(x z9}uY^xUUGR^*A@;-7y|sEkTIyl~X&Igt9hP^#F=oDc`V+m>zh)FMFHkZNA0!+em%9r3svZ!syB+b;GT z+`hRlsvApzyjqK$^dEgA>$uiSv{_v{o!t=z^I$>1FGV!6Uv1i{+xgV4m@g#jncN0Z zX%}NbQ(aA7L)3Qdm$VyN^{6<=yd$8BxiS9Z9Opkza0U>Fu}@pYBqOfXqfi}dauAle zvM*KC0Q=iTh_ZJMW6m2ZkPhx z#S^h5X#1NU;zR+)^r*a+q9bug#JPJ=9G9_Ro@?K^R|Q$(`#`j{bU4Oqb^icx<~bVJ zCI0}aUl3s56Kn7d*h+)1o*{FItYNIG*|&0ucn$U3Ee~UGmrf^l)GL(RolDttCIa43 z_QX9hn-_ZB!KWHoRW6q+ZIq0E?9L?xF~l@wd_XQR=}<4iE-P$y78em7WkgOfyq8)y zMfK@$I7I8kN+m*!Mg{%Ei+<9#%9xv@+_vGS&qe{w&f~8WxZT1v=c!EYR0?GxL_0+z zSqvknK_7HR$Vba!!~)%t-bPt1bt)!Gh`_Bl_5Bedn(uB7jNy$}zW|YFU178p<^sMh zVV7#Vh}9?xJFK~TIb4-dLR$k#+^7c-j@vh|3p8$Gn^vGAf+I+ji5uCsDp~Kjw>fbT z{8VeeH@{K1t|1b=zIGvhV)_T@P zX}0QLf^A&4s1OU;!4;Ql9a6)ITNiWge~vzo5lf(bFEP)L%an>BscDvV8-$<(N4nUT zGG5$BXoaC_D17Xt(uSZjxK$Mr03BI0NKtg*2~aq#-Q=Y*WN?Qg^ovm{cK3^5$9IbM zSZ=poz94cS+NzHGx*8F~{Pxog- zjisEyVX4NX{IHA_mDD_ZZHq}42%a9h%pQ&+R{)F8gBW{P+}B24rK}wroSnGK+Vpxa z;_^}irre5;GK+NASKwqeX_*x<76oFs5G7^76vu>P%u47n{K%Zj<~QzGd)PDLrA(O> zi`&P%c2`xT26wXT-2VWR+^;D(RkD6UrP{1C1mCr+j?@BBw zkM|M@QrE)~a$vo+cz>Q{BRQ8TyP3W#na$m()m_R`+nlJ%E18!rRWrSm*ATXdjG&PTxrS2bFG6m=YB2YsmmI;(RDY` zGPW?se-hj9HIc{oheS1Lf)Di^YF^FQe9p+EQkhM}to~;T{^4Wldy8>$>Jxp-VkM<9 z5kU1igDJUNQ$>%dw;!l`lp(eYC7j_Figd()G@x;^i}p*F#^GNP;Mn?<@Lg1<=L@1i zZ3nQ@6IPs2OK6F)Imp>vYD?JjvZM#4j#uKh?1fYr$(>3fXCHS}<8PKI%=HX)0^-Ym zDnCTw#7((lVy=f{8NzH*6TJH|jNO(R%Qi499*IwgS>br;fjiF z7*VF#?3C(0lmWU|^s)I4!B9bfsaAn8p6)$~*xjo2*P74@-gkgB*tyJ2{P8lywBZF*L}t zuHbzBIKWO~X9`f*s}Is8FsrsVe-eP6rtT!<`K1njtO6kF^^xWKF^U0f!?_!WZ;u@1adtD3a-%MZ0#7R`cnD^+j-ZfldhJFBDD z`>9BgCC6#8c)3yI+^z0B!w))Edtj`R8u7t<2}q|h%hz@RABo}QvTTtlrT);$k0e0q z3sT@lqAZ=qE)8Vv<}6ctWrhLgx_kVViYMeRv=aO#^DlB{*L46pEF~jg)<^apJ=+Ec z%+6{yl{se`Tw{KA7RM#zeN@U{6W@h{pdgmJ9!Yv535$8%i`o}qF3EGUQ@PyYJj)hY zFROqV!2+1t$JA_mT)mdQat1P@wX;AS7p20Y$6$XU3YRZ^!mX(P|1%qpGZIGjoPdoe8sd0Tur^9moea=z_#4QG9OqaHgc>%LvSh)MX z8Z`61phUYNrOMP+e@vW6N~FAra`I7e-FGskM&`?+9PtbHHIknu*71FcVBh4iG-lk} zjOCkA7B?zfwxG?vB{vY}DsJhIaErpQ__@ri1Z|C*v88i^^($cSa=D8Gq*$l&=3H+0 zpT08TG&z^&B)x%(NN}sau%@z6!X1B@NKnQxFt9EEFnu4cMrPQeN6JvKN zg7M!l=3>u{@GQ2pP}y6*hQ1-e8aioTb`Qb`Ng^pK6DOkz?gq$4mQfHE+pmqtbi04q zIlmN314SR*$%>_Z;KC2}4RTLzpisFl>c0ACnyMtySTvQba1CENWvVVl`N4#~?_4T3 z5e$slH=~ewfg-3&+sr9Ap5U+^1D*c>cia${OJFoHoRf+oBxha6iDffo=cbED`~kRC zPcUr&*h@Jjmk86`9cmbCYwYdb2%ycLpn?L0gHcLB6KZ$N?gvo>5*E815#!uNfR8a) zc)Nzsff_;~G6;z9lBfyAXal0BH3Ud}4s(nCWrZKv)EhH*(ydiZGOh?h93_{vt6t@| zS15~RGq^meO2)Y=aR5C_j7=~-B{$()W=*bOu%`20GKqN_a<8%_<@Tc0`5&$zIF#{{WrF za8X&eJC%LT3AO&ET8=XYbZibQs{v;Gv$U-+BWq(Yq z@wF|(`IKC7my-Vg?5~LYgklM4Aw47s_rUY~RL)+95O1mqCe?8cViUQ(JBceM>ogSi zaJl4O7+=;g)LOUZHBsr6y9@UTTg=A%5`%cJEFL4NDIFhzf{>t#~3-(SCnYe&4iXk=e80i$VcOka>Vd0#l#ruRggLNFAnNU&S zr&S$ADBz6zox;(T9$9M{s~%<11KTJD?&kqu2N`oQb$Q*Z>lg6>Ln~~pxbQ#1S{Avc zHy(T?9NaCuoWzyofm_ULhVhFwVXo~bpg~ca4cCHh!nak6hyq#l0U6<~j-Kbz5!M}^ zy&X?g7}*w8&I3bb!9oHLW5vGbDK0R`M|a4GI^qqHZuG6y)IyM!5t-j$~nQ8lNrabMLxA*5r2 z!O$f4!TAZHgG)IWRRlGiv5^mT4An3-z)t{Q`Ay~(6I^jGnDH&AP1}dQE!}win({_m zZarIJj5k@sjg6n$TL5`Taa?0?weJykAVv^HrGXJ2k{?W~z=v)6K#4XhY`!Dqi1#_+ z7|UNi7zM~$u;yKjH9Z>cSRfjGDwVD&VD&cb6PNh^0I*a40CRoMaE!%6mVS6?n{(+7 z2wy~bmaVYnIb{1~&A%7WZHn<>|L7} z%a1g11@~Syrd-#VvAcr7;B!60d74eUmCnO}tX-+=eME<>C5fg@wx>4;w$#}3%*(Wz z`HZ#F!Bz7suhMtOQnT<}S;yTs{Q|=_R*E(beC(>ZeM{t*Ol*PRF!5!; zAT?38g)i(gM+(0bfpKhHN9r}X6_-)wSK{V>a_yGa#QFibunHdFU~sPNl{bZJkt%Qt z+7oPT^YbPuD0E8C72L?JW|W^2sU}~F2FxjkFcNL?2u!ltT?SeZKDRpAu63`Zy}1-J zqHL#&k3J6tP9PU5f7I0%k=BPC%SaCKIcaY8sytVX+n5`*<0aBlcgzcgd-2;7#Z=zy z0?l1qs<;p%+X$-aRsB$OJAmGqqk~8iyOfG4eMH-Z=fO05M*ZWZvVF#`%JSDz)0EW;7-L2+k%I>C2<~1A@3KrmF)sy7G6ixswDWH1%)PSZ zlioyd$x}l7K#M5q9KaIiQj_{OhP)PnsEyDVS&50@Nx(4_0 z68L3m{YH=SY&N64OLogAKh&AHl2F9uaWAifc*eB*{U4_m3hE1D&IMQyZUa-|WW zxYfDLO1V)MEl&hXL;nEc4K++r6y@crW@A{hlrijt-dR9%ZV^kuQ9Cs4@71FcywLRyI=f!wnKa!|`RSLzi6#0Z;5LDr+gpX~UTuM?fD&_a2EWY^< zBg&ckJB#V%4q$9^xxPJmg}^SRt;8BBP(>elwXS2 zrrf$ezaa{Y?QzhljjqTW5DLEIex;B^T(i-uLB*=epGX0;tZ`}CF)66j zsog|JMssh!k`=ufTl)@TMt0|@)sd%?b;L=;2&v7%@oQ%!wwkIfT)po90N>naNOc}# zbu(&Q5yX_kxPiARxSulV;^SdN6ctqmf%0_4w9ofDjYG02#1#6B+MT)BROz-jOUO)@ zHr(7Kuv&SQ8cQf?2hw6Qd|E?VN_+fb%ueF7FZh^4RW0f&;@d6o#v%`X?2hxn0BUl zq9fdk7zCzwE1A;~8-h?o(5b`+EBvUYgVZm(k1QB+^D3dNuLbl@+Gn^Ib2>mC>K4#G zX5LP62RnoG-Mxcl^eW$m2`>PBLgK_-Glj;w|*-jQ`~nR%wl5u zRj+DrmG5rv&4?${v6@)(!C|fiuDG3%Bun2GX-`n%J2nb&D+^|>$yUY4#O4A9Kpfu- zw8Dc!+BQC&Wx0%2q6XfkpGZHrY}Nwqc84_z&iVY}n6wr;U~DC{Q7*JF=B4ZiU*&p6 zkxrAC^BMiON#nLz)|;xve_bM8%x%Ig6zUMwQ~k5W8yWmPS>utCjTiD{EnEA-6EBqg3#paw#UbzpBt4lNnWiu+?+Bgy=uB zYCO!QWiXU-7XV`&`bDeK5~;Mcc;lVqElrDGluhK7V8`2h@jLNX5qZBkEccmEfxL4n z9m;Gzht|#rCip6%qgKxR8n8kmqc-8K%BV_?(wE$(JdM)`NuqPJtbt?>vjwtPJJ`viaFibU7hfpkG8zXCpgftig?|`es4<4FhA8#Ng>1X_Z48wi4w=k+*Rm zmapvp0PITlJD1?XYZ$i>iIIuSYiDest%ofWmQ|=TmjRtox&Hu9(mX0jwveib+Zuq6 zf^!lh0*#EW9AYp6El7JKEB=J3MX@x4>-dj8rNfi1V4F{yw7t)hL`%3=7j4&YYZS|6 zJ0$8w_v`c{8WPJY<~VaIhM<=b+{sNbQDUb%uWCkn+yhp|!e;GvKl?F8Bb8z677C^9lL?y4Pp>zZ&)Q?pY1Dmbg zw)+>zh7^{%b_e7IGK`*uG*y{?6L!s}T88d-D84Jh_wItnJ#!3?F26EYhkAJHn+X&Re$(7#>~jm4@UQ(gJYZu8r!f$G%Rj5oZhGQ{jBtK5j(Ifz({ zC1+5x=Ua-d0KFecgZO3>m{b#B)Yz4#^l)5N z_dz;|I@ztl_7G5ZR8uXwQBI$z2cj1e9%BRzUfgg14S?S}C~o{Fn-R8Bv`$b9A(2os zjdt>$ArDqT)&VZrJB``5iJRb)wKZve%=Z+4jYI8!Gf8&)xdlB+_?^w!UTTsI%bb%S zSIDp9&+!q;HZa&Ko|HaLV=qWX<1I|=_DijXLzt!HM&VE?CS1zu9K_=xQTJ1PB;-f8 z>B|&l-A$%BFJ+#T;Rx*z_= zX#W7xQIea1eNG<_KIKG=Zszqn;^z<-I86POd1cCRBY(t2su!=&&LsghT=$W?tCYVG zh~E*r=2kSy^*fatwM+R9oHOi~E!c{1-a3UfFq&m!Qwx;cO3vW4IQt`d7v(C5 z-io8u5k&*~bNdmi_L;ZkYx|c1#VYF8$1=mBSLI9V#}`qA!VlvwAU-a49%Wo^O)Vsqj_gz;4_{pH+S_sxI|j8B>LoPYN(l z)Khru83o##4r3K>BrzYE%IZt-uLd*4V zod<(d`7z=g)G>`ggtR0}f*dt5c5DfI5~Iwwg+k>=;!|*qN?ZwL^$(&nIR!;EIDo$Q z`kC^}V$n~>37}TvjKy;jfO}#W;0SSE;(=JQZ&?KjtcBeI!LDVt_+=_sNSn&i;fdUSOJwp zVeoSTn_`p#H7J+qBleb+QofYx_Qac4S8Gxlq7XUa9BjY8Jd46<$3mK@B|va~`tYrD zFXl8Q=`|w~w`)oISoTWxOV}V~j*V%WGAfraaT}X;E|}|r{kF3`-Ag#DV$el5s&`LJ ztQsP%R@qvryYI(PeaJ6j$I+v@_B_Og@GA6M*M$i zmcyHg950SjpNO0`L0y~fqS8Eq&YMj>jD>g9uuIddmxWi~%(?qCb{9 zxwTYNVBS`6Y4@=N(9CAzu7f%yMSj1J5w7v4}P(oK&v+yfU3#kf6JG;t+c1-4E9x50tBk zQLVXn)^NrDENM=0T#CM6t~y`*i@iQY0GU0Lx{&3t4cPfY@o_ znEbZr;G0M&)wsSJgJik0*(kPfsqpF1(AM4&35306w-xYRPVz0XiwL!Efev9RVLIQC z?@ieO@N^XDRiwV<^0iWxiwiEFOe&ZIaB@)f^>mXN`x@AHD1(!S5IK#T(zpN<<|vS` zicr>K0U*{b$BreCX3LFRQ(@eqUO+qzrS%zkJ@XFcOQk4-`OMLd+-9qOZe=#kG*^2p za>)1^x?oboLfdYl9bk^#zULF}a|SVGy+5VbX{*&tmjYb3N%fCVYM{vOJ~$26wJOQ=P??QdjpNW>OL+Iw~L1UPyJ09++H@} z;)gx2e!OHUn5;|CgFGF?EEcwzaRlSB7M13^?;zt^%Q*B}rw!{uo~C#(wl}|7!&xXM z!Gh+|b_L#tvKJt5F4ZO_oXkAc&RGjbBDXcMC?W(kHWd6>*l{?CEoS`tw^z1NtVzXW z_cK|Wvx7H8t*DMDBJwWQyo)9Ft0j>v^w%HtHsNUOkvDa1MO_CyEb6J7h2LucZ+ngp@!+*B|+0?z*cn0GC? zL&T|V@^kV-8Y11K#GjDeBl`+jQn&%+?BX7k4k}9o z*h>=nNy{E{uMJ!eBHT)VK`r*j(J?C3J-ZBK3I{eXa{ghejZ0y4P3Vo>Sl^2nYJSz+ zNr!+MOLwNtKxqP>12X&$?_x}!6;oooYPPS`?mtqSX@#Z6qR{wU|Pp@%>Fg`8BdFbvFR35iHB@&`Rm0iZ6W)S97 zLZH3FL(ZuDreDnOiG)v?k~vf?IIsojT*9h%ErNk8h8E&;*rh+j;PW>fVzH@qTJ>{h zQJRv=xtBAnJ9jD)+VG70#U(ga?_oDk%uC@Pnf(Y!awYMNztVVqDW!&}jM9o zc;w0SpG?@?A{u*|FN-UJEL9I1S8=&wq^EBguoxd2C%78`I8bK)0C4a}pz!z56YPMP zhb<_srBUFIF}c1!{E_ZiX{`>UVwc<-CwB`Yie*h`Ih{hT0HO_}5j`=I-LYtQr$<)= zuuw~^Wdp1%GT2hqaIoE#;H{SNa{42l5R%h&Q?DJx^rGW{zGYzQmuy0>!tM4;-xsp~ z0GZ44GvA7V_?_Lb-n*4h*s!Un=``~bb({RcubI@OV=>UI+EAbuh!I8~fnlpOkP4tN zX%_mG<1b<_V^A_g(SpivBUd-C4*mG|Hf_%MoyMiSe^6xGBX_ZKF6Vcn#|BR4QsB$? zjKS`44RMInxDwg1tCkA3y-KZzrLff$xiwMoM!xIr1>*g@{6Gp?Y2NjBaVl1opbhj9 z*NK-H@dMKvTaXt(57?-W6e=6+J1h8NizxLRJ6cqU*%{7Oy$Uo%XD-grABjZoWx>)l zbGQ+e+RKgdYHIma?xX0$`CPx6j~3CZ^s%N@uER_SOudvYqczEg*}kVe_f#o{H|-UQ zOdHGA8cs;dnJE2sTW+pdQRa?1b*{(3BEkDRn@JT~5>NOaXJXJV5mCu0|!gCIkwHraV;H>%EWs<#}`0R3V z9%W9VY^isu7^GHAnghr8!Dx%bCufvdlubenaGjen8Igq4 zy6tf;?=|Sc{Snv1uMB1Nw*Hu;s)N)DrU416B<;)z;y79hnm z_+>Y1kX^Z(Q?`86LZ(!@Zc;SD#Ra8nkh^6f8fmQI@w?*8D>mf^uJ|h@6kaSY$-bw@ ziULYs$NvBmZ<8p3;%3NewRlUYY6>$rpd?O6RNa&;D6P4CQR4;@zjYf`(FFMx<;)h@ zp|_AJ@HsZ!iYR#T;PV(kM$T^H^XWx=dCQm-0{6b)g4&GbD2L3tGzc`Kgotu^S}wxR_^_58#J8-^`g&*ZT%4(bepnv9~nT_imF;My<7;BT9<3!6+!zo>>8JwuFO z5oF1=ag1h88S27_RK0*xUq^$>Jw7At+vm>W-1`$o8E2$k-O)(&IixU9mg6XDT z15zrL9Wc-}*#Oj&b|YpgKHZBBU_(2U&DmW_`Ok6Eh(aaidjKvp z!Y{&EF@Y0&H!GQ2`vf|UqlC9{(!oQ65>P+ z*xZMKg|K=hKjFVjO4f;QV-H2A?UcMkXxih=J`tm4jOAl&l=svaEG>?Rr?-3%Eyu`VQX+vjSaPNO6 zCvXnIIVX1&LdtN1L1Q#2N)pv#az~fObvZ3U`At)zU5rg&lBCwKVall8xe#TQFp`Ks zKrtE8SiIYI*1JRZ6E8<|eC$6GqPJvcln+2CbF?ldVLO@}%)Ea!ZOWY;-d7H#Jrc!e%9nECb0^y-aqn}F7`u@MBC)* zC|BU>Ecm!!s^q(kSG7x0I485grlN_)_(^Of5x*NZk}mdIpHkkbqXX5=BBCL`LpQWo z>o4Sw)UIK!X975=>+Wd@#cPfvm#8M{_z?NOy9)XlmCHwVK zzql!Zla$^n60#S|J4%&63WW--7smA|oXW`%+BSCr<@9-XIb2TavA?K?S6tOqC+km| zl(}e)&K1N5K;Qe|A$JSdcO3@Qx+wB|HJ<7g!=F;ZvG^bxGp2VGRAgg8zSz`ZMY$NIi%U0f49jIg?3Ks`gCk^(C9aUcq`(*ln`C5+3+^UT@Y zPoEg9kyhp4YiWVMpgi06Br5Eg7^hGu!7AC&!p()V+)4yNwnztA1Bm!;ri#r}+1d%q zc==1Nqi_(bW6VMYBUu{Fo{L8mu&ahiZK@AWX$`YCxeKtWV}~;GA~^uBnDgQ1#mC{4 zTJ|pz&lI)>Rm^20TE8@jl>l8Mn;Yt2-qGsI7}kYNIoYj~0*QOo6@HJ{G0aFa0Lmtx59A<{>uu zm7T;cG-C0@sGH0tN;#K1xSdMdxZD`i8BN56_Yt@eyVwynEj;8tz?BnuihJ2*!n>C` zitY(tg~-xC%AVa`qmUM0Lc* z=HUG>>Lb*x zxD^7`at4H?>K8KL)NbW4E(02}4bvS?BR!y0^cfG(;!4vj|q>hPNenIhD%19HfVb69Cu;wM-IC zm`j$vVr*+>OHl}7T`p8PnS4N5SEed}m@o>j7d~5|XXzbUUK+02@7um$0y$J2R2-=t z3it6k_x=w#6qVh4Rnj(d0^&6ze0sI#c|F1+xrnQ)ps`vFl{$A~&jmzM5{fWbS(`62 zfLoWTaM@hJuw6>p`M^6$UKx${3`Z#YoYLX%7}tNf9~@z!xm46oh&0aSJ~ZTk2~dKp z77~B~B`|3iti8xZN}_{Rcq2t4kt?4R)J=_2&6s(O7z}IA{flb*l-5mz=uTmN0hh2% zh2N2Wl-ZZzwF{ghddqNYaezUn=SfQwD{3q%lp#(BcVLp)+^=3S@V|3vHFMv92siWE zy+86)sbKc*zwAd+r|fQX>R!#9lWrr;PjJ3r4;Dr!45%fm;h865dPTI+Z4^$LhqyUw8f?DY-O*|u^E^u>6M$C4ql6lqBIN>Wj~&gT;ys8j~c>TmN= zV_~wGw|O<@A#%J}RK%@2j4nK39<~%$FqY~j!HB?Sq^99;=Hp%yXKXK+iHC!q3woBp z6-rEvMy4W;pMYef+8 za{g(njX{x3n}TatwNkXMDx%n+wLc|x_6}?!Us2|wC&{q7+E`T{Cx zLt4UV4wQ-Fy+DirFe zCYb$1qh+sF8PYs*R?cGc;pP<7209bp_%UKj+1pc@b#jT@E)(tmx?M_aXwKzDP!`c^ z5fgBNbS?NhKLHC@l&LfiU52Gcm#uEcJ9&X)IVN`*!7oggw^H{!D+o@djNvMsoXh8t z?~+_Jbb@|Ev;eo}{#^BPuI0J2d!5eVE>^w;f#IuR;0WnZI|jtlMqQ0wPxgE;kG)@m>U7tdz7fiyp>VGH6R#JsMdAX>j}c(NR9cSAj7D*A z5zs>Q&2uXOi+73#ex99#$W8Swgtj3{ysys}SufO9UJ&A1*l~ALxxr)l9L}YpGM+4j zoo8g*^RS1~WQGFv#6ZhXML{ zDipogIGA|xPmQ>JMh40eL1mxC*UZNgYLcHDWaTr%9hW=fm|N1cTTrwX0E5m`3-{xC zjo&daszReOP#$S7x>ZgwrL`qx2H3?i*B(tb-g^g#@Jf$03vMvBBapdFtdv-WQ3Wik zk2gOja+UPtQsjU*RxaOY&)IGGtc^W$EU4YXIjG+FBh5m*TSf7*+nMViRKJf6n^W#n zYzxh^!|P@l9fNI{+E*!b%8XiG)E+hf#T+ENH^x+0oLNyYVBBox9Lt1QIjLAojYj3b z0n6|I0EiGg!_>W0P#2G5eN<#AuA$E|yac8Ta*QQTNuK8BMpnw7vDtfyJF4!M#LQan z>N-IDpVRVi%bRm*b#pJpdWSs1x5FFN^u$FHdWOp?CX<2gJh4(Gml<-I+}@xm7hzmh zGKwvLrxMAwWy;fn2}DslmW~dNL@1s+jl|M!&Yq^RYsI68@?TQhl)#4&zDcKv&r-f+ zy^s#(wq37Jif%V?PY*M{8!mSMPvyB~%SVWeD?<;|wq4V~QnnV&uH)n*LB;^~wNS_p ziPOYyVq{JtZb1WfGQgQpm1$yt>rZsG@;NTyDqG_e9%5rBgKL7s3X3blG>yyibZV#X zs8qPXWJ)ZQR}?==Jwu9H$yTEXUl}f{K^txA56maD)?8uSvtr(WDsQzxTlq<+jXxMg zX^?(-n;2E>?S>%h0Gf>0-E-ktHx(_Yn;0r~6O%*W@NfI$%6t@DWy@nxFG7%fFo;VB zpB217?o{B5qPX`h@CM z%a`J|2qieZg8|+Q2pQEG6z|27_a&1h-S|5hPU@zq%L8TH;F0EB_4ff@eMH4Xxutvo zEUP6?ymhA9?;sGBv*l>^-&1p`8jXYV5~qAd#7;#}Iv?p(4t zLuXY%DywpV2J|@Hja!h9jJQ0(E^frzsc(k)hb;Q|W6T`#Xl3lVQn}LzZA*Q{9L4=J z{VXDd;`7Y-fHiR`Wgrgd>8&V;LOr*lUDjWUdY#25QNOJ`4MH$(1-`>ildoa~x@k(JPW)S1vawxJ%=y+#$tOz2*&08E(Pz2E^o7b~*RmWke}4 zoTZg3VHu=3Vw1yNGQ!qcY_i2sVhroh7~#6$;#ywJ#GIsoK|pEtz1Xcmo0-!Mw~cxe^E$2u4P01Vv1G!a;2;Eyu$?or~0Fy%eRy+GCbn?Y*z*NSCL z*ziLG5xQBcS%Cb;+F;b9ks!iTvAJ0k*p!-6xcm{U+vvHca8VqIEd7E810uZXnAxS^ zRyt$CzQmdZy9vUBK&2ES4tbwYUPU!^3p+BRE|zA z>3~C~ojPJt&Q?=$n#u7gW6wS=AO@-^QqJ56h`knf9_LX3IT}+z?o?w7>h5&o8^0g2 z`I|O&$DaVR;x%!Gj!T8+O}KOSIT>c$9(*vWmS)TX6+JMpUv*n3(Y=Ti3~%4W-f;J1qH5!VZXBB5SNJPg~I z2~fXrj;*r6uGl6#W&*PgxVsPD%4{t z0Il5`iEzHYDZV9n}pmH%SoPzN5c*rC#n31GyTm`D$*V{7XXBir0CrXJxG?~({ONpbynfEX;Jkx zozHM3n7}$!v{Ou2ISc_Hu0jB&Ex4c~D?&HEsZgq>of=F1`*95>OW0V($k&04B7tea z3#to?f03H9{j@txS=k8FwF;`r6tqolx5d7|?s`&sK zh);7{e7h5#!{AlQVZI>v=8B8z4N6p=;MFpbWgaSbW=yn|v6pe9JS#nsN?kfd>#6T% z-3rg}qg7YYh!1S2U&lcP%H${zQ9aL*2cygwCf!B@>VNpx5wg_y4S1qMSny6f< ze;sThG&d-&X8y|fm(w-@8pI>a6mu$?gPRKwjWG4361+Ap3U~RBfN%H10J!o;qfz1E zfP%bR08iSQ`;^>3mtGtS*UVBezt4v3c-BDW?p;8%e7wz!>Rju^F#8_mb~AsNl(V$5 znDL$q0%H6V#`>H_;DFBN{{S)SFjXPrm>V{$YArT86BauHUIlX+m9|dcM3qxuo23eF zF3^1~jf)%z&imQ2qH*D75vY$6m|t*>ub2R?BBc@LQ)>dmfGC>p!ki{7L?00&2*q@l zNj9$b5#yVXE)>U;grYny% z;S1j#%$01azNQEdwmr7Lf(D9DHhup9?9qg=psI!s)T)jYPT8<6Ib$%LTNGc)C9f8I zLRIxLrz|+AS5VN>tc?`=S$Ev8aOP|r?~J%!ku*frRzKkcqJDpeaRn{7;QED(N0wF{ z&rtUc#a8O3t$Yy~yx}FF`y69qE*5)(2!`g#$x~`vCw$C=6VV7w4tj*&Jg>N&8;z_g z^E?W6i41tkjHq9^q0|z*}q&^NdB{`>8u$i* z4l?4SKkdRwVi z)ThVPFMOc|O&ITjD3BQ%xlnz6#h&F{Ar2)sJIPyPaCH!2%;c#;+!!>>cM#=PAj6JZR3@WHFp3+(kqsO>it0%u9qIY$X>fd^3Ejm=V3QSqyA# z5#B9Xp$8*0Af}uptp+lvYuuzn;e~!mnA~MbXVEKQqKzYC z2D(6VR^1iVb~gB6H#_1dky3?Pt7(oOS&1pcs=I-Zis=y^M2RD+Qdoxx9sA9!&JGjE z*1@@F;SMqe;RGvq^A)LD-1bC`l?iynhcT#1B0$kuRMheM^uPrJjM+qPR#yCabxW6B0__@V=Hyis$w3kz$N@dhy(szh=C+v>Q!oSaQvle7FjV)KHn zbVH&lG%Eeq)ELQHv;`0eY(5rA5iO!S}Xjva_LLZt-eB<+Eus0Hya zWi=3Ek-I2~;U{v7nGmlP3sRO)Xo;du<9FaYw#f|5H@OVcR1!c|?y;xk51NXv~3trSp`JXXts&))}_^NQe2l{<;z zr9>j%1?(&#Ugl01L&5G-?F3~yWbOX|NKd#{*40k$oABL+GcS9YD|{NE;-aLb5$L!V z(KP*?%N8O=sM+qip0+UWs8FVGLICLIzFuQ+LmGoB6$h9bH9S%?xaG}GV^qcn=p3cX zAf7O0UNGf@v8W`fVOs&%h-nf$#d?(}-Gwj#TS6Z)#SF8O5bu-n#>PG}2?7Sn$O~NE zL2g#(K~}Yh8zLxrNoe6A;@8w=!5;aJ#zv?mxs=LYm)lnXeQ%kchy{xFJ}OiZy7+)% z1p&!dxAMvQ)Nr%*j#acjb&o6{CK*kCK+)hS(D6*M_&+;#XS+@^7iq2>r!x+}n%l8YM>~ z(#qckJsp+gGyJ2bKu4s3R{*yq`1QQAce#xF2gdL+8ZTU7wJ!8u(|a`tV)5d_+djTh7^;KmTCg~Tr))y^PG z=3B9)jdd~kMT9?)&x_PaXmw;29jmd@duD7Z8RTgZ(wN1Fl&+}1`#VV0@f#(oss}byPeBh0Ty+_a4_TF5lr4)#M)jN>F7u&{WnjFA;ci3RZL?DoemWf5|x5HXhQFAOxO zP#eYKcPqv~*|jor;o+1$--wJSILAa>tj0co=#C_ETw*s73PjN%DGbm!=^F39sYDoL zOS#R`ptb_isk~lUM6WU;IT4#&_`zipr}|NN$_#n1qQ3$S`FWkr zyYei-uGL+sm(nP~nfU@C#5Lbk4UGb1NxqoviV)ri^m&~Dw)T-`kF_f+|AYIIqUxe}n+zKU~Ax{PE zeom9AurCl*Peob*e>qT&CPp)FNEA^po!Joe;Q*uw`3AZGtsSROgce&Hxx62wzJ;$H zf|c7VIs5TmGUEXQ>{>E1mMEt=3<$&AaI6)gBw~01#EHiG^*eJOumX$i*_SF*F+5WH zIxDtw*NyXX_kU-&k)5Q15Vf2zslE%bnnB-jy~)#)X2EB3j;H&a5)-7@G2ISW=A%vk zT%aA%i)eI8VZF|w&Q9gZ*~Ak8z_Dz{(N{CnX}KPYmn`JFAjYN3iIZh95lHhp@l~Yn zW5gi8%(vVY=W^lsk@%INx#jM*4$X|cxP7Mt?m7(5H7ie;X$qOXExch8VX?d8V2#{6 zom`?g#bPSLL4BcJ%xqb8a}7FJ@aY|y9%jpYsscw4y0NG27W;IJsaq+W@fTXaVkU_( z6>k?@Cj>K_jwC8os(BdNL7!b0)kW55_9YS%_7!tPVs}s@JCEENiM}c%`-=@&BG%}p z`6CdmN{asg94fk~hxjo(8@R_G9m+0KHVkT0DLht1T2h|1jdmG)QJAy)dYifpfR?f6 ziS$EdyQ*fV3C9uY>#qJhY#L!qGyp$F#CsXd2tvq2Smqgs)aT;o$&INi=fmfG4^buD z7CgZrIVBo>y&_HUbK!1r35fwRNYX9c5|2!`95it(ZnlS5gW$4r9^;M%h8~+SB|Qvo zs_?w&7MSsOa9idQn(*I_{lYOf#U!tp*N2IAve?qhiz+m7GDUsue&d z4+Prh=1|K@@z;v@?q8;D#(Ev*wu&^Ta@X@0qg+*OSo$NxAT5DM(sp#lrBB}vH*%#y zubAgisn7E%_Ywa911Xye$y?&mZNih=ahHEOi!3%Xni|>}{8u7?_-tKbazto{-jQQ; z+XCqxlDT7Xf}3WxmNj)#XH$e-oU)^bv`S@>A(7T{8vKisJO^TrWUaEn$ddSFT%t9wWt`2IByY03tR=?VQ1&su zU9;!-i4q19>5GQcal47EV`#FCD+(&qq;u&3@Scwe9;HV6Bf*wBRUK7LF%W`u^8=Vp zK$a)TIP2j?l6@j0*&4DVBVRreQEy{{@o#cwH7mjuQ96lp zD(Uj|QvyF`L9Wfay97F=RNRpe_jE(d~mx}ye!fzw2gzfEVTG0#S(eP!aK+DOwjjj73# zV&RTOj3Ab4;e0pGeL!wA*qmf$MKRO?f$1M1I1tkI!66ig@+5rRxZhE3YsVSJN+T0| zI~)H13bG$?2$|U}7Xhfl`-sZt$1!hOIkwy}x7>2#&1XGMmvI|NEKC^6akuvChU$`U zFwS5tm*G73;iQ+tHI;CmJaC^7EZ|7wNy8iU5sV=kPpL<1R4raL>1g*LwHH9I-;0#H zBjs)-u2qXz5Fb!PmIQeelu)LQk%jXW9(v!)hvVG#%i6g`#>sK3iW85ct747;7IwD_ z*wSG#JjPYZ=2l#$KE^TDck>O6*X$=G-fCq_mDJ+!=`r}&(b$fYF_kT25>Y6UnY(LV z3{ud(Q*#wo5e@@jF-buRR*iFPbGN8tV*)%!#uD-=eMiSpCwxx4HP423;kebt<8C>m z{$fO1OU7)fgBz=*R9K%?Sism&x?n8qxa$uAU78Fl%C;5&*z~?x)TDL<44vGqk1^n~ zvjr!}W1ZOA_u;BDN~EB4EaR!JW?jsQ73}PR1ICvcxcE3_ z&{5`HjMu=kATfJ$_EOnrFyoJwQsowL_YuF`PIss(E&c@u0hNH7W+B3t7@TJ8?n5w@G4EEeHZ_}N!?4q;^gAh89b*H$4+3TmHw z34LlY6Q*4UX0z4wA}kevEGtB$NXu>wL-fuafhf7%_yE9;!_f{SinUa$S0=<5h)-iz zbg*~BaU&82!tSDM?qK;LJ5NTmFG4Milta-HHdg((%Z2`fIw5L(}r{X2sleiIHMp$z7t|oahtG9 zd5IA$eUSNlGUsr=@5eqKd?X{Js1o+|aSPuUD3=&r%(;5pAxEg;lZhnQ@gBxP#QU5i{X5P{%9O+vibjSS%i9r+j!u?9-@2b{TTRPI{$Ibw~@ zFf2r*uW=70^%7s3X0tLp^E2%)sME8DJl$+AS!r^Q9GaBZh6E0LFo!n_wxL|W-es?b zH)hWM;P76`xkW~zQB6&w(hTVtNLsPbr{dN3JM&WcnDu@K7X-o2lyg%R7idvPu=$i! zrN7x{AgWEuu{lii(E`@ss^zSsDpmB*fw(1Vxtmqhs-&i|>LWSoYzruNyN@tX@V4S~7;8>7ufZcrXmLRKH#54vN z15ss;oRPhS?5=zzU7KRD*b|f z#1(YC_HzD_0K?R&QqtiuR(A(wl8s!E%7C__*YI*PO{?>RUy0lammYE?5J*=8uHTnk zIK~4}>K{rRaP~OOWw5)cR`VCd{KS^Pc5ckM--OwG#2*dcFpM%6sF%@93CSs`Xm;x4kLDNg_S7{QGt`8+JS{i^7@XmNA6;Gw?Z0HN@lPiEU; z^wo()#714s_doq`6v2a@6`Rb?%=AsFeK9+@N0{@mvZWWySdhgBaZ1L>7})*J8E25r z1Fw>4QC7L?R1IRTMTqdmg?4CgF_(}Woz$sf?5Whtos(s3Wy;=Q({q#x^85IS(StUs zeMG#JxH!kTy!wYSi^d>Suc(j=RW2Wq<}^!6)r#)dclpFQxs#=y6$ryPf~(&MB(`=a zpCl?E-@$w<9lMW}Z0{LGJGjDUgt)uUj@t09X8MCU=#KRQW%Dxb4-jJBqp^+coD6ml zZYtme*OndRP39)^J*&g^F&mt`!e@#vcicMh+e?BTfc!30YqmLJc_KlJ_lI%<@Sz2Y zZV)X|FF{Rr;(Gg4p7uDC2-q5l9%m29R~ z#gtl3B0DohOF``p)_P{y)w+rGOWMI0hhX#VYHkn6+ zoyue2d4W@4r_~S%^d0`TQHGM&NdkMh#pKrI)ZSPvwa>!V`y=Nq=_{u@?|nqpP%(wL zfLwW;qrFRG&xf0y<;q@Dxsk>%5}D6%jdcuZacOGhBPti$6B%)(md&|cOKV|!;xId^CWF)$MXxLB`{@Db;NBiD{v;xWgicQu24X?7ClrhpoG1J z%Ysz|DWq?i&^`v)w=xI0@Kwi|vgb%_h4Odsm+ptnN-oN1T?W-J7Euqg|q2B$0oT;c2}s1m76_A z5}BMr$GF7hfY&nUp1g9#6%i)F#$Aw$)5F8?*HE!G3uQ2aP(_>E8GbwPa~NMRVx#3I zL@%9m1^)o!EI`o;vXah2nUa?JfRzz!gb0aJ2TP}?C7U3CmO||13rO~4rloBCfaY_1 z;C?35PXvAl5cs*xPFc0jjq&b$%RTHZ6w4l1zP1!$E$UZy3V_);nRB^L*N&sn9hDed zYT;XR=ZR)c9~AY}4C1kTJ1YjT(BYOHKZ0VJD+LbUqXwZ;29|+TdOO)}TZp?MOB6Vn zS1jcgsZh0DM=M8*A#tmo*jcg7SCZ0N%4_HTv`#$Sf0uh=c6C^;Rm=61o-eoNT%alywKUgzAb zgikd0@T(!}=Wr*xit=I*xpNwiIVp;4sHNHpPk9A_4rP}JxO<(>3h$2LK`z{#ONmzz zY2pkJS5O;Pt^v9>(liUEn0RgF=mxRr zi${fO4Tz~F6S(s&sLF{4uNNOr1kT7prDI3b?S*=Q4QD1jRM@hn9TLmfy9>$7ekh){ zJ|1!d7blIE@eio_V0(Q&iBCSr5Owz&n&lcchN%<7FXzTwy~1-WseIxm9apv@{76Q~ zG}rADlpA3}V^AUP?b9HQaeaZ%A$E(K$o#dskFucIY^Og9Mai8-LgaFVTANo}<{id0G44S+*hkG}&4reto1k)sLKrXlsfSIUcmD~A;kU6e!;EvMZ=b>+L? zI|FEln9f@-X15Ib6HCVNSl^ZWa1{GjR~)l{)Jl zNpnOk*m$mGe}edf(-9jw;tA-DfmO=k`a=XtGG8+EhV?oB0HslGf-juV;|8>@ErePD zd^PFD4our86E;}{?mV)YP^+iF#$}OP!gTR0l~dd~;vZfb<_c8hJ;&;GIq8HQ+1k&j z!mnZ)zBR0kTt}%{%v_Xji#>QgV*!cta{MB5)I#MiC1WmUf)ci0zZp@I&Y=xm=Q5v! zA5(S$bjvaD1qm9*l)1-HCnpfwb#)R99i94*HLA@I*sa1*4rOi2WyFxE3WBnh87)VQ zWj?2<@KL*LBu+y4`4YA{KVmGl$gj2YQ7wL<4i{)0#HUyivTKnyAbKEgfw6#kl{DTM zwpS4{dV-!)d;sW$f9yUo3>~;9WXwP~_-teHL{~~R_iQ3cK4);d;%-Wh97ATnrGih) z3>%J|+kKX=%cyNa?<03MTx6+fuo|o1F|_V!K0Gq=55zfyEg-ODU(SQ8wgya_;bLVG zAv>KW*<`2Jld6K*3Y&frmsKBxe4FNGK`Z>kHKE@_Fwk5#z;+zV-vr&)#2iu1+3HYZ z6S&U6OZULbv+fT*UZ{ZN8Zg+Zva?`UBK_H9U$R?;)uWPiG7;r|Dpl}X>qVm9ZX9>v zs960^hsDBC4P(Ry+ZSiVBbirz2I<24y-X}As(|cPQJXdrrc^E~aFj#pTutJ7@lp8k zd*GJ@-Z4oYXfJFGRO2*7dCWFkmDKkQe1Zk6Ij1Jv6QkYs-S2;};%v6ylQMPpEZK0B zz?AgFkBWegiv-5v@3-b|81R8`o%mzwSPK#SMu>UIeu$RhR~HUxmGgwI&tr)z6&tFi z*M*%ZYU(+hY~KV{;3ZidUeRhcLNLpq0PCu%6xDs11WKuB%Nv&DMbd4?rpLf9j-@v; z5UZUTlCX!@F`GSjyr_&j87S(EQ`;#LQ*5T?N1ov*n{gT{5q4)}pe2>Wy=LROFX(nAApnyc`wb$2&GF_6<44cCAucAJ9TzrN@|>n{n%y7S-20%7ooc z9&T(J@MEElQ{9r*Ud3bFsZ!r@hY-5hDf{R%tvC=CFcyd zpAfQayRY+@-uM#bN+WURY)HbA{$(oE%tRWf#c8S=`X+3&7GKOwgN&fUXSu>0GbPUI zUdq()aTxb3sF9D0*g_2(x^XVgjVhy%y_s5xs^PKN)YFJ}E@ng#7*?$%&xSN4E3sgu zT2o{UsE^XACv^buGRT^!EFf`;AxePd3loK*UrpJl3zuOzCAS~9LA9Wnlm7a{mtDce zUA#-Pp7JbXcO@m)F*=^$wGo~8v`wkVEQ%>rVpxwNaz>+);_+PgL&3}#{YUCoi{Bmi zO_)j&n3_S9=^fKdIGVsKV1Pj^0S3gxiQu+WsaP*$ZrrOq#crEY@>?=1ad*Ra6y@Ql z+VQfvk9!$|6)bd;z;b`z`3{aok>(4N1-`asMSemiV(BUsIAd_5H@Vv|up};;wWtHS z3g5P5cxaXMp2xB`?skucui{>Ud#P-BX|CEj)h*Hcio}G#iPIiposz{#QR%-Ka{M+= zafgoDf)P9%_`jH5%(-_P8CpfDubLYVW!8VK_ln{(adxE?=Y_Y~P@emjB$crvS)%(+_|saCVxTUTXGlqEowoRBEm5y+iL1dcgm8+s>(e!{6I zxPaB%+mu4!Oi@@f=HYPlGA%@9wLc@SK#9^v-%|j?Ks>*3b%|#(`SKdgxQG{$%uHZuIry(oB15aX99w6Ch z+j_b6TYr=BB|9mX z#BXvwHu#m)tMW6N$bI;tdxgeSt(3}_NFFJ&7R?>pbRdxM^jvCOV8V%R7487{)J&Z@ zHZvexa`sj?%RSfLIN57OROK>L9_9SO<+4j)ZIxX3YVKaSAE|g6 z?Gd?5S$#uj^2?;!8#TnR>Ybl*+u}bkCsA$~^A{0WY|tu{urRA!7u_z!wPbGV$9E}~ zy!o`Uo@I$nw*uu_OmY>6(J(SPCpz={hn8ALdBun zd5)uT;x+DUWn>2~XNKDsB5#F(c`2GqxI>9p*di>rtF+QtaM$N0TNM?py%V-0c@d2L zfdl^l*+oRHVGJY6#Ig`6@FG(QZA;3EwJ*3_2T)gadO%K`KSO71)$o^<-{<6(7bbgkmZm$<1^)0wSi0A`i zVkdJ^{{W}nbDYOXthVEH%OFZ;a^uBZ=f}ja8xG?XhZUL@)vLh>i~LjAX|h@l}vpc_*iqXZdOWrp8R)`u09eo zsgkf2JBt*3&6k%|6!#SCTHWuvOA-V}VHQc}Y*k(K;HcRPq=4+D2)SnjFmeT8;p;#SKgu)E!{$(A*Z{D=d}7Wg9A7 zFR1R*o${UttnLs>*i@n`8Qkuo1>A@+DHa`unb9mq*)K-wfa{IU`eK%s;-fY05%7%2 z!J3%?Fgx=I@W%=qg3%Oxz zBDP1OXnq;jmZdBG`!=OfjNOY@b*+P-krJ+d+0Rffwl=CZlBJNjIsyPRdY#IbE^;4H zgn5p0bU-&AuGR`+3sHgZ+vZ8V2kBYMHl2@W+0wh;4<%=^T-!r%% z!sSj1b`^}qr4#8f6)fb4bRcESIBUl1tn2KB!ZVk5dN4yHQ*y|edEuK8dEya-P8fp> zPV2aRD0c$D=xXYh($+Kt=EHP4vR8uT>?sz`*-tXIQ2{3*zXMWzn>&`k*`i+&vab%J zAOf*<+-HN91-gM;!@!kjY}$L9Htu&Gw=F2$UZtu$%t6zbEf{}uxG^`u;BF!|C~6Tr zXSfY4FZ!6mq0YgTyg?^-TGLN$c=SfHh~4wyU=55&h#rKKjY<;lrUhS%+=i^Q;Sq(G zvW4SNKFY9euvm&mn^k6$%ofleVoZiYeoeZZyfex?)FTWzl*L=%ONv$X3im5zD|c7E z=M@Uud446^8D2Yb1NdTW<QD5`^1fcM?-_ z(wmf`z_!p8S~_gmWx({oBZc?`PF|tX+`VBqQ9GM{F9{7*?f_`ZMY=0dgL6~3h$v%Ml1A&Qa2&K*_X6HHgsqhbQMqWSt*f-n zl=t9(2=f%T4D`b~wJ7Ym&vE8n_((X9epPG( z&fGhVEUjm9_TzGxTxta$_EPG8;+3ri+p3#BWn4k+Wb};t=;L+4DGZenf*hlyew;g{ zTFY;!aSQ{O?y!`$v(pZrQW>$q_46uIKIIcCbt@eh-h4opgJmhT+NE^=02T@L2LRt9 zM@N0Yxn|!h3t!Cx>18beCud6^_2HlHB|zp^89R+CRkGC*&3rJ8hE7%BqACOi1AW1Q zH9w)GRO$qwmZ}htQF~RpD5^KbO7ZzBWO$Uyo#dckb^`696$Vj(mArUlw&5DM$CyGe z+)o@sjES60os(tI5Q<$8qL4CFsjC{;Q{PnsZKaUgM!^Eoqn<+PIDBg|I3ta#G*B4SvQGU;8|Nez(%%ke=Wrrz_L`*=CYcrfLJLnTBgDr2`CL9 zrxXJ87jWR-V;OL$hkz@jB^}P^Jw({b+3&?^3EU+>l?Is9;1;@?5Ra(TuN||#E_XC> zF}SCuVZ&8;;2R5CY^uovJeQ&k_+nEE^#Hj}QZ^?E4IsX)Xq=4(`5&1^%GfKd0vGo! z0Sw5;neI1!FJ}y^l~7R|CHbevan=W5KOp^#qy7L}V7furZTge~_1^1|MiH(mP`)d{ zY9uB>lvfjFJ&?KFd6gJAv~8?$~;r^Dv1Mc<{?$ zpp7I*t82I4g;!ko$?kI#HsNn^CvfDY&;_NAF;BJ3;WWNRxh1cjyDeQ{H z)m}XCBM@d>?}L}YSVSzcV;vyEKXyl zN@pZ)3Rf|?T=OcUPyvbJ;P?q!!wzy<(Lf_Y|!%NoRhj3r91xWeUZd6dTH+^mWgsFvr# zAF}IesGzl=bVY)AuMAG=B3VQo_c ziSyvy@hit{sPh?8m*luy?miRZR>bFEO7ONuilO<7nUPwQQnl_;9X;H(DBTfXjIDwf zfi~i50Rzmr+}ex>cFHytY^yva1#m--CfhsaSh;hUEeO%(WmDB}QiZJ>9nBT`J=Tb~ z67cZ%3WytRF#eFD*j9HMWtc^OKo(acL zQ&QP)=m0yW<=v5#!mbZc{{Upj?4wvb#4cIHDDZ3cfk8Bn+B~$+$keTm>{-hyX6(y@ zQLN@@&Ufm2i|P*Nf@B*&o{pncW&OY%gtm&k3GQ~vBgZik#Mv;n1qSsh2X+f9w!Mxi zjd-Hlg|-1fPhn>lGj53mNj`;H>vjoGJ3YaxV=96L$a5X;GQeTXFU1>7BTK4*X5tW9 zsmES1xHT&6mk4&QA|m^hBYp)Q9%mw7F_dhnc`j6GaHN+B!oVex(EY#%vda$i#SW1C zg<~0Cyee`H)+D>|RHA>V6&iVE4h#Tp;o(DX{S=!7^uzP2*3_fn zfpqumzedM3Hb$JXKLp*1+;#3<%E!u|GVXISJ;c^^IDz4ZLI6UF7GQUQ3DjyAa_SF_ z4;>$I4+dzwd>Y-z%YZr;qJy*F+vQJM%Y%GMJQ)(oWoHqB%Tjx&Tw=tOles{0v-p*_ z9NMkuu<{a`^7Pf#lvmQh*~BH2G+u+HinxY6&A41fE1uRy@ZgGTvpetGU;6 zPYWx+>=mPqW6Wy&GLykGWy5t`LTHn&BTG3uY{pi2CZ!7@q?>)ycI8LK+<1intE%QN zc4b*zW}(7**;hN1iTIPbmQW`UQlI>pP(Ds(!r-4w-&2~>3A&u30=L~VqA?WU~n3%!g4$YKtDPtC$9}^JPQmneN|WU?_Ox92Y6lBkyWzYO&fJjU?sBr0DwFXPFmTNzImlP7Q?L0Qng)ES_Ug+ced9nrV~IO!;FXE0^m zRCFu`BD-!uu@$SCCXfRSH40u!tiq7 zDl{;tsPG(I_C}tkQH$M5x!(AxlZG_4D4oD)cMZxn!u(5@D9zSrOu1@BdL_9QJ_`wM z6|-)o#|c{aSebV!YmxAixb?I!g2V0-{0W;=rl1It@7f$2ocXCjhY@s#UgFE+-0tEB z3j{c_$yW+Ays$pu!nl{72fCIE8l-rJjXQCnjgF7R>PYSUgI*@Np_N)On3g=CK*p&)Dk#{yuFkj2r%EZ zgJ!E(NE#ehw#$vdjnT!fUh+}YT^7CPDmFtg624_4Tjhn$s^d{(7?wng+vZU!J9953 zN8&ZHJCt}*<9p#yDv@{G+vCAdCvJ#$6eg=xNaq_W1h!Di)@}0!jm&}$!Xdj5T5wdY znJO@IE>+Y!xnDwUJ7ONHj6*Z92~HPnbK;8e!wZXak#Z)CQ6vywu{Jg8GeSf|4GQZk zB7`A~%kl9m=2wiL9uYjZPlcBbXLGr$oy)d7)Y1u%TEbuGR7aV5Z>NIWS(EDGY>`jbl}hlrQ;1)IZ)Y-y`knD9x|Kd*%qT7(=usK$hhF8V z#wPeeH9LnsE^{mV3GQo$B73B2p}UJ`fs8wa$GEukqLgJ<+U`=W6;Zi+0hguxnyBLbAl=5rbo&)8A2N7ru?EDb!;V)-V zjxh0lDq5~EHVz^?D3uc9dkNg-jY=*%uqKOYqCf&xq<-M+MPkHhZM4OWr`=s&iX%PE zrYevlQlWG8C}PL%6&OH5?j~B|p?);#7dwG^meb%#--Oup)irNG4Bs5U*ASwR_Y}vd zu;?J9PDT>#XEitxK4mf1Bj7v)4_Ai1;A|JD{a1x%EWK)53VfBsq3kZ!eslB@!CDl0 zu@ezAPDt23JlqnPl}B!cW0ZhKD2#E{gVC%HWNP^E49lEw_yVHZ!9@<$2sXB9O1R%= z1i)zfNSTeHWl!RV2w*07Hm$1+HL5xt;jikHf&kL3OUBUGFhuFZ+is%04)VdX`fT=Wm*q z;FTN5a~Vt_l@%I9ysKLmmn`}ay`942P?wxQM*X2vris5IM|s0ao3PLyQtqQrcfmza zL=P1acu1PSp6c)EoYNWH2P)eEJ`ulDx|B;{b*v6%a|q#iC|{pah}!IwCx@+{v4!}f z2b-fNW~^kU>|?0Pe32k|JNGKAmPX~f3W4lPSR5j7&f6&in$#xn93Y0RcROU#Cd52n zI}4et&GNE_ypftSw3U+i$*?9i&hU>A0?hn`W>V89r5{rgh zxlvceydEp2Y(v5}TRoBHHyRFJB&r?-R*vRHJx=EMMfl?){{Vo`^#S6$d{v!Fnd;*b zCd>Jqvo=2|vxY5wT(dGRt|dBYem^`Zekx?KqN8&8&jR+@O}P_%*3RH8I?7;%{h|a- z4%QwIQrX1S!=Z(ILiPnpQ$5YI#bLYGNGOd$C6s%%EbeZSoAn4o>NOKT>`m}OU@2rt zQ(bzSWzTmnnQ=`rnZYk{m$fQ2?hg5b%v~iUMCsW`(KvmD<8t-}%HLCYSgE5_^A2NR zv2x!?;p`-8{mqr%o-Sgfz47n?mpxDbm8=@=i9o0tF&#qOC(#-hH!sB=FPP1qWs)mR zO5NAUsI-hVQb1U56Qu?`D&yL|n$zd=r zWo*gbMJ_cN_2Khd%pz=A`735ZRCU8|9Lh#k)Y-?4y8i&PA{TM5QzgLLC&X?JiCoU&SttM< z9Gr&Z!x+&SPmbnX6#)sR@dJ^9l!z|tY3k+5E}|9Bk8qs$6i2w4iDBD4%#2i_Vnjho zBq>$X*(fP1W?w#TUxd`3Z=JYuwUl3z8SYf??h@wN6;`Gg5*5>fsoXuR;Fru87EP8F z?h-ShYanPiSwjzFEwrXH9iga;{dj8S z%ijfD90iKLIEh4EjrQ?d8Dy!KDm8f*-;MFNcQ$3SxP8Fe^%6fbZJzhRY)y+@#rP!? z_EzM1$&r@asrJuu;di=1os+15Y+Bvk=pPU zuo{pRhey$k+})ke=I&EFxFtC+XVeGW8ab4~oy>ex1FOEGZUu|{ZVU$Y$wKV51^XD- z#D;hd;aA@?i+J&C)jkq7OUF6HgezzO$!1-63xlz4Q|XFVYZ;Yca;0}lTq@v1hmI$b z4N7{2#-@9KtS52chj%Mx--;bRCy6!pUv<j96w5%8n=d)o`8zq~^WKQeB2AB~eDJRsX?pYXHuv?TTcQzGkD_ODT zCitjlg5y%A`PdsRwrpdjrvY_X#O|3v9O_fkDTA_`iAi*ddxMJ5Q7)LxgV})Nm{(O` zv)DsrH_wbI>QOsp+$vOO=YqUYc^ z<^_1D_8z6{Z0-L5vu$o)j!3%%XSjqC9HA;FGMGS#vkAnnQ21r~X0o28x8s8lx$bPT z1AZ$Unxi)0?=qirxUm$fn^=r#qFRTpBfj%}jha{{`%T7a^v$i(8B(LeHn4dq2Ea6! zn8MQzdk8ySEs9!44$wKFM5hnKEVP}@8BD!_vYGYaO6E5R-O7dRHdC}jZd@rl@m19B z7w%-Ol*=|X8yH2-Wqilocws8pTQr47m_VF(+vYEdh2K6YZsIpR&fAttDmt@nSt?s7 zhPZ}EXj1w;M4TRD5-@gl{=uqihCCuO?T!}BMm*&A0U0}IaQHwMAS*iGJa`hGq7|YC zN46qZ%C*vNz$=_8yj-YC*z1(R=|msM)cIiif9@CJrOOE&4cZ3U;wdqTW9kGsE-=uR zw-N7%9LFFe3Y>bGa`mV@#9KAeAf{6V@ly1;w-Tn8$36>>UMYMK?*P>!58b z+6~DK#_j=n)V~ZDW1m$5CiCD4dp~74AslK9F8o~hsK?{U%>9H5@YLtH{{V&jM&dLB zY9m~ZVoJH&E;}A_H**(qpg|!O7kv&1h>Q@c4{g!F6x$^TaJ~9x@cxPXbhcT#pMo>$e=9eJ7Hgzs7 z)PG~~3o)V&%a;$Y2Vfz79ORi8?0%U1Fdg?6xrA)yR9{hH**53gtwqA2b6UhW%lmaGdPvh@OY6?ZCJ1RV!jbQBtS!iS2cg!c`F7`ei zWlm$wON@D%!l!e(@VC@m$-58Q@WDMwC6TLzN5u&~AjWdYe{q%LJ;uMda}wb@Zc!+x zI!pYC)N=7EY}sEC0vEE$S#a152Avw|i)jp*{lq%*qK!n+>EC>xCvj7m`4yK_b_}-| zWbN@o7*1UxjVU=8oRiB}snLr%mHoX7(j)b3OpZUQ|=e5NEz3Bwt;E?X?W z6%f>Poyy*h(FI!C%@MTAVCgC<)?DrJOEl&E#(9{ggrwSl`s$g{L2ISr@t}Ha_-{x~eQiCEAJ1Zu|=q zekhdFli4b8kgM#Q8sL#{Rb~m?lX@Z+BW&dEbrQ}N zWkO`mrrd50@hC`K5>t~7sCOHa1N>{~s&9ffAe~^ON3sRR619cjm3&n{V9PEAoOo^A z22&8M=fGPYd{;3=O*EDOM0D|I61yg^F~1a2z=(DE0x=oikJ))CMEZsGR&$Lz)G8aG zuEn5yM>i;O|%fklbuD8B1$9eJmVh9*gw>+$hH$J%W;n}xs!?h z{0q76YPA`$4rRlhWt%qQv+uT1UIsi2>L%Q&Tb_I3ZOo1H6`zuTmCudlyd3efNKNm@ zFtsOeC|q#qc_vh7y_M*K6LlEMIOZ%`FlhUkY-=csxhaF?g*Awss#Dy zfVrk!nHU)4v(zS#0bAmUq164S(uUe1g znYYh}C07`Tp2~p`l+A_CdWeh=<1o~{n;B(1-;U+CIFv%mBgv^s1rxG&MhLS6DcfQ6 z$DEsdz6yoX_{MAgu^aQ<2-8A}lTN1sk-6N+&ir*Ad~nsNu=>fe^J5jWJQ0id; zH<`0NY$5=qa%_xRy%0AM0mOI;5JM;XHaoTpcJ?%mMz!18OgUd6DUVNG#6 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 DqsG2L From 82d0f1ea868d7a6c2df3f6fe78609f3775907d3f Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Wed, 3 Jun 2020 12:29:42 +0100 Subject: [PATCH 095/161] bugfix: links not respecting appRootPath --- packages/server/src/api/index.js | 1 + packages/server/src/utilities/builder/buildPage.js | 3 +-- packages/standard-components/src/Link.svelte | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/server/src/api/index.js b/packages/server/src/api/index.js index 66c3168f23..990714fdc7 100644 --- a/packages/server/src/api/index.js +++ b/packages/server/src/api/index.js @@ -38,6 +38,7 @@ router ctx.config = { latestPackagesFolder: budibaseAppsDir(), jwtSecret: env.JWT_SECRET, + useAppRootPath: true, } ctx.isDev = env.NODE_ENV !== "production" && env.NODE_ENV !== "jest" await next() diff --git a/packages/server/src/utilities/builder/buildPage.js b/packages/server/src/utilities/builder/buildPage.js index e56e040329..f1b5d6d724 100644 --- a/packages/server/src/utilities/builder/buildPage.js +++ b/packages/server/src/utilities/builder/buildPage.js @@ -28,8 +28,7 @@ module.exports = async (config, appId, pageName, pkg) => { await savePageJson(appPath, pageName, pkg) } -const rootPath = (config, appname) => - config.useAppRootPath ? `/${appname}` : "" +const rootPath = (config, appId) => (config.useAppRootPath ? `/${appId}` : "") const copyClientLib = async (appPath, pageName) => { const sourcepath = require.resolve("@budibase/client") diff --git a/packages/standard-components/src/Link.svelte b/packages/standard-components/src/Link.svelte index ef0b71d62e..d557df6abd 100644 --- a/packages/standard-components/src/Link.svelte +++ b/packages/standard-components/src/Link.svelte @@ -13,7 +13,7 @@ $: target = openInNewTab ? "_blank" : "_self" -{text} +{text} From bae6a37b5d2e2f89158562cd822ead55bbd821cb Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Wed, 3 Jun 2020 15:43:37 +0100 Subject: [PATCH 102/161] autu populated login page --- .../server/src/api/controllers/application.js | 26 +++++--- .../appDirectoryTemplate/package.json | 2 +- .../appDirectoryTemplate/pages/main/page.json | 2 +- .../pages/unauthenticated/page.json | 62 +++++++++++++------ 4 files changed, 64 insertions(+), 28 deletions(-) diff --git a/packages/server/src/api/controllers/application.js b/packages/server/src/api/controllers/application.js index 63422c468a..8953d5af21 100644 --- a/packages/server/src/api/controllers/application.js +++ b/packages/server/src/api/controllers/application.js @@ -5,8 +5,9 @@ const newid = require("../../db/newid") const env = require("../../environment") const instanceController = require("./instance") const { resolve, join } = require("path") -const { copy, readJSON, writeJSON, exists } = require("fs-extra") +const { copy, exists, readFile, writeFile } = require("fs-extra") const { exec } = require("child_process") +const sqrl = require("squirrelly") exports.fetch = async function(ctx) { const db = new CouchDB(ClientDb.name(env.CLIENT_ID)) @@ -82,16 +83,27 @@ const createEmptyAppPackage = async (ctx, app) => { await copy(templateFolder, newAppFolder) - const packageJsonPath = join(appsFolder, app._id, "package.json") - const packageJson = await readJSON(packageJsonPath) - - packageJson.name = npmFriendlyAppName(app.name) - - await writeJSON(packageJsonPath, packageJson) + await updateJsonFile(join(appsFolder, app._id, "package.json"), { + name: npmFriendlyAppName(app.name), + }) + await updateJsonFile( + join(appsFolder, app._id, "pages", "main", "page.json"), + app + ) + await updateJsonFile( + join(appsFolder, app._id, "pages", "unauthenticated", "page.json"), + app + ) return newAppFolder } +const updateJsonFile = async (filePath, app) => { + const json = await readFile(filePath, "utf8") + const newJson = sqrl.Render(json, app) + await writeFile(filePath, newJson, "utf8") +} + const runNpmInstall = async newAppFolder => { return new Promise((resolve, reject) => { const cmd = `cd ${newAppFolder} && npm install` diff --git a/packages/server/src/utilities/appDirectoryTemplate/package.json b/packages/server/src/utilities/appDirectoryTemplate/package.json index f49e35d23f..e67d5e0c17 100644 --- a/packages/server/src/utilities/appDirectoryTemplate/package.json +++ b/packages/server/src/utilities/appDirectoryTemplate/package.json @@ -1,5 +1,5 @@ { - "name": "name", + "name": "{{ name }}", "version": "1.0.0", "description": "", "author": "", diff --git a/packages/server/src/utilities/appDirectoryTemplate/pages/main/page.json b/packages/server/src/utilities/appDirectoryTemplate/pages/main/page.json index dbb9e3d441..1ae407774e 100644 --- a/packages/server/src/utilities/appDirectoryTemplate/pages/main/page.json +++ b/packages/server/src/utilities/appDirectoryTemplate/pages/main/page.json @@ -1,5 +1,5 @@ { - "title": "Test App", + "title": "{{ name }}", "favicon": "./_shared/favicon.png", "stylesheets": [], "componentLibraries": ["@budibase/standard-components", "@budibase/materialdesign-components"], diff --git a/packages/server/src/utilities/appDirectoryTemplate/pages/unauthenticated/page.json b/packages/server/src/utilities/appDirectoryTemplate/pages/unauthenticated/page.json index bfcd9d55f9..6ff1bfcd98 100644 --- a/packages/server/src/utilities/appDirectoryTemplate/pages/unauthenticated/page.json +++ b/packages/server/src/utilities/appDirectoryTemplate/pages/unauthenticated/page.json @@ -1,21 +1,45 @@ { - "title": "Test App", - "favicon": "./_shared/favicon.png", - "stylesheets": [], - "componentLibraries": ["@budibase/standard-components", "@budibase/materialdesign-components"], - "props" : { - "_component": "@budibase/standard-components/container", - "_children": [], - "_id": 1, - "type": "div", - "_styles": { - "active": {}, - "hover": {}, - "normal": {}, - "selected": {} - }, - "_code": "" - }, - "_css": "", - "uiFunctions": "" + "componentLibraries": [ + "@budibase/standard-components", + "@budibase/materialdesign-components" + ], + "title": "{{ name }}", + "favicon": "./_shared/favicon.png", + "stylesheets": [], + "props": { + "_component": "@budibase/standard-components/container", + "_children": [ + { + "_id": "686c252d-dbf2-4e28-9078-414ba4719759", + "_component": "@budibase/standard-components/login", + "_styles": { + "normal": {}, + "hover": {}, + "active": {}, + "selected": {} + }, + "_code": "", + "loginRedirect": "", + "usernameLabel": "Username", + "passwordLabel": "Password", + "loginButtonLabel": "Login", + "buttonClass": "", + "inputClass": "", + "_children": [], + "name": "{{ name }}", + "logo": "" + } + ], + "_id": 1, + "type": "div", + "_styles": { + "layout": {}, + "position": {} + }, + "_code": "", + "className": "", + "onLoad": [] + }, + "_css": "", + "uiFunctions": "" } From 695cac39c7b2b634e309f3e2e55fb29a5175ed75 Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Wed, 3 Jun 2020 15:55:42 +0100 Subject: [PATCH 103/161] login logo update --- packages/standard-components/src/Login.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/standard-components/src/Login.svelte b/packages/standard-components/src/Login.svelte index bced8ae866..58a2860be8 100644 --- a/packages/standard-components/src/Login.svelte +++ b/packages/standard-components/src/Login.svelte @@ -99,11 +99,11 @@ } .logo-container { - margin-bottom: 20px; + margin-bottom: 10px; } .logo-container > img { - max-width: 100%; + max-width: 200px; } .login-button-container { From 2f6e0f14aeb74d34ea16f86301c2443e2a3ec6ba Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 3 Jun 2020 16:10:03 +0100 Subject: [PATCH 104/161] fix dataform --- .../EventsEditor/StateBindingCascader.svelte | 2 +- .../userInterface/ModelSelect.svelte | 2 +- .../ParamInputs/ModelSelector.svelte | 2 +- packages/server/src/api/controllers/model.js | 6 +++++ packages/server/src/api/controllers/static.js | 2 -- packages/server/src/api/routes/model.js | 1 + .../standard-components/src/DataForm.svelte | 25 ++++++++++++++----- 7 files changed, 29 insertions(+), 11 deletions(-) diff --git a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte index e86d503a59..28c4edece5 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte @@ -28,7 +28,7 @@ {/each} {:else} - + +

    - From 2bedbd5df6b8d4f881b20031c82deae9d0c0da6c Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Wed, 3 Jun 2020 22:52:33 +0100 Subject: [PATCH 123/161] bugfix: screenRouter hijacks link clicks and routes when applicable --- packages/client/src/render/screenRouter.js | 22 ++++++++++++++++++++ packages/standard-components/src/Link.svelte | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/client/src/render/screenRouter.js b/packages/client/src/render/screenRouter.js index 262ed65f66..64319102f8 100644 --- a/packages/client/src/render/screenRouter.js +++ b/packages/client/src/render/screenRouter.js @@ -56,8 +56,30 @@ export const screenRouter = ({ screens, onScreenSelected, appRootPath }) => { } } + function click(e) { + const x = e.target.closest("a") + const y = x && x.getAttribute("href") + + if ( + e.ctrlKey || + e.metaKey || + e.altKey || + e.shiftKey || + e.button || + e.defaultPrevented + ) + return + + const target = x.target || "_self" + if (!y || target !== "_self" || x.host !== location.host) return + + e.preventDefault() + route(y) + } + addEventListener("popstate", route) addEventListener("pushstate", route) + addEventListener("click", click) return route } diff --git a/packages/standard-components/src/Link.svelte b/packages/standard-components/src/Link.svelte index d557df6abd..ef0b71d62e 100644 --- a/packages/standard-components/src/Link.svelte +++ b/packages/standard-components/src/Link.svelte @@ -13,7 +13,7 @@ $: target = openInNewTab ? "_blank" : "_self" -{text} +{text} diff --git a/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte b/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte index d897ad9c2f..cbc46a3094 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte @@ -1,4 +1,5 @@ @@ -71,11 +84,6 @@ {/each}
    - diff --git a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte index e86d503a59..69ab73e16c 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/StateBindingCascader.svelte @@ -1,8 +1,8 @@
    - {parameter.name} -
    - {#if parameter.name === 'workflow'} - - {:else} - - - {/if} -
    + {#if parameter.name === 'workflow'} + {parameter.name} + {/if} + {#if parameter.name === 'workflow'} + + {:else} + + {/if}
    From 5b4dc75a02ec97abacfc9f6c58ce17ce0dbbaadd Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Thu, 4 Jun 2020 09:00:25 +0100 Subject: [PATCH 125/161] Event panel ui update --- .../EventsEditor/EventsEditor.svelte | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte b/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte index cbc46a3094..7e4c43a9d7 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/EventsEditor.svelte @@ -64,10 +64,10 @@ } -
    -

    Events

    - openModal()} /> -
    +
    @@ -86,19 +86,39 @@
    + + + + + + + + + + diff --git a/packages/builder/assets/rocket.jpg b/packages/builder/assets/rocket.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc2edf02a42ec2df8a35b7a7e46cc8a41f3325f5 GIT binary patch literal 205488 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�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 yYNp**SqreDb%19!4|CK5#$h!~X$-vBwd7Zzn+e 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%0D&U;>cqF-ly}gt# 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%0DYGypel;={gIf{rnDZXmbbi&T0Y0xI%C;*QG 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 literal 0 HcmV?d00001 diff --git a/packages/builder/src/components/start/AppCard.svelte b/packages/builder/src/components/start/AppCard.svelte index 2608bfa370..8a0f89bb5e 100644 --- a/packages/builder/src/components/start/AppCard.svelte +++ b/packages/builder/src/components/start/AppCard.svelte @@ -10,7 +10,6 @@

    {name}

    {description}

    @@ -18,7 +17,7 @@ diff --git a/packages/builder/src/pages/_layout.svelte b/packages/builder/src/pages/_layout.svelte index 8ad997205b..09e1254379 100644 --- a/packages/builder/src/pages/_layout.svelte +++ b/packages/builder/src/pages/_layout.svelte @@ -19,7 +19,7 @@