Adds 2 buttons to easily reorder selected columns (#4272).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3106 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2009-11-28 11:59:45 +00:00
parent 66540afc08
commit 4c2264ee42
2 changed files with 33 additions and 2 deletions

View File

@ -5,15 +5,19 @@
:multiple => true, :size => 10, :style => "width:150px" %> :multiple => true, :size => 10, :style => "width:150px" %>
</td> </td>
<td align="center" valign="middle"> <td align="center" valign="middle">
<input type="button" value="--&gt;" <input type="button" value="&#8594;"
onclick="moveOptions(this.form.available_columns, this.form.selected_columns);" /><br /> onclick="moveOptions(this.form.available_columns, this.form.selected_columns);" /><br />
<input type="button" value="&lt;--" <input type="button" value="&#8592;"
onclick="moveOptions(this.form.selected_columns, this.form.available_columns);" /> onclick="moveOptions(this.form.selected_columns, this.form.available_columns);" />
</td> </td>
<td><%= select_tag 'query[column_names][]', <td><%= select_tag 'query[column_names][]',
options_for_select(query.columns.collect {|column| [column.caption, column.name]}), options_for_select(query.columns.collect {|column| [column.caption, column.name]}),
:id => 'selected_columns', :multiple => true, :size => 10, :style => "width:150px" %> :id => 'selected_columns', :multiple => true, :size => 10, :style => "width:150px" %>
</td> </td>
<td align="center" valign="middle">
<input type="button" value="&#8593;" onclick="moveOptionUp(this.form.selected_columns);" /><br />
<input type="button" value="&#8595;" onclick="moveOptionDown(this.form.selected_columns);" />
</td>
</tr> </tr>
</table> </table>

View File

@ -7,6 +7,17 @@ function addOption(theSel, theText, theValue)
theSel.options[selLength] = newOpt; theSel.options[selLength] = newOpt;
} }
function swapOptions(theSel, index1, index2)
{
var text, value;
text = theSel.options[index1].text;
value = theSel.options[index1].value;
theSel.options[index1].text = theSel.options[index2].text;
theSel.options[index1].value = theSel.options[index2].value;
theSel.options[index2].text = text;
theSel.options[index2].value = value;
}
function deleteOption(theSel, theIndex) function deleteOption(theSel, theIndex)
{ {
var selLength = theSel.length; var selLength = theSel.length;
@ -45,6 +56,22 @@ function moveOptions(theSelFrom, theSelTo)
if(NS4) history.go(0); if(NS4) history.go(0);
} }
function moveOptionUp(theSel) {
var index = theSel.selectedIndex;
if (index > 0) {
swapOptions(theSel, index-1, index);
theSel.selectedIndex = index-1;
}
}
function moveOptionDown(theSel) {
var index = theSel.selectedIndex;
if (index < theSel.length - 1) {
swapOptions(theSel, index, index+1);
theSel.selectedIndex = index+1;
}
}
function selectAllOptions(id) function selectAllOptions(id)
{ {
var select = $(id); var select = $(id);