refac: frontend

This commit is contained in:
Timothy Jaeryang Baek
2024-11-15 02:05:43 -08:00
parent 2ab5b2fd71
commit d9dc04f1a1
20 changed files with 1340 additions and 1407 deletions
+30 -2
View File
@@ -23,6 +23,7 @@
import GroupItem from './Groups/GroupItem.svelte';
import AddGroupModal from './Groups/AddGroupModal.svelte';
import { createNewGroup, getGroups } from '$lib/apis/groups';
import { getUserPermissions, updateUserPermissions } from '$lib/apis/users';
const i18n = getContext('i18n');
@@ -44,6 +45,19 @@
});
let search = '';
let defaultPermissions = {
workspace: {
models: false,
knowledge: false,
prompts: false,
tools: false
},
chat: {
delete: true,
edit: true,
temporary: true
}
};
let showCreateGroupModal = false;
let showDefaultPermissionsModal = false;
@@ -64,8 +78,20 @@
}
};
const updateDefaultPermissionsHandler = async (permissions) => {
console.log(permissions);
const updateDefaultPermissionsHandler = async (group) => {
console.log(group.permissions);
const res = await updateUserPermissions(localStorage.token, group.permissions).catch(
(error) => {
toast.error(error);
return null;
}
);
if (res) {
toast.success($i18n.t('Default permissions updated successfully'));
defaultPermissions = group.permissions;
}
};
onMount(async () => {
@@ -73,6 +99,7 @@
await goto('/');
} else {
await setGroups();
defaultPermissions = await getUserPermissions(localStorage.token);
}
loaded = true;
});
@@ -176,6 +203,7 @@
<GroupModal
bind:show={showDefaultPermissionsModal}
tabs={['permissions']}
permissions={defaultPermissions}
custom={false}
onSubmit={updateDefaultPermissionsHandler}
/>
@@ -26,10 +26,10 @@
let selectedTab = 'general';
let loading = false;
let name = '';
let description = '';
export let name = '';
export let description = '';
let permissions = {
export let permissions = {
workspace: {
models: false,
knowledge: false,
@@ -42,7 +42,7 @@
temporary: true
}
};
let userIds = [];
export let userIds = [];
const submitHandler = async () => {
loading = true;
@@ -60,7 +60,24 @@
show = false;
name = '';
permissions = {};
permissions = {
model: {
filter: false,
model_ids: [],
default_id: ''
},
workspace: {
models: false,
knowledge: false,
prompts: false,
tools: false
},
chat: {
delete: true,
edit: true,
temporary: true
}
};
userIds = [];
};
@@ -28,11 +28,11 @@
<div class="flex justify-between items-center text-xs pr-2">
<div class=" text-xs font-medium">{$i18n.t('Model Filtering')}</div>
<Switch bind:state={filterEnabled} />
<Switch bind:state={permissions.model.filter} />
</div>
</div>
{#if filterEnabled}
{#if permissions.model.filter}
<div class="mb-2">
<div class=" space-y-1.5">
<div class="flex flex-col w-full">
@@ -40,9 +40,9 @@
<div class="text-xs text-gray-500">{$i18n.t('Model IDs')}</div>
</div>
{#if filterModelIds.length > 0}
{#if model_ids.length > 0}
<div class="flex flex-col">
{#each filterModelIds as modelId, modelIdx}
{#each model_ids as modelId, modelIdx}
<div class=" flex gap-2 w-full justify-between items-center">
<div class=" text-sm flex-1 rounded-lg">
{modelId}
@@ -51,7 +51,7 @@
<button
type="button"
on:click={() => {
filterModelIds = filterModelIds.filter((_, idx) => idx !== modelIdx);
model_ids = model_ids.filter((_, idx) => idx !== modelIdx);
}}
>
<Minus strokeWidth="2" className="size-3.5" />
@@ -86,8 +86,8 @@
<button
type="button"
on:click={() => {
if (selectedModelId && !filterModelIds.includes(selectedModelId)) {
filterModelIds = [...filterModelIds, selectedModelId];
if (selectedModelId && !permissions.model.model_ids.includes(selectedModelId)) {
permissions.model.model_ids = [...permissions.model.model_ids, selectedModelId];
selectedModelId = '';
}
}}
@@ -109,11 +109,11 @@
<div class="flex-1 mr-2">
<select
class="w-full bg-transparent outline-none py-0.5 text-sm"
bind:value={defaultModelId}
bind:value={permissions.model.default_id}
placeholder="Select a model"
>
<option value="" disabled selected>{$i18n.t('Select a model')}</option>
{#each filterEnabled ? $models.filter( (model) => filterModelIds.includes(model.id) ) : $models.filter((model) => model.id) as model}
{#each permissions.model.filter ? $models.filter( (model) => filterModelIds.includes(model.id) ) : $models.filter((model) => model.id) as model}
<option value={model.id} class="bg-gray-100 dark:bg-gray-700">{model.name}</option>
{/each}
</select>