mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge pull request #1592 from Camc314/migrate-to-ES6-38
Migration of scheduledtask and scheduledtasks to ES6 modules
This commit is contained in:
commit
bb158284d6
3 changed files with 65 additions and 44 deletions
|
@ -155,6 +155,8 @@
|
||||||
"src/controllers/dashboard/networking.js",
|
"src/controllers/dashboard/networking.js",
|
||||||
"src/controllers/dashboard/playback.js",
|
"src/controllers/dashboard/playback.js",
|
||||||
"src/controllers/dashboard/plugins/repositories.js",
|
"src/controllers/dashboard/plugins/repositories.js",
|
||||||
|
"src/controllers/dashboard/scheduledtasks/scheduledtask.js",
|
||||||
|
"src/controllers/dashboard/scheduledtasks/scheduledtasks.js",
|
||||||
"src/controllers/dashboard/dlna/profile.js",
|
"src/controllers/dashboard/dlna/profile.js",
|
||||||
"src/controllers/dashboard/dlna/profiles.js",
|
"src/controllers/dashboard/dlna/profiles.js",
|
||||||
"src/controllers/dashboard/dlna/settings.js",
|
"src/controllers/dashboard/dlna/settings.js",
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby-button', 'emby-select'], function ($, loading, datetime, dom, globalize) {
|
import $ from 'jQuery';
|
||||||
'use strict';
|
import loading from 'loading';
|
||||||
|
import datetime from 'datetime';
|
||||||
|
import dom from 'dom';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import 'emby-input';
|
||||||
|
import 'emby-button';
|
||||||
|
import 'emby-select';
|
||||||
|
|
||||||
|
/* eslint-disable indent */
|
||||||
|
|
||||||
function fillTimeOfDay(select) {
|
function fillTimeOfDay(select) {
|
||||||
|
|
||||||
var options = [];
|
const options = [];
|
||||||
|
|
||||||
for (var i = 0; i < 86400000; i += 900000) {
|
for (let i = 0; i < 86400000; i += 900000) {
|
||||||
options.push({
|
options.push({
|
||||||
name: ScheduledTaskPage.getDisplayTime(i * 10000),
|
name: ScheduledTaskPage.getDisplayTime(i * 10000),
|
||||||
value: i * 10000
|
value: i * 10000
|
||||||
|
@ -18,15 +26,15 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
}
|
}
|
||||||
|
|
||||||
Array.prototype.remove = function (from, to) {
|
Array.prototype.remove = function (from, to) {
|
||||||
var rest = this.slice((to || from) + 1 || this.length);
|
const rest = this.slice((to || from) + 1 || this.length);
|
||||||
this.length = from < 0 ? this.length + from : from;
|
this.length = from < 0 ? this.length + from : from;
|
||||||
return this.push.apply(this, rest);
|
return this.push.apply(this, rest);
|
||||||
};
|
};
|
||||||
|
|
||||||
var ScheduledTaskPage = {
|
const ScheduledTaskPage = {
|
||||||
refreshScheduledTask: function (view) {
|
refreshScheduledTask: function (view) {
|
||||||
loading.show();
|
loading.show();
|
||||||
var id = getParameterByName('id');
|
let id = getParameterByName('id');
|
||||||
ApiClient.getScheduledTask(id).then(function (task) {
|
ApiClient.getScheduledTask(id).then(function (task) {
|
||||||
ScheduledTaskPage.loadScheduledTask(view, task);
|
ScheduledTaskPage.loadScheduledTask(view, task);
|
||||||
});
|
});
|
||||||
|
@ -42,11 +50,11 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
loading.hide();
|
loading.hide();
|
||||||
},
|
},
|
||||||
loadTaskTriggers: function (context, task) {
|
loadTaskTriggers: function (context, task) {
|
||||||
var html = '';
|
let html = '';
|
||||||
html += '<div class="paperList">';
|
html += '<div class="paperList">';
|
||||||
|
|
||||||
for (var i = 0, length = task.Triggers.length; i < length; i++) {
|
for (let i = 0, length = task.Triggers.length; i < length; i++) {
|
||||||
var trigger = task.Triggers[i];
|
const trigger = task.Triggers[i];
|
||||||
|
|
||||||
html += '<div class="listItem listItem-border">';
|
html += '<div class="listItem listItem-border">';
|
||||||
html += '<span class="material-icons listItemIcon schedule"></span>';
|
html += '<span class="material-icons listItemIcon schedule"></span>';
|
||||||
|
@ -58,7 +66,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
html += "<div class='listItemBodyText'>" + ScheduledTaskPage.getTriggerFriendlyName(trigger) + '</div>';
|
html += "<div class='listItemBodyText'>" + ScheduledTaskPage.getTriggerFriendlyName(trigger) + '</div>';
|
||||||
if (trigger.MaxRuntimeMs) {
|
if (trigger.MaxRuntimeMs) {
|
||||||
html += '<div class="listItemBodyText secondary">';
|
html += '<div class="listItemBodyText secondary">';
|
||||||
var hours = trigger.MaxRuntimeTicks / 36e9;
|
const hours = trigger.MaxRuntimeTicks / 36e9;
|
||||||
if (hours == 1) {
|
if (hours == 1) {
|
||||||
html += globalize.translate('ValueTimeLimitSingleHour');
|
html += globalize.translate('ValueTimeLimitSingleHour');
|
||||||
} else {
|
} else {
|
||||||
|
@ -92,7 +100,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
|
|
||||||
if (trigger.Type == 'IntervalTrigger') {
|
if (trigger.Type == 'IntervalTrigger') {
|
||||||
|
|
||||||
var hours = trigger.IntervalTicks / 36e9;
|
const hours = trigger.IntervalTicks / 36e9;
|
||||||
|
|
||||||
if (hours == 0.25) {
|
if (hours == 0.25) {
|
||||||
return globalize.translate('EveryXMinutes', '15');
|
return globalize.translate('EveryXMinutes', '15');
|
||||||
|
@ -117,8 +125,8 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
return trigger.Type;
|
return trigger.Type;
|
||||||
},
|
},
|
||||||
getDisplayTime: function (ticks) {
|
getDisplayTime: function (ticks) {
|
||||||
var ms = ticks / 1e4;
|
const ms = ticks / 1e4;
|
||||||
var now = new Date();
|
const now = new Date();
|
||||||
now.setHours(0, 0, 0, 0);
|
now.setHours(0, 0, 0, 0);
|
||||||
now.setTime(now.getTime() + ms);
|
now.setTime(now.getTime() + ms);
|
||||||
return datetime.getDisplayTime(now);
|
return datetime.getDisplayTime(now);
|
||||||
|
@ -137,7 +145,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
},
|
},
|
||||||
deleteTrigger: function (view, index) {
|
deleteTrigger: function (view, index) {
|
||||||
loading.show();
|
loading.show();
|
||||||
var id = getParameterByName('id');
|
let id = getParameterByName('id');
|
||||||
ApiClient.getScheduledTask(id).then(function (task) {
|
ApiClient.getScheduledTask(id).then(function (task) {
|
||||||
task.Triggers.remove(index);
|
task.Triggers.remove(index);
|
||||||
ApiClient.updateScheduledTaskTriggers(task.Id, task.Triggers).then(function () {
|
ApiClient.updateScheduledTaskTriggers(task.Id, task.Triggers).then(function () {
|
||||||
|
@ -179,7 +187,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getTriggerToAdd: function (page) {
|
getTriggerToAdd: function (page) {
|
||||||
var trigger = {
|
const trigger = {
|
||||||
Type: $('#selectTriggerType', page).val()
|
Type: $('#selectTriggerType', page).val()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -194,7 +202,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
trigger.IntervalTicks = $('#selectInterval', page).val();
|
trigger.IntervalTicks = $('#selectInterval', page).val();
|
||||||
}
|
}
|
||||||
|
|
||||||
var timeLimit = $('#txtTimeLimit', page).val() || '0';
|
let timeLimit = $('#txtTimeLimit', page).val() || '0';
|
||||||
timeLimit = parseFloat(timeLimit) * 3600000;
|
timeLimit = parseFloat(timeLimit) * 3600000;
|
||||||
|
|
||||||
trigger.MaxRuntimeMs = timeLimit || null;
|
trigger.MaxRuntimeMs = timeLimit || null;
|
||||||
|
@ -202,10 +210,10 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
return trigger;
|
return trigger;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return function (view, params) {
|
export default function (view, params) {
|
||||||
function onSubmit(e) {
|
function onSubmit(e) {
|
||||||
loading.show();
|
loading.show();
|
||||||
var id = getParameterByName('id');
|
let id = getParameterByName('id');
|
||||||
ApiClient.getScheduledTask(id).then(function (task) {
|
ApiClient.getScheduledTask(id).then(function (task) {
|
||||||
task.Triggers.push(ScheduledTaskPage.getTriggerToAdd(view));
|
task.Triggers.push(ScheduledTaskPage.getTriggerToAdd(view));
|
||||||
ApiClient.updateScheduledTaskTriggers(task.Id, task.Triggers).then(function () {
|
ApiClient.updateScheduledTaskTriggers(task.Id, task.Triggers).then(function () {
|
||||||
|
@ -226,7 +234,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
ScheduledTaskPage.showAddTriggerPopup(view);
|
ScheduledTaskPage.showAddTriggerPopup(view);
|
||||||
});
|
});
|
||||||
view.addEventListener('click', function (e) {
|
view.addEventListener('click', function (e) {
|
||||||
var btnDeleteTrigger = dom.parentWithClass(e.target, 'btnDeleteTrigger');
|
const btnDeleteTrigger = dom.parentWithClass(e.target, 'btnDeleteTrigger');
|
||||||
|
|
||||||
if (btnDeleteTrigger) {
|
if (btnDeleteTrigger) {
|
||||||
ScheduledTaskPage.confirmDeleteTrigger(view, parseInt(btnDeleteTrigger.getAttribute('data-index')));
|
ScheduledTaskPage.confirmDeleteTrigger(view, parseInt(btnDeleteTrigger.getAttribute('data-index')));
|
||||||
|
@ -235,5 +243,6 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby
|
||||||
view.addEventListener('viewshow', function () {
|
view.addEventListener('viewshow', function () {
|
||||||
ScheduledTaskPage.refreshScheduledTask(view);
|
ScheduledTaskPage.refreshScheduledTask(view);
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
});
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date-fns', 'dfnshelper', 'listViewStyle', 'emby-button'], function ($, loading, events, globalize, serverNotifications, datefns, dfnshelper) {
|
import $ from 'jQuery';
|
||||||
'use strict';
|
import loading from 'loading';
|
||||||
|
import events from 'events';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import serverNotifications from 'serverNotifications';
|
||||||
|
import * as datefns from 'date-fns';
|
||||||
|
import dfnshelper from 'dfnshelper';
|
||||||
|
import 'listViewStyle';
|
||||||
|
import 'emby-button';
|
||||||
|
|
||||||
|
/* eslint-disable indent */
|
||||||
|
|
||||||
function reloadList(page) {
|
function reloadList(page) {
|
||||||
ApiClient.getScheduledTasks({
|
ApiClient.getScheduledTasks({
|
||||||
|
@ -17,10 +26,10 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date
|
||||||
return a == b ? 0 : a < b ? -1 : 1;
|
return a == b ? 0 : a < b ? -1 : 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
var currentCategory;
|
let currentCategory;
|
||||||
var html = '';
|
let html = '';
|
||||||
for (var i = 0; i < tasks.length; i++) {
|
for (let i = 0; i < tasks.length; i++) {
|
||||||
var task = tasks[i];
|
const task = tasks[i];
|
||||||
if (task.Category != currentCategory) {
|
if (task.Category != currentCategory) {
|
||||||
currentCategory = task.Category;
|
currentCategory = task.Category;
|
||||||
if (currentCategory) {
|
if (currentCategory) {
|
||||||
|
@ -63,11 +72,11 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTaskProgressHtml(task) {
|
function getTaskProgressHtml(task) {
|
||||||
var html = '';
|
let html = '';
|
||||||
if (task.State === 'Idle') {
|
if (task.State === 'Idle') {
|
||||||
if (task.LastExecutionResult) {
|
if (task.LastExecutionResult) {
|
||||||
var endtime = Date.parse(task.LastExecutionResult.EndTimeUtc);
|
const endtime = Date.parse(task.LastExecutionResult.EndTimeUtc);
|
||||||
var starttime = Date.parse(task.LastExecutionResult.StartTimeUtc);
|
const starttime = Date.parse(task.LastExecutionResult.StartTimeUtc);
|
||||||
html += globalize.translate('LabelScheduledTaskLastRan', datefns.formatDistanceToNow(endtime, dfnshelper.localeWithSuffix),
|
html += globalize.translate('LabelScheduledTaskLastRan', datefns.formatDistanceToNow(endtime, dfnshelper.localeWithSuffix),
|
||||||
datefns.formatDistance(starttime, endtime, { locale: dfnshelper.getLocale() }));
|
datefns.formatDistance(starttime, endtime, { locale: dfnshelper.getLocale() }));
|
||||||
if (task.LastExecutionResult.Status === 'Failed') {
|
if (task.LastExecutionResult.Status === 'Failed') {
|
||||||
|
@ -79,7 +88,7 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (task.State === 'Running') {
|
} else if (task.State === 'Running') {
|
||||||
var progress = (task.CurrentProgressPercentage || 0).toFixed(1);
|
const progress = (task.CurrentProgressPercentage || 0).toFixed(1);
|
||||||
html += '<div style="display:flex;align-items:center;">';
|
html += '<div style="display:flex;align-items:center;">';
|
||||||
html += '<div class="taskProgressOuter" title="' + progress + '%" style="flex-grow:1;">';
|
html += '<div class="taskProgressOuter" title="' + progress + '%" style="flex-grow:1;">';
|
||||||
html += '<div class="taskProgressInner" style="width:' + progress + '%;">';
|
html += '<div class="taskProgressInner" style="width:' + progress + '%;">';
|
||||||
|
@ -94,7 +103,7 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date
|
||||||
}
|
}
|
||||||
|
|
||||||
function setTaskButtonIcon(button, icon) {
|
function setTaskButtonIcon(button, icon) {
|
||||||
var inner = button.querySelector('.material-icons');
|
let inner = button.querySelector('.material-icons');
|
||||||
inner.classList.remove('stop', 'play_arrow');
|
inner.classList.remove('stop', 'play_arrow');
|
||||||
inner.classList.add(icon);
|
inner.classList.add(icon);
|
||||||
}
|
}
|
||||||
|
@ -114,10 +123,10 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date
|
||||||
$(elem).parents('.listItem')[0].setAttribute('data-status', state);
|
$(elem).parents('.listItem')[0].setAttribute('data-status', state);
|
||||||
}
|
}
|
||||||
|
|
||||||
return function(view, params) {
|
export default function(view, params) {
|
||||||
function updateTasks(tasks) {
|
function updateTasks(tasks) {
|
||||||
for (var i = 0; i < tasks.length; i++) {
|
for (let i = 0; i < tasks.length; i++) {
|
||||||
var task = tasks[i];
|
const task = tasks[i];
|
||||||
view.querySelector('#taskProgress' + task.Id).innerHTML = getTaskProgressHtml(task);
|
view.querySelector('#taskProgress' + task.Id).innerHTML = getTaskProgressHtml(task);
|
||||||
updateTaskButton(view.querySelector('#btnTask' + task.Id), task.State);
|
updateTaskButton(view.querySelector('#btnTask' + task.Id), task.State);
|
||||||
}
|
}
|
||||||
|
@ -146,12 +155,12 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date
|
||||||
pollInterval && clearInterval(pollInterval);
|
pollInterval && clearInterval(pollInterval);
|
||||||
}
|
}
|
||||||
|
|
||||||
var pollInterval;
|
let pollInterval;
|
||||||
var serverId = ApiClient.serverId();
|
const serverId = ApiClient.serverId();
|
||||||
|
|
||||||
$('.divScheduledTasks', view).on('click', '.btnStartTask', function() {
|
$('.divScheduledTasks', view).on('click', '.btnStartTask', function() {
|
||||||
var button = this;
|
const button = this;
|
||||||
var id = button.getAttribute('data-taskid');
|
let id = button.getAttribute('data-taskid');
|
||||||
ApiClient.startScheduledTask(id).then(function() {
|
ApiClient.startScheduledTask(id).then(function() {
|
||||||
updateTaskButton(button, 'Running');
|
updateTaskButton(button, 'Running');
|
||||||
reloadList(view);
|
reloadList(view);
|
||||||
|
@ -159,8 +168,8 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.divScheduledTasks', view).on('click', '.btnStopTask', function() {
|
$('.divScheduledTasks', view).on('click', '.btnStopTask', function() {
|
||||||
var button = this;
|
const button = this;
|
||||||
var id = button.getAttribute('data-taskid');
|
let id = button.getAttribute('data-taskid');
|
||||||
ApiClient.stopScheduledTask(id).then(function() {
|
ApiClient.stopScheduledTask(id).then(function() {
|
||||||
updateTaskButton(button, '');
|
updateTaskButton(button, '');
|
||||||
reloadList(view);
|
reloadList(view);
|
||||||
|
@ -178,5 +187,6 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date
|
||||||
reloadList(view);
|
reloadList(view);
|
||||||
events.on(serverNotifications, 'ScheduledTasksInfo', onScheduledTasksUpdate);
|
events.on(serverNotifications, 'ScheduledTasksInfo', onScheduledTasksUpdate);
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
});
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue