diff --git a/package.json b/package.json
index 97a6a26015..94d06ae186 100644
--- a/package.json
+++ b/package.json
@@ -92,6 +92,8 @@
"test": [
"src/components/accessSchedule/accessSchedule.js",
"src/components/actionSheet/actionSheet.js",
+ "src/components/activitylog.js",
+ "src/components/alert.js",
"src/components/alphaPicker/alphaPicker.js",
"src/components/appFooter/appFooter.js",
"src/components/autoFocuser.js",
@@ -205,6 +207,7 @@
"src/plugins/bookPlayer/plugin.js",
"src/plugins/bookPlayer/tableOfContents.js",
"src/plugins/photoPlayer/plugin.js",
+ "src/scripts/datetime.js",
"src/scripts/deleteHelper.js",
"src/scripts/dfnshelper.js",
"src/scripts/dom.js",
diff --git a/src/components/activitylog.js b/src/components/activitylog.js
index bbb0995063..2d5a21756f 100644
--- a/src/components/activitylog.js
+++ b/src/components/activitylog.js
@@ -1,11 +1,21 @@
-define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings', 'serverNotifications', 'connectionManager', 'emby-button', 'listViewStyle'], function (events, globalize, dom, datefns, dfnshelper, userSettings, serverNotifications, connectionManager) {
- 'use strict';
+import events from 'events';
+import globalize from 'globalize';
+import dom from 'dom';
+import * as datefns from 'date-fns';
+import dfnshelper from 'dfnshelper';
+import userSettings from 'userSettings';
+import serverNotifications from 'serverNotifications';
+import connectionManager from 'connectionManager';
+import 'emby-button';
+import 'listViewStyle';
+
+/* eslint-disable indent */
function getEntryHtml(entry, apiClient) {
- var html = '';
+ let html = '';
html += '
';
- var color = '#00a4dc';
- var icon = 'notifications';
+ let color = '#00a4dc';
+ let icon = 'notifications';
if ('Error' == entry.Severity || 'Fatal' == entry.Severity || 'Warn' == entry.Severity) {
color = '#cc0000';
@@ -56,8 +66,8 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
}
limit = limit || parseInt(elem.getAttribute('data-activitylimit') || '7');
- var minDate = new Date();
- var hasUserId = 'false' !== elem.getAttribute('data-useractivity');
+ const minDate = new Date();
+ const hasUserId = 'false' !== elem.getAttribute('data-useractivity');
if (hasUserId) {
minDate.setTime(minDate.getTime() - 24 * 60 * 60 * 1000); // one day back
@@ -74,7 +84,7 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
elem.setAttribute('data-activitystartindex', startIndex);
elem.setAttribute('data-activitylimit', limit);
if (!startIndex) {
- var activityContainer = dom.parentWithClass(elem, 'activityContainer');
+ const activityContainer = dom.parentWithClass(elem, 'activityContainer');
if (activityContainer) {
if (result.Items.length) {
@@ -91,7 +101,7 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
}
function onActivityLogUpdate(e, apiClient, data) {
- var options = this.options;
+ const options = this.options;
if (options && options.serverId === apiClient.serverId()) {
reloadData(this, options.element, apiClient);
@@ -99,14 +109,14 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
}
function onListClick(e) {
- var btnEntryInfo = dom.parentWithClass(e.target, 'btnEntryInfo');
+ const btnEntryInfo = dom.parentWithClass(e.target, 'btnEntryInfo');
if (btnEntryInfo) {
- var id = btnEntryInfo.getAttribute('data-id');
- var items = this.items;
+ const id = btnEntryInfo.getAttribute('data-id');
+ const items = this.items;
if (items) {
- var item = items.filter(function (i) {
+ const item = items.filter(function (i) {
return i.Id.toString() === id;
})[0];
@@ -118,35 +128,35 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
}
function showItemOverview(item) {
- require(['alert'], function (alert) {
+ import('alert').then(({default: alert}) => {
alert({
text: item.Overview
});
});
}
- function ActivityLog(options) {
+class ActivityLog {
+ constructor(options) {
this.options = options;
- var element = options.element;
+ const element = options.element;
element.classList.add('activityLogListWidget');
element.addEventListener('click', onListClick.bind(this));
- var apiClient = connectionManager.getApiClient(options.serverId);
+ const apiClient = connectionManager.getApiClient(options.serverId);
reloadData(this, element, apiClient);
- var onUpdate = onActivityLogUpdate.bind(this);
+ const onUpdate = onActivityLogUpdate.bind(this);
this.updateFn = onUpdate;
events.on(serverNotifications, 'ActivityLogEntry', onUpdate);
apiClient.sendMessage('ActivityLogEntryStart', '0,1500');
}
-
- ActivityLog.prototype.destroy = function () {
- var options = this.options;
+ destroy() {
+ const options = this.options;
if (options) {
options.element.classList.remove('activityLogListWidget');
connectionManager.getApiClient(options.serverId).sendMessage('ActivityLogEntryStop', '0,1500');
}
- var onUpdate = this.updateFn;
+ const onUpdate = this.updateFn;
if (onUpdate) {
events.off(serverNotifications, 'ActivityLogEntry', onUpdate);
@@ -154,7 +164,9 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
this.items = null;
this.options = null;
- };
+ }
+}
- return ActivityLog;
-});
+export default ActivityLog;
+
+/* eslint-enable indent */
diff --git a/src/components/alert.js b/src/components/alert.js
index 97b580f8f6..5d396e3a62 100644
--- a/src/components/alert.js
+++ b/src/components/alert.js
@@ -1,14 +1,17 @@
-define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize) {
- 'use strict';
+import browser from 'browser';
+import dialog from 'dialog';
+import globalize from 'globalize';
+
+/* eslint-disable indent */
function replaceAll(originalString, strReplace, strWith) {
- var reg = new RegExp(strReplace, 'ig');
+ const reg = new RegExp(strReplace, 'ig');
return originalString.replace(reg, strWith);
}
- return function (text, title) {
+ export default function (text, title) {
- var options;
+ let options;
if (typeof text === 'string') {
options = {
title: title,
@@ -21,7 +24,7 @@ define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize)
if (browser.tv && window.alert) {
alert(replaceAll(options.text || '', '
', '\n'));
} else {
- var items = [];
+ const items = [];
items.push({
name: globalize.translate('ButtonGotIt'),
@@ -41,5 +44,6 @@ define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize)
}
return Promise.resolve();
- };
-});
+ }
+
+/* eslint-enable indent */
diff --git a/src/components/appRouter.js b/src/components/appRouter.js
index 1791aef7e2..03fcb76564 100644
--- a/src/components/appRouter.js
+++ b/src/components/appRouter.js
@@ -53,7 +53,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
break;
case 'ServerUpdateNeeded':
require(['alert'], function (alert) {
- alert({
+ alert.default({
text: globalize.translate('ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin'),
html: globalize.translate('ServerUpdateNeeded', '
https://github.com/jellyfin/jellyfin')
}).then(function () {
diff --git a/src/components/multiSelect/multiSelect.js b/src/components/multiSelect/multiSelect.js
index 7d3c241c6e..742b8e86da 100644
--- a/src/components/multiSelect/multiSelect.js
+++ b/src/components/multiSelect/multiSelect.js
@@ -346,6 +346,7 @@ import 'css!./multiSelect';
import('alert').then(({default: alert}) => {
alert({
+
text: globalize.translate('PleaseSelectTwoItems')
});
});
diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js
index 73f07a05f2..b74ca5fb3d 100644
--- a/src/components/playback/playbackmanager.js
+++ b/src/components/playback/playbackmanager.js
@@ -709,7 +709,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
function showPlaybackInfoErrorMessage(instance, errorCode, playNextTrack) {
require(['alert'], function (alert) {
- alert({
+ alert.default({
text: globalize.translate('PlaybackError' + errorCode),
title: globalize.translate('HeaderPlaybackError')
}).then(function () {
diff --git a/src/controllers/dashboard/serveractivity.js b/src/controllers/dashboard/serveractivity.js
index ed56126267..1d5a49eef7 100644
--- a/src/controllers/dashboard/serveractivity.js
+++ b/src/controllers/dashboard/serveractivity.js
@@ -16,7 +16,7 @@ import globalize from 'globalize';
view.addEventListener('viewshow', function () {
if (!activityLog) {
- activityLog = new ActivityLog({
+ activityLog = new ActivityLog.default({
serverId: ApiClient.serverId(),
element: view.querySelector('.activityItems')
});
diff --git a/src/controllers/itemDetails.js b/src/controllers/itemDetails.js
index 840de8545f..d7c0c74ee2 100644
--- a/src/controllers/itemDetails.js
+++ b/src/controllers/itemDetails.js
@@ -1787,7 +1787,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
imageLoader.lazyChildren(collectionItems);
collectionItems.querySelector('.btnAddToCollection').addEventListener('click', function () {
require(['alert'], function (alert) {
- alert({
+ alert.default({
text: globalize.translate('AddItemToCollectionHelp'),
html: globalize.translate('AddItemToCollectionHelp') + '
' + globalize.translate('ButtonLearnMore') + ''
});
diff --git a/src/plugins/chromecastPlayer/plugin.js b/src/plugins/chromecastPlayer/plugin.js
index b3f75f7a6d..dad95691fc 100644
--- a/src/plugins/chromecastPlayer/plugin.js
+++ b/src/plugins/chromecastPlayer/plugin.js
@@ -150,7 +150,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', '
function alertText(text, title) {
require(['alert'], function (alert) {
- alert({
+ alert.default({
text: text,
title: title
});
diff --git a/src/scripts/datetime.js b/src/scripts/datetime.js
index 34ff23fe63..cab59299ad 100644
--- a/src/scripts/datetime.js
+++ b/src/scripts/datetime.js
@@ -1,15 +1,16 @@
-define(['globalize'], function (globalize) {
- 'use strict';
+import globalize from 'globalize';
- function parseISO8601Date(s, toLocal) {
+/* eslint-disable indent */
+
+ export function parseISO8601Date(s, toLocal) {
// parenthese matches:
// year month day hours minutes seconds
// dotmilliseconds
// tzstring plusminus hours minutes
- var re = /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|([+-])(\d{2}):(\d{2}))?/;
+ const re = /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|([+-])(\d{2}):(\d{2}))?/;
- var d = s.match(re);
+ const d = s.match(re);
// "2010-12-07T11:00:00.000-09:00" parses to:
// ["2010-12-07T11:00:00.000-09:00", "2010", "12", "07", "11",
@@ -24,8 +25,8 @@ define(['globalize'], function (globalize) {
}
// parse strings, leading zeros into proper ints
- var a = [1, 2, 3, 4, 5, 6, 10, 11];
- for (var i in a) {
+ const a = [1, 2, 3, 4, 5, 6, 10, 11];
+ for (let i in a) {
d[a[i]] = parseInt(d[a[i]], 10);
}
d[7] = parseFloat(d[7]);
@@ -33,7 +34,7 @@ define(['globalize'], function (globalize) {
// Date.UTC(year, month[, date[, hrs[, min[, sec[, ms]]]]])
// note that month is 0-11, not 1-12
// see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/UTC
- var ms = Date.UTC(d[1], d[2] - 1, d[3], d[4], d[5], d[6]);
+ let ms = Date.UTC(d[1], d[2] - 1, d[3], d[4], d[5], d[6]);
// if there are milliseconds, add them
if (d[7] > 0) {
@@ -42,7 +43,7 @@ define(['globalize'], function (globalize) {
// if there's a timezone, calculate it
if (d[8] !== 'Z' && d[10]) {
- var offset = d[10] * 60 * 60 * 1000;
+ let offset = d[10] * 60 * 60 * 1000;
if (d[11]) {
offset += d[11] * 60 * 1000;
}
@@ -58,14 +59,14 @@ define(['globalize'], function (globalize) {
return new Date(ms);
}
- function getDisplayRunningTime(ticks) {
- var ticksPerHour = 36000000000;
- var ticksPerMinute = 600000000;
- var ticksPerSecond = 10000000;
+ export function getDisplayRunningTime(ticks) {
+ const ticksPerHour = 36000000000;
+ const ticksPerMinute = 600000000;
+ const ticksPerSecond = 10000000;
- var parts = [];
+ const parts = [];
- var hours = ticks / ticksPerHour;
+ let hours = ticks / ticksPerHour;
hours = Math.floor(hours);
if (hours) {
@@ -74,7 +75,7 @@ define(['globalize'], function (globalize) {
ticks -= (hours * ticksPerHour);
- var minutes = ticks / ticksPerMinute;
+ let minutes = ticks / ticksPerMinute;
minutes = Math.floor(minutes);
ticks -= (minutes * ticksPerMinute);
@@ -84,7 +85,7 @@ define(['globalize'], function (globalize) {
}
parts.push(minutes);
- var seconds = ticks / ticksPerSecond;
+ let seconds = ticks / ticksPerSecond;
seconds = Math.floor(seconds);
if (seconds < 10) {
@@ -95,7 +96,7 @@ define(['globalize'], function (globalize) {
return parts.join(':');
}
- var toLocaleTimeStringSupportsLocales = function () {
+ const toLocaleTimeStringSupportsLocales = function () {
try {
new Date().toLocaleTimeString('i');
} catch (e) {
@@ -106,9 +107,9 @@ define(['globalize'], function (globalize) {
function getOptionList(options) {
- var list = [];
+ const list = [];
- for (var i in options) {
+ for (const i in options) {
list.push({
name: i,
value: options[i]
@@ -118,7 +119,7 @@ define(['globalize'], function (globalize) {
return list;
}
- function toLocaleString(date, options) {
+ export function toLocaleString(date, options) {
if (!date) {
throw new Error('date cannot be null');
@@ -128,7 +129,7 @@ define(['globalize'], function (globalize) {
if (toLocaleTimeStringSupportsLocales) {
- var currentLocale = globalize.getCurrentDateTimeLocale();
+ const currentLocale = globalize.getCurrentDateTimeLocale();
if (currentLocale) {
return date.toLocaleString(currentLocale, options);
@@ -138,7 +139,7 @@ define(['globalize'], function (globalize) {
return date.toLocaleString();
}
- function toLocaleDateString(date, options) {
+ export function toLocaleDateString(date, options) {
if (!date) {
throw new Error('date cannot be null');
@@ -148,7 +149,7 @@ define(['globalize'], function (globalize) {
if (toLocaleTimeStringSupportsLocales) {
- var currentLocale = globalize.getCurrentDateTimeLocale();
+ const currentLocale = globalize.getCurrentDateTimeLocale();
if (currentLocale) {
return date.toLocaleDateString(currentLocale, options);
@@ -156,9 +157,9 @@ define(['globalize'], function (globalize) {
}
// This is essentially a hard-coded polyfill
- var optionList = getOptionList(options);
+ const optionList = getOptionList(options);
if (optionList.length === 1 && optionList[0].name === 'weekday') {
- var weekday = [];
+ const weekday = [];
weekday[0] = 'Sun';
weekday[1] = 'Mon';
weekday[2] = 'Tue';
@@ -172,7 +173,7 @@ define(['globalize'], function (globalize) {
return date.toLocaleDateString();
}
- function toLocaleTimeString(date, options) {
+ export function toLocaleTimeString(date, options) {
if (!date) {
throw new Error('date cannot be null');
@@ -182,7 +183,7 @@ define(['globalize'], function (globalize) {
if (toLocaleTimeStringSupportsLocales) {
- var currentLocale = globalize.getCurrentDateTimeLocale();
+ const currentLocale = globalize.getCurrentDateTimeLocale();
if (currentLocale) {
return date.toLocaleTimeString(currentLocale, options);
@@ -192,7 +193,7 @@ define(['globalize'], function (globalize) {
return date.toLocaleTimeString();
}
- function getDisplayTime(date) {
+ export function getDisplayTime(date) {
if (!date) {
throw new Error('date cannot be null');
@@ -217,19 +218,19 @@ define(['globalize'], function (globalize) {
});
}
- var time = toLocaleTimeString(date);
+ let time = toLocaleTimeString(date);
- var timeLower = time.toLowerCase();
+ const timeLower = time.toLowerCase();
if (timeLower.indexOf('am') !== -1 || timeLower.indexOf('pm') !== -1) {
time = timeLower;
- var hour = date.getHours() % 12;
- var suffix = date.getHours() > 11 ? 'pm' : 'am';
+ let hour = date.getHours() % 12;
+ const suffix = date.getHours() > 11 ? 'pm' : 'am';
if (!hour) {
hour = 12;
}
- var minutes = date.getMinutes();
+ let minutes = date.getMinutes();
if (minutes < 10) {
minutes = '0' + minutes;
@@ -239,7 +240,7 @@ define(['globalize'], function (globalize) {
time = hour + minutes + suffix;
} else {
- var timeParts = time.split(':');
+ const timeParts = time.split(':');
// Trim off seconds
if (timeParts.length > 2) {
@@ -253,21 +254,21 @@ define(['globalize'], function (globalize) {
return time;
}
- function isRelativeDay(date, offsetInDays) {
+ export function isRelativeDay(date, offsetInDays) {
if (!date) {
throw new Error('date cannot be null');
}
- var yesterday = new Date();
- var day = yesterday.getDate() + offsetInDays;
+ const yesterday = new Date();
+ const day = yesterday.getDate() + offsetInDays;
yesterday.setDate(day); // automatically adjusts month/year appropriately
return date.getFullYear() === yesterday.getFullYear() && date.getMonth() === yesterday.getMonth() && date.getDate() === day;
}
- return {
+ export default {
parseISO8601Date: parseISO8601Date,
getDisplayRunningTime: getDisplayRunningTime,
toLocaleDateString: toLocaleDateString,
@@ -279,4 +280,5 @@ define(['globalize'], function (globalize) {
return toLocaleTimeStringSupportsLocales;
}
};
-});
+
+/* eslint-enable indent */
diff --git a/src/scripts/serverNotifications.js b/src/scripts/serverNotifications.js
index 2553c284f0..8e212ab718 100644
--- a/src/scripts/serverNotifications.js
+++ b/src/scripts/serverNotifications.js
@@ -15,7 +15,7 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
});
} else {
require(['alert'], function (alert) {
- alert({ title: args.Header, text: args.Text });
+ alert.default({ title: args.Header, text: args.Text });
});
}
}
diff --git a/src/scripts/site.js b/src/scripts/site.js
index c3f93d9545..17bff0decb 100644
--- a/src/scripts/site.js
+++ b/src/scripts/site.js
@@ -187,7 +187,7 @@ var Dashboard = {
}
require(['alert'], function (alert) {
- alert({
+ alert.default({
title: options.title || Globalize.translate('HeaderAlert'),
text: options.message
}).then(options.callback || function () {});