File "stat.js"
Full Path: /home/pumpbmko/public_html/wp-content/plugins/wp-file-manager/lib/js/ui/stat.js
File size: 3.4 KB
MIME-type: text/html
Charset: utf-8
/**
* @class elFinder ui
* Display number of files/selected files and its size in statusbar
*
* @author Dmitry (dio) Levashov
**/
jQuery.fn.elfinderstat = function(fm) {
"use strict";
return this.each(function() {
var size = jQuery(this).addClass('elfinder-stat-size'),
sel = jQuery('<div class="elfinder-stat-selected"></div>')
.on('click', 'a', function(e) {
var hash = jQuery(this).data('hash');
e.preventDefault();
fm.exec('opendir', [ hash ]);
}),
titleitems = fm.i18n('items'),
titlesel = fm.i18n('selected'),
titlesize = fm.i18n('size'),
setstat = function(files) {
var c = 0,
s = 0,
cwd = fm.cwd(),
calc = true,
hasSize = true;
if (cwd.sizeInfo || cwd.size) {
s = cwd.size;
calc = false;
}
jQuery.each(files, function(i, file) {
c++;
if (calc) {
s += parseInt(file.size) || 0;
if (hasSize === true && file.mime === 'directory' && !file.sizeInfo) {
hasSize = false;
}
}
});
size.html(titleitems+': <span class="elfinder-stat-incsearch"></span>'+c+', <span class="elfinder-stat-size'+(hasSize? ' elfinder-stat-size-recursive' : '')+'">'+fm.i18n(hasSize? 'sum' : 'size')+': '+fm.formatSize(s)+'</span>')
.attr('title', size.text());
fm.trigger('uistatchange');
},
setIncsearchStat = function(data) {
size.find('span.elfinder-stat-incsearch').html(data? data.hashes.length + ' / ' : '');
size.attr('title', size.text());
fm.trigger('uistatchange');
},
setSelect = function(files) {
var s = 0,
c = 0,
dirs = [],
path, file;
if (files.length === 1) {
file = files[0];
s = file.size;
if (fm.searchStatus.state === 2) {
path = fm.escape(file.path? file.path.replace(/\/[^\/]*$/, '') : '..');
dirs.push('<a href="#elf_'+file.phash+'" data-hash="'+file.hash+'" title="'+path+'">'+path+'</a>');
}
dirs.push(fm.escape(file.i18 || file.name));
sel.html(dirs.join('/') + (s > 0 ? ', '+fm.formatSize(s) : ''));
} else if (files.length) {
jQuery.each(files, function(i, file) {
c++;
s += parseInt(file.size)||0;
});
sel.html(c ? titlesel+': '+c+', '+titlesize+': '+fm.formatSize(s) : ' ');
} else {
sel.html('');
}
sel.attr('title', sel.text());
fm.trigger('uistatchange');
};
fm.getUI('statusbar').prepend(size).append(sel).show();
if (fm.UA.Mobile && jQuery.fn.tooltip) {
fm.getUI('statusbar').tooltip({
classes: {
'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow'
},
tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow',
track: true
});
}
fm
.bind('cwdhasheschange', function(e) {
setstat(jQuery.map(e.data, function(h) { return fm.file(h); }));
})
.change(function(e) {
var files = e.data.changed || [],
cwdHash = fm.cwd().hash;
jQuery.each(files, function() {
if (this.hash === cwdHash) {
if (this.size) {
size.children('.elfinder-stat-size').addClass('elfinder-stat-size-recursive').html(fm.i18n('sum')+': '+fm.formatSize(this.size));
size.attr('title', size.text());
}
return false;
}
});
})
.select(function() {
setSelect(fm.selectedFiles());
})
.bind('open', function() {
setSelect([]);
})
.bind('incsearch', function(e) {
setIncsearchStat(e.data);
})
.bind('incsearchend', function() {
setIncsearchStat();
})
;
});
};