keeweb/app/scripts/views/generator-view.js

56 lines
1.3 KiB
JavaScript
Raw Normal View History

2015-10-18 23:30:29 +02:00
'use strict';
2015-10-19 23:24:32 +02:00
var Backbone = require('backbone'),
PasswordGenerator = require('../util/password-generator');
2015-10-18 23:30:29 +02:00
var GeneratorView = Backbone.View.extend({
el: 'body',
template: require('templates/generator.html'),
events: {
2015-10-19 23:24:32 +02:00
'click': 'click',
'mousemove .gen__length-range': 'lengthChange',
'change .gen__length-range': 'lengthChange',
'change .gen__check input[type=checkbox]': 'checkChange'
2015-10-18 23:30:29 +02:00
},
initialize: function () {
2015-10-19 23:24:32 +02:00
$('body').one('click', this.remove.bind(this));
this.gen = _.clone(this.model.genOpts);
2015-10-18 23:30:29 +02:00
},
render: function() {
2015-10-19 23:24:32 +02:00
this.renderTemplate(this.gen);
2015-10-18 23:30:29 +02:00
this.$el.css(this.model.pos);
2015-10-19 23:24:32 +02:00
this.generate();
2015-10-18 23:30:29 +02:00
},
2015-10-19 23:24:32 +02:00
click: function(e) {
2015-10-18 23:30:29 +02:00
e.stopPropagation();
2015-10-19 23:24:32 +02:00
},
lengthChange: function(e) {
var val = +e.target.value;
if (val !== this.gen.length) {
this.gen.length = val;
this.$el.find('.gen__length-range-val').html(val);
this.generate();
}
},
checkChange: function(e) {
var id = $(e.target).data('id');
if (id) {
this.gen[id] = e.target.checked;
}
this.generate();
},
generate: function() {
this.$el.find('.gen__result').text(PasswordGenerator.generate(this.gen));
2015-10-18 23:30:29 +02:00
}
});
module.exports = GeneratorView;