From b69d7719bde9198d9fdbf3990ed8e430c5576076 Mon Sep 17 00:00:00 2001
From: Luke Pulverenti
Date: Sun, 14 Apr 2013 16:47:09 -0400
Subject: [PATCH 1/4] fixed people images being occasionally incorrect
---
dashboard-ui/scripts/Itemdetailpage.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dashboard-ui/scripts/Itemdetailpage.js b/dashboard-ui/scripts/Itemdetailpage.js
index 3fc249bc4c..16b371eaa3 100644
--- a/dashboard-ui/scripts/Itemdetailpage.js
+++ b/dashboard-ui/scripts/Itemdetailpage.js
@@ -421,7 +421,7 @@
function renderCast(page, item) {
var html = '';
- var casts = item.People || {};
+ var casts = item.People || [];
for (var i = 0, length = casts.length; i < length; i++) {
From 08c3a1f107f143d8e3d145ba951d47051d84faff Mon Sep 17 00:00:00 2001
From: Luke Pulverenti
Date: Sun, 14 Apr 2013 17:13:04 -0400
Subject: [PATCH 2/4] update to latest js api client
---
ApiClient.js | 26 +++++++++++++++-----------
packages.config | 2 +-
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/ApiClient.js b/ApiClient.js
index 4c88b35c3f..fe361a8685 100644
--- a/ApiClient.js
+++ b/ApiClient.js
@@ -95,6 +95,10 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
return name;
}());
+ function encodeName(name) {
+ return encodeURIComponent(name).replace("'", '%27');
+ }
+
/**
* Wraps around jQuery ajax methods to add additional info to the request.
*/
@@ -867,7 +871,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
throw new Error("null name");
}
- var url = self.getUrl("Studios/" + name);
+ var url = self.getUrl("Studios/" + encodeName(name));
return self.ajax({
type: "GET",
@@ -885,7 +889,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
throw new Error("null name");
}
- var url = self.getUrl("Genres/" + name);
+ var url = self.getUrl("Genres/" + encodeName(name));
return self.ajax({
type: "GET",
@@ -921,7 +925,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
throw new Error("null name");
}
- var url = self.getUrl("Persons/" + name);
+ var url = self.getUrl("Persons/" + encodeName(name));
return self.ajax({
type: "GET",
@@ -1047,7 +1051,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
};
- var url = "Persons/" + name + "/Images/" + options.type;
+ var url = "Persons/" + encodeName(name) + "/Images/" + options.type;
if (options.index != null) {
url += "/" + options.index;
@@ -1117,7 +1121,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
};
- var url = "Genres/" + name + "/Images/" + options.type;
+ var url = "Genres/" + encodeName(name) + "/Images/" + options.type;
if (options.index != null) {
url += "/" + options.index;
@@ -1131,7 +1135,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
};
/**
- * Constructs a url for a genre image
+ * Constructs a url for a studio image
* @param {String} name
* @param {Object} options
* Options supports the following properties:
@@ -1152,7 +1156,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
};
- var url = "Studios/" + name + "/Images/" + options.type;
+ var url = "Studios/" + encodeName(name) + "/Images/" + options.type;
if (options.index != null) {
url += "/" + options.index;
@@ -1739,7 +1743,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
throw new Error("null name");
}
- var url = self.getUrl("Users/" + userId + "/ItemsByName/Favorites/" + name);
+ var url = self.getUrl("Users/" + userId + "/ItemsByName/Favorites/" + encodeName(name));
var method = isFavorite ? "POST" : "DELETE";
@@ -1766,7 +1770,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
throw new Error("null name");
}
- var url = self.getUrl("Users/" + userId + "/ItemsByName/" + name + "/Rating", {
+ var url = self.getUrl("Users/" + userId + "/ItemsByName/" + encodeName(name) + "/Rating", {
likes: likes
});
@@ -1791,7 +1795,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
throw new Error("null name");
}
- var url = self.getUrl("Users/" + userId + "/ItemsByName/" + name + "/Rating");
+ var url = self.getUrl("Users/" + userId + "/ItemsByName/" + encodeName(name) + "/Rating");
return self.ajax({
type: "DELETE",
@@ -1815,7 +1819,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
throw new Error("null name");
}
- var url = self.getUrl("Users/" + userId + "/ItemsByName/" + name + "/UserData");
+ var url = self.getUrl("Users/" + userId + "/ItemsByName/" + encodeName(name) + "/UserData");
return self.ajax({
type: "GET",
diff --git a/packages.config b/packages.config
index 01740f591a..edc26a2383 100644
--- a/packages.config
+++ b/packages.config
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
From 95da7ac9fb87528a607daaa600580cf5396bb66b Mon Sep 17 00:00:00 2001
From: Luke Pulverenti
Date: Sun, 14 Apr 2013 17:30:10 -0400
Subject: [PATCH 3/4] removed list page css class. made generic list page more
like the others
---
dashboard-ui/css/librarybrowser.css | 6 +-
dashboard-ui/itemlist.html | 96 +-----------
dashboard-ui/moviegenres.html | 2 +-
dashboard-ui/moviepeople.html | 2 +-
dashboard-ui/movies.html | 2 +-
dashboard-ui/moviestudios.html | 2 +-
dashboard-ui/scripts/itemlistpage.js | 217 ++++++---------------------
dashboard-ui/tvgenres.html | 2 +-
dashboard-ui/tvpeople.html | 2 +-
dashboard-ui/tvshows.html | 2 +-
dashboard-ui/tvstudios.html | 2 +-
11 files changed, 60 insertions(+), 275 deletions(-)
diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css
index d9fc5c25d6..945beca856 100644
--- a/dashboard-ui/css/librarybrowser.css
+++ b/dashboard-ui/css/librarybrowser.css
@@ -20,7 +20,7 @@
}
.libraryPage, .itemListContent {
- background: #494949 url(images/bgflip.png) repeat-x!important;
+ background: #262626!important;
background-attachment: fixed!important;
}
@@ -28,8 +28,8 @@
color: #fff;
}
-.listPage {
- background: #262626!important;
+.type-home {
+ background: #494949 url(images/bgflip.png) repeat-x!important;
}
.listHeader {
diff --git a/dashboard-ui/itemlist.html b/dashboard-ui/itemlist.html
index 3a208f6b37..37c423f42a 100644
--- a/dashboard-ui/itemlist.html
+++ b/dashboard-ui/itemlist.html
@@ -7,100 +7,8 @@
-
+
diff --git a/dashboard-ui/moviepeople.html b/dashboard-ui/moviepeople.html
index c350023816..b7fc595f92 100644
--- a/dashboard-ui/moviepeople.html
+++ b/dashboard-ui/moviepeople.html
@@ -4,7 +4,7 @@
Media Browser
-
+
diff --git a/dashboard-ui/movies.html b/dashboard-ui/movies.html
index 740fb89ffe..741cc5c8c7 100644
--- a/dashboard-ui/movies.html
+++ b/dashboard-ui/movies.html
@@ -4,7 +4,7 @@
Media Browser
-
+
diff --git a/dashboard-ui/moviestudios.html b/dashboard-ui/moviestudios.html
index 095160db4f..c8150a53de 100644
--- a/dashboard-ui/moviestudios.html
+++ b/dashboard-ui/moviestudios.html
@@ -4,7 +4,7 @@
Media Browser
-
+
diff --git a/dashboard-ui/scripts/itemlistpage.js b/dashboard-ui/scripts/itemlistpage.js
index a2b0e827e5..9d487751bb 100644
--- a/dashboard-ui/scripts/itemlistpage.js
+++ b/dashboard-ui/scripts/itemlistpage.js
@@ -1,190 +1,67 @@
-var ItemListPage = {
+(function ($, document) {
- onPageShow: function () {
+ // The base query options
+ var query = {
- ItemListPage.reload();
- },
+ SortBy: "SortName",
+ SortOrder: "Ascending",
+ Fields: "PrimaryImageAspectRatio,UserData,DisplayMediaType,ItemCounts,DateCreated",
+ Limit: LibraryBrowser.getDetaultPageSize(),
+ StartIndex: 0
+ };
- reload: function () {
-
- var page = $.mobile.activePage;
-
- var parentId = getParameterByName('parentId');
-
- var query = {
- Fields: "PrimaryImageAspectRatio",
- Recursive: getParameterByName('Recursive') == 'true'
- };
-
- var filters = [];
-
- if (getParameterByName('IsResumable') == 'true') {
- filters.push("IsResumable");
- $('#chkResumable', page).checked(true).checkboxradio("refresh");
- }
-
- if (getParameterByName('IsFavorite') == 'true') {
- filters.push("IsFavorite");
- $('#chkIsFavorite', page).checked(true).checkboxradio("refresh");
- }
-
- if (getParameterByName('IsRecentlyAdded') == 'true') {
- filters.push("IsRecentlyAdded");
- $('#chkRecentlyAdded', page).checked(true).checkboxradio("refresh");
- }
-
- var sortBy = getParameterByName('SortBy') || 'SortName';
- query.SortBy = sortBy;
- $('.radioSortBy', page).checked(false).checkboxradio("refresh");
- $('#radio' + sortBy, page).checked(true).checkboxradio("refresh");
-
- var order = getParameterByName('SortOrder') || 'Ascending';
-
- query.SortOrder = order;
- $('.radioSortOrder', page).checked(false).checkboxradio("refresh");
- $('#radio' + order, page).checked(true).checkboxradio("refresh");
-
- query.Filters = filters.join(',');
- //query.limit = 100;
-
- if (parentId) {
- query.parentId = parentId;
-
- ApiClient.getItem(Dashboard.getCurrentUserId(), parentId).done(ItemListPage.renderTitle);
- }
- else {
- $('#itemName', page).html(getParameterByName('Title') || "Media Library");
- }
-
- ItemListPage.refreshItems(query);
- },
-
- refreshItems: function (query) {
+ function reloadItems(page) {
Dashboard.showLoadingMsg();
- var page = $.mobile.activePage;
+ var userId = Dashboard.getCurrentUserId();
- page.itemQuery = query;
+ ApiClient.getItems(userId, query).done(function (result) {
- ApiClient.getItems(Dashboard.getCurrentUserId(), query).done(ItemListPage.renderItems);
- },
+ var html = '';
- renderItems: function (result) {
+ var showPaging = result.TotalRecordCount > query.Limit;
- var items = result.Items;
+ if (showPaging) {
+ html += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount, true);
+ }
- var query = $.mobile.activePage.itemQuery;
+ html += LibraryBrowser.getPosterDetailViewHtml({
+ items: result.Items,
+ useAverageAspectRatio: true
+ });
- var renderOptions = {
+ if (showPaging) {
+ html += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount);
+ }
- items: items,
- useAverageAspectRatio: query.Recursive !== true,
- showTitle: query.Recursive
- };
+ var elem = $('#items', page).html(html).trigger('create');
- var html = LibraryBrowser.getPosterViewHtml(renderOptions);
+ $('select', elem).on('change', function () {
+ query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
+ reloadItems(page);
+ });
- $('#listItems', $.mobile.activePage).html(html);
+ Dashboard.hideLoadingMsg();
+ });
- Dashboard.hideLoadingMsg();
- },
+ ApiClient.getItem(userId, query.ParentId).done(function (item) {
- renderTitle: function (item) {
+ $('#itemName', page).html(item.Name);
-
- $('#itemName', $.mobile.activePage).html(item.Name);
- },
-
- sortBy: function (sortBy) {
-
- var query = $.mobile.activePage.itemQuery;
- query.SortBy = sortBy;
- ItemListPage.refreshItems(query);
- },
-
- sortOrder: function (order) {
-
- var query = $.mobile.activePage.itemQuery;
- query.SortOrder = order;
- ItemListPage.refreshItems(query);
- },
-
- filter: function(name, add)
- {
- var query = $.mobile.activePage.itemQuery;
- var filters = query.Filters || "";
-
- filters = (',' + filters).replace(',' + name, '').substring(1);
-
- if (add) {
- filters = filters ? (filters + ',' + name) : name;
- }
-
- query.Filters = filters;
-
- ItemListPage.refreshItems(query);
- },
-
- showSortPanel: function () {
-
- var page = $.mobile.activePage;
-
- $('#viewpanel', page).hide();
- $('#filterpanel', page).hide();
- $('#indexpanel', page).hide();
- $('#sortpanel', page).show();
-
- $('#btnViewPanel', page).buttonMarkup({ theme: "c" });
- $('#btnSortPanel', page).buttonMarkup({ theme: "a" });
- $('#btnIndexPanel', page).buttonMarkup({ theme: "c" });
- $('#btnFilterPanel', page).buttonMarkup({ theme: "c" });
- },
-
- showViewPanel: function () {
-
- var page = $.mobile.activePage;
-
- $('#viewpanel', page).show();
- $('#filterpanel', page).hide();
- $('#indexpanel', page).hide();
- $('#sortpanel', page).hide();
-
- $('#btnViewPanel', page).buttonMarkup({ theme: "a" });
- $('#btnSortPanel', page).buttonMarkup({ theme: "c" });
- $('#btnIndexPanel', page).buttonMarkup({ theme: "c" });
- $('#btnFilterPanel', page).buttonMarkup({ theme: "c" });
- },
-
- showIndexPanel: function () {
-
- var page = $.mobile.activePage;
-
- $('#viewpanel', page).hide();
- $('#filterpanel', page).hide();
- $('#indexpanel', page).show();
- $('#sortpanel', page).hide();
-
- $('#btnViewPanel', page).buttonMarkup({ theme: "c" });
- $('#btnSortPanel', page).buttonMarkup({ theme: "c" });
- $('#btnIndexPanel', page).buttonMarkup({ theme: "a" });
- $('#btnFilterPanel', page).buttonMarkup({ theme: "c" });
- },
-
- showFilterPanel: function () {
-
- var page = $.mobile.activePage;
-
- $('#viewpanel', page).hide();
- $('#filterpanel', page).show();
- $('#indexpanel', page).hide();
- $('#sortpanel', page).hide();
-
- $('#btnViewPanel', page).buttonMarkup({ theme: "c" });
- $('#btnSortPanel', page).buttonMarkup({ theme: "c" });
- $('#btnIndexPanel', page).buttonMarkup({ theme: "c" });
- $('#btnFilterPanel', page).buttonMarkup({ theme: "a" });
+ });
}
-};
-$(document).on('pageshow', "#itemListPage", ItemListPage.onPageShow);
+ $(document).on('pageinit', "#itemListPage", function () {
+
+
+ }).on('pagebeforeshow', "#itemListPage", function () {
+
+ query.ParentId = getParameterByName('parentId');
+ reloadItems(this);
+
+ }).on('pageshow', "#itemListPage", function () {
+
+ });
+
+})(jQuery, document);
\ No newline at end of file
diff --git a/dashboard-ui/tvgenres.html b/dashboard-ui/tvgenres.html
index 6e92c239b3..f71d879561 100644
--- a/dashboard-ui/tvgenres.html
+++ b/dashboard-ui/tvgenres.html
@@ -4,7 +4,7 @@
Media Browser
-
+
diff --git a/dashboard-ui/tvpeople.html b/dashboard-ui/tvpeople.html
index c8bdc805eb..e57e19c327 100644
--- a/dashboard-ui/tvpeople.html
+++ b/dashboard-ui/tvpeople.html
@@ -4,7 +4,7 @@
Media Browser
-
+
diff --git a/dashboard-ui/tvshows.html b/dashboard-ui/tvshows.html
index 0d6ab94bef..c1a7298889 100644
--- a/dashboard-ui/tvshows.html
+++ b/dashboard-ui/tvshows.html
@@ -4,7 +4,7 @@
Media Browser
-
+
diff --git a/dashboard-ui/tvstudios.html b/dashboard-ui/tvstudios.html
index 861f4704c3..1f9be0fbba 100644
--- a/dashboard-ui/tvstudios.html
+++ b/dashboard-ui/tvstudios.html
@@ -4,7 +4,7 @@
Media Browser
-