Edit
by irwan dwiyanto
JavaScript
var Word = Backbone.Model.extend({
move: function() {
this.set({y:this.get('y') + this.get('speed')});
}
});
var Words = Backbone.Collection.extend({
model:Word
});
var WordView = Backbone.View.extend({
initialize: function() {
$(this.el).css({position:'absolute'});
var string = this.model.get('string');
var letter_width = 25;
var word_width = string.length * letter_width;
if(this.model.get('x') + word_width > $(window).width()) {
this.model.set({x:$(window).width() - word_width});
}
for(var i = 0;i < string.length;i++) {
$(this.el)
.append($('<div>')
.css({
width:letter_width + 'px',
padding:'5px 2px',
'border-radius':'4px',
'background-color':'#fff',
border:'1px solid #ccc',
'text-align':'center',
float:'left'
})
.text(string.charAt(i).toUpperCase()));
}
this.listenTo(this.model, 'remove', this.remove);
this.render();
},
render:function() {
$(this.el).css({
top:this.model.get('y') + 'px',
left:this.model.get('x') + 'px'
});
var highlight = this.model.get('highlight');
$(this.el).find('div').each(function(index,element) {
if(index < highlight) {
$(element).css({'font-weight':'bolder','background-color':'#aaa',color:'#fff'});
} else {
$(element).css({'font-weight':'normal','background-color':'#fff',color:'#000'});
}
});
}
});
var TyperView = Backbone.View.extend({
initialize: function() {
var wrapper = $('<div>')
.css({
position:'fixed',
top:'0',
left:'0',
width:'100%',
height:'100%'
});
this.wrapper = wrapper;
var button_pause = $('<button>')
.text('Pause')
.attr('id','btnPause')
.addClass('form-control btn btn-default btn-sm col-md-2')
var button_start = $('<button>')
.text('Start')
.attr('id','btnStart')
.addClass('form-control btn btn-default btn-sm')
var button_resume = $('<button>')
.text('Resume')
.attr('id','btnResume')
.addClass('form-control btn...