Skip to content

Commit c21b02f

Browse files
committed
Merge pull request #93 from jaedb/develop
2.6.7
2 parents 8cf9c92 + c055dde commit c21b02f

17 files changed

Lines changed: 295 additions & 104 deletions

File tree

mopidy_spotmop/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from services.auth import auth
1212
from mopidy import config, ext
1313

14-
__version__ = '2.6.6'
14+
__version__ = '2.6.7'
1515
__ext_name__ = 'spotmop'
1616
__verbosemode__ = False
1717

mopidy_spotmop/static/app.js

Lines changed: 92 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -33176,8 +33176,8 @@ angular.module('spotmop.discover', [])
3317633176
$scope.sections = [];
3317733177

3317833178
// get my old favorites
33179-
SpotifyService.getMyFavorites('artists', false, false, 'long_term').then( function(response){
33180-
$scope.favorites.items = response.items;
33179+
SpotifyService.getMyFavorites('artists', 50, false, 'long_term').then( function(response){
33180+
$scope.favorites.items = $filter('shuffle')(response.items);
3318133181
});
3318233182

3318333183

@@ -33300,10 +33300,10 @@ angular.module('spotmop.library', [])
3330033300
templateUrl: "app/library/albums.template.html",
3330133301
controller: 'LibraryAlbumsController'
3330233302
})
33303-
.state('library.files', {
33304-
url: "/files/:folder",
33305-
templateUrl: "app/library/files.template.html",
33306-
controller: 'LibraryFilesController'
33303+
.state('library.local', {
33304+
url: "/local/:uri",
33305+
templateUrl: "app/library/local.template.html",
33306+
controller: 'LibraryLocalController'
3330733307
});
3330833308
}])
3330933309

@@ -33662,37 +33662,89 @@ angular.module('spotmop.library', [])
3366233662
/**
3366333663
* Local files
3366433664
**/
33665-
.controller('LibraryFilesController', ['$scope', '$rootScope', '$filter', '$stateParams', '$localStorage', 'SpotifyService', 'SettingsService', 'DialogService', 'MopidyService', function ( $scope, $rootScope, $filter, $stateParams, $localStorage, SpotifyService, SettingsService, DialogService, MopidyService ){
33665+
.controller('LibraryLocalController', ['$scope', '$rootScope', '$filter', '$stateParams', '$localStorage', 'SpotifyService', 'SettingsService', 'DialogService', 'MopidyService', function ( $scope, $rootScope, $filter, $stateParams, $localStorage, SpotifyService, SettingsService, DialogService, MopidyService ){
3366633666

33667-
$scope.folders = [];
33668-
$scope.tracklist = {tracks: []};
33669-
var folder, parentFolder;
33667+
$scope.path = [{title: 'Files', uri: 'local:directory'}];
33668+
$scope.allFolders = [];
33669+
$scope.allTracks = [];
33670+
var uri;
3367033671

33672+
// watch for filter input
33673+
$scope.$watch('filterTerm', function(val){
33674+
$scope.tracks = $filter('filter')($scope.allTracks, val);
33675+
$scope.folders = $filter('filter')($scope.allFolders, val);
33676+
});
3367133677

33672-
// rip out any slashes and pipes
33673-
if( $stateParams.folder ){
33674-
folder = $stateParams.folder.replace('|','/');
33675-
}
3367633678

33677-
// figure out our parent folder (provided we're not at the top-level already)
33678-
if( !folder || folder != 'local:directory' ){
33679+
if( $stateParams.uri ){
3367933680

33680-
// viewing top-level folders
33681-
if(
33682-
folder == 'local:directory?type=track' ||
33683-
folder.indexOf('local:directory?type=date&') > -1 ||
33684-
folder.indexOf('local:directory?max-age=') > -1 ){
33685-
parentFolder = 'local:directory';
33686-
}
33681+
uri = $stateParams.uri;
3368733682

33688-
// release years
33689-
if( folder.indexOf('local:directory?date=') > -1 ){
33690-
parentFolder = 'local:directory?type=date&format=%25Y';
33683+
// handle use of pipes to separate actual folders
33684+
// this method is used by the json backend library, but is not needed for local-sqlite
33685+
if( uri.indexOf('|') > -1 || uri.indexOf('local:directory:') > -1 ){
33686+
33687+
// drop the local:directory: bit
33688+
var path = uri.substring(16,uri.length);
33689+
33690+
// split string into array elements (provided we're not viewing the root level already)
33691+
if( path != '' ) path = path.split('|');
33692+
33693+
// loop each 'folder' within the uri string
33694+
if( path.length > 0 ){
33695+
for( var i = 0; i < path.length; i++ ){
33696+
33697+
var uri = 'local:directory:';
33698+
33699+
// loop the whole path to re-build the uri
33700+
for( var j = 0; j <= i; j++ ){
33701+
if( uri != 'local:directory:' ) uri += '|';
33702+
uri += path[j];
33703+
}
33704+
33705+
// plug our path into the template array
33706+
$scope.path.push({
33707+
title: decodeURIComponent( path[i] ),
33708+
uri: uri
33709+
});
33710+
}
33711+
}
33712+
33713+
uri = uri.replace('|','/');
3369133714
}
3369233715

33716+
// manually setup path structure
33717+
if(uri == 'local:directory?type=track' ){
33718+
$scope.path.push({title: 'Tracks', uri: 'local:directory'});
33719+
}else if( uri.indexOf('local:directory?date=') > -1 ){
33720+
$scope.path.push({title: 'History', uri: 'local:directory'});
33721+
33722+
// albums
33723+
}else if( uri.indexOf('local:directory?type=album') > -1 ){
33724+
$scope.path.push({title: 'Albums'});
33725+
33726+
// individual album
33727+
}else if( uri.indexOf('album=') > -1 || uri.indexOf('local:album:') > -1 ){
33728+
$scope.path.push({title: 'Albums', uri: 'local:directory?type=album'});
33729+
$scope.path.push({title: 'Album'});
33730+
3369333731
// artist
33694-
if( folder.indexOf('local:directory?artist=') > -1 ){
33695-
parentFolder = 'local:directory?type=artist';
33732+
}else if( uri.indexOf('local:directory?type=artist') > -1 ){
33733+
$scope.path.push({title: 'Artists'});
33734+
33735+
// individual artist
33736+
}else if( uri.indexOf('local:artist:') > -1 ){
33737+
$scope.path.push({title: 'Artists', uri: 'local:directory?type=artist'});
33738+
$scope.path.push({title: 'Artist'});
33739+
33740+
// genre
33741+
}else if( uri.indexOf('local:directory?type=genre') > -1 ){
33742+
$scope.path.push({title: 'Genres'});
33743+
33744+
// individual genre
33745+
}else if( uri.indexOf('genre=') > -1 ){
33746+
$scope.path.push({title: 'Genres', uri: 'local:directory?type=genre'});
33747+
$scope.path.push({title: 'Genre'});
3369633748
}
3369733749
}
3369833750

@@ -33705,8 +33757,8 @@ angular.module('spotmop.library', [])
3370533757

3370633758
// go get em
3370733759
function getItems(){
33708-
33709-
MopidyService.getLibraryItems( folder )
33760+
33761+
MopidyService.getLibraryItems( uri )
3371033762
.then( function( response ){
3371133763

3371233764
// load tracks
@@ -33732,21 +33784,23 @@ angular.module('spotmop.library', [])
3373233784
tracks.push( track );
3373333785
}
3373433786

33735-
$scope.tracklist.tracks = tracks;
33736-
33737-
console.table( tracks );
33787+
$scope.tracks = tracks;
33788+
$scope.allTracks = tracks;
3373833789
});
3373933790
}
3374033791

33741-
// fetch the folders
33742-
var folders = formatFolders( $filter('filter')(response, {type: 'directory'}) );
33792+
// organise the folders
33793+
var folders = [];
33794+
for( i = 0; i < response.length; i++ ){
33795+
if( response[i].type != 'track' )
33796+
folders.push( response[i] );
33797+
}
3374333798

33744-
// plug in our parent folder item
33745-
if( parentFolder )
33746-
folders.unshift({ name: '..', uri: parentFolder, type: 'directory', isParentFolder: true });
33799+
var folders = formatFolders( folders );
3374733800

3374833801
// store our folders to the template-accessible variable
3374933802
$scope.folders = folders;
33803+
$scope.allFolders = folders;
3375033804
});
3375133805
}
3375233806

mopidy_spotmop/static/app.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mopidy_spotmop/static/app/common/mainmenu.template.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@
6565
Playlists
6666
</a>
6767
</li>
68-
<li class="menu-item top-level {{ linkingMode(['library.files']) }}">
69-
<a ui-sref="library.files({ folder: 'local:directory' })">
68+
<li class="menu-item top-level {{ linkingMode(['library.local']) }}">
69+
<a ui-sref="library.local({ uri: 'local:directory' })">
7070
<i class="si folder white"></i>
71-
Files
71+
Local files
7272
</a>
7373
</li>
7474
<li class="divider spacer"></li>

mopidy_spotmop/static/app/common/tracklist/localtrack.template.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@
1515
<div class="artist">
1616
<span class="artist-list">
1717
<span ng-repeat="artist in track.artists">
18-
<a ui-sref="library.files({ folder: 'local:directory?artist='+artist.uri })" ng-bind="artist.name" ng-if="artist.uri"></a>
18+
<a ui-sref="library.local({ uri: 'local:directory?artist='+artist.uri })" ng-bind="artist.name" ng-if="artist.uri"></a>
1919
<span ng-bind="artist.name" ng-if="!artist.uri"></span>
2020
<span ng-if="!$last">, </span>
2121
</span>
2222
</span>
2323
</div>
2424

2525
<div class="album">
26-
<a ui-sref="library.files({ folder: 'local:directory?album='+track.album.uri+'&type=track' })" ng-bind="track.album.name" ng-if="track.album.uri"></a>
26+
<a ui-sref="library.local({ uri: 'local:directory?album='+track.album.uri+'&type=track' })" ng-bind="track.album.name" ng-if="track.album.uri"></a>
2727
<span ng-bind="track.album.name" ng-if="!track.album.uri"></span>
2828
</div>
2929

src/app/library/files.template.html renamed to mopidy_spotmop/static/app/library/local.template.html

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,29 @@
77

88
<h1>
99
<span class="si folder mobile-hide"></span>
10-
Files
10+
<span class="path-item" ng-repeat="item in path">
11+
<a ui-sref="library.local({ uri: item.uri })" ng-bind="item.title" ng-if="item.uri"></a>
12+
<span ng-bind="item.title" ng-if="!item.uri"></span>
13+
<span ng-if="!$last && path.length > 0" class="grey-text"> &nbsp;/&nbsp; </span>
14+
</span>
1115
</h1>
1216

17+
<div class="utilities">
18+
<input class="list-filter" type="text" ng-model="filterTerm" placeholder="Start typing to filter..." />
19+
</div>
20+
1321
</div>
14-
22+
1523
<div class="library-folders tracklist">
16-
<a class="track folder" ng-repeat="folder in folders" ui-sref="library.files({ folder: folder.uri })">
24+
<a class="track folder" ng-repeat="folder in folders" ui-sref="library.local({ uri: folder.uri })">
1725
<i class="fa fa-folder icon" ng-hide="folder.isParentFolder"></i>
1826
<i class="fa fa-reply icon" ng-show="folder.isParentFolder"></i>
1927
<div class="title" ng-bind="folder.name" ng-class="{ empty: !folder.name }"></div>
2028
<div class="clear-both"></div>
2129
</a>
2230
</div>
2331

24-
<tracklist ng-if="tracklist.tracks.length > 0" tracks="tracklist.tracks" type="localtrack" class="tracklist library-tracks"></tracklist>
32+
<tracklist ng-if="tracks.length > 0" tracks="tracks" type="localtrack" class="tracklist library-tracks"></tracklist>
2533

2634
</div>
2735
</div>

mopidy_spotmop/static/assets/css/style.css

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2968,9 +2968,20 @@ slider .item-container > .square-panel {
29682968

29692969

29702970

2971-
2972-
2973-
2971+
/**
2972+
* List filter
2973+
* Used on our Local Files view
2974+
**/
2975+
2976+
.list-filter {
2977+
padding: 10px;
2978+
font-family: "Archivo Narrow",Helvetica,Arial,sans-serif;
2979+
}
2980+
2981+
.utilities .list-filter {
2982+
margin: -5px -25px 0 0;
2983+
width: 200px;
2984+
}
29742985

29752986

29762987

@@ -3516,6 +3527,14 @@ slider .item-container > .square-panel {
35163527
background: #FFFFFF;
35173528
}
35183529

3530+
.page-header .utilities input[type="text"]{
3531+
margin: -7px -12px 0 0;
3532+
width: 100px;
3533+
background: rgba(255,255,255,0.15);
3534+
color: #FFFFFF;
3535+
}
3536+
3537+
35193538
/**
35203539
* Notifications
35213540
**/

mopidy_spotmop/static/assets/css/style.min.css

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mopidy_spotmop/static/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scaleable=no" name="viewport" />
1818
<meta name="mobile-web-app-capable" content="yes">
1919
<meta name="apple-mobile-web-app-capable" content="yes">
20+
<meta name="theme-color" content="#222222">
2021

2122
<link rel="shortcut icon" type="image/ico" href="assets/favicon.ico" />
2223
<link rel="shortcut icon" type="image/x-icon" href="assets/favicon.ico" />
@@ -25,7 +26,7 @@
2526
</head>
2627
<body>
2728

28-
<div id="app" version="2.5.7" ng-app="spotmop" ng-controller="ApplicationController" ng-class="{ smallScreen: smallScreen(), mediumScreen: mediumScreen(), touchDevice: isTouchMode() }" ng-swipe-right="showMenu()" ng-swipe-left="hideMenu()">
29+
<div id="app" ng-app="spotmop" ng-controller="ApplicationController" ng-class="{ smallScreen: smallScreen(), mediumScreen: mediumScreen(), touchDevice: isTouchMode() }" ng-swipe-right="showMenu()" ng-swipe-left="hideMenu()">
2930

3031
<div id="notifications"></div>
3132

src/app/common/mainmenu.template.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@
6565
Playlists
6666
</a>
6767
</li>
68-
<li class="menu-item top-level {{ linkingMode(['library.files']) }}">
69-
<a ui-sref="library.files({ folder: 'local:directory' })">
68+
<li class="menu-item top-level {{ linkingMode(['library.local']) }}">
69+
<a ui-sref="library.local({ uri: 'local:directory' })">
7070
<i class="si folder white"></i>
71-
Files
71+
Local files
7272
</a>
7373
</li>
7474
<li class="divider spacer"></li>

0 commit comments

Comments
 (0)