added in popup programming info box

git-svn-id: file:///root/webif/svn/humax/pkg/src/webif@167 2a923420-c742-0410-a762-8d5b09965624
This commit is contained in:
hummypkg 2011-06-08 23:33:35 +00:00
parent b1bc314bed
commit 5fb2b59a3a
38 changed files with 266 additions and 27 deletions

100
var/mongoose/cgi-bin/epg_info.jim Executable file
View File

@ -0,0 +1,100 @@
#!/mod/bin/jimsh
package require cgi
source /mod/var/mongoose/lib/epg.class
puts "Content-Type: text/html"
puts ""
cgi_input
#cgi_dump
set service 0
catch { set service [dict get $_cgi service] }
set event 0
catch { set event [dict get $_cgi event] }
if {! [dict exists $_cgi bare]} {
source /mod/var/mongoose/html/lib/header.jim
}
#set service 8384
#set event 25293
set record [lindex [epg fetch dump -service $service -event $event] 0]
puts "
<table class=keyval>
<tr>
<th>Programme</th>
<td>[$record get name]</td>
</tr><tr>
<th>Synopsis</th>
<td>[$record get text]</td>
</tr><tr>
<th>Start</th>
<td>[clock format [$record get start] -format {%c %Z}]</td>
</tr><tr>
<th>Duration</th>
<td>[clock format [$record get duration] -format %T]</td>
</tr><tr>
<th>Type</th>
<td>[$record get content_type] ([$record get content_code])</td>
</tr>
"
if {[$record get warning] != ""} {
puts "
<tr>
<th>Warning</th>
<td>[$record get warning]</td>
</tr>
"
}
if {[$record get event_crid] != ""} {
puts "
<tr>
<th>CRID</th>
<td>[$record get channel_crid][$record get event_crid]</td>
</tr>
"
}
if {[$record get series_crid] != ""} {
puts "
<tr>
<th nowrap>Series CRID</th><td>
<a href=/cgi-bin/epg_search.jim?scrid=[$record get series_crid]>
[$record get channel_crid][$record get series_crid]
</a>
</td>
</tr>
"
}
if {[$record get rec_crid] != ""} {
set rec [$record recommended]
if {$rec != ""} {
puts "<tr><th>Recommends</th><td>
<a href=/cgi-bin/epg_search.jim?crid=[$rec get event_crid]>
[$rec get name]
([$rec get channel_crid][$rec get event_crid])
</a>
</td></tr>"
}
}
puts "
<tr>
<td colspan=2>
[$record icon_set]
</td>
</tr>
</table>
"
epg cleanup
if {! [dict exists $_cgi bare]} {
source /mod/var/mongoose/html/lib/footer.jim
}

View File

@ -22,6 +22,10 @@ set cmd "search"
if {[dict exists $_cgi full]} { set cmd "searchall" }
set ct 0
catch { set ct [dict get $_cgi ct] }
set crid ""
catch { set crid [dict get $_cgi crid] }
set scrid ""
catch { set scrid [dict get $_cgi scrid] }
puts "
<form method=get action=/cgi-bin/epg_search.jim>
@ -89,6 +93,10 @@ puts "</form>"
if {$ct > 0 } {
set records [epg fetch dump -type $ct]
} elseif {$crid ne ""} {
set records [epg fetch dump -crid $crid]
} elseif {$scrid ne ""} {
set records [epg fetch dump -scrid $scrid]
} elseif {$term ne ""} {
set records [epg fetch $cmd -extra $term]
}

View File

@ -2,6 +2,7 @@
package require cgi
source /mod/var/mongoose/lib/epg.class
source /mod/var/mongoose/lib/spinner.class
source /mod/var/mongoose/lib/altrow
puts "Content-Type: text/html"
@ -9,6 +10,12 @@ puts ""
source /mod/var/mongoose/html/lib/header.jim
[spinner new {
text "Loading EPG Data..."
size "1.2em"
style "margin: 1em;"
}] start
cgi_input
#cgi_dump

View File

@ -50,7 +50,7 @@
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=8px&bgColorHeader=817865&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=45&borderColorHeader=494437&fcHeader=ffffff&iconColorHeader=fadc7a&bgColorContent=feeebd&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=8e846b&fcContent=383838&iconColorContent=d19405&bgColorDefault=fece2f&bgTextureDefault=12_gloss_wave.png&bgImgOpacityDefault=60&borderColorDefault=d19405&fcDefault=4c3000&iconColorDefault=3d3d3d&bgColorHover=ffdd57&bgTextureHover=12_gloss_wave.png&bgImgOpacityHover=70&borderColorHover=a45b13&fcHover=381f00&iconColorHover=bd7b00&bgColorActive=ffffff&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=30&borderColorActive=655e4e&fcActive=0074c7&iconColorActive=eb990f&bgColorHighlight=fff9e5&bgTextureHighlight=12_gloss_wave.png&bgImgOpacityHighlight=90&borderColorHighlight=eeb420&fcHighlight=1f1f1f&iconColorHighlight=ed9f26&bgColorError=d34d17&bgTextureError=07_diagonals_medium.png&bgImgOpacityError=20&borderColorError=ffb73d&fcError=ffffff&iconColorError=ffe180&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=8px&bgColorHeader=ccff99&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=45&borderColorHeader=494437&fcHeader=000000&iconColorHeader=554e34&bgColorContent=ffffcc&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=8e846b&fcContent=383838&iconColorContent=d19405&bgColorDefault=fece2f&bgTextureDefault=12_gloss_wave.png&bgImgOpacityDefault=60&borderColorDefault=d19405&fcDefault=4c3000&iconColorDefault=3d3d3d&bgColorHover=ffdd57&bgTextureHover=12_gloss_wave.png&bgImgOpacityHover=70&borderColorHover=a45b13&fcHover=381f00&iconColorHover=bd7b00&bgColorActive=ffffff&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=30&borderColorActive=655e4e&fcActive=0074c7&iconColorActive=eb990f&bgColorHighlight=fff9e5&bgTextureHighlight=12_gloss_wave.png&bgImgOpacityHighlight=90&borderColorHighlight=eeb420&fcHighlight=1f1f1f&iconColorHighlight=ed9f26&bgColorError=d34d17&bgTextureError=07_diagonals_medium.png&bgImgOpacityError=20&borderColorError=ffb73d&fcError=ffffff&iconColorError=ffe180&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
*/
@ -59,10 +59,10 @@
.ui-widget { font-family: Segoe UI, Arial, sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Segoe UI, Arial, sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #8e846b; background: #feeebd url(/img/ui/ui-bg_highlight-soft_100_feeebd_1x100.png) 50% top repeat-x; color: #383838; }
.ui-widget-content { border: 1px solid #8e846b; background: #ffffcc url(/img/ui/ui-bg_highlight-soft_100_ffffcc_1x100.png) 50% top repeat-x; color: #383838; }
.ui-widget-content a { color: #383838; }
.ui-widget-header { border: 1px solid #494437; background: #817865 url(/img/ui/ui-bg_gloss-wave_45_817865_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
.ui-widget-header a { color: #ffffff; }
.ui-widget-header { border: 1px solid #494437; background: #ccff99 url(/img/ui/ui-bg_gloss-wave_45_ccff99_500x100.png) 50% 50% repeat-x; color: #000000; font-weight: bold; }
.ui-widget-header a { color: #000000; }
/* Interaction states
----------------------------------*/
@ -91,7 +91,7 @@
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(/img/ui/ui-icons_d19405_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(/img/ui/ui-icons_d19405_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(/img/ui/ui-icons_fadc7a_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(/img/ui/ui-icons_554e34_256x240.png); }
.ui-state-default .ui-icon { background-image: url(/img/ui/ui-icons_3d3d3d_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(/img/ui/ui-icons_bd7b00_256x240.png); }
.ui-state-active .ui-icon {background-image: url(/img/ui/ui-icons_eb990f_256x240.png); }

View File

@ -86,6 +86,21 @@ table th
text-align: left;
}
table.keyval th
{
background: #ccff99;
font-weight: bold;
text-align: right;
color: black;
padding: 0.5em;
}
table.keyval td
{
background: #ffffcc;
color: black;
}
pre
{
font-family: Consolas, 'Courier New', Courier, monospace;

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -4,6 +4,9 @@ puts {
<title>Humax HD[R] Fox T2</title>
<link rel="shortcut icon" href=/img/favicon.ico>
<link href=/css/style.css rel=stylesheet type=text/css>
<link type="text/css" href="/css/jquery-ui.css" rel="Stylesheet" />
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jquery-ui.js"></script>
</head>
<body>
}

View File

@ -3,6 +3,9 @@
<title>Humax HD[R] Fox T2</title>
<link rel="shortcut icon" href=/img/favicon.ico>
<link href=/css/style.css rel=stylesheet type=text/css>
<link type="text/css" href="/css/jquery-ui.css" rel="Stylesheet" />
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jquery-ui.js"></script>
</head>
<body>

View File

@ -2,6 +2,8 @@
package require sqlite3
source /mod/var/mongoose/lib/altrow
proc db_info {db_file} {
set db [sqlite3.open $db_file]
set tables [$db query {SELECT name FROM sqlite_master WHERE type='table' ORDER BY name}]
@ -17,11 +19,11 @@ proc db_info {db_file} {
puts "<table>"
puts " <tr>"
foreach column $columns {
puts " <td>[lindex $column 3]</td>"
puts " <th>[lindex $column 3]</th>"
}
puts " </tr>"
foreach data $datas {
puts " <tr>"
altrow
for {set i 1} {$i < [llength $data]} {incr i 2} {
puts " <td>[lindex $data $i]</td>"
@ -38,3 +40,4 @@ puts {<style type="text/css">table, td, th {border-collapse:collapse; border:1px
db_info /var/lib/humaxtv/rsv.db
db_info /var/lib/humaxtv/setup.db
db_info /var/lib/humaxtv/channel.db

View File

@ -1,8 +1,43 @@
#!/mod/bin/jimsh
source /mod/var/mongoose/lib/epg.class
source /mod/var/mongoose/lib/spinner.class
source /mod/var/mongoose/lib/altrow
[spinner new {
text "Loading EPG Data..."
size "1.2em"
style "margin: 1em;"
}] start
puts {
<div id=dialogue></div>
<script type=text/javascript>
$(document).ready(function() {
var $dialog = $('#dialogue').dialog({
title: "Programme Details",
modal: false,
autoOpen: false,
height: 500,
width: 700,
show: 'scale',
hide: 'fade',
draggable: false,
resizable: false,
buttons: { "Close":
function() {$(this).dialog('close');}},
close: function(e,u) { $('#dialogue').empty().html('<img src="/img/loading.gif" alt="loading">'); }
});
$('a.event').click(function(e) {
e.preventDefault();
var url = $(this).attr('href');
$('#dialogue').load(url + '&bare=1');
$dialog.dialog('open');
});
});
</script>
}
set start [clock milliseconds]
set records [epg fetch dump -time [clock seconds]]
set got [clock milliseconds]
@ -25,7 +60,6 @@ proc rsort {v1 v2} {
return -1
}
set i 0
foreach record [lsort -command rsort $records] {
altrow
puts "<td>[$record get channel_num]</td>"

View File

@ -26,7 +26,6 @@ puts "<th>Date/Time</th>"
puts "<th>Mode</th>"
puts "<th>Series ID</th>"
puts "</tr>"
set i 0
foreach r $res {
set name [string range $r(szevtname) 1 end]
if {[string first "i7" $name] == 0} {

View File

@ -30,11 +30,13 @@ class epg {
channel_num 0
channel_name ""
channel_crid ""
}
epg method channel {chnum chname} {
epg method channel {chnum chname chcrid} {
set channel_num $chnum
set channel_name $chname
set channel_crid [string toupper $chcrid]
}
epg method _parse {line} {
@ -78,14 +80,7 @@ epg method remaining {} {
return [expr $duration - [$self elapsed]]
}
epg method cell {} {
set name [$self get name]
set text [$self get text]
set percent [$self percent]
puts "<td nowrap valign=top title=\"$text\">"
epg method type_icon {} {
set img ""
switch -- [$self get content_code] {
1 { set img "Movie" }
@ -100,16 +95,44 @@ epg method cell {} {
10 { set img "Leisure" }
}
if {$img != ""} {
puts "<img src=/images/173_3_00_G3_$img.png height=14
return "/images/173_3_00_G3_$img.png"
} else {
return ""
}
}
epg method icon_set {{height 0}} {
if {$height > 0} { set height "height=$height" } else { set height "" }
set icon [$self type_icon]
set str ""
if {$icon != ""} {
append str "<img src=$icon $height
alt=\"[$self get content_type]\"
title=\"[$self get content_type]\"
>"
title=\"[$self get content_type]\">"
}
if {[$self get rec_crid] != ""} {
append str \
"<img src=/images/178_1_26_Icon_Recommend.png $height>"
}
if {[$self get series_crid] != ""} {
puts "<img src=/images/178_1_00_Icon_Serise.png height=14>"
append str \
"<img src=/images/178_1_00_Icon_Serise.png $height>"
}
return $str
}
epg method cell {} {
set name [$self get name]
set text [$self get text]
set percent [$self percent]
puts "<td nowrap valign=top title=\"$text\">"
puts [$self icon_set 14]
puts "
<a href=/cgi-bin/epg_dump.jim?service=[$self get service_id]&event=[$self get event_id]>
<a class=event href=/cgi-bin/epg_info.jim?service=[$self get service_id]&event=[$self get event_id]>
$name</a>"
puts "<br>"
@ -137,6 +160,15 @@ epg method next {} {
}
}
epg method recommended {} {
set rec ""
if {[$self get rec_crid] != ""} {
catch { set rec [lindex [
epg fetch dump -crid [$self get rec_crid]] 0] }
}
return $rec
}
proc {epg parse} {line} {
set e [epg new]
$e _parse $line
@ -146,7 +178,7 @@ proc {epg parse} {line} {
proc {epg cleanup} {} {
global channeldb
if $channeldb { $channeldb close }
if {$channeldb != ""} { $channeldb close }
}
proc {epg exec} {mode args} {
@ -158,6 +190,7 @@ proc {epg exec} {mode args} {
switch -- $arg {
-raw { set raw 1 }
-crid { lappend cmd -C $args($arg) }
-scrid { lappend cmd -R $args($arg) }
-type { lappend cmd -T $args($arg) }
-service { lappend cmd -S $args($arg) }
-event { lappend cmd -E $args($arg) }
@ -179,15 +212,18 @@ proc {epg exec} {mode args} {
proc {epg fetch} {mode args} {
global channeldb
set records ""
foreach line [split [epg exec $mode {*}$args] "\n"] {
set record [epg parse $line]
if $channeldb {
if {$channeldb != ""} {
set chan [lindex [$channeldb query {
select szSvcName, usLcn from TBL_SVC
select szSvcName, usLcn, aucDefaultAuthority
from TBL_SVC
where usSvcId = %s} "[$record get service_id]"
] 0]
$record channel $chan(usLcn) \
[string range $chan(szSvcName) 1 end]
[string range $chan(szSvcName) 1 end] \
$chan(aucDefaultAuthority)
}
lappend records $record

View File

@ -0,0 +1,31 @@
class spinner {
name "spinner"
text "Loading..."
img "/img/loading.gif"
size "1.1em"
style ""
speed "slow"
}
spinner method start {} {
puts "<div style=\"
align: center;
font-size: [$self get size];
[$self get style]
\"
id=\"[$self get name]\">
<img src=\"[$self get img]\">
[$self get text]
</div>
";
puts "
<script type=text/javascript>
\$(document).ready(function () {
\$('#[$self get name]').hide('[$self get speed]');
});
</script>
"
flush stdout
}