nielsr HF staff commited on
Commit
929b27b
·
1 Parent(s): ba77d93

Update ICCV data, sort chronologically

Browse files
src/components/ConferenceList.tsx ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ import { sortConferencesByDeadline } from "@/utils/conferenceUtils";
2
+
3
+ // When loading the conferences:
4
+ const sortedConferences = sortConferencesByDeadline(conferences);
src/data/conferences.yml CHANGED
@@ -578,15 +578,17 @@
578
  id: iccv25
579
  full_name: International Conference on Computer Vision
580
  link: https://iccv.thecvf.com/Conferences/2025
581
- deadline: '2025-03-08 09:59:59'
582
- timezone: UTC+0
583
  city: Honolulu
584
  country: Hawaii
585
  date: October 19-25, 2025
 
586
  tags:
587
  - machine-learning
588
  - computer-vision
589
  rankings: 'CCF: A, CORE: A*, THCPL: A'
 
590
  rebuttal_period_start: '2025-05-10'
591
  rebuttal_period_end: '2025-05-16'
592
  final_decision_date: '2025-06-20'
 
578
  id: iccv25
579
  full_name: International Conference on Computer Vision
580
  link: https://iccv.thecvf.com/Conferences/2025
581
+ deadline: '2025-03-03 23:59:59'
582
+ timezone: UTC-10
583
  city: Honolulu
584
  country: Hawaii
585
  date: October 19-25, 2025
586
+ note: All info can be found <a href='https://iccv.thecvf.com/Conferences/2025/CallForPapers'>here</a>.
587
  tags:
588
  - machine-learning
589
  - computer-vision
590
  rankings: 'CCF: A, CORE: A*, THCPL: A'
591
+ abstract_deadline: '2025-03-03 23:59:59'
592
  rebuttal_period_start: '2025-05-10'
593
  rebuttal_period_end: '2025-05-16'
594
  final_decision_date: '2025-06-20'
src/pages/Index.tsx CHANGED
@@ -12,6 +12,8 @@ import { Button } from "@/components/ui/button";
12
  import { Checkbox } from "@/components/ui/checkbox";
13
  import { X, ChevronRight, Filter, Globe } from "lucide-react";
14
  import { getAllCountries } from "@/utils/countryExtractor";
 
 
15
 
16
  const Index = () => {
17
  const [selectedTags, setSelectedTags] = useState<Set<string>>(new Set());
@@ -64,9 +66,19 @@ const Index = () => {
64
  return matchesTags && matchesCountry && matchesSearch;
65
  })
66
  .sort((a: Conference, b: Conference) => {
67
- const dateA = a.deadline && a.deadline !== 'TBD' ? parseISO(a.deadline).getTime() : Infinity;
68
- const dateB = b.deadline && b.deadline !== 'TBD' ? parseISO(b.deadline).getTime() : Infinity;
69
- return dateA - dateB;
 
 
 
 
 
 
 
 
 
 
70
  });
71
  }, [selectedTags, selectedCountries, searchQuery, showPastConferences]);
72
 
 
12
  import { Checkbox } from "@/components/ui/checkbox";
13
  import { X, ChevronRight, Filter, Globe } from "lucide-react";
14
  import { getAllCountries } from "@/utils/countryExtractor";
15
+ import { getDeadlineInLocalTime } from "@/utils/dateUtils";
16
+ import { sortConferencesByDeadline } from "@/utils/conferenceUtils";
17
 
18
  const Index = () => {
19
  const [selectedTags, setSelectedTags] = useState<Set<string>>(new Set());
 
66
  return matchesTags && matchesCountry && matchesSearch;
67
  })
68
  .sort((a: Conference, b: Conference) => {
69
+ const aDeadline = getDeadlineInLocalTime(a.deadline, a.timezone);
70
+ const bDeadline = getDeadlineInLocalTime(b.deadline, b.timezone);
71
+
72
+ if (aDeadline && bDeadline) {
73
+ return aDeadline.getTime() - bDeadline.getTime();
74
+ }
75
+
76
+ // Handle cases where one or both deadlines are invalid
77
+ if (!aDeadline && !bDeadline) return 0;
78
+ if (!aDeadline) return 1;
79
+ if (!bDeadline) return -1;
80
+
81
+ return 0;
82
  });
83
  }, [selectedTags, selectedCountries, searchQuery, showPastConferences]);
84
 
src/utils/conferenceUtils.ts ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Conference } from "@/types/conference";
2
+ import { getDeadlineInLocalTime } from './dateUtils';
3
+
4
+ /**
5
+ * Sort conferences by their adjusted deadline (accounting for timezone)
6
+ */
7
+ export function sortConferencesByDeadline(conferences: Conference[]): Conference[] {
8
+ return [...conferences].sort((a, b) => {
9
+ const aDeadline = getDeadlineInLocalTime(a.deadline, a.timezone);
10
+ const bDeadline = getDeadlineInLocalTime(b.deadline, b.timezone);
11
+
12
+ // If either date is invalid, place it later in the list
13
+ if (!aDeadline || !bDeadline) {
14
+ if (!aDeadline && !bDeadline) return 0;
15
+ if (!aDeadline) return 1;
16
+ if (!bDeadline) return -1;
17
+ }
18
+
19
+ // Both dates are valid, compare them
20
+ if (aDeadline && bDeadline) {
21
+ return aDeadline.getTime() - bDeadline.getTime();
22
+ }
23
+
24
+ return 0;
25
+ });
26
+ }