Clean some code.

This commit is contained in:
Lars Jung 2016-07-02 00:38:52 +02:00
parent 8485905901
commit 22b2db8daf
9 changed files with 63 additions and 65 deletions

View file

@ -1,4 +1,4 @@
const {each, values, isFn, difference} = require('../util'); const {each, values, difference} = require('../util');
const {win} = require('../globals'); const {win} = require('../globals');
const {request} = require('../server'); const {request} = require('../server');
const allsettings = require('./settings'); const allsettings = require('./settings');
@ -75,8 +75,8 @@ const getDomain = () => doc.domain;
const getAbsHref = () => absHref; const getAbsHref = () => absHref;
const getItem = () => require('../model/item').get(absHref); const getItem = () => require('../model/item').get(absHref);
const load = callback => { const load = () => {
request({action: 'get', items: {href: absHref, what: 1}}).then(json => { return request({action: 'get', items: {href: absHref, what: 1}}).then(json => {
const Item = require('../model/item'); const Item = require('../model/item');
const item = Item.get(absHref); const item = Item.get(absHref);
@ -94,9 +94,8 @@ const load = callback => {
} }
}); });
} }
if (isFn(callback)) {
callback(item); return item;
}
}); });
}; };
@ -106,7 +105,7 @@ const refresh = () => {
event.pub('location.beforeRefresh'); event.pub('location.beforeRefresh');
load(() => { load().then(() => {
const newItems = values(item.content); const newItems = values(item.content);
const added = difference(newItems, oldItems); const added = difference(newItems, oldItems);
const removed = difference(oldItems, newItems); const removed = difference(oldItems, newItems);
@ -138,7 +137,7 @@ const setLocation = (newAbsHref, keepBrowserUrl) => {
refresh(); refresh();
} else { } else {
notification.set('loading...'); notification.set('loading...');
load(() => { load().then(() => {
item.isLoaded = true; item.isLoaded = true;
notification.set(); notification.set();
event.pub('location.changed', item); event.pub('location.changed', item);

View file

@ -9,19 +9,18 @@ const base = require('../view/base');
const settings = Object.assign({ const settings = Object.assign({
enabled: false enabled: false
}, allsettings.crumb); }, allsettings.crumb);
const crumbbarTpl = '<div id="crumbbar"></div>'; const tplCrumbbar = '<div id="crumbbar"></div>';
const crumbTpl = const tplCrumb =
`<a class="crumb"> `<a class="crumb">
<img class="sep" src="${resource.image('crumb')}" alt=">"/> <img class="sep" src="${resource.image('crumb')}" alt=">"/>
<span class="label"></span> <span class="label"></span>
</a>`; </a>`;
const pageHintTpl = const tplPageHint =
`<img class="hint" src="${resource.icon('folder-page')}" alt="has index page"/>`; `<img class="hint" src="${resource.icon('folder-page')}" alt="has index page"/>`;
let $crumbbar;
const createHtml = item => { const createHtml = item => {
const $html = dom(crumbTpl); const $html = dom(tplCrumb);
location.setLink($html, item); location.setLink($html, item);
$html.find('.label').text(item.label); $html.find('.label').text(item.label);
@ -31,17 +30,18 @@ const createHtml = item => {
} }
if (!item.isManaged) { if (!item.isManaged) {
$html.app(dom(pageHintTpl)); $html.app(dom(tplPageHint));
} }
item.$crumb = $html; item._$crumb = $html;
$html[0]._item = item; $html[0]._item = item;
return $html; return $html;
}; };
const onLocationChanged = item => { const onLocationChanged = item => {
const $crumb = item.$crumb; const $crumb = item._$crumb;
const $crumbbar = dom('#crumbbar');
if ($crumb && $crumb.parent()[0] === $crumbbar[0]) { if ($crumb && $crumb.parent()[0] === $crumbbar[0]) {
$crumbbar.children().rmCls('active'); $crumbbar.children().rmCls('active');
@ -59,7 +59,7 @@ const init = () => {
return; return;
} }
$crumbbar = dom(crumbbarTpl).appTo(base.$flowbar); dom(tplCrumbbar).appTo(base.$flowbar);
event.sub('location.changed', onLocationChanged); event.sub('location.changed', onLocationChanged);
}; };

View file

@ -49,7 +49,7 @@ const onClick = () => {
}; };
each(selectedItems, (item, idx) => { each(selectedItems, (item, idx) => {
query['hrefs[' + idx + ']'] = item.absHref; query[`hrefs[${idx}]`] = item.absHref;
}); });
server.formRequest(query); server.formRequest(query);

View file

@ -70,16 +70,19 @@ const update = lang => {
}); });
}; };
const loadLanguage = (isoCode, callback) => { const loadLanguage = isoCode => {
if (loaded[isoCode]) { if (loaded[isoCode]) {
callback(loaded[isoCode]); return Promise.resolve(loaded[isoCode]);
} else {
server.request({action: 'get', l10n: [isoCode]}).then(response => {
const json = response.l10n && response.l10n[isoCode] ? response.l10n[isoCode] : {};
loaded[isoCode] = Object.assign({}, defaultTranslations, json, {isoCode});
callback(loaded[isoCode]);
});
} }
return server.request({action: 'get', l10n: [isoCode]}).then(response => {
loaded[isoCode] = Object.assign({},
defaultTranslations,
response.l10n && response.l10n[isoCode],
{isoCode}
);
return loaded[isoCode];
});
}; };
const localize = (languages, isoCode, useBrowserLang) => { const localize = (languages, isoCode, useBrowserLang) => {
@ -102,7 +105,7 @@ const localize = (languages, isoCode, useBrowserLang) => {
isoCode = 'en'; isoCode = 'en';
} }
loadLanguage(isoCode, update); loadLanguage(isoCode).then(update);
}; };
const initLangSelector = languages => { const initLangSelector = languages => {

View file

@ -17,13 +17,12 @@ let currentIdx;
let currentItem; let currentItem;
const requestSample = (href, callback) => { const requestSample = href => {
if (!settings.size) { if (!settings.size) {
callback(href); return Promise.resolve(href);
return;
} }
server.request({ return server.request({
action: 'get', action: 'get',
thumbs: [{ thumbs: [{
type: 'img', type: 'img',
@ -32,12 +31,12 @@ const requestSample = (href, callback) => {
height: 0 height: 0
}] }]
}).then(json => { }).then(json => {
callback(json && json.thumbs && json.thumbs[0] ? json.thumbs[0] : null); return json && json.thumbs && json.thumbs[0] ? json.thumbs[0] : null;
}); });
}; };
const preloadImage = (item, callback) => { const preloadImage = (item, callback) => {
requestSample(item.absHref, src => { return requestSample(item.absHref).then(src => {
const $img = dom('<img/>') const $img = dom('<img/>')
.on('load', () => { .on('load', () => {
callback(item, $img); callback(item, $img);

View file

@ -20,7 +20,7 @@ let currentIdx;
let currentItem; let currentItem;
const request = href => { const requestTextContent = href => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const xhr = new XHR(); const xhr = new XHR();
const callback = () => { const callback = () => {
@ -40,7 +40,7 @@ const request = href => {
}; };
const preloadText = (item, callback) => { const preloadText = (item, callback) => {
request(item.absHref) requestTextContent(item.absHref)
.then(content => { .then(content => {
callback(item, content); callback(item, content);

View file

@ -44,7 +44,7 @@ const onIndicatorClick = ev => {
const item = closestItem(ev.target); const item = closestItem(ev.target);
if (item._treeState === 'unknown') { if (item._treeState === 'unknown') {
item.fetchContent(() => { item.fetchContent().then(() => {
item._treeState = 'open'; item._treeState = 'open';
update(item); // eslint-disable-line no-use-before-define update(item); // eslint-disable-line no-use-before-define
}); });
@ -116,14 +116,13 @@ const update = item => {
return $html; return $html;
}; };
const fetchTree = (item, callback) => { const fetchTree = item => {
item._treeState = 'open'; item._treeState = 'open';
item.fetchContent(() => { return item.fetchContent().then(() => {
if (item.parent) { if (item.parent) {
fetchTree(item.parent, callback); return fetchTree(item.parent);
} else {
callback(item);
} }
return item;
}); });
}; };
@ -138,7 +137,7 @@ const updateSettings = () => {
}; };
const onLocationChanged = item => { const onLocationChanged = item => {
fetchTree(item, root => { fetchTree(item).then(root => {
dom('#tree').clr().app(update(root)); dom('#tree').clr().app(update(root));
updateSettings(); updateSettings();
}); });

View file

@ -1,4 +1,4 @@
const {keys, each, filter, sortBy, isFn, isStr, isNum} = require('../util'); const {keys, each, filter, sortBy, isStr, isNum} = require('../util');
const server = require('../server'); const server = require('../server');
const location = require('../core/location'); const location = require('../core/location');
const settings = require('../core/settings'); const settings = require('../core/settings');
@ -90,15 +90,12 @@ const removeItem = absHref => {
} }
}; };
const fetchContent = (absHref, callback) => { const fetchContent = absHref => {
return new Promise(resolve => {
const item = getItem(absHref); const item = getItem(absHref);
if (!isFn(callback)) {
callback = () => undefined;
}
if (item.isContentFetched) { if (item.isContentFetched) {
callback(item); resolve(item);
} else { } else {
server.request({action: 'get', items: {href: item.absHref, what: 1}}).then(response => { server.request({action: 'get', items: {href: item.absHref, what: 1}}).then(response => {
if (response.items) { if (response.items) {
@ -107,9 +104,10 @@ const fetchContent = (absHref, callback) => {
}); });
} }
callback(item); resolve(item);
}); });
} }
});
}; };
@ -172,8 +170,8 @@ Item.prototype = {
return keys(this.content).length === 0; return keys(this.content).length === 0;
}, },
fetchContent(callback) { fetchContent() {
return fetchContent(this.absHref, callback); return fetchContent(this.absHref);
}, },
getCrumb() { getCrumb() {

View file

@ -5,7 +5,7 @@ const XHR = win.XMLHttpRequest;
const request = data => { const request = data => {
return new Promise(resolve => { return new Promise(resolve => {
const xhr = new XHR(); const xhr = new XHR();
const callback = () => { const onReadyStateChange = () => {
if (xhr.readyState === XHR.DONE) { if (xhr.readyState === XHR.DONE) {
try { try {
resolve(JSON.parse(xhr.responseText)); resolve(JSON.parse(xhr.responseText));
@ -16,7 +16,7 @@ const request = data => {
}; };
xhr.open('POST', '?', true); xhr.open('POST', '?', true);
xhr.onreadystatechange = callback; xhr.onreadystatechange = onReadyStateChange;
xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8'); xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
xhr.send(JSON.stringify(data)); xhr.send(JSON.stringify(data));
}); });