From f8cf43c0f7277d9fcaec98e4f700142a7f0d0ff8 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 25 Feb 2024 16:13:34 -0800 Subject: [PATCH 1/5] refac: console logs removed --- src/lib/apis/openai/index.ts | 1 - src/routes/(app)/+page.svelte | 7 ------- 2 files changed, 8 deletions(-) diff --git a/src/lib/apis/openai/index.ts b/src/lib/apis/openai/index.ts index 414455813..3a629eb31 100644 --- a/src/lib/apis/openai/index.ts +++ b/src/lib/apis/openai/index.ts @@ -150,7 +150,6 @@ export const getOpenAIModels = async (token: string = '') => { return res.json(); }) .catch((err) => { - console.log(err); error = `OpenAI: ${err?.error?.message ?? 'Network Problem'}`; return []; }); diff --git a/src/routes/(app)/+page.svelte b/src/routes/(app)/+page.svelte index f2f4d69d2..7d424be47 100644 --- a/src/routes/(app)/+page.svelte +++ b/src/routes/(app)/+page.svelte @@ -104,13 +104,8 @@ await cancelChatCompletion(localStorage.token, currentRequestId); currentRequestId = null; } - window.history.replaceState(history.state, '', `/`); - - console.log('initNewChat'); - await chatId.set(''); - console.log($chatId); autoScroll = true; @@ -121,8 +116,6 @@ currentId: null }; - console.log($config); - if ($page.url.searchParams.get('models')) { selectedModels = $page.url.searchParams.get('models')?.split(','); } else if ($settings?.models) { From 63628a70a6e811980ad33bca693c7d42bc39212c Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 25 Feb 2024 21:16:11 -0800 Subject: [PATCH 2/5] feat: document select --- src/lib/components/common/Checkbox.svelte | 70 ++++++++++++ src/routes/(app)/documents/+page.svelte | 130 ++++++++++++++++++---- 2 files changed, 176 insertions(+), 24 deletions(-) create mode 100644 src/lib/components/common/Checkbox.svelte diff --git a/src/lib/components/common/Checkbox.svelte b/src/lib/components/common/Checkbox.svelte new file mode 100644 index 000000000..f69a58401 --- /dev/null +++ b/src/lib/components/common/Checkbox.svelte @@ -0,0 +1,70 @@ + + + diff --git a/src/routes/(app)/documents/+page.svelte b/src/routes/(app)/documents/+page.svelte index b2d289413..f20d42090 100644 --- a/src/routes/(app)/documents/+page.svelte +++ b/src/routes/(app)/documents/+page.svelte @@ -11,6 +11,8 @@ import { uploadDocToVectorDB } from '$lib/apis/rag'; import { transformFileName } from '$lib/utils'; + import Checkbox from '$lib/components/common/Checkbox.svelte'; + import EditDocModal from '$lib/components/documents/EditDocModal.svelte'; import AddFilesPlaceholder from '$lib/components/AddFilesPlaceholder.svelte'; import SettingsModal from '$lib/components/documents/SettingsModal.svelte'; @@ -33,6 +35,16 @@ await documents.set(await getDocs(localStorage.token)); }; + const deleteDocs = async (docs) => { + const res = await Promise.all( + docs.map(async (doc) => { + return await deleteDocByName(localStorage.token, doc.name); + }) + ); + + await documents.set(await getDocs(localStorage.token)); + }; + const uploadDoc = async (file) => { const res = await uploadDocToVectorDB(localStorage.token, '', file).catch((error) => { toast.error(error); @@ -123,6 +135,15 @@ dropZone?.removeEventListener('dragleave', onDragLeave); }; }); + + let filteredDocs; + + $: filteredDocs = $documents.filter( + (doc) => + (selectedTag === '' || + (doc?.content?.tags ?? []).map((tag) => tag.name).includes(selectedTag)) && + (query === '' || doc.name.includes(query)) + ); {#if dragged} @@ -287,38 +308,96 @@ {#if tags.length > 0}
- - {#each tags as tag} +
+ doc?.selected === 'checked').length === + filteredDocs.length + ? 'checked' + : 'unchecked'} + indeterminate={filteredDocs.filter((doc) => doc?.selected === 'checked').length > 0 && + filteredDocs.filter((doc) => doc?.selected === 'checked').length !== + filteredDocs.length} + on:change={(e) => { + if (e.detail === 'checked') { + filteredDocs = filteredDocs.map((doc) => ({ ...doc, selected: 'checked' })); + } else if (e.detail === 'unchecked') { + filteredDocs = filteredDocs.map((doc) => ({ ...doc, selected: 'unchecked' })); + } + }} + /> +
+ + {#if filteredDocs.filter((doc) => doc?.selected === 'checked').length === 0} - {/each} + + {#each tags as tag} + + {/each} + {:else} +
+
+ {filteredDocs.filter((doc) => doc?.selected === 'checked').length} Selected +
+ +
+ + + +
+
+ {/if}
{/if}
- {#each $documents.filter((doc) => (selectedTag === '' || (doc?.content?.tags ?? []) - .map((tag) => tag.name) - .includes(selectedTag)) && (query === '' || doc.name.includes(query))) as doc} -
{ + if (doc?.selected === 'checked') { + doc.selected = 'unchecked'; + } else { + doc.selected = 'checked'; + } + }} > +
+ +
@@ -387,9 +466,10 @@
-
+ {/each}
From 92c922b061045167524b6a86f7e73e5734f1a7f7 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 25 Feb 2024 21:39:10 -0800 Subject: [PATCH 3/5] feat: batch doc tagging --- src/lib/apis/documents/index.ts | 6 +- .../components/documents/AddDocModal.svelte | 188 ++++++++++++++++++ src/routes/(app)/documents/+page.svelte | 41 +--- 3 files changed, 199 insertions(+), 36 deletions(-) create mode 100644 src/lib/components/documents/AddDocModal.svelte diff --git a/src/lib/apis/documents/index.ts b/src/lib/apis/documents/index.ts index 2f7fb2b94..21e0a2643 100644 --- a/src/lib/apis/documents/index.ts +++ b/src/lib/apis/documents/index.ts @@ -5,7 +5,8 @@ export const createNewDoc = async ( collection_name: string, filename: string, name: string, - title: string + title: string, + content: object | null = null ) => { let error = null; @@ -20,7 +21,8 @@ export const createNewDoc = async ( collection_name: collection_name, filename: filename, name: name, - title: title + title: title, + ...(content ? { content: JSON.stringify(content) } : {}) }) }) .then(async (res) => { diff --git a/src/lib/components/documents/AddDocModal.svelte b/src/lib/components/documents/AddDocModal.svelte new file mode 100644 index 000000000..bf24f9c6f --- /dev/null +++ b/src/lib/components/documents/AddDocModal.svelte @@ -0,0 +1,188 @@ + + + +
+
+
Add Docs
+ +
+
+ +
+
+
{ + submitHandler(); + }} + > +
+ + + +
+ +
+
+
Tags
+ + +
+
+ +
+ +
+
+
+
+
+
+ + diff --git a/src/routes/(app)/documents/+page.svelte b/src/routes/(app)/documents/+page.svelte index f20d42090..79fe691b8 100644 --- a/src/routes/(app)/documents/+page.svelte +++ b/src/routes/(app)/documents/+page.svelte @@ -16,6 +16,7 @@ import EditDocModal from '$lib/components/documents/EditDocModal.svelte'; import AddFilesPlaceholder from '$lib/components/AddFilesPlaceholder.svelte'; import SettingsModal from '$lib/components/documents/SettingsModal.svelte'; + import AddDocModal from '$lib/components/documents/AddDocModal.svelte'; let importFiles = ''; let inputFiles = ''; @@ -24,6 +25,7 @@ let tags = []; let showSettingsModal = false; + let showAddDocModal = false; let showEditDocModal = false; let selectedDoc; let selectedTag = ''; @@ -171,36 +173,7 @@ {/key} - { - if (inputFiles && inputFiles.length > 0) { - for (const file of inputFiles) { - console.log(file, file.name.split('.').at(-1)); - if ( - SUPPORTED_FILE_TYPE.includes(file['type']) || - SUPPORTED_FILE_EXTENSIONS.includes(file.name.split('.').at(-1)) - ) { - uploadDoc(file); - } else { - toast.error( - `Unknown File Type '${file['type']}', but accepting and treating as plain text` - ); - uploadDoc(file); - } - } - - inputFiles = null; - e.target.value = ''; - } else { - toast.error(`File not found.`); - } - }} -/> + @@ -268,7 +241,7 @@ +
add tags
+ -->