"use client"; import { useState, useEffect } from "react"; import { Triple } from "@/types/graph"; export default function DocumentsList() { const [loading, setLoading] = useState(true); const [triples, setTriples] = useState([]); const [entities, setEntities] = useState([]); const [error, setError] = useState(null); useEffect(() => { async function fetchTriplesAndEntities() { try { setLoading(true); // Fetch triples from Neo4j const response = await fetch('/api/neo4j/triples', { method: 'GET', headers: { 'Content-Type': 'application/json' } }); if (!response.ok) { throw new Error(`Failed to fetch triples: ${response.statusText}`); } const data = await response.json(); // Extract unique entities const uniqueEntities = new Set(); data.triples.forEach((triple: Triple) => { uniqueEntities.add(triple.subject); uniqueEntities.add(triple.object); }); // Store data in local storage, overwriting previous data localStorage.setItem("graphTriples", JSON.stringify(data.triples)); localStorage.setItem("graphDocumentName", "sample_data.csv"); // Update state setTriples(data.triples); setEntities(Array.from(uniqueEntities)); setError(null); } catch (err) { console.error("Error fetching data:", err); setError(err instanceof Error ? err.message : "Unknown error occurred"); } finally { setLoading(false); } } fetchTriplesAndEntities(); }, []); return (

Document Data

{loading && (

Loading data from Neo4j...

)} {error && (

Error

{error}

)} {!loading && !error && (

Entities ({entities.length})

    {entities.slice(0, 100).map((entity, index) => (
  • {entity}
  • ))}
{entities.length > 100 && (

Showing 100 of {entities.length} entities

)}

Triples ({triples.length})

{triples.slice(0, 50).map((triple, index) => ( ))}
Subject Predicate Object
{triple.subject} {triple.predicate} {triple.object}
{triples.length > 50 && (

Showing 50 of {triples.length} triples

)}
)}
); }