1
0
mirror of https://github.com/lrsjng/h5ai.git synced 2025-08-14 09:54:21 +02:00

Update text preview.

This commit is contained in:
Lars Jung
2015-05-17 00:16:31 +02:00
parent 04d9296733
commit 09fa3acc4d

View File

@@ -6,38 +6,38 @@ modulejs.define('ext/preview-txt', ['_', '$', 'marked', 'prism', 'core/event', '
}, allsettings['preview-txt']); }, allsettings['preview-txt']);
var templateText = '<pre id="pv-txt-text" class="highlighted"/>'; var templateText = '<pre id="pv-txt-text" class="highlighted"/>';
var templateMarkdown = '<div id="pv-txt-text" class="markdown"/>'; var templateMarkdown = '<div id="pv-txt-text" class="markdown"/>';
var spinnerThreshold = 200;
var spinnerTimeoutId;
var currentItems;
var currentIdx;
var currentItem;
function preloadText(absHref, callback) { function preloadText(item, callback) {
$.ajax({ $.ajax({
url: absHref, url: item.absHref,
dataType: 'text' dataType: 'text'
}) })
.done(function (content) { .done(function (content) {
callback(content); // callback(item, content);
// setTimeout(function () { callback(content); }, 1000); // for testing
// for testing
setTimeout(function () { callback(item, content); }, 1000);
}) })
.fail(function (jqXHR, textStatus) { .fail(function (jqXHR, textStatus) {
callback('[ajax error] ' + textStatus); callback(item, '[ajax error] ' + textStatus);
}); });
} }
function onEnter(items, idx) {
var currentItems = items;
var currentIdx = idx;
var currentItem = items[idx];
function onAdjustSize() { function onAdjustSize() {
var $content = $('#pv-content'); var $content = $('#pv-content');
var $text = $('#pv-txt-text'); var $text = $('#pv-txt-text');
if ($text.length) { if ($text.length) {
$text.height($content.height() - 16); $text.height($content.height() - 16);
} }
} }
@@ -47,14 +47,29 @@ modulejs.define('ext/preview-txt', ['_', '$', 'marked', 'prism', 'core/event', '
currentIdx = (currentIdx + rel + currentItems.length) % currentItems.length; currentIdx = (currentIdx + rel + currentItems.length) % currentItems.length;
currentItem = currentItems[currentIdx]; currentItem = currentItems[currentIdx];
var spinnerTimeout = setTimeout(function () { preview.showSpinner(true); }, 200); preview.setLabels([
currentItem.label,
String(currentItem.size) + ' bytes'
]);
preview.setIndex(currentIdx + 1, currentItems.length);
preview.setRawLink(currentItem.absHref);
preloadText(currentItem.absHref, function (textContent) { $('#pv-content').hide();
if (preview.isSpinnerVisible()) {
preview.showSpinner(true, currentItem.icon);
} else {
clearTimeout(spinnerTimeoutId);
spinnerTimeoutId = setTimeout(function () {
clearTimeout(spinnerTimeout); preview.showSpinner(true, currentItem.icon);
preview.showSpinner(false); }, spinnerThreshold);
}
$('#pv-content').fadeOut(100, function () { preloadText(currentItem, function (item, textContent) {
if (item !== currentItem) {
return;
}
var type = settings.types[currentItem.type]; var type = settings.types[currentItem.type];
var $text; var $text;
@@ -77,19 +92,22 @@ modulejs.define('ext/preview-txt', ['_', '$', 'marked', 'prism', 'core/event', '
setTimeout(function () { $code.empty().html(prism.highlight(textContent, prism.languages[type])); }, 300); setTimeout(function () { $code.empty().html(prism.highlight(textContent, prism.languages[type])); }, 300);
} }
} }
$('#pv-content').empty().append($text).fadeIn(200);
onAdjustSize();
preview.setIndex(currentIdx + 1, currentItems.length); clearTimeout(spinnerTimeoutId);
preview.setLabels([ preview.showSpinner(false);
currentItem.label, $('#pv-content')
String(currentItem.size) + ' bytes' .empty()
]); .append($text)
preview.setRawLink(currentItem.absHref); .show();
}); onAdjustSize();
}); });
} }
function onEnter(items, idx) {
currentItems = items;
currentIdx = idx;
currentItem = items[idx];
onIdxChange(0); onIdxChange(0);
preview.setOnIndexChange(onIdxChange); preview.setOnIndexChange(onIdxChange);
preview.setOnAdjustSize(onAdjustSize); preview.setOnAdjustSize(onAdjustSize);