From aa1f4181ce50790f082f875ebd29d542e5ca666e Mon Sep 17 00:00:00 2001 From: Josef Citrine Date: Mon, 29 Aug 2016 23:02:14 +0100 Subject: [PATCH] Added inline track editor to admin classifier --- public/templates/admin/classifier.html | 5 +- .../directives/paged-tracks-list.html | 2 +- public/templates/directives/tracks-list.html | 11 ++- .../app/controllers/admin-classifier.coffee | 5 +- .../app/directives/paged-tracks-list.coffee | 5 +- .../app/directives/track-editor.coffee | 95 ++++++++++--------- .../scripts/app/directives/tracks-list.coffee | 1 + resources/assets/styles/layout.less | 16 ++++ 8 files changed, 91 insertions(+), 49 deletions(-) diff --git a/public/templates/admin/classifier.html b/public/templates/admin/classifier.html index 90db7aaf..5f55f3ac 100644 --- a/public/templates/admin/classifier.html +++ b/public/templates/admin/classifier.html @@ -1 +1,4 @@ - +
+ + +
diff --git a/public/templates/directives/paged-tracks-list.html b/public/templates/directives/paged-tracks-list.html index 80f74694..d82d629b 100644 --- a/public/templates/directives/paged-tracks-list.html +++ b/public/templates/directives/paged-tracks-list.html @@ -17,6 +17,6 @@
- +
diff --git a/public/templates/directives/tracks-list.html b/public/templates/directives/tracks-list.html index b8dbe9e3..beaa1cd6 100644 --- a/public/templates/directives/tracks-list.html +++ b/public/templates/directives/tracks-list.html @@ -16,7 +16,16 @@ - + + {{::track.title}} + + {{::track.stats.favourites}}f + {{::track.stats.comments}}c + {{::track.stats.plays}}p + + {{::track.user.name}} / {{::track.genre.name}} + + {{::track.title}} {{::track.stats.favourites}}f diff --git a/resources/assets/scripts/app/controllers/admin-classifier.coffee b/resources/assets/scripts/app/controllers/admin-classifier.coffee index e8a1dc22..9fc8e685 100644 --- a/resources/assets/scripts/app/controllers/admin-classifier.coffee +++ b/resources/assets/scripts/app/controllers/admin-classifier.coffee @@ -21,12 +21,15 @@ window.pfm.preloaders['admin-classifier'] = [ tracks.mainQuery.fromFilterString($state.params.filter) tracks.mainQuery.setPage $state.params.page || 1 tracks.mainQuery.setAdmin true - tracks.mainQuery.fetch(tracks.FetchType.UNCLASSIFIED) + tracks.mainQuery.fetch(tracks.FetchType.ALL) ) ] module.exports = angular.module('ponyfm').controller "admin-classifier", [ '$scope', 'tracks', '$state', ($scope, tracks, $state) -> + $scope.trackIdToEdit = 1 + $scope.clickOverride = (id) -> + $scope.trackIdToEdit = id ] diff --git a/resources/assets/scripts/app/directives/paged-tracks-list.coffee b/resources/assets/scripts/app/directives/paged-tracks-list.coffee index 9e870eb9..3aa47485 100644 --- a/resources/assets/scripts/app/directives/paged-tracks-list.coffee +++ b/resources/assets/scripts/app/directives/paged-tracks-list.coffee @@ -21,10 +21,14 @@ module.exports = angular.module('ponyfm').directive 'pfmPagedTracksList', () -> scope: type: '@' class: '@class' + clickOverride: '&' controller: [ '$scope', 'tracks', '$state', '$location' ($scope, tracks, $state, $location) -> + $scope.newClickOverride = (id) -> + $scope.clickOverride({id: id}) + typeEnum = switch when $scope.type == 'normal' then tracks.FetchType.NORMAL when $scope.type == 'all' then tracks.FetchType.ALL @@ -71,7 +75,6 @@ module.exports = angular.module('ponyfm').directive 'pfmPagedTracksList', () -> $scope.hidePageSelector = () -> $scope.pageSelectorShown = false - $scope.jumpToPage = (inputPageNumber) -> $scope.gotoPage(inputPageNumber) ] diff --git a/resources/assets/scripts/app/directives/track-editor.coffee b/resources/assets/scripts/app/directives/track-editor.coffee index 5a681191..7686951c 100644 --- a/resources/assets/scripts/app/directives/track-editor.coffee +++ b/resources/assets/scripts/app/directives/track-editor.coffee @@ -33,6 +33,10 @@ module.exports = angular.module('ponyfm').directive 'pfmTrackEditor', () -> $scope.isAdmin = auth.data.isAdmin albumsDb = {} + $scope.$watch 'trackId', (newValue, oldValue) -> + console.log newValue, oldValue + $scope.updateUI() + $scope.selectAlbum = (album) -> $scope.selectedAlbum = album $scope.track.album_id = if album then album.id else null @@ -126,59 +130,62 @@ module.exports = angular.module('ponyfm').directive 'pfmTrackEditor', () -> # ======================================== # The part where everything gets loaded! # ======================================== - tracks.getEdit($scope.trackId, true) - .then (track)-> - images.refresh(true, track.user_id) - $.when( - albums.refresh(false, track.user_id), - taxonomies.refresh() - ).done (albums, taxonomies)-> - # Update album data - $scope.albums.length = 0 - albumsDb = {} - for album in albums - albumsDb[album.id] = album - $scope.albums.push album - $scope.selectedAlbum = if track.album_id then albumsDb[track.album_id] else null + $scope.updateUI = () -> + tracks.getEdit($scope.trackId, true) + .then (track)-> + images.refresh(true, track.user_id) + $.when( + albums.refresh(false, track.user_id), + taxonomies.refresh() + ).done (albums, taxonomies)-> + # Update album data + $scope.albums.length = 0 + albumsDb = {} + for album in albums + albumsDb[album.id] = album + $scope.albums.push album + $scope.selectedAlbum = if track.album_id then albumsDb[track.album_id] else null - # Update track data + # Update track data - # The release date is in UTC - make sure we treat it as such. - if track.released_at - local_date = new Date(track.released_at) - utc_release_timestamp = local_date.getTime() + (local_date.getTimezoneOffset() * 60000); - utc_release_date = new Date(utc_release_timestamp) - else utc_release_date = '' + # The release date is in UTC - make sure we treat it as such. + if track.released_at + local_date = new Date(track.released_at) + utc_release_timestamp = local_date.getTime() + (local_date.getTimezoneOffset() * 60000); + utc_release_date = new Date(utc_release_timestamp) + else utc_release_date = '' - $scope.track = - id: track.id - title: track.title - user_id: track.user_id - username: track.username - description: track.description - lyrics: track.lyrics - is_explicit: track.is_explicit - is_downloadable: track.is_downloadable - is_vocal: track.is_vocal - license_id: track.license_id - genre_id: track.genre_id - track_type_id: track.track_type_id - released_at: utc_release_date - remove_cover: false - cover_id: track.cover_id - cover_url: track.cover_url - album_id: track.album_id - is_published: track.is_published - is_listed: track.is_listed + $scope.track = + id: track.id + title: track.title + user_id: track.user_id + username: track.username + description: track.description + lyrics: track.lyrics + is_explicit: track.is_explicit + is_downloadable: track.is_downloadable + is_vocal: track.is_vocal + license_id: track.license_id + genre_id: track.genre_id + track_type_id: track.track_type_id + released_at: utc_release_date + remove_cover: false + cover_id: track.cover_id + cover_url: track.cover_url + album_id: track.album_id + is_published: track.is_published + is_listed: track.is_listed - $scope.selectedSongs = {} - $scope.selectedSongs[song.id] = song for song in track.show_songs - updateSongDisplay() + $scope.selectedSongs = {} + $scope.selectedSongs[song.id] = song for song in track.show_songs + updateSongDisplay() $scope.touchModel = -> $scope.isDirty = true $scope.$on '$locationChangeStart', (e) -> return if !$scope.isDirty e.preventDefault() if !confirm('Are you sure you want to leave this page without saving your changes?') + + $scope.updateUI() ] diff --git a/resources/assets/scripts/app/directives/tracks-list.coffee b/resources/assets/scripts/app/directives/tracks-list.coffee index ae57ecdd..a2d49ddc 100644 --- a/resources/assets/scripts/app/directives/tracks-list.coffee +++ b/resources/assets/scripts/app/directives/tracks-list.coffee @@ -22,6 +22,7 @@ module.exports = angular.module('ponyfm').directive 'pfmTracksList', () -> playlist: '=' tracks: '=tracks' class: '@class' + clickOverride: '&' controller: [ '$modal', '$scope', 'favourites', 'player', 'playlists', 'auth' diff --git a/resources/assets/styles/layout.less b/resources/assets/styles/layout.less index 1a4468e0..f432797e 100644 --- a/resources/assets/styles/layout.less +++ b/resources/assets/styles/layout.less @@ -302,3 +302,19 @@ header { .playlist-form .modal-footer { margin-top: 20px; } + +.classifier { + .classifier-track-list { + float: left; + width: 50%; + + ul { + width: 100% !important; + } + } + + .classifier-track-editor { + float: right; + width: 50%; + } +}