From 3d944b32a8fb6e6bad4c3688586007dd80b17a32 Mon Sep 17 00:00:00 2001 From: Drewster727 Date: Sun, 27 Mar 2016 16:54:54 -0500 Subject: [PATCH] fix up sorting on the request page --- PlexRequests.UI/Content/requests.js | 79 +++++++++++---------- PlexRequests.UI/Models/RequestViewModel.cs | 2 + PlexRequests.UI/Modules/RequestsModule.cs | 4 ++ PlexRequests.UI/Views/Requests/Index.cshtml | 7 +- 4 files changed, 51 insertions(+), 41 deletions(-) diff --git a/PlexRequests.UI/Content/requests.js b/PlexRequests.UI/Content/requests.js index 3872da2c2..bbca674af 100644 --- a/PlexRequests.UI/Content/requests.js +++ b/PlexRequests.UI/Content/requests.js @@ -9,6 +9,16 @@ var searchSource = $("#search-template").html(); var searchTemplate = Handlebars.compile(searchSource); var movieTimer = 0; var tvimer = 0; +var mixItUpDefault = { + animation: { enable: true }, + load: { + filter: 'all', + sort: 'default:asc' + }, + layout: { + display: 'block' + } +}; movieLoad(); tvLoad(); @@ -17,40 +27,26 @@ tvLoad(); $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { var target = $(e.target).attr('href'); var activeState = ""; - if (target === "#TvShowTab") { - if ($('#movieList').mixItUp('isLoaded')) { - activeState = $('#movieList').mixItUp('getState'); - $('#movieList').mixItUp('destroy'); - } - if (!$('#tvList').mixItUp('isLoaded')) { - $('#tvList').mixItUp({ - load: { - filter: activeState.activeFilter || 'all', - sort: activeState.activeSort || 'default:asc' - }, - layout: { - display: 'block' - } - }); + var $ml = $('#movieList'); + var $tvl = $('#tvList'); + + if (target === "#TvShowTab") { + + if ($ml.mixItUp('isLoaded')) { + activeState = $ml.mixItUp('getState'); + $ml.mixItUp('destroy'); } + if ($tvl.mixItUp('isLoaded')) $tvl.mixItUp('destroy'); + $tvl.mixItUp(mixItUpConfig(activeState)); // init or reinit } if (target === "#MoviesTab") { - if ($('#tvList').mixItUp('isLoaded')) { - activeState = $('#tvList').mixItUp('getState'); - $('#tvList').mixItUp('destroy'); - } - if (!$('#movieList').mixItUp('isLoaded')) { - $('#movieList').mixItUp({ - load: { - filter: activeState.activeFilter || 'all', - sort: activeState.activeSort || 'default:asc' - }, - layout: { - display: 'block' - } - }); + if ($tvl.mixItUp('isLoaded')) { + activeState = $tvl.mixItUp('getState'); + $tvl.mixItUp('destroy'); } + if ($ml.mixItUp('isLoaded')) $ml.mixItUp('destroy'); + $ml.mixItUp(mixItUpConfig(activeState)); // init or reinit } }); @@ -315,24 +311,26 @@ $(document).on("click", ".change", function (e) { }); +function mixItUpConfig(activeState) { + var conf = mixItUpDefault; + + if (activeState) { + if (activeState.activeFilter) conf['load']['filter'] = activeState.activeFilter; + if (activeState.activeSort) conf['load']['sort'] = activeState.activeSort; + } + return conf; +}; + function movieLoad() { $("#movieList").html(""); $.ajax("/requests/movies/").success(function (results) { results.forEach(function (result) { var context = buildRequestContext(result, "movie"); - var html = searchTemplate(context); $("#movieList").append(html); }); - $('#movieList').mixItUp({ - layout: { - display: 'block' - }, - load: { - filter: 'all' - } - }); + $('#movieList').mixItUp(mixItUpConfig()); }); }; @@ -345,6 +343,7 @@ function tvLoad() { var html = searchTemplate(context); $("#tvList").append(html); }); + $('#tvList').mixItUp(mixItUpConfig()); }); }; @@ -359,9 +358,11 @@ function buildRequestContext(result, type) { type: type, status: result.status, releaseDate: result.releaseDate, + releaseDateTicks: result.releaseDateTicks, approved: result.approved, requestedBy: result.requestedBy, requestedDate: result.requestedDate, + requestedDateTicks: result.requestedDateTicks, available: result.available, admin: result.admin, issues: result.issues, @@ -376,7 +377,7 @@ function buildRequestContext(result, type) { } function startFilter(elementId) { - $('#'+element).mixItUp({ + $('#' + element).mixItUp({ load: { filter: activeState.activeFilter || 'all', sort: activeState.activeSort || 'default:asc' diff --git a/PlexRequests.UI/Models/RequestViewModel.cs b/PlexRequests.UI/Models/RequestViewModel.cs index 011b9977d..5ee389be9 100644 --- a/PlexRequests.UI/Models/RequestViewModel.cs +++ b/PlexRequests.UI/Models/RequestViewModel.cs @@ -37,11 +37,13 @@ namespace PlexRequests.UI.Models public string Title { get; set; } public string PosterPath { get; set; } public string ReleaseDate { get; set; } + public long ReleaseDateTicks { get; set; } public RequestType Type { get; set; } public string Status { get; set; } public bool Approved { get; set; } public string RequestedBy { get; set; } public string RequestedDate { get; set; } + public long RequestedDateTicks { get; set; } public string ReleaseYear { get; set; } public bool Available { get; set; } public bool Admin { get; set; } diff --git a/PlexRequests.UI/Modules/RequestsModule.cs b/PlexRequests.UI/Modules/RequestsModule.cs index a951e0db8..47dcf3369 100644 --- a/PlexRequests.UI/Modules/RequestsModule.cs +++ b/PlexRequests.UI/Modules/RequestsModule.cs @@ -90,7 +90,9 @@ namespace PlexRequests.UI.Modules Id = movie.Id, PosterPath = movie.PosterPath, ReleaseDate = movie.ReleaseDate.Humanize(), + ReleaseDateTicks = movie.ReleaseDate.Ticks, RequestedDate = movie.RequestedDate.Humanize(), + RequestedDateTicks = movie.RequestedDate.Ticks, Approved = movie.Approved, Title = movie.Title, Overview = movie.Overview, @@ -119,7 +121,9 @@ namespace PlexRequests.UI.Modules Id = tv.Id, PosterPath = tv.PosterPath, ReleaseDate = tv.ReleaseDate.Humanize(), + ReleaseDateTicks = tv.ReleaseDate.Ticks, RequestedDate = tv.RequestedDate.Humanize(), + RequestedDateTicks = tv.RequestedDate.Ticks, Approved = tv.Approved, Title = tv.Title, Overview = tv.Overview, diff --git a/PlexRequests.UI/Views/Requests/Index.cshtml b/PlexRequests.UI/Views/Requests/Index.cshtml index cd73d64d9..bf79ac7dd 100644 --- a/PlexRequests.UI/Views/Requests/Index.cshtml +++ b/PlexRequests.UI/Views/Requests/Index.cshtml @@ -43,7 +43,10 @@ @if (Model.SearchForMovies) @@ -78,7 +81,7 @@