aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShoubhit Dash <[email protected]>2025-10-23 10:33:48 +0530
committerShoubhit Dash <[email protected]>2025-10-23 10:33:48 +0530
commit6243284ddc166190ac8d5a7734ccaebb52b6effd (patch)
treed8de17ee244ab6e3d659f716f2b16f900533443b
parentadd frontend for search (diff)
downloadarchived-supermemory-10-23-demo_e58e39df_add_user_search.tar.xz
archived-supermemory-10-23-demo_e58e39df_add_user_search.zip
-rw-r--r--graphite-demo/frontend.jsx23
-rw-r--r--graphite-demo/server.js29
2 files changed, 42 insertions, 10 deletions
diff --git a/graphite-demo/frontend.jsx b/graphite-demo/frontend.jsx
index dd6a2a3b..10512ee5 100644
--- a/graphite-demo/frontend.jsx
+++ b/graphite-demo/frontend.jsx
@@ -1,7 +1,8 @@
import React, { useEffect, useState } from 'react';
-const TaskSearch = () => {
+const TaskAndUserSearch = () => {
const [tasks, setTasks] = useState([]);
+ const [users, setUsers] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [searchQuery, setSearchQuery] = useState('');
@@ -16,14 +17,15 @@ const TaskSearch = () => {
return response.json();
})
.then(data => {
- setTasks(data);
+ setTasks(data.tasks);
+ setUsers(data.users);
setLoading(false);
})
.catch(error => {
setError(error.message);
setLoading(false);
});
- }, [searchQuery]); // Depend on searchQuery
+ }, [searchQuery]);
if (loading) {
return <div>Loading...</div>;
@@ -35,13 +37,14 @@ const TaskSearch = () => {
return (
<div>
- <h2>Task Search</h2>
+ <h2>Search Tasks and Users</h2>
<input
type="text"
- placeholder="Search tasks..."
+ placeholder="Search tasks and users..."
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
/>
+ <h3>Tasks</h3>
<ul>
{tasks.map(task => (
<li key={task.id}>
@@ -49,8 +52,16 @@ const TaskSearch = () => {
</li>
))}
</ul>
+ <h3>Users</h3>
+ <ul>
+ {users.map(user => (
+ <li key={user.id}>
+ <p>{user.name}</p>
+ </li>
+ ))}
+ </ul>
</div>
);
};
-export default TaskSearch; \ No newline at end of file
+export default TaskAndUserSearch; \ No newline at end of file
diff --git a/graphite-demo/server.js b/graphite-demo/server.js
index cf7ec650..ff79b7d4 100644
--- a/graphite-demo/server.js
+++ b/graphite-demo/server.js
@@ -18,17 +18,38 @@ const tasks = [
}
];
+// Fake data for users
+const users = [
+ {
+ id: 101,
+ name: 'Alice Smith'
+ },
+ {
+ id: 102,
+ name: 'Bob Johnson'
+ },
+ {
+ id: 103,
+ name: 'Charlie Brown'
+ }
+];
+
app.get('/search', (req, res) => {
// Retrieve the query parameter
const query = req.query.query?.toLowerCase() || '';
// Filter tasks based on the query
- const filteredTasks = tasks.filter(task => task.description.toLowerCase().includes(query));
+ const filteredTasks = tasks.filter(task =>
+ task.description.toLowerCase().includes(query)
+ ).sort((a, b) => a.description.localeCompare(b.description));
- // Sort the filtered tasks alphabetically by description
- const sortedTasks = filteredTasks.sort((a, b) => a.description.localeCompare(b.description));
+ // Filter users based on the query
+ const filteredUsers = users.filter(user =>
+ user.name.toLowerCase().includes(query)
+ ).sort((a, b) => a.name.localeCompare(b.name));
- res.json(sortedTasks);
+ // Return both sets of results
+ res.json({ tasks: filteredTasks, users: filteredUsers });
});
app.listen(port, () => {