Skip to content

Commit 7fe47cd

Browse files
3.0 syntax tree (#51)
* - prototype syntax tree (for filtering and conditional styling, etc.) - logger wrapper for future use / message filtering per build env * prototypical static and conditional styling for rows and cells * remove styling from columns configuration * trimLeft/trimStart support is spotty - use regex instead * bump to rc5 * prototypical filter * performance - do not generate styles if there is nothing to generate * update build * - row props - dropdown default style * memoize style resolution for cells and rows * . * refactor cache * improve performance (cell shouldcomponentupdate) * row and cell aware of parent table * refactor memoizer / comparison functions * . * . * static and dynamic dropdowns, remove previous implementation * fix lint * update readme * test fixtures * revert change to package.json * fix isPrime! * improve dropdown positioning * update bundle * - slight refactor - improve cell and row render performance (shouldComponentUpdate) * fix position of dropdown * pr review * adding unit tests for syntactic tree
1 parent 3bd604d commit 7fe47cd

36 files changed

+1889
-443
lines changed

packages/dash-table/.eslintrc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@
8282
"no-sequences": ["error"],
8383
"no-shadow": ["off"],
8484
"no-throw-literal": ["error"],
85-
"no-undefined": ["error"],
8685
"no-unused-expressions": ["error"],
8786
"no-use-before-define": ["error", "nofunc"],
8887
"no-useless-call": ["error"],

packages/dash-table/README.md

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,52 @@
1-
# Dash Spreadsheet
1+
# Dash Spreadsheet 3.0
22

3-
## Virtualization
3+
## RC1, RC2, RC3, RC4 (Virtualization, Freeze, Deletable & Editable Columns, Performance)
4+
5+
### Virtualization
46
See v_be_page_usage.py and v_fe_page_usage.py for FE and BE usage scenarios.
57

68
virtual_dataframe and virtual_dataframe_indices are exposed and expected to be *readonly*. Setting them from the BE will have no impact on the FE display.
79

8-
### FE Virtualization
10+
#### FE Virtualization
911
BE is not expected to update the dataframe when the virtualization settings are updated.
1012

11-
### BE Virtualization
13+
#### BE Virtualization
1214
BE is expected to update the dataframe when the virtualization settings are updated.
1315

14-
## Freeze Top Rows
16+
### Freeze Top Rows
1517
Limitations
1618
- the table styling is forced to { table-layout: fixed; width: 0 !important; } to ensure the frozen section and the rest of the table stay in sync (width-wise); this means that the width of the table is only driven by the width of the columns (default width is 200px)
1719
- can't freeze rows and columns at the same time
1820

19-
## Freeze Left Columns
21+
### Freeze Left Columns
2022
Limitations
2123
- performance is highly impacted if the table is in a scrollable container as the frozen columns position has to be recalculated on each scroll event; impact is minimal up to 50-100 items and makes the table difficult to use with 250-500 items
2224
- can't freeze rows and columns at the same time
2325
- when using merged headers, make sure that the number of fixed columns respects the merged headers, otherwise there will be some unresolved visual bugs/artefacts
2426
- rows are assumed to all have the same height
2527

26-
## Deletable Columns
28+
### Deletable Columns
2729
Limitations
28-
- there might be unintended side-effects if used with BE virtualization (the act of deleting a column / columns modifies the dataframe)
30+
- there might be unintended side-effects if used with BE virtualization (the act of deleting a column / columns modifies the dataframe)
31+
32+
### Performance Improvements
33+
- Table now renders and navigates faster
34+
- Typing in cell does not modify dataframe until focus is lost / edit is confirmed ("enter" or "tab)
35+
36+
Deprecated
37+
- prop "update_on_unfocus" has been removed
38+
39+
## RC5 (Conditional Style, Conditional Dropdown, Filter)
40+
New props
41+
- filtering -> ['fe', 'be'] (default: 'fe')
42+
- filtering_settings -> AST query string (default: '')
43+
- column_conditional_dropdowns
44+
- column_static_dropdown
45+
- column_conditional_styles
46+
- column_static_style
47+
- row_conditional_styles
48+
- row_static_style
49+
Deprecated
50+
- column style
51+
- column options
52+
- dropdown_properties

packages/dash-table/dash_table/bundle.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/dash-table/dash_table/demo.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/dash-table/dash_table/metadata.json

Lines changed: 219 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -60,43 +60,6 @@
6060
"required": false,
6161
"description": ""
6262
},
63-
"dropdown_properties": {
64-
"type": {
65-
"name": "objectOf",
66-
"value": {
67-
"name": "arrayOf",
68-
"value": {
69-
"name": "shape",
70-
"value": {
71-
"options": {
72-
"name": "shape",
73-
"value": {
74-
"label": {
75-
"name": "string",
76-
"required": false
77-
},
78-
"value": {
79-
"name": "string",
80-
"required": false
81-
},
82-
"required": {
83-
"name": "bool",
84-
"required": false
85-
}
86-
},
87-
"required": false
88-
},
89-
"disabled": {
90-
"name": "bool",
91-
"required": false
92-
}
93-
}
94-
}
95-
}
96-
},
97-
"required": false,
98-
"description": ""
99-
},
10063
"editable": {
10164
"type": {
10265
"name": "bool"
@@ -280,7 +243,21 @@
280243
},
281244
"virtualization": {
282245
"type": {
283-
"name": "string"
246+
"name": "enum",
247+
"value": [
248+
{
249+
"value": "'fe'",
250+
"computed": false
251+
},
252+
{
253+
"value": "'be'",
254+
"computed": false
255+
},
256+
{
257+
"value": "'none'",
258+
"computed": false
259+
}
260+
]
284261
},
285262
"required": false,
286263
"description": "",
@@ -325,37 +302,214 @@
325302
"computed": false
326303
}
327304
},
328-
"filtering": {
305+
"column_conditional_dropdowns": {
329306
"type": {
330-
"name": "shape",
307+
"name": "arrayOf",
331308
"value": {
332-
"type": {
333-
"name": "string",
334-
"required": false
335-
},
336-
"options": {
337-
"name": "arrayOf",
338-
"value": {
339-
"name": "shape",
309+
"name": "shape",
310+
"value": {
311+
"id": {
312+
"name": "string",
313+
"required": false
314+
},
315+
"dropdowns": {
316+
"name": "arrayOf",
340317
"value": {
341-
"field": {
342-
"name": "string",
343-
"required": false
344-
},
345-
"rule": {
346-
"name": "any",
347-
"required": false
318+
"name": "shape",
319+
"value": {
320+
"condition": {
321+
"name": "string",
322+
"required": false
323+
},
324+
"dropdown": {
325+
"name": "arrayOf",
326+
"value": {
327+
"name": "shape",
328+
"value": {
329+
"label": {
330+
"name": "string",
331+
"required": false
332+
},
333+
"value": {
334+
"name": "any",
335+
"required": false
336+
}
337+
}
338+
},
339+
"required": false
340+
}
348341
}
349-
}
342+
},
343+
"required": false
344+
}
345+
}
346+
}
347+
},
348+
"required": false,
349+
"description": "",
350+
"defaultValue": {
351+
"value": "[]",
352+
"computed": false
353+
}
354+
},
355+
"column_static_dropdown": {
356+
"type": {
357+
"name": "arrayOf",
358+
"value": {
359+
"name": "shape",
360+
"value": {
361+
"id": {
362+
"name": "string",
363+
"required": false
350364
},
351-
"required": false
365+
"dropdown": {
366+
"name": "arrayOf",
367+
"value": {
368+
"name": "shape",
369+
"value": {
370+
"label": {
371+
"name": "string",
372+
"required": false
373+
},
374+
"value": {
375+
"name": "any",
376+
"required": false
377+
}
378+
}
379+
},
380+
"required": false
381+
}
352382
}
353383
}
354384
},
355385
"required": false,
356386
"description": "",
357387
"defaultValue": {
358-
"value": "{\n type: 'fe',\n options: []\n}",
388+
"value": "[]",
389+
"computed": false
390+
}
391+
},
392+
"column_conditional_style": {
393+
"type": {
394+
"name": "arrayOf",
395+
"value": {
396+
"name": "shape",
397+
"value": {
398+
"id": {
399+
"name": "string",
400+
"required": false
401+
},
402+
"styles": {
403+
"name": "arrayOf",
404+
"value": {
405+
"name": "shape",
406+
"value": {
407+
"condition": {
408+
"name": "string",
409+
"required": false
410+
},
411+
"style": {
412+
"name": "object",
413+
"required": false
414+
}
415+
}
416+
},
417+
"required": false
418+
}
419+
}
420+
}
421+
},
422+
"required": false,
423+
"description": ""
424+
},
425+
"column_static_style": {
426+
"type": {
427+
"name": "arrayOf",
428+
"value": {
429+
"name": "shape",
430+
"value": {
431+
"id": {
432+
"name": "string",
433+
"required": false
434+
},
435+
"style": {
436+
"name": "object",
437+
"required": false
438+
}
439+
}
440+
}
441+
},
442+
"required": false,
443+
"description": "",
444+
"defaultValue": {
445+
"value": "[]",
446+
"computed": false
447+
}
448+
},
449+
"row_conditional_styles": {
450+
"type": {
451+
"name": "arrayOf",
452+
"value": {
453+
"name": "shape",
454+
"value": {
455+
"condition": {
456+
"name": "string",
457+
"required": false
458+
},
459+
"style": {
460+
"name": "object",
461+
"required": false
462+
}
463+
}
464+
}
465+
},
466+
"required": false,
467+
"description": "",
468+
"defaultValue": {
469+
"value": "[]",
470+
"computed": false
471+
}
472+
},
473+
"row_static_style": {
474+
"type": {
475+
"name": "object"
476+
},
477+
"required": false,
478+
"description": "",
479+
"defaultValue": {
480+
"value": "{}",
481+
"computed": false
482+
}
483+
},
484+
"filtering": {
485+
"type": {
486+
"name": "enum",
487+
"value": [
488+
{
489+
"value": "'fe'",
490+
"computed": false
491+
},
492+
{
493+
"value": "'be'",
494+
"computed": false
495+
}
496+
]
497+
},
498+
"required": false,
499+
"description": "",
500+
"defaultValue": {
501+
"value": "'fe'",
502+
"computed": false
503+
}
504+
},
505+
"filtering_settings": {
506+
"type": {
507+
"name": "string"
508+
},
509+
"required": false,
510+
"description": "",
511+
"defaultValue": {
512+
"value": "''",
359513
"computed": false
360514
}
361515
},
@@ -422,6 +576,13 @@
422576
"computed": false
423577
}
424578
},
579+
"column_conditional_styles": {
580+
"defaultValue": {
581+
"value": "[]",
582+
"computed": false
583+
},
584+
"required": false
585+
},
425586
"changed_data": {
426587
"defaultValue": {
427588
"value": "{}",

packages/dash-table/dash_table/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dash-table",
3-
"version": "3.0.0rc4",
3+
"version": "3.0.0rc5",
44
"description": "Dash table",
55
"main": "build/index.js",
66
"scripts": {

0 commit comments

Comments
 (0)