import { ThemeProvider } from "@emotion/react"; import { Grid } from "@mui/material"; import { enqueueSnackbar } from "notistack"; import { useEffect, useState } from "react"; import { buildTheme } from "../../infrastructure/theme/theme"; import baseUrl from "../../services/api/api.config"; import postData from "../../services/api/base"; import BarPlot from "../BarPlot"; import { SemanticDifferencesContext } from "../Context/WordsContext"; import DimensionsList from "../DimensionList"; import IntroSemantic from "../IntroSemantic"; import ScatterDicionary from "../ScatterDicionary"; import WordCard from "../WordCard"; export default function SemanticDifferences() { const [SemanticDifferencesWords, setSemanticDifferencesWords] = useState([]); const [selectedDimensions, setSelectedDimensions] = useState([0, 0]); const [wordOne, setWordOne] = useState(""); const [wordTwo, setWordTwo] = useState(""); const [variance, setVariance] = useState({ variances: new Array(50).fill(0), dimensions: [1, 2, 3], }); const onChangeWordOne = (event) => { const newWordOne = event.target.value; setWordOne(newWordOne); }; const onChangeWordTwo = (event) => { const newWordTwo = event.target.value; setWordTwo(newWordTwo); }; const handleDimensionClick = (dimension) => { setSelectedDimensions((prev) => { if (prev.includes(dimension)) { return prev.filter((dim) => dim !== dimension); } else if (prev.length < 2) { return [...prev, dimension]; } else { return [prev[1], dimension]; } }); }; const onPressButton = async () => { const url = `/add-difference-semantic-words`; const data = { word1: wordOne, word2: wordTwo, }; if (!wordOne.trim() || !wordTwo.trim()) { enqueueSnackbar("Please enter both words with at least 1 character", { variant: "alert", }); return; } postData(url, data) .catch((error) => { enqueueSnackbar(error.detail || error.message, { variant: "error", }); }) .then(fetchSemanticDifferenceWords) .then(fetchEmebedding); setWordOne(""); setWordTwo(""); }; const fetchSemanticDifferenceWords = async () => { const url = `${baseUrl}/difference-semantic-words`; const response = await fetch(url); const SemanticDifferencesWords = await response.json(); setSemanticDifferencesWords(SemanticDifferencesWords.data); }; const fetchEmebedding = async () => { const url = `${baseUrl}/get-embedding-difference`; const response = await fetch(url); const embeddingResponse = await response.json(); setVariance(embeddingResponse.data.variance); setSelectedDimensions( embeddingResponse.data.top_variance_dims.slice(0, 2).map((d) => d + 1) ); if (!embeddingResponse.success) { enqueueSnackbar("Not enough word to create variance"); } }; const deleteSemanticDifferenceWord = async (id) => { const url = `${baseUrl}/delete-difference-semantic-words/${id}`; await fetch(url, { method: "DELETE", headers: { "Content-Type": "application/json" }, }); await fetchSemanticDifferenceWords(); await fetchEmebedding(); }; useEffect(() => { fetchSemanticDifferenceWords(); }, []); console.log(variance); return ( <> {Object.entries(SemanticDifferencesWords).map(([key, value]) => ( ))} ); }