Spaces:
Running
Running
Update ICCV data, sort chronologically
Browse files- src/components/ConferenceList.tsx +4 -0
- src/data/conferences.yml +4 -2
- src/pages/Index.tsx +15 -3
- src/utils/conferenceUtils.ts +26 -0
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-
|
582 |
-
timezone: UTC
|
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
|
68 |
-
const
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
}
|