90 changes: 38 additions & 52 deletions mythtv/html/backend/src/app/services/guide.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ import {
GetProgramDetailsRequest,
GetProgramGuideRequest,
GetProgramListRequest,
GetStoredSearchesResponse } from './interfaces/guide.interface';
GetStoredSearchesResponse
} from './interfaces/guide.interface';
import { BoolResponse } from './interfaces/common.interface';
import { ChannelGroupList } from './interfaces/channelgroup.interface';
import { ProgramList, ScheduleOrProgram } from './interfaces/program.interface';
Expand All @@ -19,104 +20,89 @@ import { ProgramList, ScheduleOrProgram } from './interfaces/program.interface';
providedIn: 'root'
})
export class GuideService {
startDate : Date;
guide_data$! : ProgramGuide;
startDate: Date;
guide_data$!: ProgramGuide;

toTime(date : string) {
let d = new Date(date);
return d.toISOString();
toTime(date: string) {
let d = new Date(date);
return d.toISOString();
}
toStartTime(date : string) {
return this.toTime(date);
toStartTime(date: string) {
return this.toTime(date);
}
toEndTime(date : string) {
let d = new Date(date);
//let tomorrow = new Date(d.getTime()+86400000);
let endAt = new Date(d.getTime()+7200000);
return this.toTime(endAt.toISOString());
toEndTime(date: string) {
let d = new Date(date);
//let tomorrow = new Date(d.getTime()+86400000);
let endAt = new Date(d.getTime() + 7200000);
return this.toTime(endAt.toISOString());
}
toHalfHour(date : Date) {
let d = new Date(date);
d.setMinutes((d.getMinutes() < 30) ? 0 : 30);
d.setSeconds(0);
return d;
toHalfHour(date: Date) {
let d = new Date(date);
d.setMinutes((d.getMinutes() < 30) ? 0 : 30);
d.setSeconds(0);
return d;
}

constructor(private httpClient: HttpClient) {
this.startDate = new Date;
}

public AddToChannelGroup(request : ChannelGroupRequest) : Observable<BoolResponse> {
public AddToChannelGroup(request: ChannelGroupRequest): Observable<BoolResponse> {
return this.httpClient.post<BoolResponse>('/Guide/AddToChannelGroup', request);
}

public GetCategoryList() : Observable<GetCategoryListResponse> {
public GetCategoryList(): Observable<GetCategoryListResponse> {
return this.httpClient.get<GetCategoryListResponse>('/Guide/GetCategoryList');
}

public GetChannelGroupList(IncludeEmpty : boolean) : Observable<ChannelGroupList> {
public GetChannelGroupList(IncludeEmpty: boolean): Observable<ChannelGroupList> {
let params = new HttpParams()
.set("IncludeEmpty", IncludeEmpty);
return this.httpClient.get<ChannelGroupList>('/Guide/GetChannelGroupList', {params});
return this.httpClient.get<ChannelGroupList>('/Guide/GetChannelGroupList', { params });
}

public GetChannelIcon(request : GetChannelIconRequest) : Observable<string> {
public GetChannelIcon(request: GetChannelIconRequest): Observable<string> {
let params = new HttpParams()
.set("ChanId", request.ChanId)
.set("Width", request.Width)
.set("Height", request.Height)
return this.httpClient.get<string>('/Guide/GetChannelIcon', {params});
return this.httpClient.get<string>('/Guide/GetChannelIcon', { params });
}

public GetProgramDetails(request : GetProgramDetailsRequest) : Observable<ScheduleOrProgram> {
public GetProgramDetails(request: GetProgramDetailsRequest): Observable<ScheduleOrProgram> {
let params = new HttpParams()
.set("ChanId", request.ChanId)
.set("StartTime", request.StartTime);
return this.httpClient.get<ScheduleOrProgram>('/Guide/GetProgramDetails', {params});
return this.httpClient.get<ScheduleOrProgram>('/Guide/GetProgramDetails', { params });
}

public GetProgramGuide(reqDate?: Date) : Observable<ProgramGuide> {
public GetProgramGuide(reqDate?: Date): Observable<ProgramGuide> {
if (reqDate) {
this.startDate = reqDate;
}
let time : string = this.toHalfHour(this.startDate).toISOString();
let params : GetProgramGuideRequest = {
let time: string = this.toHalfHour(this.startDate).toISOString();
let params: GetProgramGuideRequest = {
"StartTime": this.toStartTime(time),
"EndTime": this.toEndTime(time),
"Details": "true",
"Details": true,
};
return this.httpClient.post<ProgramGuide>('/Guide/GetProgramGuide', params);
}

public GetProgramList(request : GetProgramListRequest) : Observable<ProgramList> {
public GetProgramList(request: GetProgramListRequest): Observable<ProgramList> {
let params = new HttpParams()
.set("StartIndex", request.StartIndex)
.set("Count", request.Count)
.set("StartTime", request.StartTime)
.set("EndTime", request.EndTime)
.set("ChanId", request.ChanId);
if (typeof request.Descending !== 'undefined')
params = params.set("Descending", request.Descending);
if (typeof request.Details !== 'undefined')
params = params.set("Details", request.Details);
if (typeof request.KeywordFilter !== 'undefined')
params = params.set("KeywordFilter", request.KeywordFilter);
if (typeof request.OnlyNew !== 'undefined')
params = params.set("OnlyNew", request.OnlyNew);
if (typeof request.PersonFilter !== 'undefined')
params = params.set("PersonFilter", request.PersonFilter);
if (typeof request.Sort !== 'undefined')
params = params.set("Sort", request.Sort);
return this.httpClient.get<ProgramList>('/Guide/GetProgramList', {params});
for (const [key, value] of Object.entries(request))
params = params.set(key, value);
return this.httpClient.get<ProgramList>('/Guide/GetProgramList', { params });
}

public GetStoredSearches(searchType : string) : Observable<GetStoredSearchesResponse> {
public GetStoredSearches(searchType: string): Observable<GetStoredSearchesResponse> {
let params = new HttpParams()
.set("Type", searchType);
return this.httpClient.get<GetStoredSearchesResponse>('/Guide/GetStoredSearches', {params});
return this.httpClient.get<GetStoredSearchesResponse>('/Guide/GetStoredSearches', { params });
}

public RemoveFromChannelGroup(request : ChannelGroupRequest) : Observable<BoolResponse> {
public RemoveFromChannelGroup(request: ChannelGroupRequest): Observable<BoolResponse> {
return this.httpClient.post<BoolResponse>('/Guide/RemoveFromChannelGroup', request);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export interface RecordScheduleRequest {
Inactive: boolean;
Season: number;
Episode: number;
InetRef: string;
Inetref: string;
Type?: string;
SearchType?: string;
RecPriority: number;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,19 @@ export interface GetProgramDetailsRequest {
export interface GetProgramGuideRequest {
StartTime: string;
EndTime: string;
Details: string; // really a boolean
Details?: boolean; // really a boolean
ChannelGroupId?: number;
StartIndex?: number;
Count?: number;
WithInvisible?: boolean;
}

export interface GetProgramListRequest {
StartIndex: number;
Count: number;
StartTime: string; // dateTime
EndTime: string; // dateTime
ChanId: number;
StartIndex?: number;
Count?: number;
StartTime?: string; // dateTime
EndTime?: string; // dateTime
ChanId?: number;
TitleFilter?: string;
CategoryFilter?: string;
PersonFilter?: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export interface RecRule {
EndTime: string; // dateTime
SeriesId: string;
ProgramId: string;
InetRef: string;
Inetref: string;
ChanId: number;
CallSign: string;
FindDay: number;
Expand Down