gaojintao01
Add files using Git LFS
f8b5d42
import Workspace from "@/models/workspace";
import showToast from "@/utils/toast";
import { castToType } from "@/utils/types";
import { useRef, useState } from "react";
import VectorDBIdentifier from "./VectorDBIdentifier";
import MaxContextSnippets from "./MaxContextSnippets";
import DocumentSimilarityThreshold from "./DocumentSimilarityThreshold";
import ResetDatabase from "./ResetDatabase";
import VectorCount from "./VectorCount";
import VectorSearchMode from "./VectorSearchMode";
import CTAButton from "@/components/lib/CTAButton";
export default function VectorDatabase({ workspace }) {
const [hasChanges, setHasChanges] = useState(false);
const [saving, setSaving] = useState(false);
const formEl = useRef(null);
const handleUpdate = async (e) => {
setSaving(true);
e.preventDefault();
const data = {};
const form = new FormData(formEl.current);
for (var [key, value] of form.entries()) data[key] = castToType(key, value);
const { workspace: updatedWorkspace, message } = await Workspace.update(
workspace.slug,
data
);
if (!!updatedWorkspace) {
showToast("Workspace updated!", "success", { clear: true });
} else {
showToast(`Error: ${message}`, "error", { clear: true });
}
setSaving(false);
setHasChanges(false);
};
if (!workspace) return null;
return (
<div className="w-full relative">
<form
ref={formEl}
onSubmit={handleUpdate}
className="w-1/2 flex flex-col gap-y-6"
>
{hasChanges && (
<div className="absolute top-0 right-0">
<CTAButton type="submit">
{saving ? "Updating..." : "Update Workspace"}
</CTAButton>
</div>
)}
<div className="flex items-start gap-x-5">
<VectorDBIdentifier workspace={workspace} />
<VectorCount reload={true} workspace={workspace} />
</div>
<VectorSearchMode workspace={workspace} setHasChanges={setHasChanges} />
<MaxContextSnippets
workspace={workspace}
setHasChanges={setHasChanges}
/>
<DocumentSimilarityThreshold
workspace={workspace}
setHasChanges={setHasChanges}
/>
<ResetDatabase workspace={workspace} />
</form>
</div>
);
}