From 18bac530d8b30490bf6cf2d27c28a75464ec30dd Mon Sep 17 00:00:00 2001 From: Ken Cheung Date: Mon, 5 Oct 2015 21:26:16 +0800 Subject: [PATCH] Refactor duplicated callback function for collapse and expand options --- core/workspace_svg.js | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/core/workspace_svg.js b/core/workspace_svg.js index e6c62b10a..e4f640948 100644 --- a/core/workspace_svg.js +++ b/core/workspace_svg.js @@ -677,19 +677,28 @@ Blockly.WorkspaceSvg.prototype.showContextMenu_ = function(e) { } } - // Option to collapse top blocks. - var collapseOption = {enabled: hasExpandedBlocks}; - collapseOption.text = Blockly.Msg.COLLAPSE_ALL; - collapseOption.callback = function() { + /* + * Option to collapse or expand top blocks + * @param {bool} shouldCollapse whether a block should collapse + * @private + */ + function toggleOption(shouldCollapse) { var ms = 0; for (var i = 0; i < topBlocks.length; i++) { var block = topBlocks[i]; while (block) { - setTimeout(block.setCollapsed.bind(block, true), ms); + setTimeout(block.setCollapsed.bind(block, shouldCollapse), ms); block = block.getNextBlock(); ms += COLLAPSE_DELAY; } } + } + + // Option to collapse top blocks. + var collapseOption = {enabled: hasExpandedBlocks}; + collapseOption.text = Blockly.Msg.COLLAPSE_ALL; + collapseOption.callback = function() { + toggleOption(true); }; menuOptions.push(collapseOption); @@ -697,15 +706,7 @@ Blockly.WorkspaceSvg.prototype.showContextMenu_ = function(e) { var expandOption = {enabled: hasCollapsedBlocks}; expandOption.text = Blockly.Msg.EXPAND_ALL; expandOption.callback = function() { - var ms = 0; - for (var i = 0; i < topBlocks.length; i++) { - var block = topBlocks[i]; - while (block) { - setTimeout(block.setCollapsed.bind(block, false), ms); - block = block.getNextBlock(); - ms += COLLAPSE_DELAY; - } - } + toggleOption(false); }; menuOptions.push(expandOption); }