diff --git a/dashboard-ui/css/images/editor/missing.png b/dashboard-ui/css/images/editor/missing.png
new file mode 100644
index 0000000000..f4a7ff98a3
Binary files /dev/null and b/dashboard-ui/css/images/editor/missing.png differ
diff --git a/dashboard-ui/itemdetails.html b/dashboard-ui/itemdetails.html
index 2cc7a7b739..fe3e036ed0 100644
--- a/dashboard-ui/itemdetails.html
+++ b/dashboard-ui/itemdetails.html
@@ -127,6 +127,9 @@
Next →
+
+ MISSING
+
OFFLINE
diff --git a/dashboard-ui/scripts/Itemdetailpage.js b/dashboard-ui/scripts/Itemdetailpage.js
index 6ddb8167e2..3cb4a605a9 100644
--- a/dashboard-ui/scripts/Itemdetailpage.js
+++ b/dashboard-ui/scripts/Itemdetailpage.js
@@ -25,11 +25,33 @@
LibraryBrowser.renderDetailPageBackdrop(page, item);
if (item.LocationType == "Offline") {
+
$('#offlineIndicator', page).show();
- } else {
+ }
+ else {
$('#offlineIndicator', page).hide();
}
+ var isMissingEpisode = false;
+
+ if (item.LocationType == "Virtual" && item.Type == "Episode") {
+ try {
+ if (item.PremiereDate && (new Date().getTime() >= parseISO8601Date(item.PremiereDate).getTime())) {
+ isMissingEpisode = true;
+ }
+ } catch (err) {
+
+ }
+ }
+
+ if (isMissingEpisode) {
+
+ $('#missingIndicator', page).show();
+ }
+ else {
+ $('#missingIndicator', page).hide();
+ }
+
if (MediaPlayer.canPlay(item) && item.LocationType !== "Offline" && item.LocationType !== "Virtual") {
$('#playButtonContainer', page).show();
} else {
diff --git a/dashboard-ui/scripts/boxsets.js b/dashboard-ui/scripts/boxsets.js
index 244d367de5..caedcf102f 100644
--- a/dashboard-ui/scripts/boxsets.js
+++ b/dashboard-ui/scripts/boxsets.js
@@ -10,8 +10,6 @@
Fields: "DateCreated",
StartIndex: 0
};
-
- LibraryBrowser.loadSavedQueryValues('boxsets', query);
function reloadItems(page) {
@@ -148,6 +146,8 @@
query.StartIndex = 0;
}
+ LibraryBrowser.loadSavedQueryValues('boxsets', query);
+
reloadItems(this);
}).on('pageshow', "#boxsetsPage", function () {
@@ -155,13 +155,13 @@
// Reset form values using the last used query
$('.radioSortBy', this).each(function () {
- this.checked = query.SortBy == this.getAttribute('data-sortby');
+ this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
}).checkboxradio('refresh');
$('.radioSortOrder', this).each(function () {
- this.checked = query.SortOrder == this.getAttribute('data-sortorder');
+ this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
}).checkboxradio('refresh');
diff --git a/dashboard-ui/scripts/edititemmetadata.js b/dashboard-ui/scripts/edititemmetadata.js
index 38edf7b369..81a991e616 100644
--- a/dashboard-ui/scripts/edititemmetadata.js
+++ b/dashboard-ui/scripts/edititemmetadata.js
@@ -44,6 +44,18 @@
}
}
+ if (item.Type == "Episode" && item.LocationType == "Virtual") {
+
+ try {
+ if (item.PremiereDate && (new Date().getTime() >= parseISO8601Date(item.PremiereDate).getTime())) {
+ htmlName += '

';
+ }
+ } catch (err) {
+
+ }
+
+ }
+
htmlName += "
";
var rel = item.IsFolder ? 'folder' : 'default';
diff --git a/dashboard-ui/scripts/episodes.js b/dashboard-ui/scripts/episodes.js
index 46a2a1b896..619ba81175 100644
--- a/dashboard-ui/scripts/episodes.js
+++ b/dashboard-ui/scripts/episodes.js
@@ -255,13 +255,13 @@
// Reset form values using the last used query
$('.radioSortBy', this).each(function () {
- this.checked = (query.SortBy || '').toLowerCase() == (this.getAttribute('data-sortby') || '').toLowerCase();
+ this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
}).checkboxradio('refresh');
$('.radioSortOrder', this).each(function () {
- this.checked = (query.SortOrder || '').toLowerCase() == (this.getAttribute('data-sortorder') || '').toLowerCase();
+ this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
}).checkboxradio('refresh');
diff --git a/dashboard-ui/scripts/gamegenrepage.js b/dashboard-ui/scripts/gamegenrepage.js
index aa032c9dab..7f92d489c5 100644
--- a/dashboard-ui/scripts/gamegenrepage.js
+++ b/dashboard-ui/scripts/gamegenrepage.js
@@ -9,8 +9,6 @@
Fields: "DateCreated",
StartIndex: 0
};
-
- LibraryBrowser.loadSavedQueryValues('gamegenres', query);
function reloadItems(page) {
@@ -111,6 +109,8 @@
query.StartIndex = 0;
}
+ LibraryBrowser.loadSavedQueryValues('gamegenres', query);
+
reloadItems(this);
}).on('pageshow', "#gameGenresPage", function () {
@@ -118,13 +118,13 @@
// Reset form values using the last used query
$('.radioSortBy', this).each(function () {
- this.checked = query.SortBy == this.getAttribute('data-sortby');
+ this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
}).checkboxradio('refresh');
$('.radioSortOrder', this).each(function () {
- this.checked = query.SortOrder == this.getAttribute('data-sortorder');
+ this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
}).checkboxradio('refresh');
});
diff --git a/dashboard-ui/scripts/gamespage.js b/dashboard-ui/scripts/gamespage.js
index bacfa7b569..1991714194 100644
--- a/dashboard-ui/scripts/gamespage.js
+++ b/dashboard-ui/scripts/gamespage.js
@@ -13,8 +13,6 @@
Fields: "Genres,Studios,PrimaryImageAspectRatio",
StartIndex: 0
};
-
- LibraryBrowser.loadSavedQueryValues('games', query);
function reloadItems(page) {
@@ -201,6 +199,8 @@
query.StartIndex = 0;
}
+ LibraryBrowser.loadSavedQueryValues('games', query);
+
reloadItems(this);
}).on('pageshow', "#gamesPage", function () {
@@ -209,13 +209,13 @@
// Reset form values using the last used query
$('.radioSortBy', this).each(function () {
- this.checked = query.SortBy == this.getAttribute('data-sortby');
+ this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
}).checkboxradio('refresh');
$('.radioSortOrder', this).each(function () {
- this.checked = query.SortOrder == this.getAttribute('data-sortorder');
+ this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
}).checkboxradio('refresh');
diff --git a/dashboard-ui/scripts/gamestudiospage.js b/dashboard-ui/scripts/gamestudiospage.js
index ce2a5c9c23..0beeba2d1f 100644
--- a/dashboard-ui/scripts/gamestudiospage.js
+++ b/dashboard-ui/scripts/gamestudiospage.js
@@ -10,8 +10,6 @@
Fields: "UserData",
StartIndex: 0
};
-
- LibraryBrowser.loadSavedQueryValues('gamestudios', query);
function reloadItems(page) {
@@ -112,6 +110,8 @@
query.StartIndex = 0;
}
+ LibraryBrowser.loadSavedQueryValues('gamestudios', query);
+
reloadItems(this);
}).on('pageshow', "#gameStudiosPage", function () {
@@ -119,13 +119,13 @@
// Reset form values using the last used query
$('.radioSortBy', this).each(function () {
- this.checked = query.SortBy == this.getAttribute('data-sortby');
+ this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
}).checkboxradio('refresh');
$('.radioSortOrder', this).each(function () {
- this.checked = query.SortOrder == this.getAttribute('data-sortorder');
+ this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
}).checkboxradio('refresh');
diff --git a/dashboard-ui/scripts/gamesystemspage.js b/dashboard-ui/scripts/gamesystemspage.js
index 5b964543a6..c3ada8a30e 100644
--- a/dashboard-ui/scripts/gamesystemspage.js
+++ b/dashboard-ui/scripts/gamesystemspage.js
@@ -11,8 +11,6 @@
Fields: "DateCreated",
StartIndex: 0
};
-
- LibraryBrowser.loadSavedQueryValues('gamesystems', query);
function reloadItems(page) {
@@ -112,6 +110,8 @@
query.StartIndex = 0;
}
+ LibraryBrowser.loadSavedQueryValues('gamesystems', query);
+
reloadItems(this);
}).on('pageshow', "#gamesystemsPage", function () {
@@ -119,13 +119,13 @@
// Reset form values using the last used query
$('.radioSortBy', this).each(function () {
- this.checked = query.SortBy == this.getAttribute('data-sortby');
+ this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
}).checkboxradio('refresh');
$('.radioSortOrder', this).each(function () {
- this.checked = query.SortOrder == this.getAttribute('data-sortorder');
+ this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
}).checkboxradio('refresh');
diff --git a/dashboard-ui/scripts/itemlistpage.js b/dashboard-ui/scripts/itemlistpage.js
index aa519506b9..7c800ccaa8 100644
--- a/dashboard-ui/scripts/itemlistpage.js
+++ b/dashboard-ui/scripts/itemlistpage.js
@@ -189,13 +189,13 @@
// Reset form values using the last used query
$('.radioSortBy', this).each(function () {
- this.checked = query.SortBy == this.getAttribute('data-sortby');
+ this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
}).checkboxradio('refresh');
$('.radioSortOrder', this).each(function () {
- this.checked = query.SortOrder == this.getAttribute('data-sortorder');
+ this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
}).checkboxradio('refresh');
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js
index a62fec4fe3..fcdab652a7 100644
--- a/dashboard-ui/scripts/librarybrowser.js
+++ b/dashboard-ui/scripts/librarybrowser.js
@@ -861,12 +861,6 @@
return '';
}
- if (item.Type == "Season") {
- if (item.RecursiveUnplayedItemCount) {
- return '