${type == "class" ? description : type == "tutorial" ? "Tutorial" : "Unknown"}
${staff || "Unknown"}
${room || (type == "tutorial" ? "Unknown" : "N/A")}
${from || "Unknown"} - ${until || "Unknown"}
${attendanceTitle || "Unknown"}
`;
if (type == "class") {
if (programmeID !== 0) {
lessonString += `
${assessmentsicon}
${coursesicon}
`;
}
if (assessments && assessments.length > 0) {
const assessmentString = assessments
.map(
(element: any) =>
`
${element.title}
`,
)
.join("");
lessonString += `
`;
}
}
lessonString += "
";
const element = stringToHTML(lessonString);
setupFixedTooltips(element);
return element;
}
function buildAssessmentURL(programmeID: any, metaID: any, itemID = "") {
const base = "../#?page=/assessments/";
return itemID
? `${base}${programmeID}:${metaID}&item=${itemID}`
: `${base}${programmeID}:${metaID}`;
}
function CheckUnmarkedAttendance(lessonattendance: any) {
return lessonattendance ? lessonattendance.label : " ";
}
async function CreateUpcomingSection(assessments: any, activeSubjects: any) {
const upcomingitemcontainer = document.querySelector("#upcoming-items");
const overdueDates = [];
const upcomingDates = {};
const Today = new Date();
for (let i = 0; i < assessments.length; i++) {
const assessmentdue = new Date(assessments[i].due);
if (assessmentdue < Today && !CheckSpecialDay(Today, assessmentdue)) {
overdueDates.push(assessments[i]);
assessments.splice(i, 1);
i--;
}
}
const colours = await GetLessonColours();
for (let i = 0; i < assessments.length; i++) {
const subject = colours.find(
(element: any) =>
element.name === `timetable.subject.colour.${assessments[i].code}`,
);
if (!subject) {
assessments[i].colour = "--item-colour: #8e8e8e;";
} else {
assessments[i].colour = `--item-colour: ${subject.value};`;
}
}
for (let i = 0; i < activeSubjects.length; i++) {
const element = activeSubjects[i];
const colour = colours.find(
(c: any) => c.name === `timetable.subject.colour.${element.code}`,
);
if (!colour) {
element.colour = "--item-colour: #8e8e8e;";
} else {
element.colour = `--item-colour: ${colour.value};`;
if (GetThresholdOfColor(colour.value) > 300) {
element.invert = true;
}
}
}
CreateFilters(activeSubjects);
for (let i = 0; i < assessments.length; i++) {
const element: any = assessments[i];
if (!upcomingDates[element.due as keyof typeof upcomingDates]) {
const dateObj: any = {
div: CreateElement("div", "upcoming-date-container"),
assessments: [],
};
(upcomingDates[element.due as keyof typeof upcomingDates] as any) =
dateObj;
}
const assessmentDateDiv =
upcomingDates[element.due as keyof typeof upcomingDates];
if (assessmentDateDiv) {
(assessmentDateDiv as any).assessments.push(element);
}
}
for (var date in upcomingDates) {
const assessmentdue = new Date(
(upcomingDates[date as keyof typeof upcomingDates] as any).assessments[0]
.due,
);
const specialcase = CheckSpecialDay(Today, assessmentdue);
const assessmentDate = createAssessmentDateDiv(
date,
upcomingDates[date as keyof typeof upcomingDates],
specialcase,
);
if (specialcase === "Yesterday") {
upcomingitemcontainer!.insertBefore(
assessmentDate,
upcomingitemcontainer!.firstChild,
);
} else {
upcomingitemcontainer!.append(assessmentDate);
}
}
FilterUpcomingAssessments(settingsState.subjectfilters);
if (assessments.length === 0) {
upcomingitemcontainer!.innerHTML = `