Changeset View
Changeset View
Standalone View
Standalone View
swh/web/assets/src/bundles/browse/origin-search.js
Show All 33 Lines | if (origins.length > 0) { | ||||
$('#swh-no-result').hide(); | $('#swh-no-result').hide(); | ||||
clearOriginSearchResultsTable(); | clearOriginSearchResultsTable(); | ||||
let table = $('#origin-search-results tbody'); | let table = $('#origin-search-results tbody'); | ||||
for (let [i, origin] of origins.entries()) { | for (let [i, origin] of origins.entries()) { | ||||
let browseUrl = `${Urls.browse_origin()}?origin_url=${encodeURIComponent(origin.url)}`; | let browseUrl = `${Urls.browse_origin()}?origin_url=${encodeURIComponent(origin.url)}`; | ||||
let tableRow = | let tableRow = | ||||
`<tr id="origin-${i}" class="swh-search-result-entry swh-tr-hover-highlight">`; | `<tr id="origin-${i}" class="swh-search-result-entry swh-tr-hover-highlight">`; | ||||
tableRow += | tableRow += | ||||
`<td id="visit-type-origin-${i}" style="width: 120px;">` + | `<td id="visit-type-origin-${i}" class="swh-origin-visit-type" style="width: 120px;">` + | ||||
'<i title="Checking software origin type" class="mdi mdi-sync mdi-spin mdi-fw"></i>' + | '<i title="Checking software origin type" class="mdi mdi-sync mdi-spin mdi-fw"></i>' + | ||||
'Checking</td>'; | 'Checking</td>'; | ||||
tableRow += | tableRow += | ||||
'<td style="white-space: nowrap;">' + | '<td style="white-space: nowrap;">' + | ||||
`<a href="${browseUrl}">${origin.url}</a></td>`; | `<a href="${browseUrl}">${origin.url}</a></td>`; | ||||
tableRow += | tableRow += | ||||
`<td class="swh-visit-status" id="visit-status-origin-${i}">` + | `<td class="swh-visit-status" id="visit-status-origin-${i}">` + | ||||
'<i title="Checking archiving status" class="mdi mdi-sync mdi-spin mdi-fw"></i>' + | '<i title="Checking archiving status" class="mdi mdi-sync mdi-spin mdi-fw"></i>' + | ||||
▲ Show 20 Lines • Show All 63 Lines • ▼ Show 20 Lines | if (searchMetadata) { | ||||
baseSearchUrl.searchParams.append('fulltext', searchQueryText); | baseSearchUrl.searchParams.append('fulltext', searchQueryText); | ||||
} else { | } else { | ||||
baseSearchUrl = new URL(Urls.api_1_origin_search(searchQueryText), window.location); | 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'); | ||||
baseSearchUrl.searchParams.append('limit', limit); | baseSearchUrl.searchParams.append('limit', limit); | ||||
baseSearchUrl.searchParams.append('with_visit', withVisit); | baseSearchUrl.searchParams.append('with_visit', withVisit); | ||||
const visitType = $('#swh-search-visit-type').val(); | |||||
if (visitType !== 'any') { | |||||
baseSearchUrl.searchParams.append('visit_type', visitType); | |||||
} | |||||
let searchUrl = baseSearchUrl.toString(); | 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) | ||||
▲ Show 20 Lines • Show All 65 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 = $('#swh-origins-url-patterns').val().trim(); | let searchQueryText = $('#swh-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'); | ||||
const visitType = $('#swh-search-visit-type').val(); | |||||
let queryParameters = new URLSearchParams(); | let queryParameters = new URLSearchParams(); | ||||
queryParameters.append('q', searchQueryText); | queryParameters.append('q', searchQueryText); | ||||
if (withVisit) { | if (withVisit) { | ||||
queryParameters.append('with_visit', withVisit); | queryParameters.append('with_visit', withVisit); | ||||
} | } | ||||
if (withContent) { | if (withContent) { | ||||
queryParameters.append('with_content', withContent); | queryParameters.append('with_content', withContent); | ||||
} | } | ||||
if (searchMetadata) { | if (searchMetadata) { | ||||
queryParameters.append('search_metadata', searchMetadata); | queryParameters.append('search_metadata', searchMetadata); | ||||
} | } | ||||
if (visitType !== 'any') { | |||||
queryParameters.append('visit_type', visitType); | |||||
} | |||||
// Update the url, triggering page reload and effective search | // Update the url, triggering page reload and effective search | ||||
window.location = `${Urls.browse_search()}?${queryParameters.toString()}`; | window.location = `${Urls.browse_search()}?${queryParameters.toString()}`; | ||||
}); | }); | ||||
$('#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; | ||||
} | } | ||||
Show All 12 Lines | $('#origins-prev-results-button').click(event => { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
}); | }); | ||||
let urlParams = new URLSearchParams(window.location.search); | let urlParams = new URLSearchParams(window.location.search); | ||||
let query = urlParams.get('q'); | let query = urlParams.get('q'); | ||||
let withVisit = urlParams.has('with_visit'); | let withVisit = urlParams.has('with_visit'); | ||||
let withContent = urlParams.has('with_content'); | let withContent = urlParams.has('with_content'); | ||||
let searchMetadata = urlParams.has('search_metadata'); | let searchMetadata = urlParams.has('search_metadata'); | ||||
let visitType = urlParams.get('visit_type'); | |||||
if (query) { | if (query) { | ||||
$('#swh-origins-url-patterns').val(query); | $('#swh-origins-url-patterns').val(query); | ||||
$('#swh-search-origins-with-visit').prop('checked', withVisit); | $('#swh-search-origins-with-visit').prop('checked', withVisit); | ||||
$('#swh-filter-empty-visits').prop('checked', withContent); | $('#swh-filter-empty-visits').prop('checked', withContent); | ||||
$('#swh-search-origin-metadata').prop('checked', searchMetadata); | $('#swh-search-origin-metadata').prop('checked', searchMetadata); | ||||
if (visitType) { | |||||
$('#swh-search-visit-type').val(visitType); | |||||
} | |||||
doSearch(); | doSearch(); | ||||
} | } | ||||
}); | }); | ||||
} | } |