added ability to recursivly get current folder size

This commit is contained in:
coderaiser 2013-04-05 14:12:48 -04:00
parent da282742d6
commit 91a72c96df
7 changed files with 90 additions and 50 deletions

View file

@ -54,6 +54,8 @@ from storage folder.
* Added ability to delete selected files from DOM.
* Added ability to recursivly get current folder size.
2012.03.01, Version 0.1.9

View file

@ -156,26 +156,22 @@ body{
margin: 26px 26px 0 26px;
}
.fm-header{
font-weight: bold;
font-weight: bold;
}
#path{
margin-left:1.5%;
margin-left:1.5%;
}
.left, #left{
float:left;
}
/* фон файла, на котором курсор*/
.current-file{
border: 1.5px solid rgba(49, 123, 249, .40);
}
.selected-file{
color:white;
background-color: rgb(49, 123, 249);
background-color: rgba(49, 123, 249, .40);
}
.selected-file .name > a{
color:white;
.selected-file, .selected-file .name > a{
color: rgb(254,159,224);
}
.right, #right{
@ -189,6 +185,7 @@ body{
#keyspanel{
text-align: center;
}
/* информация о файлах и папках*/
.name{
float: left;

View file

@ -56,10 +56,10 @@ var CloudCommander, Util, DOM = {}, CloudFunc;
});
};
this.read = function(pUrl, pCallBack){
this.read = function(pUrl, pCallBack, pQuery){
sendRequest({
method : 'GET',
url : CloudFunc.FS + pUrl,
url : CloudFunc.FS + pUrl + (pQuery || ''),
callback : pCallBack
});
};
@ -997,6 +997,22 @@ var CloudCommander, Util, DOM = {}, CloudFunc;
return lRet;
};
/**
* get size
* @pCurrentFile
*/
DOM.loadCurrentSize = function(pCurrentFile){
var lRet,
lLink = DOM.getCurrentPath(pCurrentFile);
/* если это папка - возвращаем слово dir вместо размера*/
DOM.RESTfull.read(lLink, function(pSize){
Util.log(pSize);
}, '?size');
return lRet;
};
/**
* set size
* @pCurrentFile
@ -1039,6 +1055,7 @@ var CloudCommander, Util, DOM = {}, CloudFunc;
Util.exec(lErrorWas);
DOM.Images.showError(jqXHR);
};
if( Util.isFunction(lParams) )
lParams.success = Util.retExec(pParams);

View file

@ -11,6 +11,7 @@ var CloudCommander, Util, DOM;
ENTER : 13,
ESC : 27,
SPACE : 32,
PAGE_UP : 33,
PAGE_DOWN : 34,
END : 35,
@ -68,11 +69,12 @@ var CloudCommander, Util, DOM;
var lCurrentFile = DOM.getCurrentFile(), i;
/* если клавиши можно обрабатывать*/
if(keyBinded && pEvent){
var lKeyCode = pEvent.keyCode;
var lKeyCode = pEvent.keyCode,
lShift = pEvent.shiftKey;
/* open configuration window */
if(lKeyCode === KEY.O && pEvent.altKey){
console.log('openning config window...');
Util.log('openning config window...');
DOM.Images.showLoad({top: true});
@ -118,7 +120,7 @@ var CloudCommander, Util, DOM;
break;
case KEY.DELETE:
if(pEvent.shiftKey){
if(lShift){
var lUrl = DOM.getCurrentPath(lCurrentFile);
if( DOM.isCurrentIsDir(lCurrentFile) )
@ -141,8 +143,8 @@ var CloudCommander, Util, DOM;
break;
case KEY.F3:
var lEditor = CloudCmd[pEvent.shiftKey ?
'Viewer' : 'Editor'];
var lEditor = CloudCmd[lShift ? 'Viewer' : 'Editor'];
Util.exec(lEditor, true);
DOM.preventDefault(pEvent);
break;
@ -172,7 +174,7 @@ var CloudCommander, Util, DOM;
break;
case KEY.F10:
if(pEvent.shiftKey){
if(lShift){
Util.exec(CloudCmd.Menu);
DOM.preventDefault(pEvent);
}
@ -183,10 +185,18 @@ var CloudCommander, Util, DOM;
Util.exec(CloudCmd.Terminal);
break;
case KEY.SPACE:
DOM.selectFile(lCurrentFile);
DOM.preventDefault(pEvent);
break;
/* навигация по таблице файлов *
* если нажали клавишу вверх *
* выделяем предыдущую строку */
case KEY.UP:
if(lShift)
DOM.selectFile(lCurrentFile);
DOM.setCurrentFile( lCurrentFile.previousSibling );
DOM.preventDefault( pEvent );
break;
@ -194,6 +204,9 @@ var CloudCommander, Util, DOM;
/* если нажали клавишу в низ *
* выделяем следующую строку */
case KEY.DOWN:
if(lShift)
DOM.selectFile(lCurrentFile);
DOM.setCurrentFile( lCurrentFile.nextSibling );
DOM.preventDefault( pEvent );
break;
@ -264,7 +277,7 @@ var CloudCommander, Util, DOM;
* (обновляем кэш)
*/
else if(lKeyCode === KEY.R && pEvent.ctrlKey){
console.log('<ctrl>+r pressed\n' +
Util.log('<ctrl>+r pressed\n' +
'reloading page...\n' +
'press <alt>+q to remove all key-handlers');
@ -274,12 +287,12 @@ var CloudCommander, Util, DOM;
/* если нажали <ctrl>+d чистим кэш */
else if(lKeyCode === KEY.D && pEvent.ctrlKey){
Util.log('<ctrl>+d pressed\n' +
'clearing cache...\n' +
'press <alt>+q to remove all key-handlers');
DOM.Cache.clear();
DOM.preventDefault();
Util.log('<ctrl>+d pressed\n' +
'clearing cache...\n' +
'press <alt>+q to remove all key-handlers');
DOM.Cache.clear();
DOM.preventDefault();
}
/* если нажали <alt>+q
@ -287,7 +300,7 @@ var CloudCommander, Util, DOM;
* нажатий клавиш
*/
else if(lKeyCode === KEY.Q && pEvent.altKey){
console.log('<alt>+q pressed\n' +
Util.log('<alt>+q pressed\n' +
'<ctrl>+r reload key-handerl - removed' +
'<ctrl>+s clear cache key-handler - removed'+
'press <alt>+s to to set them');
@ -307,7 +320,7 @@ var CloudCommander, Util, DOM;
/* обрабатываем нажатия на клавиши*/
keyBinded = true;
console.log('<alt>+s pressed\n' +
Util.log('<alt>+s pressed\n' +
'<ctrl>+r reload key-handerl - set\n' +
'<ctrl>+s clear cache key-handler - set\n' +
'press <alt>+q to remove them');

View file

@ -93,12 +93,11 @@
var p = pParams,
c = p.params;
if(c.stats)
c.stats[c.name] = !p.error ? p.data : {
'mode' : 0,
'size' : 0,
'isDirectory' : Util.retFalse
};
c.stats[c.name] = !p.error ? p.data : {
'mode' : 0,
'size' : 0,
'isDirectory' : Util.retFalse
};
if(c.count === Object.keys(c.stats).length)
Util.exec(c.callback);

View file

@ -101,6 +101,7 @@
exports.appcache = srvrequire('appcache'),
exports.cache = srvrequire('cache').Cache,
exports.cloudfunc = librequire('cloudfunc'),
exports.dir = srvrequire('dir');
exports.rest = srvrequire('rest').api,
exports.update = srvrequire('update'),
exports.ischanged = srvrequire('ischanged');
@ -111,6 +112,7 @@
* totally filled of all information that should know all modules
*/
global.cloudcmd.main = exports;
/**
* function do safe require of needed module
* @param {Strin} pSrc

View file

@ -17,6 +17,7 @@
fs = main.fs,
Util = main.util,
CloudFunc = main.cloudfunc,
dir = main.dir,
OK = 200,
Header = main.generateHeaders({
name:'api.json'
@ -41,7 +42,6 @@
return lRet;
};
/**
* send data
*
@ -96,27 +96,37 @@
var p = pParams,
lQuery = main.getQuery(p.request);
p.name = Util.removeStrOneTime(p.name, [CloudFunc.FS, '?dir']) || '/';
p.name = Util.removeStrOneTime(p.name, CloudFunc.FS) || '/';
switch(p.request.method){
case 'GET':
fs.stat(p.name, function(pError, pStat){
if(!pError)
if( pStat.isDirectory() )
main.commander.getDirContent(pParams.name, function(pError, pData){
if(!pError){
pParams.request.url += '.json';
pParams.data = Util.stringifyJSON(pData);
main.sendResponse(pParams);
}
else
main.sendError(pParams, pError);
});
if( Util.strCmp(lQuery, 'size') )
dir.getSize(p.name, function(pErr, pSize){
if(!pErr){
var lSize = CloudFunc.getShortSize(pSize);
main.sendResponse(pParams, lSize);
}
else
main.sendFile(pParams);
else
main.sendError(pParams, pError);
main.sendError(pParams, pErr);
});
else
fs.stat(p.name, function(pError, pStat){
if(!pError)
if( pStat.isDirectory() )
main.commander.getDirContent(pParams.name, function(pError, pData){
if(!pError){
pParams.request.url += '.json';
pParams.data = Util.stringifyJSON(pData);
main.sendResponse(pParams);
}
else
main.sendError(pParams, pError);
});
else
main.sendFile(pParams);
else
main.sendError(pParams, pError);
});
});
break;