Cấu hình và các quy tắc trong tab Task (v5jun261102am)
1. Điều kiện để Ghi chú trở thành một Task
Không phải ghi chú nào cũng xuất hiện ở tab Task. Một ghi chú sẽ được tự động nhận diện và hiển thị như một Task nếu nó thoả mãn một trong ba điều kiện sau:
- Có Checklist: Ghi chú có chứa danh sách các mục cần làm (
isChecklistNote == true). - Có Deadline: Ghi chú được thiết lập ngày kết thúc (
customEndDate != nil). - Thuộc Dự án Task: Ghi chú nằm bên trong một Thư mục đã được đánh dấu là "Thư mục Nhiệm vụ" (
folder.isTaskFolder == true).
2. Quy tắc Ẩn/Hiện (Chỉ hiển thị việc chưa làm)
Tab Task được thiết kế để tập trung vào các công việc đang dang dở, do đó nó sẽ tự động loại bỏ/ẩn đi các task đã hoàn thành dựa theo các quy tắc:
- Đối với Checklist: Sẽ bị ẩn đi nếu tất cả các đầu việc con (sub-tasks) bên trong đã được đánh dấu hoàn thành (đạt 100%).
- Đối với Task có Deadline: Sẽ bị ẩn nếu thời hạn đã trôi qua so với thời điểm hiện tại (
customEndDate < now). (Lưu ý: Logic hiện tại của bạn đang ẩn đi các task đã quá hạn, chứ không giữ lại để báo đỏ báo muộn). - Các task chỉ thoả mãn điều kiện nằm trong "Thư mục Task" sẽ luôn hiển thị cho đến khi bị xoá hoặc dọn dẹp.
3. Quy tắc Sắp xếp (Sorting)
Thuật toán sắp xếp hiển thị từ trên xuống dưới được ưu tiên theo thời gian:
- Ưu tiên có Deadline: Các task có cài đặt ngày kết thúc sẽ luôn được ưu tiên đẩy lên trên các task không có ngày kết thúc.
- Ưu tiên độ khẩn cấp (Gần nhất với hiện tại): Trong các task có Deadline, task nào có thời điểm kết thúc gần với thời điểm hiện tại nhất (bất kể là sắp tới hay vừa qua một chút nếu logic cho phép) sẽ được xếp lên đầu tiên.
- Ưu tiên mới cập nhật: Đối với các task không có Deadline, hệ thống sẽ sắp xếp dựa trên thời gian chỉnh sửa mới nhất (
updatedAtgiảm dần).
4. Hệ thống Bộ lọc (Filters)
Tab Task cung cấp 2 chế độ lọc chính:
- Today Filter (Nhiệm vụ hôm nay): Khi bật chế độ "Today", tab sẽ bỏ qua mọi quy tắc khác và chỉ lọc ra những Task có Deadline (
customEndDate) rơi đúng vào ngày hôm nay. - Folder Filter (Dự án): Cho phép bạn trượt và chọn để chỉ hiển thị các công việc thuộc một Thư mục cụ thể. Mặc định là "Tất cả".
5. Giao diện & Đồng bộ hoá
- Đồng bộ Apple Reminders: Tab Task có liên kết chặt chẽ với Apple Reminders. Mỗi khi bạn mở tab lên, hệ thống sẽ chạy tiến trình đồng bộ các thư mục Task. Đặc biệt, khi bạn tick/untick hoàn thành một mục nhỏ ngay trên giao diện thẻ, nó sẽ lập tức gọi API đồng bộ 1-1 với ứng dụng Reminders của Apple.
- Hiển thị trực quan: Các task card (thẻ nhiệm vụ) sẽ lấy màu (Tint color) dựa trên màu bạn đã gán cho Thư mục, hoặc màu Lịch (nếu có). Trên thẻ sẽ có thanh Progress Bar chạy mượt mà hiển thị % tiến độ hoàn thành của các checklist bên trong.