mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
live tv updates
This commit is contained in:
parent
a3b95de459
commit
b0d84e5046
9 changed files with 208 additions and 150 deletions
|
@ -545,9 +545,11 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
|||
});
|
||||
};
|
||||
|
||||
self.getNewLiveTvTimerDefaults = function () {
|
||||
self.getNewLiveTvTimerDefaults = function (options) {
|
||||
|
||||
var url = self.getUrl("LiveTv/Timers/Defaults");
|
||||
options = options || {};
|
||||
|
||||
var url = self.getUrl("LiveTv/Timers/Defaults", options);
|
||||
|
||||
return self.ajax({
|
||||
type: "GET",
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
<br />
|
||||
|
||||
<div style="display: none;" id="eligibleForSeriesFields">
|
||||
<p>
|
||||
<input type="checkbox" data-mini="true" id="chkRecordSeries" />
|
||||
<label for="chkRecordSeries">Record Series</label>
|
||||
|
@ -60,7 +61,7 @@
|
|||
</li>
|
||||
<li>
|
||||
<label for="chkNewOnly">Record only new episodes</label>
|
||||
<input type="checkbox" id="chkNewOnly" data-mini="true" checked="checked" />
|
||||
<input type="checkbox" id="chkNewOnly" data-mini="true" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="chkAnyTime">Record program at any time</label>
|
||||
|
@ -71,30 +72,43 @@
|
|||
<input type="checkbox" id="chkAllChannels" data-mini="true" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div data-role="collapsible" data-mini="true">
|
||||
<h3>Pre/Post Padding</h3>
|
||||
<div>
|
||||
<br />
|
||||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
<label for="txtRequestedPrePaddingSeconds">Requested pre-padding seconds: </label>
|
||||
<input type="number" id="txtRequestedPrePaddingSeconds" pattern="[0-9]*" required="required" min="0" data-mini="true" />
|
||||
<label for="txtPrePaddingSeconds">Pre-padding seconds: </label>
|
||||
<input type="number" id="txtPrePaddingSeconds" pattern="[0-9]*" required="required" min="0" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtRequestedPostPaddingSeconds">Requested post-padding seconds: </label>
|
||||
<input type="number" id="txtRequestedPostPaddingSeconds" pattern="[0-9]*" required="required" min="0" data-mini="true" />
|
||||
<input type="checkbox" data-mini="true" id="chkPrePaddingRequired" />
|
||||
<label for="chkPrePaddingRequired">Pre-padding is required in order to record.</label>
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtRequiredPrePaddingSeconds">Required pre-padding seconds: </label>
|
||||
<input type="number" id="txtRequiredPrePaddingSeconds" pattern="[0-9]*" required="required" min="0" data-mini="true" />
|
||||
<div style="height: .5em;"></div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtRequiredPostPaddingSeconds">Required post-padding seconds: </label>
|
||||
<input type="number" id="txtRequiredPostPaddingSeconds" pattern="[0-9]*" required="required" min="0" data-mini="true" />
|
||||
<label for="txtPostPaddingSeconds">Post-padding seconds: </label>
|
||||
<input type="number" id="txtPostPaddingSeconds" pattern="[0-9]*" required="required" min="0" />
|
||||
</li>
|
||||
<li>
|
||||
<input type="checkbox" data-mini="true" id="chkPostPaddingRequired" />
|
||||
<label for="chkPostPaddingRequired">Post-padding is required in order to record.</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
<button type="submit" data-theme="b" data-icon="ok" data-mini="true">
|
||||
Save
|
||||
Record
|
||||
</button>
|
||||
<button type="button" onclick="Dashboard.navigate('livetvtimers.html');" data-icon="delete" data-mini="true">
|
||||
<button id="btnCancel" type="button" data-icon="delete" data-mini="true">
|
||||
Cancel
|
||||
</button>
|
||||
</li>
|
||||
|
|
|
@ -65,22 +65,37 @@
|
|||
<label for="chkAllChannels">Record program on all channels</label>
|
||||
<input type="checkbox" id="chkAllChannels" data-mini="true" />
|
||||
</li>
|
||||
</ul>
|
||||
<div data-role="collapsible" data-mini="true">
|
||||
<h3>Pre/Post Padding</h3>
|
||||
<div>
|
||||
<br />
|
||||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
<label for="txtRequestedPrePaddingSeconds">Requested pre-padding seconds: </label>
|
||||
<input type="number" id="txtRequestedPrePaddingSeconds" pattern="[0-9]*" required="required" min="0" data-mini="true" />
|
||||
<label for="txtPrePaddingSeconds">Pre-padding seconds: </label>
|
||||
<input type="number" id="txtPrePaddingSeconds" pattern="[0-9]*" required="required" min="0" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtRequestedPostPaddingSeconds">Requested post-padding seconds: </label>
|
||||
<input type="number" id="txtRequestedPostPaddingSeconds" pattern="[0-9]*" required="required" min="0" data-mini="true" />
|
||||
<input type="checkbox" data-mini="true" id="chkPrePaddingRequired" />
|
||||
<label for="chkPrePaddingRequired">Pre-padding is required in order to record.</label>
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtRequiredPrePaddingSeconds">Required pre-padding seconds: </label>
|
||||
<input type="number" id="txtRequiredPrePaddingSeconds" pattern="[0-9]*" required="required" min="0" data-mini="true" />
|
||||
<div style="height: .5em;"></div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtRequiredPostPaddingSeconds">Required post-padding seconds: </label>
|
||||
<input type="number" id="txtRequiredPostPaddingSeconds" pattern="[0-9]*" required="required" min="0" data-mini="true" />
|
||||
<label for="txtPostPaddingSeconds">Post-padding seconds: </label>
|
||||
<input type="number" id="txtPostPaddingSeconds" pattern="[0-9]*" required="required" min="0" />
|
||||
</li>
|
||||
<li>
|
||||
<input type="checkbox" data-mini="true" id="chkPostPaddingRequired" />
|
||||
<label for="chkPostPaddingRequired">Post-padding is required in order to record.</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
<button type="submit" data-theme="b" data-icon="ok" data-mini="true">
|
||||
Save
|
||||
|
|
|
@ -25,26 +25,39 @@
|
|||
<span class="seriesTimerLink" style="margin-left: 2em;"></span>
|
||||
</p>
|
||||
|
||||
<br />
|
||||
|
||||
<div data-role="collapsible" data-mini="true">
|
||||
<h3>Pre/Post Padding</h3>
|
||||
<div>
|
||||
<br />
|
||||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
<label for="txtPrePaddingSeconds">Pre-padding seconds: </label>
|
||||
<input type="number" id="txtPrePaddingSeconds" pattern="[0-9]*" required="required" min="0" />
|
||||
</li>
|
||||
<li>
|
||||
<input type="checkbox" data-mini="true" id="chkPrePaddingRequired" />
|
||||
<label for="chkPrePaddingRequired">Pre-padding is required in order to record.</label>
|
||||
</li>
|
||||
<li>
|
||||
<div style="height: .5em;"></div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtPostPaddingSeconds">Post-padding seconds: </label>
|
||||
<input type="number" id="txtPostPaddingSeconds" pattern="[0-9]*" required="required" min="0" />
|
||||
</li>
|
||||
<li>
|
||||
<input type="checkbox" data-mini="true" id="chkPostPaddingRequired" />
|
||||
<label for="chkPostPaddingRequired">Post-padding is required in order to record.</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
<label for="txtRequestedPrePaddingSeconds">Requested pre-padding seconds: </label>
|
||||
<input type="number" id="txtRequestedPrePaddingSeconds" pattern="[0-9]*" required="required" min="0" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtRequestedPostPaddingSeconds">Requested post-padding seconds: </label>
|
||||
<input type="number" id="txtRequestedPostPaddingSeconds" pattern="[0-9]*" required="required" min="0" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtRequiredPrePaddingSeconds">Required pre-padding seconds: </label>
|
||||
<input type="number" id="txtRequiredPrePaddingSeconds" pattern="[0-9]*" required="required" min="0" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtRequiredPostPaddingSeconds">Required post-padding seconds: </label>
|
||||
<input type="number" id="txtRequiredPostPaddingSeconds" pattern="[0-9]*" required="required" min="0" />
|
||||
</li>
|
||||
<li>
|
||||
<button type="submit" data-theme="b" data-icon="ok" data-mini="true">
|
||||
Save
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
<label for="chkMovies">Movies</label>
|
||||
|
||||
<input type="checkbox" data-mini="true" id="chkEpisodes" name="chkEpisodes" />
|
||||
<label for="chkEpisodes">TV Episodes</label>
|
||||
<label for="chkEpisodes">Episodes</label>
|
||||
|
||||
<input type="checkbox" data-mini="true" id="chkOtherVideos" name="chkOtherVideos" />
|
||||
<label for="chkOtherVideos">Other Videos</label>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
(function ($, document, apiClient) {
|
||||
|
||||
var currentProgram;
|
||||
var daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
||||
|
||||
function renderRecording(page, defaultTimer, program) {
|
||||
|
||||
|
@ -29,21 +28,22 @@
|
|||
|
||||
$('.itemMiscInfo', page).html(LibraryBrowser.getMiscInfoHtml(program));
|
||||
|
||||
$('#txtRequestedPrePaddingSeconds', page).val(defaultTimer.RequestedPrePaddingSeconds);
|
||||
$('#txtRequestedPostPaddingSeconds', page).val(defaultTimer.RequestedPostPaddingSeconds);
|
||||
$('#txtRequiredPrePaddingSeconds', page).val(defaultTimer.RequiredPrePaddingSeconds);
|
||||
$('#txtRequiredPostPaddingSeconds', page).val(defaultTimer.RequiredPostPaddingSeconds);
|
||||
$('#chkNewOnly', page).checked(defaultTimer.RecordNewOnly).checkboxradio('refresh');
|
||||
$('#chkAllChannels', page).checked(defaultTimer.RecordAnyChannel).checkboxradio('refresh');
|
||||
$('#chkAnyTime', page).checked(defaultTimer.RecordAnyTime).checkboxradio('refresh');
|
||||
|
||||
try {
|
||||
|
||||
var startDate = parseISO8601Date(program.StartDate, { toLocal: true });
|
||||
|
||||
$('#chk' + daysOfWeek[startDate.getDay()], page).checked(true).checkboxradio('refresh');
|
||||
$('#txtPrePaddingSeconds', page).val(defaultTimer.PrePaddingSeconds);
|
||||
$('#txtPostPaddingSeconds', page).val(defaultTimer.PostPaddingSeconds);
|
||||
$('#chkPrePaddingRequired', page).checked(defaultTimer.IsPrePaddingRequired).checkboxradio('refresh');
|
||||
$('#chkPostPaddingRequired', page).checked(defaultTimer.IsPostPaddingRequired).checkboxradio('refresh');
|
||||
|
||||
if (program.IsSeries) {
|
||||
$('#eligibleForSeriesFields', page).show();
|
||||
} else {
|
||||
$('#eligibleForSeriesFields', page).hide();
|
||||
}
|
||||
catch (e) {
|
||||
console.log("Error parsing date: " + program.StartDate);
|
||||
}
|
||||
|
||||
selectDays(page, defaultTimer.Days);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
@ -52,10 +52,10 @@
|
|||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var programid = getParameterByName('programid');
|
||||
var programId = getParameterByName('programid');
|
||||
|
||||
var promise1 = apiClient.getNewLiveTvTimerDefaults();
|
||||
var promise2 = apiClient.getLiveTvProgram(programid, Dashboard.getCurrentUserId());
|
||||
var promise1 = apiClient.getNewLiveTvTimerDefaults({ programId: programId });
|
||||
var promise2 = apiClient.getLiveTvProgram(programId, Dashboard.getCurrentUserId());
|
||||
|
||||
$.when(promise1, promise2).done(function (response1, response2) {
|
||||
|
||||
|
@ -66,8 +66,24 @@
|
|||
});
|
||||
}
|
||||
|
||||
function selectDays(page, days) {
|
||||
|
||||
var daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
||||
|
||||
for (var i = 0, length = daysOfWeek.length; i < length; i++) {
|
||||
|
||||
var day = daysOfWeek[i];
|
||||
|
||||
$('#chk' + day, page).checked(days.indexOf(day) != -1).checkboxradio('refresh');
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function getDays(page) {
|
||||
|
||||
var daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
||||
|
||||
var days = [];
|
||||
|
||||
for (var i = 0, length = daysOfWeek.length; i < length; i++) {
|
||||
|
@ -89,12 +105,12 @@
|
|||
|
||||
var form = this;
|
||||
|
||||
apiClient.getNewLiveTvTimerDefaults().done(function (item) {
|
||||
apiClient.getNewLiveTvTimerDefaults({ programId: currentProgram.Id }).done(function (item) {
|
||||
|
||||
item.RequestedPrePaddingSeconds = $('#txtRequestedPrePaddingSeconds', form).val();
|
||||
item.RequestedPostPaddingSeconds = $('#txtRequestedPostPaddingSeconds', form).val();
|
||||
item.RequiredPrePaddingSeconds = $('#txtRequiredPrePaddingSeconds', form).val();
|
||||
item.RequiredPostPaddingSeconds = $('#txtRequiredPostPaddingSeconds', form).val();
|
||||
item.PrePaddingSeconds = $('#txtPrePaddingSeconds', form).val();
|
||||
item.PostPaddingSeconds = $('#txtPostPaddingSeconds', form).val();
|
||||
item.IsPrePaddingRequired = $('#chkPrePaddingRequired', form).checked();
|
||||
item.IsPostPaddingRequired = $('#chkPostPaddingRequired', form).checked();
|
||||
|
||||
item.RecordNewOnly = $('#chkNewOnly', form).checked();
|
||||
item.RecordAnyChannel = $('#chkAllChannels', form).checked();
|
||||
|
@ -102,14 +118,6 @@
|
|||
|
||||
item.Days = getDays(form);
|
||||
|
||||
item.Name = currentProgram.Name;
|
||||
item.ProgramId = currentProgram.Id;
|
||||
item.ChannelName = currentProgram.ChannelName;
|
||||
item.ChannelId = currentProgram.ChannelId;
|
||||
item.Overview = currentProgram.Overview;
|
||||
item.StartDate = currentProgram.StartDate;
|
||||
item.EndDate = currentProgram.EndDate;
|
||||
|
||||
if ($('#chkRecordSeries', form).checked()) {
|
||||
|
||||
apiClient.createLiveTvSeriesTimer(item).done(function () {
|
||||
|
@ -158,6 +166,12 @@
|
|||
|
||||
});
|
||||
|
||||
$('#btnCancel', page).on('click', function () {
|
||||
|
||||
Dashboard.navigate('livetvchannel.html?id=' + currentProgram.ChannelId);
|
||||
|
||||
});
|
||||
|
||||
}).on('pagebeforeshow', "#liveTvNewRecordingPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
|
|
@ -28,10 +28,10 @@
|
|||
$('.itemName', page).html(item.Name);
|
||||
$('.overview', page).html(item.Overview || '');
|
||||
|
||||
$('#txtRequestedPrePaddingSeconds', page).val(item.RequestedPrePaddingSeconds);
|
||||
$('#txtRequestedPostPaddingSeconds', page).val(item.RequestedPostPaddingSeconds);
|
||||
$('#txtRequiredPrePaddingSeconds', page).val(item.RequiredPrePaddingSeconds);
|
||||
$('#txtRequiredPostPaddingSeconds', page).val(item.RequiredPostPaddingSeconds);
|
||||
$('#txtPrePaddingSeconds', page).val(item.PrePaddingSeconds);
|
||||
$('#txtPostPaddingSeconds', page).val(item.PostPaddingSeconds);
|
||||
$('#chkPrePaddingRequired', page).checked(item.IsPrePaddingRequired).checkboxradio('refresh');
|
||||
$('#chkPostPaddingRequired', page).checked(item.IsPostPaddingRequired).checkboxradio('refresh');
|
||||
|
||||
$('#chkNewOnly', page).checked(item.RecordNewOnly).checkboxradio('refresh');
|
||||
$('#chkAllChannels', page).checked(item.RecordAnyChannel).checkboxradio('refresh');
|
||||
|
@ -97,10 +97,10 @@
|
|||
|
||||
apiClient.getLiveTvSeriesTimer(currentItem.Id).done(function (item) {
|
||||
|
||||
item.RequestedPrePaddingSeconds = $('#txtRequestedPrePaddingSeconds', form).val();
|
||||
item.RequestedPostPaddingSeconds = $('#txtRequestedPostPaddingSeconds', form).val();
|
||||
item.RequiredPrePaddingSeconds = $('#txtRequiredPrePaddingSeconds', form).val();
|
||||
item.RequiredPostPaddingSeconds = $('#txtRequiredPostPaddingSeconds', form).val();
|
||||
item.PrePaddingSeconds = $('#txtPrePaddingSeconds', form).val();
|
||||
item.PostPaddingSeconds = $('#txtPostPaddingSeconds', form).val();
|
||||
item.IsPrePaddingRequired = $('#chkPrePaddingRequired', form).checked();
|
||||
item.IsPostPaddingRequired = $('#chkPostPaddingRequired', form).checked();
|
||||
|
||||
item.RecordNewOnly = $('#chkNewOnly', form).checked();
|
||||
item.RecordAnyChannel = $('#chkAllChannels', form).checked();
|
||||
|
|
|
@ -29,10 +29,10 @@
|
|||
$('.channel', page).html('<a href="livetvchannel.html?id=' + item.ChannelId + '">' + item.ChannelName + '</a>').trigger('create');
|
||||
$('.overview', page).html(item.Overview || '');
|
||||
|
||||
$('#txtRequestedPrePaddingSeconds', page).val(item.RequestedPrePaddingSeconds);
|
||||
$('#txtRequestedPostPaddingSeconds', page).val(item.RequestedPostPaddingSeconds);
|
||||
$('#txtRequiredPrePaddingSeconds', page).val(item.RequiredPrePaddingSeconds);
|
||||
$('#txtRequiredPostPaddingSeconds', page).val(item.RequiredPostPaddingSeconds);
|
||||
$('#txtPrePaddingSeconds', page).val(item.PrePaddingSeconds);
|
||||
$('#txtPostPaddingSeconds', page).val(item.PostPaddingSeconds);
|
||||
$('#chkPrePaddingRequired', page).checked(item.IsPrePaddingRequired).checkboxradio('refresh');
|
||||
$('#chkPostPaddingRequired', page).checked(item.IsPostPaddingRequired).checkboxradio('refresh');
|
||||
|
||||
$('.itemMiscInfo', page).html(LibraryBrowser.getMiscInfoHtml(item));
|
||||
$('.status', page).html('Status: ' + item.Status);
|
||||
|
@ -56,12 +56,12 @@
|
|||
|
||||
apiClient.getLiveTvTimer(currentItem.Id).done(function (item) {
|
||||
|
||||
item.RequestedPrePaddingSeconds = $('#txtRequestedPrePaddingSeconds', form).val();
|
||||
item.RequestedPostPaddingSeconds = $('#txtRequestedPostPaddingSeconds', form).val();
|
||||
item.RequiredPrePaddingSeconds = $('#txtRequiredPrePaddingSeconds', form).val();
|
||||
item.RequiredPostPaddingSeconds = $('#txtRequiredPostPaddingSeconds', form).val();
|
||||
item.PrePaddingSeconds = $('#txtPrePaddingSeconds', form).val();
|
||||
item.PostPaddingSeconds = $('#txtPostPaddingSeconds', form).val();
|
||||
item.IsPrePaddingRequired = $('#chkPrePaddingRequired', form).checked();
|
||||
item.IsPostPaddingRequired = $('#chkPostPaddingRequired', form).checked();
|
||||
|
||||
ApiClient.updateLiveTvTimer(item).done(function() {
|
||||
ApiClient.updateLiveTvTimer(item).done(function () {
|
||||
Dashboard.alert('Timer Saved');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.209" targetFramework="net45" />
|
||||
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.210" targetFramework="net45" />
|
||||
</packages>
|
Loading…
Add table
Add a link
Reference in a new issue