diff --git a/CONTROL/control b/CONTROL/control index 8009fa8..d47edee 100644 --- a/CONTROL/control +++ b/CONTROL/control @@ -1,10 +1,10 @@ Package: webif Priority: optional Section: web -Version: 1.0.8-6 +Version: 1.0.8-7 Architecture: mipsel Maintainer: af123@hummypkg.org.uk Depends: webif-channelicons(>=1.1.8),mongoose(>=3.0-9),jim(>=0.74-4),jim-oo,jim-sqlite3(>=0.74-1),jim-cgi(>=0.7),jim-binary,service-control(>=1.2),busybox(>=1.20.2-1),lsof,epg(>=1.0.13),hmt(>=1.1.14),ssmtp,anacron,trm(>=1.1),openssl-command,nicesplice,id3v2,file,rsvsync(>=1.0.2),webif-charts(>=1.2),stripts(>=1.2.5-3),smartmontools,tmenu(>=1.05),ffmpeg,id3v2,multienv(>=1.6) Suggests: -Description: An evolving web interface for the Humax. +Description: An evolving web interface for the Humax. [Replacement single-channel view screen (in-progress).] Tags: http://hummy.tv/forum/threads/webif-version-1-0-8-released.4553/ diff --git a/var/mongoose/cgi-bin/epg/service.css b/var/mongoose/cgi-bin/epg/service.css new file mode 100644 index 0000000..74a1e9c --- /dev/null +++ b/var/mongoose/cgi-bin/epg/service.css @@ -0,0 +1,68 @@ + +table.weekview +{ + width: 100%; + border: 1px solid red; +} + +th.day, th.hour, td.dayhour +{ + border: solid 1px #d3d3d3; +} + +th.day, th.hour +{ + background: #ccff99; + color: black; +} + +th.day +{ + text-align: center; + font-size: 1.2em; + width: 13%; +} + +th.hour +{ + vertical-align: top; + text-align: center; + font-size: 1.3em; + padding: 8px 0; +} + +td.dayhour +{ + vertical-align: top; + background: #ffffcc; +} + +div.prog +{ + margin: 5px; +} + +div.progp +{ + padding-top: 1em; +} + +div.time +{ + font-size: 1.3em; + opacity: 0.6; + margin-bottom: 0.4em; +} + +div.title +{ + font-size: 1.1em; + text-weight: bold; + margin-bottom: 0.4em; +} + +div.synopsis +{ + font-size: 0.9em; +} + diff --git a/var/mongoose/cgi-bin/epg/service.jim b/var/mongoose/cgi-bin/epg/service.jim index 9b3e058..1e709f2 100755 --- a/var/mongoose/cgi-bin/epg/service.jim +++ b/var/mongoose/cgi-bin/epg/service.jim @@ -16,52 +16,117 @@ require totop require epg_popup -set service [cgi_get service 4351] -set records [epg fetch dump -service $service] +set service [cgi_get service 4170] +set records [epg dbfetch dump \ + -service $service \ + -sort "strftime('%%H%%J', start, 'unixepoch'), strftime('%%M', start, 'unixepoch')" \ + -debug 0 +] +if {[llength $records] == 0} { + puts "No data for service.." + exit +} + +# 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 80 {vertical-align:middle}] + [$tr channel_icon 40 {vertical-align:middle}] $channel_num - $channel_name
" -puts { - - - - - - - - +puts " +
+
DateTimeProgrammeSynopsis
+ + + +" +set t [clock seconds] +set firstday [clock format $t -format {%Y%m%d}] +set daymap {} +loop i 0 7 { + puts "" + set daymap([clock format $t -format {%Y%m%d}]) $i + incr t 86400 +} +puts " + + + +" + +set currhour -1 +set currday -1 +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} { + if {$currhour ne "-1"} { + loop i $daymap($currday) 6 { + puts "" + } + puts " + + + " - } else { puts "" } - if $ended { puts "" - if $ended { puts "" - puts [$record cell] - puts "" - puts "" - puts "" -} -puts "
[clock format $t -format {%a}]
" + puts "[clock format $t -format {%e %b}]
" + } + puts -nonewline "
$hour:00 + " + set currhour $hour + set currday $firstday + set newcell 1 + } + if {$day ne $currday} { + loop i $daymap($currday) $daymap($day) { + puts "" + } + set currday $day + set newcell 1 + } + set class "prog" + if {!$newcell} { set class "prog progp" } + if {[$e get series_crid] ne ""} { + set ro 2 + } else { + set ro 1 + } + set st [$e scheduled] + puts " +
+
+[clock format $start -format {%H:%M}]-[clock format [$e end] -format {%H:%M}] +
+ +
[$e get text] [join [$e icon_set 14] '']
+
+" + set newcell 0 } -set i 0 -foreach record $records { - altrow - #$record get_channel_info - set ended [$record ended] - if {[$record showing]} { - puts "
" } else { puts "" } - puts "[clock format [$record get start] -format "%a %d %b %Y"]" } else { puts "" } - puts "[clock format [$record get start] -format "%H:%M"][$record get text][$record get warning]
" +puts " + + + + + +" epg cleanup footer diff --git a/var/mongoose/cgi-bin/epg/xservice.jim b/var/mongoose/cgi-bin/epg/xservice.jim new file mode 100755 index 0000000..9b3e058 --- /dev/null +++ b/var/mongoose/cgi-bin/epg/xservice.jim @@ -0,0 +1,68 @@ +#!/mod/bin/jimsh + +package require cgi +source /mod/webif/lib/setup +require epg.class spinner.class altrow + +header + +require totop + +[spinner new { + text "Loading EPG Data..." + size "1.2em" + style "margin: 1em;" + }] start + +require epg_popup + +set service [cgi_get service 4351] +set records [epg fetch dump -service $service] + +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 80 {vertical-align:middle}] + + $channel_num - $channel_name + +
+" + +puts { + + + + + + + + +} + +set i 0 +foreach record $records { + altrow + #$record get_channel_info + set ended [$record ended] + if {[$record showing]} { + puts "" + } else { puts "" } + if $ended { puts "" + if $ended { puts "" + puts [$record cell] + puts "" + puts "" + puts "" +} +puts "
DateTimeProgrammeSynopsis
" } else { puts "" } + puts "[clock format [$record get start] -format "%a %d %b %Y"]" } else { puts "" } + puts "[clock format [$record get start] -format "%H:%M"][$record get text][$record get warning]
" + +epg cleanup +footer + diff --git a/var/mongoose/lib/epg.class b/var/mongoose/lib/epg.class index 1003806..b11b470 100644 --- a/var/mongoose/lib/epg.class +++ b/var/mongoose/lib/epg.class @@ -50,21 +50,9 @@ class epg { } epg method _parse {line} { - set vars [split $line "\t"] - - set service_id [lindex $vars 0] - set event_id [lindex $vars 1] - set start [lindex $vars 2] - set duration [lindex $vars 3] - set encrypted [lindex $vars 4] - set name [lindex $vars 5] - set text [lindex $vars 6] - set warning [lindex $vars 7] - set content_code [lindex $vars 8] - set content_type [lindex $vars 9] - set event_crid [lindex $vars 10] - set series_crid [lindex $vars 11] - set rec_crid [lindex $vars 12] + lassign [split $line "\t"] \ + service_id event_id start duration encrypted name text warning \ + content_code content_type event_crid series_cris rec_crid } epg method percent {} { @@ -97,6 +85,10 @@ epg method remaining {} { return [expr $duration - [$self elapsed]] } +epg method end {} { + return $($start + $duration) +} + epg method type_icon {} { set img "" switch -- $content_code { @@ -371,6 +363,7 @@ proc {epg dbfetch} {mode args} { set records {} set extra "" set params {} + set debug 0 set select " select distinct *, @@ -393,6 +386,7 @@ proc {epg dbfetch} {mode args} { if {[string first "-" $arg] == 0} { set v $args($arg) switch -- $arg { + -debug { set debug $v } -crid { append q \ "and e.event_crid = '$v' " } -scrid { append q \ @@ -407,6 +401,9 @@ proc {epg dbfetch} {mode args} { "and e.start < $v and e.end > $v " } -after { append q \ "and e.end >= $v " } + -before { append q \ + "and e.start < $v " } + -sort { set sort "order by $v" } -trange { lassign [split $v :] stt ett append q "and ( @@ -433,6 +430,7 @@ proc {epg dbfetch} {mode args} { } append q ") " } + -param { lappend params $v } default { error "Invalid option, $arg" } } } @@ -440,7 +438,10 @@ proc {epg dbfetch} {mode args} { set query "$select $from $q $sort" - #puts "QUERY -$query-" + if ($debug) { + puts "QUERY -$query-" + puts "PARAMS -$params-" + } set records {} if {[catch { diff --git a/var/mongoose/lib/epg_popup b/var/mongoose/lib/epg_popup index 4dfdd16..2f45450 100644 --- a/var/mongoose/lib/epg_popup +++ b/var/mongoose/lib/epg_popup @@ -55,7 +55,10 @@ $(document).ready(function() { var url = '/cgi-bin/epg/info.jim?service=' + o.attr('xs') + '&event=' + o.attr('xe') + '&bare=1'; - $('#dialogue').load(url, function() { + $('#dialogue') + .html(' Loading details...' + + ' Please wait...') + .load(url, function() { $('#dialogue a.event').click(function(e) { epgpopup(e, $(this)); });