Skip to content

Commit 10bc884

Browse files
committed
Add frontend for search
1 parent 85c35ba commit 10bc884

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

graphite-demo/frontend.jsx

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import React, { useEffect, useState } from 'react';
2+
3+
const TaskSearch = () => {
4+
const [tasks, setTasks] = useState([]);
5+
const [loading, setLoading] = useState(true);
6+
const [error, setError] = useState(null);
7+
const [searchQuery, setSearchQuery] = useState('');
8+
9+
useEffect(() => {
10+
setLoading(true);
11+
fetch(`/search?query=${encodeURIComponent(searchQuery)}`)
12+
.then(response => {
13+
if (!response.ok) {
14+
throw new Error('Network response was not ok');
15+
}
16+
return response.json();
17+
})
18+
.then(data => {
19+
setTasks(data);
20+
setLoading(false);
21+
})
22+
.catch(error => {
23+
setError(error.message);
24+
setLoading(false);
25+
});
26+
}, [searchQuery]); // Depend on searchQuery
27+
28+
if (loading) {
29+
return <div>Loading...</div>;
30+
}
31+
32+
if (error) {
33+
return <div>Error: {error}</div>;
34+
}
35+
36+
return (
37+
<div>
38+
<h2>Task Search</h2>
39+
<input
40+
type="text"
41+
placeholder="Search tasks..."
42+
value={searchQuery}
43+
onChange={(e) => setSearchQuery(e.target.value)}
44+
/>
45+
<ul>
46+
{tasks.map(task => (
47+
<li key={task.id}>
48+
<p>{task.description}</p>
49+
</li>
50+
))}
51+
</ul>
52+
</div>
53+
);
54+
};
55+
56+
export default TaskSearch;

0 commit comments

Comments
 (0)