|
|
@ -1,17 +1,11 @@ |
|
|
<script> |
|
|
<script> |
|
|
import { goto } from "@sveltech/routify" |
|
|
import { goto } from "@sveltech/routify" |
|
|
import { store, backendUiStore, allScreens } from "builderStore" |
|
|
import { store, backendUiStore, allScreens } from "builderStore" |
|
|
import { |
|
|
import { Input, Select, ModalContent, Toggle } from "@budibase/bbui" |
|
|
Input, |
|
|
|
|
|
Button, |
|
|
|
|
|
Spacer, |
|
|
|
|
|
Select, |
|
|
|
|
|
ModalContent, |
|
|
|
|
|
Toggle, |
|
|
|
|
|
} from "@budibase/bbui" |
|
|
|
|
|
import getTemplates from "builderStore/store/screenTemplates" |
|
|
import getTemplates from "builderStore/store/screenTemplates" |
|
|
import { some } from "lodash/fp" |
|
|
|
|
|
import analytics from "analytics" |
|
|
import analytics from "analytics" |
|
|
|
|
|
import { onMount } from "svelte" |
|
|
|
|
|
import api from "builderStore/api" |
|
|
|
|
|
|
|
|
const CONTAINER = "@budibase/standard-components/container" |
|
|
const CONTAINER = "@budibase/standard-components/container" |
|
|
|
|
|
|
|
|
@ -21,15 +15,14 @@ |
|
|
let templateIndex |
|
|
let templateIndex |
|
|
let draftScreen |
|
|
let draftScreen |
|
|
let createLink = true |
|
|
let createLink = true |
|
|
|
|
|
let roles = [] |
|
|
|
|
|
let roleId = "BASIC" |
|
|
|
|
|
|
|
|
$: templates = getTemplates($store, $backendUiStore.tables) |
|
|
$: templates = getTemplates($store, $backendUiStore.tables) |
|
|
|
|
|
|
|
|
$: route = !route && $allScreens.length === 0 ? "*" : route |
|
|
$: route = !route && $allScreens.length === 0 ? "*" : route |
|
|
|
|
|
|
|
|
$: baseComponents = Object.values($store.components) |
|
|
$: baseComponents = Object.values($store.components) |
|
|
.filter(componentDefinition => componentDefinition.baseComponent) |
|
|
.filter(componentDefinition => componentDefinition.baseComponent) |
|
|
.map(c => c._component) |
|
|
.map(c => c._component) |
|
|
|
|
|
|
|
|
$: { |
|
|
$: { |
|
|
if (templates && templateIndex === undefined) { |
|
|
if (templates && templateIndex === undefined) { |
|
|
templateIndex = 0 |
|
|
templateIndex = 0 |
|
|
@ -37,6 +30,11 @@ |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const fetchRoles = async () => { |
|
|
|
|
|
const response = await api.get("/api/roles") |
|
|
|
|
|
roles = await response.json() |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
const templateChanged = newTemplateIndex => { |
|
|
const templateChanged = newTemplateIndex => { |
|
|
if (newTemplateIndex === undefined) return |
|
|
if (newTemplateIndex === undefined) return |
|
|
const template = templates[newTemplateIndex] |
|
|
const template = templates[newTemplateIndex] |
|
|
@ -69,8 +67,7 @@ |
|
|
|
|
|
|
|
|
draftScreen.props._instanceName = name |
|
|
draftScreen.props._instanceName = name |
|
|
draftScreen.props._component = baseComponent |
|
|
draftScreen.props._component = baseComponent |
|
|
// TODO: need to fix this up correctly |
|
|
draftScreen.routing = { route, roleId } |
|
|
draftScreen.routing = { route, roleId: "ADMIN" } |
|
|
|
|
|
|
|
|
|
|
|
const createdScreen = await store.actions.screens.create(draftScreen) |
|
|
const createdScreen = await store.actions.screens.create(draftScreen) |
|
|
if (createLink) { |
|
|
if (createLink) { |
|
|
@ -85,7 +82,7 @@ |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
$goto(`./screen/${createdScreen._id}`) |
|
|
$goto(`./${createdScreen._id}`) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const routeNameExists = route => { |
|
|
const routeNameExists = route => { |
|
|
@ -99,6 +96,8 @@ |
|
|
route = "/" + event.target.value |
|
|
route = "/" + event.target.value |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
onMount(fetchRoles) |
|
|
</script> |
|
|
</script> |
|
|
|
|
|
|
|
|
<ModalContent title="New Screen" confirmText="Create Screen" onConfirm={save}> |
|
|
<ModalContent title="New Screen" confirmText="Create Screen" onConfirm={save}> |
|
|
@ -113,14 +112,18 @@ |
|
|
{/each} |
|
|
{/each} |
|
|
{/if} |
|
|
{/if} |
|
|
</Select> |
|
|
</Select> |
|
|
|
|
|
|
|
|
<Input label="Name" bind:value={name} /> |
|
|
<Input label="Name" bind:value={name} /> |
|
|
|
|
|
|
|
|
<Input |
|
|
<Input |
|
|
label="Url" |
|
|
label="Url" |
|
|
error={routeError} |
|
|
error={routeError} |
|
|
bind:value={route} |
|
|
bind:value={route} |
|
|
on:change={routeChanged} /> |
|
|
on:change={routeChanged} /> |
|
|
|
|
|
{#if roles.length} |
|
|
|
|
|
<Select label="Access" bind:value={roleId} secondary> |
|
|
|
|
|
{#each roles as role} |
|
|
|
|
|
<option value={role._id}>{role.name}</option> |
|
|
|
|
|
{/each} |
|
|
|
|
|
</Select> |
|
|
|
|
|
{/if} |
|
|
<Toggle text="Create link in navigation bar" bind:checked={createLink} /> |
|
|
<Toggle text="Create link in navigation bar" bind:checked={createLink} /> |
|
|
</ModalContent> |
|
|
</ModalContent> |
|
|
|