-
Notifications
You must be signed in to change notification settings - Fork 43
/
Views.Tracks.js
66 lines (56 loc) · 1.92 KB
/
Views.Tracks.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
* View for a collection of tracks
*
* @file Views.Tracks.js
* @author Jan Myler <honza.myler[at]gmail.com>
* @copyright Copyright 2012, Jan Myler (http://janmyler.com)
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*/
define([
'jquery',
'underscore',
'backbone',
'Audiee/Views.Track'
], function($, _, Backbone, TrackV) {
return Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render', 'addAll', 'addOne', 'zoomChange', 'scrollChange');
this.collection.bind('add', this.addOne);
this.bind('Audiee:scroll', this.scrollChange);
this.bind('Audiee:zoomChange', this.zoomChange);
},
render: function() {
this.addAll();
$(this.el).append('<div id="playback-position">');
return this;
},
addAll: function() {
this.collection.each(this.addOne);
},
addOne: function(model) {
var track = new TrackV({model: model});
$(this.el).append(track.render().el);
},
scrollChange: function() {
var scrollLeft = Audiee.Views.Editor.scrollLeftOffset();
$('div.track-info').css('left', scrollLeft + 'px');
this.collection.each(function(model) {
model.clips.trigger('Audiee:scroll');
});
},
zoomChange: function() {
this.collection.each(function(model) {
model.trigger('Audiee:zoomChange');
model.clips.trigger('Audiee:zoomChange');
});
},
clearDisplays: function() {
this.collection.each(function(model) {
model.trigger('Audiee:clearDisplay');
});
}
});
});