|
|
@ -5,27 +5,26 @@ |
|
|
Button, |
|
|
Button, |
|
|
ButtonGroup, |
|
|
ButtonGroup, |
|
|
Table, |
|
|
Table, |
|
|
Label, |
|
|
|
|
|
Layout, |
|
|
Layout, |
|
|
Modal, |
|
|
Modal, |
|
|
Icon, |
|
|
Icon, |
|
|
notifications, |
|
|
notifications, |
|
|
} from "@budibase/bbui" |
|
|
} from "@budibase/bbui" |
|
|
import AddUserModal from "./_components/AddUserModal.svelte" |
|
|
|
|
|
import BasicOnboardingModal from "./_components/BasicOnboardingModal.svelte" |
|
|
import BasicOnboardingModal from "./_components/BasicOnboardingModal.svelte" |
|
|
import { users, groups } from "stores/portal" |
|
|
import { users, groups } from "stores/portal" |
|
|
import { onMount } from "svelte" |
|
|
import { onMount } from "svelte" |
|
|
import GroupsTableRenderer from "./_components/GroupsTableRenderer.svelte" |
|
|
import GroupsTableRenderer from "./_components/GroupsTableRenderer.svelte" |
|
|
import AppsTableRenderer from "./_components/AppsTableRenderer.svelte" |
|
|
import AppsTableRenderer from "./_components/AppsTableRenderer.svelte" |
|
|
import NameTableRenderer from "./_components/NameTableRenderer.svelte" |
|
|
import NameTableRenderer from "./_components/NameTableRenderer.svelte" |
|
|
|
|
|
import SettingsTableRenderer from "./_components/SettingsTableRenderer.svelte" |
|
|
|
|
|
|
|
|
const schema = { |
|
|
const schema = { |
|
|
name: {}, |
|
|
name: {}, |
|
|
email: {}, |
|
|
email: {}, |
|
|
role: {}, |
|
|
role: {}, |
|
|
userGroup: { displayName: "User group" }, |
|
|
userGroups: { displayName: "User groups" }, |
|
|
apps: {}, |
|
|
apps: {}, |
|
|
settings: { displayName: "" }, |
|
|
settings: { width: "50px", displayName: "", align: "Right" }, |
|
|
// access: {}, |
|
|
// access: {}, |
|
|
// group: {} |
|
|
// group: {} |
|
|
} |
|
|
} |
|
|
@ -57,10 +56,25 @@ |
|
|
adminAccess: !!user.admin?.global, |
|
|
adminAccess: !!user.admin?.global, |
|
|
})) |
|
|
})) |
|
|
|
|
|
|
|
|
let createUserModal |
|
|
$: enrichedUsers = $users.map(user => { |
|
|
let basicOnboardingModal |
|
|
let userGroups = [] |
|
|
|
|
|
$groups.forEach(group => { |
|
|
|
|
|
if (group.users) { |
|
|
|
|
|
group.users?.forEach(y => { |
|
|
|
|
|
if (y._id === user._id) { |
|
|
|
|
|
userGroups.push(group) |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
return { |
|
|
|
|
|
...user, |
|
|
|
|
|
userGroups, |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
function openBasicOnboardingModal() { |
|
|
let createUserModal |
|
|
|
|
|
let basicOnboardingModal = function openBasicOnboardingModal() { |
|
|
createUserModal.hide() |
|
|
createUserModal.hide() |
|
|
basicOnboardingModal.show() |
|
|
basicOnboardingModal.show() |
|
|
} |
|
|
} |
|
|
@ -103,23 +117,21 @@ |
|
|
</ButtonGroup> |
|
|
</ButtonGroup> |
|
|
<Table |
|
|
<Table |
|
|
{schema} |
|
|
{schema} |
|
|
data={filteredUsers || $users} |
|
|
data={enrichedUsers} |
|
|
allowEditColumns={false} |
|
|
allowEditColumns={false} |
|
|
allowEditRows={false} |
|
|
allowEditRows={false} |
|
|
allowSelectRows={true} |
|
|
allowSelectRows={false} |
|
|
showHeaderBorder={false} |
|
|
showHeaderBorder={false} |
|
|
customRenderers={[ |
|
|
customRenderers={[ |
|
|
{ column: "userGroup", component: GroupsTableRenderer }, |
|
|
{ column: "userGroups", component: GroupsTableRenderer }, |
|
|
{ column: "apps", component: AppsTableRenderer }, |
|
|
{ column: "apps", component: AppsTableRenderer }, |
|
|
{ column: "name", component: NameTableRenderer }, |
|
|
{ column: "name", component: NameTableRenderer }, |
|
|
|
|
|
{ column: "settings", component: SettingsTableRenderer }, |
|
|
]} |
|
|
]} |
|
|
/> |
|
|
/> |
|
|
</Layout> |
|
|
</Layout> |
|
|
</Layout> |
|
|
</Layout> |
|
|
|
|
|
|
|
|
<Modal bind:this={createUserModal}> |
|
|
|
|
|
<AddUserModal on:change={openBasicOnboardingModal} /> |
|
|
|
|
|
</Modal> |
|
|
|
|
|
<Modal bind:this={basicOnboardingModal}><BasicOnboardingModal {email} /></Modal> |
|
|
<Modal bind:this={basicOnboardingModal}><BasicOnboardingModal {email} /></Modal> |
|
|
|
|
|
|
|
|
<style> |
|
|
<style> |
|
|
@ -132,8 +144,4 @@ |
|
|
.access-text { |
|
|
.access-text { |
|
|
margin-left: var(--spacing-m); |
|
|
margin-left: var(--spacing-m); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.field > :global(*) + :global(*) { |
|
|
|
|
|
margin-left: var(--spacing-m); |
|
|
|
|
|
} |
|
|
|
|
|
</style> |
|
|
</style> |
|
|
|