mirror of https://github.com/Budibase/budibase.git
4 changed files with 102 additions and 17 deletions
@ -0,0 +1,60 @@ |
|||
<script> |
|||
import { isActive, url, goto } from "@roxi/routify" |
|||
import { onMount } from "svelte" |
|||
import { |
|||
ActionMenu, |
|||
Checkbox, |
|||
Body, |
|||
MenuItem, |
|||
Icon, |
|||
Heading, |
|||
Avatar, |
|||
Search, |
|||
Layout, |
|||
ProgressCircle, |
|||
SideNavigation as Navigation, |
|||
SideNavigationItem as Item, |
|||
} from "@budibase/bbui" |
|||
import api from "builderStore/api" |
|||
import { organisation, admin } from "stores/portal" |
|||
|
|||
const MESSAGES = { |
|||
apps: "Create your first app", |
|||
smtp: "Set up email", |
|||
adminUser: "Create your first user", |
|||
} |
|||
</script> |
|||
|
|||
<ActionMenu> |
|||
<div slot="control" class="icon"> |
|||
<ProgressCircle size="S" value={$admin.onboardingProgress} /> |
|||
</div> |
|||
<MenuItem disabled> |
|||
<header> |
|||
<Heading size="XXS">Get Started Checklist</Heading> |
|||
<ProgressCircle size="S" value={$admin.onboardingProgress} /> |
|||
</header> |
|||
</MenuItem> |
|||
{#each Object.keys($admin.checklist) as checklistItem, idx} |
|||
<MenuItem> |
|||
<div class="checklist-item"> |
|||
<span>{idx + 1}. {MESSAGES[checklistItem]}</span> |
|||
<Checkbox value={!!$admin.checklist[checklistItem]} /> |
|||
</div> |
|||
</MenuItem> |
|||
{/each} |
|||
</ActionMenu> |
|||
|
|||
<style> |
|||
header { |
|||
display: grid; |
|||
align-items: center; |
|||
grid-template-columns: 90% 10%; |
|||
} |
|||
|
|||
.checklist-item { |
|||
display: grid; |
|||
align-items: center; |
|||
grid-template-columns: 90% 10%; |
|||
} |
|||
</style> |
|||
@ -1,7 +1,33 @@ |
|||
import { writable } from "svelte/store" |
|||
import api from "builderStore/api" |
|||
|
|||
const INITIAL_ADMIN_STATE = { |
|||
oauth: [], |
|||
export function createAdminStore() { |
|||
const { subscribe, set } = writable({}) |
|||
|
|||
async function init() { |
|||
try { |
|||
const response = await api.get("/api/admin/configs/checklist") |
|||
const json = await response.json() |
|||
|
|||
const onboardingSteps = Object.keys(json) |
|||
|
|||
const stepsComplete = onboardingSteps.reduce((score, step) => score + Number(!!json[step]), 0) |
|||
|
|||
set({ |
|||
checklist: json, |
|||
onboardingProgress: stepsComplete / onboardingSteps.length * 100 |
|||
}) |
|||
} catch (err) { |
|||
set({ |
|||
checklist: null |
|||
}) |
|||
} |
|||
} |
|||
|
|||
return { |
|||
subscribe, |
|||
init, |
|||
} |
|||
} |
|||
|
|||
export const admin = writable({ ...INITIAL_ADMIN_STATE }) |
|||
export const admin = createAdminStore() |
|||
|
|||
Loading…
Reference in new issue