Commit graph

29 commits

Author SHA1 Message Date
Hyzual
c478f0116f Replaced utils setTitle and scrollTitle by a dedicated service
- Adds a Page service that will control the page's title from anywhere.
- Adds a setTitleSong method. It takes a song as parameter, that way
  player-directive isn't responsible for correctly formatting the title. It also scrolls the title if the global setting is true
- Removes the title-related methods from utils-service
2015-01-17 19:15:09 +01:00
Hyzual
42830bbdbf Extracts everything related to localStorage in common/persistence-service.js
That way, whenever we want to use something else (like a JSON file, or a DB) we will only have to change persistence-service.js
- Migrated the unit tests there too.
- Added replay in case of jPlayer error.
2015-01-17 19:15:07 +01:00
Hyzual
c787c468b9 Further refactoring of the queue controller and view
- Removes queue-related functions from the main controller. They are now handled by queue.js, which delegates them to player-service.js
- Fixes problem in scrobbling. A song is no longer scrobbled every time it is paused. A song will not be scrobbled upon loading, only while it is playing.
- Moves the entire html for the sidebar queue to queue.html. It replaces a template that was no longer used.
- Most queue-related functions in player return player itself to make them chainable just like in jQuery, e.g. : player.shuffleQueue().playFirstSong();
2015-01-17 19:14:25 +01:00
Hyzual
83869b7808 Adds angular-locker dependency.
- It makes it easier to use localStorage and sessionStorage "the angular way". It also does all the error handling so we don't need to.
- Adds back the automatic saving of the current track's position and playing queue in localStorage. It's fully unit tested.
- Adds back the notifications. Every time we change songs (if the setting is true), it displays a notification. Clicking on it goes to the next song, just like before.
- Bumps up the versions to the actual value on the various json files.
2015-01-17 19:13:43 +01:00
Hyzual
2e97e25f25 Adds back AutoPlay, Loop Queue and Repeat support.
- AutoPlay still has a problem with scope apply. Since it's asynchronous, the directive needs to know when it's finisehd to use scope apply... That means more subsonic refactoring.
- Adds unit tests for Repeat song and Loop Queue
- Adds back a special function in the player Service to manage the end of a song.
2015-01-17 19:13:42 +01:00
Hyzual
7074e9abc8 Adds more methods to control the queue in the player service.
- Adds : empty queue, shuffle queue, add one song to queue, remove one song from queue, restart the current song
- Removes the "playEnded" method : we now use correctly scope.$apply() in the directive after calling nextTrack(). The next song is correctly called after the end of the current one.
- Starts replacing the old rootScope functions with calls to the player service.
2015-01-17 19:13:42 +01:00
Hyzual
19661f463b Fixes the communication between the player directive and the player service
- Adds a "playEnded()" function specifically for jplayer to call when the currently playing song ends. It uses $rootScope.$apply() to notify the directive that the song has changed.
- Shows the player controls' css.
- Marks the tests relating the "playing" status of the song as pending.
- Further uses the Player service in the subsonic view
2015-01-17 19:13:41 +01:00
Hyzual
88b1e6a6e6 Rewrites the entire player component.
Not finished ! This is still work in progress and fairly broken in this commit.
The jquery jplayer is now wrapped in an angular directive.
The queue is no longer being managed in rootScope but is a part of the player service. It can be accessed like before and emptied / filled.
The player controller also uses the player service now.
2015-01-17 19:13:40 +01:00
Hyzual
226a768987 Renamed all controlles from 'Ctrl' to 'Controller' to better follow angular best practices. 2015-01-17 19:13:40 +01:00
Hyzual
e5846e30f9 Removes the player functions from the rootScope.
However, saving track's position is broken.
Some are still there because of problems I don't know how to solve, e.g. circular dependency between notifications and player.
Uses the queue controller for the sidebar queue.
Moves loadTrackPosition to the main controller.
2015-01-17 19:12:56 +01:00
Hyzual
608d4f98e2 Extracts the player into its own files.
Creates a player directive, controller and service.
Moves the HTML from inside index.html to its own player.html file.

Conflicts:
	app/index.html
2015-01-17 19:12:55 +01:00
Trevor Squillario
c7b4ad4de0 4.3.1 jplayer update, chrome android debugging 2014-12-20 23:26:33 -05:00
Trevor Squillario
dea8b9ffd9 5.3 release 2014-12-20 17:18:56 -05:00
Trevor Squillario
fab90cbabd 4.2.5 release 2014-12-11 18:23:46 -05:00
Trevor Squillario
dbb5d1cb9d queue opacity, changed button to Pin Queue 2014-12-08 20:57:33 -05:00
Trevor Squillario
fa7b4e076a 4.2.5 meta viewport added for mobile 2014-12-06 23:24:11 -05:00
Trevor Squillario
d725d93f1b link update 2014-12-06 20:34:23 -05:00
Trevor Squillario
e3fc948a77 lots of nothing 2014-12-06 20:26:19 -05:00
Trevor Squillario
a0e8775b12 responsive layout design changes 2014-11-23 16:13:38 -05:00
Trevor Squillario
acf49e112e started mobile improvements 2014-11-22 20:28:12 -05:00
Trevor Squillario
1259075797 Merge remote-tracking branch 'brb-at/sidebar' into release-4.2.4
Conflicts:
	app/common/main-controller.js
2014-11-21 19:21:26 -05:00
Trevor Squillario
b2199429f5 4.2.3 cover art preview refactoring 2014-11-21 18:30:50 -05:00
brb
05ec31b624 Enable SideBar toggle and add setting to hide it per default 2014-11-21 23:38:06 +01:00
Hyzual
f8d122f6f2 Bumps up version to 4.2.2, uncomment Google Analytics script.
Update the dist folder
2014-11-19 18:32:36 +01:00
Hyzual
7c8c33dbc3 All our CSS files are now minified and versioned.
Minifies and concat fancybox and jplayer CSS files.
Their images are now "flattened" into the dist/styles folder, so we no longer have a dist/bower_components folder.

The remaining javascript references to images or CSS files are also rewritten during Grunt build so they correctly reference the versioned file.

Merges the previous vendor and vendor2 javascript files into a single file containing all of our javascript dependencies, bower or not.

Removes some unnecessary Grunt tasks.
Removes some unused Grunt plugins.
2014-11-15 11:46:17 +01:00
Hyzual
1fb70ea5ec Adds the first working grunt build aimed for deployment on production.
TL;DR : everything but CSS is minified and packed in a neat dist/ directory.

This build :
- Merges all vendor dependencies (jquery, angular, etc) into one minified file.
- Merges the non-bower vendor dependencies (UnityShim, jquery-split-pane, etc). into one minified file.
- Merges all our javascript into one minified file.
- Copies all the needed CSS (couldn't minify and rename it because of dependencies in the JS).
- Renames all the images, the minified javascripts (but not the CSS) in order to avoid browser caching.
- Minifies all our html files.

Adds usemin commentaries (the ones with build) to index.html. Don't remove them or the build will break.

Renames the json files to .json so the build can find them and copy them.

Corrects all the angular-injectable functions to use the long form (with the array) in order to be minified. The build should also do that now with ng-Annotate but since I did it when debugging problems with the build, might as well keep it.

Note: the grunt test target is broken. Haven't figured out why yet.

Conflicts:
	app/app.js
	app/common/directives.js
	app/index.html
	app/settings/settings.js
2014-11-09 18:39:02 +01:00
Hyzual
193ac3af1f Corrects various small errors.
E.g. undefined variables

Conflicts:
	app/common/player-service.js
	app/index.html
2014-11-09 16:23:44 +01:00
Hyzual
7447759097 Moves the new partial in the common dir. 2014-11-09 16:18:31 +01:00
Hyzual
a1d48bbd30 Reorganizes the entire app to follow Google's best practice recommendations for Angular App Structure.
see: https://docs.google.com/document/d/1XXMvReO8-Awi1EZXAXS4PzDzdNvV6pGcuaF4Q9821Es/pub

The files are now grouped by view / component.
Tests are located beside tested js files. The Grunt build will be responsible for only distributing actual files without the tests.
Each partial is at the same level as the js files related to it.
Ideally css files should be at the same level, maybe I'll refactor this later.

Moves all non-bower plugins to app/vendor.
Moves all images to app/images and styles to app/styles.
Merges the test and non-test jshintrc files.

Adds all the Jamstash contributors to the package.json file while I was refactoring.

Conflicts:
	app/app.js
	app/images/vgrabber.gif
	app/images/vgrabber2-active.gif
	app/images/vgrabber2-normal.gif
	app/index.html
2014-11-09 16:10:34 +01:00
Renamed from index.html (Browse further)