responsive layout design changes

This commit is contained in:
Trevor Squillario 2014-11-23 16:13:38 -05:00
parent acf49e112e
commit a0e8775b12
8 changed files with 76 additions and 63 deletions

View file

@ -124,9 +124,11 @@
}; };
$rootScope.showArtists = function () { $rootScope.showArtists = function () {
$('#left-component').css('display', ''); $('#left-component').css('display', '');
$('#right-component').removeClass('lgcolumn_expandedleft');
}; };
$rootScope.hideArtists = function () { $rootScope.hideArtists = function () {
$('#left-component').css('display', 'none'); $('#left-component').css('display', 'none');
$('#right-component').addClass('lgcolumn_expandedleft');
}; };
$scope.toggleArtists = function () { $scope.toggleArtists = function () {
if ($('#left-component').css('display') == 'none') { if ($('#left-component').css('display') == 'none') {

View file

@ -1,4 +1,4 @@
angular.module('JamStash') angular.module('JamStash')
.service('player', ['$rootScope', '$window', 'utils', 'globals', 'model', 'notifications', .service('player', ['$rootScope', '$window', 'utils', 'globals', 'model', 'notifications',
function ($rootScope, $window, utils, globals, model, notifications) { function ($rootScope, $window, utils, globals, model, notifications) {
@ -212,21 +212,6 @@
$rootScope.loadjPlayer(player1, url, suffix, loadonly, position); $rootScope.loadjPlayer(player1, url, suffix, loadonly, position);
} }
if (!loadonly) {
// Sway.fm UnityShim
var playerState = {
playing: true,
title: title,
artist: artist,
favorite: false,
albumArt: coverartfull
};
if ($rootScope.unity) {
$rootScope.unity.sendState(playerState);
}
// End UnityShim
}
var spechtml = ''; var spechtml = '';
var data = $(player1).data().jPlayer; var data = $(player1).data().jPlayer;
for (var i = 0; i < data.solutions.length; i++) { for (var i = 0; i < data.solutions.length; i++) {

View file

@ -48,7 +48,7 @@
<div class="clear"></div> <div class="clear"></div>
</div><!-- end #content --> </div><!-- end #content -->
<div id="SideBar"> <div id="SideBar" ng-if="queue.length > 0">
<div class="headeractions"> <div class="headeractions">
<a class="buttonimg" title="Shuffle Queue" ng-click="queueShuffle()"><img src="images/fork_gd_11x12.png"></a> <a class="buttonimg" title="Shuffle Queue" ng-click="queueShuffle()"><img src="images/fork_gd_11x12.png"></a>
<a class="buttonimg" id="action_Empty" title="Delete Queue" ng-click="queueEmpty()"><img src="images/trash_fill_gd_12x12.png"></a> <a class="buttonimg" id="action_Empty" title="Delete Queue" ng-click="queueEmpty()"><img src="images/trash_fill_gd_12x12.png"></a>
@ -56,7 +56,7 @@
</div> </div>
<div class="header">Queue</div> <div class="header">Queue</div>
<div id="SideQueue"> <div id="SideQueue">
<ul class="simplelist songlist noselect" ng-if="queue.length > 0"> <ul class="simplelist songlist noselect">
<div ng-repeat="song in [queue] track by $index" class="songs" ng-include src="'common/songs_lite.html'" sortable></div> <div ng-repeat="song in [queue] track by $index" class="songs" ng-include src="'common/songs_lite.html'" sortable></div>
</ul> </ul>
<div class="colspacer"></div> <div class="colspacer"></div>
@ -109,7 +109,6 @@
</table> </table>
</div> </div>
</div> </div>
<div class="playeractionssmall"></div>
<div id="playermiddle"> <div id="playermiddle">
<div id="audiocontainer"> <div id="audiocontainer">
<div class="audiojs" id="audio_wrapper0"> <div class="audiojs" id="audio_wrapper0">

View file

@ -1,7 +1,7 @@
<div id="settings" class="tabcontent"> <div id="settings" class="tabcontent">
<div class="section fullsection floatleft"> <div class="section fullsection floatleft">
<form class="form" id="Settings"> <form class="form" id="SettingsForm">
<div class="subsection floatleft"> <div class="subsection floatleft">
<h3 class="title">Login</h3> <h3 class="title">Login</h3>
<label for="Username">Username <span class="red">*</span></label><br /> <label for="Username">Username <span class="red">*</span></label><br />
@ -11,12 +11,10 @@
<label for="Server">Server <span class="red">*</span> (<a href="" title="Connect to Demo Subsonic Server" ng-click="setupDemo()">Demo</a>)</label><br /> <label for="Server">Server <span class="red">*</span> (<a href="" title="Connect to Demo Subsonic Server" ng-click="setupDemo()">Demo</a>)</label><br />
<input type="text" id="Server" name="Server" class="xlarge" title="Subsonic Server URL Ex: http://host:port" ng-model="settings.Server" /><br /> <input type="text" id="Server" name="Server" class="xlarge" title="Subsonic Server URL Ex: http://host:port" ng-model="settings.Server" /><br />
<!--<a href="#" class="button" id="action_RequestURL" title="Request Permission for Server URL">Enable URL</a><br />--> <!--<a href="#" class="button" id="action_RequestURL" title="Request Permission for Server URL">Enable URL</a><br />-->
<label for="SubsonicVersion">Subsonic API: <span class="apiversion" id="SubsonicVersion">{{settings.ApiVersion}}</span></label><br />
<label for="SMStats">Audio State: <span id="SMStats"></span></label><br /><br />
<br /> <br />
</div>
<div class="subsection floatleft">
<h3 class="title">Options</h3> <h3 class="title">Options</h3>
<label for="SubsonicVersion">Subsonic API: <span class="apiversion" id="SubsonicVersion">{{settings.ApiVersion}}</span></label><br />
<label for="SMStats">Audio State: <span id="SMStats"></span></label><br />
<label for="Theme">Theme</label><br /> <label for="Theme">Theme</label><br />
<select id="Theme" name="Theme" class="large" ng-model="settings.Theme" ng-options="o for o in Themes"></select><br /> <select id="Theme" name="Theme" class="large" ng-model="settings.Theme" ng-options="o for o in Themes"></select><br />
<!--<label for="AutoFilter">Filter</label><br /> <!--<label for="AutoFilter">Filter</label><br />
@ -73,8 +71,6 @@
<label for="SaveTrackPosition">Save Progress</label> <label for="SaveTrackPosition">Save Progress</label>
</fieldset> </fieldset>
</div> </div>
</div>
<div class="subsection floatleft">
<div class="checkboxes"> <div class="checkboxes">
<fieldset> <fieldset>
<legend class="aligncenter">Jukebox</legend> <legend class="aligncenter">Jukebox</legend>
@ -142,17 +138,6 @@
<br />Not related to a Subsonic License!</small> <br />Not related to a Subsonic License!</small>
</div> </div>
</div> </div>
<div class="clear"></div>
<div class="subsection floatleft">
<h3 class="title">Change Log</h3>
<ul id="ChangeLog" class="preferences">
<li class="log" ng-repeat="o in changeLog"><span class="version">{{o.date + ' - ' + o.version}}</span>
<span class="changes" ng-repeat="a in o.changes" ng-bind-html="a.text"></span>
</li>
</ul>
<a href="" ng-click="changeLogShowMore()">Show More</a>
</div>
<div class="clear"></div>
<div class="subsection floatleft"> <div class="subsection floatleft">
<h3 class="title">Links</h3> <h3 class="title">Links</h3>
<ul class="preferences"> <ul class="preferences">
@ -167,6 +152,17 @@
<li>Audio Library - <a href="http://jplayer.org" target="_blank">http://jplayer.org</a></li> <li>Audio Library - <a href="http://jplayer.org" target="_blank">http://jplayer.org</a></li>
</ul> </ul>
</div> </div>
<div class="clear"></div>
<div class="subsection floatleft">
<h3 class="title">Change Log</h3>
<ul id="ChangeLog" class="preferences">
<li class="log" ng-repeat="o in changeLog"><span class="version">{{o.date + ' - ' + o.version}}</span>
<span class="changes" ng-repeat="a in o.changes" ng-bind-html="a.text"></span>
</li>
</ul>
<a href="" ng-click="changeLogShowMore()">Show More</a>
</div>
<div class="clear"></div>
</div> </div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>

View file

@ -1,15 +1,15 @@
/*@media only screen and (max-device-width: 680px) {*/ /*@media only screen and (max-device-width: 680px) {*/
@media only screen and (max-width: 600px) { @media only screen and (max-width: 500px) {
.smcolumn { .smcolumn {
width: 100%; width: 75%;
background: rgba(255, 255, 255, 0.94);
border-bottom; none;
min-width: 292px;
} }
.lgcolumn { .lgcolumn {
margin-left: 0; margin-left: 0;
} }
#SideBar {
display: none;
}
ul.songlist li { ul.songlist li {
font-size: 12px; font-size: 12px;
padding: 2px 4px; padding: 2px 4px;
@ -27,12 +27,18 @@
width: auto; width: auto;
} }
ul.songlist .albumgrid .itemactions a { ul.songlist .albumgrid .itemactions a {
padding: 6px 8px; padding: 6px;
background-position: center center; background-position: center center;
} }
ul.songlist .albumgrid { ul.songlist .albumgrid {
padding: 0px 0px 22px 0px; padding: 0px 0px 22px 0px;
} }
ul.songlist .albumgrid .albumart img {
margin-right: 5px;
}
ul.songlist .albumgrid .albuminfo {
width: 150px;
}
ul.songlist .album a:hover { ul.songlist .album a:hover {
background-position: center center; background-position: center center;
} }
@ -45,4 +51,23 @@
#songdetails_controls { #songdetails_controls {
display: none; display: none;
} }
.actions {
margin-left: 184px;
}
#globalactions {
display: none;
}
#SettingsForm {
}
}
@media only screen and (max-width: 1200px) {
#SideBar {
display: none;
}
.lgcolumn {
margin-right: 0 !important;
}
ul.songlist .albumgrid {
width: 170px;
}
} }

View file

@ -221,7 +221,6 @@ span.apiversion
} }
.smcolumn .smcolumn
{ {
min-height: 100%;
height: 100%; height: 100%;
overflow-y: auto; overflow-y: auto;
outline: none; outline: none;
@ -237,6 +236,10 @@ span.apiversion
margin-bottom: -40px; margin-bottom: -40px;
background: #fff; background: #fff;
} }
.smcolumn .leftactions {
margin: 0 5px 0 0;
float: right;
}
.lgcolumn .lgcolumn
{ {
height: 100%; height: 100%;
@ -244,11 +247,16 @@ span.apiversion
outline: none; outline: none;
margin-left: 312px; margin-left: 312px;
margin-right: 350px; margin-right: 350px;
min-width: 400px;
} }
.lgcolumn_expanded .lgcolumn_expanded
{ {
margin-right: 0 !important; margin-right: 0 !important;
} }
.lgcolumn_expandedleft
{
margin-left: 0 !important;
}
.colspacer { .colspacer {
height: 100px; height: 100px;
width: 100%; width: 100%;
@ -307,7 +315,7 @@ span.apiversion
} }
.fullsection .fullsection
{ {
min-width: 450px; min-width: 300px;
overflow: auto; overflow: auto;
background: #fff; background: #fff;
border-top: 1px solid #cbcbcb; border-top: 1px solid #cbcbcb;
@ -797,7 +805,7 @@ ul.songlist .albumgrid .albumart img {
width: 160px; width: 160px;
height: 160px; height: 160px;
background: url(../images/albumdefault_160.jpg) no-repeat; background: url(../images/albumdefault_160.jpg) no-repeat;
margin: 3px 18px 0 18px; margin: 3px 0 0 18px;
padding: 0px; padding: 0px;
-webkit-box-reflect: below 1px -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(80%, transparent), to(rgba(255,255,255,0.2))); -webkit-box-reflect: below 1px -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(80%, transparent), to(rgba(255,255,255,0.2)));
} }
@ -1005,7 +1013,7 @@ ul.songlist li:hover
} }
#AZIndex #AZIndex
{ {
float: right; float: left;
margin: 0 5px 0 0; margin: 0 5px 0 0;
} }
#AZIndex a #AZIndex a
@ -1089,7 +1097,7 @@ ul.songlist li:hover
} }
#search #search
{ {
margin: 6px 0 0 0; margin: 5px;
float: left; float: left;
} }
.submenu .submenu
@ -1732,8 +1740,7 @@ input.chat
input#Search input#Search
{ {
border: 1px solid #DCDCDC; border: 1px solid #DCDCDC;
width: 200px; width: 140px;
margin: 0 0 0 5px;
} }
select select
{ {
@ -1756,8 +1763,9 @@ select#SearchType
} }
select.folders select.folders
{ {
width: 75%; width: 152px;
margin: 5px; margin: 5px;
float: left;
} }
.submit .submit
{ {

View file

@ -200,12 +200,6 @@ angular.module('jamstash.subsonic.service', ['jamstash.settings', 'jamstash.util
if (SelectedAlbumSort.id != "default") { if (SelectedAlbumSort.id != "default") {
sortSubsonicAlbums(SelectedAlbumSort.id); sortSubsonicAlbums(SelectedAlbumSort.id);
} }
/* Find a better way to show/hide left
var left = $('#left-component');
if (left.css('display') != 'none') {
$rootScope.hideArtists();
}
*/
} else { } else {
notifications.updateMessage('No Albums Returned :(', true); notifications.updateMessage('No Albums Returned :(', true);
} }

View file

@ -5,11 +5,6 @@
<a href="" class="button" id="action_RefreshArtists" title="Refresh List" ng-click="refreshArtists()"><img class="pad" src="images/reload_9x11.png" /></a> <a href="" class="button" id="action_RefreshArtists" title="Refresh List" ng-click="refreshArtists()"><img class="pad" src="images/reload_9x11.png" /></a>
<a href="" class="button" id="action_RescanLibrary" title="Rescan Library" ng-click="rescanLibrary()"><img class="pad" src="images/loop_alt1_gd_12x9.png" /></a> <a href="" class="button" id="action_RescanLibrary" title="Rescan Library" ng-click="rescanLibrary()"><img class="pad" src="images/loop_alt1_gd_12x9.png" /></a>
</div> </div>
<div id="search">
<input type="text" id="Search" name="Search" class="medium" title="Wildcards (*) supported" placeholder="Search..." ng-enter="search()"/>
<select id="SearchType" name="SearchType" ng-model="SearchType.id" ng-options="o.id as o.name for o in SearchTypes"></select>
<a href="" class="button" id="action_Search" title="Search" ng-click="search()"><img class="pad" src="images/magnifying_glass_alt_12x12.png" /></a>
</div>
<div class="subactions"> <div class="subactions">
<div class="floatleft" ng-show="selectedPlaylist"> <div class="floatleft" ng-show="selectedPlaylist">
<label>Playlist Actions</label> <label>Playlist Actions</label>
@ -38,7 +33,7 @@
</form> </form>
<div id="BreadCrumb"> <div id="BreadCrumb">
<div id="BreadCrumbs" class="floatleft"> <div id="BreadCrumbs" class="floatleft">
<div class="crumb"><a ng-click="toggleArtists()">Artists</a> &gt;</div> <div class="crumb"><a ng-click="toggleArtists()" title="Toggle Artists">Artists</a> &gt;</div>
<div class="crumb" ng-repeat="o in BreadCrumbs | filter:{type:'artist'}"><a ng-click="getAlbums(o.id, o.name)">{{o.name}}</a> &gt;</div> <div class="crumb" ng-repeat="o in BreadCrumbs | filter:{type:'artist'}"><a ng-click="getAlbums(o.id, o.name)">{{o.name}}</a> &gt;</div>
<div class="crumb" ng-repeat="o in BreadCrumbs | filter:{type:'album'}"><a ng-click="getSongs(o.id, '')">{{o.name}}</a> &gt;</div> <div class="crumb" ng-repeat="o in BreadCrumbs | filter:{type:'album'}"><a ng-click="getSongs(o.id, '')">{{o.name}}</a> &gt;</div>
</div> </div>
@ -83,12 +78,21 @@
<li class="" ng-click="togglePlaylist()"><a href="">Playlists</a></li> <li class="" ng-click="togglePlaylist()"><a href="">Playlists</a></li>
<li class="" ng-click="togglePodcast()"><a href="">Podcasts</a></li> <li class="" ng-click="togglePodcast()"><a href="">Podcasts</a></li>
</ul> </ul>
<div class="leftactions">
<a href="" class="button" id="action_ToggleArtists" ng-click="toggleArtists()" title="Toggle Artists"><img src="images/arrow_right_gl_8x8.png" /></a>
</div>
<div class="clear"></div> <div class="clear"></div>
<div id="IndexContainer" class="leftsubsection" ng-show="showIndex"> <div id="IndexContainer" class="leftsubsection" ng-show="showIndex">
<select id="MusicFolders" class="folders" ng-model="$root.SelectedMusicFolder" ng-options="o.name for o in MusicFolders"></select> <select id="MusicFolders" class="folders" ng-model="$root.SelectedMusicFolder" ng-options="o.name for o in MusicFolders"></select>
<div id="AZIndex" ng-show="!settings.HideAZ" class="subactionsfixed"> <div id="AZIndex" ng-show="!settings.HideAZ" class="subactionsfixed">
<a href="" ng-click="toggleAZ()" stop-event="click">A-Z</a> <a href="" ng-click="toggleAZ()" stop-event="click">A-Z</a>
</div> </div>
<div id="search">
<input type="text" id="Search" name="Search" class="medium" title="Wildcards (*) supported" placeholder="Search..." ng-enter="search()"/>
<select id="SearchType" name="SearchType" ng-model="SearchType.id" ng-options="o.id as o.name for o in SearchTypes"></select>
<a href="" class="button" id="action_Search" title="Search" ng-click="search()"><img class="pad" src="images/magnifying_glass_alt_12x12.png" /></a>
</div>
<div class="clear"></div>
<ul id="AutoAlbumContainer" class="simplelist mainlist noselect"> <ul id="AutoAlbumContainer" class="simplelist mainlist noselect">
<li class="index" id="auto">Auto Albums</li> <li class="index" id="auto">Auto Albums</li>
<li class="item" ng-repeat="o in AutoAlbums" id="{{o.id}}" ng-click="getAlbumListBy(o.id)" ng-class="{'selected': selectedAutoAlbum == o.id }"> <li class="item" ng-repeat="o in AutoAlbums" id="{{o.id}}" ng-click="getAlbumListBy(o.id)" ng-class="{'selected': selectedAutoAlbum == o.id }">