Logical layout + percentage prop-getter
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- typescript
- Lĩnh vực
- frontend
Hướng nghiên cứu
Start by reading the parent issue #25 and the blocking issue #28 to understand the surrounding design and whether this work can begin. Then trace the core projection and view-layer APIs described here; the payload does not name specific files or tests. Done means the projection exposes fractional logical layout without container dimensions, and the view prop-getter produces percentage styles for both orientations.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Parent
https://github.com/TanStack/time/issues/25
What to build
Remove all pixel values from the core projection and introduce a percentage-based prop-getter that gives consumers an easy, zero-configuration way to position events. The kernel and projection are pixel-free; the prop-getter lives on the view layer.
The projection emits logical Event Layout per event: `{ startFraction, endFraction, column, columnCount, lane }`. The `getEventProps(event)` prop-getter on the view converts these into a `%`-based `style` object the consumer spreads directly onto an element. View orientation (vertical for day/week, horizontal for timeline) is a config on the view, not a separate function.
The timeline view ships under this slice — it is a view over the same logical layout data, not a separate product.
Acceptance criteria
- `getUnavailableRanges(date)` no longer accepts `containerHeight`; returns fractional ranges (`{ startFraction, endFraction }`)
- `getTimelineLayout()` returns fractional `left`/`width` (0–1 range) and logical `lane` index — no pixel values
- `getEventProps(event)` returns `{ style: { position: 'absolute', top: '...%', height: '...%', ... } }` for vertical orientation
- `getEventProps(event)` returns `{ style: { position: 'absolute', left: '...%', width: '...%', ... } }` for horizontal (timeline) orientation
- Raw logical fields (`startFraction`, `endFraction`, `column`, `columnCount`, `lane`) remain public on the event layout object for canvas/virtualized renderers
- Overlap resolution (interval-graph coloring → `column`/`columnCount`) is computed in the projection, not in the prop-getter
- `currentTimePosition` (previously in pixels) is returned as a fraction (0–1)
- No method in the core or projection accepts a container dimension as a parameter
Blocked by
- Ngôn ngữ chính
- TypeScript
- Star
- 620
- Fork
- 6
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của TanStack/time
-
Dependency DashboardĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 5/100
-
Client/server Data StrategyĐang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 32/100
-
enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
Undo/redo moduleĐang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Tất cả issue của TanStack/time
Issue tương tự
-
ci-cd desktop size:low telemetry-improvement telemetry-round-1
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
vfarcic/dot-agent-deck#2079 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Broken links in the docsĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 83/100
Maintainer thường phản hồi trong vòng 1 ngày
-
status:in-linear
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
n8n-io/n8n#43006 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
🔊 a11y
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
betagouv/mon-entreprise#4726 ·
Maintainer thường phản hồi trong vòng 9 ngày