Tôi sẽ cập nhật ứng dụng để tự động đặt tên đỉnh theo thứ tự chữ cái in hoa (A, B, C...) và cho phép di chuyển đỉnh bằng cách kéo thả.
Tôi đã cập nhật ứng dụng với các tính năng mới theo yêu cầu:
Tính năng mới:
1. Tên đỉnh tự động
- Tự động đặt tên theo thứ tự chữ cái in hoa: A, B, C, D, E...
- Mở rộng: Sau Z sẽ là AA, AB, AC... (hỗ trợ > 26 đỉnh)
- Không cần nhập tên - hoàn toàn tự động
2. Di chuyển đỉnh
- Shift + kéo đỉnh để di chuyển vị trí
- Ràng buộc biên: Đỉnh không thể di chuyển ra ngoài canvas
- Cập nhật real-time: Các cạnh tự động cập nhật theo vị trí mới
- Visual feedback: Đỉnh được highlight khi đang di chuyển
3. Phân biệt thao tác
- Kéo thường: Tạo cạnh từ đỉnh này sang đỉnh khác
- Shift + kéo: Di chuyển đỉnh đến vị trí mới
- Cursor thay đổi: Hiển thị trạng thái đang kéo
Cách sử dụng:
- Tạo đỉnh: Double-click vào vùng trống → đỉnh xuất hiện với tên A, B, C...
- Tạo cạnh: Kéo từ đỉnh A đến đỉnh B (không nhấn Shift)
- Di chuyển đỉnh: Giữ Shift + kéo đỉnh đến vị trí mới
- Sửa trọng số: Double-click vào cạnh
- Chọn: Click vào đỉnh/cạnh
Cải tiến UX:
- Tự động hóa: Không cần suy nghĩ về tên đỉnh
- Trực quan: Thấy rõ sự khác biệt giữa tạo cạnh và di chuyển đỉnh
- Linh hoạt: Có thể sắp xếp lại đồ thị sau khi tạo
- Ràng buộc thông minh: Đỉnh luôn nằm trong canvas
Chi tiết kỹ thuật:
- Tên đỉnh: Hàm
generateNodeLabel() tự động tạo tên theo thứ tự - Di chuyển: Tính toán offset để kéo mượt mà
- Boundary check: Giới hạn đỉnh trong vùng canvas
- State management: Phân biệt rõ ràng giữa drag tạo cạnh và drag di chuyển
Giờ đây việc tạo và sắp xếp đồ thị trở nên rất thuận tiện - tên đỉnh tự động và có thể di chuyển đỉnh bất cứ lúc nào!