jellyfin-web/dashboard-ui/scripts/livetvseriestimer.js
2016-08-11 18:41:25 -04:00

130 lines
3.5 KiB
JavaScript

define(['datetime', 'dom', 'emby-itemscontainer'], function (datetime, dom) {
function getDaysOfWeek() {
// Do not localize. These are used as values, not text.
return LiveTvHelpers.getDaysOfWeek().map(function (d) {
return d.value;
});
}
function selectDays(page, days) {
var daysOfWeek = getDaysOfWeek();
for (var i = 0, length = daysOfWeek.length; i < length; i++) {
var day = daysOfWeek[i];
page.querySelector('#chk' + day).checked = days.indexOf(day) != -1;
}
}
function getDays(page) {
var daysOfWeek = getDaysOfWeek();
var days = [];
for (var i = 0, length = daysOfWeek.length; i < length; i++) {
var day = daysOfWeek[i];
if (page.querySelector('#chk' + day).checked) {
days.push(day);
}
}
return days;
}
return function (view, params) {
function renderTimer(page, item) {
page.querySelector('.itemName').innerHTML = item.Name;
page.querySelector('#txtPrePaddingMinutes').value = item.PrePaddingSeconds / 60;
page.querySelector('#txtPostPaddingMinutes').value = item.PostPaddingSeconds / 60;
page.querySelector('#chkNewOnly').checked = item.RecordNewOnly;
page.querySelector('#chkAllChannels').checked = item.RecordAnyChannel;
page.querySelector('#chkAnyTime').checked = item.RecordAnyTime;
selectDays(page, item.Days);
Dashboard.hideLoadingMsg();
}
function onSubmit(e) {
var form = this;
var id = params.id;
ApiClient.getLiveTvSeriesTimer(id).then(function (item) {
item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60;
item.PostPaddingSeconds = form.querySelector('#txtPostPaddingMinutes').value * 60;
item.RecordNewOnly = form.querySelector('#chkNewOnly').checked;
item.RecordAnyChannel = form.querySelector('#chkAllChannels').checked;
item.RecordAnyTime = form.querySelector('#chkAnyTime').checked;
item.Days = getDays(form);
ApiClient.updateLiveTvSeriesTimer(item);
});
e.preventDefault();
// Disable default form submission
return false;
}
function renderSchedule(page, result) {
var timers = result.Items;
LiveTvHelpers.getTimersHtml(timers).then(function (html) {
var scheduleTab = page.querySelector('.scheduleTab');
scheduleTab.innerHTML = html;
ImageLoader.lazyChildren(scheduleTab);
});
}
function reload() {
var id = params.id;
Dashboard.showLoadingMsg();
ApiClient.getLiveTvSeriesTimer(id).then(function (result) {
renderTimer(view, result);
});
ApiClient.getLiveTvTimers({
seriesTimerId: id
}).then(function (timerResult) {
renderSchedule(view, timerResult);
});
}
view.querySelector('form').addEventListener('change', function () {
view.querySelector('.btnSubmit').click();
});
view.querySelector('.liveTvSeriesTimerForm').addEventListener('submit', onSubmit);
view.querySelector('.scheduleTab').addEventListener('timercancelled', reload);
view.addEventListener('viewbeforeshow', reload);
};
});