forked from fin-hypergrid/core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
talk-study.txt
193 lines (113 loc) · 3.61 KB
/
talk-study.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
talk-study
---------------------
about me
---------------------------------------------
goals for the hypergrid
-look and behave great
-super easy to use
-lightweight
-native widget feel
-no deferred rendering/instant rendering
-best general purpose html5 grid available
-easy to integrate with your data
-allow for easy virtualization
-use html5/javascript best practices
-opensource
-initial features to be driven by existing html5 popular grid components
-------------------------------------
what is Polymer
-project by google
-built on top of the web components standard
-webcomponents polyfill
-best practices convenience framework for building webcomponents
-material design compliant responsive design widget set
-------------------------------------
some hypergrid features; the "pink" demo
-unlimited row count
-currently minimal data management/sorting/editing/grouping
-column resize/reordering
-easy custom cell rendering
-full multiselect semantics
-non-linear auto scrolling speed to accomodate large data sets
-json support
-single file deployment of the grid
-easy augmentation via polymer plugin pattern
-gesture control through polymer-gestures
-excel integration
-interface to Q
-cut/copy/paste support
--------------------------------------------------------------------------------
quick hypergrid design
* fin-hypergrid
-polymer component
-entrypoint for the grid
* fin-canvas
-wrapped up html5 canvas
-uses the fin-rectangles project for simple rectangle/point functionality
* fin-hypergrid-behavior
-think of as a tablemodel++
-place to park code that is different for virtualization
* fin-rectangles
-provides common rectangle and point objects and functions
* fin-hypergrid-renderer
-paint function using context from canvas
-has the rows X columns iteration logic
* fin-hypergrid-cell-renderer
-stored in cell provider
-easy to register
-implements paint(graphicsContext)
* fin-hypergrid-cell-provider
-holds the cache of cell-renderers
-behavior is the cell-provider factory
* fin-hypergrid-cell-editor
-stored in hypergrid
-selected by behavior
* fin-hypergrid-feature
-linked list on behavior
-chain of responisibility
* fin-hypergrid-selection-model
-rectangle based selection management
-allows for arbitrary large rectangular selections
* fin-vampire-bar
-only 33million pixes to scroll with native scrollbars
* plugins
-installOn(hypergrid) function must be implemented by plugin
-nest tags inside fin-hypergrid
-two places to load plugins
-refactor for more hypergrid functionality
-------------------------------------------------
techniques (things we learned)
-common sense
-used in grid controls in other languages
-avoid dom manipulation
-row/column based scrolling
-good book "HTML5 game developement insights"
-talking to graphicsContext is expensive
-rectangle based selection model
-stable sorting for sort accumulation
-polymer plugin pattern
-use requestAnimationFrame
-know about device pixel density and the backing store
-only iterate/render what is visible
------------------------------------------------------------
gotchas
-polymer inheritance issues
-specific graphics context operations are expensive
-dom access can be expensive
-------------------------------------------------------------
process and best practices
-environment was tricky
-restarted three times
-polymer
-grunt based
-livereload
-vulcanize
-wct-testing
-aggresive validation
-polymer-solutions
-yeoman generator for polymer
-my yeoman generator
--------------------------------------------------------------
roadmap
---------------------------------------------------------------
summary