]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
WEBUI: move CA and stream filters tabs to the 'expert' level
authorJaroslav Kysela <perex@perex.cz>
Wed, 2 Dec 2015 13:47:43 +0000 (14:47 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 2 Dec 2015 13:47:43 +0000 (14:47 +0100)
src/webui/static/app/caclient.js
src/webui/static/app/config.js
src/webui/static/app/esfilter.js
src/webui/static/app/idnode.js
src/webui/static/app/tvheadend.js

index af5e2cb82da277f703c8e62c6744a4cfefb21f5d..b1886dd371fab96638f6f4e2997ae6f14785e998 100644 (file)
@@ -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: {
index 0f5223a91fe170ade3f69962a48d846a16ef7351..38a89a47f20f76b825ccb6a67a89a15bd4b12432 100644 (file)
@@ -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);
             }
         },
index 4fe1ef198d43633f6b8d4d0f276a46d10de96535..46b6f13805f11f86c0c610ec62399bd0968f2836 100644 (file)
@@ -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 },
index 741293f403a5dae87c9c87e49879c135e9113890..a3afb00879724ce76ffadbfb9a5bdf044dd0465b 100644 (file)
@@ -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);
 };
index 707ac27fc21bb9a4a4dbcf5f19ebd1df5fd5579a..47ea31fe4484e7654ce7c190f665a8e3858558c9 100644 (file)
@@ -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);