Download:
child 8:ced42ba2cb14
parent 6:7cb2c97ca45c
7:e9059aa74ce2
Anton Shestakov <av6@dwimlabs.net>, Wed, 12 Oct 2016 12:43:57 +0800
ui: wire up random/shuffle switch

1 файлов изменено, 24 вставок(+), 11 удалений(-) [+]
ui.js file | annotate | diff | comparison | revisions
--- a/ui.js Wed Oct 12 12:10:03 2016 +0800
+++ b/ui.js Wed Oct 12 12:43:57 2016 +0800
@@ -57,32 +57,45 @@
initialize: function() {
this.rivet = rivets.bind(this.el, {player: this.model, front: this});
this.listenTo(this.model, 'ended', this.advance);
+ this.listenTo(this.model, 'change:random', this.makeOrder);
+ this.listenTo(this.model.tracks, 'reset', this.makeOrder);
},
remove: function() {
this.rivet.unbind();
Backbone.View.prototype.remove.apply(this);
},
advance: function() {
- this.fastForward(null, {player: this.model});
+ this.fastForward(null, {player: this.model, front: this});
+ },
+ makeOrder: function() {
+ if (this.model.get('random')) {
+ var trackNumber = this.model.get('track').get('id') || 0;
+ var shuffled = _.shuffle(_.range(this.model.tracks.length));
+ this.order = [trackNumber].concat(_(shuffled).without(trackNumber));
+ } else {
+ this.order = _.range(this.model.tracks.length);
+ }
},
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;
+ var trackNumber = context.player.get('track').get('id') || 0;
+ var oi = context.front.order.indexOf(trackNumber) - 1;
+ if (oi < 0 && context.player.get('repeat')) {
+ oi = context.player.tracks.length - 1;
}
- if (trackNumber >= 0 && trackNumber < context.player.tracks.length) {
- context.player.startTrack(trackNumber);
+ if (oi >= 0 && oi < context.player.tracks.length) {
+ context.player.startTrack(context.front.order[oi]);
context.player.play();
}
},
fastForward: function(event, context) {
- var trackNumber = (context.player.get('track').get('id') || 0) + 1;
- if (trackNumber >= context.player.tracks.length && context.player.get('repeat')) {
- trackNumber = 0;
+ var trackNumber = context.player.get('track').get('id') || 0;
+ var oi = context.front.order.indexOf(trackNumber) + 1;
+ if (oi >= context.player.tracks.length && context.player.get('repeat')) {
+ oi = 0;
}
- if (trackNumber >= 0 && trackNumber < context.player.tracks.length) {
- context.player.startTrack(trackNumber);
+ if (oi >= 0 && oi < context.player.tracks.length) {
+ context.player.startTrack(context.front.order[oi]);
context.player.play();
}
},