diff --git a/src/main/java/com/moparisthebest/rcrdit/RcrdIt.java b/src/main/java/com/moparisthebest/rcrdit/RcrdIt.java index 100fc0b..9995007 100644 --- a/src/main/java/com/moparisthebest/rcrdit/RcrdIt.java +++ b/src/main/java/com/moparisthebest/rcrdit/RcrdIt.java @@ -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 - public List getSchedule(GetScheduleRequest scheduleRequest) { + public GetScheduleResponse getSchedule(GetScheduleRequest scheduleRequest) { List 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 diff --git a/src/main/java/com/moparisthebest/rcrdit/requestbeans/GetScheduleRequest.java b/src/main/java/com/moparisthebest/rcrdit/requestbeans/GetScheduleRequest.java index 8b86bb1..533c094 100644 --- a/src/main/java/com/moparisthebest/rcrdit/requestbeans/GetScheduleRequest.java +++ b/src/main/java/com/moparisthebest/rcrdit/requestbeans/GetScheduleRequest.java @@ -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); diff --git a/src/main/java/com/moparisthebest/rcrdit/responsebeans/GetScheduleResponse.java b/src/main/java/com/moparisthebest/rcrdit/responsebeans/GetScheduleResponse.java new file mode 100644 index 0000000..6cc6f16 --- /dev/null +++ b/src/main/java/com/moparisthebest/rcrdit/responsebeans/GetScheduleResponse.java @@ -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 schedule; + + public GetScheduleResponse(GetScheduleRequest requestObject, List schedule) { + this.requestObject = requestObject; + this.schedule = schedule; + } + + + + + public GetScheduleRequest getRequestObject() { + return requestObject; + } + + public void setRequestObject(GetScheduleRequest requestObject) { + this.requestObject = requestObject; + } + + public List getSchedule() { + return schedule; + } + + public void setSchedule(List schedule) { + this.schedule = schedule; + } + + + +} diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index 4214e32..1cb52c9 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -19,10 +19,15 @@ - + Rcrdit + + -hi +
+ + +
\ No newline at end of file diff --git a/src/main/webapp/js/rcrdit.js b/src/main/webapp/js/rcrdit.js new file mode 100644 index 0000000..ff71ab8 --- /dev/null +++ b/src/main/webapp/js/rcrdit.js @@ -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 = $("
"); + + 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 = $(""+padToTwoDigits(requestStartDate.getHours())+":"+padToTwoDigits(requestStartDate.getMinutes())+""+padToTwoDigits(nextDate.getHours())+":"+padToTwoDigits(nextDate.getMinutes())+""); + guideTable.append(timeDisplayRow); + for(var idx in channelList){ + var channel = channelList[idx]; + var channelTableRow = $(""+channel.displayName+""); + 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+="
"+program.subTitle+""; + } + channelTableRow.append(""+programText+""); + } + 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; + +} \ No newline at end of file