forked from tsai/budibase
22 changed files with 214 additions and 127 deletions
@ -0,0 +1,45 @@ |
|||||
|
<script> |
||||
|
import { store } from "builderStore" |
||||
|
import deepmerge from "deepmerge"; |
||||
|
|
||||
|
export let value |
||||
|
|
||||
|
let pages = [] |
||||
|
let components = [] |
||||
|
let pageName |
||||
|
|
||||
|
let selectedPage |
||||
|
let selectedScreen |
||||
|
|
||||
|
$: pages = $store.pages |
||||
|
$: selectedPage = pages[pageName] |
||||
|
$: screens = selectedPage ? selectedPage._screens : [] |
||||
|
$: if (selectedPage) { |
||||
|
let result = selectedPage |
||||
|
for (screen of screens) { |
||||
|
result = deepmerge(result, screen) |
||||
|
} |
||||
|
components = result.props._children |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<div class="uk-margin block-field"> |
||||
|
<label class="uk-form-label">Page</label> |
||||
|
<div class="uk-form-controls"> |
||||
|
<select class="budibase__input" bind:value={pageName}> |
||||
|
{#each Object.keys(pages) as page} |
||||
|
<option value={page}>{page}</option> |
||||
|
{/each} |
||||
|
</select> |
||||
|
</div> |
||||
|
{#if components.length > 0} |
||||
|
<label class="uk-form-label">Component</label> |
||||
|
<div class="uk-form-controls"> |
||||
|
<select class="budibase__input" bind:value> |
||||
|
{#each components as component} |
||||
|
<option value={component._id}>{component._id}</option> |
||||
|
{/each} |
||||
|
</select> |
||||
|
</div> |
||||
|
{/if} |
||||
|
</div> |
||||
@ -0,0 +1,17 @@ |
|||||
|
|
||||
|
<script> |
||||
|
import { backendUiStore } from "builderStore" |
||||
|
|
||||
|
export let value |
||||
|
</script> |
||||
|
|
||||
|
<div class="uk-margin block-field"> |
||||
|
<label class="uk-form-label">Page</label> |
||||
|
<div class="uk-form-controls"> |
||||
|
<select class="budibase__input" bind:value> |
||||
|
{#each $backendUiStore.models as model} |
||||
|
<option value={model}>{model.name}</option> |
||||
|
{/each} |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
@ -1,3 +1,31 @@ |
|||||
const EventEmitter = require("events").EventEmitter |
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 |
||||
|
|||||
Loading…
Reference in new issue