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">
|