atomic-server
atomic-server copied to clipboard
More powerful table / spreadsheet feature
Tables are the ultimate poweruser tool. They show a lot of information, and are great for editing and organizing stuff. There's a reason why tools like excel, notion and airtable are so popular.
Considerations
- Peformance. The current approach does not scale well to large tables. It creates dom nodes for every single cell. This could be fixed by using react-virtualized or using some other fancy lazy rendering library
- Selecting / copy / paste. Being able to select a bunch of fields, rows or columns, copy the data, and paste it somewhere else. Ideally also make sure it pastes from / into other spreadsheet apps.
- Adjusting the class. Or modelling from the collection view. This fits really well into how most people use excel / sheets / airtable.
- Keyboard support. Navigation with arrow keys, get into edit mode with enter, esc to exit, etc.
Inspiration and options
- Glide Data Grid. Impressive performance.
- https://nadbm.github.io/react-datasheet/. Not great performance.
- https://handsontable.com/docs/8.3.1/demo-scrolling.html
- Zinggrid: https://www.zinggrid.com/demos/website-visitors
User stories
ToDo / deliverables
- [x] New table view
- [x] Virtualized & paginated
- [x] Resizable (state should probably be stored server-side, is possible)
- [x] Sort (using Collections)
- [ ] Filter (using Collections)
- [ ] (optional) multiple views possible? Save view server-side
- [ ] Refactor existing tables, try making them re-use the same things (= get rid of existing collection view and folder list view, probably)
- [ ] Manual re-order (probably store a
floatdatatype property on every resource) - [ ] Context menu per row (open in normal view, history, edit, etc.), could be in dialog
- [x] Keyboard support
- [x] Move up / down / left / right
- [x] Use
enterto go into edit mode,escapeto exit - [ ] (optional) Search inside table using
/
- [x] Improved data model editing
- [x] atomicdata-dev/atomic-data-browser#276
- [x] Improved modal / overlay form for properties
- [x] Improved enum support (colors / shortnames / icons?)
- [x] Edit property with context menu
- [x] Copy/paste support
- [x] From HTML (e.g. excel)
- [x] To HTML (tab + newline delineated, escape markdown / strings)
- [x] Atomic-Server changes https://github.com/atomicdata-dev/atomic-data-rust/issues/538
- [x] Table Model
- [x] Hierarchical type constraints ?
- [x] URL constraints ?
- [x] Atomic-Data-Docs changes
- [x] Update docs, add and describe tables model
- [ ] Create reddit post
Current bugs
- [x] Needs refresh after property edit
- [x] No keyboard-only adding of 'select' instances, needs mouse
- [x] Multi select keyboard behavior weird: shift+arrow expands selection, but after going back to regular arrow keys the initial focus is used instead of the expanded focus.
- [x] Drag mouse support for selection (if not too hard)
- [x] #816
- [x] Name field should probably always be enabled in new tables. Description maybe too.
- [x] Can't click on 'select' items (only keyboard). Make sure this is tested.
- [x] Selecting second item with keyboard not working
- [x] Tab navigation with keyboard wrong when hovering over select field, should skip on one tab, currently always enters 'edit' mode