1
0
mirror of https://github.com/keeweb/keeweb.git synced 2024-06-20 06:56:40 +02:00
keeweb/app/scripts/views/footer-view.js

95 lines
3.0 KiB
JavaScript
Raw Normal View History

2015-10-17 23:49:24 +02:00
'use strict';
var Backbone = require('backbone'),
Keys = require('../const/keys'),
KeyHandler = require('../comp/key-handler'),
2015-11-14 16:28:36 +01:00
GeneratorView = require('./generator-view'),
UpdateModel = require('../models/update-model');
2015-10-17 23:49:24 +02:00
var FooterView = Backbone.View.extend({
2015-12-16 22:50:45 +01:00
template: require('templates/footer.hbs'),
2015-10-17 23:49:24 +02:00
events: {
'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'
},
initialize: function () {
2015-10-19 23:24:32 +02:00
this.views = {};
2015-10-17 23:49:24 +02:00
KeyHandler.onKey(Keys.DOM_VK_L, this.lockWorkspace, this, KeyHandler.SHORTCUT_ACTION);
KeyHandler.onKey(Keys.DOM_VK_G, this.genPass, this, KeyHandler.SHORTCUT_ACTION);
KeyHandler.onKey(Keys.DOM_VK_O, this.openFile, this, KeyHandler.SHORTCUT_ACTION);
KeyHandler.onKey(Keys.DOM_VK_S, this.saveAll, this, KeyHandler.SHORTCUT_ACTION);
KeyHandler.onKey(Keys.DOM_VK_COMMA, this.toggleSettings, this, KeyHandler.SHORTCUT_ACTION);
2016-04-15 21:27:48 +02:00
this.listenTo(this, 'hide', this.viewHidden);
2015-10-25 10:26:59 +01:00
this.listenTo(this.model.files, 'update reset change', this.render);
this.listenTo(UpdateModel.instance, 'change:updateStatus', this.render);
2015-10-17 23:49:24 +02:00
},
render: function () {
this.renderTemplate({
2015-11-14 16:28:36 +01:00
files: this.model.files,
2015-11-21 07:49:39 +01:00
updateAvailable: ['ready', 'found'].indexOf(UpdateModel.instance.get('updateStatus')) >= 0
}, { plain: true });
2015-10-17 23:49:24 +02:00
return this;
},
2016-04-15 21:27:48 +02:00
viewHidden: function() {
if (this.views.gen) {
this.views.gen.remove();
delete this.views.gen;
}
},
2015-10-17 23:49:24 +02:00
lockWorkspace: function() {
Backbone.trigger('lock-workspace');
},
2015-10-19 23:24:32 +02:00
genPass: function(e) {
e.stopPropagation();
if (this.views.gen) {
this.views.gen.remove();
return;
}
2015-10-18 23:30:29 +02:00
var el = this.$el.find('.footer__btn-generate'),
rect = el[0].getBoundingClientRect(),
bodyRect = document.body.getBoundingClientRect(),
right = bodyRect.right - rect.right,
bottom = bodyRect.bottom - rect.top;
2016-07-17 13:30:38 +02:00
var generator = new GeneratorView({ model: { copy: true, pos: { right: right, bottom: bottom } } }).render();
generator.once('remove', () => { delete this.views.gen; });
2015-10-19 23:24:32 +02:00
this.views.gen = generator;
2015-10-17 23:49:24 +02:00
},
showFile: function(e) {
var fileId = $(e.target).closest('.footer__db-item').data('file-id');
if (fileId) {
Backbone.trigger('show-file', { fileId: fileId });
}
},
openFile: function() {
Backbone.trigger('open-file');
},
saveAll: function() {
Backbone.trigger('save-all');
},
2015-10-22 20:03:44 +02:00
toggleHelp: function() {
Backbone.trigger('toggle-settings', 'help');
},
2015-10-17 23:49:24 +02:00
toggleSettings: function() {
2015-10-22 20:03:44 +02:00
Backbone.trigger('toggle-settings', 'general');
2015-10-17 23:49:24 +02:00
}
});
module.exports = FooterView;