mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
fix(cloucmd) sort: handle click on header of passive panel
This commit is contained in:
parent
c121fad03f
commit
ce7210ea8b
3 changed files with 73 additions and 31 deletions
|
|
@ -35,8 +35,15 @@ var Util, DOM, CloudFunc, join;
|
|||
|
||||
this.TITLE = 'Cloud Commander';
|
||||
|
||||
this.sort = 'name';
|
||||
this.order = 'asc';
|
||||
this.sort = {
|
||||
left: 'name',
|
||||
right: 'name',
|
||||
};
|
||||
|
||||
this.order = {
|
||||
left: 'asc',
|
||||
right: 'asc',
|
||||
};
|
||||
|
||||
TITLE = this.TITLE;
|
||||
|
||||
|
|
@ -65,18 +72,12 @@ var Util, DOM, CloudFunc, join;
|
|||
this.loadDir = function(params, callback) {
|
||||
var imgPosition;
|
||||
var panelChanged;
|
||||
var noCurrent;
|
||||
var isRefresh;
|
||||
var panel;
|
||||
var history;
|
||||
var p = params;
|
||||
|
||||
if (params) {
|
||||
isRefresh = p.isRefresh;
|
||||
panel = p.panel;
|
||||
history = p.history;
|
||||
noCurrent = p.noCurrent;
|
||||
}
|
||||
var isRefresh = p.isRefresh;
|
||||
var panel = p.panel;
|
||||
var history = p.history;
|
||||
var noCurrent = p.noCurrent;
|
||||
|
||||
if (!noCurrent)
|
||||
if (panel && panel !== Info.panel) {
|
||||
|
|
@ -91,9 +92,9 @@ var Util, DOM, CloudFunc, join;
|
|||
|
||||
/* загружаем содержимое каталога */
|
||||
ajaxLoad(p.path, {
|
||||
refresh : isRefresh,
|
||||
history : history,
|
||||
noCurrent : noCurrent
|
||||
refresh: isRefresh,
|
||||
history: history,
|
||||
noCurrent: noCurrent
|
||||
}, panel, callback);
|
||||
};
|
||||
|
||||
|
|
@ -366,11 +367,11 @@ var Util, DOM, CloudFunc, join;
|
|||
}, obj);
|
||||
};
|
||||
|
||||
this.refresh = function(panelParam, options, callback) {
|
||||
var panel = panelParam || Info.panel,
|
||||
noCurrent,
|
||||
NEEDREFRESH = true,
|
||||
path = DOM.getCurrentDirPath(panel);
|
||||
this.refresh = function(panelParam, options, callback) {
|
||||
var panel = panelParam || Info.panel;
|
||||
var NEEDREFRESH = true;
|
||||
var path = DOM.getCurrentDirPath(panel);
|
||||
var noCurrent;
|
||||
|
||||
if (options)
|
||||
noCurrent = options.noCurrent;
|
||||
|
|
@ -410,9 +411,13 @@ var Util, DOM, CloudFunc, join;
|
|||
if (!isRefresh && json)
|
||||
return createFileTable(obj, panel, options, callback);
|
||||
|
||||
var position = DOM.getPanelPosition(panel);
|
||||
var sort = CloudCmd.sort[position];
|
||||
var order = CloudCmd.order[position];
|
||||
|
||||
var query = rendy('?sort={{ sort }}&order={{ order }}', {
|
||||
sort: CloudCmd.sort,
|
||||
order: CloudCmd.order
|
||||
sort: sort,
|
||||
order: order,
|
||||
});
|
||||
|
||||
RESTful.read(path + query, 'json', function(error, obj) {
|
||||
|
|
@ -421,8 +426,8 @@ var Util, DOM, CloudFunc, join;
|
|||
|
||||
Storage.set(path, obj);
|
||||
|
||||
options.sort = CloudCmd.sort;
|
||||
options.order = CloudCmd.order;
|
||||
options.sort = sort;
|
||||
options.order = order;
|
||||
|
||||
createFileTable(obj, panel, options, function() {
|
||||
if (isRefresh && !noCurrent) {
|
||||
|
|
|
|||
|
|
@ -1240,10 +1240,16 @@ var CloudCmd, Util, DOM, CloudFunc;
|
|||
return this.getPanel().parentElement;
|
||||
};
|
||||
|
||||
this.getPanelPosition = function(panel) {
|
||||
panel = panel || DOM.getPanel();
|
||||
|
||||
return panel.dataset.name.replace('js-', '');
|
||||
};
|
||||
|
||||
/** function getting panel active, or passive
|
||||
* @param options = {active: true}
|
||||
*/
|
||||
this.getPanel = function(options) {
|
||||
this.getPanel = function(options) {
|
||||
var files, panel, isLeft,
|
||||
dataName = 'js-',
|
||||
current = this.getCurrentFile();
|
||||
|
|
@ -1621,6 +1627,7 @@ var CloudCmd, Util, DOM, CloudFunc;
|
|||
info.size = Cmd.getCurrentSize(current);
|
||||
info.isDir = Cmd.isCurrentIsDir();
|
||||
info.isSelected = Cmd.isSelected(current);
|
||||
info.panelPosition = Cmd.getPanel().dataset.name.replace('js-', '');
|
||||
info.isOnePanel =
|
||||
info.panel.getAttribute('data-name') ===
|
||||
info.panelPassive.getAttribute('data-name');
|
||||
|
|
|
|||
|
|
@ -32,6 +32,20 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
function header() {
|
||||
var fm = DOM.getFM();
|
||||
|
||||
var position = Info.panelPosition;
|
||||
var sortPrevious = CloudCmd.sort[position];
|
||||
|
||||
var sort = CloudCmd.sort;
|
||||
var order = CloudCmd.order;
|
||||
|
||||
var isDataset = function(el) {
|
||||
return el.dataset;
|
||||
};
|
||||
|
||||
var isPanel = function(el) {
|
||||
return /^js-(left|right)$/.test(el.dataset.name);
|
||||
};
|
||||
|
||||
Events.addClick(fm, function(event) {
|
||||
var el = event.target;
|
||||
var parent = el.parentElement;
|
||||
|
|
@ -45,15 +59,31 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
if (!/^(name|size|date)$/.test(name))
|
||||
return;
|
||||
|
||||
if (name === CloudCmd.sort) {
|
||||
if (CloudCmd.order === 'asc')
|
||||
CloudCmd.order = 'desc';
|
||||
var panel = event.path
|
||||
.filter(isDataset)
|
||||
.filter(isPanel)
|
||||
.pop();
|
||||
|
||||
var position = panel
|
||||
.dataset
|
||||
.name
|
||||
.replace('js-', '');
|
||||
|
||||
if (name !== sortPrevious) {
|
||||
order[position] = 'asc';
|
||||
} else {
|
||||
if (order[position] === 'asc')
|
||||
order[position] = 'desc';
|
||||
else
|
||||
CloudCmd.order = 'asc';
|
||||
order[position] = 'asc';
|
||||
}
|
||||
|
||||
CloudCmd.sort = name;
|
||||
CloudCmd.refresh();
|
||||
sortPrevious =
|
||||
sort[position] = name;
|
||||
|
||||
CloudCmd.refresh(panel, {
|
||||
noCurrent: position !== Info.panelPosition
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue