nielsr HF staff commited on
Commit
ade630a
·
1 Parent(s): 71b5770

Update conference data

Browse files
src/components/ConferenceDialog.tsx CHANGED
@@ -114,7 +114,7 @@ const ConferenceDialog = ({ conference, open, onOpenChange }: ConferenceDialogPr
114
  const description = encodeURIComponent(
115
  `Paper Submission Deadline for ${conference.full_name || conference.title}\n` +
116
  (conference.abstract_deadline ? `Abstract Deadline: ${conference.abstract_deadline}\n` : '') +
117
- `Conference Dates: ${conference.date}\n` +
118
  `Location: ${conference.place}\n` +
119
  (conference.link ? `Website: ${conference.link}` : '')
120
  );
@@ -171,31 +171,63 @@ END:VCALENDAR`;
171
  <div className="flex items-start gap-2">
172
  <CalendarDays className="h-5 w-5 mt-0.5 text-gray-500" />
173
  <div>
174
- <p className="font-medium">Conference Dates</p>
175
  <p className="text-sm text-gray-500">{conference.date}</p>
176
  </div>
177
  </div>
178
 
179
  <div className="flex items-start gap-2">
180
  <Clock className="h-5 w-5 mt-0.5 text-gray-500" />
181
- <div className="space-y-2">
182
  <p className="font-medium">Important Deadlines</p>
183
- <div className="text-sm text-gray-500 space-y-1">
184
  {conference.abstract_deadline && (
185
- <p>Abstract: {conference.abstract_deadline}</p>
 
 
 
 
 
186
  )}
187
- <p>Submission: {conference.deadline}</p>
 
 
 
 
 
188
  {conference.commitment_deadline && (
189
- <p>Commitment: {conference.commitment_deadline}</p>
 
 
 
 
 
190
  )}
191
  {conference.review_release_date && (
192
- <p>Reviews Released: {conference.review_release_date}</p>
 
 
 
 
 
193
  )}
194
  {(conference.rebuttal_period_start || conference.rebuttal_period_end) && (
195
- <p>Rebuttal Period: {conference.rebuttal_period_start} - {conference.rebuttal_period_end}</p>
 
 
 
 
 
 
 
196
  )}
197
  {conference.final_decision_date && (
198
- <p>Final Decision: {conference.final_decision_date}</p>
 
 
 
 
 
199
  )}
200
  </div>
201
  </div>
 
114
  const description = encodeURIComponent(
115
  `Paper Submission Deadline for ${conference.full_name || conference.title}\n` +
116
  (conference.abstract_deadline ? `Abstract Deadline: ${conference.abstract_deadline}\n` : '') +
117
+ `Dates: ${conference.date}\n` +
118
  `Location: ${conference.place}\n` +
119
  (conference.link ? `Website: ${conference.link}` : '')
120
  );
 
171
  <div className="flex items-start gap-2">
172
  <CalendarDays className="h-5 w-5 mt-0.5 text-gray-500" />
173
  <div>
174
+ <p className="font-medium">Dates</p>
175
  <p className="text-sm text-gray-500">{conference.date}</p>
176
  </div>
177
  </div>
178
 
179
  <div className="flex items-start gap-2">
180
  <Clock className="h-5 w-5 mt-0.5 text-gray-500" />
181
+ <div className="space-y-2 flex-1">
182
  <p className="font-medium">Important Deadlines</p>
183
+ <div className="text-sm text-gray-500 space-y-2">
184
  {conference.abstract_deadline && (
185
+ <div className="bg-gray-100 rounded-md p-2">
186
+ <p>Abstract: {parseISO(conference.abstract_deadline) && isValid(parseISO(conference.abstract_deadline))
187
+ ? format(parseISO(conference.abstract_deadline), "MMMM d, yyyy")
188
+ : conference.abstract_deadline}
189
+ </p>
190
+ </div>
191
  )}
192
+ <div className="bg-gray-100 rounded-md p-2">
193
+ <p>Submission: {conference.deadline && conference.deadline !== 'TBD' && isValid(parseISO(conference.deadline))
194
+ ? format(parseISO(conference.deadline), "MMMM d, yyyy")
195
+ : conference.deadline}
196
+ </p>
197
+ </div>
198
  {conference.commitment_deadline && (
199
+ <div className="bg-gray-100 rounded-md p-2">
200
+ <p>Commitment: {isValid(parseISO(conference.commitment_deadline))
201
+ ? format(parseISO(conference.commitment_deadline), "MMMM d, yyyy")
202
+ : conference.commitment_deadline}
203
+ </p>
204
+ </div>
205
  )}
206
  {conference.review_release_date && (
207
+ <div className="bg-gray-100 rounded-md p-2">
208
+ <p>Reviews Released: {isValid(parseISO(conference.review_release_date))
209
+ ? format(parseISO(conference.review_release_date), "MMMM d, yyyy")
210
+ : conference.review_release_date}
211
+ </p>
212
+ </div>
213
  )}
214
  {(conference.rebuttal_period_start || conference.rebuttal_period_end) && (
215
+ <div className="bg-gray-100 rounded-md p-2">
216
+ <p>Rebuttal Period: {conference.rebuttal_period_start && isValid(parseISO(conference.rebuttal_period_start))
217
+ ? format(parseISO(conference.rebuttal_period_start), "MMMM d, yyyy")
218
+ : conference.rebuttal_period_start} - {conference.rebuttal_period_end && isValid(parseISO(conference.rebuttal_period_end))
219
+ ? format(parseISO(conference.rebuttal_period_end), "MMMM d, yyyy")
220
+ : conference.rebuttal_period_end}
221
+ </p>
222
+ </div>
223
  )}
224
  {conference.final_decision_date && (
225
+ <div className="bg-gray-100 rounded-md p-2">
226
+ <p>Final Decision: {isValid(parseISO(conference.final_decision_date))
227
+ ? format(parseISO(conference.final_decision_date), "MMMM d, yyyy")
228
+ : conference.final_decision_date}
229
+ </p>
230
+ </div>
231
  )}
232
  </div>
233
  </div>
src/data/conferences.yml CHANGED
@@ -371,6 +371,7 @@
371
  - natural-language-processing
372
  commitment_deadline: '2025-04-10 23:59:59'
373
  note: 'ARR commitment deadline on April 10th, 2025. More info <a href="https://2025.aclweb.org/">here</a>.'
 
374
 
375
  - title: IROS
376
  year: 2025
@@ -415,7 +416,6 @@
415
  full_name: IEEE International Conference on Computer Vision
416
  link: https://iccv.thecvf.com/Conferences/2025
417
  deadline: '2025-03-07 23:59:59'
418
- abstract_deadline: '2025-03-03 23:59:59'
419
  timezone: HST
420
  place: Honolulu, Hawaii
421
  date: October 19-25, 2025
@@ -424,11 +424,11 @@
424
  tags:
425
  - machine-learning
426
  - computer-vision
 
427
  review_release_date: '2025-05-09'
428
  rebuttal_period_start: '2025-05-10'
429
  rebuttal_period_end: '2025-05-16'
430
  final_decision_date: '2025-06-20'
431
- note: 'Paper registration deadline on March 3rd, 2025. Reviews released on May 9th, rebuttal period May 10-16, and final decisions on June 20th.'
432
 
433
  - title: ICANN
434
  year: 2025
 
371
  - natural-language-processing
372
  commitment_deadline: '2025-04-10 23:59:59'
373
  note: 'ARR commitment deadline on April 10th, 2025. More info <a href="https://2025.aclweb.org/">here</a>.'
374
+ final_decision_date: '2025-05-15 23:59:59'
375
 
376
  - title: IROS
377
  year: 2025
 
416
  full_name: IEEE International Conference on Computer Vision
417
  link: https://iccv.thecvf.com/Conferences/2025
418
  deadline: '2025-03-07 23:59:59'
 
419
  timezone: HST
420
  place: Honolulu, Hawaii
421
  date: October 19-25, 2025
 
424
  tags:
425
  - machine-learning
426
  - computer-vision
427
+ abstract_deadline: '2025-03-03 23:59:59'
428
  review_release_date: '2025-05-09'
429
  rebuttal_period_start: '2025-05-10'
430
  rebuttal_period_end: '2025-05-16'
431
  final_decision_date: '2025-06-20'
 
432
 
433
  - title: ICANN
434
  year: 2025
src/pages/Calendar.tsx CHANGED
@@ -20,25 +20,47 @@ import {
20
  } from "@/components/ui/tooltip";
21
 
22
  const categoryColors: Record<string, string> = {
23
- "computer-vision": "bg-orange-500",
24
  "machine-learning": "bg-purple-500",
 
25
  "natural-language-processing": "bg-blue-500",
26
  "robotics": "bg-green-500",
27
- "data-mining": "bg-pink-500",
28
  "signal-processing": "bg-cyan-500",
29
- "human-computer-interaction": "bg-indigo-500",
30
- "web-search": "bg-yellow-500",
 
31
  };
32
 
33
  const categoryNames: Record<string, string> = {
34
- "computer-vision": "Computer Vision",
35
  "machine-learning": "Machine Learning",
 
36
  "natural-language-processing": "NLP",
37
  "robotics": "Robotics",
 
38
  "data-mining": "Data Mining",
39
- "signal-processing": "Signal Processing",
40
- "human-computer-interaction": "HCI",
41
- "web-search": "Web Search",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  };
43
 
44
  const CalendarPage = () => {
@@ -51,7 +73,7 @@ const CalendarPage = () => {
51
  events: { deadlines: [], conferences: [] }
52
  });
53
  const [selectedCategories, setSelectedCategories] = useState<Set<string>>(
54
- new Set(Object.keys(categoryColors))
55
  );
56
  const [showDeadlines, setShowDeadlines] = useState(true);
57
  const [currentYear, setCurrentYear] = useState(new Date().getFullYear());
@@ -89,10 +111,16 @@ const CalendarPage = () => {
89
 
90
  const getEvents = (date: Date) => {
91
  return conferencesData.filter((conf: Conference) => {
 
 
 
92
  const matchesSearch = searchQuery === "" ||
93
  conf.title.toLowerCase().includes(searchQuery.toLowerCase()) ||
94
  (conf.full_name && conf.full_name.toLowerCase().includes(searchQuery.toLowerCase()));
95
 
 
 
 
96
  const deadlineDate = safeParseISO(conf.deadline);
97
  const startDate = safeParseISO(conf.start);
98
  const endDate = safeParseISO(conf.end);
@@ -107,10 +135,6 @@ const CalendarPage = () => {
107
  return deadlineDate && isInCurrentYear(deadlineDate) && matchesSearch;
108
  }
109
 
110
- // Check for category matches
111
- const matchesCategory = Array.isArray(conf.tags) &&
112
- conf.tags.some(tag => selectedCategories.has(tag));
113
-
114
  if (!matchesSearch || (!matchesCategory && selectedCategories.size > 0)) return false;
115
 
116
  // Check if either deadline or conference dates are in the current year
@@ -375,9 +399,11 @@ const CalendarPage = () => {
375
  );
376
  };
377
 
378
- const categories = Object.entries(categoryColors).filter(([category]) =>
379
- conferencesData.some(conf => conf.tags?.includes(category))
380
- );
 
 
381
 
382
  const renderLegend = () => {
383
  return (
@@ -447,7 +473,7 @@ const CalendarPage = () => {
447
  {selectedCategories.size < Object.keys(categoryColors).length && (
448
  <button
449
  onClick={() => {
450
- setSelectedCategories(new Set(Object.keys(categoryColors)));
451
  setShowDeadlines(true);
452
  }}
453
  className="text-sm text-green-600 bg-green-50 hover:bg-green-100 hover:text-green-700
 
20
  } from "@/components/ui/tooltip";
21
 
22
  const categoryColors: Record<string, string> = {
 
23
  "machine-learning": "bg-purple-500",
24
+ "computer-vision": "bg-orange-500",
25
  "natural-language-processing": "bg-blue-500",
26
  "robotics": "bg-green-500",
 
27
  "signal-processing": "bg-cyan-500",
28
+ "data-mining": "bg-pink-500",
29
+ "automated-planning": "bg-yellow-500",
30
+ "other": "bg-gray-500"
31
  };
32
 
33
  const categoryNames: Record<string, string> = {
 
34
  "machine-learning": "Machine Learning",
35
+ "computer-vision": "Computer Vision",
36
  "natural-language-processing": "NLP",
37
  "robotics": "Robotics",
38
+ "signal-processing": "Speech/Signal Processing",
39
  "data-mining": "Data Mining",
40
+ "automated-planning": "Automated Planning",
41
+ "other": "Other"
42
+ };
43
+
44
+ // Add this array to maintain the exact order we want
45
+ const orderedCategories = [
46
+ "machine-learning",
47
+ "computer-vision",
48
+ "natural-language-processing",
49
+ "robotics",
50
+ "signal-processing",
51
+ "data-mining",
52
+ "automated-planning",
53
+ "other"
54
+ ] as const;
55
+
56
+ const mapLegacyTag = (tag: string): string => {
57
+ const legacyTagMapping: Record<string, string> = {
58
+ "web-search": "other",
59
+ "human-computer-interaction": "other",
60
+ "computer-graphics": "other",
61
+ // Add any other legacy mappings here
62
+ };
63
+ return legacyTagMapping[tag] || tag;
64
  };
65
 
66
  const CalendarPage = () => {
 
73
  events: { deadlines: [], conferences: [] }
74
  });
75
  const [selectedCategories, setSelectedCategories] = useState<Set<string>>(
76
+ new Set(orderedCategories)
77
  );
78
  const [showDeadlines, setShowDeadlines] = useState(true);
79
  const [currentYear, setCurrentYear] = useState(new Date().getFullYear());
 
111
 
112
  const getEvents = (date: Date) => {
113
  return conferencesData.filter((conf: Conference) => {
114
+ // Map the conference tags to our new category system
115
+ const mappedTags = conf.tags?.map(mapLegacyTag) || [];
116
+
117
  const matchesSearch = searchQuery === "" ||
118
  conf.title.toLowerCase().includes(searchQuery.toLowerCase()) ||
119
  (conf.full_name && conf.full_name.toLowerCase().includes(searchQuery.toLowerCase()));
120
 
121
+ // Use mapped tags for category matching
122
+ const matchesCategory = mappedTags.some(tag => selectedCategories.has(tag));
123
+
124
  const deadlineDate = safeParseISO(conf.deadline);
125
  const startDate = safeParseISO(conf.start);
126
  const endDate = safeParseISO(conf.end);
 
135
  return deadlineDate && isInCurrentYear(deadlineDate) && matchesSearch;
136
  }
137
 
 
 
 
 
138
  if (!matchesSearch || (!matchesCategory && selectedCategories.size > 0)) return false;
139
 
140
  // Check if either deadline or conference dates are in the current year
 
399
  );
400
  };
401
 
402
+ const categories = orderedCategories
403
+ .filter(category =>
404
+ conferencesData.some(conf => conf.tags?.includes(category))
405
+ )
406
+ .map(category => [category, categoryColors[category]]);
407
 
408
  const renderLegend = () => {
409
  return (
 
473
  {selectedCategories.size < Object.keys(categoryColors).length && (
474
  <button
475
  onClick={() => {
476
+ setSelectedCategories(new Set(orderedCategories));
477
  setShowDeadlines(true);
478
  }}
479
  className="text-sm text-green-600 bg-green-50 hover:bg-green-100 hover:text-green-700