From 1517aa3389a6b17abc28e4aafc3a31afaee9ebcd Mon Sep 17 00:00:00 2001 From: coderaiser Date: Wed, 10 Sep 2014 09:24:25 -0400 Subject: [PATCH] feature(dom) add getActiveFiles --- lib/client/buffer.js | 12 ++---------- lib/client/dom.js | 24 ++++++++++++++++++++---- lib/client/menu.js | 17 +++++++++-------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/lib/client/buffer.js b/lib/client/buffer.js index 475d2668..38c5e824 100644 --- a/lib/client/buffer.js +++ b/lib/client/buffer.js @@ -32,11 +32,7 @@ var Util, DOM; } function addCutClass() { - var files = DOM.getSelectedFiles(), - n = files.length; - - if (!n) - files = [Info.element]; + var files = DOM.getActiveFiles(); files.forEach(function(element) { DOM.addClass(element, CLASS); @@ -44,11 +40,7 @@ var Util, DOM; } function rmCutClass() { - var files = DOM.getSelectedFiles(), - n = files.length; - - if (!n) - files = [Info.element]; + var files = DOM.getActiveFiles(); files.forEach(function(element) { DOM.removeClass(element, CLASS); diff --git a/lib/client/dom.js b/lib/client/dom.js index a3d5855a..4320ed52 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -452,9 +452,9 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; * zip file * */ - this.pack = function() { + this.pack = function(current) { var RESTful = DOM.RESTful, - name = Cmd.getCurrentName(), + name = Cmd.getCurrentName(current), dir = Cmd.getCurrentDirPath(), path = dir + name, fileFrom = { @@ -469,9 +469,9 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; * unzip file * */ - this.unpack = function() { + this.unpack = function(current) { var RESTful = DOM.RESTful, - name = Cmd.getCurrentName(), + name = Cmd.getCurrentName(current), dir = Cmd.getCurrentDirPath(), path = dir + name, fileFrom = { @@ -662,6 +662,22 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; return ret; }; + /** + * get all selected files with current included + * + * @currentFile + */ + this.getActiveFiles = function() { + var current = DOM.getCurrentFile(), + files = DOM.getSelectedFiles(), + selected = ~files.indexOf(current); + + if (!selected) + files.push(current); + + return files; + } + /** * get size * @currentFile diff --git a/lib/client/menu.js b/lib/client/menu.js index 797ac2ba..b93eb7b8 100644 --- a/lib/client/menu.js +++ b/lib/client/menu.js @@ -142,8 +142,8 @@ var CloudCmd, Util, DOM, CloudFunc, MenuIO; setTimeout(DOM.renameCurrent, 100); }, 'Delete' : DOM.promptDelete, - 'Pack' : DOM.pack, - 'Unpack' : DOM.unpack, + 'Pack' : getActiveFunc(DOM.pack), + 'Unpack' : getActiveFunc(DOM.unpack), 'Upload To' : {}, 'Download' : download, 'Cut' : Buffer.cut, @@ -230,12 +230,7 @@ var CloudCmd, Util, DOM, CloudFunc, MenuIO; apiURL = CloudFunc.apiURL, FS = CloudFunc.FS, date = Date.now(), - current = Info.element, - files = DOM.getSelectedFiles(), - selected = ~files.indexOf(current); - - if (!selected) - files.push(current); + files = DOM.getActiveFiles(); files.forEach(function(file) { var element, @@ -266,6 +261,12 @@ var CloudCmd, Util, DOM, CloudFunc, MenuIO; }); } + function getActiveFunc(callback) { + return function() { + DOM.getActiveFiles().forEach(callback); + }; + } + function listener(event) { var current, x, y, position, F9 = Key.F9,