parent
bc3317704e
commit
c279d03028
6 changed files with 119 additions and 81 deletions
Binary file not shown.
@ -0,0 +1,91 @@ |
||||
$(document).ready(function(){ |
||||
|
||||
//$(".alist li").click(function(){ |
||||
//console.log("lolololol"); |
||||
//var ctnt = $(this).find('.content-wrapper') |
||||
//$(ctnt).toggleClass("open") |
||||
//}); |
||||
|
||||
|
||||
const sortState = {}; |
||||
|
||||
// Function to sort articles |
||||
function sortArticles(columnClass) { |
||||
const $list = $('.alist'); |
||||
const $listItems = $list.children('li'); |
||||
|
||||
// Determine sort direction |
||||
if (!sortState[columnClass]) { |
||||
sortState[columnClass] = 'asc'; |
||||
} else { |
||||
sortState[columnClass] = (sortState[columnClass] === 'asc') ? 'desc' : 'asc'; |
||||
} |
||||
|
||||
// Sort the list items based on the text of the specified column |
||||
$listItems.sort(function(a, b) { |
||||
const aText = $(a).find('.' + columnClass).text().trim().toLowerCase(); |
||||
const bText = $(b).find('.' + columnClass).text().trim().toLowerCase(); |
||||
|
||||
// Special handling for period (numeric sorting) |
||||
if (columnClass === 'period') { |
||||
const aNum = parseInt(aText); |
||||
const bNum = parseInt(bText); |
||||
return sortState[columnClass] === 'asc' |
||||
? aNum - bNum |
||||
: bNum - aNum; |
||||
} |
||||
|
||||
// Default alphabetical sorting |
||||
return sortState[columnClass] === 'asc' |
||||
? aText.localeCompare(bText) |
||||
: bText.localeCompare(aText); |
||||
}); |
||||
|
||||
// Detach and reappend sorted items to maintain DOM structure |
||||
$list.empty().append($listItems); |
||||
|
||||
// Optional: Visual indication of sort direction |
||||
$('.legend li ').removeClass('sort-asc sort-desc'); |
||||
$(`.legend li[data-sort="${columnClass}"]`).addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); |
||||
//$(`.legend li:contains("${columnClass}")`).addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); |
||||
//$(`.legend li `).attr('data-sort').addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); |
||||
} |
||||
|
||||
// Add click event to legend spans |
||||
$('.legend li ').on('click', function() { |
||||
// Get the class corresponding to the clicked span |
||||
//const columnClass = $(this).text().toLowerCase().replace(/\s+/g, ''); |
||||
const columnClass = $(this).attr("data-sort") |
||||
|
||||
// If the column exists in the article items, sort by that column |
||||
if ($('.alist li').first().find('.' + columnClass).length > 0) { |
||||
sortArticles(columnClass); |
||||
} |
||||
}); |
||||
|
||||
|
||||
$(".alist li a ").click(function(e) { |
||||
// Prevent this event from interfering with sorting or default link behavior |
||||
// e.preventDefault(); |
||||
|
||||
console.log("lolololol"); |
||||
var ctnt = $(this).find('.content-wrapper'); |
||||
if (ctnt.length === 0) { |
||||
ctnt = $(this).closest('li').find('.content-wrapper'); |
||||
} |
||||
$(ctnt).toggleClass("open"); |
||||
}); |
||||
|
||||
//$(".alist").on('click', 'li', function(e) { |
||||
//// Prevent this event from interfering with sorting |
||||
//if ($(e.target).closest('.legend').length === 0) { |
||||
//console.log("lolololol"); |
||||
//var ctnt = $(this).find('.content-wrapper'); |
||||
//$(ctnt).toggleClass("open"); |
||||
//} |
||||
//}); |
||||
|
||||
}) |
||||
|
||||
|
||||
|
||||
Loading…
Reference in new issue