diff --git a/js/id/ui/intro.js b/js/id/ui/intro.js index 29dc63754..419b13270 100644 --- a/js/id/ui/intro.js +++ b/js/id/ui/intro.js @@ -67,7 +67,6 @@ iD.ui.intro.pointBox = function(point) { iD.ui.intro.pad = function(box, padding) { if (box instanceof Array) { - console.log("array"); box = { left: box[0], top: box[1] diff --git a/js/id/ui/intro/area.js b/js/id/ui/intro/area.js index e51c159fc..dfcc554a2 100644 --- a/js/id/ui/intro/area.js +++ b/js/id/ui/intro/area.js @@ -1,7 +1,7 @@ iD.ui.intro.area = function(context, curtain) { var event = d3.dispatch('done'), - timeouts = []; + timeout; var step = { name: 'Areas' @@ -51,7 +51,7 @@ iD.ui.intro.area = function(context, curtain) { context.map().on('move.intro', null); context.on('enter.intro', null); - setTimeout(function() { + timeout = setTimeout(function() { curtain.reveal('.preset-grid-search', t('intro.areas.search')); d3.select('.preset-grid-search').on('keyup.intro', keySearch); }, 500); @@ -75,8 +75,12 @@ iD.ui.intro.area = function(context, curtain) { }; step.exit = function() { + window.clearTimeout(timeout); context.on('enter.intro', null); context.on('exit.intro', null); + context.history().on('change.intro', null); + context.map().on('move.intro', null); + d3.select('.preset-grid-search').on('keyup.intro', null); }; return d3.rebind(step, event, 'on'); diff --git a/js/id/ui/intro/line.js b/js/id/ui/intro/line.js index adc02ec3a..e5cdb06d8 100644 --- a/js/id/ui/intro/line.js +++ b/js/id/ui/intro/line.js @@ -1,6 +1,7 @@ iD.ui.intro.line = function(context, curtain) { - var event = d3.dispatch('done'); + var event = d3.dispatch('done'), + timeouts = []; var step = { name: 'Lines' @@ -10,6 +11,10 @@ iD.ui.intro.line = function(context, curtain) { d3.selection.prototype.one.call(target, e, f); } + function timeout(f, t) { + timeouts.push(window.setTimeout(f, t)); + } + step.enter = function() { var centroid = [-85.62830, 41.95699]; @@ -77,7 +82,7 @@ iD.ui.intro.line = function(context, curtain) { context.map().on('move.intro', null); context.on('enter.intro', null); - setTimeout(function() { + timeout(function() { var road = d3.select('.preset-grid .grid-entry').filter(function(d) { return d.id === 'Road'; }); @@ -87,7 +92,7 @@ iD.ui.intro.line = function(context, curtain) { } function roadCategory() { - window.setTimeout(function() { + timeout(function() { var grid = d3.select('.subgrid'); curtain.reveal(grid.node(), t('intro.lines.residential')); grid.selectAll('.grid-entry').filter(function(d) { @@ -104,8 +109,11 @@ iD.ui.intro.line = function(context, curtain) { }; step.exit = function() { + timeouts.forEach(window.clearTimeout); context.on('enter.intro', null); context.on('exit.intro', null); + context.map().on('move.intro', null); + context.history().on('change.intro', null); curtain.hide(); }; diff --git a/js/id/ui/intro/point.js b/js/id/ui/intro/point.js index c81af8287..8541ed3d5 100644 --- a/js/id/ui/intro/point.js +++ b/js/id/ui/intro/point.js @@ -53,12 +53,12 @@ iD.ui.intro.point = function(context, curtain) { function selectedPreset() { curtain.reveal('.grid-pane', t('intro.points.describe')); context.history().on('change.intro', closeEditor); + context.on('exit.intro', event.done); } function closeEditor() { context.history().on('change.intro', null); curtain.reveal('.tag-pane', t('intro.points.close')); - context.on('exit.intro', event.done); } }; @@ -67,6 +67,7 @@ iD.ui.intro.point = function(context, curtain) { context.on('exit.intro', null); context.on('enter.intro', null); context.map().on('move.intro', null); + context.history().on('change.intro', null); }; return d3.rebind(step, event, 'on');