Files
simple-bookreader/client/core/controls/controls.bt.js
Oleg Mokhov f3546ef3a5 Release
2015-06-20 14:48:34 +05:00

135 lines
3.4 KiB
JavaScript

module.exports = function (bt) {
bt.setDefaultView('controls', 'default');
bt.match('controls*', function (ctx) {
var content = [];
ctx.enableAutoInit();
var arrows = ctx.getParam('arrows') || false;
var zoom = ctx.getParam('zoom') || false;
var footnotes = ctx.getParam('footnotes') || false;
var pages = ctx.getParam('pages') || false;
ctx.setInitOption('zoom', zoom);
ctx.setInitOption('footnotes', footnotes);
ctx.setInitOption('pages', pages);
ctx.setState('hidden');
if (arrows) {
ctx.setInitOption('arrows', arrows);
content.push([
{
elem: 'arrow-left',
disabled: true
},
{
elem: 'arrow-right'
}
]);
}
if (zoom || footnotes || pages) {
content.push({
elem: 'menu',
zoom: zoom,
footnotes: footnotes,
pages: pages
});
}
ctx.setContent(content);
});
bt.match('controls*__menu', function (ctx) {
ctx.setState('state', 'closed');
ctx.setContent([
{
elem: 'trigger'
},
{
elem: 'buttons',
zoom: ctx.getParam('zoom'),
footnotes: ctx.getParam('footnotes'),
pages: ctx.getParam('pages')
}
]);
});
bt.match(['controls*__arrow-left', 'controls*__arrow-right'], function (ctx) {
if (ctx.getParam('disabled')) {
ctx.setState('disabled');
}
ctx.setContent({
elem: 'arrow-inner'
});
});
bt.match('controls*__buttons', function (ctx) {
var content = [];
var baseHeight = 42;
var items = 0;
if (ctx.getParam('zoom')) {
items += 2;
content.push({
elem: 'plus'
}, {
elem: 'minus'
});
}
if (ctx.getParam('footnotes')) {
items += 1;
content.push({
elem: 'footnotes',
footnotes: ctx.getParam('footnotes')
});
}
if (ctx.getParam('pages')) {
items += 1;
content.push({
elem: 'pages',
pages: ctx.getParam('pages')
});
}
ctx.setAttr('style', 'height: ' + baseHeight * items + 'px');
ctx.setContent(content);
});
bt.match('controls*__footnotes', function (ctx) {
ctx.setState('mode', ctx.getParam('footnotes') || 'appendix');
ctx.setContent([{
elem: 'footnotes-anchor'
}, {
elem: 'footnotes-footnote'
}
]);
});
bt.match('controls*__footnotes-anchor', function (ctx) {
ctx.setTag('span');
ctx.setContent('x');
});
bt.match('controls*__footnotes-footnote', function (ctx) {
ctx.setTag('span');
ctx.setContent('[x]');
});
bt.match('controls*__pages', function (ctx) {
ctx.setState('mode', ctx.getParam('pages') || 'auto');
ctx.setContent([{
elem: 'pages-one'
}, {
elem: 'pages-two'
}
]);
});
};