| <style> |
| #rules th, #rules td { padding-bottom: 1em } |
| </style> |
| |
| [# If any value is supplied for arg0, the user will be able to set actions |
| that set default owner, set default status, and add CC users.] |
| <h4 id="filters">Filter rules</h4> |
| <div class="section"> |
| |
| <div class="closed"> |
| <div>Filter rules can help you fill in defaults and stay organized. |
| <a class="ifClosed toggleHidden" href="#" |
| style="font-size:90%; margin-left:.5em">Learn more</a> |
| </div> |
| |
| <div id="filterhelp" class="ifOpened help"> |
| Filter rules can help your team triage issues by automatically |
| filling in default values based on other values. They can be used |
| in the same way that you might use message filters in an email client. |
| Filter rules are evaluated after each edit, not just on new items. And, |
| filter rules only add values or set default values, they never override |
| values that were explicitly set by a user.<br> |
| <br> |
| Note that exclusive prefixes still apply. So, if a user has set a label |
| with one of the exclusive prefixes, a rule that adds another label with |
| the same prefix will have no effect. |
| </div> |
| <br> |
| |
| <table border="0" id="rules"> |
| <tr> |
| <th></th> |
| <th style="text-align:left">If the issue matches this query:</th> |
| <th colspan="2" style="text-align:left">Then, [if-any arg0]do the following[else]add these labels[end]:</th> |
| <th></th> |
| </tr> |
| |
| [for rules] |
| <tr> |
| <td style="text-align:right" width="20">[rules.idx].</td> |
| <td><input type="text" name="predicate[rules.idx]" size="60" value="[rules.predicate]" |
| autocomplete="off" id="predicate_existing_[rules.idx]" class="acob"></td> |
| <td> |
| [if-any arg0] |
| <select name="action_type[rules.idx]"> |
| <option value="" disabled="disabled" [is rules.action_type ""]selected="selected"[end]>Choose...</option> |
| <option value="default_status" [is rules.action_type "default_status"]selected="selected"[end]>Set default status:</option> |
| <option value="default_owner" [is rules.action_type "default_owner"]selected="selected"[end]>Set default owner:</option> |
| <option value="add_ccs" [is rules.action_type "add_ccs"]selected="selected"[end]>Add Cc:</option> |
| <option value="add_labels" [is rules.action_type "add_labels"]selected="selected"[end]>Add labels:</option> |
| <option value="also_notify" [is rules.action_type "also_notify"]selected="selected"[end]>Also notify email:</option> |
| <option value="warning" [is rules.action_type "warning"]selected="selected"[end]>Show warning:</option> |
| </select> |
| [end] |
| </td> |
| <td> |
| <input type="text" name="action_value[rules.idx]" size="70" value="[rules.action_value]" class="acob"> |
| </td> |
| <td></td> |
| </tr> |
| [end] |
| |
| [for new_rule_indexes] |
| <tr id="newrow[new_rule_indexes]" [if-index new_rule_indexes first][else]style="display:none"[end]> |
| <td style="text-align:right" width="20">[new_rule_indexes].</td> |
| <td><input type="text" name="new_predicate[new_rule_indexes]" size="60" value="" |
| class="showNextRuleRow acob" data-index="[new_rule_indexes]" |
| autocomplete="off" id="predicate_new_[new_rule_indexes]"></td> |
| <td> |
| [if-any arg0] |
| <select name="new_action_type[new_rule_indexes]"> |
| <option value="" disabled="disabled" selected="selected">Choose...</option> |
| <option value="default_status">Set default status:</option> |
| <option value="default_owner">Set default owner:</option> |
| <option value="add_ccs">Add Cc:</option> |
| <option value="add_labels">Add labels:</option> |
| <option value="also_notify">Also notify email:</option> |
| <option value="warning">Show warning:</option> |
| </select> |
| [end] |
| </td> |
| <td> |
| <input type="text" name="new_action_value[new_rule_indexes]" size="70" value="" class="acob"> |
| [# TODO(jrobbins): figure out a way to display error messages on each rule. ] |
| </td> |
| <td width="40px"> |
| [if-index new_rule_indexes last][else] |
| <span id="addrow[new_rule_indexes]" class="fakelink" class="fakelink" data-index="[new_rule_indexes]">Add a row</span |
| [end] |
| </td> |
| </tr> |
| [end] |
| |
| </table> |
| </div> |
| |
| [if-any errors.rules] |
| [for errors.rules] |
| <div class="fielderror">[errors.rules]</div> |
| [end] |
| <script type="text/javascript" nonce="[nonce]"> |
| runOnLoad(function() { |
| document.location.hash = 'filters'; |
| }); |
| </script> |
| [end] |
| |
| </div> |
| |
| <script type="text/javascript" nonce="[nonce]"> |
| runOnLoad(function() { |
| function showNextRuleRow(i) { |
| if (i < [max_rules]) { |
| _showID('newrow' + (i + 1)); |
| _hideID('addrow' + i); |
| } |
| } |
| |
| var addARowLinks = document.getElementsByClassName("fakelink"); |
| for (var i = 0; i < addARowLinks.length; ++i) { |
| var link = addARowLinks[[]i]; |
| link.addEventListener("click", function(event) { |
| var index = Number(event.target.getAttribute("data-index")); |
| showNextRuleRow(index); |
| }); |
| } |
| |
| var typeToAddARow = document.getElementsByClassName("showNextRuleRow"); |
| for (var i = 0; i < typeToAddARow.length; ++i) { |
| var el = typeToAddARow[[]i]; |
| el.addEventListener("keydown", function(event) { |
| var index = Number(event.target.getAttribute("data-index")); |
| showNextRuleRow(index); |
| }); |
| } |
| |
| var acobElements = document.getElementsByClassName("acob"); |
| for (var i = 0; i < acobElements.length; ++i) { |
| var el = acobElements[[]i]; |
| el.addEventListener("focus", function(event) { |
| _acrob(null); |
| _acof(event); |
| }); |
| } |
| |
| var acobElements = document.getElementsByClassName("acob"); |
| for (var i = 0; i < acobElements.length; ++i) { |
| var el = acobElements[[]i]; |
| el.addEventListener("focus", function(event) { |
| _acrob(null); |
| _acof(event); |
| }); |
| } |
| }); |
| </script> |