diff --git a/app/index.html b/app/index.html index dc5add6f..8c5b8216 100644 --- a/app/index.html +++ b/app/index.html @@ -115,6 +115,7 @@ + diff --git a/app/js/player/directives/track.js b/app/js/player/directives/track.js index dd2ddde1..9787afbc 100644 --- a/app/js/player/directives/track.js +++ b/app/js/player/directives/track.js @@ -6,6 +6,7 @@ * @author SOON_ */ angular.module("FM.player.trackDirective", [ + "FM.player.removeLeadingZeros", "FM.api.PlayerQueueResource", "ui.bootstrap.popover", "template/popover/popover-template.html", diff --git a/app/js/player/filter/removeLeadingZeros.js b/app/js/player/filter/removeLeadingZeros.js new file mode 100644 index 00000000..18094184 --- /dev/null +++ b/app/js/player/filter/removeLeadingZeros.js @@ -0,0 +1,37 @@ +"use strict"; +/** + * Removes leading 0's from time but leaves + * minutes and seconds intacted + * @module FM.player.removeLeadingZeros + * @author SOON_ + */ +angular.module("FM.player.removeLeadingZeros", [ + +]) +/** + * @example + * {{ time | date: "H:mm:ss" | removeLeadingZeros }} + * @class removeLeadingZeros + */ +.filter("removeLeadingZeros", [ + function (){ + return function (input) { + + var s = input; + + if ( s && s.split ){ + var arr = s.split(":"); + + arr.map(function (currentValue, index, arr){ + if ((index < arr.length - 2) && (parseInt(currentValue) === 0)){ + arr.splice(index, 1); + } + }); + + s = arr.join(":"); + } + + return s; + }; + } +]); diff --git a/app/js/player/player.js b/app/js/player/player.js index bae17d41..d0c5d010 100644 --- a/app/js/player/player.js +++ b/app/js/player/player.js @@ -12,5 +12,6 @@ angular.module("FM.player", [ "FM.player.PlayerCtrl", "FM.player.trackDirective", "FM.player.sliderDirective", - "FM.player.TrackTimer" + "FM.player.TrackTimer", + "FM.player.removeLeadingZeros" ]); diff --git a/app/js/playlist/controllers/PlaylistCtrl.js b/app/js/playlist/controllers/PlaylistCtrl.js index 9f4716cb..bae72887 100644 --- a/app/js/playlist/controllers/PlaylistCtrl.js +++ b/app/js/playlist/controllers/PlaylistCtrl.js @@ -12,6 +12,7 @@ angular.module("FM.playlist.PlaylistCtrl", [ "FM.api.UsersResource", "FM.api.PlayerQueueResource", "FM.api.PaginationInterceptor", + "FM.player.removeLeadingZeros", "ngRoute", ]) /** diff --git a/app/partials/playlist.html b/app/partials/playlist.html index 22eecf42..1d75cd54 100644 --- a/app/partials/playlist.html +++ b/app/partials/playlist.html @@ -5,7 +5,7 @@

Coming up:

-

{{ meta.total }} tracks in {{ meta.play_time | date: "H:mm:ss" }}

+

{{ meta.total }} tracks in {{ meta.play_time | date: "H:mm:ss" | removeLeadingZeros }}

diff --git a/app/partials/track.html b/app/partials/track.html index b93a9d1a..0ec709b1 100644 --- a/app/partials/track.html +++ b/app/partials/track.html @@ -41,5 +41,5 @@
-

{{ timer.elapsedTime | date: "m:ss" }} / {{ track.duration | date: "m:ss" }}

+

{{ timer.elapsedTime | date: "H:mm:ss" | removeLeadingZeros }} / {{ track.duration | date: "H:mm:ss" | removeLeadingZeros }}

diff --git a/scripts.json b/scripts.json index 2960206d..d9764b0d 100644 --- a/scripts.json +++ b/scripts.json @@ -48,6 +48,7 @@ "./app/js/player/directives/track.js", "./app/js/player/directives/slider.js", "./app/js/player/services/TrackTimer.js", + "./app/js/player/filter/removeLeadingZeros.js", "./app/js/playlist/playlist.js", "./app/js/playlist/controllers/PlaylistCtrl.js", diff --git a/tests/unit/player/filters/removeLeadingZeros.js b/tests/unit/player/filters/removeLeadingZeros.js new file mode 100644 index 00000000..9e96346e --- /dev/null +++ b/tests/unit/player/filters/removeLeadingZeros.js @@ -0,0 +1,40 @@ +"use strict"; + +describe("FM.player.removeLeadingZeros", function() { + var $scope, filter; + + beforeEach(module("FM.player.removeLeadingZeros")); + + beforeEach(inject(function ($rootScope, $filter, $injector) { + $scope = $rootScope.$new(); + filter = $filter("removeLeadingZeros"); + + })); + + it("should filter times", function(){ + var result = filter("0:03:46"); + expect(result).toEqual("03:46"); + + var result = filter("0:03:00"); + expect(result).toEqual("03:00"); + + var result = filter("1:03:46"); + expect(result).toEqual("1:03:46"); + + var result = filter("1:00:00"); + expect(result).toEqual("1:00:00"); + }); + + it("should NOT filter times", function(){ + var result = filter("3:46"); + expect(result).toEqual("3:46"); + + var result = filter("0:46"); + expect(result).toEqual("0:46"); + + var result = filter(1); + expect(result).toEqual(1); + }); + + +});