1a7cb41a16
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@730 2a923420-c742-0410-a762-8d5b09965624
230 lines
4.8 KiB
Plaintext
Executable File
230 lines
4.8 KiB
Plaintext
Executable File
#!/mod/bin/jimsh
|
|
|
|
package require cgi
|
|
source /mod/var/mongoose/lib/setup
|
|
|
|
puts "Content-Type: text/html"
|
|
puts ""
|
|
header
|
|
|
|
require epg.class spinner.class altrow epg_search totop
|
|
|
|
cgi_input
|
|
|
|
puts {<link type="text/css" href="/css/xepg.css" rel="Stylesheet" />}
|
|
|
|
[spinner new {
|
|
text "Loading Now/Next Information..."
|
|
size "1.2em"
|
|
style "margin: 1em;"
|
|
}] start
|
|
|
|
require epg_popup
|
|
|
|
set stt [cgi_get stt [clock seconds]]
|
|
if {$stt <= [clock seconds]} {
|
|
set stt [clock seconds]
|
|
set current 1
|
|
} else {
|
|
set current 0
|
|
}
|
|
|
|
set favlist [epg favlist]
|
|
|
|
set hours 4.0
|
|
set seconds $($hours * 3600)
|
|
|
|
set ostt $stt
|
|
set stt [expr int($stt / 1800.0) * 1800]
|
|
|
|
set ett $(int($stt + $seconds))
|
|
set offset $(($ostt - $stt) / 1800.0)
|
|
|
|
set chanpx 120
|
|
set eventpx 1000
|
|
set totalpx $($chanpx + $eventpx)
|
|
set contwidth $($totalpx + 50)
|
|
|
|
set hourpx $($eventpx / $hours)
|
|
set minpx $($hourpx / 60.0)
|
|
set secpx $($minpx / 60.0)
|
|
|
|
set start [clock milliseconds]
|
|
if {$::qepg} {
|
|
set records [epg dbfetch dump -trange "$stt:$ett"]
|
|
} else {
|
|
require channelsort
|
|
set records [channelsort [epg fetch dump -trange "$stt:$ett"]]
|
|
}
|
|
set got [clock milliseconds]
|
|
|
|
puts "<div id=buttons style=\"width: $eventpx; margin-left: ${chanpx}px;\">"
|
|
if {$stt > [clock seconds]} {
|
|
puts "<button id=earlier><<< Earlier</button>"
|
|
}
|
|
puts "<button id=later>Later >>></button>"
|
|
puts "</div>"
|
|
|
|
puts "
|
|
<div id=xepg style=\"min-width: ${contwidth}px; overflow: auto\">
|
|
<div id=xepgnow></div>
|
|
<div id=xegrid>
|
|
"
|
|
|
|
puts "<div id=epgdate style=\"width: ${eventpx}px; margin-left: ${chanpx}px;\">"
|
|
puts [clock format $stt -format {%a %D}]
|
|
puts "</div>"
|
|
|
|
puts "<div class=xechan style=\"width: ${chanpx}px;\"> </div>"
|
|
for {set i 0} {$i < $hours * 2} {incr i} {
|
|
puts "<div class=xetime id=xe$i
|
|
style=\"width: [expr $minpx * 30]px\">"
|
|
puts "[clock format $($stt + 1800 * $i) -format "%H:%M"]</div>"
|
|
}
|
|
|
|
set lim 0
|
|
set lcn 0
|
|
set bg "odd"
|
|
|
|
foreach e $records {
|
|
if {$favlist != "" && [$e get service_id] ni $favlist} {
|
|
continue
|
|
}
|
|
set chnum [$e get channel_num]
|
|
if {$chnum == 0} { continue }
|
|
|
|
if {$chnum != $lcn} {
|
|
puts "<div class=xechan style=\"width: ${chanpx}px;\">"
|
|
|
|
puts "[$e channel_icon 30] "
|
|
puts "$chnum
|
|
<a href=/cgi-bin/epg/service.jim?service=[$e get service_id]
|
|
title=\"[$e get channel_name]\">
|
|
[$e get channel_name]
|
|
</a></div>"
|
|
|
|
set lcn $chnum
|
|
set le 0
|
|
set pos 0
|
|
if {$bg eq "odd"} { set bg "even" } else { set bg "odd" }
|
|
}
|
|
|
|
set es [$e get start]
|
|
set ee [expr $es + [$e get duration]]
|
|
|
|
if {$es < $le} continue
|
|
|
|
if {$es < $stt} { set es $stt }
|
|
if {$ee > $ett} { set ee $ett }
|
|
set le $ee
|
|
|
|
set left [expr int(($es - $stt) * $secpx)]
|
|
set right [expr int(($ee - $stt - 1) * $secpx)]
|
|
set px $($right - $left)
|
|
if {$pos < $left} {
|
|
set px $($px + $left - $pos - 1)
|
|
} elseif {$pos > $left} {
|
|
set px $($px - ($pos - $left - 1))
|
|
}
|
|
incr pos $px
|
|
|
|
$e process_sched
|
|
|
|
set recopts 1
|
|
if {[$e get series_crid] ne ""} { set recopts 2 }
|
|
|
|
set perc [$e percent]
|
|
set showing 0
|
|
if {$perc > 0 && $perc < 100} { set showing 1 }
|
|
|
|
set txt "[cgi_quote_html [$e get name]] <span>([\
|
|
clock format $es -format "%H:%M"] - [\
|
|
clock format $ee -format "%H:%M"])"
|
|
if {$showing} { append txt " ($perc%)" }
|
|
append txt "</span>"
|
|
|
|
set htxt "[cgi_quote_html [$e get name]] ([\
|
|
clock format $es -format "%H:%M"] - [\
|
|
clock format $ee -format "%H:%M"])"
|
|
if {$showing} { append hxt " ($perc%)" }
|
|
|
|
puts "<div class=\"xeprog $bg\"
|
|
style=\"width: [expr $px - 4]px;\" title=\"$htxt\">
|
|
<a class=event href=# xs=[$e get service_id]
|
|
xe=[$e get event_id] sch=[$e get sched_type]
|
|
rec=$recopts>"
|
|
puts $txt
|
|
puts "</a>"
|
|
puts "</div>"
|
|
}
|
|
puts "<div id=keypos style=\"float: left; clear: left;\"></div>"
|
|
puts "</div>"
|
|
puts "</div>"
|
|
|
|
set earlier $($stt - 3600 * 4)
|
|
|
|
puts "
|
|
|
|
<div style=\"clear: both;\">
|
|
<small><button id=epgswitch>
|
|
Switch to standard now/next display.
|
|
</button></small>
|
|
</div>
|
|
|
|
<script type=text/javascript>
|
|
\$(document).ready(function() {
|
|
|
|
\$('#epgswitch').button().click(function() {
|
|
window.location = '/epg.shtml';
|
|
});
|
|
\$('#earlier').button().click(function() {
|
|
window.location = '/cgi-bin/xepg.jim?stt=$earlier';
|
|
});
|
|
\$('#later').button().click(function() {
|
|
window.location = '/cgi-bin/xepg.jim?stt=$ett';
|
|
});
|
|
"
|
|
|
|
if {$current} {
|
|
puts {
|
|
|
|
var kt = $('#xe0');
|
|
var ktpos = kt.position();
|
|
|
|
var height = $('#keypos').position().top - ktpos.top;
|
|
|
|
}
|
|
puts "var nowpos = ktpos.left + (kt.width() * $offset);"
|
|
puts {
|
|
if (window.console)
|
|
console.log('NOWPOS: %d', nowpos);
|
|
$('#xepgnow')
|
|
.css('left', nowpos + 'px')
|
|
.css('top', ktpos.top)
|
|
.height(height)
|
|
.show('slow');
|
|
}
|
|
}
|
|
|
|
puts "
|
|
});
|
|
</script>
|
|
"
|
|
|
|
puts "
|
|
<a href=/cgi-bin/settings.jim>
|
|
<img border=0 height=14 src=/images/421_1_00_CH_Title_2R_Arrow.png>
|
|
Visit settings to change EPG options.
|
|
</a><br>
|
|
"
|
|
|
|
set end [clock milliseconds]
|
|
puts "<font class=footnote>
|
|
Retrieved in: [expr [expr $got - $start] / 1000.0] seconds.
|
|
</font>"
|
|
|
|
epg cleanup
|
|
|
|
footer
|
|
|