Anton Shestakov <av6@dwimlabs.net>, Tue, 11 Oct 2016 13:25:59 +0800
index: set window title on track change
ui.js
Permissions: -rw-r--r--
observe: function(obj, keypath, callback) { obj.on('change:' + keypath, callback); unobserve: function(obj, keypath, callback) { obj.off('change:' + keypath, callback); get: function(obj, keypath) { set: function(obj, keypath, value) { rivets.formatters.time = function(ms) { var s = Math.round(ms / 1000); var m = Math.floor(s / 60); rivets.formatters.percent = function(value, total) { var ratio = value / total; if (isNaN(ratio) || !isFinite(ratio)) { return Math.min(ratio, 1.0) * 100 + '%'; rivets.formatters.is = function(a, b) { rivets.binders.width = function(el, value) { var Track = Backbone.Model.extend({ var Tracks = Backbone.Collection.extend({ var FrontView = Backbone.View.extend({ this.rivet = rivets.bind(this.el, {player: this.model, front: this}); this.listenTo(this.model, 'ended', this.advance); Backbone.View.prototype.remove.apply(this); this.fastForward(null, {player: this.model}); fastBackward: function(event, context) { var trackNumber = (context.player.get('track').get('id') || 0) - 1; if (trackNumber < 0 && context.player.get('repeat')) { trackNumber = context.player.tracks.length - 1; if (trackNumber >= 0 && trackNumber < context.player.tracks.length) { context.player.startTrack(trackNumber); fastForward: function(event, context) { var trackNumber = (context.player.get('track').get('id') || 0) + 1; if (trackNumber >= context.player.tracks.length && context.player.get('repeat')) { if (trackNumber >= 0 && trackNumber < context.player.tracks.length) { context.player.startTrack(trackNumber); play: function(event, context) { pause: function(event, context) { stop: function(event, context) { toggleAutoplay: function(event, context) { context.player.set('autoplay', !context.player.get('autoplay')); toggleRepeat: function(event, context) { context.player.set('repeat', !context.player.get('repeat')); toggleRandom: function(event, context) { context.player.set('random', !context.player.get('random')); var TrackView = Backbone.View.extend({ templateEl: $($.trim($('#track-template').html())), var $el = this.templateEl.clone(); this.rivet = rivets.bind(this.el, {track: this.model, view: this}); Backbone.View.prototype.remove.apply(this); play: function(event, context) { window.player.startTrack(context.track.get('id')); var TrackListView = Backbone.View.extend({ this.listenTo(this.collection, 'reset', this.render); render: function(collection, options) { _(options.previousModels).each(function(model) { addOne: function(track) { track.view = new TrackView({model: track}); this.$el.append(track.view.el); this.collection.each(this.addOne, this);