Spaces:
Running
Running
Update deadlines
Browse files- README.md +1 -1
- src/data/conferences.yml +16 -4
- src/pages/Index.tsx +7 -20
- src/utils/dateUtils.ts +12 -4
README.md
CHANGED
@@ -16,7 +16,7 @@ This helps researchers in quickly seeing when to submit their paper.
|
|
16 |
|
17 |
Note: papers can be submitted at any time to [hf.co/papers](https://hf.co/papers) at [hf.co/papers/submit](https://hf.co/papers/submit), assuming the paper is available on [Arxiv](https://arxiv.org/).
|
18 |
|
19 |
-
The benefit of hf.co/papers is that it allows people to quickly find related artifacts, such as models, datasets and demos. See [this paper page](https://huggingface.co/papers/2502.04328) as a nice example - it has 3 models, 1 dataset and 1 demo linked.
|
20 |
|
21 |
## Project info
|
22 |
|
|
|
16 |
|
17 |
Note: papers can be submitted at any time to [hf.co/papers](https://hf.co/papers) at [hf.co/papers/submit](https://hf.co/papers/submit), assuming the paper is available on [Arxiv](https://arxiv.org/).
|
18 |
|
19 |
+
The benefit of [hf.co/papers](https://hf.co/papers) is that it allows people to quickly find related artifacts, such as models, datasets and demos. See [this paper page](https://huggingface.co/papers/2502.04328) as a nice example - it has 3 models, 1 dataset and 1 demo linked.
|
20 |
|
21 |
## Project info
|
22 |
|
src/data/conferences.yml
CHANGED
@@ -68,8 +68,12 @@
|
|
68 |
id: icassp26
|
69 |
full_name: International Conference on Acoustics, Speech and Signal Processing
|
70 |
link: https://2026.ieeeicassp.org
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
|
|
73 |
city: Barcelona
|
74 |
country: Spain
|
75 |
venue: Barcelona International Convention Center (CCIB), Barcelona, Spain
|
@@ -295,7 +299,11 @@
|
|
295 |
id: icassp25
|
296 |
full_name: International Conference on Acoustics, Speech and Signal Processing
|
297 |
link: https://2025.ieeeicassp.org/
|
298 |
-
|
|
|
|
|
|
|
|
|
299 |
timezone: UTC-12
|
300 |
city: Hyderabad
|
301 |
country: India
|
@@ -1061,7 +1069,11 @@
|
|
1061 |
id: icra26
|
1062 |
full_name: International Conference on Robotics and Automation
|
1063 |
link: https://2026.ieee-icra.org/
|
1064 |
-
|
|
|
|
|
|
|
|
|
1065 |
timezone: PST
|
1066 |
city: Vienna
|
1067 |
country: Austria
|
|
|
68 |
id: icassp26
|
69 |
full_name: International Conference on Acoustics, Speech and Signal Processing
|
70 |
link: https://2026.ieeeicassp.org
|
71 |
+
deadlines:
|
72 |
+
- type: submission
|
73 |
+
label: Paper Submission
|
74 |
+
date: '2025-09-18 08:59:59'
|
75 |
+
timezone: GMT+02
|
76 |
+
timezone: GMT+02
|
77 |
city: Barcelona
|
78 |
country: Spain
|
79 |
venue: Barcelona International Convention Center (CCIB), Barcelona, Spain
|
|
|
299 |
id: icassp25
|
300 |
full_name: International Conference on Acoustics, Speech and Signal Processing
|
301 |
link: https://2025.ieeeicassp.org/
|
302 |
+
deadlines:
|
303 |
+
- type: submission
|
304 |
+
label: Paper Submission
|
305 |
+
date: '2025-09-18 08:59:59'
|
306 |
+
timezone: GMT+02
|
307 |
timezone: UTC-12
|
308 |
city: Hyderabad
|
309 |
country: India
|
|
|
1069 |
id: icra26
|
1070 |
full_name: International Conference on Robotics and Automation
|
1071 |
link: https://2026.ieee-icra.org/
|
1072 |
+
deadlines:
|
1073 |
+
- type: submission
|
1074 |
+
label: Paper Submission
|
1075 |
+
date: '2025-09-15 23:59:59'
|
1076 |
+
timezone: GMT-08
|
1077 |
timezone: PST
|
1078 |
city: Vienna
|
1079 |
country: Austria
|
src/pages/Index.tsx
CHANGED
@@ -14,6 +14,7 @@ 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());
|
@@ -43,12 +44,10 @@ const Index = () => {
|
|
43 |
return [];
|
44 |
}
|
45 |
|
46 |
-
|
47 |
.filter((conf: Conference) => {
|
48 |
-
// Filter by deadline (past/future)
|
49 |
-
|
50 |
-
const isUpcoming = !deadlineDate || !isValid(deadlineDate) || !isPast(deadlineDate);
|
51 |
-
if (!showPastConferences && !isUpcoming) return false;
|
52 |
|
53 |
// Filter by tags
|
54 |
const matchesTags = selectedTags.size === 0 ||
|
@@ -64,22 +63,10 @@ const Index = () => {
|
|
64 |
(conf.full_name && conf.full_name.toLowerCase().includes(searchQuery.toLowerCase()));
|
65 |
|
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 |
|
85 |
// Update handleTagsChange to handle multiple tags
|
|
|
14 |
import { getAllCountries } from "@/utils/countryExtractor";
|
15 |
import { getDeadlineInLocalTime } from "@/utils/dateUtils";
|
16 |
import { sortConferencesByDeadline } from "@/utils/conferenceUtils";
|
17 |
+
import { hasUpcomingDeadlines } from "@/utils/deadlineUtils";
|
18 |
|
19 |
const Index = () => {
|
20 |
const [selectedTags, setSelectedTags] = useState<Set<string>>(new Set());
|
|
|
44 |
return [];
|
45 |
}
|
46 |
|
47 |
+
const filtered = conferencesData
|
48 |
.filter((conf: Conference) => {
|
49 |
+
// Filter by deadline (past/future) - use new deadline logic
|
50 |
+
if (!showPastConferences && !hasUpcomingDeadlines(conf)) return false;
|
|
|
|
|
51 |
|
52 |
// Filter by tags
|
53 |
const matchesTags = selectedTags.size === 0 ||
|
|
|
63 |
(conf.full_name && conf.full_name.toLowerCase().includes(searchQuery.toLowerCase()));
|
64 |
|
65 |
return matchesTags && matchesCountry && matchesSearch;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
});
|
67 |
+
|
68 |
+
// Use the proper sorting function that handles both deadline formats
|
69 |
+
return sortConferencesByDeadline(filtered);
|
70 |
}, [selectedTags, selectedCountries, searchQuery, showPastConferences]);
|
71 |
|
72 |
// Update handleTagsChange to handle multiple tags
|
src/utils/dateUtils.ts
CHANGED
@@ -22,13 +22,21 @@ export const getDeadlineInLocalTime = (deadline: string | undefined, timezone: s
|
|
22 |
// Handle AoE (Anywhere on Earth) timezone
|
23 |
if (tz === 'AoE') return '-12:00';
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
// If it's already an IANA timezone, return as is
|
26 |
-
if (!tz.toUpperCase().startsWith('UTC')) return tz;
|
27 |
|
28 |
// Convert UTC±XX to proper format
|
29 |
-
const
|
30 |
-
if (
|
31 |
-
const [, sign, hours] =
|
32 |
const paddedHours = hours.padStart(2, '0');
|
33 |
return `${sign}${paddedHours}:00`;
|
34 |
}
|
|
|
22 |
// Handle AoE (Anywhere on Earth) timezone
|
23 |
if (tz === 'AoE') return '-12:00';
|
24 |
|
25 |
+
// Handle GMT±XX format
|
26 |
+
const gmtMatch = tz.match(/^GMT([+-])(\d+)$/);
|
27 |
+
if (gmtMatch) {
|
28 |
+
const [, sign, hours] = gmtMatch;
|
29 |
+
const paddedHours = hours.padStart(2, '0');
|
30 |
+
return `${sign}${paddedHours}:00`;
|
31 |
+
}
|
32 |
+
|
33 |
// If it's already an IANA timezone, return as is
|
34 |
+
if (!tz.toUpperCase().startsWith('UTC') && !tz.toUpperCase().startsWith('GMT')) return tz;
|
35 |
|
36 |
// Convert UTC±XX to proper format
|
37 |
+
const utcMatch = tz.match(/^UTC([+-])(\d+)$/);
|
38 |
+
if (utcMatch) {
|
39 |
+
const [, sign, hours] = utcMatch;
|
40 |
const paddedHours = hours.padStart(2, '0');
|
41 |
return `${sign}${paddedHours}:00`;
|
42 |
}
|