mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-18 03:18:19 -07:00
130 lines
3.5 KiB
JavaScript
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);
|
|
};
|
|
}); |