|
248 | 248 | See also <a href="pipelines" class="underlined-a">pipeline</a> or <a href="logs/recent" class="underlined-a">job</a> reports. |
249 | 249 | Show: <input id="filter-box" type="text" size="21" autofocus> |
250 | 250 | <input onclick="ds.setFilter('');" type="button" value=" All " class="button"> |
251 | | - <input onclick="ds.setFilter('`');" type="button" value="None" class="button"> |
| 251 | + <input onclick="ds.setFilter('^$');" type="button" value="None" class="button"> |
252 | 252 | </div> |
253 | 253 | <div> |
254 | 254 | <input type="button" onclick="ds.toggleAlign()" class="button" value="Align!"> |
|
394 | 394 | return head; |
395 | 395 | }; |
396 | 396 |
|
| 397 | +// Copied from closure-library's goog.string.startsWith |
| 398 | +var startsWith = function(str, prefix) { |
| 399 | + return str.lastIndexOf(prefix, 0) == 0; |
| 400 | +} |
| 401 | + |
| 402 | +// Copied from closure-library's goog.string.endsWith |
| 403 | +var endsWith = function(str, suffix) { |
| 404 | + var l = str.length - suffix.length; |
| 405 | + return l >= 0 && str.indexOf(suffix, l) == l; |
| 406 | +}; |
| 407 | + |
| 408 | +// Copied from closure-library's goog.string.regExpEscape |
| 409 | +var regExpEscape = function(s) { |
| 410 | + return String(s).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1'). |
| 411 | + replace(/\x08/g, '\\x08'); |
| 412 | +}; |
| 413 | + |
397 | 414 | /** |
398 | 415 | * [[1, 2], [3, 4]] -> {1: 2, 3: 4} |
399 | 416 | */ |
|
654 | 671 | // Set the filter on clicks, but not on text selections. |
655 | 672 | return; |
656 | 673 | } |
657 | | - if(ds.getFilter() == jobData["url"]) { |
| 674 | + var filter = ds.getFilter(); |
| 675 | + if(RegExp(filter).test(jobData["url"]) && startsWith(filter, "^") && endsWith(filter, "$")) { |
658 | 676 | // If we're already showing just this log window, go back |
659 | 677 | // to showing nothing. |
660 | | - ds.setFilter("`"); |
| 678 | + ds.setFilter("^$"); |
661 | 679 | } else { |
662 | | - ds.setFilter(jobData["url"]); |
| 680 | + ds.setFilter("^" + regExpEscape(jobData["url"]) + "$"); |
663 | 681 | } |
664 | 682 | }}, [ |
665 | 683 | " on ", |
|
860 | 878 | var matches = 0; |
861 | 879 | for(var i=0; i < this.jobs.sorted.length; i++) { |
862 | 880 | var job = this.jobs.sorted[i]; |
863 | | - if(job["url"].indexOf(query) == -1) { |
| 881 | + if(!RegExp(query).test(job["url"])) { |
864 | 882 | this.renderInfo[job["ident"]].logWindow.style.display = "none"; |
865 | 883 | } else { |
866 | 884 | this.renderInfo[job["ident"]].logWindow.style.display = "block"; |
|
0 commit comments