71 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
let guildReminders = document.querySelector("#guildReminders");
 | 
						|
 | 
						|
function sort_by(cond) {
 | 
						|
    if (cond === "channel") {
 | 
						|
        [...guildReminders.children]
 | 
						|
            .sort((a, b) => {
 | 
						|
                let channel1 = a.querySelector("select.channel-selector").value;
 | 
						|
                let channel2 = b.querySelector("select.channel-selector").value;
 | 
						|
 | 
						|
                return channel1 > channel2 ? 1 : -1;
 | 
						|
            })
 | 
						|
            .forEach((node) => guildReminders.appendChild(node));
 | 
						|
 | 
						|
        // go through and add channel categories
 | 
						|
        let currentChannelGroup = null;
 | 
						|
        for (let child of guildReminders.querySelectorAll("div.reminderContent")) {
 | 
						|
            let thisChannelGroup = child.querySelector("select.channel-selector").value;
 | 
						|
 | 
						|
            if (currentChannelGroup !== thisChannelGroup) {
 | 
						|
                let newNode = document.createElement("div");
 | 
						|
                newNode.textContent =
 | 
						|
                    "#" + channels.find((a) => a.id === thisChannelGroup).name;
 | 
						|
                newNode.classList.add("channel-tag");
 | 
						|
 | 
						|
                guildReminders.insertBefore(newNode, child);
 | 
						|
 | 
						|
                currentChannelGroup = thisChannelGroup;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    } else {
 | 
						|
        // remove any channel tags if previous ordering was by channel
 | 
						|
        guildReminders.querySelectorAll("div.channel-tag").forEach((el) => {
 | 
						|
            el.remove();
 | 
						|
        });
 | 
						|
 | 
						|
        if (cond === "time") {
 | 
						|
            [...guildReminders.children]
 | 
						|
                .sort((a, b) => {
 | 
						|
                    let time1 = luxon.DateTime.fromISO(
 | 
						|
                        a.querySelector('input[name="time"]').value
 | 
						|
                    );
 | 
						|
                    let time2 = luxon.DateTime.fromISO(
 | 
						|
                        b.querySelector('input[name="time"]').value
 | 
						|
                    );
 | 
						|
 | 
						|
                    return time1 > time2 ? 1 : -1;
 | 
						|
                })
 | 
						|
                .forEach((node) => guildReminders.appendChild(node));
 | 
						|
        } else {
 | 
						|
            [...guildReminders.children]
 | 
						|
                .sort((a, b) => {
 | 
						|
                    let name1 = a.querySelector('input[name="name"]').value;
 | 
						|
                    let name2 = b.querySelector('input[name="name"]').value;
 | 
						|
 | 
						|
                    return name1 > name2 ? 1 : -1;
 | 
						|
                })
 | 
						|
                .forEach((node) => guildReminders.appendChild(node));
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
const selector = document.querySelector("#orderBy");
 | 
						|
 | 
						|
selector.addEventListener("change", () => {
 | 
						|
    sort_by(selector.value);
 | 
						|
});
 | 
						|
 | 
						|
document.addEventListener("remindersLoaded", () => {
 | 
						|
    sort_by(selector.value);
 | 
						|
});
 |