3.1.1 additional bug fixes
This commit is contained in:
parent
4b116d0024
commit
223cce0dc4
7 changed files with 45 additions and 35 deletions
|
@ -3,8 +3,8 @@ Jamstash - HTML5 Music Streamer
|
||||||
Imagine you can stream all your music from home, to any device, where ever you are. That is Subsonic! Now imagine having a Web App to stream your music that is as beautiful and well designed as it is functional, that is Jamstash!
|
Imagine you can stream all your music from home, to any device, where ever you are. That is Subsonic! Now imagine having a Web App to stream your music that is as beautiful and well designed as it is functional, that is Jamstash!
|
||||||
|
|
||||||
What?
|
What?
|
||||||
* HTML5 Audio Streamer for your Subsonic server.
|
* HTML5 Music Streaming App for your Subsonic server
|
||||||
* Archive.org browsing and streaming
|
* Archive.org Browsing and Streaming of Live Music
|
||||||
|
|
||||||
Features
|
Features
|
||||||
* HTML5 Audio with Flash fallback (provided by the jPlayer library)
|
* HTML5 Audio with Flash fallback (provided by the jPlayer library)
|
||||||
|
|
|
@ -89,10 +89,10 @@
|
||||||
<a href="" id="action_UnMute" class="unmute first" title="Unmute" style="display: none;"></a>
|
<a href="" id="action_UnMute" class="unmute first" title="Unmute" style="display: none;"></a>
|
||||||
<div class="jp-volume-bar"><div class="jp-volume-bar-value"></div></div><a href="" id="action_VolumeMax" class="volume" title="Max Volume"></a>
|
<div class="jp-volume-bar"><div class="jp-volume-bar-value"></div></div><a href="" id="action_VolumeMax" class="volume" title="Max Volume"></a>
|
||||||
<a href="" class="loop" title="Repeat" ng-click="toggleSetting('Repeat')" ng-class="{'hoverSelected': !settings.Repeat }"></a>
|
<a href="" class="loop" title="Repeat" ng-click="toggleSetting('Repeat')" ng-class="{'hoverSelected': !settings.Repeat }"></a>
|
||||||
<a href="" id="action_SaveProgress" class="lock" title="Progress Saved" ng-show="settings.SaveTrackPosition"></a>
|
<a href="" id="action_SaveProgress" class="lock" title="Save Track Position: On" ng-show="settings.SaveTrackPosition"></a>
|
||||||
|
<a title="Favorite" href="" ng-class="{'favorite': playingSong.starred, 'rate': !playingSong.starred}" ng-click="updateFavorite(playingSong)" stop-event="click"></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="rate"><a href="" title="Favorite" data-bind="css: { favorite: starred(), rate: !starred() }, click: $root.updateFavorite, clickBubble: false"></a></div>
|
|
||||||
<div class="vertshade"></div>
|
<div class="vertshade"></div>
|
||||||
</div>
|
</div>
|
||||||
<div id="playdeck_1"></div>
|
<div id="playdeck_1"></div>
|
||||||
|
|
|
@ -118,7 +118,7 @@ function SubsonicCtrl($scope, $rootScope, $location, $window, $routeParams, util
|
||||||
coverartfull = globals.BaseURL() + '/getCoverArt.view?' + globals.BaseParams() + '&id=' + album.coverArt;
|
coverartfull = globals.BaseURL() + '/getCoverArt.view?' + globals.BaseParams() + '&id=' + album.coverArt;
|
||||||
}
|
}
|
||||||
if (typeof album.starred !== 'undefined') { starred = true; } else { starred = false; }
|
if (typeof album.starred !== 'undefined') { starred = true; } else { starred = false; }
|
||||||
return new model.Album(album.id, album.parent, album.album, album.artist, coverartthumb, coverartfull, $.format.date(new Date(album.created), "yyyy-MM-dd h:mm a"), starred, '', '');
|
return new model.Album(album.id, album.parent, album.title, album.artist, coverartthumb, coverartfull, $.format.date(new Date(album.created), "yyyy-MM-dd h:mm a"), starred, '', '');
|
||||||
}
|
}
|
||||||
$scope.getAlbums = function (id) {
|
$scope.getAlbums = function (id) {
|
||||||
$scope.selectedAutoAlbum = null;
|
$scope.selectedAutoAlbum = null;
|
||||||
|
@ -216,6 +216,10 @@ function SubsonicCtrl($scope, $rootScope, $location, $window, $routeParams, util
|
||||||
} else {
|
} else {
|
||||||
items[0] = data["subsonic-response"].directory.child;
|
items[0] = data["subsonic-response"].directory.child;
|
||||||
}
|
}
|
||||||
|
if (typeof data["subsonic-response"].directory.id != 'undefined') {
|
||||||
|
//alert(data["subsonic-response"].directory.id);
|
||||||
|
// Look at bringing back the breadcrumb
|
||||||
|
}
|
||||||
//alert(JSON.stringify(getMusicDirectory["subsonic-response"].directory.child));
|
//alert(JSON.stringify(getMusicDirectory["subsonic-response"].directory.child));
|
||||||
if (action == 'add') {
|
if (action == 'add') {
|
||||||
angular.forEach(items, function (item, key) {
|
angular.forEach(items, function (item, key) {
|
||||||
|
@ -321,27 +325,6 @@ function SubsonicCtrl($scope, $rootScope, $location, $window, $routeParams, util
|
||||||
$scope.selectedSongs.length = 0;
|
$scope.selectedSongs.length = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$scope.updateFavorite = function (item) {
|
|
||||||
var id = item.id;
|
|
||||||
var starred = item.starred;
|
|
||||||
var url;
|
|
||||||
if (starred) {
|
|
||||||
url = globals.BaseURL() + '/unstar.view?' + globals.BaseParams() + '&id=' + id;
|
|
||||||
item.starred = undefined;
|
|
||||||
} else {
|
|
||||||
url = globals.BaseURL() + '/star.view?' + globals.BaseParams() + '&id=' + id;
|
|
||||||
item.starred = true;
|
|
||||||
}
|
|
||||||
$.ajax({
|
|
||||||
url: url,
|
|
||||||
method: 'GET',
|
|
||||||
dataType: globals.settings.Protocol,
|
|
||||||
timeout: globals.settings.Timeout,
|
|
||||||
success: function () {
|
|
||||||
notifications.updateMessage('Favorite Updated!', true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
$scope.sortDateFunction = function (a, b) {
|
$scope.sortDateFunction = function (a, b) {
|
||||||
return a.date < b.date ? 1 : -1;
|
return a.date < b.date ? 1 : -1;
|
||||||
};
|
};
|
||||||
|
|
|
@ -550,6 +550,30 @@ function AppCtrl($scope, $rootScope, $document, $location, utils, globals, model
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
$scope.updateFavorite = function (item) {
|
||||||
|
var id = item.id;
|
||||||
|
var starred = item.starred;
|
||||||
|
var url;
|
||||||
|
if (starred) {
|
||||||
|
url = globals.BaseURL() + '/unstar.view?' + globals.BaseParams() + '&id=' + id;
|
||||||
|
item.starred = undefined;
|
||||||
|
} else {
|
||||||
|
url = globals.BaseURL() + '/star.view?' + globals.BaseParams() + '&id=' + id;
|
||||||
|
item.starred = true;
|
||||||
|
}
|
||||||
|
$.ajax({
|
||||||
|
url: url,
|
||||||
|
method: 'GET',
|
||||||
|
dataType: globals.settings.Protocol,
|
||||||
|
timeout: globals.settings.Timeout,
|
||||||
|
success: function () {
|
||||||
|
notifications.updateMessage('Favorite Updated!', true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Launch on Startup */
|
/* Launch on Startup */
|
||||||
$scope.loadSettings();
|
$scope.loadSettings();
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
{ "date": "10/31/2013", "version": "3.1.1",
|
{ "date": "10/31/2013", "version": "3.1.1",
|
||||||
"changes": [
|
"changes": [
|
||||||
{ "text": "- Sway.fm Media Keys plugin fixed" },
|
{ "text": "- Sway.fm Media Keys plugin fixed" },
|
||||||
{ "text": "- Fixed issue with multiple sub-folders levels, other bug fixes" }
|
{ "text": "- Fixed issue with multiple sub-folders levels, other bug fixes" },
|
||||||
|
{ "text": "- Ability to star playing song" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{ "date": "9/26/2013", "version": "3.1.0",
|
{ "date": "9/26/2013", "version": "3.1.0",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<ul class="simplelist songlist">
|
<ul class="simplelist songlist">
|
||||||
<li class="row song" ng-repeat="o in song" ng-dblclick="playSong(false, o)" ng-click="selectSong(o)" ng-dblclick="playSong(false, o)" ng-class="{'selected': o.selected, 'playing': o.playing}" data-bind="attr: { id: id, parentid: parentid, title: description }">
|
<li class="row song" ng-repeat="o in song" ng-click="selectSong(o)" ng-dblclick="playSong(false, o)" ng-class="{'selected': o.selected, 'playing': o.playing}" data-bind="attr: { id: id, parentid: parentid, title: description }">
|
||||||
<div class="itemactions">
|
<div class="itemactions">
|
||||||
<a class="add" href="" title="Add To Play Queue" ng-click="addSongToQueue(o)" stop-event="click"></a>
|
<a class="add" href="" title="Add To Play Queue" ng-click="addSongToQueue(o)" stop-event="click"></a>
|
||||||
<a class="remove" href="" title="Remove"></a>
|
<a class="remove" href="" title="Remove"></a>
|
||||||
|
|
|
@ -1327,24 +1327,26 @@ ul.songlist li:hover
|
||||||
#songdetails a.rate
|
#songdetails a.rate
|
||||||
{
|
{
|
||||||
float: left;
|
float: left;
|
||||||
height: 66px;
|
height: 12px;
|
||||||
width: 32px;
|
width: 12px;
|
||||||
|
margin: 2px;
|
||||||
display: block;
|
display: block;
|
||||||
background: url('../images/star_wo_12x12.png') 10px center no-repeat;
|
background: url('../images/star_wo_12x12.png') 0 center no-repeat;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
#songdetails a.rate:hover
|
#songdetails a.rate:hover
|
||||||
{
|
{
|
||||||
background: url('../images/star_lgo_12x12.png') 10px center no-repeat;
|
background: url('../images/star_lgo_12x12.png') 0 center no-repeat;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
#songdetails a.favorite
|
#songdetails a.favorite
|
||||||
{
|
{
|
||||||
float: left;
|
float: left;
|
||||||
height: 64px;
|
height: 12px;
|
||||||
width: 30px;
|
width: 12px;
|
||||||
|
margin: 2px;
|
||||||
display: block;
|
display: block;
|
||||||
background: url('../images/star_yo_12x12.png') 10px center no-repeat;
|
background: url('../images/star_yo_12x12.png') 0 center no-repeat;
|
||||||
}
|
}
|
||||||
#songdetails a.mute
|
#songdetails a.mute
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue