@@ -108,6 +108,38 @@ function setShinyValueSelectedNodes(instance, leavesOnly, checkboxes) {
108
108
}
109
109
}
110
110
111
+ function setShinyValueCheckedNodes ( instance , leavesOnly ) {
112
+ var checkedNodes = instance . get_checked ( true ) ;
113
+ var nodes = getNodes ( checkedNodes ) ;
114
+ var leaves = [ ] ;
115
+ var pathNodes = [ ] ;
116
+ var leavePathNodes = [ ] ;
117
+ for ( var i = 0 ; i < nodes . length ; i ++ ) {
118
+ var node = nodes [ i ] ;
119
+ var path = instance . get_path ( checkedNodes [ i ] , "/" ) ;
120
+ var pathNode = {
121
+ path : path ,
122
+ data : node . data
123
+ } ;
124
+ pathNodes . push ( pathNode ) ;
125
+ var nchildren = node . children . length ;
126
+ delete nodes [ i ] . children ;
127
+ if ( leavesOnly && nchildren === 0 ) {
128
+ leaves . push ( nodes [ i ] ) ;
129
+ leavePathNodes . push ( pathNode ) ;
130
+ }
131
+ }
132
+ Shiny . setInputValue (
133
+ instance . element . attr ( "id" ) + "_checked:jsTreeR.list" ,
134
+ leavesOnly ? leaves : nodes
135
+ ) ;
136
+ Shiny . setInputValue (
137
+ instance . element . attr ( "id" ) + "_checked_paths:jsTreeR.list" ,
138
+ leavesOnly ? leavePathNodes : pathNodes
139
+ ) ;
140
+ }
141
+
142
+
111
143
var inShiny = HTMLWidgets . shinyMode ;
112
144
113
145
HTMLWidgets . widget ( {
@@ -216,13 +248,19 @@ HTMLWidgets.widget({
216
248
if ( inShiny ) {
217
249
setShinyValue ( data . instance ) ;
218
250
setShinyValueSelectedNodes ( data . instance , leavesOnly , checkboxes ) ;
251
+ if ( checkboxes ) {
252
+ setShinyValueCheckedNodes ( data . instance , leavesOnly ) ;
253
+ }
219
254
}
220
255
} ) ;
221
256
222
257
$el . on ( "refresh.jstree" , function ( e , data ) {
223
258
if ( inShiny ) {
224
259
setShinyValue ( data . instance ) ;
225
260
setShinyValueSelectedNodes ( data . instance , leavesOnly , checkboxes ) ;
261
+ if ( checkboxes ) {
262
+ setShinyValueCheckedNodes ( data . instance , leavesOnly ) ;
263
+ }
226
264
}
227
265
} ) ;
228
266
@@ -257,6 +295,9 @@ HTMLWidgets.widget({
257
295
// id, getNodesWithChildren(data.instance.get_json())
258
296
// );
259
297
setShinyValueSelectedNodes ( data . instance , leavesOnly , checkboxes ) ;
298
+ if ( checkboxes ) {
299
+ setShinyValueCheckedNodes ( data . instance , leavesOnly ) ;
300
+ }
260
301
//setShinyValue(data.new_instance); // modif 9/10/2023
261
302
}
262
303
} ) ;
@@ -291,13 +332,19 @@ HTMLWidgets.widget({
291
332
if ( inShiny ) {
292
333
setShinyValue ( data . instance ) ;
293
334
setShinyValueSelectedNodes ( data . instance , leavesOnly , checkboxes ) ;
335
+ if ( checkboxes ) {
336
+ setShinyValueCheckedNodes ( data . instance , leavesOnly ) ;
337
+ }
294
338
}
295
339
} ) ;
296
340
$el . on ( "uncheck_node.jstree" , function ( e , data ) {
297
341
$el . jstree ( true ) . deselect_node ( data . node ) ;
298
342
if ( inShiny ) {
299
343
setShinyValue ( data . instance ) ;
300
344
setShinyValueSelectedNodes ( data . instance , leavesOnly , checkboxes ) ;
345
+ if ( checkboxes ) {
346
+ setShinyValueCheckedNodes ( data . instance , leavesOnly ) ;
347
+ }
301
348
}
302
349
} ) ;
303
350
}
@@ -315,6 +362,9 @@ HTMLWidgets.widget({
315
362
} ) ;
316
363
setShinyValue ( instance ) ;
317
364
setShinyValueSelectedNodes ( instance , leavesOnly , checkboxes ) ;
365
+ if ( checkboxes ) {
366
+ setShinyValueCheckedNodes ( data . instance , leavesOnly ) ;
367
+ }
318
368
}
319
369
} ) ;
320
370
0 commit comments