]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
WEBUI: Fix 'map all' functionality for channels/services grids, fixes #3424
authorJaroslav Kysela <perex@perex.cz>
Wed, 6 Jan 2016 16:30:31 +0000 (17:30 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 6 Jan 2016 16:30:31 +0000 (17:30 +0100)
src/webui/static/app/chconf.js
src/webui/static/app/idnode.js
src/webui/static/app/mpegts.js
src/webui/static/app/servicemapper.js

index d42c067116b290edca8547889fffef080f003eab..dbca62564278ef9a41743a600f72aa2059d7eea1 100644 (file)
@@ -125,14 +125,31 @@ tvheadend.channel_tab = function(panel, index)
     var mapButton = {
         name: 'map',
         builder: function() {
+            var m = new Ext.menu.Menu()
+            m.add({
+                name: 'mapsel',
+                tooltip: _('Map selected services to channels'),
+                iconCls: 'clone',
+                text: _('Map selected services'),
+            });
+            m.add({
+                name: 'mapall',
+                tooltip: _('Map all services to channels'),
+                iconCls: 'clone',
+                text: _('Map all services'),
+            });
             return new Ext.Toolbar.Button({
                 tooltip: _('Map services to channels'),
                 iconCls: 'clone',
-                text: _('Map Services'),
+                text: _('Map services'),
+                menu: m,
                 disabled: false
             });
         },
-        callback: tvheadend.service_mapper
+        callback: {
+            mapall: tvheadend.service_mapper_all,
+            mapsel: tvheadend.service_mapper_none,
+        }
     };
 
     var chopsButton = {
index a69acf3da224afd11b955cfc0b822413ff709748..ab59826cab3d04db9c9f5d217aea0d235d0f856f 100644 (file)
@@ -1192,6 +1192,8 @@ tvheadend.idnode_editor_win = function(_uilevel, conf)
             plain: true,
             items: p
         });
+        if (conf.beforeShow)
+            conf.beforeShow(p, conf);
         conf.win = w;
         if (width)
             w.setWidth(width);
index c83f11fafd184c2b372761c2108892408961b0e2..7aab2805926d7a0c63b74d6333238a508e4980a4 100644 (file)
@@ -239,14 +239,31 @@ tvheadend.services = function(panel, index)
         var mapButton = {
             name: 'map',
             builder: function() {
+                var m = new Ext.menu.Menu()
+                m.add({
+                    name: 'mapsel',
+                    tooltip: _('Map selected services to channels'),
+                    iconCls: 'clone',
+                    text: _('Map selected services'),
+                });
+                m.add({
+                    name: 'mapall',
+                    tooltip: _('Map all services to channels'),
+                    iconCls: 'clone',
+                    text: _('Map all services'),
+                });
                 return new Ext.Toolbar.Button({
                     tooltip: _('Map services to channels'),
                     iconCls: 'clone',
-                    text: _('Map All'),
+                    text: _('Map services'),
+                    menu: m,
                     disabled: false
                 });
             },
-            callback: tvheadend.service_mapper
+            callback: {
+                mapall: tvheadend.service_mapper_all,
+                mapsel: tvheadend.service_mapper_sel,
+            }
         };
         
         var selected = function(s, abuttons)
index 6185e403035f0b3656b8ce67ca0bc73da6f584d6..4580272a199d3594ce7097ffef6a242cdd209ee2 100644 (file)
@@ -77,7 +77,7 @@ tvheadend.service_mapper_status = function(panel, index)
 /*
  * Start mapping
  */
-tvheadend.service_mapper = function(t, e, store, select)
+tvheadend.service_mapper_sel = function(t, e, store, select)
 {
     var panel = null;
     var win = null;
@@ -98,12 +98,13 @@ tvheadend.service_mapper = function(t, e, store, select)
     }
 
     tvheadend.idnode_editor_win(tvheadend.uilevel, {
+        winTitle: _('Map services to channels'),
         loadURL: 'api/service/mapper/load',
         saveURL: 'api/service/mapper/save',
         saveText: _('Map services'),
         alwaysDirty: true,
         noApply: true,
-        modifyData: modify_data,
+        modifyData: select ? modify_data : null,
         postsave: function() {
             tvheadend.select_tab('service_mapper');
         },
@@ -112,3 +113,38 @@ tvheadend.service_mapper = function(t, e, store, select)
         }
     });
 }
+
+tvheadend.service_mapper0 = function(all)
+{
+    tvheadend.idnode_editor_win(tvheadend.uilevel, {
+        winTitle: _('Map services to channels'),
+        loadURL: 'api/service/mapper/load',
+        saveURL: 'api/service/mapper/save',
+        saveText: _('Map services'),
+        alwaysDirty: true,
+        noApply: true,
+        beforeShow: all ? function(panel, conf) {
+            var form = panel.getForm();
+            var services = form.findField('services');
+            services.on('afterrender', function() {
+                services.selectAll();
+            });
+        } : null,
+        postsave: function() {
+            tvheadend.select_tab('service_mapper');
+        },
+        help: function() {
+            new tvheadend.help(_('Map services'), 'config_mapper.html');
+        }
+    });
+}
+
+tvheadend.service_mapper_all = function()
+{
+    tvheadend.service_mapper0(1);
+}
+
+tvheadend.service_mapper_none = function()
+{
+    tvheadend.service_mapper0(0);
+}