Skip to content

Commit

Permalink
HTML Setup: Introduce the idea of simultaneous multichannel editing.
Browse files Browse the repository at this point in the history
(the following actions are not hooked up to actual saves yet)

This (currently very simple) wizard applies an action to an array of channels, using templated user input.

So, you would select a group of channels in the editor, and hit the edit button or right click->edit.  You would select which field you want to rename, construct your templated text using the provided box of options, like so:

http://www.fecitfacta.com/multiedit.png

And that rename action would be applied to all selected channels.  This wizard could be expanded such that the verb is a select box as well, ie rename, hide, show, etc.

Mostly just an exercise to see how the concept feels, but I think it's worth carrying through to completion.
  • Loading branch information
Robert McNamara committed Apr 14, 2011
1 parent 859ad36 commit 4cba1a3
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 8 deletions.
5 changes: 5 additions & 0 deletions mythtv/html/js/util.qjs
Expand Up @@ -225,3 +225,8 @@ function showConfirm(content, functionname, params) {
$("#confirmWindow").draggable();
}

function appendMatch(match, divname) {
var newValue = $("#" + divname).val() + match;
$("#" + divname).val(newValue);
}

44 changes: 44 additions & 0 deletions mythtv/html/setup/channeleditor-channeldetail-multi.html
@@ -0,0 +1,44 @@
<div id='multichannelsettings'>
<h3><a href="#">Basic Settings</a></h3>
<div id='multichanneldetail-basicsettings'>
<p>
<div style="float:center" id='multieditheader'><center>I want to modify the
<select id='multiChannelOptions'>
<option value='ChanNum'>Channel Number</option>
<option value='ChanName'>Channel Name</option>
<option value='CallSign'>CallSign</option>
</select>
for these channels.
</div>
<table width="100%" cellpadding="0" cellspacing="10" border="0">
<tr>
<td style="text-align:right;">Use the following format: </td><td style='text-align:left;'><input size="50" id='multiChannelRenameTemplate' /></td>
</tr>
</table>
<hr>
<div style='float:right'>
<select id='appendMatchSelect'>
<option value='ChanId'>Channel ID</option>
<option value='ChanNum'>Channel Number</option>
<option value='ChanName'>Channel Name</option>
<option value='CallSign'>Callsign</option>
<option value='MplexId'>Multiplex ID</option>
<option value='ServiceId'>Service ID</option>
<option value='ATSCMajorChan'>ATSC Major Channel</option>
<option value='ATSCMinorChan'>ATSC Minor Channel</option>
<option value='SourceId'>Guide Source ID</option>
<option value='XMLTVID'>XMLTV or Schedules Direct ID</option>
</select>
<input type=button onClick='javascript:appendMatch("%" + $("#appendMatchSelect").val() + "%", "multiChannelRenameTemplate")' value='Append Variable'>
</div>
</p>
</div>

<h3><a href="#">Expert Information</a></h3>
<div id='multichanneldetail-expertsettings'>
<p>
<div id='channeldetailtable'></div>
</p>
</div>

</div>
2 changes: 1 addition & 1 deletion mythtv/html/setup/channeleditor.html
Expand Up @@ -8,7 +8,7 @@
<div id='sourceSelect'></div>
</div>
<div id='navigation' style="float: right; text-align:right;">
<input type='button' onClick='javascript:editSelectedChannel()' value='Edit Channel' />
<input type='button' onClick='javascript:editChannel()' value='Edit Channel' />
<input type='button' onClick='javascript:promptToDeleteChannel()' value='Delete Channel' />
</div>

Expand Down
2 changes: 1 addition & 1 deletion mythtv/html/setup/jobqueue-job-editor.html
Expand Up @@ -44,7 +44,7 @@
<option value='PROGENDUTC'>Program End Time in UTC</option>
<option value='PROGENDISOUTC'>Program End Time in UTC in ISO format</option>
</select>
<input type=button onClick='javascript:appendMatch("%" + $("#appendMatchSelect").val() + "%")' value='Append Match'>
<input type=button onClick='javascript:appendMatch("%" + $("#appendMatchSelect").val() + "%","jobEditCommand")' value='Append Match'>
</div>

</div>
Expand Down
53 changes: 52 additions & 1 deletion mythtv/html/setup/js/channeleditor.js
Expand Up @@ -80,7 +80,7 @@ function initChannelEditor() {
$("#channels").contextMenu('channelmenu', {
bindings: {
'editopt': function(t) {
editSelectedChannel();
editChannel();
},
'del': function(t) {
promptToDeleteChannel();
Expand Down Expand Up @@ -112,6 +112,19 @@ function initSourceList() {
+ getGuideSourceList() + "</select>");
}

function editChannel() {
var rowNum = $('#channels').getGridParam('selrow');
var rowArr = $('#channels').getGridParam('selarrrow');
if (rowNum != null) {
if (rowArr.length == 1) {
editSelectedChannel();
}
else {
editMultiChannel();
}
}
}

function editSelectedChannel() {
loadEditWindow("/setup/channeleditor-channeldetail.html");
var row = $('#channels').getGridParam('selrow');
Expand Down Expand Up @@ -226,6 +239,44 @@ function saveChannelEdits() {
}
}

function editMultiChannel() {
loadEditWindow("/setup/channeleditor-channeldetail-multi.html");
var rows = $('#channels').getGridParam('selarrrow');

var rowinfo = getMultiRowDescription();

$("#channeldetailtable").html(rowinfo);

$("#edit").dialog({
modal: true,
width: 800,
height: 620,
'title': 'Edit Multiple Channels',
closeOnEscape: false,
buttons: {
'Save': function() { saveMultiChannelEdits(); },
'Cancel': function() { $(this).dialog('close'); }
}});

$("#multichannelsettings").accordion();
}

function getMultiRowDescription() {
var result = '';
var rowArr = $('#channels').getGridParam('selarrrow');

$.each(rowArr, function(i, value) {
var rowdata = $("#channels").jqGrid('getRowData', value);
result = result + "Affected ChanId:" + rowdata.ChanId + "(" + rowdata.ChannelName + ")" + "<br>";
});

return result;
}

function saveMultiChannelEdits() {
$("#edit").dialog('close');
}

function promptToDeleteChannel() {
var message = "Are you sure you want to delete these channels? This cannot be undone.";
var rowNum = $('#channels').getGridParam('selrow');
Expand Down
5 changes: 0 additions & 5 deletions mythtv/html/setup/js/jobqueue.js
Expand Up @@ -26,11 +26,6 @@ function editJob(title, descKey, commandKey) {
$("#jobEditCommand").val(getSetting("", commandKey, ""));
}

function appendMatch(match) {
var newValue = $("#jobEditCommand").val() + match;
$("#jobEditCommand").val(newValue);
}

function saveJobEditor() {
var descKey;
var commandKey;
Expand Down

0 comments on commit 4cba1a3

Please sign in to comment.