DataView filters: match rows where the field is an array
Maintainer thường phản hồi trong vòng 6 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 84/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- react, typescript
- Lĩnh vực
- frontend
Hướng nghiên cứu
Tìm trong codebase String(row.getValue(columnId)) để định vị các thao tác lọc của DataView cho select/multiselect (in, notin, eq, neq). Đọc cách các toán tử đó ép kiểu giá trị hiện tại, rồi thêm một nhánh Array.isArray(cellValue) thực hiện any-match cho in/eq và no-match cho notin/neq, để nguyên hành vi của giá trị vô hướng. Thêm test bao phủ ô dạng mảng cùng các trường hợp chuỗi/số đã có; hoàn thành nghĩa là cả test cũ lẫn test mới đều qua và groupable nằm ngoài phạm vi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Right now a select/multiselect filter only works when each row has one value in that column. A lot of real data has several: tags on a ticket, labels on an issue, all the projects someone is on.
What happens today
Say a row has labels: ['bug', 'urgent'] and you filter labels with "is any of: urgent". The in check does String(row.getValue(columnId)), which turns the array into "bug,urgent". It never matches. eq has the same problem.
There's also no way to pass a custom filterFn for a field, so you can't work around it from the outside.
What I'd expect
When the cell value is an array:
in(is any of): match if any item in the row is in the selected setnotin(is none of): match if no item in the row is in the selected seteq/neqforselect: same idea with one value
Strings and numbers keep working exactly like they do now, so nothing changes for existing tables.
Grouping by an array field is a separate question (one row in several groups?). I'd leave that out of this, and maybe just not allow groupable on array fields for now.
Possible shape
Probably just checking Array.isArray(cellValue) inside the select and multiselect operations. Or an explicit flag like field.multiValue: true, if you'd rather be strict about it.
- Ngôn ngữ chính
- TypeScript
- Star
- 69
- Fork
- 13
- Merge trung bình
- 4 ngày 7 giờ
- Pull request đã merge (30 ngày)
- 30
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 raystack/apsara
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 6 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 6 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 6 ngày
-
Upgrade Base UI to 1.9.0Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
Maintainer thường phản hồi trong vòng 6 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
Maintainer thường phản hồi trong vòng 6 ngày
Tất cả issue của raystack/apsara
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
xdjs/MusicNerdWeb#1532 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
sebastian-software/ardo#352 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
@react95/core good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 3 ngày
-
@shikijs/stream: `ShikiStreamTokenizer.clone()` shares its `tokensStable` array with the originalCó thể đã có người làm @xyrolle đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 6 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày