forked from tsai/budibase
2 changed files with 0 additions and 127 deletions
@ -1,126 +0,0 @@ |
|||
<script> |
|||
import Textbox from "components/common/Textbox.svelte" |
|||
import CodeArea from "components/common/CodeArea.svelte" |
|||
import Button from "components/common/Button.svelte" |
|||
import { store, backendUiStore } from "builderStore" |
|||
import { filter, some, map, compose } from "lodash/fp" |
|||
import ErrorsBox from "components/common/ErrorsBox.svelte" |
|||
import ActionButton from "components/common/ActionButton.svelte" |
|||
import api from "builderStore/api" |
|||
|
|||
const SNIPPET_EDITORS = { |
|||
MAP: "Map", |
|||
FILTER: "Filter", |
|||
REDUCE: "Reduce", |
|||
} |
|||
|
|||
const COUCHDB_FUNCTION = `function(doc) { |
|||
|
|||
}` |
|||
|
|||
export let onClosed |
|||
export let view = {} |
|||
|
|||
let currentSnippetEditor = SNIPPET_EDITORS.MAP |
|||
|
|||
$: instanceId = $backendUiStore.selectedDatabase._id |
|||
|
|||
function deleteView() {} |
|||
|
|||
async function saveView() { |
|||
const SAVE_VIEW_URL = `/api/views` |
|||
const response = await api.post(SAVE_VIEW_URL, view) |
|||
backendUiStore.update(state => { |
|||
state.views = [...state.views, response.view] |
|||
return state |
|||
}) |
|||
onClosed() |
|||
} |
|||
</script> |
|||
|
|||
<div class="header"> |
|||
<i class="ri-eye-line button--toggled" /> |
|||
<h3 class="budibase__title--3">Create / Edit View</h3> |
|||
</div> |
|||
<form on:submit|preventDefault class="uk-form-stacked root"> |
|||
{#if $store.errors && $store.errors.length > 0} |
|||
<ErrorsBox errors={$store.errors} /> |
|||
{/if} |
|||
<div class="main"> |
|||
<div class="uk-grid-small" uk-grid> |
|||
<div class="uk-width-1-2@s"> |
|||
<Textbox bind:text={view.name} label="Name" /> |
|||
</div> |
|||
</div> |
|||
<div class="code-snippets"> |
|||
{#each Object.values(SNIPPET_EDITORS) as snippetType} |
|||
<span |
|||
class="snippet-selector__heading hoverable" |
|||
class:highlighted={currentSnippetEditor === snippetType} |
|||
on:click={() => (currentSnippetEditor = snippetType)}> |
|||
{snippetType} |
|||
</span> |
|||
{/each} |
|||
{#if currentSnippetEditor === SNIPPET_EDITORS.MAP} |
|||
<CodeArea bind:text={view.map} label="Map" /> |
|||
{:else if currentSnippetEditor === SNIPPET_EDITORS.FILTER} |
|||
<CodeArea bind:text={view.filter} label="Filter" /> |
|||
{:else if currentSnippetEditor === SNIPPET_EDITORS.REDUCE} |
|||
<CodeArea bind:text={view.reduce} label="Reduce" /> |
|||
{/if} |
|||
</div> |
|||
</div> |
|||
<div class="buttons"> |
|||
<div class="button"> |
|||
<ActionButton secondary on:click={deleteView}>Delete</ActionButton> |
|||
</div> |
|||
<ActionButton color="secondary" on:click={saveView}>Save</ActionButton> |
|||
</div> |
|||
</form> |
|||
|
|||
<style> |
|||
.root { |
|||
height: 100%; |
|||
} |
|||
|
|||
.highlighted { |
|||
opacity: 1; |
|||
} |
|||
|
|||
h3 { |
|||
margin: 0 0 0 10px; |
|||
color: var(--ink); |
|||
} |
|||
|
|||
.snippet-selector__heading { |
|||
margin-right: 20px; |
|||
font-size: 14px; |
|||
color: var(--grey-5); |
|||
} |
|||
|
|||
.header { |
|||
padding: 20px 40px 0 40px; |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
|
|||
.main { |
|||
margin: 20px 40px 0px 40px; |
|||
} |
|||
|
|||
.code-snippets { |
|||
margin: 20px 0px 20px 0px; |
|||
} |
|||
|
|||
.buttons { |
|||
display: flex; |
|||
justify-content: flex-end; |
|||
background-color: var(--grey-1); |
|||
margin: 0 40px; |
|||
padding: 20px 0; |
|||
} |
|||
|
|||
.button { |
|||
margin-right: 20px; |
|||
} |
|||
</style> |
|||
@ -1,4 +1,3 @@ |
|||
export { default as DeleteRecordModal } from "./DeleteRecord.svelte" |
|||
export { default as CreateEditRecordModal } from "./CreateEditRecord.svelte" |
|||
export { default as CreateEditViewModal } from "./CreateEditView.svelte" |
|||
export { default as CreateUserModal } from "./CreateUser.svelte" |
|||
|
|||
Loading…
Reference in new issue