Merge branch 'develop' of github.com:pimusicbox/mopidy-musicbox-webclient into develop

This commit is contained in:
Nick Steel 2016-02-04 15:58:19 +00:00
commit af0ce8503b
7 changed files with 107 additions and 79 deletions

View File

@ -73,15 +73,13 @@ v2.1.0 (UNRELEASED)
- Now updates the track name when the stream title changes. - Now updates the track name when the stream title changes.
- Adding a browsed radio station to the tracklist now also starts playback of the station. - Adding a browsed radio station to the tracklist now also starts playback of the station.
(Addresses: `#98 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/98>`_). (Addresses: `#98 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/98>`_).
- Remove support for defunct Grooveshark service.
(Addresses: `#120 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/120>`_).
- Increase volume slider handle by 30% to make it easier to grab on mobile devices. - Increase volume slider handle by 30% to make it easier to grab on mobile devices.
- Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should - Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should
be invalidated. be invalidated.
- Use standard Mopidy mixer methods to mute / un-mute playback. - Use standard Mopidy mixer methods to mute / un-mute playback.
- Added event handling for 'muteChanged' event. (Fixes: `#141 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/141>`_).
- Streams are now saved to the '[Radio Streams].m3u' playlist and are accessible from all clients. - Streams are now saved to the '[Radio Streams].m3u' playlist and are accessible from all clients.
Users with existing streamUris stored as browser cookies will be prompted to convert them to the new m3u backed scheme. Users with existing streamUris stored as browser cookies will be prompted to convert them to the new m3u backed scheme.
- Mopidy-Musicbox-Webclient now requires at least Mopidy v1.1.0 or greater to be installed.
**Fixes** **Fixes**
@ -108,6 +106,9 @@ v2.1.0 (UNRELEASED)
- Re-align the menu and search buttons in the title bar. - Re-align the menu and search buttons in the title bar.
(Fixes: `#148 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/148>`_). (Fixes: `#148 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/148>`_).
- Use explicit Mopidy.js calling convention. (Fixes: `#79 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/79>`_). - Use explicit Mopidy.js calling convention. (Fixes: `#79 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/79>`_).
- Added event handling for 'muteChanged' event. (Fixes: `#141 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/141>`_).
- Remove support for defunct Grooveshark service.
(Fixes: `#120 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/120>`_).
v2.0.0 (2015-03-26) v2.0.0 (2015-03-26)

View File

@ -168,6 +168,7 @@
margin-right: 35px; margin-right: 35px;
} }
/* Increase slider handle by 30%. */
.ui-slider-track.ui-mini .ui-slider-handle { .ui-slider-track.ui-mini .ui-slider-handle {
height: 22px; height: 22px;
width: 22px; width: 22px;
@ -204,7 +205,15 @@
background-color: #fff; background-color: #fff;
} }
#searchresults { #searchartists {
display: none;
}
#searchalbums {
display: none;
}
#searchtracks {
display: none; display: none;
} }
@ -472,7 +481,12 @@ a {
#infocover { #infocover {
height: 50px; height: 50px;
width: 50px; width: 50px;
position: absolute; }
.playicon {
width: 10%;
float: right;
text-align: right;
} }
#btplay { #btplay {
@ -481,17 +495,16 @@ a {
.songinfo { .songinfo {
height: 100%; height: 100%;
width: 90%;
float: left;
} }
.songinfo-text { .songinfo-text {
text-align: left; text-align: left;
line-height: 22px; line-height: 22px;
display:inline-block;
padding: 6px;
color: white; color: white;
position: absolute; overflow: hidden;
padding-left: 55px; padding: 3px;
padding-right: 55px;
} }
#nowPlayingpane{ #nowPlayingpane{

View File

@ -357,98 +357,98 @@
</div> </div>
<div data-role="content" class="pane" id="searchpane"> <div data-role="content" class="pane" id="searchpane">
<div class=""> <h4>Search</h4>
<form>
<select id="selectSearchService"> <!-- data-native-menu="false"> <!-- multiple="multiple" data-native-menu="false"> <div class="ui-grid pl-breakpoint">
<option data-placeholder="true">Choose services</option> --> <div class="ui-block">
</select> <form>
<input id="searchinput" class="span2" data-clear-btn="true" <p>Search for artists, albums, or specific tracks.
onkeypress="return searchPressed(event.keyCode);" id="appendedInputButton" type="text"/> <select id="selectSearchService"> <!-- data-native-menu="false"> <!-- multiple="multiple" data-native-menu="false">
<button class="btn" type="button" onclick="return initSearch(event.value);"> <option data-placeholder="true">Choose services</option> -->
Search! </select>
</button> <input id="searchinput" placeholder="Search term" class="span2" data-clear-btn="true"
</form> onkeypress="return searchPressed(event.keyCode);" id="appendedInputButton" type="text"/>
<button class="btn" type="button" onclick="return initSearch(event.value);">
Search!
</button>
</form>
</div>
</div> </div>
<div class="ui-grid-a srch-breakpoint">
<div id="searchresults"> <div class="ui-block-a" id="searchartists">
<div class="ui-grid-a srch-breakpoint"> <div data-role="listview" data-inset="true">
<div class="ui-block-a" id="searchartists"> <div data-role="header">
<div data-role="listview" data-inset="true"> <h4>Artists</h4>
<div data-role="header">
<h4>Artists</h4>
</div>
<div data-role="content">
<ul data-role="listview" id="artistresulttable"></ul>
</div>
</div> </div>
</div> <div data-role="content">
<div class="ui-block-b" id="searchalbums"> <ul data-role="listview" id="artistresulttable"></ul>
<div data-role="listview" data-inset="true">
<div data-role="header">
<h4>Albums</h4>
</div>
<div data-role="content">
<ul data-role="listview" id="albumresulttable"></ul>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui-block-b" id="searchalbums">
<div class="" id="searchtracks"> <div data-role="listview" data-inset="true">
<h4>Tracks</h4> <div data-role="header">
<ul id="trackresulttable" class="table"></ul> <h4>Albums</h4>
</div>
<div data-role="content">
<ul data-role="listview" id="albumresulttable"></ul>
</div>
</div>
</div> </div>
</div> </div>
<div class="" id="searchtracks">
<h4>Tracks</h4>
<ul id="trackresulttable" class="table"></ul>
</div>
</div> </div>
<!-- search div --> <!-- search div -->
<div data-role="content" class="pane" id="streampane"> <div data-role="content" class="pane" id="streampane">
<h4>Streams</h4> <h4>Streams</h4>
<div> <div class="ui-grid-a pl-breakpoint">
<div class="ui-grid-a pl-breakpoint">
<div class="ui-block-a" style="padding: 5px"> <div class="ui-block-a" style="padding: 5px">
<form> <form>
<p>Play a specific stream/track and optionally save it to your favourites. <p>Play a specific stream/track and optionally save it to your favourites.
<button class="btn" type="button" onclick="return getCurrentlyPlaying();"> <button class="btn" type="button" onclick="return getCurrentlyPlaying();">
Get currently playing Get currently playing
</button> </button>
<input id="streamuriinput" placeholder="URI" class="span2" data-clear-btn="true" <input id="streamuriinput" placeholder="URI" class="span2" data-clear-btn="true"
onkeypress="return streamPressed(event.keyCode);" id="appendedInputButton" type="text"/> onkeypress="return streamPressed(event.keyCode);" id="appendedInputButton" type="text"/>
<button class="btn" type="button" onclick="return playStreamUri();"> <button class="btn" type="button" onclick="return playStreamUri();">
Play Play
</button> </button>
<input id="streamnameinput" placeholder="Name" class="span2" data-clear-btn="true" <input id="streamnameinput" placeholder="Name" class="span2" data-clear-btn="true"
onkeypress="return streamPressed(event.keyCode);" id="appendedInputButton" type="text"/> onkeypress="return streamPressed(event.keyCode);" id="appendedInputButton" type="text"/>
<button class="btn" type="button" onclick="return addFavourite();"> <button class="btn" type="button" onclick="return addFavourite();">
Save Save
</button> </button>
<br/> <br/>
</form> </form>
</div> </div>
<div class="ui-block-b" style="padding: 5px"> <div class="ui-block-b" style="padding: 5px">
<ul id="streamuristable" class="table"></ul> <ul id="streamuristable" class="table"></ul>
</div> </div>
</div>
</div> </div>
</div> </div>
<div data-role="footer" data-tap-toggle="false" data-position="fixed" id="normalFooter"> <div data-role="footer" data-tap-toggle="false" data-position="fixed" id="normalFooter">
<div class="footerControls"> <div class="footerControls">
<div id="songinfo" style="float: left"> <div class="songinfo" id="songinfo">
<a href="#"><div><img id="infocover" src="images/default_cover.png"/></div></a> <a href="#"><div style="float: left"><img id="infocover" src="images/default_cover.png"/></div></a>
<div class="songinfo-text"> <div class="songinfo-text">
<div id="infoname"></div> <div id="infoname"></div>
<div id="infoartist"></div> <div id="infoartist"></div>
</div>
</div>
<div style="float: right;">
<a href="#" onclick="doPlay(); return false"><span id="btplay" title="Play"><i class="fa fa-play"></i></span></a>
</div> </div>
</div> </div>
<div class="playicon">
<a href="#" onclick="doPlay(); return false"><span id="btplay" title="Play"><i class="fa fa-play"></i></span></a>
</div>
</div>
</div> </div>
<div data-role="footer" data-tap-toggle="false" data-position="fixed" id="nowPlayingFooter"> <div data-role="footer" data-tap-toggle="false" data-position="fixed" id="nowPlayingFooter">
<div class="footerControls" style="padding-left: 10px;"> <div class="footerControls" style="padding-left: 10px;">

View File

@ -24,7 +24,9 @@ function resetSong() {
function resizeMb() { function resizeMb() {
$("#infoname").html(songdata.track.name); $("#infoname").html(songdata.track.name);
$("#infoname").truncate();
$("#infoartist").html(artiststext); $("#infoartist").html(artiststext);
$("#infoartist").truncate();
if ($(window).width() <= 960) { if ($(window).width() <= 960) {
// $('#playlisttracksdiv').hide(); // $('#playlisttracksdiv').hide();

View File

@ -27,7 +27,9 @@ function initSearch() {
delete customTracklists[URI_SCHEME+':artistresultscache']; delete customTracklists[URI_SCHEME+':artistresultscache'];
delete customTracklists[URI_SCHEME+':albumresultscache']; delete customTracklists[URI_SCHEME+':albumresultscache'];
delete customTracklists[URI_SCHEME+':trackresultscache']; delete customTracklists[URI_SCHEME+':trackresultscache'];
$("#searchresults").hide(); $("#searchartists").hide();
$("#searchalbums").hide();
$("#searchtracks").hide();
if (searchService != 'all') { if (searchService != 'all') {
mopidy.library.search({'query': {any:[value]}, 'uris': [searchService + ':']}).then(processSearchResults, console.error); mopidy.library.search({'query': {any:[value]}, 'uris': [searchService + ':']}).then(processSearchResults, console.error);
@ -108,7 +110,17 @@ function processSearchResults(resultArr) {
return false; return false;
} }
$("#searchresults").show(); if (results.artists.length > 0) {
$("#searchartists").show();
}
if (results.albums.length > 0) {
$("#searchalbums").show();
}
if (results.tracks.length > 0) {
$("#searchtracks").show();
}
// Returns a string where {x} in template is replaced by tokens[x]. // Returns a string where {x} in template is replaced by tokens[x].
function theme(template, tokens) { function theme(template, tokens) {

View File

@ -1,6 +1,6 @@
CACHE MANIFEST CACHE MANIFEST
# 2016-02-04:v1 # 2016-02-4:v2
NETWORK: NETWORK:
* *

View File

@ -25,7 +25,7 @@ setup(
include_package_data=True, include_package_data=True,
install_requires=[ install_requires=[
'setuptools', 'setuptools',
'Mopidy >= 0.19', 'Mopidy >= 1.1.0',
], ],
entry_points={ entry_points={
'mopidy.ext': [ 'mopidy.ext': [