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 { writable } from "svelte/store" |
||||
|
import api from "builderStore/api" |
||||
|
|
||||
const INITIAL_ADMIN_STATE = { |
export function createAdminStore() { |
||||
oauth: [], |
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