mirror of https://github.com/Budibase/budibase.git
17 changed files with 132 additions and 114 deletions
@ -1 +0,0 @@ |
|||
export { default } from "./EventsEditor.svelte" |
|||
@ -1,22 +1,39 @@ |
|||
import api from "../api" |
|||
import renderTemplateString from "./renderTemplateString" |
|||
|
|||
export const EVENT_TYPE_MEMBER_NAME = "##eventHandlerType" |
|||
|
|||
export const eventHandlers = routeTo => { |
|||
const handler = (parameters, execute) => ({ |
|||
execute, |
|||
parameters, |
|||
}) |
|||
const handlers = { |
|||
"Navigate To": param => routeTo(param && param.url), |
|||
"Create Record": api.createRecord, |
|||
"Update Record": api.updateRecord, |
|||
"Trigger Workflow": api.triggerWorkflow, |
|||
} |
|||
|
|||
return { |
|||
"Navigate To": handler(["url"], param => routeTo(param && param.url)), |
|||
"Create Record": handler(["url"], param => param), |
|||
"Update Record": handler(["url"], param => param), |
|||
"Trigger Workflow": handler(["workflow"], api.triggerWorkflow), |
|||
// when an event is called, this is what gets run
|
|||
const runEventActions = async (actions, state) => { |
|||
if (!actions) return |
|||
for (let action of actions) { |
|||
const handler = handlers[action[EVENT_TYPE_MEMBER_NAME]] |
|||
const parameters = createParameters(action.parameters, state) |
|||
if (handler) { |
|||
await handler(parameters) |
|||
} |
|||
} |
|||
} |
|||
|
|||
return runEventActions |
|||
} |
|||
|
|||
export const isEventType = prop => |
|||
Array.isArray(prop) && |
|||
prop.length > 0 && |
|||
!prop[0][EVENT_TYPE_MEMBER_NAME] === undefined |
|||
const createParameters = (parameterTemplateObj, state) => { |
|||
const parameters = {} |
|||
for (let key in parameterTemplateObj) { |
|||
if (typeof parameterTemplateObj[key] === "string") { |
|||
parameters[key] = renderTemplateString(parameterTemplateObj[key], state) |
|||
} else if (typeof parameterTemplateObj[key] === "object") { |
|||
parameters[key] = createParameters(parameterTemplateObj[key], state) |
|||
} |
|||
} |
|||
return parameters |
|||
} |
|||
|
|||
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue