budibase/packages/builder/src/pages/index.svelte

110 lines
2.2 KiB
Svelte
Raw Normal View History

<script>
2020-08-03 15:59:50 +02:00
import api from "builderStore/api"
2020-04-02 15:16:46 +02:00
import AppList from "components/start/AppList.svelte"
import { get } from "builderStore/api"
2020-05-26 16:25:37 +02:00
import CreateAppModal from "components/start/CreateAppModal.svelte"
2020-10-08 10:35:11 +02:00
import { Button, Heading, Modal } from "@budibase/bbui"
2020-09-25 15:47:42 +02:00
import TemplateList from "components/start/TemplateList.svelte"
import analytics from "analytics"
let promise = getApps()
let hasKey
let template
2020-10-08 10:35:11 +02:00
let modal
async function getApps() {
const res = await get("/api/applications")
const json = await res.json()
if (res.ok) {
return json
} else {
throw new Error(json)
}
}
2020-08-03 15:59:50 +02:00
async function fetchKeys() {
const response = await api.get(`/api/keys/`)
return await response.json()
2020-08-03 15:59:50 +02:00
}
async function checkIfKeysAndApps() {
const keys = await fetchKeys()
2020-08-03 15:59:50 +02:00
const apps = await getApps()
if (keys.userId) {
2020-08-03 15:59:50 +02:00
hasKey = true
analytics.identify(keys.userId)
}
if (!keys.budibase) {
2020-10-08 10:35:11 +02:00
modal.show()
2020-08-03 15:59:50 +02:00
}
}
function selectTemplate(newTemplate) {
template = newTemplate
2020-10-08 10:35:11 +02:00
modal.show()
}
2020-08-03 15:59:50 +02:00
checkIfKeysAndApps()
2020-05-26 10:38:43 +02:00
</script>
<div class="container">
<div class="header">
<Heading medium black>Welcome to the Budibase Beta</Heading>
<Button primary on:click={modal.show}>Create New Web App</Button>
</div>
<div class="banner">
<img src="/_builder/assets/orange-landscape.png" alt="rocket" />
<div class="banner-content">
Every accomplishment starts with a decision to try.
</div>
2020-06-04 20:30:44 +02:00
</div>
2020-10-16 23:11:13 +02:00
<!-- <TemplateList onSelect={selectTemplate} /> -->
<AppList />
</div>
2020-10-08 10:35:11 +02:00
<Modal bind:this={modal} padding={false} width="600px">
<CreateAppModal {hasKey} {template} />
</Modal>
<style>
.container {
display: grid;
gap: var(--spacing-xl);
margin: 40px 80px;
}
.header {
display: flex;
justify-content: space-between;
align-items: center;
}
.banner {
display: flex;
align-items: center;
justify-content: center;
position: relative;
text-align: center;
color: white;
border-radius: 16px;
}
.banner img {
height: 250px;
width: 100%;
border-radius: 5px;
2020-06-04 20:30:44 +02:00
}
.banner-content {
position: absolute;
font-size: 24px;
2020-10-29 21:42:34 +01:00
color: white;
font-weight: 500;
}
</style>