-
Notifications
You must be signed in to change notification settings - Fork 114
Closed
Labels
data frameRelated to @render.data_frameRelated to @render.data_frameepicMeta issue to keep track of other issuesMeta issue to keep track of other issues
Description
From #1198
- Adds feature of getting selected data from dataframe renderer. ; mydf.data_selected_rows()
- Adds feature of getting data from dataframe renderer. ; mydf.data()
Followup to #1198
- Split
mode
intoselection_mode
andeditable
; Throw error whenselection_mode
!=None
andeditable
== True; Add structure types for selection_mode. (api(render.data_frame): Separatemode=
intoselection_mode=
andeditable=
#1248)
QA
- Round 1 (Editable Dataframe - feature requests and bugs #1268)
- Remove success animation, jumpy edit cells, broken click on edited cell (bug(data frame): Remove success animation, fix jumpy cells when editing, fix broken click on edited cell #1283)
- Next sorted row when data frame is sorted (bug(data frame): Use sorted row data to find next row when hitting (shift+)enter #1291)
Features
- Raw HTML in data grid. (Allow raw HTML in data grid rows #1117)
- Make examples for release
- Content Editable cells (feat: Editable data frame #1198)
- Programmatically change selected rows (Programatically change data frame selection #1116)
-
Add selected_rows method (Add class-based rows selected method #1120)-
Make work in modules -
Revisit input name.input_selected_rows()
? -
Fix documentation of types for return value (None
vs empty tuple) - Replace with
.input_cell_selection()
,.update_cell_selection()
; (api(render.data_frame): Separatemode=
intoselection_mode=
andeditable=
#1248)
-
- Data grid fill/fillable (Modify data grid to work well with fill/fillable #1118)
- Enhancements to
@render.data_frame
-
.cell_patches()
: Returnslist[{row_index: int, col_index: int, value: str}]
(feat: Editable data frame #1198) -
.data()
: Currently returnspd.DataFrame
(feat: Editable data frame #1198) -
.data_patched()
: Returns.data()
with any manual edits (feat: Editable data frame #1198) -
.selection_modes()
: Returns value'sselection_modes=
(feat: Editable data frame #1198) -
.input_cell_selection()
: Takes some form of{type: "row" | "col" | "region" | "cell" | "none", rows: tuple[int, ...] | tuple[int, int] | tuple[int], cols: tuple[int, ...] | tuple[int, int] | tuple[int]}
(api(render.data_frame): Separatemode=
intoselection_mode=
andeditable=
#1248) -
.update_cell_selection()
; Takes same value as.input_cell_selection()
or some form of"all" | "none" | {rows: int | tuple[int, int], cols: int | tuple[int, int]}
(api(render.data_frame): Separatemode=
intoselection_mode=
andeditable=
#1248) -
.data_selected()
; Returns.data_patched()
subsetted to.input_cell_selection()
(feat: Editable data frame #1198) -
.set_patch_fn()
;.set_patches_fn()
; Decorators to set method to handle cell edits (patches) (feat: Editable data frame #1198) -
.input_current_cell()
;.update_current_cell()
; Methods to set currently selected cell
-
- Cell selection
- Retrieve selected cells:
mydf.input_cell_selection()
; Returns list of type,rows,columns information; (api(render.data_frame): Separatemode=
intoselection_mode=
andeditable=
#1248) - Update selected cells:
mydf.update_cell_selection()
; (api(render.data_frame): Separatemode=
intoselection_mode=
andeditable=
#1248) - Types of selection:
- None; (api(render.data_frame): Separate
mode=
intoselection_mode=
andeditable=
#1248) - Row; (api(render.data_frame): Separate
mode=
intoselection_mode=
andeditable=
#1248) - Column
- Region
- Cell
- all via given selection mode types
- None; (api(render.data_frame): Separate
- Retrieve selected cells:
- Appearance
- Text area within editing (fix(dataframe): Use absolute position text area over existing cell content #1278)
- Copy / paste table selection
- Consolidate data methods into a single data method. Currently too many
.data_*()
methods.- Instead have a
.data_gen(*, selected=False, filtered=False, edited=False, ....)
method that returns a reactive value generator? - Or single reactive value? Maybe given the inputs, it returns a cached version of the reactive calculations. This seems much more user friendly.
- Related: Get filtered rows from shiny express DataGrid #1240
- Instead have a
Editable tables
- Edit cells
- Server side tweak for cell / cells;
.set_patch_fn()
;.set_patches_fn()
- Server side tweak for cell / cells;
- Add rows
- Add columns
- Paste data
Styling
- Styled tables
- DataGrid/DataTable
styles=
takesStyles
-
Styles = list[StyleInfo]
-
StyleInfo = {loc: "body", rows: int | List[int], columns: int | str | List[int | str], style: str? | dict[str, Jsonifiable]? | None, class_: str | None, }
-
- DataGrid/DataTable
styles=
takesCallable[[data], Styles]
- Call styles after edit and init. Send whole styles value
- Support
Styles.rows: List[bool]
? - Post-1.0
- GT: Styling
- GT: Body cells [P0]
- GT: Column labels [P2]
- GT: Row labels (stubs) [P2]
- GT: cell data formatting [P0]
- GT: Sorting/filtering/editing on underlying data instead of displayed data [P1]
- GT: Column rearranging/hiding [P1]
- GT: Column names [P1]
- GT: Markdown/HTML support [P1]
- GT: Some amount of erroring if you used a GT feature we don't support [P1]
- GT: Column alignment/width
- GT: Table options?
- GT: Font stack?
- GT: Spanners
- data view styles?
- GT: Styling
- DataGrid/DataTable
- Column widths
- Conditional formatting
- Great tables integration - documentation on website, and work with
render.table
- Better handling of long entries (wrapping, truncating etc)
Other
- More generic data frame types: Ex: polars
- Server side rendering
- Filtered view (Get filtered rows from shiny express DataGrid #1240)
- Keyboard shortcuts for improved navigation and selection
lucas-nelson-uiuc
Metadata
Metadata
Assignees
Labels
data frameRelated to @render.data_frameRelated to @render.data_frameepicMeta issue to keep track of other issuesMeta issue to keep track of other issues