Spaces:
Running
Running
gpt-engineer-app[bot]
commited on
Commit
·
3a65378
1
Parent(s):
c430305
Implement color-coded conference dates
Browse filesImplement different colors for conference dates based on category.
- src/pages/Calendar.tsx +43 -8
src/pages/Calendar.tsx
CHANGED
@@ -20,6 +20,28 @@ import {
|
|
20 |
TooltipTrigger,
|
21 |
} from "@/components/ui/tooltip";
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
const CalendarPage = () => {
|
24 |
const [selectedDate, setSelectedDate] = useState<Date | undefined>(new Date());
|
25 |
const [isYearView, setIsYearView] = useState(true);
|
@@ -160,9 +182,16 @@ const CalendarPage = () => {
|
|
160 |
{hasDeadlines && (
|
161 |
<div className="h-0.5 flex-1 bg-red-500" title="Deadline" />
|
162 |
)}
|
163 |
-
{hasConferences && (
|
164 |
-
|
165 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
</div>
|
167 |
</div>
|
168 |
);
|
@@ -226,6 +255,10 @@ const CalendarPage = () => {
|
|
226 |
);
|
227 |
};
|
228 |
|
|
|
|
|
|
|
|
|
229 |
return (
|
230 |
<div className="min-h-screen bg-neutral-light">
|
231 |
<Header onSearch={setSearchQuery} />
|
@@ -252,15 +285,17 @@ const CalendarPage = () => {
|
|
252 |
</div>
|
253 |
</div>
|
254 |
|
255 |
-
<div className="flex justify-center gap-
|
256 |
-
<div className="flex items-center gap-2">
|
257 |
-
<div className="w-4 h-1 bg-purple-600" />
|
258 |
-
<span>Conference Dates</span>
|
259 |
-
</div>
|
260 |
<div className="flex items-center gap-2">
|
261 |
<div className="w-4 h-1 bg-red-500" />
|
262 |
<span>Submission Deadlines</span>
|
263 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
</div>
|
265 |
|
266 |
<div className="grid grid-cols-1 gap-8">
|
|
|
20 |
TooltipTrigger,
|
21 |
} from "@/components/ui/tooltip";
|
22 |
|
23 |
+
const categoryColors: Record<string, string> = {
|
24 |
+
"computer-vision": "bg-orange-500",
|
25 |
+
"machine-learning": "bg-purple-500",
|
26 |
+
"natural-language-processing": "bg-blue-500",
|
27 |
+
"robotics": "bg-green-500",
|
28 |
+
"data-mining": "bg-pink-500",
|
29 |
+
"signal-processing": "bg-cyan-500",
|
30 |
+
"human-computer-interaction": "bg-indigo-500",
|
31 |
+
"web-search": "bg-yellow-500",
|
32 |
+
};
|
33 |
+
|
34 |
+
const categoryNames: Record<string, string> = {
|
35 |
+
"computer-vision": "Computer Vision",
|
36 |
+
"machine-learning": "Machine Learning",
|
37 |
+
"natural-language-processing": "NLP",
|
38 |
+
"robotics": "Robotics",
|
39 |
+
"data-mining": "Data Mining",
|
40 |
+
"signal-processing": "Signal Processing",
|
41 |
+
"human-computer-interaction": "HCI",
|
42 |
+
"web-search": "Web Search",
|
43 |
+
};
|
44 |
+
|
45 |
const CalendarPage = () => {
|
46 |
const [selectedDate, setSelectedDate] = useState<Date | undefined>(new Date());
|
47 |
const [isYearView, setIsYearView] = useState(true);
|
|
|
182 |
{hasDeadlines && (
|
183 |
<div className="h-0.5 flex-1 bg-red-500" title="Deadline" />
|
184 |
)}
|
185 |
+
{hasConferences && dayEvents.conferences.map((conf) => {
|
186 |
+
const categoryColor = conf.tags?.[0] ? categoryColors[conf.tags[0]] || "bg-purple-600" : "bg-purple-600";
|
187 |
+
return (
|
188 |
+
<div
|
189 |
+
key={conf.id}
|
190 |
+
className={`h-0.5 flex-1 ${categoryColor}`}
|
191 |
+
title={conf.title}
|
192 |
+
/>
|
193 |
+
);
|
194 |
+
})}
|
195 |
</div>
|
196 |
</div>
|
197 |
);
|
|
|
255 |
);
|
256 |
};
|
257 |
|
258 |
+
const categories = Object.entries(categoryColors).filter(([category]) =>
|
259 |
+
conferencesData.some(conf => conf.tags?.includes(category))
|
260 |
+
);
|
261 |
+
|
262 |
return (
|
263 |
<div className="min-h-screen bg-neutral-light">
|
264 |
<Header onSearch={setSearchQuery} />
|
|
|
285 |
</div>
|
286 |
</div>
|
287 |
|
288 |
+
<div className="flex justify-center flex-wrap gap-4 mb-6">
|
|
|
|
|
|
|
|
|
289 |
<div className="flex items-center gap-2">
|
290 |
<div className="w-4 h-1 bg-red-500" />
|
291 |
<span>Submission Deadlines</span>
|
292 |
</div>
|
293 |
+
{categories.map(([category, color]) => (
|
294 |
+
<div key={category} className="flex items-center gap-2">
|
295 |
+
<div className={`w-4 h-1 ${color}`} />
|
296 |
+
<span>{categoryNames[category]}</span>
|
297 |
+
</div>
|
298 |
+
))}
|
299 |
</div>
|
300 |
|
301 |
<div className="grid grid-cols-1 gap-8">
|