diff options
| author | Shoubhit Dash <[email protected]> | 2025-10-23 10:33:48 +0530 |
|---|---|---|
| committer | Shoubhit Dash <[email protected]> | 2025-10-23 10:33:48 +0530 |
| commit | 6243284ddc166190ac8d5a7734ccaebb52b6effd (patch) | |
| tree | d8de17ee244ab6e3d659f716f2b16f900533443b | |
| parent | add frontend for search (diff) | |
| download | archived-supermemory-10-23-demo_e58e39df_add_user_search.tar.xz archived-supermemory-10-23-demo_e58e39df_add_user_search.zip | |
Add user search10-23-demo_e58e39df_add_user_search
| -rw-r--r-- | graphite-demo/frontend.jsx | 23 | ||||
| -rw-r--r-- | graphite-demo/server.js | 29 |
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, () => { |