2019-09-16 20:42:33 +02:00
|
|
|
import { View } from 'framework/views/view';
|
2019-09-16 22:57:56 +02:00
|
|
|
import { Events } from 'framework/events';
|
2019-09-15 14:16:32 +02:00
|
|
|
import { KeyHandler } from 'comp/browser/key-handler';
|
|
|
|
import { Keys } from 'const/keys';
|
|
|
|
import { UpdateModel } from 'models/update-model';
|
|
|
|
import { GeneratorView } from 'views/generator-view';
|
2019-09-15 18:33:45 +02:00
|
|
|
import template from 'templates/footer.hbs';
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2019-09-15 18:33:45 +02:00
|
|
|
class FooterView extends View {
|
|
|
|
parent = '.app__footer';
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2019-09-15 18:33:45 +02:00
|
|
|
template = template;
|
|
|
|
|
|
|
|
events = {
|
2015-10-17 23:49:24 +02:00
|
|
|
'click .footer__db-item': 'showFile',
|
|
|
|
'click .footer__db-open': 'openFile',
|
2015-10-22 20:03:44 +02:00
|
|
|
'click .footer__btn-help': 'toggleHelp',
|
2015-10-17 23:49:24 +02:00
|
|
|
'click .footer__btn-settings': 'toggleSettings',
|
|
|
|
'click .footer__btn-generate': 'genPass',
|
|
|
|
'click .footer__btn-lock': 'lockWorkspace'
|
2019-09-15 18:33:45 +02:00
|
|
|
};
|
|
|
|
|
2019-09-16 17:58:44 +02:00
|
|
|
constructor(model, options) {
|
|
|
|
super(model, options);
|
2019-09-15 18:33:45 +02:00
|
|
|
|
|
|
|
this.onKey(Keys.DOM_VK_L, this.lockWorkspace, KeyHandler.SHORTCUT_ACTION, false, true);
|
|
|
|
this.onKey(Keys.DOM_VK_G, this.genPass, KeyHandler.SHORTCUT_ACTION);
|
|
|
|
this.onKey(Keys.DOM_VK_O, this.openFile, KeyHandler.SHORTCUT_ACTION);
|
|
|
|
this.onKey(Keys.DOM_VK_S, this.saveAll, KeyHandler.SHORTCUT_ACTION);
|
|
|
|
this.onKey(Keys.DOM_VK_COMMA, this.toggleSettings, KeyHandler.SHORTCUT_ACTION);
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2016-04-15 21:27:48 +02:00
|
|
|
this.listenTo(this, 'hide', this.viewHidden);
|
2019-09-17 21:39:06 +02:00
|
|
|
this.listenTo(this.model.files, 'change', this.render);
|
2019-09-16 22:57:56 +02:00
|
|
|
this.listenTo(Events, 'set-locale', this.render);
|
2019-09-17 21:56:58 +02:00
|
|
|
this.listenTo(UpdateModel, 'change:updateStatus', this.render);
|
2019-09-15 18:33:45 +02:00
|
|
|
}
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
render() {
|
2019-09-15 18:33:45 +02:00
|
|
|
super.render({
|
2019-09-20 22:20:53 +02:00
|
|
|
files: this.model.files.toJSON(),
|
2019-09-18 07:12:06 +02:00
|
|
|
updateAvailable: ['ready', 'found'].indexOf(UpdateModel.updateStatus) >= 0
|
2019-09-15 18:33:45 +02:00
|
|
|
});
|
|
|
|
}
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
viewHidden() {
|
2016-04-15 21:27:48 +02:00
|
|
|
if (this.views.gen) {
|
|
|
|
this.views.gen.remove();
|
|
|
|
delete this.views.gen;
|
|
|
|
}
|
2019-09-15 18:33:45 +02:00
|
|
|
}
|
2016-04-15 21:27:48 +02:00
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
lockWorkspace(e) {
|
2016-08-25 18:18:27 +02:00
|
|
|
if (this.model.files.hasOpenFiles()) {
|
|
|
|
e.preventDefault();
|
2019-09-16 22:57:56 +02:00
|
|
|
Events.emit('lock-workspace');
|
2016-08-25 18:18:27 +02:00
|
|
|
}
|
2019-09-15 18:33:45 +02:00
|
|
|
}
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
genPass(e) {
|
2015-10-19 23:24:32 +02:00
|
|
|
e.stopPropagation();
|
|
|
|
if (this.views.gen) {
|
|
|
|
this.views.gen.remove();
|
|
|
|
return;
|
|
|
|
}
|
2017-01-31 07:50:28 +01:00
|
|
|
const el = this.$el.find('.footer__btn-generate');
|
|
|
|
const rect = el[0].getBoundingClientRect();
|
|
|
|
const bodyRect = document.body.getBoundingClientRect();
|
|
|
|
const right = bodyRect.right - rect.right;
|
|
|
|
const bottom = bodyRect.bottom - rect.top;
|
2019-09-16 20:54:14 +02:00
|
|
|
const generator = new GeneratorView({ copy: true, pos: { right, bottom } });
|
|
|
|
generator.render();
|
2019-08-16 23:05:39 +02:00
|
|
|
generator.once('remove', () => {
|
|
|
|
delete this.views.gen;
|
|
|
|
});
|
2015-10-19 23:24:32 +02:00
|
|
|
this.views.gen = generator;
|
2019-09-15 18:33:45 +02:00
|
|
|
}
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
showFile(e) {
|
2019-08-16 23:05:39 +02:00
|
|
|
const fileId = $(e.target)
|
|
|
|
.closest('.footer__db-item')
|
|
|
|
.data('file-id');
|
2015-10-17 23:49:24 +02:00
|
|
|
if (fileId) {
|
2019-09-16 22:57:56 +02:00
|
|
|
Events.emit('show-file', { fileId });
|
2015-10-17 23:49:24 +02:00
|
|
|
}
|
2019-09-15 18:33:45 +02:00
|
|
|
}
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
openFile() {
|
2019-09-16 22:57:56 +02:00
|
|
|
Events.emit('open-file');
|
2019-09-15 18:33:45 +02:00
|
|
|
}
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
saveAll() {
|
2019-09-16 22:57:56 +02:00
|
|
|
Events.emit('save-all');
|
2019-09-15 18:33:45 +02:00
|
|
|
}
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
toggleHelp() {
|
2019-09-16 22:57:56 +02:00
|
|
|
Events.emit('toggle-settings', 'help');
|
2019-09-15 18:33:45 +02:00
|
|
|
}
|
2015-10-22 20:03:44 +02:00
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
toggleSettings() {
|
2019-09-16 22:57:56 +02:00
|
|
|
Events.emit('toggle-settings', 'general');
|
2015-10-17 23:49:24 +02:00
|
|
|
}
|
2019-09-15 18:33:45 +02:00
|
|
|
}
|
2015-10-17 23:49:24 +02:00
|
|
|
|
2019-09-15 14:16:32 +02:00
|
|
|
export { FooterView };
|