mirror of
https://github.com/lrsjng/h5ai.git
synced 2025-05-23 19:47:04 -04:00
Begin to move all src javascript to es6. Add search/filter ignore case option.
This commit is contained in:
parent
f37e8e7b89
commit
7ec2bdf16a
58 changed files with 3546 additions and 3420 deletions
|
@ -1,154 +1,161 @@
|
|||
modulejs.define('ext/info', ['_', '$', 'core/event', 'core/format', 'core/modernizr', 'core/resource', 'core/settings', 'core/store'], function (_, $, event, format, modernizr, resource, allsettings, store) {
|
||||
var settings = _.extend({
|
||||
enabled: false,
|
||||
show: false,
|
||||
qrcode: true,
|
||||
qrColor: '#999'
|
||||
}, allsettings.info);
|
||||
var template =
|
||||
'<div id="info">' +
|
||||
'<div class="icon"><img/></div>' +
|
||||
'<div class="block">' +
|
||||
'<div class="label"/>' +
|
||||
'<div class="time"/>' +
|
||||
'<div class="size"/>' +
|
||||
'<div class="content">' +
|
||||
'<span class="folders"/> <span class="l10n-folders"/>, ' +
|
||||
'<span class="files"/> <span class="l10n-files"/>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'<div class="qrcode"/>' +
|
||||
'</div>';
|
||||
var settingsTemplate =
|
||||
'<div class="block">' +
|
||||
'<h1 class="l10n-info">Info</h1>' +
|
||||
'<div id="view-info" class="button view">' +
|
||||
'<img src="' + resource.image('info-toggle') + '" alt="view-info"/>' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
var storekey = 'ext/info';
|
||||
var $img;
|
||||
var $label;
|
||||
var $time;
|
||||
var $size;
|
||||
var $content;
|
||||
var $folders;
|
||||
var $files;
|
||||
var $qrcode;
|
||||
var currentFolder;
|
||||
const {window: win, jQuery: jq, _: lo} = require('../win');
|
||||
const event = require('../core/event');
|
||||
const format = require('../core/format');
|
||||
const modernizr = require('../core/modernizr');
|
||||
const resource = require('../core/resource');
|
||||
const allsettings = require('../core/settings');
|
||||
const store = require('../core/store');
|
||||
|
||||
|
||||
function updateSettings() {
|
||||
if (store.get(storekey)) {
|
||||
$('#view-info').addClass('active');
|
||||
$('#info').show();
|
||||
} else {
|
||||
$('#view-info').removeClass('active');
|
||||
$('#info').hide();
|
||||
}
|
||||
const settings = lo.extend({
|
||||
enabled: false,
|
||||
show: false,
|
||||
qrcode: true,
|
||||
qrColor: '#999'
|
||||
}, allsettings.info);
|
||||
const template =
|
||||
`<div id="info">
|
||||
<div class="icon"><img/></div>
|
||||
<div class="block">
|
||||
<div class="label"/>
|
||||
<div class="time"/>
|
||||
<div class="size"/>
|
||||
<div class="content">
|
||||
<span class="folders"/> <span class="l10n-folders"/>,
|
||||
<span class="files"/> <span class="l10n-files"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="qrcode"/>
|
||||
</div>`;
|
||||
const settingsTemplate =
|
||||
`<div class="block">
|
||||
<h1 class="l10n-info">Info</h1>
|
||||
<div id="view-info" class="button view">
|
||||
<img src="${resource.image('info-toggle')}" alt="view-info"/>
|
||||
</div>
|
||||
</div>`;
|
||||
const storekey = 'ext/info';
|
||||
let $img;
|
||||
let $label;
|
||||
let $time;
|
||||
let $size;
|
||||
let $content;
|
||||
let $folders;
|
||||
let $files;
|
||||
let $qrcode;
|
||||
let currentFolder;
|
||||
|
||||
|
||||
function updateSettings() {
|
||||
if (store.get(storekey)) {
|
||||
jq('#view-info').addClass('active');
|
||||
jq('#info').show();
|
||||
} else {
|
||||
jq('#view-info').removeClass('active');
|
||||
jq('#info').hide();
|
||||
}
|
||||
}
|
||||
|
||||
function update(item) {
|
||||
let src = item.thumbRational || item.icon;
|
||||
const isThumb = Boolean(item.thumbRational);
|
||||
|
||||
if (item.isCurrentFolder() || !src) {
|
||||
src = resource.icon('folder');
|
||||
}
|
||||
|
||||
function update(item) {
|
||||
var src = item.thumbRational || item.icon;
|
||||
var isThumb = Boolean(item.thumbRational);
|
||||
|
||||
if (item.isCurrentFolder() || !src) {
|
||||
src = resource.icon('folder');
|
||||
}
|
||||
|
||||
$img.attr('src', src);
|
||||
if (isThumb) {
|
||||
$img.addClass('thumb');
|
||||
} else {
|
||||
$img.removeClass('thumb');
|
||||
}
|
||||
|
||||
$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));
|
||||
$size.show();
|
||||
} else {
|
||||
$size.hide();
|
||||
}
|
||||
|
||||
if (item.isContentFetched) {
|
||||
var stats = item.getStats();
|
||||
$folders.text(stats.folders);
|
||||
$files.text(stats.files);
|
||||
$content.show();
|
||||
} else {
|
||||
$content.hide();
|
||||
}
|
||||
|
||||
if (settings.qrcode) {
|
||||
$qrcode.empty().qrcode({
|
||||
render: modernizr.canvas ? 'canvas' : 'div',
|
||||
size: 200,
|
||||
fill: settings.qrColor,
|
||||
background: null,
|
||||
text: window.location.protocol + '//' + window.location.host + item.absHref
|
||||
});
|
||||
}
|
||||
$img.attr('src', src);
|
||||
if (isThumb) {
|
||||
$img.addClass('thumb');
|
||||
} else {
|
||||
$img.removeClass('thumb');
|
||||
}
|
||||
|
||||
function onMouseenter(item) {
|
||||
update(item);
|
||||
$label.text(item.label);
|
||||
if (lo.isNumber(item.time)) {
|
||||
$time.text(format.formatDate(item.time));
|
||||
} else {
|
||||
$time.text('.');
|
||||
}
|
||||
|
||||
function onMouseleave() {
|
||||
update(currentFolder);
|
||||
if (lo.isNumber(item.size)) {
|
||||
$size.text(format.formatSize(item.size));
|
||||
$size.show();
|
||||
} else {
|
||||
$size.hide();
|
||||
}
|
||||
|
||||
function onLocationChanged(item) {
|
||||
currentFolder = item;
|
||||
update(currentFolder);
|
||||
if (item.isContentFetched) {
|
||||
const stats = item.getStats();
|
||||
$folders.text(stats.folders);
|
||||
$files.text(stats.files);
|
||||
$content.show();
|
||||
} else {
|
||||
$content.hide();
|
||||
}
|
||||
|
||||
function init() {
|
||||
if (!settings.enabled) {
|
||||
return;
|
||||
}
|
||||
if (settings.qrcode) {
|
||||
$qrcode.empty().qrcode({
|
||||
render: modernizr.canvas ? 'canvas' : 'div',
|
||||
size: 200,
|
||||
fill: settings.qrColor,
|
||||
background: null,
|
||||
text: win.location.protocol + '//' + win.location.host + item.absHref
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var $info = $(template).appendTo('#mainrow');
|
||||
$img = $info.find('.icon img');
|
||||
$label = $info.find('.label');
|
||||
$time = $info.find('.time');
|
||||
$size = $info.find('.size');
|
||||
$content = $info.find('.content');
|
||||
$folders = $info.find('.folders');
|
||||
$files = $info.find('.files');
|
||||
$qrcode = $info.find('.qrcode');
|
||||
function onMouseenter(item) {
|
||||
update(item);
|
||||
}
|
||||
|
||||
if (!settings.qrcode) {
|
||||
$qrcode.remove();
|
||||
}
|
||||
function onMouseleave() {
|
||||
update(currentFolder);
|
||||
}
|
||||
|
||||
$(settingsTemplate)
|
||||
.appendTo('#sidebar')
|
||||
.find('#view-info')
|
||||
.on('click', function (ev) {
|
||||
store.put(storekey, !store.get(storekey));
|
||||
updateSettings();
|
||||
ev.preventDefault();
|
||||
});
|
||||
function onLocationChanged(item) {
|
||||
currentFolder = item;
|
||||
update(currentFolder);
|
||||
}
|
||||
|
||||
// ensure stored value is boolean, otherwise set default
|
||||
if (typeof store.get(storekey) !== 'boolean') {
|
||||
store.put(storekey, settings.show);
|
||||
}
|
||||
updateSettings();
|
||||
|
||||
event.sub('location.changed', onLocationChanged);
|
||||
event.sub('item.mouseenter', onMouseenter);
|
||||
event.sub('item.mouseleave', onMouseleave);
|
||||
function init() {
|
||||
if (!settings.enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
const $info = jq(template).appendTo('#mainrow');
|
||||
$img = $info.find('.icon img');
|
||||
$label = $info.find('.label');
|
||||
$time = $info.find('.time');
|
||||
$size = $info.find('.size');
|
||||
$content = $info.find('.content');
|
||||
$folders = $info.find('.folders');
|
||||
$files = $info.find('.files');
|
||||
$qrcode = $info.find('.qrcode');
|
||||
|
||||
init();
|
||||
});
|
||||
if (!settings.qrcode) {
|
||||
$qrcode.remove();
|
||||
}
|
||||
|
||||
jq(settingsTemplate)
|
||||
.appendTo('#sidebar')
|
||||
.find('#view-info')
|
||||
.on('click', ev => {
|
||||
store.put(storekey, !store.get(storekey));
|
||||
updateSettings();
|
||||
ev.preventDefault();
|
||||
});
|
||||
|
||||
// ensure stored value is boolean, otherwise set default
|
||||
if (typeof store.get(storekey) !== 'boolean') {
|
||||
store.put(storekey, settings.show);
|
||||
}
|
||||
updateSettings();
|
||||
|
||||
event.sub('location.changed', onLocationChanged);
|
||||
event.sub('item.mouseenter', onMouseenter);
|
||||
event.sub('item.mouseleave', onMouseleave);
|
||||
}
|
||||
|
||||
|
||||
init();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue