@@ -444,7 +444,7 @@ function control_handler(obj) { // button, menu, slider, radio, checkbox, winpu
444
444
}
445
445
446
446
// attrs are X in {'a': '23X....'} avaiable: none
447
- var attrs = { 'a' :'pos' , 'b' :'up' , 'c' :'color' , 'd' :'trail_color' , // don't use single and double quotes; available: comma, but maybe that would cause trouble
447
+ let attrs = { 'a' :'pos' , 'b' :'up' , 'c' :'color' , 'd' :'trail_color' , // don't use single and double quotes; available: comma, but maybe that would cause trouble
448
448
'e' :'ambient' , 'f' :'axis' , 'g' :'size' , 'h' :'origin' , 'i' :'textcolor' ,
449
449
'j' :'direction' , 'k' :'linecolor' , 'l' :'bumpaxis' , 'm' :'dot_color' ,
450
450
'n' :'foreground' , 'o' :'background' , 'p' :'ray' , 'E' :'center' , '#' :'forward' , '+' :'resizable' ,
@@ -471,35 +471,35 @@ var attrs = {'a':'pos', 'b':'up', 'c':'color', 'd':'trail_color', // don't use s
471
471
'?' :'font' , '/' :'texture' }
472
472
473
473
// attrsb are X in {'b': '23X....'}; ran out of easily typable one-character codes
474
- var attrsb = { 'a' :'userzoom' , 'b' :'userspin' , 'c' :'range' , 'd' :'autoscale' , 'e' :'fov' ,
474
+ let attrsb = { 'a' :'userzoom' , 'b' :'userspin' , 'c' :'range' , 'd' :'autoscale' , 'e' :'fov' ,
475
475
'f' :'normal' , 'g' :'data' , 'h' :'checked' , 'i' :'disabled' , 'j' :'selected' ,
476
476
'k' :'vertical' , 'l' :'min' , 'm' :'max' , 'n' :'step' , 'o' :'value' ,
477
477
'p' :'left' , 'q' :'right' , 'r' :'top' , 's' :'bottom' , 't' :'_cloneid' ,
478
478
'u' :'logx' , 'v' :'logy' , 'w' :'dot' , 'x' :'dot_radius' ,
479
479
'y' :'markers' , 'z' :'legend' , 'A' :'label' , 'B' :'delta' , 'C' :'marker_color' ,
480
480
'D' :'size_units' , 'E' :'userpan' , 'F' :'scroll' , 'G' :'choices' , 'H' :'depth' ,
481
- 'I' :'round' , 'J' :'name' }
481
+ 'I' :'round' , 'J' :'name' , 'K' : 'offset' }
482
482
483
483
// methods are X in {'m': '23X....'} available: u
484
- var methods = { 'a' :'select' , 'b' :'pos' , 'c' :'start' , 'd' :'stop' , 'f' :'clear' , // unused eghijklmnopvxyzCDFAB
484
+ let methods = { 'a' :'select' , 'b' :'pos' , 'c' :'start' , 'd' :'stop' , 'f' :'clear' , // unused eghijklmnopvxyzCDFAB
485
485
'q' :'plot' , 's' :'add_to_trail' ,
486
486
't' :'follow' , 'w' :'clear_trail' ,
487
487
'G' :'bind' , 'H' :'unbind' , 'I' :'waitfor' , 'J' :'pause' , 'K' :'pick' , 'L' :'GSprint' ,
488
488
'M' :'delete' , 'N' :'capture' }
489
489
490
- var vecattrs = [ 'pos' , 'up' , 'color' , 'trail_color' , 'axis' , 'size' , 'origin' ,
490
+ let vecattrs = [ 'pos' , 'up' , 'color' , 'trail_color' , 'axis' , 'size' , 'origin' ,
491
491
'direction' , 'linecolor' , 'bumpaxis' , 'dot_color' , 'ambient' , 'add_to_trail' , 'textcolor' ,
492
492
'foreground' , 'background' , 'ray' , 'ambient' , 'center' , 'forward' , 'normal' ,
493
- 'marker_color' ]
493
+ 'marker_color' , 'offset' ]
494
494
495
- var textattrs = [ 'text' , 'align' , 'caption' , 'title' , 'title_align' , 'xtitle' , 'ytitle' , 'selected' , 'capture' , 'name' ,
495
+ let textattrs = [ 'text' , 'align' , 'caption' , 'title' , 'title_align' , 'xtitle' , 'ytitle' , 'selected' , 'capture' , 'name' ,
496
496
'label' , 'append_to_caption' , 'append_to_title' , 'bind' , 'unbind' , 'pause' , 'GSprint' , 'choices' ]
497
497
498
498
// patt gets idx and attr code; vpatt gets x,y,z of a vector
499
- var patt = / ( \d + ) ( .) ( .* ) /
500
- var vpatt = / ( [ ^ , ] * ) , ( [ ^ , ] * ) , ( .* ) /
501
- var quadpatt = / ( [ ^ , ] * ) , ( [ ^ , ] * ) , ( .* ) /
502
- var plotpatt = / ( [ ^ , ] * ) , ( [ ^ , ] * ) /
499
+ const patt = / ( \d + ) ( .) ( .* ) /
500
+ const vpatt = / ( [ ^ , ] * ) , ( [ ^ , ] * ) , ( .* ) /
501
+ const quadpatt = / ( [ ^ , ] * ) , ( [ ^ , ] * ) , ( .* ) /
502
+ const plotpatt = / ( [ ^ , ] * ) , ( [ ^ , ] * ) /
503
503
504
504
function decode ( data ) {
505
505
"use strict" ;
@@ -511,12 +511,12 @@ function decode(data) {
511
511
var ms = [ ]
512
512
513
513
if ( 'attrs' in data ) {
514
- var c = data [ 'attrs' ]
514
+ let c = data [ 'attrs' ]
515
515
for ( i = 0 ; i < c . length ; i ++ ) { // step through the encoded attributes and methods
516
- var d = c [ i ]
516
+ let d = c [ i ]
517
517
// constructor or appendcmd not currently compressed
518
- var whichlist = d [ 0 ] // 'a' or 'b' or 'm'
519
- var datatype = ( whichlist == 'm' ) ? 'method' : 'attr'
518
+ let whichlist = d [ 0 ] // 'a' or 'b' or 'm'
519
+ let datatype = ( whichlist == 'm' ) ? 'method' : 'attr'
520
520
s = d . slice ( 1 )
521
521
m = s . match ( patt )
522
522
idx = Number ( m [ 1 ] )
@@ -623,7 +623,8 @@ function handler(data) {
623
623
}
624
624
*/
625
625
626
-
626
+
627
+
627
628
if ( data . cmds !== undefined && data . cmds . length > 0 ) handle_cmds ( data . cmds )
628
629
if ( data . methods !== undefined && data . methods . length > 0 ) handle_methods ( data . methods )
629
630
if ( data . attrs !== undefined && data . attrs . length > 0 ) handle_attrs ( data . attrs )
@@ -650,7 +651,7 @@ function handle_cmds(dcmds) {
650
651
var vlst = [ 'pos' , 'color' , 'size' , 'axis' , 'up' , 'direction' , 'center' , 'forward' , 'foreground' ,
651
652
'background' , 'ambient' , 'linecolor' , 'dot_color' , 'trail_color' , 'textcolor' , 'attrval' ,
652
653
'origin' , 'normal' , 'bumpaxis' , 'texpos' , 'start_face_color' , 'end_face_color' , 'marker_color' ,
653
- 'start_normal' , 'end_normal' ]
654
+ 'start_normal' , 'end_normal' , 'offset' ]
654
655
if ( ( obj != 'gcurve' ) && ( obj != 'gdots' ) ) vlst . push ( 'size' )
655
656
var cfg = { }
656
657
var objects = [ ]
@@ -804,7 +805,15 @@ function handle_cmds(dcmds) {
804
805
}
805
806
break
806
807
}
807
- case 'local_light' : { glowObjs [ idx ] = local_light ( cfg ) ; break }
808
+ case 'local_light' : {
809
+ let g = glowObjs [ idx ] = local_light ( cfg )
810
+ console . log ( g )
811
+ if ( cfg . offset !== undefined ) { // mocking up attach_light
812
+ g . __obj = glowObjs [ cfg . attach_idx ]
813
+ g . canvas . attached_lights . push ( g )
814
+ }
815
+ break
816
+ }
808
817
case 'distant_light' : { glowObjs [ idx ] = distant_light ( cfg ) ; break }
809
818
case 'canvas' : {
810
819
if ( ( typeof isjupyterlab_vpython !== 'undefined' ) && ( isjupyterlab_vpython === true ) ) {
@@ -904,12 +913,12 @@ function handle_cmds(dcmds) {
904
913
async function handle_methods ( dmeth ) {
905
914
"use strict" ;
906
915
//console.log('METHODS')
907
- for ( var idmeth = 0 ; idmeth < dmeth . length ; idmeth ++ ) { // methods; cmd is ['idx':idx, 'attr':method, 'val':val]
908
- var cmd = dmeth [ idmeth ]
909
- var idx = cmd . idx
910
- var method = cmd . attr
911
- var val = cmd . val
912
- var obj = glowObjs [ idx ]
916
+ for ( let idmeth = 0 ; idmeth < dmeth . length ; idmeth ++ ) { // methods; cmd is ['idx':idx, 'attr':method, 'val':val]
917
+ let cmd = dmeth [ idmeth ]
918
+ let idx = cmd . idx
919
+ let method = cmd . attr
920
+ let val = cmd . val
921
+ let obj = glowObjs [ idx ]
913
922
914
923
if ( method == 'GSprint' ) {
915
924
GSprint ( val )
@@ -923,17 +932,17 @@ async function handle_methods(dmeth) {
923
932
} else if ( method === 'add_to_trail' ) {
924
933
obj [ '_func' ] = val
925
934
} else if ( method === 'bind' ) {
926
- var evts = val . split ( ' ' )
927
- for ( var evt in evts ) {
928
- var e = evts [ evt ]
935
+ let evts = val . split ( ' ' )
936
+ for ( let evt in evts ) {
937
+ let e = evts [ evt ]
929
938
if ( binds . indexOf ( e ) == - 1 )
930
939
throw new Error ( 'There is no error type "' + e + '"' )
931
940
}
932
941
obj . bind ( val , process_binding )
933
942
} else if ( method === 'unbind' ) {
934
- var evts = val . split ( ' ' )
935
- for ( var evt in evts ) {
936
- var e = evts [ evt ]
943
+ let evts = val . split ( ' ' )
944
+ for ( let evt in evts ) {
945
+ let e = evts [ evt ]
937
946
if ( binds . indexOf ( e ) == - 1 )
938
947
throw new Error ( 'There is no error type "' + e + '"' )
939
948
}
@@ -973,17 +982,17 @@ async function handle_methods(dmeth) {
973
982
function handle_attrs ( dattrs ) {
974
983
"use strict" ;
975
984
//console.log('ATTRS')
976
- for ( var idattrs = 0 ; idattrs < dattrs . length ; idattrs ++ ) { // attributes; cmd is {'idx':idx, 'attr':attr, 'val':val}
977
- var cmd = dattrs [ idattrs ]
978
- var idx = cmd . idx
979
- var obj = glowObjs [ idx ]
980
- var attr = cmd [ 'attr' ]
981
- var val = cmd [ 'val' ]
982
- var triangle_quad = [ 'v0' , 'v1' , 'v2' , 'v3' ]
985
+ for ( let idattrs = 0 ; idattrs < dattrs . length ; idattrs ++ ) { // attributes; cmd is {'idx':idx, 'attr':attr, 'val':val}
986
+ let cmd = dattrs [ idattrs ]
987
+ let idx = cmd . idx
988
+ let obj = glowObjs [ idx ]
989
+ let attr = cmd [ 'attr' ]
990
+ let val = cmd [ 'val' ]
991
+ let triangle_quad = [ 'v0' , 'v1' , 'v2' , 'v3' ]
983
992
if ( val instanceof vec ) {
984
993
if ( attr === 'pos' && ( obj instanceof points || obj instanceof curve ) ) {
985
- var ptlist = [ ]
986
- for ( var kk = 0 ; kk < val . length ; kk ++ ) {
994
+ let ptlist = [ ]
995
+ for ( let kk = 0 ; kk < val . length ; kk ++ ) {
987
996
ptlist . push ( val [ kk ] )
988
997
}
989
998
obj [ attr ] = ptlist
0 commit comments