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 api from "../api" |
||||
|
import renderTemplateString from "./renderTemplateString" |
||||
|
|
||||
export const EVENT_TYPE_MEMBER_NAME = "##eventHandlerType" |
export const EVENT_TYPE_MEMBER_NAME = "##eventHandlerType" |
||||
|
|
||||
export const eventHandlers = routeTo => { |
export const eventHandlers = routeTo => { |
||||
const handler = (parameters, execute) => ({ |
const handlers = { |
||||
execute, |
"Navigate To": param => routeTo(param && param.url), |
||||
parameters, |
"Create Record": api.createRecord, |
||||
}) |
"Update Record": api.updateRecord, |
||||
|
"Trigger Workflow": api.triggerWorkflow, |
||||
|
} |
||||
|
|
||||
return { |
// when an event is called, this is what gets run
|
||||
"Navigate To": handler(["url"], param => routeTo(param && param.url)), |
const runEventActions = async (actions, state) => { |
||||
"Create Record": handler(["url"], param => param), |
if (!actions) return |
||||
"Update Record": handler(["url"], param => param), |
for (let action of actions) { |
||||
"Trigger Workflow": handler(["workflow"], api.triggerWorkflow), |
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 => |
const createParameters = (parameterTemplateObj, state) => { |
||||
Array.isArray(prop) && |
const parameters = {} |
||||
prop.length > 0 && |
for (let key in parameterTemplateObj) { |
||||
!prop[0][EVENT_TYPE_MEMBER_NAME] === undefined |
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