diff --git a/dashboard-ui/scripts/alphapicker.js b/dashboard-ui/scripts/alphapicker.js
deleted file mode 100644
index 780a5612a3..0000000000
--- a/dashboard-ui/scripts/alphapicker.js
+++ /dev/null
@@ -1,113 +0,0 @@
-define(['jQuery'], function ($) {
-
- function getPickerHtml() {
-
- var html = '';
-
- html += '
#';
- html += '
A';
- html += '
B';
- html += '
C';
- html += '
D';
- html += '
E';
- html += '
F';
- html += '
G';
- html += '
H';
- html += '
I';
- html += '
J';
- html += '
K';
- html += '
L';
- html += '
M';
- html += '
N';
- html += '
O';
- html += '
P';
- html += '
Q';
- html += '
R';
- html += '
S';
- html += '
T';
- html += '
U';
- html += '
V';
- html += '
W';
- html += '
X';
- html += '
Y';
- html += '
Z';
-
- return html;
- }
-
- function init(container, picker) {
-
- $('.itemsContainer', container).addClass('itemsContainerWithAlphaPicker');
-
- picker.innerHTML = getPickerHtml();
-
- $(picker).on('click', 'a', function () {
-
- var elem = this;
-
- var isSelected = elem.classList.contains('selectedCharacter');
-
- $('.selectedCharacter', picker).removeClass('selectedCharacter');
-
- if (!isSelected) {
-
- elem.classList.add('selectedCharacter');
- $(picker).trigger('alphaselect', [this.innerHTML]);
- } else {
- $(picker).trigger('alphaclear');
- }
- });
- }
-
- pageClassOn('pageinit', "libraryPage", function () {
-
- var page = this;
-
- var pickers = page.querySelectorAll('.alphabetPicker');
-
- if (!pickers.length) {
- return;
- }
-
- if (page.classList.contains('pageWithAbsoluteTabs')) {
-
- for (var i = 0, length = pickers.length; i < length; i++) {
- init($(pickers[i]).parents('.pageTabContent'), pickers[i]);
- }
-
- } else {
- init(page, pickers[0]);
- }
- });
-
- $.fn.alphaValue = function (val) {
-
- if (val == null) {
- return $('.selectedCharacter', this).html();
- }
-
- val = val.toLowerCase();
-
- $('.selectedCharacter', this).removeClass('selectedCharacter');
-
- $('a', this).each(function () {
-
- if (this.innerHTML.toLowerCase() == val) {
-
- this.classList.add('selectedCharacter');
-
- } else {
- this.classList.remove('selectedCharacter');
- }
-
- });
-
- return this;
- };
-
- $.fn.alphaClear = function (val) {
-
- return this.alphaValue('');
- };
-
-});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/channelitems.js b/dashboard-ui/scripts/channelitems.js
index 286f72b77b..7838d3ddfa 100644
--- a/dashboard-ui/scripts/channelitems.js
+++ b/dashboard-ui/scripts/channelitems.js
@@ -247,32 +247,8 @@
function updateFilterControls(page) {
- var query = getQuery(page);
- $('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
}
- pageIdOn('pageinit', "channelItemsPage", function () {
-
- var page = this;
-
- $('.alphabetPicker', this).on('alphaselect', function (e, character) {
-
- var query = getQuery(page);
- query.NameStartsWithOrGreater = character;
- query.StartIndex = 0;
-
- reloadItems(page);
-
- }).on('alphaclear', function (e) {
-
- var query = getQuery(page);
- query.NameStartsWithOrGreater = '';
-
- reloadItems(page);
- });
-
- });
-
pageIdOn('pagebeforeshow', "channelItemsPage", function () {
var page = this;
diff --git a/dashboard-ui/scripts/itemlistpage.js b/dashboard-ui/scripts/itemlistpage.js
index d8ad427be3..9e6651f470 100644
--- a/dashboard-ui/scripts/itemlistpage.js
+++ b/dashboard-ui/scripts/itemlistpage.js
@@ -1,4 +1,4 @@
-define(['libraryBrowser', 'jQuery'], function (libraryBrowser, $) {
+define(['libraryBrowser', 'jQuery', 'alphaPicker'], function (libraryBrowser, $, alphaPicker) {
return function (view, params) {
@@ -237,13 +237,6 @@
});
}
- function updateFilterControls() {
-
- var query = getQuery();
-
- $('.alphabetPicker', view).alphaValue(query.NameStartsWithOrGreater);
- }
-
function onListItemClick(e) {
var query = getQuery();
@@ -257,28 +250,38 @@
}
}
- $('.alphabetPicker', view).on('alphaselect', function (e, character) {
-
+ var alphaPickerElement = view.querySelector('.alphaPicker');
+ alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
+ var newValue = e.detail.value;
var query = getQuery();
- query.NameStartsWithOrGreater = character;
+ query.NameStartsWithOrGreater = newValue;
query.StartIndex = 0;
-
- reloadItems(view);
-
- }).on('alphaclear', function (e) {
-
- var query = getQuery();
- query.NameStartsWithOrGreater = '';
-
reloadItems(view);
});
+ self.alphaPicker = new alphaPicker({
+ element: alphaPickerElement
+ });
+
$(view).on('click', '.mediaItem', onListItemClick);
+ function updateFilterControls() {
+
+ var query = getQuery();
+
+ self.alphaPicker.value(query.NameStartsWithOrGreater);
+ }
+
view.addEventListener('viewbeforeshow', function (e) {
reloadItems(view);
updateFilterControls();
LibraryMenu.setBackButtonVisible(params.context);
});
+
+ view.addEventListener('viewdestroy', function (e) {
+ if (self.alphaPicker) {
+ self.alphaPicker.destroy();
+ }
+ });
};
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js
index a357890966..26449340fc 100644
--- a/dashboard-ui/scripts/librarylist.js
+++ b/dashboard-ui/scripts/librarylist.js
@@ -1593,7 +1593,7 @@
cardProgress.innerHTML = progressHtml;
}
else {
- cardProgress = card.querySelector('.cardFooter');
+ cardProgress = card.querySelector('.cardProgress');
if (cardProgress) {
cardProgress.parentNode.removeChild(cardProgress);
}
diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js
index 22823b4d7a..8877114a72 100644
--- a/dashboard-ui/scripts/mediaplayer-video.js
+++ b/dashboard-ui/scripts/mediaplayer-video.js
@@ -432,12 +432,28 @@
nowPlayingTabButtons[i].addEventListener('click', onTabButtonClick);
}
- elem.querySelector('.chapterCard').addEventListener('click', function () {
+ elem.addEventListener('click', function (e) {
- self.seek(parseInt(this.getAttribute('data-position')));
+ var chapterCard = parentWithClass(e.target, 'chapterCard');
+ if (chapterCard) {
+ self.seek(parseInt(chapterCard.getAttribute('data-position')));
+ }
});
};
+ function parentWithClass(elem, className) {
+
+ while (!elem.classList || !elem.classList.contains(className)) {
+ elem = elem.parentNode;
+
+ if (!elem) {
+ return null;
+ }
+ }
+
+ return elem;
+ }
+
function getNowPlayingTabsHtml(item) {
var html = '';
diff --git a/dashboard-ui/scripts/movies.js b/dashboard-ui/scripts/movies.js
index a3a676ca38..ea0ee1d293 100644
--- a/dashboard-ui/scripts/movies.js
+++ b/dashboard-ui/scripts/movies.js
@@ -1,4 +1,4 @@
-define(['jQuery'], function ($) {
+define(['jQuery', 'alphaPicker'], function ($, alphaPicker) {
return function (view, params, tabContent) {
@@ -270,25 +270,22 @@
var query = getQuery(context);
- $('.alphabetPicker', context).alphaValue(query.NameStartsWithOrGreater);
+ self.alphaPicker.value(query.NameStartsWithOrGreater);
}
function initPage(context) {
- $('.alphabetPicker', context).on('alphaselect', function (e, character) {
-
+ var alphaPickerElement = context.querySelector('.alphaPicker');
+ alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
+ var newValue = e.detail.value;
var query = getQuery(context);
- query.NameStartsWithOrGreater = character;
+ query.NameStartsWithOrGreater = newValue;
query.StartIndex = 0;
-
reloadItems(context);
+ });
- }).on('alphaclear', function (e) {
-
- var query = getQuery(context);
- query.NameStartsWithOrGreater = '';
-
- reloadItems(context);
+ self.alphaPicker = new alphaPicker({
+ element: alphaPickerElement
});
context.querySelector('.itemsContainer').addEventListener('needsrefresh', function () {
diff --git a/dashboard-ui/scripts/movietrailers.js b/dashboard-ui/scripts/movietrailers.js
index 4c912feb8c..63da5df9c5 100644
--- a/dashboard-ui/scripts/movietrailers.js
+++ b/dashboard-ui/scripts/movietrailers.js
@@ -1,4 +1,4 @@
-define(['jQuery'], function ($) {
+define(['jQuery', 'alphaPicker'], function ($, alphaPicker) {
var data = {};
@@ -159,25 +159,22 @@
var query = getQuery(tabContent);
- $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
+ self.alphaPicker.value(query.NameStartsWithOrGreater);
}
function initPage(page, tabContent) {
- $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
-
- var query = getQuery(page);
- query.NameStartsWithOrGreater = character;
+ var alphaPickerElement = tabContent.querySelector('.alphaPicker');
+ alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
+ var newValue = e.detail.value;
+ var query = getQuery(tabContent);
+ query.NameStartsWithOrGreater = newValue;
query.StartIndex = 0;
-
reloadItems(tabContent);
+ });
- }).on('alphaclear', function (e) {
-
- var query = getQuery(page);
- query.NameStartsWithOrGreater = '';
-
- reloadItems(tabContent);
+ self.alphaPicker = new alphaPicker({
+ element: alphaPickerElement
});
tabContent.querySelector('.itemsContainer').addEventListener('needsrefresh', function () {
diff --git a/dashboard-ui/scripts/musicalbumartists.js b/dashboard-ui/scripts/musicalbumartists.js
index f05469d4a8..20e3177ba6 100644
--- a/dashboard-ui/scripts/musicalbumartists.js
+++ b/dashboard-ui/scripts/musicalbumartists.js
@@ -1,4 +1,4 @@
-define(['jQuery'], function ($) {
+define(['jQuery', 'alphaPicker'], function ($, alphaPicker) {
return function (view, params, tabContent) {
@@ -156,25 +156,20 @@
var query = getQuery(tabContent);
- $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
+ self.alphaPicker.value(query.NameStartsWithOrGreater);
}
- $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
-
+ var alphaPickerElement = tabContent.querySelector('.alphaPicker');
+ alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
+ var newValue = e.detail.value;
var query = getQuery(tabContent);
-
- query.NameStartsWithOrGreater = character;
+ query.NameStartsWithOrGreater = newValue;
query.StartIndex = 0;
-
reloadItems(tabContent);
+ });
- }).on('alphaclear', function (e) {
-
- var query = getQuery(tabContent);
-
- query.NameStartsWithOrGreater = '';
-
- reloadItems(tabContent);
+ self.alphaPicker = new alphaPicker({
+ element: alphaPickerElement
});
self.renderTab = function () {
diff --git a/dashboard-ui/scripts/musicalbums.js b/dashboard-ui/scripts/musicalbums.js
index 55de337146..0aa2164b96 100644
--- a/dashboard-ui/scripts/musicalbums.js
+++ b/dashboard-ui/scripts/musicalbums.js
@@ -1,4 +1,4 @@
-define(['jQuery'], function ($) {
+define(['jQuery', 'alphaPicker'], function ($, alphaPicker) {
return function (view, params, tabContent) {
@@ -209,33 +209,20 @@
var query = getQuery(page);
- $('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
+ self.alphaPicker.value(query.NameStartsWithOrGreater);
}
- $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
-
+ var alphaPickerElement = tabContent.querySelector('.alphaPicker');
+ alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
+ var newValue = e.detail.value;
var query = getQuery(tabContent);
-
- if (query.SortBy.indexOf('AlbumArtist') == -1) {
- query.NameStartsWithOrGreater = character;
- query.AlbumArtistStartsWithOrGreater = '';
- } else {
- query.AlbumArtistStartsWithOrGreater = character;
- query.NameStartsWithOrGreater = '';
- }
-
+ query.NameStartsWithOrGreater = newValue;
query.StartIndex = 0;
-
reloadItems(tabContent);
+ });
- }).on('alphaclear', function (e) {
-
- var query = getQuery(tabContent);
-
- query.NameStartsWithOrGreater = '';
- query.AlbumArtistStartsWithOrGreater = '';
-
- reloadItems(tabContent);
+ self.alphaPicker = new alphaPicker({
+ element: alphaPickerElement
});
self.renderTab = function () {
diff --git a/dashboard-ui/scripts/musicartists.js b/dashboard-ui/scripts/musicartists.js
index 3fa00ba7a3..6b74f14160 100644
--- a/dashboard-ui/scripts/musicartists.js
+++ b/dashboard-ui/scripts/musicartists.js
@@ -1,4 +1,4 @@
-define(['jQuery'], function ($) {
+define(['jQuery', 'alphaPicker'], function ($, alphaPicker) {
return function (view, params, tabContent) {
@@ -156,27 +156,23 @@
var query = getQuery(tabContent);
- $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
+ self.alphaPicker.value(query.NameStartsWithOrGreater);
}
- $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
-
+ var alphaPickerElement = tabContent.querySelector('.alphaPicker');
+ alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
+ var newValue = e.detail.value;
var query = getQuery(tabContent);
-
- query.NameStartsWithOrGreater = character;
+ query.NameStartsWithOrGreater = newValue;
query.StartIndex = 0;
-
- reloadItems(tabContent);
-
- }).on('alphaclear', function (e) {
-
- var query = getQuery(tabContent);
-
- query.NameStartsWithOrGreater = '';
-
reloadItems(tabContent);
});
-
self.renderTab = function () {
+
+ self.alphaPicker = new alphaPicker({
+ element: alphaPickerElement
+ });
+
+ self.renderTab = function () {
reloadItems(tabContent);
};
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 22f5f4a841..9988b11e7f 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -1792,6 +1792,7 @@ var AppInfo = {};
define("libjass", [bowerPath + "/libjass/libjass", "css!" + bowerPath + "/libjass/libjass"], returnFirstDependency);
define("emby-button", [embyWebComponentsBowerPath + "/emby-button/emby-button"], returnFirstDependency);
+ define("alphaPicker", [embyWebComponentsBowerPath + "/alphapicker/alphapicker"], returnFirstDependency);
define("paper-icon-button-light", [embyWebComponentsBowerPath + "/emby-button/paper-icon-button-light"]);
define("emby-input", [embyWebComponentsBowerPath + "/emby-input/emby-input"], returnFirstDependency);
@@ -2582,7 +2583,7 @@ var AppInfo = {};
defineRoute({
path: '/itemlist.html',
- dependencies: ['paper-checkbox', 'scripts/alphapicker'],
+ dependencies: ['paper-checkbox'],
autoFocus: false,
controller: 'scripts/itemlistpage',
transition: 'fade'
@@ -2744,7 +2745,7 @@ var AppInfo = {};
defineRoute({
path: '/movies.html',
- dependencies: ['paper-checkbox', 'scripts/alphapicker', 'emby-button'],
+ dependencies: ['paper-checkbox', 'emby-button'],
autoFocus: false,
controller: 'scripts/moviesrecommended',
transition: 'fade'
@@ -2752,7 +2753,7 @@ var AppInfo = {};
defineRoute({
path: '/music.html',
- dependencies: ['scripts/alphapicker'],
+ dependencies: [],
controller: 'scripts/musicrecommended',
autoFocus: false,
transition: 'fade'
diff --git a/dashboard-ui/scripts/tvrecommended.js b/dashboard-ui/scripts/tvrecommended.js
index 7ee10c4568..009c098dab 100644
--- a/dashboard-ui/scripts/tvrecommended.js
+++ b/dashboard-ui/scripts/tvrecommended.js
@@ -1,4 +1,4 @@
-define(['libraryBrowser', 'scripts/alphapicker', 'scrollStyles'], function (libraryBrowser) {
+define(['libraryBrowser', 'scrollStyles'], function (libraryBrowser) {
return function (view, params) {
diff --git a/dashboard-ui/scripts/tvshows.js b/dashboard-ui/scripts/tvshows.js
index 90974ded37..01d18bd7ba 100644
--- a/dashboard-ui/scripts/tvshows.js
+++ b/dashboard-ui/scripts/tvshows.js
@@ -1,4 +1,4 @@
-define(['events', 'libraryBrowser', 'imageLoader', 'jQuery'], function (events, libraryBrowser, imageLoader, $) {
+define(['events', 'libraryBrowser', 'imageLoader', 'jQuery', 'alphaPicker'], function (events, libraryBrowser, imageLoader, $, alphaPicker) {
return function (view, params, tabContent) {
@@ -187,26 +187,22 @@
function updateFilterControls(tabContent) {
var query = getQuery(tabContent);
- $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
+ self.alphaPicker.value(query.NameStartsWithOrGreater);
}
function initPage(tabContent) {
- $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
-
+ var alphaPickerElement = tabContent.querySelector('.alphaPicker');
+ alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
+ var newValue = e.detail.value;
var query = getQuery(tabContent);
- query.NameStartsWithOrGreater = character;
+ query.NameStartsWithOrGreater = newValue;
query.StartIndex = 0;
-
reloadItems(tabContent);
+ });
- }).on('alphaclear', function (e) {
-
- var query = getQuery(tabContent);
- query.NameStartsWithOrGreater = '';
- getQuery(tabContent).StartIndex = 0;
-
- reloadItems(tabContent);
+ self.alphaPicker = new alphaPicker({
+ element: alphaPickerElement
});
tabContent.querySelector('.btnFilter').addEventListener('click', function () {
diff --git a/dashboard-ui/tv.html b/dashboard-ui/tv.html
index 26e96d5407..e115cf0acf 100644
--- a/dashboard-ui/tv.html
+++ b/dashboard-ui/tv.html
@@ -60,10 +60,10 @@