gpt-engineer-app[bot] commited on
Commit
3a65378
·
1 Parent(s): c430305

Implement color-coded conference dates

Browse files

Implement different colors for conference dates based on category.

Files changed (1) hide show
  1. 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
- <div className="h-0.5 flex-1 bg-purple-600" title="Conference" />
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-6 mb-6">
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">