mirror of
https://github.com/moparisthebest/rcrdit
synced 2024-08-13 16:53:47 -04:00
Proof of Concept on TV Guide, index.html now shows the guide for the current hour and next hour for up to 100 channels.
This commit is contained in:
parent
d95a9ec9e1
commit
4ef91a13be
@ -74,6 +74,7 @@ import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import com.moparisthebest.rcrdit.requestbeans.GetScheduleRequest;
|
||||
import com.moparisthebest.rcrdit.responsebeans.GetScheduleResponse;
|
||||
|
||||
/**
|
||||
* Created by mopar on 2/16/17.
|
||||
@ -437,7 +438,7 @@ public class RcrdIt extends ResourceConfig implements AutoCloseable {
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
//List<Channel>
|
||||
public List<Channel> getSchedule(GetScheduleRequest scheduleRequest) {
|
||||
public GetScheduleResponse getSchedule(GetScheduleRequest scheduleRequest) {
|
||||
List<Channel> channelList = new ArrayList<>();
|
||||
try{
|
||||
int firstItemToLoad = ((scheduleRequest.getPageNum()-1) * scheduleRequest.getChannelsPerPage());
|
||||
@ -449,8 +450,7 @@ public class RcrdIt extends ResourceConfig implements AutoCloseable {
|
||||
}catch(Exception e){
|
||||
log.error("Error in getSchedule",e);
|
||||
}
|
||||
|
||||
return channelList;
|
||||
return new GetScheduleResponse(scheduleRequest,channelList);
|
||||
}
|
||||
|
||||
/* @GET
|
||||
|
@ -47,7 +47,6 @@ public class GetScheduleRequest {
|
||||
}
|
||||
|
||||
public void setStartTimeString(String startTimeString) {
|
||||
System.out.println("In setStartTimeString");
|
||||
this.startTimeString = startTimeString;
|
||||
if(startTimeString != null){
|
||||
startTime = Instant.parse(startTimeString);
|
||||
@ -60,7 +59,6 @@ public class GetScheduleRequest {
|
||||
}
|
||||
|
||||
public void setEndTimeString(String endTime) {
|
||||
System.out.println("In setEndTimeString");
|
||||
this.endTimeString = endTime;
|
||||
if(endTimeString != null){
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateTimeFormatPattern).withZone( ZoneOffset.UTC );
|
||||
@ -89,7 +87,6 @@ public class GetScheduleRequest {
|
||||
}
|
||||
|
||||
public final void setStartTime(Instant startTime) {
|
||||
System.out.println("In setStartTime");
|
||||
this.startTime = startTime;
|
||||
if(this.startTime != null){
|
||||
this.startTimeString = DateTimeFormatter.ofPattern(dateTimeFormatPattern).withZone(ZoneOffset.UTC).format(this.startTime);
|
||||
@ -101,7 +98,6 @@ public class GetScheduleRequest {
|
||||
}
|
||||
|
||||
public final void setEndTime(Instant endTime) {
|
||||
System.out.println("In setEndTime");
|
||||
this.endTime = endTime;
|
||||
if(this.endTime != null){
|
||||
this.endTimeString = DateTimeFormatter.ofPattern(dateTimeFormatPattern).withZone(ZoneOffset.UTC).format(this.endTime);
|
||||
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package com.moparisthebest.rcrdit.responsebeans;
|
||||
|
||||
import com.moparisthebest.rcrdit.requestbeans.GetScheduleRequest;
|
||||
import com.moparisthebest.rcrdit.xmltv.Channel;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jeff
|
||||
*/
|
||||
public class GetScheduleResponse {
|
||||
protected GetScheduleRequest requestObject;
|
||||
protected List<Channel> schedule;
|
||||
|
||||
public GetScheduleResponse(GetScheduleRequest requestObject, List<Channel> schedule) {
|
||||
this.requestObject = requestObject;
|
||||
this.schedule = schedule;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public GetScheduleRequest getRequestObject() {
|
||||
return requestObject;
|
||||
}
|
||||
|
||||
public void setRequestObject(GetScheduleRequest requestObject) {
|
||||
this.requestObject = requestObject;
|
||||
}
|
||||
|
||||
public List<Channel> getSchedule() {
|
||||
return schedule;
|
||||
}
|
||||
|
||||
public void setSchedule(List<Channel> schedule) {
|
||||
this.schedule = schedule;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -19,10 +19,15 @@
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Rcrdit</title>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
|
||||
<script src="js/rcrdit.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
hi
|
||||
<div id="guideGoesHere">
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
85
src/main/webapp/js/rcrdit.js
Normal file
85
src/main/webapp/js/rcrdit.js
Normal file
@ -0,0 +1,85 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
|
||||
$( document ).ready(function() {
|
||||
getSchedule(null);
|
||||
});
|
||||
|
||||
function padToTwoDigits(ss){
|
||||
ss = ""+ss;
|
||||
if(ss.length < 2){
|
||||
ss= "0"+ss;
|
||||
}
|
||||
return ss;
|
||||
}
|
||||
|
||||
|
||||
function getSchedule(requestObject){
|
||||
if(isNull(requestObject)){
|
||||
requestObject = {"channelsPerPage" : "100", "pageNum" : "1"};
|
||||
}
|
||||
$.ajax({
|
||||
url: 'rest/getSchedule',
|
||||
type: 'post',
|
||||
dataType: 'json',
|
||||
contentType: "application/json",
|
||||
data: JSON.stringify(requestObject),
|
||||
success: function (data) {
|
||||
$("#guideGoesHere").html("");
|
||||
var guideTable = $("<table border='1' cellpadding='1' cellspacing='0' style='border-collapse: collapse;'></table>");
|
||||
|
||||
var channelList = data.schedule;
|
||||
var requestObject = data.requestObject;
|
||||
var requestStartTimeEpochSeconds = requestObject.startTime.epochSecond;
|
||||
var requestEndTimeEpochSeconds = requestObject.endTime.epochSecond;
|
||||
var requestStartDate = new Date(requestStartTimeEpochSeconds*1000);
|
||||
var requestEndDate = new Date(requestEndTimeEpochSeconds*1000);
|
||||
var nextDate = new Date(requestStartDate.getTime());
|
||||
nextDate.setHours(nextDate.getHours()+1);
|
||||
var timeDisplayRow = $("<tr><td></td><td colspan=60>"+padToTwoDigits(requestStartDate.getHours())+":"+padToTwoDigits(requestStartDate.getMinutes())+"</td><td colspan=60>"+padToTwoDigits(nextDate.getHours())+":"+padToTwoDigits(nextDate.getMinutes())+"</td></tr>");
|
||||
guideTable.append(timeDisplayRow);
|
||||
for(var idx in channelList){
|
||||
var channel = channelList[idx];
|
||||
var channelTableRow = $("<tr><td>"+channel.displayName+"</td></tr>");
|
||||
for(var idx2 in channel.programs){
|
||||
var program = channel.programs[idx2];
|
||||
var durationSeconds = program.stop.epochSecond-program.start.epochSecond;
|
||||
var durationMinutes = durationSeconds/60;
|
||||
var displayDurationSeconds = durationSeconds;
|
||||
if(program.start.epochSecond < requestStartTimeEpochSeconds){
|
||||
displayDurationSeconds = displayDurationSeconds-(requestStartTimeEpochSeconds-program.start.epochSecond);
|
||||
}
|
||||
if(program.stop.epochSecond > requestEndTimeEpochSeconds){
|
||||
displayDurationSeconds = displayDurationSeconds-(program.stop.epochSecond-requestEndTimeEpochSeconds);
|
||||
}
|
||||
var displayDurationMinutes = displayDurationSeconds/60;
|
||||
|
||||
|
||||
|
||||
var programText = program.title;
|
||||
if(!isNull(program.subTitle)){
|
||||
programText+="<br/><font style='font-size:8pt'>"+program.subTitle+"</font>";
|
||||
}
|
||||
channelTableRow.append("<td colspan='"+Math.ceil(displayDurationMinutes)+"'>"+programText+"</td>");
|
||||
}
|
||||
guideTable.append(channelTableRow);
|
||||
}
|
||||
$("#guideGoesHere").append(guideTable);
|
||||
},
|
||||
error: function ( jqXHR, textStatus, errorThrown ){
|
||||
alert(errorThrown);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function isNull(item){
|
||||
if(item === null || typeof item === "undefined"){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user