MediaWiki:Gadget-syllabusTimetableLinks.js: Difference between revisions

From Warwick Wiki
No edit summary
No edit summary
Line 1: Line 1:
mw.hook('wikipage.content').add(function(){
mw.hook('wikipage.content').add(function(){
const today = new Date();
const today = new Date();
    var week;
    var year;
     $.getJSON( "https://warwick-wiki.containers.uwcs.co.uk/wiki/MediaWiki:Tabula-weeks.json?action=raw", function( data ) {
     $.getJSON( "https://warwick-wiki.containers.uwcs.co.uk/wiki/MediaWiki:Tabula-weeks.json?action=raw", function( data ) {
    var thisWeekNum;
    var thisWeekYear;
    var nextWeekNum;
    var nextWeekYear;
const weeks = data.weeks;
const weeks = data.weeks;
var i = 0;
var i = 0;
Line 11: Line 13:
var endDate = new Date(weeks[i].end + "T24:00:00Z");
var endDate = new Date(weeks[i].end + "T24:00:00Z");
if (weeks[i].weekNumber > 0 && startDate < today && endDate >= today) {
if (weeks[i].weekNumber > 0 && startDate < today && endDate >= today) {
week = weeks[i].weekNumber;
thisWeekNum = weeks[i].weekNumber;
year = weeks[i].academicYear.replace("/", "");
thisWeekYear = weeks[i].academicYear.replace("/", "");
foundWeek = true;
foundWeek = true;
i--;
i--;
Line 18: Line 20:
i++;
i++;
}
}
var foundWeek = false;
while (i < weeks.length && !foundWeek) {
if (weeks[i].weekNumber > 0) {
nextWeekNum = weeks[i].weekNumber;
nextWeekYear = weeks[i].academicYear.replace("/", "");
foundWeek = true;
i--;
}
i++;
}
$('.syllabus-timetable-links').each(function(i, obj) {
$('.syllabus-timetable-links').each(function(i, obj) {
var id = $(obj).data('syllabus-id');
var id = $(obj).data('syllabus-id');
var thisWeekTT = '<a href="https://timetablingmanagement.warwick.ac.uk/SWS' + year + '/roomtimetable.asp?id=' + id + '&week=' + week + '">This week</a>';
var thisWeekTT = '<a href="https://timetablingmanagement.warwick.ac.uk/SWS' + thisWeekYear + '/roomtimetable.asp?id=' + id + '&week=' + thisWeekNum + '">This week</a>';
var nextWeekTT = '<a href="https://timetablingmanagement.warwick.ac.uk/SWS' + weeks[i+1].academicYear.replace("/", "") + '/roomtimetable.asp?id=' + id + '&week=' + weeks[i+1].weekNumber + '">Next week</a>';
var nextWeekTT = '<a href="https://timetablingmanagement.warwick.ac.uk/SWS' +nextWeekYear + '/roomtimetable.asp?id=' + id + '&week=' + nextWeekNum + '">Next week</a>';
$(obj).html('<b>Timetables</b><br/>' + thisWeekTT + '&nbsp;&nbsp;&nbsp;&nbsp;' + nextWeekTT);
$(obj).html('<b>Timetables</b><br/>' + thisWeekTT + '&nbsp;&nbsp;&nbsp;&nbsp;' + nextWeekTT);
});
});
     });
     });
});
});

Revision as of 02:35, 31 August 2025

mw.hook('wikipage.content').add(function(){
	const today = new Date();
    $.getJSON( "https://warwick-wiki.containers.uwcs.co.uk/wiki/MediaWiki:Tabula-weeks.json?action=raw", function( data ) {
    	var thisWeekNum;
	    var thisWeekYear;
	    var nextWeekNum;
	    var nextWeekYear;
		const weeks = data.weeks;
		var i = 0;
		var foundWeek = false;
		while (i < weeks.length && !foundWeek) {
			var startDate = new Date(weeks[i].start);
			var endDate = new Date(weeks[i].end + "T24:00:00Z");
			if (weeks[i].weekNumber > 0 && startDate < today && endDate >= today) {
				thisWeekNum = weeks[i].weekNumber;
				thisWeekYear = weeks[i].academicYear.replace("/", "");
				foundWeek = true;
				i--;
			}
			i++;
		}
		var foundWeek = false;
		while (i < weeks.length && !foundWeek) {
			if (weeks[i].weekNumber > 0) {
				nextWeekNum = weeks[i].weekNumber;
				nextWeekYear = weeks[i].academicYear.replace("/", "");
				foundWeek = true;
				i--;
			}
			i++;
		}
		
		$('.syllabus-timetable-links').each(function(i, obj) {
			var id = $(obj).data('syllabus-id');
			var thisWeekTT = '<a href="https://timetablingmanagement.warwick.ac.uk/SWS' + thisWeekYear + '/roomtimetable.asp?id=' + id + '&week=' + thisWeekNum + '">This week</a>';
			var nextWeekTT = '<a href="https://timetablingmanagement.warwick.ac.uk/SWS' +nextWeekYear + '/roomtimetable.asp?id=' + id + '&week=' + nextWeekNum + '">Next week</a>';
			$(obj).html('<b>Timetables</b><br/>' + thisWeekTT + '&nbsp;&nbsp;&nbsp;&nbsp;' + nextWeekTT);
		});
    });
});