From: Jaroslav Kysela Date: Wed, 2 Dec 2015 13:47:43 +0000 (+0100) Subject: WEBUI: move CA and stream filters tabs to the 'expert' level X-Git-Tag: v4.2.1~1409 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b377d57523fadd3ff8bef9da147274e93815371c;p=thirdparty%2Ftvheadend.git WEBUI: move CA and stream filters tabs to the 'expert' level --- diff --git a/src/webui/static/app/caclient.js b/src/webui/static/app/caclient.js index af5e2cb82..b1886dd37 100644 --- a/src/webui/static/app/caclient.js +++ b/src/webui/static/app/caclient.js @@ -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: { diff --git a/src/webui/static/app/config.js b/src/webui/static/app/config.js index 0f5223a91..38a89a47f 100644 --- a/src/webui/static/app/config.js +++ b/src/webui/static/app/config.js @@ -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); } }, diff --git a/src/webui/static/app/esfilter.js b/src/webui/static/app/esfilter.js index 4fe1ef198..46b6f1380 100644 --- a/src/webui/static/app/esfilter.js +++ b/src/webui/static/app/esfilter.js @@ -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 }, @@ -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 }, @@ -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 }, @@ -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 }, @@ -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', @@ -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 }, diff --git a/src/webui/static/app/idnode.js b/src/webui/static/app/idnode.js index 741293f40..a3afb0087 100644 --- a/src/webui/static/app/idnode.js +++ b/src/webui/static/app/idnode.js @@ -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; } @@ -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++; @@ -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 @@ -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); }; /* @@ -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); }; /* @@ -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); }; /* @@ -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); }; diff --git a/src/webui/static/app/tvheadend.js b/src/webui/static/app/tvheadend.js index 707ac27fc..47ea31fe4 100644 --- a/src/webui/static/app/tvheadend.js +++ b/src/webui/static/app/tvheadend.js @@ -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 @@ -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); + } } /** @@ -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); @@ -442,6 +462,7 @@ function accessUpdate(o) { /* General */ var general = new Ext.TabPanel({ + tabIndex: 0, activeTab: 0, autoScroll: true, title: _('General'), @@ -457,6 +478,7 @@ function accessUpdate(o) { /* Users */ var users = new Ext.TabPanel({ + tabIndex: 1, activeTab: 0, autoScroll: true, title: _('Users'), @@ -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'), @@ -490,6 +513,7 @@ function accessUpdate(o) { /* Channel / EPG */ var chepg = new Ext.TabPanel({ + tabIndex: 3, activeTab: 0, autoScroll: true, title: _('Channel / EPG'), @@ -507,6 +531,7 @@ function accessUpdate(o) { /* Stream Config */ var stream = new Ext.TabPanel({ + tabIndex: 4, activeTab: 0, autoScroll: true, title: _('Stream'), @@ -519,6 +544,7 @@ function accessUpdate(o) { /* DVR / Timeshift */ var tsdvr = new Ext.TabPanel({ + tabIndex: 5, activeTab: 0, autoScroll: true, title: _('Recording'), @@ -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);