Changeset View
Changeset View
Standalone View
Standalone View
swh/web/assets/src/bundles/browse/origin-search.js
/** | /** | ||||
* Copyright (C) 2018-2020 The Software Heritage developers | * Copyright (C) 2018-2020 The Software Heritage developers | ||||
* See the AUTHORS file at the top-level directory of this distribution | * See the AUTHORS file at the top-level directory of this distribution | ||||
* License: GNU Affero General Public License version 3, or any later version | * License: GNU Affero General Public License version 3, or any later version | ||||
* See top-level LICENSE file for more information | * See top-level LICENSE file for more information | ||||
*/ | */ | ||||
import {handleFetchError} from 'utils/functions'; | import {handleFetchError} from 'utils/functions'; | ||||
anlambert: Remove the added white spaces.
I will update our eslint config and add a precommit hook to… | |||||
const limit = 100; | const limit = 100; | ||||
let linksPrev = []; | let linksPrev = []; | ||||
let linkNext = null; | let linkNext = null; | ||||
let linkCurrent = null; | let linkCurrent = null; | ||||
let inSearch = false; | let inSearch = false; | ||||
function parseLinkHeader(s) { | function parseLinkHeader(s) { | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | setTimeout(() => { | ||||
window.scrollTo(0, 0); | window.scrollTo(0, 0); | ||||
}); | }); | ||||
} | } | ||||
function searchOriginsFirst(searchQueryText, limit) { | function searchOriginsFirst(searchQueryText, limit) { | ||||
let baseSearchUrl; | let baseSearchUrl; | ||||
let searchMetadata = $('#swh-search-origin-metadata').prop('checked'); | let searchMetadata = $('#swh-search-origin-metadata').prop('checked'); | ||||
if (searchMetadata) { | if (searchMetadata) { | ||||
baseSearchUrl = Urls.api_1_origin_metadata_search() + '?fulltext=' + encodeURIComponent(searchQueryText); | baseSearchUrl = new URL(Urls.api_1_origin_metadata_search(), window.location); | ||||
baseSearchUrl.searchParams.append('fulltext', searchQueryText); | |||||
} else { | } else { | ||||
baseSearchUrl = Urls.api_1_origin_search(searchQueryText) + '?'; | baseSearchUrl = new URL(Urls.api_1_origin_search(searchQueryText), window.location); | ||||
} | } | ||||
let withVisit = $('#swh-search-origins-with-visit').prop('checked'); | let withVisit = $('#swh-search-origins-with-visit').prop('checked'); | ||||
let searchUrl = baseSearchUrl + `&limit=${limit}&with_visit=${withVisit}`; | baseSearchUrl.searchParams.append('limit', limit); | ||||
baseSearchUrl.searchParams.append('with_visit', withVisit); | |||||
Done Inline ActionsUse baseSearchUrl.toString() instead anlambert: Use `baseSearchUrl.toString()` instead | |||||
let searchUrl = baseSearchUrl.toString(); | |||||
searchOrigins(searchUrl); | searchOrigins(searchUrl); | ||||
} | } | ||||
function searchOrigins(searchUrl) { | function searchOrigins(searchUrl) { | ||||
clearOriginSearchResultsTable(); | clearOriginSearchResultsTable(); | ||||
$('.swh-loading').addClass('show'); | $('.swh-loading').addClass('show'); | ||||
let response = fetch(searchUrl) | let response = fetch(searchUrl) | ||||
.then(handleFetchError) | .then(handleFetchError) | ||||
▲ Show 20 Lines • Show All 64 Lines • ▼ Show 20 Lines | |||||
export function initOriginSearch() { | export function initOriginSearch() { | ||||
$(document).ready(() => { | $(document).ready(() => { | ||||
$('#swh-search-origins').submit(event => { | $('#swh-search-origins').submit(event => { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
let searchQueryText = $('#origins-url-patterns').val().trim(); | let searchQueryText = $('#origins-url-patterns').val().trim(); | ||||
let withVisit = $('#swh-search-origins-with-visit').prop('checked'); | let withVisit = $('#swh-search-origins-with-visit').prop('checked'); | ||||
let withContent = $('#swh-filter-empty-visits').prop('checked'); | let withContent = $('#swh-filter-empty-visits').prop('checked'); | ||||
let searchMetadata = $('#swh-search-origin-metadata').prop('checked'); | let searchMetadata = $('#swh-search-origin-metadata').prop('checked'); | ||||
let queryParameters = '?q=' + encodeURIComponent(searchQueryText); | let queryParameters = new URLSearchParams(); | ||||
queryParameters.append('q', searchQueryText); | |||||
if (withVisit) { | if (withVisit) { | ||||
queryParameters += '&with_visit'; | queryParameters.append('with_visit', withVisit); | ||||
} | } | ||||
if (withContent) { | if (withContent) { | ||||
queryParameters += '&with_content'; | queryParameters.append('with_content', withContent); | ||||
} | } | ||||
if (searchMetadata) { | if (searchMetadata) { | ||||
queryParameters += '&search_metadata'; | queryParameters.append('search_metadata', searchMetadata); | ||||
} | } | ||||
// Update the url, triggering page reload and effective search | // Update the url, triggering page reload and effective search | ||||
window.location.search = queryParameters; | window.location.search = `?${queryParameters.toString()}`; | ||||
Not Done Inline ActionsUse queryParameters.toString() instead anlambert: Use `queryParameters.toString()` instead | |||||
Not Done Inline ActionsWe can not use queryParameters.toString() because it returns a string omitting initial '?'. To get the '?' we need to update window.location.search ``` with queryParameters Iamshankhadeep: We can not use
```
queryParameters.toString()
```
because it returns a string omitting initial… | |||||
Not Done Inline ActionsIt seems to work without prepending the ? in modern browsers. Anyway, use the following instead: window.location.search = `?${queryParameters.toString()}`; I truly doubt that older browsers support setting an URLSearchParams directly and the documentation is pretty clear that a string should be used. anlambert: It seems to work without prepending the `?` in modern browsers.
Anyway, use the following… | |||||
Done Inline ActionsOhh I get it now. Iamshankhadeep: Ohh I get it now. | |||||
}); | }); | ||||
$('#origins-next-results-button').click(event => { | $('#origins-next-results-button').click(event => { | ||||
if ($('#origins-next-results-button').hasClass('disabled') || inSearch) { | if ($('#origins-next-results-button').hasClass('disabled') || inSearch) { | ||||
return; | return; | ||||
} | } | ||||
inSearch = true; | inSearch = true; | ||||
linksPrev.push(linkCurrent); | linksPrev.push(linkCurrent); | ||||
Show All 27 Lines |
Remove the added white spaces.
I will update our eslint config and add a precommit hook to ensure code style consistency.