aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.WebDashboard/Html/scripts/ScheduledTaskPage.js
diff options
context:
space:
mode:
authorLukePulverenti <luke.pulverenti@gmail.com>2013-02-20 20:33:05 -0500
committerLukePulverenti <luke.pulverenti@gmail.com>2013-02-20 20:33:05 -0500
commit767cdc1f6f6a63ce997fc9476911e2c361f9d402 (patch)
tree49add55976f895441167c66cfa95e5c7688d18ce /MediaBrowser.WebDashboard/Html/scripts/ScheduledTaskPage.js
parent845554722efaed872948a9e0f7202e3ef52f1b6e (diff)
Pushing missing changes
Diffstat (limited to 'MediaBrowser.WebDashboard/Html/scripts/ScheduledTaskPage.js')
-rw-r--r--MediaBrowser.WebDashboard/Html/scripts/ScheduledTaskPage.js294
1 files changed, 294 insertions, 0 deletions
diff --git a/MediaBrowser.WebDashboard/Html/scripts/ScheduledTaskPage.js b/MediaBrowser.WebDashboard/Html/scripts/ScheduledTaskPage.js
new file mode 100644
index 000000000..e7ea33f80
--- /dev/null
+++ b/MediaBrowser.WebDashboard/Html/scripts/ScheduledTaskPage.js
@@ -0,0 +1,294 @@
+var ScheduledTaskPage = {
+
+ onPageShow: function () {
+
+ ScheduledTaskPage.refreshScheduledTask();
+ },
+
+ refreshScheduledTask: function () {
+ Dashboard.showLoadingMsg();
+
+ var id = getParameterByName('id');
+
+
+ ApiClient.getScheduledTask(id).done(ScheduledTaskPage.loadScheduledTask);
+ },
+
+ loadScheduledTask: function (task) {
+
+ Dashboard.setPageTitle(task.Name);
+
+ $('#pTaskDescription', $.mobile.activePage).html(task.Description);
+
+ ScheduledTaskPage.loadTaskTriggers(task);
+
+ Dashboard.hideLoadingMsg();
+ },
+
+ loadTaskTriggers: function (task) {
+
+ var html = '';
+
+ html += '<li data-role="list-divider"><h3>Task Triggers</h3></li>';
+
+ for (var i = 0, length = task.Triggers.length; i < length; i++) {
+
+ var trigger = task.Triggers[i];
+
+ html += '<li>';
+
+ html += '<a href="#">';
+ html += ScheduledTaskPage.getTriggerFriendlyName(trigger);
+ html += '</a>';
+
+ html += '<a href="#" onclick="ScheduledTaskPage.confirmDeleteTrigger(' + i + ');">Delete</a>';
+
+ html += '</li>';
+ }
+
+ $('#ulTaskTriggers', $.mobile.activePage).html(html).listview('refresh');
+ },
+
+ getTriggerFriendlyName: function (trigger) {
+
+ if (trigger.Type == 'DailyTrigger') {
+ return 'Daily at ' + ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks);
+ }
+
+ if (trigger.Type == 'WeeklyTrigger') {
+
+ return trigger.DayOfWeek + 's at ' + ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks);
+ }
+
+ if (trigger.Type == 'SystemEventTrigger') {
+
+ if (trigger.SystemEvent == 'WakeFromSleep') {
+ return 'On wake from sleep';
+ }
+ }
+
+ if (trigger.Type == 'IntervalTrigger') {
+
+ var hours = trigger.IntervalTicks / 36000000000;
+
+ if (hours == .25) {
+ return "Every 15 minutes";
+ }
+ if (hours == .5) {
+ return "Every 30 minutes";
+ }
+ if (hours == .75) {
+ return "Every 45 minutes";
+ }
+ if (hours == 1) {
+ return "Every hour";
+ }
+
+ return 'Every ' + hours + ' hours';
+ }
+
+ if (trigger.Type == 'StartupTrigger') {
+ return 'On application startup';
+ }
+
+ return trigger.Type;
+ },
+
+ getDisplayTime: function (ticks) {
+
+ var hours = ticks / 36000000000;
+
+ if (hours < 1) {
+ hours = 0;
+ }
+
+ hours = parseInt(hours);
+
+ ticks -= (hours * 36000000000);
+
+ var minutes = parseInt(ticks / 600000000);
+
+ var suffix = "am";
+
+ if (hours > 11) {
+ suffix = "pm";
+ }
+
+ hours = hours % 12;
+
+ if (hours == 0) {
+ hours = 12;
+ }
+
+ if (minutes < 10) {
+ minutes = '0' + minutes;
+ }
+
+ return hours + ':' + minutes + ' ' + suffix;
+ },
+
+ showAddTriggerPopup: function () {
+
+ var page = $.mobile.activePage;
+
+ $('#selectTriggerType', page).val('DailyTrigger').trigger('change').selectmenu('refresh');
+
+ $('#popupAddTrigger', page).popup("open").on("popupafterclose", function () {
+
+ $('#addTriggerForm', page).off("submit");
+ $(this).off("popupafterclose");
+ });
+
+ $('#addTriggerForm', page).on('submit', function () {
+
+ ScheduledTaskPage.addTrigger();
+
+ return false;
+ });
+ },
+
+ addTrigger: function () {
+
+ Dashboard.showLoadingMsg();
+
+ var id = getParameterByName('id');
+
+ ApiClient.getScheduledTask(id).done(function (task) {
+
+ task.Triggers.push(ScheduledTaskPage.getTriggerToAdd());
+
+ ApiClient.updateScheduledTaskTriggers(task.Id, task.Triggers).done(function () {
+
+ $('#popupAddTrigger').popup('close');
+
+ ScheduledTaskPage.refreshScheduledTask();
+
+ });
+
+ });
+
+ },
+
+ confirmDeleteTrigger: function (index) {
+
+ Dashboard.confirm("Are you sure you wish to delete this task trigger?", "Delete Task Trigger", function (result) {
+
+ if (result) {
+ ScheduledTaskPage.deleteTrigger(index);
+ }
+
+ });
+
+ },
+
+ deleteTrigger: function (index) {
+
+ Dashboard.showLoadingMsg();
+
+ var id = getParameterByName('id');
+
+
+ ApiClient.getScheduledTask(id).done(function (task) {
+
+ task.Triggers.remove(index);
+
+ ApiClient.updateScheduledTaskTriggers(task.Id, task.Triggers).done(function () {
+
+ ScheduledTaskPage.refreshScheduledTask();
+
+ });
+
+ });
+ },
+
+ refreshTriggerFields: function (triggerType) {
+
+ var page = $.mobile.activePage;
+
+ if (triggerType == 'DailyTrigger') {
+
+ $('#fldTimeOfDay', page).show();
+ $('#fldDayOfWeek', page).hide();
+ $('#fldSelectSystemEvent', page).hide();
+ $('#fldSelectInterval', page).hide();
+ $('#txtTimeOfDay', page).attr('required', 'required');
+ }
+
+ else if (triggerType == 'WeeklyTrigger') {
+ $('#fldTimeOfDay', page).show();
+ $('#fldDayOfWeek', page).show();
+ $('#fldSelectSystemEvent', page).hide();
+ $('#fldSelectInterval', page).hide();
+ $('#txtTimeOfDay', page).attr('required', 'required');
+ }
+
+ else if (triggerType == 'SystemEventTrigger') {
+ $('#fldTimeOfDay', page).hide();
+ $('#fldDayOfWeek', page).hide();
+ $('#fldSelectSystemEvent', page).show();
+ $('#fldSelectInterval', page).hide();
+ $('#txtTimeOfDay', page).removeAttr('required');
+ }
+
+ else if (triggerType == 'IntervalTrigger') {
+ $('#fldTimeOfDay', page).hide();
+ $('#fldDayOfWeek', page).hide();
+ $('#fldSelectSystemEvent', page).hide();
+ $('#fldSelectInterval', page).show();
+ $('#txtTimeOfDay', page).removeAttr('required');
+ }
+
+ else if (triggerType == 'StartupTrigger') {
+ $('#fldTimeOfDay', page).hide();
+ $('#fldDayOfWeek', page).hide();
+ $('#fldSelectSystemEvent', page).hide();
+ $('#fldSelectInterval', page).hide();
+ $('#txtTimeOfDay', page).removeAttr('required');
+ }
+ },
+
+ getTriggerToAdd: function () {
+
+ var page = $.mobile.activePage;
+
+ var trigger = {
+ Type: $('#selectTriggerType', page).val()
+ };
+
+ if (trigger.Type == 'DailyTrigger') {
+ trigger.TimeOfDayTicks = ScheduledTaskPage.getTimeOfDayTicks($('#txtTimeOfDay', page).val());
+ }
+
+ else if (trigger.Type == 'WeeklyTrigger') {
+ trigger.DayOfWeek = $('#selectDayOfWeek', page).val();
+ trigger.TimeOfDayTicks = ScheduledTaskPage.getTimeOfDayTicks($('#txtTimeOfDay', page).val());
+ }
+
+ else if (trigger.Type == 'SystemEventTrigger') {
+ trigger.SystemEvent = $('#selectSystemEvent', page).val();
+ }
+
+ else if (trigger.Type == 'IntervalTrigger') {
+ trigger.IntervalTicks = $('#selectInterval', page).val();
+ }
+
+ return trigger;
+ },
+
+ getTimeOfDayTicks: function (val) {
+
+ var vals = val.split(':');
+
+ var hours = vals[0];
+ var minutes = vals[1];
+
+ // Add hours
+ var ticks = hours * 60 * 60 * 1000 * 10000;
+
+ ticks += minutes * 60 * 1000 * 10000;
+
+ return ticks;
+ }
+};
+
+$(document).on('pageshow', "#scheduledTaskPage", ScheduledTaskPage.onPageShow); \ No newline at end of file