diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-20 20:33:05 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-20 20:33:05 -0500 |
| commit | 767cdc1f6f6a63ce997fc9476911e2c361f9d402 (patch) | |
| tree | 49add55976f895441167c66cfa95e5c7688d18ce /MediaBrowser.WebDashboard/Html/scripts/ScheduledTasksPage.js | |
| parent | 845554722efaed872948a9e0f7202e3ef52f1b6e (diff) | |
Pushing missing changes
Diffstat (limited to 'MediaBrowser.WebDashboard/Html/scripts/ScheduledTasksPage.js')
| -rw-r--r-- | MediaBrowser.WebDashboard/Html/scripts/ScheduledTasksPage.js | 170 |
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 |
