Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from awesome-mlss:master #94

Merged
merged 6 commits into from
Dec 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@
## 2025 Summer Schools
Title|Topics|Place|Deadline|Dates|Details
-----|------|-----|--------|-----|-------
Bumblekite Machine Learning Summer School in Health, care and biosciences<div style="float: right; font-size: 0.6em; font-style: italic; margin-right: -5px; margin-top: 10px; color: #666;">featured</div>|Machine Learning, ML for Health, ML for Biology|Zürich, Switzerland|Mar 09, 2025|Jun 22 - Jun 28, 2025|[Details](https://awesome-mlss.com/summerschool/bumblekite25)
Bumblekite Machine Learning Summer School in Health, care and biosciences <img src="https://img.shields.io/badge/featured-blue?style=plastic" alt="featured" width="50" />|Machine Learning, ML for Health, ML for Biology|Zürich, Switzerland|Mar 09, 2025|Jun 22 - Jun 28, 2025|[Details](https://awesome-mlss.com/summerschool/bumblekite25)
International Artificial Intelligence Summer School|Machine Learning|Grosseto, Italy|Mar 23, 2025|Sep 21 - Sep 25, 2025|[Details](https://awesome-mlss.com/summerschool/IAISS25)
European Summer School on Artificial Intelligence|Machine Learning, Robotics, Automated Planning, Data Mining|Bratislava, Slovakia|Jun 01, 2025|Jun 30 - Jul 04, 2025|[Details](https://awesome-mlss.com/summerschool/essai25)
Advanced Course on Data Science & Machine Learning|Machine Learning|Grosseto, Italy|Feb 23, 2025|Jun 09 - Jun 13, 2025|[Details](https://awesome-mlss.com/summerschool/acdl25)
Summer School in Responsible AI and Human Rights|Responsible AI|Montreal, Canada|Jan 06, 2025|May 26 - May 30, 2025|[Details](https://awesome-mlss.com/summerschool/ssraihr25)
Winter School: Next Generation AI and Economic Applications|Generative AI, AI and Economics|UM6P Ben Guerir Campus, Morocco|Jan 30, 2025|Feb 24 - Feb 25, 2025|[Details](https://awesome-mlss.com/summerschool/wsngaiea25)
Expand Down
3 changes: 2 additions & 1 deletion scripts/update_readme.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,8 @@ def generate_markdown_table(summerschools, types_map, year=2025):
title = sch.get("title", "")
# Add featured tag if school is featured
if sch.get("featured", False):
title = f'{title}<div style="float: right; font-size: 0.6em; font-style: italic; margin-right: -5px; margin-top: 10px; color: #666;">featured</div>'
badge_url="https://img.shields.io/badge/featured-blue?style=plastic"
title = f'{title} <img src="{badge_url}" alt="featured" width="50" />'
place = sch.get("place", "")

# Format deadline
Expand Down
22 changes: 21 additions & 1 deletion site/_data/summerschools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,4 +142,24 @@
image: "https://mila.quebec/sites/default/files/styles/focal_crop_2500_757/public/blocks/imagefullwidth/1289/2024capsuleraihrsseng.jpg.webp?itok=oiuqQ0Rn"
location:
latitude: 45.53086
longitude: -73.61325
longitude: -73.61325

- title: "European Summer School on Artificial Intelligence"
year: 2025
id: essai25
full_name: "3rd European Summer School on Artificial Intelligence"
link: "https://essai2025.eu/"
deadline: "2025-06-01 23:59:00"
timezone: "Europe/Bratislava"
place: "Bratislava, Slovakia"
date: "June 30 - July 4, 2025"
start: 2025-06-30
end: 2025-07-04
sub: ['ML', 'RO', 'AP', 'DM']
note: null
email: "[email protected]"
description: "European Summer School on Artificial Intelligence (ESSAI) intends to serve as a central hub for PhD students and young researchers working in all aspects of AI. The ESSAI Summer School covers one week of courses in the summer, at different sites around Europe, for both beginning and advanced students, and junior and senior researchers. ESSAI provides introductory and advanced courses in all areas of AI, emphasizing topics that allow students to gain a broad view of AI and understand connections between subdisciplines. ESSAI also offers several social activities for students and researchers alike. One of the tracks of ESSAI consists of advanced tutorials on a specific subject and corresponds to the traditional ACAI school organized by EurAI since 1989."
image: "https://essai2025.eu/wp-content/uploads/ESSAI_2025_logo_corrected_v01.png"
location:
latitude: 48.148598
longitude: 17.107748
115 changes: 65 additions & 50 deletions site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ <h1 id="coming-events-title">Upcoming Deadlines</h1>
</label>
<select id="sort-order-select" name="sort-order-select">
<option value="start-asc">Start Date (ascending)</option>
<option value="start-desc">Start Date (descending)</option>
<option value="start-desc" selected>Start Date (descending)</option>
<option value="deadline-asc">Deadline (ascending)</option>
<option value="deadline-desc" selected>Deadline (descending)</option>
<option value="deadline-desc">Deadline (descending)</option>
</select>
</div>
</div>
Expand Down Expand Up @@ -171,9 +171,10 @@ <h1 id="coming-events-title">Upcoming Deadlines</h1>
</div>
{% endfor %}
</div>
<div id="past_confs">
<h1 id="past-events-title">Past Deadlines</h1>
</div>
<div id="past-container">
<h1 id="past-events-title">Past Deadlines</h1>
<div id="past_confs"></div>
</div>
</div>
<footer>
{% include footer.html %}
Expand Down Expand Up @@ -255,7 +256,7 @@ <h1 id="past-events-title">Past Deadlines</h1>
$('#{{conf.id}}').attr("startTimestamp", startDate.valueOf());
}
{% endif %}

if (diff > 0) {
$('#{{conf.id}}').addClass('past');
$('#{{conf.id}}').appendTo($("#past_confs"))
Expand All @@ -272,74 +273,88 @@ <h1 id="past-events-title">Past Deadlines</h1>
{% endif %}
{% endfor %}

// Check container (upcoming/past) and sort by user selection
function sortConfs(containerSelector, sortBy, ascending) {
// First, separate featured and non-featured items
var $featured = $(containerSelector + ' .ConfItem[featured="true"]');
var $nonFeatured = $(containerSelector + ' .ConfItem[featured="false"]');

// Sort function that can be applied to both groups
function sortByAttribute($elements) {
return $elements.sort(function(a, b) {
var aVal = 0, bVal = 0;

// Decide which numeric attribute to compare
if (sortBy === 'deadline') {
aVal = parseInt($(a).attr('deadlineTimestamp')) || 0;
bVal = parseInt($(b).attr('deadlineTimestamp')) || 0;
} else { // sortBy === 'start'
aVal = parseInt($(a).attr('startTimestamp')) || 0;
bVal = parseInt($(b).attr('startTimestamp')) || 0;
}

// Ascending vs descending sort
return ascending ? (aVal - bVal) : (bVal - aVal);
});
function sortConfs(containerSelector, sortBy, ascending, keepFeaturedOnTop) {
// Select all conferences in that container
var $confs = $(containerSelector).find('.ConfItem');

// For convenience, create a compare function that checks
// the relevant numeric attribute (deadlineTimestamp or startTimestamp)
function getValue($item) {
if (sortBy === 'deadline') {
return parseInt($item.attr('deadlineTimestamp')) || 0;
} else {
// sortBy === 'start'
return parseInt($item.attr('startTimestamp')) || 0;
}
}

// Sort each group separately
var $sortedFeatured = sortByAttribute($featured);
var $sortedNonFeatured = sortByAttribute($nonFeatured);

// Clear the container and append featured items first, then non-featured

// Convert the jQuery object to a standard array to use .sort
var confArray = $confs.toArray();

confArray.sort(function(a, b) {
// If keepFeaturedOnTop = true, we pin featured confs on top
if (keepFeaturedOnTop) {
var aFeatured = $(a).attr('featured') === 'true';
var bFeatured = $(b).attr('featured') === 'true';

// If one is featured and the other not, that decides the order
if (aFeatured && !bFeatured) return -1;
if (!aFeatured && bFeatured) return 1;
// else, if both are the same w.r.t. featured, fall through to normal sorting
}

// Normal numeric sort by the chosen attribute
var aVal = getValue($(a));
var bVal = getValue($(b));
return ascending ? (aVal - bVal) : (bVal - aVal);
});

// Now re-append them in the new order
var $container = $(containerSelector);
// (You probably .empty() the container first)
$container.empty();
$container.append($sortedFeatured);
$container.append($sortedNonFeatured);
$container.append(confArray);
}

// Sort wrapper that looks at the dropdown's value & sorts accordingly
// On initial page load, keep featured on top
function initialSort() {
sortConfs('#coming_confs', 'start', false, true); // descending, featured pinned
sortConfs('#past_confs', 'start', false, true);
}

// When the user changes sort order, pass keepFeaturedOnTop = false
function doSorting() {
var choice = $('#sort-order-select').val();

switch (choice) {
case 'deadline-asc':
sortConfs('#coming_confs', 'deadline', true);
sortConfs('#past_confs', 'deadline', true);
sortConfs('#coming_confs', 'deadline', true, false);
sortConfs('#past_confs', 'deadline', true, false);
break;
case 'deadline-desc':
sortConfs('#coming_confs', 'deadline', false);
sortConfs('#past_confs', 'deadline', false);
sortConfs('#coming_confs', 'deadline', false, false);
sortConfs('#past_confs', 'deadline', false, false);
break;
case 'start-asc':
sortConfs('#coming_confs', 'start', true);
sortConfs('#past_confs', 'start', true);
sortConfs('#coming_confs', 'start', true, false);
sortConfs('#past_confs', 'start', true, false);
break;
case 'start-desc':
sortConfs('#coming_confs', 'start', false);
sortConfs('#past_confs', 'start', false);
sortConfs('#coming_confs', 'start', false, false);
sortConfs('#past_confs', 'start', false, false);
break;
}
}

// Initial sorting for the default selection (deadline-desc)
doSorting();
// Run the initial sort with featured pinned
initialSort();

// When user changes dropdown, re-sort
// Then on user change, do the normal re-sorting
$('#sort-order-select').on('change', function() {
doSorting();
});


{% include handle_url_retrieval.js %}

// Event handler on sub badge click
Expand Down
Loading