forked from hummypkg/webif
0f1bbed6b9
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1789 2a923420-c742-0410-a762-8d5b09965624
267 lines
5.8 KiB
Plaintext
Executable File
267 lines
5.8 KiB
Plaintext
Executable File
#!/mod/bin/jimsh
|
|
|
|
package require cgi
|
|
source /mod/webif/lib/setup
|
|
require settings.class
|
|
|
|
jqplugin enadis
|
|
jscss xepg.js /css/xepg.css
|
|
header
|
|
|
|
require epg.class spinner.class altrow epg_search totop system.class
|
|
|
|
set irinst [system pkginst ir]
|
|
|
|
set s [settings]
|
|
|
|
if {[$s chanchangenc]} {
|
|
puts { <script type=text/javascript src=/js/chanchangenc.js></script> }
|
|
} else {
|
|
jqplugin confirmAction
|
|
puts { <script type=text/javascript src=/js/chanchange.js></script> }
|
|
}
|
|
|
|
if {[$s service_style] eq "standard"} {
|
|
set surl xservice
|
|
} else {
|
|
set surl service
|
|
}
|
|
|
|
[spinner new {
|
|
text "Loading EPG Information..."
|
|
size "1.2em"
|
|
style "margin: 1em;"
|
|
}] start
|
|
|
|
require epg_popup
|
|
|
|
set now [clock seconds]
|
|
set stt [cgi_get stt $now]
|
|
if {$stt <= $now} {
|
|
set stt $now
|
|
set current 1
|
|
} else {
|
|
set current 0
|
|
}
|
|
|
|
set favgroup [$s channel_group]
|
|
|
|
set hours [expr 1.0 * [[settings] xepghours]]
|
|
if {$hours == 0} { 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 160
|
|
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} {
|
|
if {$favgroup} {
|
|
set records [epg dbfetch dump \
|
|
-trange "$stt:$ett" -fav $favgroup]
|
|
} else {
|
|
set records [epg dbfetch dump -trange "$stt:$ett"]
|
|
}
|
|
|
|
} else {
|
|
require channelsort
|
|
set records [channelsort [epg fetch dump -trange "$stt:$ett"]]
|
|
}
|
|
set got [clock milliseconds]
|
|
|
|
proc but {label time {active 1}} {
|
|
puts -nonewline "<button style=\"margin-right: 2em\" tt=$time"
|
|
if {$active} {
|
|
puts -nonewline " class=nav"
|
|
} else {
|
|
puts -nonewline " disabled class=\"nav ui-state-disabled\""
|
|
}
|
|
puts " active=$active>$label</button>"
|
|
}
|
|
|
|
puts "<!-- Hours $hours ($seconds) -->"
|
|
puts "<div id=buttons style=\"width: $eventpx; margin-left: ${chanpx}px;\">"
|
|
|
|
but "<< -1 Week" $($stt - 3600 * 24 * 7) \
|
|
$($stt - $now + 3600 >= 3600 * 24 * 7)
|
|
but "<< -1 Day" $($stt - 3600 * 24) $($stt - $now >= 3600 * 23)
|
|
but "<< Earlier", $($stt - 3600 * 4) $($stt > $now)
|
|
#but "< Now >" $now $($current == 0)
|
|
but "< Now >" $now
|
|
but ">> Later" $ett;
|
|
but ">> +1 Day" $($stt + 3600 * 24) $($stt < $now + 8 * 3600 * 24)
|
|
but ">> +1 Week" $($stt + 3600 * 24 * 7) $($stt < $now + 8 * 3600 * 24)
|
|
|
|
puts "</div>"
|
|
|
|
puts "
|
|
<script type=text/javascript>
|
|
\$('button.nav').button();
|
|
</script>
|
|
<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/%m/%Y}]
|
|
puts "<input type=hidden id=xepg_dp stt=$stt>"
|
|
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 {
|
|
set chnum [$e get channel_num]
|
|
if {$chnum == 0} { continue }
|
|
|
|
if {$chnum != $lcn} {
|
|
puts "<div class=xechan style=\"width: ${chanpx}px;\">"
|
|
|
|
if {$irinst} {
|
|
puts "<a class=chanchange chan=$chnum href=#>"
|
|
}
|
|
puts "[$e channel_icon 30] "
|
|
if {$irinst} { puts "</a>" }
|
|
puts "$chnum
|
|
<a href=\"/epg/$surl.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%)" }
|
|
|
|
set lbg $bg
|
|
if {[$e scheduled]} { set lbg "blueshade" }
|
|
|
|
puts "<div class=\"xeprog $lbg\"
|
|
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>
|
|
"
|
|
|
|
if {$current} {
|
|
puts "
|
|
<script type=text/javascript>
|
|
\$(function() {
|
|
"
|
|
puts {
|
|
|
|
var kt = $('#xe0');
|
|
var ktpos = kt.position();
|
|
|
|
var height = $('#keypos').position().top - ktpos.top;
|
|
|
|
}
|
|
puts "var nowpos = ktpos.left + (kt.width() * $offset);"
|
|
puts {
|
|
$('#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>
|
|
"
|
|
|
|
epg cleanup
|
|
|
|
set end [clock milliseconds]
|
|
puts "<font class=footnote>
|
|
Retrieved in: [expr [expr $got - $start] / 1000.0] seconds.
|
|
</font>"
|
|
|
|
footer
|
|
|