diff --git a/dashboard-ui/home.html b/dashboard-ui/home.html
index e239e5e046..64ca8a7f9b 100644
--- a/dashboard-ui/home.html
+++ b/dashboard-ui/home.html
@@ -1,4 +1,4 @@
-
+
diff --git a/dashboard-ui/legacy/objectassign.js b/dashboard-ui/legacy/objectassign.js
new file mode 100644
index 0000000000..79568f8cba
--- /dev/null
+++ b/dashboard-ui/legacy/objectassign.js
@@ -0,0 +1,23 @@
+if (typeof Object.assign != 'function') {
+ (function () {
+ Object.assign = function (target) {
+ 'use strict';
+ if (target === undefined || target === null) {
+ throw new TypeError('Cannot convert undefined or null to object');
+ }
+
+ var output = Object(target);
+ for (var index = 1; index < arguments.length; index++) {
+ var source = arguments[index];
+ if (source !== undefined && source !== null) {
+ for (var nextKey in source) {
+ if (source.hasOwnProperty(nextKey)) {
+ output[nextKey] = source[nextKey];
+ }
+ }
+ }
+ }
+ return output;
+ };
+ })();
+}
\ No newline at end of file
diff --git a/dashboard-ui/scripts/chromecast.js b/dashboard-ui/scripts/chromecast.js
index 95ccff292d..44743a2b75 100644
--- a/dashboard-ui/scripts/chromecast.js
+++ b/dashboard-ui/scripts/chromecast.js
@@ -343,7 +343,7 @@
receiverName = castPlayer.session.receiver.friendlyName;
}
- message = $.extend(message, {
+ message = Object.assign(message, {
userId: Dashboard.getCurrentUserId(),
deviceId: ApiClient.deviceId(),
accessToken: ApiClient.accessToken(),
diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js
index 3ea11d50e8..385845f54a 100644
--- a/dashboard-ui/scripts/indexpage.js
+++ b/dashboard-ui/scripts/indexpage.js
@@ -272,47 +272,10 @@
});
}
- pageIdOn('pageinit', "indexPage", function () {
-
- var page = this;
-
- var tabs = page.querySelector('paper-tabs');
- var pages = page.querySelector('neon-animated-pages');
-
- LibraryBrowser.configurePaperLibraryTabs(page, tabs, pages, 'home.html');
-
- pages.addEventListener('tabchange', function (e) {
- loadTab(page, parseInt(e.target.selected));
- });
-
- page.querySelector('.btnTakeTour').addEventListener('click', function () {
- takeTour(page, Dashboard.getCurrentUserId());
- });
-
- if (AppInfo.enableHomeTabs) {
- page.classList.remove('noSecondaryNavPage');
- page.querySelector('.libraryViewNav').classList.remove('hide');
- } else {
- page.classList.add('noSecondaryNavPage');
- page.querySelector('.libraryViewNav').classList.add('hide');
- }
- });
-
- pageIdOn('pageshow', "indexPage", function () {
- var page = this;
- Events.on(MediaController, 'playbackstop', onPlaybackStop);
- });
-
- pageIdOn('pagebeforehide', "indexPage", function () {
-
- var page = this;
- Events.off(MediaController, 'playbackstop', onPlaybackStop);
- });
-
function onPlaybackStop(e, state) {
if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') {
- var page = $($.mobile.activePage)[0];
+ var page = $.mobile.activePage;
var pages = page.querySelector('neon-animated-pages');
pages.dispatchEvent(new CustomEvent("tabchange", {}));
@@ -328,4 +291,36 @@
renderHomeTab: loadHomeTab
};
+ return function (view, params) {
+
+ var self = this;
+
+ var pages = view.querySelector('neon-animated-pages');
+
+ LibraryBrowser.configurePaperLibraryTabs(view, view.querySelector('paper-tabs'), pages, 'home.html');
+
+ pages.addEventListener('tabchange', function (e) {
+ loadTab(view, parseInt(e.target.selected));
+ });
+
+ view.querySelector('.btnTakeTour').addEventListener('click', function () {
+ takeTour(view, Dashboard.getCurrentUserId());
+ });
+
+ if (AppInfo.enableHomeTabs) {
+ view.classList.remove('noSecondaryNavPage');
+ view.querySelector('.libraryViewNav').classList.remove('hide');
+ } else {
+ view.classList.add('noSecondaryNavPage');
+ view.querySelector('.libraryViewNav').classList.add('hide');
+ }
+
+ view.addEventListener('viewshow', function (e) {
+ Events.on(MediaController, 'playbackstop', onPlaybackStop);
+ });
+
+ view.addEventListener('viewbeforehide', function (e) {
+ Events.off(MediaController, 'playbackstop', onPlaybackStop);
+ });
+ }
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js
index 9c7a308761..3066988577 100644
--- a/dashboard-ui/scripts/librarybrowser.js
+++ b/dashboard-ui/scripts/librarybrowser.js
@@ -1,4 +1,4 @@
-define(['playlistManager', 'appSettings', 'appStorage'], function (playlistManager, appSettings, appStorage) {
+define(['playlistManager', 'appSettings', 'appStorage', 'jQuery'], function (playlistManager, appSettings, appStorage, $) {
var libraryBrowser = (function (window, document, screen) {
diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js
index 1b944d13c1..8cdd82589f 100644
--- a/dashboard-ui/scripts/librarylist.js
+++ b/dashboard-ui/scripts/librarylist.js
@@ -1,4 +1,4 @@
-define(['appSettings', 'appStorage', 'libraryBrowser'], function (appSettings, appStorage, LibraryBrowser) {
+define(['appSettings', 'appStorage', 'libraryBrowser', 'jQuery'], function (appSettings, appStorage, LibraryBrowser, $) {
var showOverlayTimeout;
diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js
index 92c846eca6..1b0ed63eca 100644
--- a/dashboard-ui/scripts/librarymenu.js
+++ b/dashboard-ui/scripts/librarymenu.js
@@ -244,7 +244,7 @@
document.body.classList.add('bodyWithPopupOpen');
}
- var pageElem = $($.mobile.activePage)[0];
+ var pageElem = $.mobile.activePage;
if (requiresDrawerRefresh || requiresDashboardDrawerRefresh) {
@@ -435,7 +435,7 @@
view.icon = 'live-tv';
view.onclick = "LibraryBrowser.showTab('livetv.html', 0);";
- var guideView = $.extend({}, view);
+ var guideView = Object.assign({}, view);
guideView.Name = Globalize.translate('ButtonGuide');
guideView.ImageTags = {};
guideView.icon = 'dvr';
@@ -443,7 +443,7 @@
guideView.onclick = "LibraryBrowser.showTab('livetv.html', 1);";
list.push(guideView);
- var recordedTvView = $.extend({}, view);
+ var recordedTvView = Object.assign({}, view);
recordedTvView.Name = Globalize.translate('ButtonRecordedTv');
recordedTvView.ImageTags = {};
recordedTvView.icon = 'video-library';
@@ -457,13 +457,25 @@
});
}
+ function showBySelector(selector, show) {
+ var elem = document.querySelector(selector);
+
+ if (elem) {
+ if (show) {
+ elem.classList.remove('hide');
+ } else {
+ elem.classList.add('hide');
+ }
+ }
+ }
+
function updateLibraryMenu(user) {
if (!user) {
- $('.adminMenuOptions').addClass('hide');
- $('.lnkMySync').addClass('hide');
- $('.userMenuOptions').addClass('hide');
+ showBySelector('.adminMenuOptions', false);
+ showBySelector('.lnkMySync', false);
+ showBySelector('.userMenuOptions', false);
return;
}
@@ -541,19 +553,23 @@
libraryMenuOptions.innerHTML = html;
var elem = libraryMenuOptions;
- $('.sidebarLink', elem).off('click', onSidebarLinkClick).on('click', onSidebarLinkClick);
+ var sidebarLinks = elem.querySelectorAll('.sidebarLink');
+ for (var i = 0, length = sidebarLinks.length; i < length; i++) {
+ sidebarLinks[i].removeEventListener('click', onSidebarLinkClick);
+ sidebarLinks[i].addEventListener('click', onSidebarLinkClick);
+ }
});
if (user.Policy.IsAdministrator) {
- $('.adminMenuOptions').removeClass('hide');
+ showBySelector('.adminMenuOptions', true);
} else {
- $('.adminMenuOptions').addClass('hide');
+ showBySelector('.adminMenuOptions', false);
}
if (user.Policy.EnableSync) {
- $('.lnkMySync').removeClass('hide');
+ showBySelector('.lnkMySync', true);
} else {
- $('.lnkMySync').addClass('hide');
+ showBySelector('.lnkMySync', false);
}
}
diff --git a/dashboard-ui/scripts/mediacontroller.js b/dashboard-ui/scripts/mediacontroller.js
index 3263a910ed..88d233e88c 100644
--- a/dashboard-ui/scripts/mediacontroller.js
+++ b/dashboard-ui/scripts/mediacontroller.js
@@ -38,7 +38,7 @@
NowPlayingItem: state.NowPlayingItem
};
- info = $.extend(info, state.PlayState);
+ info = Object.assign(info, state.PlayState);
ApiClient.reportPlaybackStart(info);
@@ -126,12 +126,11 @@
function showActivePlayerMenuInternal(playerInfo) {
- var id = 'dlg' + new Date().getTime();
var html = '';
- var style = "";
-
- html += '';
+ var dlg = document.createElement('paper-dialog');
+ dlg.setAttribute('with-backdrop', 'with-backdrop');
+ dlg.setAttribute('role', 'alertdialog');
html += '';
html += (playerInfo.deviceName || playerInfo.name);
@@ -160,21 +159,19 @@
html += '' + Globalize.translate('ButtonCancel') + '';
html += '
';
- html += '';
+ dlg.innerHTML = html;
- $(document.body).append(html);
+ document.body.appendChild(dlg);
setTimeout(function () {
- var dlg = document.getElementById(id);
-
- $('.chkMirror', dlg).on('change', onMirrorChange);
+ dlg.querySelector('.chkMirror').addEventListener('change', onMirrorChange);
dlg.open();
// Has to be assigned a z-index after the call to .open()
- $(dlg).on('iron-overlay-closed', function () {
- $(this).remove();
+ dlg.addEventListener('iron-overlay-closed', function () {
+ dlg.parentNode.removeChild(dlg);
});
}, 100);
@@ -1045,7 +1042,9 @@
document.addEventListener('headercreated', function () {
- $('.btnCast').off('click', onCastButtonClicked).on('click', onCastButtonClicked);
+ var btnCast = document.querySelector('.viewMenuBar .btnCast');
+ btnCast.removeEventListener('click', onCastButtonClicked);
+ btnCast.addEventListener('click', onCastButtonClicked);
});
pageClassOn('pagebeforeshow', "page", function () {
diff --git a/dashboard-ui/scripts/nowplayingbar.js b/dashboard-ui/scripts/nowplayingbar.js
index 76da0097ad..fc201304ca 100644
--- a/dashboard-ui/scripts/nowplayingbar.js
+++ b/dashboard-ui/scripts/nowplayingbar.js
@@ -273,7 +273,7 @@
return;
}
- require(['css!css/nowplayingbar.css', 'paper-slider'], function () {
+ require(['jQuery', 'css!css/nowplayingbar.css', 'paper-slider'], function ($) {
nowPlayingBarElement = document.querySelector('.nowPlayingBar');
diff --git a/dashboard-ui/scripts/registrationservices.js b/dashboard-ui/scripts/registrationservices.js
index 95e606826d..317ef3e31d 100644
--- a/dashboard-ui/scripts/registrationservices.js
+++ b/dashboard-ui/scripts/registrationservices.js
@@ -1,4 +1,4 @@
-define(['appStorage'], function (appStorage) {
+define(['appStorage', 'jQuery'], function (appStorage, $) {
var supporterPlaybackKey = 'lastSupporterPlaybackMessage4';
diff --git a/dashboard-ui/scripts/search.js b/dashboard-ui/scripts/search.js
index 818e7f9eda..a6b6ac709c 100644
--- a/dashboard-ui/scripts/search.js
+++ b/dashboard-ui/scripts/search.js
@@ -1,4 +1,4 @@
-define(['jQuery', 'searchmenu'], function ($) {
+define(['libraryBrowser'], function (libraryBrowser) {
var searchHintTimeout;
@@ -84,7 +84,7 @@
return i;
});
- var html = LibraryBrowser.getPosterViewHtml({
+ var html = libraryBrowser.getPosterViewHtml({
items: hints,
shape: "auto",
lazy: true,
@@ -151,12 +151,13 @@
if (createIfNeeded && !elem) {
- var html = '
';
+ var div = document.createElement('div');
+ div.className = 'searchResultsOverlay ui-body-b smoothScrollY background-theme-b';
- html += '
';
+ div.innerHTML = '
';
- elem = $(html).appendTo(document.body)[0];
- $(elem).createCardMenus();
+ document.body.appendChild(div);
+ libraryBrowser.createCardMenus(div);
}
return elem;
diff --git a/dashboard-ui/scripts/searchmenu.js b/dashboard-ui/scripts/searchmenu.js
index ccd9cc0191..bffecdf7d7 100644
--- a/dashboard-ui/scripts/searchmenu.js
+++ b/dashboard-ui/scripts/searchmenu.js
@@ -1,4 +1,4 @@
-define(['jQuery'], function ($) {
+define([], function () {
function fadeIn(elem, iterations) {
@@ -16,15 +16,25 @@
self.show = function () {
require(['css!css/search.css'], function () {
- $('.headerSearchInput').val('');
- $('.btnCloseSearch').hide();
- var elem = $('.viewMenuSearch').removeClass('hide')[0];
+ document.querySelector('.headerSearchInput').value = '';
- fadeIn(elem, 1).onfinish = function () {
- $('.headerSearchInput').focus();
- $('.btnCloseSearch').show();
+ document.querySelector('.btnCloseSearch').classList.add('hide');
+ var elem = document.querySelector('.viewMenuSearch');
+
+ elem.classList.remove('hide');
+
+ var onFinish = function() {
+ document.querySelector('.headerSearchInput').focus();
+ document.querySelector('.btnCloseSearch').classList.remove('hide');
};
+
+ if (elem.animate) {
+ fadeIn(elem, 1).onfinish = onFinish;
+ } else {
+ onFinish();
+ }
+
});
};
@@ -37,48 +47,40 @@
}
if (!viewMenuSearch.classList.contains('hide')) {
- $('.btnCloseSearch').hide();
+ document.querySelector('.btnCloseSearch').classList.add('hide');
viewMenuSearch.classList.add('hide');
}
};
- $('.viewMenuSearchForm').on('submit', function () {
-
+ document.querySelector('.viewMenuSearchForm').addEventListener('submit', function (e) {
+ e.preventDefault();
return false;
});
- $('.btnCloseSearch').on('click', function () {
+ document.querySelector('.btnCloseSearch').addEventListener('click', function () {
self.hide();
Events.trigger(self, 'closed');
});
- $('.headerSearchInput').on("keyup", function (e) {
+ document.querySelector('.headerSearchInput').addEventListener('keyup', function (e) {
// Down key
if (e.keyCode == 40) {
- //var first = $('.card', panel)[0];
-
- //if (first) {
- // first.focus();
- //}
-
+ e.preventDefault();
return false;
} else {
Events.trigger(self, 'change', [this.value]);
}
-
- }).on("search", function (e) {
-
- if (!this.value) {
-
- Events.trigger(self, 'change', ['']);
- }
-
});
+ document.querySelector('.headerSearchInput').addEventListener('search', function (e) {
+ if (!this.value) {
+ Events.trigger(self, 'change', ['']);
+ }
+ });
}
window.SearchMenu = new searchMenu();
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 0f3190c8f9..4115a2dcc7 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -1854,6 +1854,7 @@ var AppInfo = {};
define("slideshow", [embyWebComponentsBowerPath + "/slideshow/slideshow"], returnFirstDependency);
define('fetch', [bowerPath + '/fetch/fetch']);
+ define('objectassign', ['legacy/objectassign']);
define('webcomponentsjs', [bowerPath + '/webcomponentsjs/webcomponents-lite.min.js']);
define('native-promise-only', [bowerPath + '/native-promise-only/lib/npo.src']);
@@ -2133,6 +2134,10 @@ var AppInfo = {};
deps.push('fetch');
}
+ if (typeof Object.assign != 'function') {
+ deps.push('objectassign');
+ }
+
require(deps, function (connectionManagerExports, credentialProviderFactory) {
window.MediaBrowser = window.MediaBrowser || {};
@@ -2403,13 +2408,14 @@ var AppInfo = {};
defineRoute({
path: '/home.html',
- dependencies: ['jQuery'],
- autoFocus: false
+ dependencies: ['paper-tabs', 'neon-animated-pages'],
+ autoFocus: false,
+ controller: 'scripts/indexpage'
});
defineRoute({
path: '/index.html',
- dependencies: ['jQuery'],
+ dependencies: [],
autoFocus: false,
isDefaultRoute: true
});