diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/index.html | 1 | ||||
-rw-r--r-- | app/js/services.js | 39 |
2 files changed, 36 insertions, 4 deletions
diff --git a/app/index.html b/app/index.html index 0404bb0..77bcb2d 100644 --- a/app/index.html +++ b/app/index.html @@ -16,7 +16,6 @@ <script src="js/services.js" ></script> <script src="js/directives.js" ></script> <script src="js/controllers.js" ></script> - <script src="js/yt_musicsearch.js" ></script> </head> <body id="body_spe" ng-app="playGraph" ng-controller="pointCtrl"> diff --git a/app/js/services.js b/app/js/services.js index d18e923..8dbd1b2 100644 --- a/app/js/services.js +++ b/app/js/services.js @@ -9,7 +9,7 @@ app.service('pathService', function() { var dy = point1.y - point2.y; return Math.sqrt(dx * dx + dy * dy); }, - computePlaylist: function(songList, line, duration) { + computePlaylistOld: function(songList, line, duration) { //compute distances from the constrain path console.log('length', line.length); @@ -29,7 +29,39 @@ app.service('pathService', function() { }); }); return selection; - } + }, + computePlaylist:function(songList, line, duration) { + //compute distances from the constrain path + + var threshold = 60; + for(var i=songList.length-1; i>0; i--){ + songList[i].selected = false; + }; + var songCopy = songList.slice(0); + songCopy.sort(function(a,b){return a.x-b.x;}); + + var selection = []; + for(var i=line.length-1; i>0; i--) { + var point = line[i]; + var min = line[i].x-threshold; + var max = line[i].x+threshold; + var j=songCopy.length-1; + while(songCopy[j].x > max && j > 0){ + j--; + } + while(songCopy[j].x > min && j > 0){ + var song = songCopy[j]; + var d = self.dist(song, point); + if (d < threshold) { + songCopy.splice(j,1); + selection.push(song); + song.selected = true; + } + j--; + }; + }; + return selection; + } }; return self; }); @@ -39,12 +71,13 @@ app.service('musicPlayer', function() { startSongWithDuration: function(id, duration) { $('#ytplayer').attr('src', 'https://www.youtube.com/embed/' + id + '?autoplay=1&modestbranding=1'); - self.musicTimer = setInterval(changeSong, duration * 1000); + self.musicTimer = setInterval(self.changeSong, duration * 1000); }, changeSong: function() { clearInterval(self.musicTimer); } }; + return self; }); |