Sorting and Reordering - Making One Row Appear After Another

From Q
Jump to: navigation, search

This rule makes one row in a table appear after another. Note that in general the best way to re-order rows is by dragging and dropping.

Example

ReorderRowsRule.png

Technical details

  • This script still applies after the rows have been sorted, overriding any prior sorting.
  • This Rule is not compatible with tables with row spans.

How to apply this rule

For the first time in a project

  • Select the table(s)/chart(s) that you wish to apply the rule to.
  • Start typing the name of the Rule into the Search features and data box in the top right of the Q window.
  • Click on the Rule when it appears in the QScripts and Rules section of the search results.

OR

  • Select Automate > Browse Online Library.
  • Choose this rule from the list.

Additional applications of the rule

  • Select a table or chart that has the rule and any table(s)/chart(s) that you wish to apply the rule to.
  • Click on the Rules tab (bottom-left of the table/chart).
  • Select the rule that you wish to apply.
  • Click on the Apply drop-down and choose your desired option.
  • Check New items to have it automatically applied to new items that you create. Use Edit > Project Options > Save as Template to create a new project template that automatically uses this rule.

Removing the rule

  • Select the table(s)/chart(s) that you wish to remove the rule from.
  • Press the Rules tab (bottom-right corner).
  • Press Apply next to the rule you wish to remove and choose the appropriate option.

How to modify the rule

  • Click on the Rules tab (bottom-left of the table/chart).
  • Select the rule that you wish to modify.
  • Click Edit Rule and make the desired changes. Alternatively, you can use the JavaScript below to make your own rule (see Customizing Rules).

JavaScript

You can find a simpler version of this code, which does not contain the controls, here.

includeWeb("Table JavaScript Utility Functions");
var row_labels = table.rowLabels;
if (row_labels.length < 2)
    form.ruleNotApplicable('table has only one row');
if (table.rowSpans.length > 0)
    form.ruleNotApplicable('table has row spans');
 
// Set up controls for user input.
form.setHeading('Making One Row Appear After Another');
var label_1 = form.newLabel('Make');
var label_2 = form.newLabel('appear after');
var combo_box_row_1 = form.newComboBox('row1', row_labels);
form.setInputControls([label_1, combo_box_row_1, label_2]);
var row_1_label = combo_box_row_1.requireValue();
var index_1 = table.rowIndex(row_1_label);
var row_labels_reduced = row_labels;
row_labels_reduced.splice(index_1, 1);
var combo_box_row_2 = form.newComboBox('row2', row_labels_reduced);
form.setInputControls([label_1, combo_box_row_1, label_2, combo_box_row_2]);
var row_2_label = combo_box_row_2.requireValue();
var index_2 = table.rowIndex(row_2_label);
form.setSummary('Make row "' + row_1_label + '" appear after row "' + row_2_label + '"');
 
// Move the rows
moveRowAfterComplete(index_1, index_2);

See also

Personal tools
Namespaces

Variants
Actions
Navigation
Categories
Toolbox