| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 [# arg0 is either "user" for user saved queries or "project" for canned queries] | 
|  | 2 <style> | 
|  | 3   #queries th, #queries td {  padding-bottom: 1em } | 
|  | 4 </style> | 
|  | 5 | 
|  | 6 <table border="0" id="queries"> | 
|  | 7    <tr> | 
|  | 8     <th></th> | 
|  | 9     <th style="text-align:left">Saved query name:</th> | 
|  | 10     [is arg0 "user"] | 
|  | 11       <th style="text-align:left">Project(s):</th> | 
|  | 12     [end] | 
|  | 13     <th colspan="2" style="text-align:left">Query:</th> | 
|  | 14     [is arg0 "user"] | 
|  | 15       <th style="text-align:left">Subsciption options:</th> | 
|  | 16     [end] | 
|  | 17     <th></th> | 
|  | 18    </tr> | 
|  | 19 | 
|  | 20    [for canned_queries] | 
|  | 21    <tr> | 
|  | 22     <td style="text-align:right" width="20">[canned_queries.idx]. | 
|  | 23       <input type="hidden" name="savedquery_id_[canned_queries.idx]" value="[can
     ned_queries.query_id]"> | 
|  | 24     </td> | 
|  | 25     <td><input type="text" name="savedquery_name_[canned_queries.idx]" size="35"
      value="[canned_queries.name]" class="acob"></td> | 
|  | 26     [is arg0 "user"] | 
|  | 27       <td><input type="text" name="savedquery_projects_[canned_queries.idx]" siz
     e="35" value="[canned_queries.projects]" | 
|  | 28            class="acob" autocomplete="off" id="savedquery_projects_[canned_queri
     es.idx]"></td> | 
|  | 29     [end] | 
|  | 30 | 
|  | 31     <td> | 
|  | 32        <select name="savedquery_base_[canned_queries.idx]"> | 
|  | 33          [define can][canned_queries.base_query_id][end] | 
|  | 34          [include "../tracker/issue-can-widget.ezt" "admin"] | 
|  | 35        </select> | 
|  | 36     </td> | 
|  | 37     <td> | 
|  | 38       <input type="text" name="savedquery_query_[canned_queries.idx]" size="50" 
     value="[canned_queries.query]" autocomplete="off" id="query_existing_[canned_que
     ries.idx]" class="acob"> | 
|  | 39     </td> | 
|  | 40     [is arg0 "user"] | 
|  | 41       <td> | 
|  | 42         <select id="savedquery_sub_mode_[canned_queries.idx]" name="savedquery_s
     ub_mode_[canned_queries.idx]"> | 
|  | 43           <option [is canned_queries.subscription_mode "noemail"]selected="selec
     t"[end] value="noemail" | 
|  | 44                   >No emails</option> | 
|  | 45           <option [is canned_queries.subscription_mode "immediate"]selected="sel
     ect"[end] value="immediate">Notify Immediately</option> | 
|  | 46           [# TODO(jrobbins): <option disabled="disabled">Notify Daily</option>] | 
|  | 47           [# TODO(jrobbins): <option disabled="disabled">Notify Weekly on Monday
     </option>] | 
|  | 48         </select> | 
|  | 49       </td> | 
|  | 50     [end] | 
|  | 51     <td></td> | 
|  | 52    </tr> | 
|  | 53    [end] | 
|  | 54 | 
|  | 55    [define can]2[end] | 
|  | 56    [for new_query_indexes] | 
|  | 57    <tr id="newquery[new_query_indexes]" [if-index new_query_indexes first][else]
     style="display:none"[end]> | 
|  | 58     <td style="text-align:right" width="20">[new_query_indexes].</td> | 
|  | 59     <td><input type="text" name="new_savedquery_name_[new_query_indexes]" | 
|  | 60                class="showNextQueryRow acob" data-index="[new_query_indexes]" | 
|  | 61                size="35" value="" placeholder="Required"></td> | 
|  | 62     [is arg0 "user"] | 
|  | 63       <td><input type="text" name="new_savedquery_projects_[new_query_indexes]" 
     size="35" value="" class="acob" | 
|  | 64            autocomplete="off" id="new_savedquery_projects_[new_query_indexes]" p
     laceholder="Optional"></td> | 
|  | 65     [end] | 
|  | 66     <td> | 
|  | 67        <select name="new_savedquery_base_[new_query_indexes]"> | 
|  | 68          [include "../tracker/issue-can-widget.ezt" "admin"] | 
|  | 69        </select> | 
|  | 70     </td> | 
|  | 71     <td> | 
|  | 72       <input type="text" name="new_savedquery_query_[new_query_indexes]" size="5
     0" value="" autocomplete="off" id="query_new_[new_query_indexes]" class="acob" p
     laceholder="Optional. Example- "label:Security owner:me""> | 
|  | 73     </td> | 
|  | 74     [is arg0 "user"] | 
|  | 75       <td> | 
|  | 76         <select id="new_savedquery_sub_mode_[new_query_indexes]" name="new_saved
     query_sub_mode_[new_query_indexes]"> | 
|  | 77           <option selected="selected" value="noemail">No emails</option> | 
|  | 78           <option value="immediate">Notify Immediately</option> | 
|  | 79           [# TODO(jrobbins): <option disabled="disabled">Notify Daily</option>] | 
|  | 80           [# TODO(jrobbins): <option disabled="disabled">Notify Weekly</option>] | 
|  | 81         </select> | 
|  | 82       </td> | 
|  | 83     [end] | 
|  | 84     <td width="40px"> | 
|  | 85      [if-index new_query_indexes last][else] | 
|  | 86       <span id="addquery[new_query_indexes]" class="fakelink" data-index="[new_q
     uery_indexes]">Add a row</span | 
|  | 87      [end] | 
|  | 88     </td> | 
|  | 89    </tr> | 
|  | 90    [end] | 
|  | 91 | 
|  | 92 </table> | 
|  | 93 | 
|  | 94 [include "../framework/footer-script.ezt"] | 
|  | 95 <script type="text/javascript" nonce="[nonce]"> | 
|  | 96 runOnLoad(function() { | 
|  | 97   function showNextQueryRow(i) { | 
|  | 98    if (i < [max_queries]) { | 
|  | 99      _showID('newquery' + (i + 1)); | 
|  | 100      _hideID('addquery' + i); | 
|  | 101    } | 
|  | 102   } | 
|  | 103   _fetchUserProjects(true); | 
|  | 104   _onload(); | 
|  | 105 | 
|  | 106   var addARowLinks = document.getElementsByClassName("fakelink"); | 
|  | 107   for (var i = 0; i < addARowLinks.length; ++i) { | 
|  | 108     var link = addARowLinks[[]i]; | 
|  | 109     link.addEventListener("click", function(event) { | 
|  | 110         var index = Number(event.target.getAttribute("data-index")); | 
|  | 111         showNextQueryRow(index); | 
|  | 112     }); | 
|  | 113   } | 
|  | 114 | 
|  | 115   var typeToAddARow = document.getElementsByClassName("showNextQueryRow"); | 
|  | 116   for (var i = 0; i < typeToAddARow.length; ++i) { | 
|  | 117     var el = typeToAddARow[[]i]; | 
|  | 118     el.addEventListener("keydown", function(event) { | 
|  | 119         var index = Number(event.target.getAttribute("data-index")); | 
|  | 120         showNextQueryRow(index); | 
|  | 121     }); | 
|  | 122   } | 
|  | 123 | 
|  | 124   var acobElements = document.getElementsByClassName("acob"); | 
|  | 125   for (var i = 0; i < acobElements.length; ++i) { | 
|  | 126      var el = acobElements[[]i]; | 
|  | 127      el.addEventListener("focus", function(event) { | 
|  | 128          _acrob(null); | 
|  | 129          _acof(event); | 
|  | 130      }); | 
|  | 131   } | 
|  | 132 }); | 
|  | 133 </script> | 
| OLD | NEW | 
|---|