@@ -20,6 +20,7 @@ var splitData = require('./data_split_helpers');
2020var Color = require ( '../../components/color' ) ;
2121
2222module . exports = function plot ( gd , wrappedTraceHolders ) {
23+ var dynamic = ! gd . _context . staticPlot ;
2324
2425 var table = gd . _fullLayout . _paper . selectAll ( '.' + c . cn . table )
2526 . data ( wrappedTraceHolders . map ( function ( wrappedTraceHolder ) {
@@ -51,22 +52,30 @@ module.exports = function plot(gd, wrappedTraceHolders) {
5152 var tableControlView = table . selectAll ( '.' + c . cn . tableControlView )
5253 . data ( gup . repeat , gup . keyFun ) ;
5354
54- tableControlView . enter ( )
55+ var cvEnter = tableControlView . enter ( )
5556 . append ( 'g' )
5657 . classed ( c . cn . tableControlView , true )
57- . style ( 'box-sizing' , 'content-box' )
58- . on ( 'mousemove' , function ( d ) { tableControlView . filter ( function ( dd ) { return d === dd ; } ) . call ( renderScrollbarKit , gd ) ; } )
59- . on ( 'mousewheel' , function ( d ) {
60- if ( d . scrollbarState . wheeling ) return ;
61- d . scrollbarState . wheeling = true ;
62- var noChange = makeDragRow ( gd , tableControlView , null , d . scrollY + d3 . event . deltaY ) ( d ) ;
63- if ( ! noChange ) {
64- d3 . event . stopPropagation ( ) ;
65- d3 . event . preventDefault ( ) ;
66- }
67- d . scrollbarState . wheeling = false ;
68- } )
69- . call ( renderScrollbarKit , gd , true ) ;
58+ . style ( 'box-sizing' , 'content-box' ) ;
59+ if ( dynamic ) {
60+ cvEnter
61+ . on ( 'mousemove' , function ( d ) {
62+ tableControlView
63+ . filter ( function ( dd ) { return d === dd ; } )
64+ . call ( renderScrollbarKit , gd ) ;
65+ } )
66+ . on ( 'mousewheel' , function ( d ) {
67+ if ( d . scrollbarState . wheeling ) return ;
68+ d . scrollbarState . wheeling = true ;
69+ var newY = d . scrollY + d3 . event . deltaY ;
70+ var noChange = makeDragRow ( gd , tableControlView , null , newY ) ( d ) ;
71+ if ( ! noChange ) {
72+ d3 . event . stopPropagation ( ) ;
73+ d3 . event . preventDefault ( ) ;
74+ }
75+ d . scrollbarState . wheeling = false ;
76+ } )
77+ . call ( renderScrollbarKit , gd , true ) ;
78+ }
7079
7180 tableControlView
7281 . attr ( 'transform' , function ( d ) { return 'translate(' + d . size . l + ' ' + d . size . t + ')' ; } ) ;
@@ -98,9 +107,10 @@ module.exports = function plot(gd, wrappedTraceHolders) {
98107
99108 yColumn . exit ( ) . remove ( ) ;
100109
101- yColumn
102- . attr ( 'transform' , function ( d ) { return 'translate(' + d . x + ' 0)' ; } )
103- . call ( d3 . behavior . drag ( )
110+ yColumn . attr ( 'transform' , function ( d ) { return 'translate(' + d . x + ' 0)' ; } ) ;
111+
112+ if ( dynamic ) {
113+ yColumn . call ( d3 . behavior . drag ( )
104114 . origin ( function ( d ) {
105115 var movedColumn = d3 . select ( this ) ;
106116 easeColumn ( movedColumn , d , - c . uplift ) ;
@@ -139,6 +149,7 @@ module.exports = function plot(gd, wrappedTraceHolders) {
139149 columnMoved ( gd , p , p . columns . map ( function ( dd ) { return dd . xIndex ; } ) ) ;
140150 } )
141151 ) ;
152+ }
142153
143154 yColumn . each ( function ( d ) {
144155 Drawing . setClipUrl ( d3 . select ( this ) , columnBoundaryClipKey ( gd , d ) , gd ) ;
@@ -160,8 +171,8 @@ module.exports = function plot(gd, wrappedTraceHolders) {
160171 var headerColumnBlock = columnBlock . filter ( headerBlock ) ;
161172 var cellsColumnBlock = columnBlock . filter ( cellsBlock ) ;
162173
163- cellsColumnBlock
164- . call ( d3 . behavior . drag ( )
174+ if ( dynamic ) {
175+ cellsColumnBlock . call ( d3 . behavior . drag ( )
165176 . origin ( function ( d ) {
166177 d3 . event . stopPropagation ( ) ;
167178 return d ;
@@ -171,6 +182,7 @@ module.exports = function plot(gd, wrappedTraceHolders) {
171182 // fixme emit plotly notification
172183 } )
173184 ) ;
185+ }
174186
175187 // initial rendering: header is rendered first, as it may may have async LaTeX (show header first)
176188 // but blocks are _entered_ the way they are due to painter's algo (header on top)
0 commit comments