Bỏ qua, đến nội dung

@digiforce-nc/plugin-gantt

Plugin hiển thị dữ liệu collection dưới dạng biểu đồ Gantt - timeline trực quan cho quản lý dự án với thanh công việc (bars), kéo thả thay đổi lịch và nhiều chế độ xem thời gian.

Plugin này làm gì?

Gantt chart là công cụ không thể thiếu trong quản lý dự án: mỗi task là một thanh ngang trên timeline, chiều dài thanh thể hiện thời lượng, vị trí thể hiện ngày bắt đầu/kết thúc. Plugin này triển khai custom SVG gantt (không dùng dhtmlx-gantt) với đầy đủ tính năng kéo thả và zoom timeline.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Timeline visualizationRender thanh Gantt trên timeline SVG tùy chỉnh
2Drag rescheduleKéo thả thanh để thay đổi ngày bắt đầu/kết thúc
3Nhiều chế độ xemChuyển đổi giữa Hour, Day, Week, Month, Year

Kiến trúc

Tổng quan

Plugin hoạt động hoàn toàn ở client - custom SVG rendering cho gantt bars, grid và calendar header. Không sử dụng thư viện gantt bên ngoài.

TầngVai tròThành phần
WidgetĐăng ký block, quản lý dataGanttBlockWidget
ActionBarToolbar: view mode, filter, actionsViewMode, filters
Grid panelBảng danh sách task bên tráiCustom grid rows
SVG panelTimeline biểu đồ bên phảiBars, calendar header, today line

Custom SVG implementation

Plugin không dùng thư viện Gantt có sẵn mà tự render bằng SVG:

ComponentMô tả
CalendarHeaderHeader hiển thị ngày/tuần/tháng trên timeline
GanttBarThanh SVG đại diện một task
GanttBarProgressPhần progress bên trong bar
GridRowHàng trong grid panel bên trái
TodayLineĐường dọc đánh dấu ngày hiện tại
ArrowMũi tên dependency giữa các task

Các chế độ xem thời gian

ViewModeHiển thịPhù hợp cho
HourMỗi ô = 1 giờTask ngắn (vài giờ)
DayMỗi ô = 1 ngàySprint 1-2 tuần
WeekMỗi ô = 1 tuầnDự án 1-3 tháng
MonthMỗi ô = 1 thángRoadmap quý/năm
YearMỗi ô = 1 nămKế hoạch dài hạn

Luồng kéo thả reschedule

Tính năng

Tính năngMô tả
Custom SVG ganttRender hoàn toàn bằng SVG, không dependency ngoài
Drag rescheduleKéo thanh thay đổi ngày bắt đầu/kết thúc
Drag resizeKéo cạnh thanh thay đổi duration
View modesHour, Day, Week, Month, Year
Record viewerClick thanh mở popup chi tiết record
TooltipsHover hiển thị thông tin task
Progress barHiển thị phần trăm hoàn thành trong bar
Today lineĐường dọc đánh dấu ngày hiện tại
Grid panelBảng task bên trái với sort, resize columns
Scroll syncScroll đồng bộ giữa grid và timeline

Thành phần client

Thành phầnMô tả
GanttBlockWidgetWidget chính đăng ký Gantt block
GanttComponent chính chứa grid + SVG timeline
GanttBarSVG bar đại diện một task
CalendarHeaderSVG header hiển thị timeline scale
GridRowComponent hàng trong grid panel
TaskItemComponent task item trong grid
ViewModeComponent chuyển đổi chế độ xem
GanttDesignerDesigner: cấu hình start/end fields, view mode
GanttBlockInitializerĐăng ký vào menu "Add block"
GanttRecordViewerPopup chi tiết khi click bar

Cấu hình block

SettingMô tảMặc định
Start fieldField ngày bắt đầu taskstartDate
End fieldField ngày kết thúc taskendDate
Progress fieldField phần trăm hoàn thànhprogress
Title fieldField hiển thị tên tasktitle
Default viewChế độ xem mặc địnhDay
Row heightChiều cao mỗi hàng (px)40

Dependencies

PackageVai trò
@digiforce-nc/clientClient framework (peer)
@digiforce-nc/serverServer framework - chỉ dùng khi build (peer)
dayjsXử lý ngày tháng cho calendar header

Mục lục chi tiết