#!/mod/bin/jimsh package require cgi source /mod/webif/lib/setup require epg.class spinner.class altrow svc.class jqplugin iphone-style-checkboxes freezeheader scrollto jscss service.js service.css set service [cgi_get service 4170] set c [svc load usSvcId $service] if {$c == 0} { puts "No such channel." exit } set chname [$c get szSvcName] setpagetag "EPG - $chname" header require totop [spinner new { text "Loading EPG Data..." size "1.2em" style "margin: 1em;" }] start require epg_popup set records [epg dbfetch dump \ -service $service \ -sort "strftime('%%H%%J', start, 'unixepoch', 'localtime'), strftime('%%M', start, 'unixepoch')" \ -debug 0 ] if {[llength $records] == 0} { puts "No data for service.." exit } set nowhour [clock format [clock seconds] -format "%H"] # Load the channel information from the first entry set tr [lindex $records 0] $tr get_channel_info set channel_num [$tr get channel_num] set channel_name [$tr get channel_name] puts "
[$tr channel_icon 40 {vertical-align:middle}] $channel_num - $channel_name     Show synopsis?  
" puts { } puts "
" set t [clock seconds] set firstday [clock format $t -format {%Y%m%d}] set daymap {} loop i 0 8 { puts "" set day [clock format $t -format {%Y%m%d}] set daymap($day) $i set dayrmap($i) $day incr t 86400 } puts " " set contprog {} proc slink {e} { global service if {[$e get series_crid] ne ""} { set ro 2 } else { set ro 1 } set perc [$e percent] if {$perc >= 100} { set state 2 } elseif {$perc > 0} { set state 1 } else { set state 0 } set st [$e scheduled] return "" } proc prog {e {cont 0} {hour 99}} { global service day contprog set start [$e get start] set end [$e end] set class "prog" if {$cont} { set class "prog progp" } puts "
[clock format $start -format {%H:%M}]-[clock format $end -format {%H:%M}]
[$e get text] [join [$e icon_set 14] ""]
" # Programmes which cross the hour boundary if {[clock format $end -format "%H%M"] > "$($hour + 1)00"} { puts "
" set contprog($day) $e } } proc cprog {} { global service day contprog hour set e $contprog($day) set end [$e end] if {[clock format $end -format "%H%M"] eq "${hour}00"} { dict unset contprog $day return 0 } set start [$e get start] puts "
...... -[clock format $end -format {%H:%M}]
[slink $e] [$e get name]
" if {[clock format $end -format "%H"] > $hour} { puts "
" } else { dict unset contprog $day } return 1 } proc jcprog {day} { global contprog set e $contprog($day) set start [$e get start] set end [$e end] puts "
[clock format $start -format {%H:%M}]-[clock format $end -format {%H:%M}]
[slink $e] [$e get name]
" } proc skiptoday {day} { global daymap dayrmap currday contprog oldcell #puts "Skiptoday: $day ($daymap($currday))
" if {!$oldcell && [dict exists $contprog $currday]} { #puts "Skipping, jcprog
" jcprog $currday } if {$daymap($currday) eq $day} return puts "" } puts "
[clock format $t -format {%a}]
" puts "[clock format $t -format {%e %b}]
" set lday $($day - 1) loop i $daymap($currday) $lday { set j $($i + 1) if {[dict exists $contprog $dayrmap($j)]} { #puts "Skipping, jcprog
" jcprog $dayrmap($j) } puts "
" } #puts "skiptoday - arrived at $day
" } set currhour -1 set currday -1 set oldcell 0 foreach e $records { set start [$e get start] set day [clock format $start -format "%Y%m%d"] if {$day ni $daymap} continue set hour [clock format $start -format "%H"] if {$hour != $currhour || $day < $currday} { if {$currhour ne "-1"} { if {$daymap($currday) < 7} { skiptoday 7 if {[dict exists $contprog $dayrmap(7)]} { jcprog $dayrmap(7) } } puts -nonewline "
${hour}:00 " set currhour $hour set currday $firstday set oldcell 0 } if {$day ne $currday} { skiptoday $daymap($day) set currday $day set oldcell 0 } # Continuations from previous hour... if {!$oldcell && [dict exists $contprog $day]} { if {[cprog]} { set oldcell 1 } } prog $e $oldcell $hour set oldcell 1 } puts "
" epg cleanup footer