aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.WebDashboard/Html/scripts/ScheduledTasksPage.js
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.WebDashboard/Html/scripts/ScheduledTasksPage.js')
-rw-r--r--MediaBrowser.WebDashboard/Html/scripts/ScheduledTasksPage.js170
1 files changed, 170 insertions, 0 deletions
diff --git a/MediaBrowser.WebDashboard/Html/scripts/ScheduledTasksPage.js b/MediaBrowser.WebDashboard/Html/scripts/ScheduledTasksPage.js
new file mode 100644
index 000000000..d822db722
--- /dev/null
+++ b/MediaBrowser.WebDashboard/Html/scripts/ScheduledTasksPage.js
@@ -0,0 +1,170 @@
+var ScheduledTasksPage = {
+
+ onPageShow: function () {
+
+ Dashboard.showLoadingMsg();
+
+ ScheduledTasksPage.reloadList(true);
+
+ $(document).on("websocketmessage", ScheduledTasksPage.onWebSocketMessage).on("websocketopen", ScheduledTasksPage.onWebSocketConnectionChange).on("websocketerror", ScheduledTasksPage.onWebSocketConnectionChange).on("websocketclose", ScheduledTasksPage.onWebSocketConnectionChange);
+ },
+
+ onPageHide: function () {
+ $(document).off("websocketmessage", ScheduledTasksPage.onWebSocketMessage).off("websocketopen", ScheduledTasksPage.onWebSocketConnectionChange).off("websocketerror", ScheduledTasksPage.onWebSocketConnectionChange).off("websocketclose", ScheduledTasksPage.onWebSocketConnectionChange);
+ ScheduledTasksPage.stopInterval();
+ },
+
+ startInterval: function () {
+
+ if (Dashboard.isWebSocketOpen()) {
+ Dashboard.sendWebSocketMessage("ScheduledTasksInfoStart", "1500,1500");
+ }
+ },
+
+ stopInterval: function () {
+
+ if (Dashboard.isWebSocketOpen()) {
+ Dashboard.sendWebSocketMessage("ScheduledTasksInfoStop");
+ }
+ },
+
+ onWebSocketMessage: function (e, msg) {
+
+ if (msg.MessageType == "ScheduledTasksInfo") {
+ ScheduledTasksPage.populateList(msg.Data);
+ }
+ },
+
+ onWebSocketConnectionChange: function() {
+ ScheduledTasksPage.reloadList(true);
+ },
+
+ reloadList: function (updateInterval) {
+
+ if (updateInterval) {
+ ScheduledTasksPage.stopInterval();
+ }
+
+ ApiClient.getScheduledTasks().done(function (tasks) {
+ ScheduledTasksPage.populateList(tasks);
+ Dashboard.hideLoadingMsg();
+
+ if (updateInterval) {
+ ScheduledTasksPage.startInterval();
+ }
+
+ });
+ },
+
+ populateList: function (tasks) {
+
+ tasks = tasks.sort(function (a, b) {
+
+ a = a.Category + " " + a.Name;
+ b = b.Category + " " + b.Name;
+
+ if (a == b) {
+ return 0;
+ }
+
+ if (a < b) {
+ return -1;
+ }
+
+ return 1;
+ });
+
+ var page = $($.mobile.activePage);
+
+ var html = "";
+
+ var currentCategory;
+
+ for (var i = 0, length = tasks.length; i < length; i++) {
+
+ var task = tasks[i];
+
+ if (task.Category != currentCategory) {
+ currentCategory = task.Category;
+
+ html += "<li data-role='list-divider'>" + currentCategory + "</li>";
+ }
+
+ html += "<li>";
+
+ html += "<a href='scheduledTask.html?id=" + task.Id + "'>";
+
+ html += "<h3>" + task.Name + "</h3>";
+
+ if (task.State == "Idle") {
+
+ if (task.LastExecutionResult) {
+
+ var text = "Last run " + humane_date(task.LastExecutionResult.EndTimeUtc) + ', taking ' + humane_elapsed(task.LastExecutionResult.StartTimeUtc, task.LastExecutionResult.EndTimeUtc);
+
+ if (task.LastExecutionResult.Status == "Failed") {
+ text += " <span style='color:#FF0000;'>(failed)</span>";
+ }
+ else if (task.LastExecutionResult.Status == "Cancelled") {
+ text += " <span style='color:#0026FF;'>(cancelled)</span>";
+ }
+ else if (task.LastExecutionResult.Status == "Aborted") {
+ text += " <span style='color:#FF0000;'>(Aborted by server shutdown)</span>";
+ }
+
+ html += "<p>" + text + "</p>";
+ }
+
+ html += "<a href='#' data-icon='play' onclick='ScheduledTasksPage.startTask(\"" + task.Id + "\");'>Start</a>";
+ }
+ else if (task.State == "Running") {
+
+ var progress = task.CurrentProgress || { PercentComplete: 0 };
+ progress = Math.round(progress.PercentComplete);
+
+ html += '<p><progress max="100" value="' + progress + '" title="' + progress + '%">';
+ html += '' + progress + '%';
+ html += '</progress>';
+
+ html += "<span style='color:#009F00;margin-left:5px;'>" + progress + "%</span>";
+ html += '</p>';
+
+ html += "<a href='#' data-icon='stop' onclick='ScheduledTasksPage.stopTask(\"" + task.Id + "\");'>Stop</a>";
+
+ } else {
+
+ html += "<p style='color:#FF0000;'>Stopping</p>";
+ html += "<a href='#' data-icon='play' style='visibility:hidden;'>Start</a>";
+ }
+
+ html += "</a>";
+
+ html += "</li>";
+ }
+
+ $('#ulScheduledTasks', page).html(html).listview('refresh');
+ },
+
+ startTask: function (id) {
+
+ Dashboard.showLoadingMsg();
+
+ ApiClient.startScheduledTask(id).done(function (result) {
+
+ ScheduledTasksPage.reloadList();
+ });
+
+ },
+
+ stopTask: function (id) {
+
+ Dashboard.showLoadingMsg();
+
+ ApiClient.stopScheduledTask(id).done(function (result) {
+
+ ScheduledTasksPage.reloadList();
+ });
+ }
+};
+
+$(document).on('pageshow', "#scheduledTasksPage", ScheduledTasksPage.onPageShow).on('pagehide', "#scheduledTasksPage", ScheduledTasksPage.onPageHide); \ No newline at end of file