src/main/webapp/issue-search.js

Sun, 09 Mar 2025 17:17:59 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 09 Mar 2025 17:17:59 +0100
changeset 359
842bb8976b0f
parent 358
e46bef1bdddd
permissions
-rw-r--r--

remove min-width that is not used by browsers anyway

207
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /*
358
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
2 * Copyright 2025 Mike Becker. All rights reserved.
207
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 *
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * Redistribution and use in source and binary forms, with or without
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 * modification, are permitted provided that the following conditions are met:
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 *
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * 1. Redistributions of source code must retain the above copyright
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 * notice, this list of conditions and the following disclaimer.
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 *
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * 2. Redistributions in binary form must reproduce the above copyright
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 * notice, this list of conditions and the following disclaimer in the
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 * documentation and/or other materials provided with the distribution.
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 *
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 */
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25
358
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
26 function debounce(func){
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
27 let timer;
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
28 return () => {
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
29 clearTimeout(timer);
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
30 timer = setTimeout(() => { func.apply(this); }, 300);
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
31 };
207
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32 }
334
2696337baa3d add cancel button to comment editor - fixes #455
Mike Becker <universe@uap-core.de>
parents: 263
diff changeset
33
358
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
34 const issueSearch = debounce(() => issueSearchImpl())
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
35 let searchBoxOldContent = '';
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
36 function issueSearchImpl() {
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
37 const searchBox = document.getElementById('search-box');
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
38 if (searchBoxOldContent !== searchBox.value) {
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
39 searchBoxOldContent = searchBox.value;
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
40 const req = new XMLHttpRequest();
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
41 req.addEventListener("load", (evt) => {
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
42 const dataList = document.getElementById('search-box-list');
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
43 dataList.innerHTML = '';
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
44 JSON.parse(evt.target.responseText).forEach(function(item){
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
45 const option = document.createElement('option');
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
46 option.value = item;
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
47 dataList.appendChild(option);
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
48 });
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
49 });
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
50 req.open("GET", baseHref+'issues/search?q='+encodeURIComponent(searchBox.value));
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
51 req.send();
351
3720c7375146 implement changing and saving variant status
Mike Becker <universe@uap-core.de>
parents: 334
diff changeset
52 }
3720c7375146 implement changing and saving variant status
Mike Becker <universe@uap-core.de>
parents: 334
diff changeset
53 }
3720c7375146 implement changing and saving variant status
Mike Becker <universe@uap-core.de>
parents: 334
diff changeset
54
358
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
55 // configure the search box
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
56 window.addEventListener('load', () => {
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
57 const searchBox = document.getElementById('search-box');
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
58 searchBox.addEventListener('change', () => issueSearch())
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
59 searchBox.addEventListener('keyup', (evt) => {
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
60 if (evt.code === 'Enter' || evt.code === 'NumpadEnter') {
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
61 let stext = searchBox.value.trim()
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
62 if (stext.length === 0) return;
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
63 if (stext[0] === '#') stext = stext.substring(1);
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
64 const snum = Number.parseInt(stext.split(' ')[0], 10);
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
65 if (snum !== Number.NaN) {
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
66 location.assign(baseHref+'issues/'+snum+'?in_project=true');
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
67 }
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
68 } else {
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
69 issueSearch();
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
70 }
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
71 })
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
72 });
e46bef1bdddd add issue search box
Mike Becker <universe@uap-core.de>
parents: 351
diff changeset
73

mercurial