diff --git a/README.md b/README.md index 71d6ebdf71..f9796e6173 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Jellyfin Web is the frontend used for most of the clients available for end user ### Dependencies -- Yarn +- Yarn ### Getting Started @@ -58,8 +58,7 @@ Jellyfin Web is the frontend used for most of the clients available for end user yarn install ``` -3. Run webpack dev server +3. Run the web client with webpack for local development. ```sh yarn serve ``` - diff --git a/src/components/actionsheet/package.json b/src/components/actionsheet/package.json deleted file mode 100644 index 622f1e075d..0000000000 --- a/src/components/actionsheet/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "actionsheet.js" -} \ No newline at end of file diff --git a/src/components/backdrop/style.css b/src/components/backdrop/backdrop.css similarity index 100% rename from src/components/backdrop/style.css rename to src/components/backdrop/backdrop.css diff --git a/src/components/backdrop/backdrop.js b/src/components/backdrop/backdrop.js index 61f458dd87..ae07ac3abc 100644 --- a/src/components/backdrop/backdrop.js +++ b/src/components/backdrop/backdrop.js @@ -1,4 +1,4 @@ -define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style'], function (browser, connectionManager, playbackManager, dom) { +define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./backdrop'], function (browser, connectionManager, playbackManager, dom) { 'use strict'; function enableAnimation(elem) { diff --git a/src/components/backdrop/package.json b/src/components/backdrop/package.json deleted file mode 100644 index 5f04e53a9e..0000000000 --- a/src/components/backdrop/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "backdrop.js" -} \ No newline at end of file diff --git a/src/components/dialog/package.json b/src/components/dialog/package.json deleted file mode 100644 index d13dd844ba..0000000000 --- a/src/components/dialog/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "dialog.js" -} \ No newline at end of file diff --git a/src/components/dialogHelper/package.json b/src/components/dialogHelper/package.json deleted file mode 100644 index 71863d045f..0000000000 --- a/src/components/dialogHelper/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "dialogHelper.js" -} \ No newline at end of file diff --git a/src/components/emby-input/package.json b/src/components/emby-input/package.json deleted file mode 100644 index 07be9f7b45..0000000000 --- a/src/components/emby-input/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "emby-input.js" -} \ No newline at end of file diff --git a/src/components/emby-radio/package.json b/src/components/emby-radio/package.json deleted file mode 100644 index 2c1b97bd32..0000000000 --- a/src/components/emby-radio/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "emby-radio.js" -} \ No newline at end of file diff --git a/src/components/emby-tabs/package.json b/src/components/emby-tabs/package.json deleted file mode 100644 index 0813d041c7..0000000000 --- a/src/components/emby-tabs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "emby-tabs.js" -} \ No newline at end of file diff --git a/src/components/headroom/package.json b/src/components/headroom/package.json deleted file mode 100644 index 9c6c42c82a..0000000000 --- a/src/components/headroom/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "headroom.js" -} \ No newline at end of file diff --git a/src/components/homescreensettings/homescreensettings.template.html b/src/components/homescreensettings/homescreensettings.template.html index 56be1bc5a8..1ed2ec1b9c 100644 --- a/src/components/homescreensettings/homescreensettings.template.html +++ b/src/components/homescreensettings/homescreensettings.template.html @@ -104,32 +104,21 @@
- -

- ${HeaderLibraryOrder} -

-
- -
- +

${HeaderLibraryOrder}

+
-
- -
+
-
-

- ${HeaderLibraryFolders} -

+

${HeaderLibraryFolders}

${LabelSelectFolderGroups}

diff --git a/src/components/navdrawer/package.json b/src/components/navdrawer/package.json deleted file mode 100644 index d02800957b..0000000000 --- a/src/components/navdrawer/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "navdrawer.js" -} \ No newline at end of file diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js index 62de365d99..2c3e45b630 100644 --- a/src/components/notifications/notifications.js +++ b/src/components/notifications/notifications.js @@ -2,7 +2,6 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir 'use strict'; function onOneDocumentClick() { - document.removeEventListener('click', onOneDocumentClick); document.removeEventListener('keydown', onOneDocumentClick); @@ -10,15 +9,14 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir Notification.requestPermission(); } } + document.addEventListener('click', onOneDocumentClick); document.addEventListener('keydown', onOneDocumentClick); var serviceWorkerRegistration; function closeAfter(notification, timeoutMs) { - setTimeout(function () { - if (notification.close) { notification.close(); } else if (notification.cancel) { @@ -28,9 +26,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir } function resetRegistration() { - var serviceWorker = navigator.serviceWorker; - if (serviceWorker) { serviceWorker.ready.then(function (registration) { serviceWorkerRegistration = registration; @@ -269,4 +265,4 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir showNotification(notification, 0, apiClient); }); -}); \ No newline at end of file +}); diff --git a/src/components/toast/package.json b/src/components/toast/package.json deleted file mode 100644 index 2e64841a7f..0000000000 --- a/src/components/toast/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "toast.js" -} \ No newline at end of file diff --git a/src/components/usersettings/usersettingsbuilder.js b/src/components/usersettings/usersettingsbuilder.js index 47ad2751ca..f852dacc43 100644 --- a/src/components/usersettings/usersettingsbuilder.js +++ b/src/components/usersettings/usersettingsbuilder.js @@ -1,8 +1,7 @@ -define(['appSettings', 'events'], function (appsettings, events) { +define(['appSettings', 'events'], function (appSettings, events) { 'use strict'; function onSaveTimeout() { - var self = this; self.saveTimeout = null; self.currentApiClient.updateDisplayPreferences('usersettings', self.displayPrefs, self.currentUserId, 'emby'); @@ -12,6 +11,7 @@ define(['appSettings', 'events'], function (appsettings, events) { if (instance.saveTimeout) { clearTimeout(instance.saveTimeout); } + instance.saveTimeout = setTimeout(onSaveTimeout.bind(instance), 50); } @@ -19,7 +19,6 @@ define(['appSettings', 'events'], function (appsettings, events) { } UserSettings.prototype.setUserInfo = function (userId, apiClient) { - if (this.saveTimeout) { clearTimeout(this.saveTimeout); } @@ -49,14 +48,9 @@ define(['appSettings', 'events'], function (appsettings, events) { }; UserSettings.prototype.set = function (name, value, enableOnServer) { - var userId = this.currentUserId; - if (!userId) { - throw new Error('userId cannot be null'); - } - var currentValue = this.get(name, enableOnServer); - var result = appsettings.set(name, value, userId); + var result = appSettings.set(name, value, userId); if (enableOnServer !== false && this.displayPrefs) { this.displayPrefs.CustomPrefs[name] = value == null ? value : value.toString(); @@ -72,108 +66,70 @@ define(['appSettings', 'events'], function (appsettings, events) { UserSettings.prototype.get = function (name, enableOnServer) { var userId = this.currentUserId; - if (!userId) { - // TODO: I'd like to continue to throw this exception but it causes issues with offline use - // Revisit in the future and restore it - return null; - //throw new Error('userId cannot be null'); + if (enableOnServer !== false && this.displayPrefs) { + return this.displayPrefs.CustomPrefs[name]; } - if (enableOnServer !== false) { - if (this.displayPrefs) { - return this.displayPrefs.CustomPrefs[name]; - } - } - - return appsettings.get(name, userId); + return appSettings.get(name, userId); }; UserSettings.prototype.serverConfig = function (config) { - var apiClient = this.currentApiClient; - if (config) { - return apiClient.updateUserConfiguration(this.currentUserId, config); - - } else { - - return apiClient.getUser(this.currentUserId).then(function (user) { - - return user.Configuration; - }); } + + return apiClient.getUser(this.currentUserId).then(function (user) { + return user.Configuration; + }); }; UserSettings.prototype.enableCinemaMode = function (val) { - if (val != null) { return this.set('enableCinemaMode', val.toString(), false); } val = this.get('enableCinemaMode', false); - - if (val) { - return val !== 'false'; - } - - return true; + return val !== 'false'; }; UserSettings.prototype.enableNextVideoInfoOverlay = function (val) { - if (val != null) { return this.set('enableNextVideoInfoOverlay', val.toString()); } - val = this.get('enableNextVideoInfoOverlay'); - + val = this.get('enableNextVideoInfoOverlay', false); return val !== 'false'; }; UserSettings.prototype.enableThemeSongs = function (val) { - if (val != null) { return this.set('enableThemeSongs', val.toString(), false); } val = this.get('enableThemeSongs', false); - return val !== 'false'; }; UserSettings.prototype.enableThemeVideos = function (val) { - if (val != null) { return this.set('enableThemeVideos', val.toString(), false); } val = this.get('enableThemeVideos', false); - - if (val) { - return val !== 'false'; - } - - return UserSettings.defaults.enableThemeVideos; + return val !== 'false'; }; UserSettings.prototype.enableBackdrops = function (val) { - if (val != null) { return this.set('enableBackdrops', val.toString(), false); } val = this.get('enableBackdrops', false); - - if (val) { - return val !== 'false'; - } - - return UserSettings.defaults.enableBackdrops; + return val !== 'false'; }; UserSettings.prototype.language = function (val) { - if (val != null) { return this.set('language', val.toString(), false); } @@ -182,7 +138,6 @@ define(['appSettings', 'events'], function (appsettings, events) { }; UserSettings.prototype.dateTimeLocale = function (val) { - if (val != null) { return this.set('datetimelocale', val.toString(), false); } @@ -191,7 +146,6 @@ define(['appSettings', 'events'], function (appsettings, events) { }; UserSettings.prototype.skipBackLength = function (val) { - if (val != null) { return this.set('skipBackLength', val.toString()); } @@ -200,7 +154,6 @@ define(['appSettings', 'events'], function (appsettings, events) { }; UserSettings.prototype.skipForwardLength = function (val) { - if (val != null) { return this.set('skipForwardLength', val.toString()); } @@ -209,7 +162,6 @@ define(['appSettings', 'events'], function (appsettings, events) { }; UserSettings.prototype.dashboardTheme = function (val) { - if (val != null) { return this.set('dashboardTheme', val); } @@ -218,55 +170,41 @@ define(['appSettings', 'events'], function (appsettings, events) { }; UserSettings.prototype.skin = function (val) { - if (val != null) { return this.set('skin', val, false); } - return this.get('skin', false) || UserSettings.defaults.skin; + return this.get('skin', false); }; UserSettings.prototype.theme = function (val) { - if (val != null) { return this.set('appTheme', val, false); } - return this.get('appTheme', false) || UserSettings.defaults.theme; + return this.get('appTheme', false); }; UserSettings.prototype.screensaver = function (val) { - if (val != null) { return this.set('screensaver', val, false); } - return this.get('screensaver', false) || UserSettings.defaults.screensaver; + return this.get('screensaver', false); }; UserSettings.prototype.soundEffects = function (val) { - if (val != null) { return this.set('soundeffects', val, false); } - return this.get('soundeffects', false) || UserSettings.defaults.soundEffects; - }; - - // apps should set these values - UserSettings.defaults = { - theme: null, - enableThemeVideos: true + return this.get('soundeffects', false); }; UserSettings.prototype.loadQuerySettings = function (key, query) { - var values = this.get(key); - if (values) { - values = JSON.parse(values); - return Object.assign(query, values); } @@ -274,12 +212,11 @@ define(['appSettings', 'events'], function (appsettings, events) { }; UserSettings.prototype.saveQuerySettings = function (key, query) { - var values = {}; - if (query.SortBy) { values.SortBy = query.SortBy; } + if (query.SortOrder) { values.SortOrder = query.SortOrder; } @@ -288,26 +225,20 @@ define(['appSettings', 'events'], function (appsettings, events) { }; UserSettings.prototype.getSubtitleAppearanceSettings = function (key) { - key = key || 'localplayersubtitleappearance3'; - return JSON.parse(this.get(key, false) || '{}'); }; UserSettings.prototype.setSubtitleAppearanceSettings = function (value, key) { - key = key || 'localplayersubtitleappearance3'; - return this.set(key, JSON.stringify(value), false); }; UserSettings.prototype.setFilter = function (key, value) { - return this.set(key, value, true); }; UserSettings.prototype.getFilter = function (key) { - return this.get(key, true); }; diff --git a/src/components/viewManager/package.json b/src/components/viewManager/package.json deleted file mode 100644 index 819371af71..0000000000 --- a/src/components/viewManager/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "viewManager.js" -} \ No newline at end of file diff --git a/src/components/clearbutton.css b/src/css/clearbutton.css similarity index 100% rename from src/components/clearbutton.css rename to src/css/clearbutton.css diff --git a/src/components/flexstyles.css b/src/css/flexstyles.css similarity index 100% rename from src/components/flexstyles.css rename to src/css/flexstyles.css diff --git a/src/css/fonts.sized.css b/src/css/fonts.sized.css index 073b74167c..9cdd666109 100644 --- a/src/css/fonts.sized.css +++ b/src/css/fonts.sized.css @@ -25,7 +25,6 @@ h3 { /* This is supposed to be 1080p, but had to reduce the min height to account for possible browser chrome */ @media all and (min-height: 1000px) { - html { font-size: 27px; } diff --git a/src/index.html b/src/index.html index d95784a3dc..ad42c2618a 100644 --- a/src/index.html +++ b/src/index.html @@ -2,6 +2,7 @@ + @@ -20,43 +21,43 @@ - + - + - + - + - + - + - + - + - + - + @@ -98,7 +99,9 @@
-
+
+
+
diff --git a/src/scripts/site.js b/src/scripts/site.js index 828b882e7e..14d7d01bbb 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -724,9 +724,9 @@ var AppInfo = {}; define("programStyles", ["css!" + componentsPath + "/guide/programs"], returnFirstDependency); define("listViewStyle", ["css!" + componentsPath + "/listview/listview"], returnFirstDependency); define("formDialogStyle", ["css!" + componentsPath + "/formdialog"], returnFirstDependency); - define("clearButtonStyle", ["css!" + componentsPath + "/clearbutton"], returnFirstDependency); + define("clearButtonStyle", ["css!css/clearbutton"], returnFirstDependency); define("cardStyle", ["css!" + componentsPath + "/cardbuilder/card"], returnFirstDependency); - define("flexStyles", ["css!" + componentsPath + "/flexstyles"], returnFirstDependency); + define("flexStyles", ["css!css/flexstyles"], returnFirstDependency); // define legacy features // TODO delete the rest of these diff --git a/src/standalone.js b/src/standalone.js index 5692e8dddb..04d40d6b11 100644 --- a/src/standalone.js +++ b/src/standalone.js @@ -1,4 +1,4 @@ (function() { "use strict"; - window.appMode='standalone'; + window.appMode = 'standalone'; })();