Clean some code.
This commit is contained in:
parent
8485905901
commit
22b2db8daf
9 changed files with 63 additions and 65 deletions
|
@ -1,4 +1,4 @@
|
|||
const {each, values, isFn, difference} = require('../util');
|
||||
const {each, values, difference} = require('../util');
|
||||
const {win} = require('../globals');
|
||||
const {request} = require('../server');
|
||||
const allsettings = require('./settings');
|
||||
|
@ -75,8 +75,8 @@ const getDomain = () => doc.domain;
|
|||
const getAbsHref = () => absHref;
|
||||
const getItem = () => require('../model/item').get(absHref);
|
||||
|
||||
const load = callback => {
|
||||
request({action: 'get', items: {href: absHref, what: 1}}).then(json => {
|
||||
const load = () => {
|
||||
return request({action: 'get', items: {href: absHref, what: 1}}).then(json => {
|
||||
const Item = require('../model/item');
|
||||
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');
|
||||
|
||||
load(() => {
|
||||
load().then(() => {
|
||||
const newItems = values(item.content);
|
||||
const added = difference(newItems, oldItems);
|
||||
const removed = difference(oldItems, newItems);
|
||||
|
@ -138,7 +137,7 @@ const setLocation = (newAbsHref, keepBrowserUrl) => {
|
|||
refresh();
|
||||
} else {
|
||||
notification.set('loading...');
|
||||
load(() => {
|
||||
load().then(() => {
|
||||
item.isLoaded = true;
|
||||
notification.set();
|
||||
event.pub('location.changed', item);
|
||||
|
|
|
@ -9,19 +9,18 @@ const base = require('../view/base');
|
|||
const settings = Object.assign({
|
||||
enabled: false
|
||||
}, allsettings.crumb);
|
||||
const crumbbarTpl = '<div id="crumbbar"></div>';
|
||||
const crumbTpl =
|
||||
const tplCrumbbar = '<div id="crumbbar"></div>';
|
||||
const tplCrumb =
|
||||
`<a class="crumb">
|
||||
<img class="sep" src="${resource.image('crumb')}" alt=">"/>
|
||||
<span class="label"></span>
|
||||
</a>`;
|
||||
const pageHintTpl =
|
||||
const tplPageHint =
|
||||
`<img class="hint" src="${resource.icon('folder-page')}" alt="has index page"/>`;
|
||||
let $crumbbar;
|
||||
|
||||
|
||||
const createHtml = item => {
|
||||
const $html = dom(crumbTpl);
|
||||
const $html = dom(tplCrumb);
|
||||
location.setLink($html, item);
|
||||
|
||||
$html.find('.label').text(item.label);
|
||||
|
@ -31,17 +30,18 @@ const createHtml = item => {
|
|||
}
|
||||
|
||||
if (!item.isManaged) {
|
||||
$html.app(dom(pageHintTpl));
|
||||
$html.app(dom(tplPageHint));
|
||||
}
|
||||
|
||||
item.$crumb = $html;
|
||||
item._$crumb = $html;
|
||||
$html[0]._item = item;
|
||||
|
||||
return $html;
|
||||
};
|
||||
|
||||
const onLocationChanged = item => {
|
||||
const $crumb = item.$crumb;
|
||||
const $crumb = item._$crumb;
|
||||
const $crumbbar = dom('#crumbbar');
|
||||
|
||||
if ($crumb && $crumb.parent()[0] === $crumbbar[0]) {
|
||||
$crumbbar.children().rmCls('active');
|
||||
|
@ -59,7 +59,7 @@ const init = () => {
|
|||
return;
|
||||
}
|
||||
|
||||
$crumbbar = dom(crumbbarTpl).appTo(base.$flowbar);
|
||||
dom(tplCrumbbar).appTo(base.$flowbar);
|
||||
|
||||
event.sub('location.changed', onLocationChanged);
|
||||
};
|
||||
|
|
|
@ -49,7 +49,7 @@ const onClick = () => {
|
|||
};
|
||||
|
||||
each(selectedItems, (item, idx) => {
|
||||
query['hrefs[' + idx + ']'] = item.absHref;
|
||||
query[`hrefs[${idx}]`] = item.absHref;
|
||||
});
|
||||
|
||||
server.formRequest(query);
|
||||
|
|
|
@ -70,16 +70,19 @@ const update = lang => {
|
|||
});
|
||||
};
|
||||
|
||||
const loadLanguage = (isoCode, callback) => {
|
||||
const loadLanguage = isoCode => {
|
||||
if (loaded[isoCode]) {
|
||||
callback(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 Promise.resolve(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) => {
|
||||
|
@ -102,7 +105,7 @@ const localize = (languages, isoCode, useBrowserLang) => {
|
|||
isoCode = 'en';
|
||||
}
|
||||
|
||||
loadLanguage(isoCode, update);
|
||||
loadLanguage(isoCode).then(update);
|
||||
};
|
||||
|
||||
const initLangSelector = languages => {
|
||||
|
|
|
@ -17,13 +17,12 @@ let currentIdx;
|
|||
let currentItem;
|
||||
|
||||
|
||||
const requestSample = (href, callback) => {
|
||||
const requestSample = href => {
|
||||
if (!settings.size) {
|
||||
callback(href);
|
||||
return;
|
||||
return Promise.resolve(href);
|
||||
}
|
||||
|
||||
server.request({
|
||||
return server.request({
|
||||
action: 'get',
|
||||
thumbs: [{
|
||||
type: 'img',
|
||||
|
@ -32,12 +31,12 @@ const requestSample = (href, callback) => {
|
|||
height: 0
|
||||
}]
|
||||
}).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) => {
|
||||
requestSample(item.absHref, src => {
|
||||
return requestSample(item.absHref).then(src => {
|
||||
const $img = dom('<img/>')
|
||||
.on('load', () => {
|
||||
callback(item, $img);
|
||||
|
|
|
@ -20,7 +20,7 @@ let currentIdx;
|
|||
let currentItem;
|
||||
|
||||
|
||||
const request = href => {
|
||||
const requestTextContent = href => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const xhr = new XHR();
|
||||
const callback = () => {
|
||||
|
@ -40,7 +40,7 @@ const request = href => {
|
|||
};
|
||||
|
||||
const preloadText = (item, callback) => {
|
||||
request(item.absHref)
|
||||
requestTextContent(item.absHref)
|
||||
.then(content => {
|
||||
callback(item, content);
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ const onIndicatorClick = ev => {
|
|||
const item = closestItem(ev.target);
|
||||
|
||||
if (item._treeState === 'unknown') {
|
||||
item.fetchContent(() => {
|
||||
item.fetchContent().then(() => {
|
||||
item._treeState = 'open';
|
||||
update(item); // eslint-disable-line no-use-before-define
|
||||
});
|
||||
|
@ -116,14 +116,13 @@ const update = item => {
|
|||
return $html;
|
||||
};
|
||||
|
||||
const fetchTree = (item, callback) => {
|
||||
const fetchTree = item => {
|
||||
item._treeState = 'open';
|
||||
item.fetchContent(() => {
|
||||
return item.fetchContent().then(() => {
|
||||
if (item.parent) {
|
||||
fetchTree(item.parent, callback);
|
||||
} else {
|
||||
callback(item);
|
||||
return fetchTree(item.parent);
|
||||
}
|
||||
return item;
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -138,7 +137,7 @@ const updateSettings = () => {
|
|||
};
|
||||
|
||||
const onLocationChanged = item => {
|
||||
fetchTree(item, root => {
|
||||
fetchTree(item).then(root => {
|
||||
dom('#tree').clr().app(update(root));
|
||||
updateSettings();
|
||||
});
|
||||
|
|
|
@ -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 location = require('../core/location');
|
||||
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);
|
||||
|
||||
if (!isFn(callback)) {
|
||||
callback = () => undefined;
|
||||
}
|
||||
|
||||
if (item.isContentFetched) {
|
||||
callback(item);
|
||||
resolve(item);
|
||||
} else {
|
||||
server.request({action: 'get', items: {href: item.absHref, what: 1}}).then(response => {
|
||||
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;
|
||||
},
|
||||
|
||||
fetchContent(callback) {
|
||||
return fetchContent(this.absHref, callback);
|
||||
fetchContent() {
|
||||
return fetchContent(this.absHref);
|
||||
},
|
||||
|
||||
getCrumb() {
|
||||
|
|
|
@ -5,7 +5,7 @@ const XHR = win.XMLHttpRequest;
|
|||
const request = data => {
|
||||
return new Promise(resolve => {
|
||||
const xhr = new XHR();
|
||||
const callback = () => {
|
||||
const onReadyStateChange = () => {
|
||||
if (xhr.readyState === XHR.DONE) {
|
||||
try {
|
||||
resolve(JSON.parse(xhr.responseText));
|
||||
|
@ -16,7 +16,7 @@ const request = data => {
|
|||
};
|
||||
|
||||
xhr.open('POST', '?', true);
|
||||
xhr.onreadystatechange = callback;
|
||||
xhr.onreadystatechange = onReadyStateChange;
|
||||
xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
|
||||
xhr.send(JSON.stringify(data));
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue