Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
WEBUI: move CA and stream filters tabs to the 'expert' level
  • Loading branch information
perexg committed Dec 2, 2015
1 parent 97d6eb8 commit b377d57
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 36 deletions.
1 change: 1 addition & 0 deletions src/webui/static/app/caclient.js
Expand Up @@ -37,6 +37,7 @@ tvheadend.caclient = function(panel, index) {
val: 'title',
fields: ['uuid', 'title', 'status'],
tabIndex: index,
uilevel: 'expert',
list: { url: 'api/caclient/list', params: { } },
edit: { params: { list: list } },
add: {
Expand Down
2 changes: 1 addition & 1 deletion src/webui/static/app/config.js
Expand Up @@ -16,7 +16,7 @@ tvheadend.baseconf = function(panel, index) {
if (l >= 0) {
var tr = {0:'basic',1:'advanced',2:'expert'};
l = (l in tr) ? tr[l] : 'basic';
tvheadend.uilevel = l;
tvheadend.change_uilevel(l);
abuttons.uilevel.initialConfig.tvh_uilevel_set(l);
}
},
Expand Down
6 changes: 6 additions & 0 deletions src/webui/static/app/esfilter.js
Expand Up @@ -52,6 +52,7 @@ tvheadend.esfilter_tab = function(panel)
titleP: _('Video Stream Filters'),
iconCls: 'film_edit',
tabIndex: 1,
uilevel: 'expert',
edit: { params: { list: eslist } },
add: {
params: { list: eslist },
Expand All @@ -71,6 +72,7 @@ tvheadend.esfilter_tab = function(panel)
titleP: _('Audio Stream Filters'),
iconCls: 'control_volume',
tabIndex: 2,
uilevel: 'expert',
edit: { params: { list: eslist } },
add: {
params: { list: eslist },
Expand All @@ -90,6 +92,7 @@ tvheadend.esfilter_tab = function(panel)
titleP: _('Teletext Stream Filters'),
iconCls: 'teletext',
tabIndex: 3,
uilevel: 'expert',
edit: { params: { list: eslist } },
add: {
params: { list: eslist },
Expand All @@ -109,6 +112,7 @@ tvheadend.esfilter_tab = function(panel)
titleP: _('Subtitle Stream Filters'),
iconCls: 'subtitle',
tabIndex: 4,
uilevel: 'expert',
edit: { params: { list: eslist } },
add: {
params: { list: eslist },
Expand All @@ -128,6 +132,7 @@ tvheadend.esfilter_tab = function(panel)
titleP: _('CA Stream Filters'),
iconCls: 'film_key',
tabIndex: 5,
uilevel: 'expert',
add: {
params: { list: eslist },
url: 'api/esfilter/ca',
Expand All @@ -146,6 +151,7 @@ tvheadend.esfilter_tab = function(panel)
titleP: _('Other Stream Filters'),
iconCls: 'otherFilters',
tabIndex: 6,
uilevel: 'expert',
edit: { params: { list: eslist } },
add: {
params: { list: eslist },
Expand Down
57 changes: 36 additions & 21 deletions src/webui/static/app/idnode.js
Expand Up @@ -279,12 +279,8 @@ tvheadend.IdNodeField = function(conf)

this.get_hidden = function(uilevel) {
var hidden = this.hidden || this.noui;
if (uilevel !== 'expert') {
if (uilevel === 'advanced' && this.uilevel === 'expert')
hidden = true;
else if (uilevel === 'basic' && this.uilevel !== 'basic')
hidden = true;
}
if (!tvheadend.uilevel_match(this.uilevel, uilevel))
hidden = true;
return hidden;
}

Expand Down Expand Up @@ -955,13 +951,7 @@ tvheadend.idnode_editor_form = function(uilevel, d, meta, panel, conf)
var cnt = 0;
for (var i = 0; i < g.length; i++) {
var f = g[i];
var hide = false;
if (uilevel == 'basic') {
hide = f.tvh_uilevel !== 'basic';
} else if (uilevel == 'advanced') {
hide = f.tvh_uilevel === 'expert';
}
if (hide)
if (!tvheadend.uilevel_match(f.tvh_uilevel, uilevel))
f.setVisible(false);
else
cnt++;
Expand Down Expand Up @@ -1314,6 +1304,34 @@ tvheadend.idnode_create = function(conf, onlyDefault)
}
};

/*
*
*/
tvheadend.idnode_panel = function(conf, panel, dpanel, builder, destroyer)
{
if (!conf.uilevel || tvheadend.uilevel_match(conf.uilevel, tvheadend.uilevel)) {
tvheadend.paneladd(panel, dpanel, conf.tabIndex);
tvheadend.panelreg(panel, dpanel, builder, destroyer);
}

if (conf.uilevel) {
var f = function(l) {
var d = panel.findById(dpanel.id);
if (!tvheadend.uilevel_match(conf.uilevel, l)) {
if (d) {
panel.remove(dpanel);
destroyer();
}
} else {
if (!d) {
tvheadend.paneladd(panel, dpanel, conf.tabIndex);
tvheadend.panelreg(panel, dpanel, builder, destroyer);
}
}
}
tvheadend.uilevel_cb.push(f);
}
}

/*
* IDnode grid
Expand Down Expand Up @@ -1912,8 +1930,7 @@ tvheadend.idnode_grid = function(panel, conf)
iconCls: conf.iconCls || ''
});

tvheadend.paneladd(panel, dpanel, conf.tabIndex);
tvheadend.panelreg(panel, dpanel, builder, destroyer);
tvheadend.idnode_panel(conf, panel, dpanel, builder, destroyer);
};

/*
Expand Down Expand Up @@ -2298,8 +2315,7 @@ tvheadend.idnode_form_grid = function(panel, conf)
iconCls: conf.iconCls || ''
});

tvheadend.paneladd(panel, dpanel, conf.tabIndex);
tvheadend.panelreg(panel, dpanel, builder, destroyer);
tvheadend.idnode_panel(conf, panel, dpanel, builder, destroyer);
};

/*
Expand Down Expand Up @@ -2456,8 +2472,7 @@ tvheadend.idnode_tree = function(panel, conf)
iconCls: conf.iconCls || ''
});

tvheadend.paneladd(panel, dpanel, conf.tabIndex);
tvheadend.panelreg(panel, dpanel, builder, destroyer);
tvheadend.idnode_panel(conf, panel, dpanel, builder, destroyer);
};

/*
Expand Down Expand Up @@ -2689,6 +2704,6 @@ tvheadend.idnode_simple = function(panel, conf)
if (mpanel)
mpanel.fireEvent('uilevel');
});
tvheadend.paneladd(panel, dpanel, conf.tabIndex);
tvheadend.panelreg(panel, dpanel, builder, destroyer);

tvheadend.idnode_panel(conf, panel, dpanel, builder, destroyer);
};
60 changes: 46 additions & 14 deletions src/webui/static/app/tvheadend.js
Expand Up @@ -4,6 +4,7 @@ tvheadend.capabilities = null;
tvheadend.admin = false;
tvheadend.dialog = null;
tvheadend.uilevel = 'expert';
tvheadend.uilevel_cb = [];

tvheadend.cookieProvider = new Ext.state.CookieProvider({
// 7 days from now
Expand All @@ -18,16 +19,37 @@ tvheadend.regexEscape = function(s) {
}

tvheadend.fromCSV = function(s) {
var a = s.split(',');
var r = [];
for (var i in a) {
var v = a[i];
if (v[0] == '"' && v[v.length-1] == '"')
r.push(v.substring(1, v.length - 1));
else
r.push(v);
}
return r;
var a = s.split(',');
var r = [];
for (var i in a) {
var v = a[i];
if (v[0] == '"' && v[v.length-1] == '"')
r.push(v.substring(1, v.length - 1));
else
r.push(v);
}
return r;
}

/**
* Change uilevel
*/
tvheadend.uilevel_match = function(target, current) {
if (current !== 'expert') {
if (current === 'advanced' && target === 'expert')
return false;
else if (current === 'basic' && target !== 'basic')
return false;
}
return true;
}

tvheadend.change_uilevel = function(uilevel) {
if (tvheadend.uilevel !== uilevel) {
tvheadend.uilevel = uilevel;
for (var i = 0; i < tvheadend.uilevel_cb.length; i++)
tvheadend.uilevel_cb[i](uilevel);
}
}

/**
Expand Down Expand Up @@ -406,8 +428,6 @@ function accessUpdate(o) {
return;

tvheadend.admin = o.admin == true;
if (o.uilevel)
tvheadend.uilevel = o.uilevel;

if ('info_area' in o)
tvheadend.rootTabPanel.setInfoArea(o.info_area);
Expand Down Expand Up @@ -442,6 +462,7 @@ function accessUpdate(o) {

/* General */
var general = new Ext.TabPanel({
tabIndex: 0,
activeTab: 0,
autoScroll: true,
title: _('General'),
Expand All @@ -457,6 +478,7 @@ function accessUpdate(o) {

/* Users */
var users = new Ext.TabPanel({
tabIndex: 1,
activeTab: 0,
autoScroll: true,
title: _('Users'),
Expand All @@ -472,6 +494,7 @@ function accessUpdate(o) {

/* DVB inputs, networks, muxes, services */
var dvbin = new Ext.TabPanel({
tabIndex: 2,
activeTab: 0,
autoScroll: true,
title: _('DVB Inputs'),
Expand All @@ -490,6 +513,7 @@ function accessUpdate(o) {

/* Channel / EPG */
var chepg = new Ext.TabPanel({
tabIndex: 3,
activeTab: 0,
autoScroll: true,
title: _('Channel / EPG'),
Expand All @@ -507,6 +531,7 @@ function accessUpdate(o) {

/* Stream Config */
var stream = new Ext.TabPanel({
tabIndex: 4,
activeTab: 0,
autoScroll: true,
title: _('Stream'),
Expand All @@ -519,6 +544,7 @@ function accessUpdate(o) {

/* DVR / Timeshift */
var tsdvr = new Ext.TabPanel({
tabIndex: 5,
activeTab: 0,
autoScroll: true,
title: _('Recording'),
Expand All @@ -533,17 +559,23 @@ function accessUpdate(o) {

/* CSA */
if (tvheadend.capabilities.indexOf('caclient') !== -1)
tvheadend.caclient(cp, null);
tvheadend.caclient(cp, 6);

/* Debug */
tvheadend.tvhlog(cp);
tvheadend.tvhlog(cp, 7);

/* Finish */
tvheadend.rootTabPanel.add(cp);
tvheadend.confpanel = cp;
cp.doLayout();

/* Force to change uilevel (callback!) */
tvheadend.uilevel = '';
}

if (o.uilevel)
tvheadend.change_uilevel(o.uilevel);

if (o.admin == true && tvheadend.statuspanel == null) {
tvheadend.statuspanel = new tvheadend.status;
tvheadend.rootTabPanel.add(tvheadend.statuspanel);
Expand Down

0 comments on commit b377d57

Please sign in to comment.