( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
const char *uuid;
- htsmsg_t *e, *st, *stf;
+ htsmsg_t *e, *st, *stf, *hbbtv = NULL;
service_t *s;
elementary_stream_t *es;
htsmsg_add_msg(stf, NULL, api_service_streams_get_one(es, 1));
*resp = htsmsg_create_map();
htsmsg_add_str(*resp, "name", s->s_nicename);
+ if (s->s_hbbtv)
+ hbbtv = htsmsg_copy(s->s_hbbtv);
+ pthread_mutex_unlock(&s->s_stream_mutex);
+
htsmsg_add_msg(*resp, "streams", st);
htsmsg_add_msg(*resp, "fstreams", stf);
- pthread_mutex_unlock(&s->s_stream_mutex);
+ if (hbbtv)
+ htsmsg_add_msg(*resp, "hbbtv", hbbtv);
/* Done */
pthread_mutex_unlock(&global_lock);
return r;
}
- function header( ) {
+ function header() {
html += '<table style="font-size:8pt;font-family:monospace;padding:2px"';
html += '<tr>';
html += '<th style="width:50px;font-weight:bold">' + _('Index') + '</th>';
}
+ function footer() {
+ html += '</table>';
+ }
+
function single(s) {
html += '<tr><td colspan="5">' + s + '</td></tr>';
}
}
header();
-
if (data.streams.length) {
for (i = 0; i < data.streams.length; i++)
stream(data.streams[i]);
} else
single(_('None'));
+ footer();
- single(' ');
single('<h3>' + _('After filtering and reordering (without PCR and PMT)') + '</h3>');
- header();
+ header();
if (data.fstreams.length)
for (i = 0; i < data.fstreams.length; i++)
stream(data.fstreams[i]);
else
- single('<p>' + _('None') + '</p>');
+ single(_('None'));
+ footer();
+
+ if (data.hbbtv) {
+ html += '<h3>' + _('HbbTv') + '</h3>';
+ html += '<table style="font-size:8pt;font-family:monospace;padding:2px"';
+ html += '<tr>';
+ html += '<th style="width:50px;font-weight:bold">' + _('Section') + '</th>';
+ html += '<th style="width:50px;font-weight:bold">' + _('Language') + '</th>';
+ html += '<th style="width:200px;font-weight:bold">' + _('Name') + '</th>';
+ html += '<th style="width:310px;font-weight:bold">' + _('Link') + '</th>';
+ html += '</tr>';
+ for (var sect in data.hbbtv) {
+ for (var appidx in data.hbbtv[sect]) {
+ var app = data.hbbtv[sect][appidx];
+ if (!app.title) continue;
+ for (var titleidx = 0; titleidx < app.title.length; titleidx++) {
+ var title = app.title[titleidx];
+ html += '<tr>';
+ html += '<td>' + sect + '</td>';
+ html += '<td>' + title.lang + '</td>';
+ html += '<td>' + title.name + '</td>';
+ html += '<td><a href="' + app.url + '" target="_blank">' + app.url + '</td>';
+ html += '</tr>';
+ }
+ }
+ }
+ html += '</table>';
+ }
var win = new Ext.Window({
title: _('Service details for') + ' ' + data.name,