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/ScheduledTaskPage.js | |
| parent | 845554722efaed872948a9e0f7202e3ef52f1b6e (diff) | |
Pushing missing changes
Diffstat (limited to 'MediaBrowser.WebDashboard/Html/scripts/ScheduledTaskPage.js')
| -rw-r--r-- | MediaBrowser.WebDashboard/Html/scripts/ScheduledTaskPage.js | 294 |
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 |
