@@ -26,6 +26,21 @@ var defaultOptions = zoomNS.defaults = {
2626 sensitivity : 3
2727 }
2828} ;
29+ // Stores the original options of the scales
30+ var originalOptions = { } ;
31+
32+ function storeOriginalOptions ( chart ) {
33+ helpers . each ( chart . scales , function ( scale ) {
34+ if ( ! originalOptions [ scale . id ] ) {
35+ originalOptions [ scale . id ] = helpers . clone ( scale . options ) ;
36+ }
37+ } ) ;
38+ helpers . each ( originalOptions , function ( opt , key ) {
39+ if ( ! chart . scales [ key ] ) {
40+ delete originalOptions [ key ] ;
41+ }
42+ } ) ;
43+ }
2944
3045function directionEnabled ( mode , dir ) {
3146 if ( mode === undefined ) {
@@ -172,6 +187,7 @@ function doZoom(chart, percentZoomX, percentZoomY, focalPoint, whichAxes) {
172187 var zoomOptions = chart . options . zoom ;
173188
174189 if ( zoomOptions && helpers . getValueOrDefault ( zoomOptions . enabled , defaultOptions . zoom . enabled ) ) {
190+ storeOriginalOptions ( chart ) ;
175191 // Do the zoom here
176192 var zoomMode = helpers . getValueOrDefault ( chart . options . zoom . mode , defaultOptions . zoom . mode ) ;
177193 zoomOptions . sensitivity = helpers . getValueOrDefault ( chart . options . zoom . sensitivity , defaultOptions . zoom . sensitivity ) ;
@@ -260,6 +276,7 @@ function panScale(scale, delta, panOptions) {
260276}
261277
262278function doPan ( chartInstance , deltaX , deltaY ) {
279+ storeOriginalOptions ( chartInstance ) ;
263280 var panOptions = chartInstance . options . pan ;
264281 if ( panOptions && helpers . getValueOrDefault ( panOptions . enabled , defaultOptions . pan . enabled ) ) {
265282 var panMode = helpers . getValueOrDefault ( chartInstance . options . pan . mode , defaultOptions . pan . mode ) ;
@@ -325,24 +342,39 @@ var zoomPlugin = {
325342 id : 'zoom' ,
326343
327344 afterInit : function ( chartInstance ) {
328- helpers . each ( chartInstance . scales , function ( scale ) {
329- scale . originalOptions = helpers . clone ( scale . options ) ;
330- } ) ;
331345
332346 chartInstance . resetZoom = function ( ) {
347+ storeOriginalOptions ( chartInstance ) ;
333348 helpers . each ( chartInstance . scales , function ( scale ) {
349+
334350 var timeOptions = scale . options . time ;
335351 var tickOptions = scale . options . ticks ;
336352
337- if ( timeOptions ) {
338- timeOptions . min = scale . originalOptions . time . min ;
339- timeOptions . max = scale . originalOptions . time . max ;
340- }
353+ if ( originalOptions [ scale . id ] ) {
354+
355+ if ( timeOptions ) {
356+ timeOptions . min = originalOptions [ scale . id ] . time . min ;
357+ timeOptions . max = originalOptions [ scale . id ] . time . max ;
358+ }
359+
360+ if ( tickOptions ) {
361+ tickOptions . min = originalOptions [ scale . id ] . ticks . min ;
362+ tickOptions . max = originalOptions [ scale . id ] . ticks . max ;
363+ }
364+ } else {
341365
342- if ( tickOptions ) {
343- tickOptions . min = scale . originalOptions . ticks . min ;
344- tickOptions . max = scale . originalOptions . ticks . max ;
366+ if ( timeOptions ) {
367+ delete timeOptions . min ;
368+ delete timeOptions . max ;
369+ }
370+
371+ if ( tickOptions ) {
372+ delete tickOptions . min ;
373+ delete tickOptions . max ;
374+ }
345375 }
376+
377+
346378 } ) ;
347379
348380 chartInstance . update ( ) ;
0 commit comments