modulejs.define('ext/info', ['_', '$', 'modernizr', 'core/settings', 'core/resource', 'core/store', 'core/event', 'core/format'], function (_, $, modernizr, allsettings, resource, store, event, format) { var settings = _.extend({ enabled: false }, allsettings.info); var template = '
' + '
' + '
' + '
' + '
' + '
'; var settingsTemplate = '
' + '

Info

' + '
' + 'view-info' + '
' + '
'; var sepTemplate = ''; var storekey = 'ext/info'; var $label, $time, $size, $qrcode; var currentFolder; // // function updateSettings() { if (store.get(storekey)) { $('#view-info').addClass('active'); $('#info').show(); } else { $('#view-info').removeClass('active'); $('#info').hide(); } } function update(item) { $label.text(item.label); if (_.isNumber(item.time)) { $time.text(format.formatDate(item.time)); } else { $time.text('.'); } if (_.isNumber(item.size)) { $size.text(format.formatSize(item.size)); } else { $size.text('.'); } if (item.isFolder()) { var stats = item.getStats(); $size.append(' - ' + stats.folders + ' - ' + stats.files); } $qrcode.empty().qrcode({ render: modernizr.canvas ? 'canvas' : 'div', size: 150, color: '#333', background: null, radius: 0.3, text: window.location.protocol + '//' + window.location.host + item.absHref }); } function onMouseenter(item) { if (item.isCurrentParentFolder()) { return; } update(item); } function onMouseleave(item) { update(currentFolder); } function onLocationChanged(item) { currentFolder = item; update(currentFolder); } function init() { if (!settings.enabled) { return; } var $info = $(template).appendTo('#main-row'); $label = $info.find('.label'); $time = $info.find('.time'); $size = $info.find('.size'); $qrcode = $info.find('.qrcode'); $(settingsTemplate) .appendTo('#settings') .find('#view-info') .on('click', function (ev) { store.put(storekey, !store.get(storekey)); updateSettings(); ev.preventDefault(); }); // ensure stored value is boolean, default to true store.put(storekey, store.get(storekey) !== false); updateSettings(); event.sub('location.changed', onLocationChanged); event.sub('item.mouseenter', onMouseenter); event.sub('item.mouseleave', onMouseleave); } init(); });