diff --git a/.gitignore b/.gitignore index 0570f1b..0d213be 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +users/** +!users/eliza +users-prod/** +!users-prod/eliza .env* docs/** docs-prod/** diff --git a/frontend/src/Components/Conversation.css b/frontend/src/Components/Conversation.css index a4df914..75c7f79 100644 --- a/frontend/src/Components/Conversation.css +++ b/frontend/src/Components/Conversation.css @@ -1,4 +1,3 @@ - .Conversation { display: flex; background-color: #F5F5F5; @@ -12,3 +11,4 @@ overflow-y: auto; height: calc(100vh - 72px); } + diff --git a/frontend/src/Components/VectorVisualizer.css b/frontend/src/Components/VectorVisualizer.css index 3598aa4..e1f54f6 100644 --- a/frontend/src/Components/VectorVisualizer.css +++ b/frontend/src/Components/VectorVisualizer.css @@ -1,19 +1,13 @@ -/* .js-plotly-plot { - width: 100%; - height: 100%; -} -.js-plotly-plot .plotly { +.VectorVisualizer { + display: flex; + flex-grow: 1; + flex-direction: column; + background-color: #F5F5F5; + border: 1px solid #E0E0E0; + font-size: 0.9rem; + margin: 0 auto; + padding: 10px; + position: relative; width: 100%; - height: 100%; } - -.js-plotly-plot .plotly .main-svg { - width: 100%; - height: 100%; -} - -.plotly .svg-container { - width: 100% !important; - height: 100% !important; -} */ \ No newline at end of file diff --git a/frontend/src/Components/VectorVisualizer.tsx b/frontend/src/Components/VectorVisualizer.tsx index 05b5c6c..92f2056 100644 --- a/frontend/src/Components/VectorVisualizer.tsx +++ b/frontend/src/Components/VectorVisualizer.tsx @@ -70,8 +70,8 @@ const config: Partial = { showSendToCloud: false, staticPlot: false, frameMargins: 0, - scrollZoom: true, - doubleClick: "reset+autosize", + scrollZoom: false, + doubleClick: false, // | "lasso2d" // | "select2d" // | "sendDataToCloud" @@ -116,6 +116,7 @@ const config: Partial = { const layout: Partial = { autosize: false, + clickmode: 'event+select', paper_bgcolor: '#FFFFFF', // white plot_bgcolor: '#FFFFFF', // white plot background font: { @@ -193,6 +194,7 @@ const VectorVisualizer: React.FC = (props: VectorVisualiz const [result, setResult] = useState(undefined); const [view2D, setView2D] = useState(true); const plotlyRef = useRef(null); + const boxRef = useRef(null); const [node, setNode] = useState(null); const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('md')); @@ -201,16 +203,24 @@ const VectorVisualizer: React.FC = (props: VectorVisualiz /* Force resize of Plotly as it tends to not be the correct size if it is initially rendered * off screen (eg., the VectorVisualizer is not on the tab the app loads to) */ useEffect(() => { - requestAnimationFrame(() => { - const plotContainer = document.querySelector('.plot-container') as HTMLElement; - const svgContainer = document?.querySelector('.svg-container') as HTMLElement; - if ( plotContainer && svgContainer) { - const plotContainerRect = plotContainer.getBoundingClientRect(); - svgContainer.style.width = `${plotContainerRect.width}px`; - svgContainer.style.height = `${plotContainerRect.height}px`; - setPlotDimensions({ width: plotContainerRect.width, height: plotContainerRect.height}); - } - }); + if (!boxRef.current) { + return; + } + const resize = () => { + requestAnimationFrame(() => { + const plotContainer = document.querySelector('.plot-container') as HTMLElement; + const svgContainer = document?.querySelector('.svg-container') as HTMLElement; + if (plotContainer && svgContainer) { + const plotContainerRect = plotContainer.getBoundingClientRect(); + svgContainer.style.width = `${plotContainerRect.width}px`; + svgContainer.style.height = `${plotContainerRect.height}px`; + if (plotDimensions.width !== plotContainerRect.width || plotDimensions.height != plotContainerRect.height) { + setPlotDimensions({ width: plotContainerRect.width, height: plotContainerRect.height }); + } + } + }); + } + resize(); }); // Get the collection to visualize @@ -237,7 +247,7 @@ const VectorVisualizer: React.FC = (props: VectorVisualiz }; fetchCollection(); - }, [result, setResult, setSnack, sessionId, view2D]) + }, [result, setSnack, sessionId, view2D]) useEffect(() => { if (!result || !result.embeddings) return; @@ -365,12 +375,7 @@ const VectorVisualizer: React.FC = (props: VectorVisualiz setPlotData(data); - }, [result, querySet, view2D, setPlotData, setSnack]); - - if (setSnack === undefined) { - console.error('setSnack function is undefined'); - return null; - } + }, [result, querySet, view2D]); const handleKeyPress = (event: any) => { if (event.key === 'Enter') { @@ -465,7 +470,8 @@ The scatter graph shows the query in N-dimensional space, mapped to ${view2D ? ' }; return ( - } onChange={() => setView2D(!view2D)} label="3D" /> { onNodeSelected(event.points[0].customdata); }} + onClick={(event: any) => { console.log("click"); onNodeSelected(event.points[0].customdata); }} data={plotData} useResizeHandler={true} config={config} diff --git a/frontend/src/Pages/VectorVisualizerPage.css b/frontend/src/Pages/VectorVisualizerPage.css new file mode 100644 index 0000000..988b2fe --- /dev/null +++ b/frontend/src/Pages/VectorVisualizerPage.css @@ -0,0 +1,15 @@ + +.VectorVisualizerPage { + display: flex; + flex-grow: 1; + flex-direction: column; + background-color: #F5F5F5; + border: 1px solid #E0E0E0; + font-size: 0.9rem; + margin: 0 auto; + padding: 10px; + position: relative; + width: 100%; + max-width: 1024px; + height: calc(100vh - 72px); +} diff --git a/frontend/src/Pages/VectorVisualizerPage.tsx b/frontend/src/Pages/VectorVisualizerPage.tsx index a471cc9..9d638ec 100644 --- a/frontend/src/Pages/VectorVisualizerPage.tsx +++ b/frontend/src/Pages/VectorVisualizerPage.tsx @@ -1,9 +1,11 @@ -import React, { useEffect, useState, useRef } from 'react'; +import React from 'react'; import { Scrollable } from '../Components/Scrollable'; import { VectorVisualizer } from '../Components/VectorVisualizer'; import { BackstoryPageProps } from '../Components/BackstoryTab'; +import './VectorVisualizerPage.css'; + interface VectorVisualizerProps extends BackstoryPageProps { inline?: boolean; rag?: any; @@ -11,10 +13,10 @@ interface VectorVisualizerProps extends BackstoryPageProps { const VectorVisualizerPage: React.FC = (props: VectorVisualizerProps) => { return diff --git a/src/tests/test-context.py b/src/tests/test-context.py index 1e42db5..8486fa0 100644 --- a/src/tests/test-context.py +++ b/src/tests/test-context.py @@ -5,8 +5,6 @@ import os os.environ["TORCH_CPP_LOG_LEVEL"] = "ERROR" import warnings -warnings.filterwarnings("ignore", message="Couldn't find ffmpeg or avconv") - import ollama from ..utils import rag as Rag, Context, defines