@@ -14,6 +14,7 @@ function __init__()
14
14
for f in [" ag-grid.js" , " ag-grid.css" , " ag-grid-light.css" , " ag-grid-dark.css" ]
15
15
push! (ag_grid_imports, normpath (joinpath (@__DIR__ , " .." , " deps" , " ag-grid-$(version) " , f)))
16
16
end
17
+ pushfirst! (ag_grid_imports, normpath (joinpath (@__DIR__ , " rowNumberRenderer.js" )))
17
18
end
18
19
19
20
to_css_size (s:: AbstractString ) = s
@@ -66,7 +67,7 @@ function showtable(table, options::Dict{Symbol, Any} = Dict{Symbol, Any}(); dark
66
67
height = 500
67
68
if tablelength != = nothing
68
69
# header + footer height ≈ 40px, 28px per row
69
- height = min (40 + tablelength* 28 , height)
70
+ height = min (50 + tablelength* 28 , height)
70
71
end
71
72
end
72
73
@@ -116,18 +117,30 @@ function showtable(table, options::Dict{Symbol, Any} = Dict{Symbol, Any}(); dark
116
117
end
117
118
end
118
119
119
- coldefs = [(
120
- headerName = n ,
121
- editable = cell_changed != = nothing ,
122
- headerTooltip = types[i],
123
- field = n ,
124
- sortable = ! async,
125
- resizable = true ,
126
- type = types[i] <: Union{Missing, T where T <: Number} ? " numericColumn" : nothing ,
127
- filter = async ? false : types[i] <: Union{Missing, T where T <: Dates.Date} ? " agDateColumnFilter" :
128
- types[i] <: Union{Missing, T where T <: Number} ? " agNumberColumnFilter" : true
120
+ coldefs = [Dict (
121
+ : headerName => string (n) ,
122
+ : editable => cell_changed != = nothing ,
123
+ : headerTooltip => string ( types[i]) ,
124
+ : field => string (n) ,
125
+ : sortable => ! async,
126
+ : resizable => true ,
127
+ : type => types[i] <: Union{Missing, T where T <: Number} ? " numericColumn" : nothing ,
128
+ : filter => async ? false : types[i] <: Union{Missing, T where T <: Dates.Date} ? " agDateColumnFilter" :
129
+ types[i] <: Union{Missing, T where T <: Number} ? " agNumberColumnFilter" : true ,
129
130
) for (i, n) in enumerate (names)]
130
131
132
+ pushfirst! (coldefs, Dict (
133
+ :headerName => " Row" ,
134
+ :editable => false ,
135
+ :headerTooltip => " " ,
136
+ :field => " __row__" ,
137
+ :sortable => ! async,
138
+ :resizable => true ,
139
+ :type => " numericColumn" ,
140
+ :cellRenderer => " rowNumberRenderer" ,
141
+ :filter => false
142
+ ))
143
+
131
144
options[:onCellValueChanged ] = onCellValueChanged
132
145
options[:columnDefs ] = coldefs
133
146
options[:multiSortKey ] = " ctrl"
@@ -162,10 +175,15 @@ end
162
175
163
176
function _showtable_sync! (w, schema, names, types, rows, coldefs, tablelength, id, options)
164
177
options[:rowData ] = JSONText (table2json (schema, rows, types))
165
- handler = @js function (agGrid)
178
+ handler = @js function (RowNumberRenderer, agGrid)
166
179
@var gridOptions = $ options
167
180
@var el = document. getElementById ($ id)
181
+ gridOptions. components = Dict (
182
+ " rowNumberRenderer" => RowNumberRenderer
183
+ )
168
184
this. table = @new agGrid. Grid (el, gridOptions)
185
+
186
+ gridOptions. columnApi. autoSizeColumn (" __row__" )
169
187
gridOptions. columnApi. autoSizeColumns ($ names)
170
188
end
171
189
onimport (w, handler)
@@ -197,10 +215,16 @@ function _showtable_async!(w, schema, names, types, rows, coldefs, tablelength,
197
215
" rowCount" => tablelength
198
216
)
199
217
200
- handler = @js function (agGrid)
218
+ handler = @js function (RowNumberRenderer, agGrid)
201
219
@var gridOptions = $ options
202
220
@var el = document. getElementById ($ id)
221
+
222
+ gridOptions. components = Dict (
223
+ " rowNumberRenderer" => RowNumberRenderer
224
+ )
225
+
203
226
this. table = @new agGrid. Grid (el, gridOptions)
227
+ gridOptions. columnApi. autoSizeColumn (" __row__" )
204
228
gridOptions. columnApi. autoSizeColumns ($ names)
205
229
end
206
230
onimport (w, handler)
0 commit comments