mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-08-27 15:32:52 +02:00
Origin commit data
------------------
Branch: ni/coolstream
Commit: ef396f48bf
Author: vanhofen <vanhofen@gmx.de>
Date: 2023-03-02 (Thu, 02 Mar 2023)
Origin message was:
------------------
- yWeb: rename Y_NI_NetFS-control.yhtm => Y_Tools_NetFS.yhtm
------------------
No further description and justification available within origin commit message!
------------------
This commit was generated by Migit
303 lines
9.4 KiB
Plaintext
303 lines
9.4 KiB
Plaintext
/* yWeb EPG by yjogol
|
|
*/
|
|
|
|
/* EPG+ */
|
|
|
|
var g_width_px = 0; /* display width */
|
|
var g_number_of_cols = 0; /* nr of cols */
|
|
var g_width_all_items = 0; /* width without bouquet */
|
|
var c_width_px_per_min = 3; /* px per minute */
|
|
var c_min_per_col = 15; /* minutes per col */
|
|
var c_width_px_bouquet = 100; /* width of bouquet */
|
|
var c_slider_width = 25;
|
|
var epg_data; /* all EPG Data in 2-dim Array */
|
|
var epg_data_index = 0;
|
|
var g_timer_eventids = new Array();
|
|
var g_selected = 0;
|
|
|
|
/* calc the dimension px and mins to display */
|
|
function epg_plus_calc_dimensions()
|
|
{
|
|
var show_dim = jQuery('#epg_plus').outerWidth();
|
|
var usable_width_px = show_dim.width - c_slider_width; /*get display width*/
|
|
var max_minutes_to_display = Math.round((usable_width_px - c_width_px_bouquet - c_width_px_per_min) / c_width_px_per_min); /* calc display minutes*/
|
|
g_number_of_cols = Math.round(max_minutes_to_display / c_min_per_col);
|
|
g_width_px = g_number_of_cols * c_width_px_per_min * c_min_per_col + c_width_px_bouquet + c_width_px_per_min;
|
|
g_width_all_items = g_width_px - c_width_px_bouquet - c_width_px_per_min;
|
|
jQuery('#epg_plus').css('width', g_width_px);
|
|
}
|
|
|
|
function do_zap(channelid)
|
|
{
|
|
stb_zapto(channelid);
|
|
}
|
|
|
|
function epg_zapto()
|
|
{
|
|
stb_zapto(jQuery('#d_channel_id').text());
|
|
}
|
|
|
|
function epg_set_timer_rec()
|
|
{
|
|
stb_set_timer_rec(jQuery("#d_channel_id").text(), jQuery("#d_start").text(), jQuery("#d_stop").text());
|
|
}
|
|
|
|
function epg_set_timer_zap()
|
|
{
|
|
stb_set_timer_zap(jQuery("#d_channel_id").text(), jQuery("#d_start").text());
|
|
}
|
|
|
|
function build_epg_clear()
|
|
{
|
|
var ep = jQuery("#epg_plus");
|
|
obj_clear_all_childs(ep);
|
|
}
|
|
|
|
/* set a layout box and content */
|
|
function build_epg_setbox(_item, _starttime, _stoptime, _start, _stop)
|
|
{
|
|
var d_start = Math.max(_start, _starttime);
|
|
var d_stop = Math.min(_stop, _stoptime);
|
|
var d_left = c_width_px_bouquet + c_width_px_per_min + Math.round((d_start - _starttime) * c_width_px_per_min / 60);
|
|
var d_width = Math.max(0, Math.round((d_stop - d_start) * c_width_px_per_min / 60) - 3);
|
|
d_width = Math.min(d_width, g_width_px - d_left);
|
|
if (d_start < _stoptime)
|
|
_item.css({
|
|
'position': 'absolute',
|
|
'top': '0px',
|
|
'left': d_left + 'px',
|
|
'width': d_width + 'px'
|
|
})
|
|
}
|
|
|
|
/* show epg details */
|
|
function show_epg_item(_index)
|
|
{
|
|
g_selected=_index;
|
|
jQuery("#d_desc").html(epg_data[_index][4] + " " + epg_data[_index][0]);
|
|
jQuery("#d_info1").html(epg_data[_index][1]);
|
|
jQuery("#d_info2").html(epg_data[_index][2]);
|
|
jQuery("#d_start").html(epg_data[_index][3]);
|
|
jQuery("#d_stop").html(epg_data[_index][5]);
|
|
jQuery("#d_channel_id").html(epg_data[_index][6]);
|
|
var logo = epg_data[_index][7];
|
|
jQuery("#d_logo").html((logo != "") ? "<img class=\"channel_logos\" src=\"" + logo + "\">" : "");
|
|
|
|
var off= jQuery('#epg_plus').offset();
|
|
jQuery('#epg_info').css({
|
|
'left': off.left + 50 + 'px',
|
|
'top': off.top + 50 + 'px',
|
|
'position': 'absolute'
|
|
});
|
|
show_obj("epg_info",true);
|
|
}
|
|
|
|
/* build one channel row */
|
|
function build_epg_bouquet(__bdiv, __channel_id, _starttime, _stoptime, _logo)
|
|
{
|
|
var xml = loadSyncURLxml("/control/epg?xml=true&channelid=" + __channel_id + "&details=true&stoptime=" + _stoptime);
|
|
if (xml)
|
|
{
|
|
var prog_list = xml.getElementsByTagName('prog');
|
|
for (var i = 0; i < prog_list.length; i++)
|
|
{
|
|
var prog = prog_list[i];
|
|
|
|
var _stop = getXMLNodeItemValue(prog, "stop_sec");
|
|
_stop = parseInt(_stop);
|
|
if (_stop > _starttime)
|
|
{
|
|
var _start_t = getXMLNodeItemValue(prog, "start_t");
|
|
var _start = getXMLNodeItemValue(prog, "start_sec");
|
|
_start = parseInt(_start);
|
|
var _stop_t = getXMLNodeItemValue(prog, "stop_t");
|
|
var _desc = epg_de_qout(getXMLNodeItemValue(prog, "description"));
|
|
var _info1 = epg_de_qout(getXMLNodeItemValue(prog, "info1"));
|
|
var _info2 = epg_de_qout(getXMLNodeItemValue(prog, "info2"));
|
|
var __item = obj_createAt(__bdiv, "div", "ep_bouquet_item");
|
|
|
|
var epg_obj = new Array(_desc, _info1, _info2, _start, _start_t, _stop.toString(), __channel_id, _logo);
|
|
epg_data.push(epg_obj);
|
|
__item.innerHTML = "<span onclick=\"show_epg_item('" + epg_data_index + "');\" title=\"" + _start_t + " " + _desc + " (click for details)\">" + _desc + "</span>";
|
|
build_epg_setbox(__item, _starttime, _stoptime, _start, _stop);
|
|
epg_data_index++;
|
|
}
|
|
}
|
|
/* look for timers*/
|
|
var fou = g_timer_eventids.findAll(function(e) {
|
|
return e.get('channelid') == __channel_id;
|
|
});
|
|
if (fou)
|
|
{
|
|
jQuery(fou).each(function(i, e) {
|
|
var stTime="0";
|
|
var tclass="";
|
|
if (e.get('eventType') == 3) /* zap */
|
|
{
|
|
stTime = e.get('alarmTime');
|
|
stTime = parseInt(stTime, 10) + 200;
|
|
stTime = stTime.toString();
|
|
tclass = "ep_bouquet_zap";
|
|
}
|
|
else if (e.get('eventType') == 5) /* record */
|
|
{
|
|
stTime = e.get('stopTime');
|
|
tclass = "ep_bouquet_rec";
|
|
}
|
|
var __item = obj_createAt(__bdiv, "div", tclass);
|
|
build_epg_setbox(__item, _starttime, _stoptime, e.get('alarmTime'), stTime);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
/* build time row */
|
|
function build_epg_time_bar(_tdiv, _starttime, _stoptime){
|
|
var _start = _starttime;
|
|
for (var i = 0; i < g_number_of_cols; i++)
|
|
{
|
|
var __item = obj_createAt(_tdiv, "div", "ep_time_bar_item");
|
|
__item.innerHTML = format_time(new Date(_start * 1000));
|
|
var _stop = _start + (c_min_per_col * 60);
|
|
build_epg_setbox(__item, _starttime, _stoptime, _start, _stop);
|
|
_start = _stop;
|
|
}
|
|
}
|
|
|
|
function get_timer()
|
|
{
|
|
g_timer_eventids = new Array();
|
|
var timer = loadSyncURL("/control/timer?format=id");
|
|
var lines = timer.split("\n");
|
|
jQuery(lines).each(function(index, line) {
|
|
var vals = line.split(" ");
|
|
if (vals.length >= 8 && (vals[1] == 3 || vals[5])) /* record and zap */
|
|
{
|
|
var aTimer = $H( {
|
|
'eventID': vals[0],
|
|
'eventType': vals[1],
|
|
'eventRepeat': vals[2],
|
|
'repcount': vals[3],
|
|
'announceTime': vals[4],
|
|
'alarmTime': vals[5],
|
|
'stopTime': vals[6],
|
|
'channelid': vals[7]
|
|
});
|
|
g_timer_eventids.push(aTimer);
|
|
}
|
|
},this);
|
|
}
|
|
|
|
/* main */
|
|
var g_i = 0;
|
|
var g_bouquet_list;
|
|
var g_display_logos = "";
|
|
function build_epg_plus(_bouquet, _starttime)
|
|
{
|
|
build_epg_clear();
|
|
epg_data = new Array();
|
|
epg_data_index=0;
|
|
var _bouquets_xml = loadSyncURLxml("/control/getbouquet?bouquet=" + _bouquet + "&xml=true");
|
|
if (_bouquets_xml)
|
|
{
|
|
g_bouquet_list = _bouquets_xml.getElementsByTagName("channel");
|
|
var ep = jQuery("#epg_plus");
|
|
var _stoptime = _starttime + c_min_per_col * 60 * g_number_of_cols;
|
|
var __tdiv = obj_createAt(ep, "div", "ep_time_bar");
|
|
var __tname_div = obj_createAt(__tdiv, "div", "ep_time_bar_item");
|
|
__tname_div.innerHTML = "Uhrzeit";
|
|
__tname_div.style.cssText = "width:" + c_width_px_bouquet + "px;";
|
|
build_epg_time_bar(__tdiv, _starttime, _stoptime);
|
|
__tdiv.style.cssText = "width:" + g_width_px;
|
|
var __ediv = obj_createAt(ep, "div", "epg_plus_container");
|
|
__ediv.setAttribute("id", "epg_plus_container")
|
|
g_i = 0;
|
|
window.setTimeout("build_epg_plus_loop(" + _starttime + "," + _stoptime + ")", 100);
|
|
}
|
|
}
|
|
|
|
function build_epg_plus_loop(_starttime, _stoptime)
|
|
{
|
|
if (g_i<g_bouquet_list.length)
|
|
{
|
|
var _bouquet = g_bouquet_list[g_i];
|
|
var __channel_name = getXMLNodeItemValue(_bouquet, "name");
|
|
var __channel_id = getXMLNodeItemValue(_bouquet, "id");
|
|
var __short_channel_id = getXMLNodeItemValue(_bouquet, "short_id");
|
|
var __logo = getXMLNodeItemValue(_bouquet, "logo");
|
|
var ep = jQuery("#epg_plus_container");
|
|
var __bdiv = obj_createAt(ep, "div", "ep_bouquet");
|
|
var __bname_div = obj_createAt(__bdiv, "div", "ep_bouquet_name");
|
|
var ch_name_with_logo = (g_display_logos == "true") ? "<img class=\"channel_logos\" src=\"" + __logo + "\" title=\"" + __channel_name + "\" alt=\"" + __channel_name + "\" >" : __channel_name;
|
|
jQuery("#"+__bname_div).css({ "width": c_width_px_bouquet + "px"});
|
|
jQuery("#"+__bname_div).html("<a href=\"javascript:do_zap('" + __channel_id + "');\">" + ch_name_with_logo + "</a>");
|
|
build_epg_bouquet(__bdiv, __channel_id, _starttime, _stoptime, __logo);
|
|
window.setTimeout("build_epg_plus_loop(" + _starttime + "," + _stoptime + ")", 100);
|
|
g_i++;
|
|
}
|
|
else
|
|
{
|
|
show_waitbox(false);
|
|
obj_disable("btGet", false);
|
|
}
|
|
}
|
|
|
|
/* main: build epg+ */
|
|
function build_epg_plus_main()
|
|
{
|
|
epg_plus_calc_dimensions();
|
|
get_timer();
|
|
show_obj("epg_info", false);
|
|
show_waitbox(true);
|
|
obj_disable("btGet", true);
|
|
var sel = document.e.bouquets.selectedIndex;
|
|
if (sel != -1)
|
|
bou = document.e.bouquets[sel].value;
|
|
else
|
|
bou = 1;
|
|
_secs = document.e.epg_time.value;
|
|
_secs = parseInt(_secs);
|
|
build_epg_plus(bou, _secs);
|
|
//document.getElementById("epg_plus").width = g_width_px;
|
|
}
|
|
|
|
/* change time offset and build epg+ */
|
|
function build_epg_plus_delta(_delta)
|
|
{
|
|
if (document.e.epg_time.selectedIndex + _delta < document.e.epg_time.length && document.e.epg_time.selectedIndex + _delta >= 0)
|
|
document.e.epg_time.selectedIndex += _delta;
|
|
build_epg_plus_main();
|
|
}
|
|
|
|
/* time delta dropdown-list */
|
|
function build_time_list(_delta)
|
|
{
|
|
var now = new Date();
|
|
now.setMinutes(0);
|
|
now.setSeconds(0);
|
|
now.setMilliseconds(0);
|
|
now = new Date(now.getTime() + _delta * 60 * 60 * 1000);
|
|
var _secs = now / 1000;
|
|
var _hour = now.getHours();
|
|
var et = document.getElementById("epg_time");
|
|
for (i = 0; i < 24; i++)
|
|
{
|
|
var _time = (_hour + i) % 24;
|
|
if(_time < 10)
|
|
_time = "0" + _time;
|
|
_time += ":00";
|
|
var _time_t = _secs + i * 3600;
|
|
var __item = obj_createAt(et, "option", "ep_bouquet_item");
|
|
__item.text = _time;
|
|
__item.value = _time_t;
|
|
}
|
|
}
|
|
|
|
/* init call */
|
|
function epg_plus_init(_display_logos)
|
|
{
|
|
g_display_logos = _display_logos;
|
|
window.onresize = epg_plus_calc_dimensions();
|
|
build_time_list(0);
|
|
}
|