mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
feature(listeners) add (un)setOnPanel
This commit is contained in:
parent
2713363e99
commit
f5d9360793
2 changed files with 112 additions and 57 deletions
|
|
@ -260,6 +260,9 @@ var Util, DOM, CloudFunc;
|
|||
Listeners.changeLinks(LEFT);
|
||||
Listeners.changeLinks(RIGHT);
|
||||
|
||||
Listeners.setOnPanel(LEFT);
|
||||
Listeners.setOnPanel(RIGHT);
|
||||
|
||||
Listeners.initKeysPanel();
|
||||
|
||||
CloudCmd.getConfig(function(config) {
|
||||
|
|
@ -419,7 +422,12 @@ var Util, DOM, CloudFunc;
|
|||
var n, found, varCurrent, varName, current,
|
||||
dir = DOM.getCurrentDirName(),
|
||||
name = DOM.getCurrentName(),
|
||||
i = panel.childNodes.length;
|
||||
i = panel.childNodes.length,
|
||||
|
||||
LEFT = CloudFunc.PANEL_LEFT,
|
||||
RIGHT = CloudFunc.PANEL_RIGHT;
|
||||
|
||||
Listeners.unSetOnPanel(panel.id);
|
||||
|
||||
while(i--)
|
||||
panel.removeChild(panel.lastChild);
|
||||
|
|
@ -448,6 +456,7 @@ var Util, DOM, CloudFunc;
|
|||
DOM.setCurrentFile(current);
|
||||
|
||||
Listeners.changeLinks(panel.id);
|
||||
Listeners.setOnPanel(panel.id);
|
||||
|
||||
if (name === '..' && dir !== '/')
|
||||
currentToParent(dir);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,16 @@ var Util, DOM, CloudCmd;
|
|||
var Info = DOM.CurrentInfo,
|
||||
Storage = DOM.Storage,
|
||||
Events = DOM.Events,
|
||||
getConfig = CloudCmd.getConfig;
|
||||
getConfig = CloudCmd.getConfig,
|
||||
OnPathLinks = [],
|
||||
EventsFiles = {
|
||||
'mousedown' : Util.bind(ifExecNotUL, setCurrentFile),
|
||||
'contextmenu' : Util.bind(ifExecNotUL, onContextMenu),
|
||||
'dragstart' : Util.bind(ifExecNotUL, onDragStart),
|
||||
'click' : Util.bind(ifExecNotUL, onClick),
|
||||
'dblclick' : Util.bind(ifExecNotUL, onDblClick),
|
||||
'touchstart' : Util.bind(ifExecNotUL, onTouch)
|
||||
};
|
||||
|
||||
this.analytics = function() {
|
||||
getConfig(function(config) {
|
||||
|
|
@ -70,58 +79,18 @@ var Util, DOM, CloudCmd;
|
|||
}, keysElement);
|
||||
};
|
||||
|
||||
/**
|
||||
* функция меняет ссыки на ajax-овые
|
||||
* @param panelId
|
||||
*/
|
||||
this.changeLinks = function(panelId) {
|
||||
var i, n, a, ai, current, link, loadDir, events, id,
|
||||
this.setOnPanel = function(panelId) {
|
||||
var i, n, ai, link, loadDir,
|
||||
url = CloudCmd.HOST,
|
||||
panel = DOM.getById(panelId),
|
||||
pathElement = DOM.getByDataName('js-path', panel),
|
||||
filesElement = DOM.getByClass('files', panel),
|
||||
loadDirOnce = CloudCmd.loadDir(),
|
||||
files = filesElement.children,
|
||||
pathElement = DOM.getByDataName('js-path', panel),
|
||||
pathLinks = DOM.getByClass('links', pathElement).children,
|
||||
clearStorage = DOM.getByClass('clear-storage', pathElement),
|
||||
refresh = DOM.getByDataName('js-refresh', pathElement),
|
||||
|
||||
onClick = function (event) {
|
||||
var ctrl = event.ctrlKey;
|
||||
|
||||
if (!ctrl)
|
||||
DOM.preventDefault(event);
|
||||
},
|
||||
|
||||
onDblClick = function(event) {
|
||||
var current = getLIElement(event.target),
|
||||
isDir = DOM.isCurrentIsDir(current);
|
||||
|
||||
if (isDir)
|
||||
loadDirOnce(event);
|
||||
},
|
||||
|
||||
onTouch = function(event) {
|
||||
var current = getLIElement(event.target),
|
||||
isDir = DOM.isCurrentIsDir(current);
|
||||
|
||||
if (isDir)
|
||||
setCurrentFile(event, function(element) {
|
||||
var isCurrent = DOM.isCurrentFile(element);
|
||||
|
||||
if (isCurrent)
|
||||
loadDirOnce(event);
|
||||
else
|
||||
DOM.setCurrentFile(element);
|
||||
});
|
||||
};
|
||||
refresh = DOM.getByDataName('js-refresh', pathElement);
|
||||
|
||||
/* ставим загрузку гифа на клик*/
|
||||
Events.addClick(function(event) {
|
||||
CloudCmd.refresh();
|
||||
event.preventDefault();
|
||||
}, refresh);
|
||||
|
||||
Events.addClick(onRefreshClick, refresh);
|
||||
Events.addClick(Storage.clear, clearStorage);
|
||||
|
||||
n = pathLinks.length;
|
||||
|
|
@ -129,18 +98,49 @@ var Util, DOM, CloudCmd;
|
|||
ai = pathLinks[i];
|
||||
link = Util.removeStr(ai.href, url),
|
||||
loadDir = CloudCmd.loadDir(link),
|
||||
|
||||
Events.addClick(loadDir, ai);
|
||||
OnPathLinks.push(loadDir);
|
||||
}
|
||||
|
||||
Events.add({
|
||||
'mousedown' : setCurrentFile,
|
||||
'contextmenu' : onContextMenu,
|
||||
'dragstart' : onDragStart,
|
||||
'click' : onClick,
|
||||
'dblclick' : onDblClick,
|
||||
'touchstart' : onTouch
|
||||
}, filesElement);
|
||||
Events.add(EventsFiles, filesElement);
|
||||
};
|
||||
|
||||
this.unSetOnPanel = function(panelId) {
|
||||
var i, n, ai, link, loadDir,
|
||||
url = CloudCmd.HOST,
|
||||
panel = DOM.getById(panelId),
|
||||
filesElement = DOM.getByClass('files', panel),
|
||||
pathElement = DOM.getByDataName('js-path', panel),
|
||||
pathLinks = DOM.getByClass('links', pathElement).children,
|
||||
clearStorage = DOM.getByClass('clear-storage', pathElement),
|
||||
refresh = DOM.getByDataName('js-refresh', pathElement);
|
||||
|
||||
/* ставим загрузку гифа на клик*/
|
||||
Events.rmClick(onRefreshClick, refresh);
|
||||
|
||||
Events.rmClick(Storage.clear, clearStorage);
|
||||
|
||||
n = pathLinks.length;
|
||||
for (i = 0; i < n; i++) {
|
||||
ai = pathLinks[i];
|
||||
link = Util.removeStr(ai.href, url),
|
||||
loadDir = OnPathLinks.shift();
|
||||
|
||||
Events.rmClick(loadDir, ai);
|
||||
}
|
||||
|
||||
Events.remove(EventsFiles, filesElement);
|
||||
};
|
||||
|
||||
/**
|
||||
* функция меняет ссыки на ajax-овые
|
||||
* @param panelId
|
||||
*/
|
||||
this.changeLinks = function(panelId) {
|
||||
var i, n, a, ai, current, link, loadDir, events, id,
|
||||
panel = DOM.getById(panelId),
|
||||
filesElement = DOM.getByClass('files', panel),
|
||||
files = filesElement.children;
|
||||
|
||||
a = DOM.getByTag('a', filesElement);
|
||||
|
||||
|
|
@ -160,6 +160,47 @@ var Util, DOM, CloudCmd;
|
|||
}
|
||||
};
|
||||
|
||||
function ifExecNotUL(callback, event) {
|
||||
var element = event.target,
|
||||
tag = element.tagName;
|
||||
|
||||
if (tag !== 'UL')
|
||||
Util.exec(callback, event);
|
||||
}
|
||||
|
||||
function onClick(event) {
|
||||
var ctrl = event.ctrlKey;
|
||||
|
||||
if (!ctrl)
|
||||
DOM.preventDefault(event);
|
||||
}
|
||||
|
||||
function onDblClick(event) {
|
||||
var current = getLIElement(event.target),
|
||||
isDir = DOM.isCurrentIsDir(current),
|
||||
loadDirOnce = CloudCmd.loadDir();
|
||||
|
||||
if (isDir)
|
||||
loadDirOnce(event);
|
||||
}
|
||||
|
||||
function onTouch(event) {
|
||||
var current = getLIElement(event.target),
|
||||
isDir = DOM.isCurrentIsDir(current);
|
||||
|
||||
if (isDir)
|
||||
setCurrentFile(event, function(element) {
|
||||
var isCurrent = DOM.isCurrentFile(element),
|
||||
loadDirOnce = CloudCmd.loadDir();
|
||||
|
||||
if (isCurrent)
|
||||
loadDirOnce(event);
|
||||
else
|
||||
DOM.setCurrentFile(element);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function onContextMenu(event) {
|
||||
/* getting html element
|
||||
* currentTarget - DOM event
|
||||
|
|
@ -208,8 +249,13 @@ var Util, DOM, CloudCmd;
|
|||
link);
|
||||
}
|
||||
|
||||
function onRefreshClick(event) {
|
||||
CloudCmd.refresh();
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
function getLIElement(element) {
|
||||
var tag = element.tagName;
|
||||
var tag = element.tagName;
|
||||
|
||||
if (tag !== 'LI')
|
||||
do {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue