hide course from todo list

This commit is contained in:
Guy Sandler 2026-09-29 16:31:36 -07:00
parent 87176b1973
commit 902eb5b128
2 changed files with 25 additions and 3 deletions

View File

@ -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);
});
}

View File

@ -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) {
</div>
</div>
<div class="card-edit-section">
<label class="card-edit-label">Better Todo List</label>
<div style="display: flex; align-items: center; gap: 8px;">
<input type="checkbox" id="card-todo-hidden-input" ${courseData.hide_todo === true ? "checked" : ""}>
<span>Hide this course from the Better Todo list</span>
</div>
</div>
<div style="display: flex; gap: 10px; margin-top: 20px;">
<button class="big-button" id="save-card-btn">Save Changes</button>
<button class="customization-button" id="reset-card-btn">Reset to Default</button>
@ -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(() => {