- Vị trí: Nút "➕ Thêm công việc" ở góc trên phải trang "📝 Công việc"
- Cách kiểm tra:
- Chuyển đến tab "📝 Công việc"
- Click nút "➕ Thêm công việc"
- Một modal sẽ hiển thị với các trường:
- Tên công việc (bắt buộc)
- Mô tả (tùy chọn)
- Chọn nhóm (tùy chọn)
- Trạng thái (Pending/In Progress/Completed)
- Độ ưu tiên (1-5 sao)
- Điền thông tin và click "Lưu"
- Task sẽ xuất hiện trong danh sách
- Vị trí: Nút "✏️" trên mỗi task card
- Cách kiểm tra:
- Click nút "✏️" trên một task
- Modal mở với tiêu đề "✏️ Sửa công việc"
- Form điền sẵn thông tin cũ
- Chỉnh sửa và click "Lưu"
- Task được cập nhật ngay lập tức
- Vị trí: Nút "🗑️" trên mỗi task card
- Cách kiểm tra:
- Click nút "🗑️" trên một task
- Một confirm dialog hiển thị: "
⚠️ Bạn có chắc muốn xóa công việc này?" - Click "OK" để xác nhận
- Task bị xóa khỏi danh sách
- Vị trí: Nút "👥" trên task card (chỉ hiển thị khi task thuộc một nhóm)
- Cách kiểm tra:
- Tạo task và chọn một nhóm
- Task card sẽ có nút "👥"
- Click "👥" để mở modal "Giao công việc"
- Modal hiển thị:
- Dropdown chọn thành viên
- Danh sách người đã được giao (với nút "🗑️ Hủy")
- Chọn member từ dropdown
- Click "Giao việc"
- Member sẽ xuất hiện trong danh sách "Đã giao cho"
- Vị trí: Nút "➕ Tạo nhóm" ở góc trên phải trang "👥 Nhóm"
- Cách kiểm tra:
- Chuyển đến tab "👥 Nhóm"
- Click "➕ Tạo nhóm"
- Modal hiển thị với trường "Tên nhóm"
- Nhập tên (ví dụ: "Dự án Marketing")
- Click "Lưu"
- Nhóm xuất hiện trong danh sách với:
- Icon "👑" (bạn là trưởng nhóm)
- Nút "👥 Thành viên", "✏️ Sửa", "🗑️ Xóa"
- Vị trí: Nút "✏️" trên group card (chỉ cho trưởng nhóm)
- Cách kiểm tra:
- Click "✏️" trên một nhóm bạn tạo
- Modal mở với tiêu đề "✏️ Sửa nhóm"
- Tên nhóm điền sẵn
- Thay đổi tên
- Click "Lưu"
- Tên nhóm được cập nhật
- Vị trí: Nút "🗑️" trên group card (chỉ cho trưởng nhóm)
- Cách kiểm tra:
- Click "🗑️" trên một nhóm
- Confirm dialog hiển thị: "
⚠️ Tất cả tasks trong nhóm cũng sẽ bị xóa!" - Click "OK" để xác nhận
- Nhóm bị xóa
- Tất cả tasks trong nhóm cũng bị xóa
- Vị trí: Nút "🚪 Rời" trên group card (chỉ cho member, không phải leader)
- Cách kiểm tra:
- Yêu cầu leader thêm bạn vào một nhóm (xem phần "Thêm Thành Viên")
- Nhóm sẽ hiển thị với nút "🚪 Rời"
- Click "🚪 Rời"
- Confirm dialog: "Bạn có chắc muốn rời khỏi nhóm này?"
- Click "OK"
- Bạn bị loại khỏi nhóm
- Vị trí: Click "👥 Thành viên" trên group card để mở modal
- Cách kiểm tra:
- Click "👥 Thành viên" trên một nhóm (bạn phải là leader)
- Modal "Thành viên nhóm" mở với:
- Ô tìm kiếm "🔍 Tìm thành viên để thêm..."
- Danh sách thành viên hiện tại
- Gõ username hoặc tên đầy đủ trong ô tìm kiếm
- Danh sách kết quả xuất hiện dưới
- Click trên user muốn thêm
- Alert "✅ Thêm thành viên thành công!"
- User xuất hiện trong danh sách "Danh sách thành viên"
- Vị trí: Nút "🗑️" cạnh mỗi thành viên (chỉ cho leader)
- Cách kiểm tra:
- Mở modal "Thành viên nhóm" (xem trên)
- Nhìn danh sách thành viên
- Click "🗑️" cạnh một member
- Confirm: "Bạn có chắc muốn xóa thành viên này khỏi nhóm?"
- Click "OK"
- Alert "✅ Đã xóa thành viên!"
- Member bị loại khỏi danh sách
Bước 1: Tạo Nhóm
1. Chuyển tab "👥 Nhóm"
2. Click "➕ Tạo nhóm"
3. Nhập tên: "Team Marketing"
4. Click "Lưu"
✓ Nhóm "Team Marketing" xuất hiện
Bước 2: Thêm Thành Viên
1. Click "👥 Thành viên" trên nhóm vừa tạo
2. Tìm kiếm user khác (ví dụ: "john")
3. Click user để thêm
✓ User được thêm vào nhóm
Bước 3: Tạo Task trong Nhóm
1. Chuyển tab "📝 Công việc"
2. Click "➕ Thêm công việc"
3. Nhập:
- Tên: "Tạo banner marketing"
- Mô tả: "Banner cho campaign tháng 5"
- Chọn nhóm: "Team Marketing"
- Priority: ⭐⭐⭐⭐
4. Click "Lưu"
✓ Task xuất hiện trong danh sách, có nút "👥"
Bước 4: Giao Task
1. Click "👥" trên task vừa tạo
2. Modal "Giao công việc" mở
3. Dropdown chọn: "John Doe"
4. Click "Giao việc"
✓ "John Doe" xuất hiện trong "Đã giao cho"
Bước 5: Hủy Giao Task
1. Vẫn trong modal "Giao công việc"
2. Click "🗑️ Hủy" cạnh "John Doe"
✓ John Doe bị loại khỏi danh sách
1. Chuyển tab "📝 Công việc"
2. Click "✏️" trên một task
3. Modal "✏️ Sửa công việc" mở
4. Thay đổi:
- Tên task
- Mô tả
- Priority (chọn số sao khác)
5. Click "Lưu"
✓ Task được cập nhật ngay lập tức
✓ Thấy nút "✏️ Sửa" trên group
✓ Thấy nút "🗑️ Xóa" trên group
✓ Thấy nút "🗑️" cạnh members (để xóa members)
✓ Có thể thêm members vào group
✓ Thấy "👤 Thành viên" thay vì "👑 Bạn là trưởng nhóm"
✓ Thấy nút "🚪 Rời" thay vì "✏️ Sửa" và "🗑️ Xóa"
✓ Không thấy nút "🗑️" cạnh members
✓ Có thể click "👥 Thành viên" để xem danh sách
1. Click "➕ Thêm công việc"
2. Không nhập tên
3. Click "Lưu"
✓ Alert: "⚠️ Vui lòng nhập tên công việc"
1. Click "🗑️" trên task/group
2. Popup xác nhận hiển thị
3. Click "Cancel"
✓ Item không bị xóa
📍 views/js/functions.js (NEW FILE)
Các hàm chính:
✓ openCreateTaskModal() - Mở modal tạo task
✓ openEditTaskModal(taskId) - Mở modal sửa task
✓ saveTask() - Lưu/cập nhật task
✓ deleteTask(taskId) - Xóa task
✓ saveStatusUpdate() - Cập nhật status task✓ openCreateGroupModal() - Mở modal tạo group
✓ openEditGroupModal(groupId) - Mở modal sửa group
✓ saveGroup() - Lưu/cập nhật group
✓ deleteGroup(groupId) - Xóa group
✓ leaveGroup(groupId) - Rời khỏi group✓ addMemberToGroup() - Thêm member
✓ removeMember() - Xóa member✓ openAssignModal() - Mở modal giao task
✓ assignTaskToUser() - Giao task cho user
✓ unassignUser() - Hủy giao task
✓ loadTaskAssignees() - Load danh sách người được giao
✓ displayAssignees() - Hiển thị danh sách✓ displayGroups() - Hiển thị danh sách group
✓ displayTasks() - Hiển thị danh sách task✓ POST /api/tasks/create ← saveTask()
✓ GET /api/tasks ← loadTasks()
✓ PUT /api/tasks/:taskId ← openEditTaskModal() + saveTask()
✓ DELETE /api/tasks/:taskId ← deleteTask()
✓ GET /api/tasks/:taskId/assignees ← loadTaskAssignees()
✓ POST /api/tasks/:taskId/assign ← assignTaskToUser()
✓ DELETE /api/tasks/:taskId/assign ← unassignUser()
✓ POST /api/groups ← saveGroup()
✓ GET /api/groups ← loadGroups()
✓ PUT /api/groups/:groupId ← openEditGroupModal() + saveGroup()
✓ DELETE /api/groups/:groupId ← deleteGroup()
✓ POST /api/groups/:groupId/leave ← leaveGroup()
✓ GET /api/groups/:groupId/members ← openMembersModal()
✓ POST /api/groups/:groupId/members ← addMemberToGroup()
✓ DELETE /api/groups/:groupId/members/:userId ← removeMember()
#taskModal- Tạo/Sửa task#groupModal- Tạo/Sửa group#membersModal- Quản lý members#assignModal- Giao task#updateStatusModal- Cập nhật status task
.btn-icon- Icon buttons (✏️, 🗑️, 👥).btn-primary- Primary buttons (xanh dương).btn-secondary- Secondary buttons (xám).btn-group-action- Group action buttons.btn-edit- Edit buttons (cam).btn-delete- Delete buttons (đỏ).btn-remove- Remove buttons (loại bỏ)
Khi test xong mỗi tính năng, đánh dấu ✓:
- ✓ Thêm công việc
- ✓ Sửa công việc
- ✓ Xóa công việc
- ✓ Giao công việc cho member
- ✓ Tạo nhóm
- ✓ Sửa nhóm (leader)
- ✓ Xóa nhóm (leader)
- ✓ Rời nhóm (member)
- ✓ Thêm thành viên
- ✓ Xóa thành viên (leader)
- ✓ Xem danh sách member
- ✓ Leader có nút sửa/xóa group
- ✓ Member thấy nút rời
- ✓ Leader thấy nút xóa member
- ✓ Xác nhận trước xóa
- ✓ Validation input
- ✓ Alert thông báo
Hết! Tất cả các chức năng đã sẵn sàng để kiểm tra. 🎉