From: Jaroslav Kysela Date: Wed, 6 Jan 2016 16:30:31 +0000 (+0100) Subject: WEBUI: Fix 'map all' functionality for channels/services grids, fixes #3424 X-Git-Tag: v4.2.1~1204 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f65b842d55ebace8c51a9bcdc3ab970dd8d6570c;p=thirdparty%2Ftvheadend.git WEBUI: Fix 'map all' functionality for channels/services grids, fixes #3424 --- diff --git a/src/webui/static/app/chconf.js b/src/webui/static/app/chconf.js index d42c06711..dbca62564 100644 --- a/src/webui/static/app/chconf.js +++ b/src/webui/static/app/chconf.js @@ -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 = { diff --git a/src/webui/static/app/idnode.js b/src/webui/static/app/idnode.js index a69acf3da..ab59826ca 100644 --- a/src/webui/static/app/idnode.js +++ b/src/webui/static/app/idnode.js @@ -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); diff --git a/src/webui/static/app/mpegts.js b/src/webui/static/app/mpegts.js index c83f11faf..7aab28059 100644 --- a/src/webui/static/app/mpegts.js +++ b/src/webui/static/app/mpegts.js @@ -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) diff --git a/src/webui/static/app/servicemapper.js b/src/webui/static/app/servicemapper.js index 6185e4030..4580272a1 100644 --- a/src/webui/static/app/servicemapper.js +++ b/src/webui/static/app/servicemapper.js @@ -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); +}