diff --git a/js/content.js b/js/content.js index 11ab4b6..433cb90 100644 --- a/js/content.js +++ b/js/content.js @@ -2220,10 +2220,22 @@ function isCourseHidden(courseId) { return !!card && card.hidden === true; } +// Courses the user ticked "Hide this course from the Better Todo list" in the +// card edit menu are dropped from the todo list and its progress display. +// This is independent of dashboard visibility (isCourseHidden), so a course +// can stay on the dashboard while its items stay off the todo list, and +// vice versa. Personal tasks (planner notes with no course) are always kept. +function isCourseTodoHidden(courseId) { + if (courseId === undefined || courseId === null) return false; + const cards = options.custom_cards || {}; + const card = cards[String(courseId)] || cards[courseId]; + return !!card && card.hide_todo === true; +} + function filterHiddenCourses(data) { return data.filter(item => { const cid = item.course_id || item.context_id || item?.plannable?.course_id; - return !isCourseHidden(cid); + return !isCourseHidden(cid) && !isCourseTodoHidden(cid); }); } diff --git a/js/popup.js b/js/popup.js index 761c1a8..7cbe587 100644 --- a/js/popup.js +++ b/js/popup.js @@ -2410,7 +2410,7 @@ function createCourseButton(courseId, courseData) { button.textContent = displayName; button.dataset.courseId = courseId; - if (courseData.img || courseData.hidden || courseData.hide) { + if (courseData.img || courseData.hidden || courseData.hide || courseData.hide_todo) { button.classList.add("customized"); } @@ -2469,6 +2469,14 @@ function showCardEditMenu(courseId, courseData) { +
+ +
+ + Hide this course from the Better Todo list +
+
+
@@ -2512,6 +2520,7 @@ function saveCardChanges(courseId) { const codeInput = document.getElementById("card-code-input"); const imageInput = document.getElementById("card-image-input"); const hideInput = document.getElementById("card-hide-input"); + const todoHiddenInput = document.getElementById("card-todo-hidden-input"); const updates = { name: nameInput.value, @@ -2519,6 +2528,7 @@ function saveCardChanges(courseId) { img: imageInput.value, hidden: hideInput.checked, hide: hideInput.checked, + hide_todo: todoHiddenInput.checked, }; if (imageInput.value !== "" && imageInput.value !== "none") { @@ -2538,7 +2548,7 @@ function saveCardChanges(courseId) { function resetCardToDefault(courseId) { - updateCards(courseId, { name: "", code: "", img: "", hidden: false, hide: false }); + updateCards(courseId, { name: "", code: "", img: "", hidden: false, hide: false, hide_todo: false }); displayAlert(false, "Card reset to default settings!"); setTimeout(() => {