Allow triggering package search for DB from DBs page

This commit is contained in:
Martchus 2023-05-29 15:03:43 +02:00
parent 54a7a84d11
commit 50ef7c26f3
3 changed files with 49 additions and 22 deletions

View File

@ -162,7 +162,7 @@ export function renderTimeSpan(startTimeStamp, endTimeStamp)
export function renderLink(value, row, handler, tooltip, href, middleClickHref)
{
const linkElement = document.createElement('a');
const linkText = typeof value === 'object' ? value : document.createTextNode(value);
const linkText = typeof value === 'object' ? value : renderNoneInGrey(value);
linkElement.appendChild(linkText);
linkElement.href = middleClickHref || href || '#';
if (tooltip !== undefined) {

View File

@ -1,5 +1,6 @@
import * as AjaxHelper from './ajaxhelper.js';
import * as BuildActionsPage from './buildactionspage.js';
import * as PackageSearchPage from './packagesearchpage.js';
import * as CustomRendering from './customrendering.js';
import * as GenericRendering from './genericrendering.js';
import * as Utils from './utils.js';
@ -40,7 +41,7 @@ function handleGlobalStatusUpdate(ajaxRequest)
columnAccessors: ['arch', 'name', 'packageCount', 'lastUpdate', 'syncFromMirror'],
customRenderer: {
name: function (value, row) {
return GenericRendering.renderLink(value, row, showRepository);
return GenericRendering.renderLink(value, row, searchRepository, undefined, undefined, hashToSearchRepository(row));
},
lastUpdate: GenericRendering.renderShortTimeStamp,
note: function(rows) {
@ -51,6 +52,9 @@ function handleGlobalStatusUpdate(ajaxRequest)
note.appendChild(CustomRendering.renderReloadButton(queryGlobalStatus));
return note;
},
syncFromMirror: function (value, row) {
return GenericRendering.renderLink(value, row, showRepository);
},
},
});
globalStatus.appendChild(dbTable);
@ -227,16 +231,32 @@ function handleGlobalStatusUpdate(ajaxRequest)
BuildActionsPage.handleBuildActionPresetChange();
}
function showRepository(dbName, dbInfo)
function showRepository(value, dbInfo)
{
const mirror = dbInfo.mainMirror;
if (!mirror) {
window.alert('No mirror configured for ' + dbName + '.');
window.alert('No mirror configured for ' + dbInfo.name + '.');
} else {
window.open(mirror);
}
}
function searchRepository(value, dbInfo)
{
const form = PackageSearchPage.initSearchForm();
form.name.value = '';
form.db.value = Utils.makeRepoName(dbInfo.name, dbInfo.arch);
form.mode.value = 'name-contains';
PackageSearchPage.searchForPackages();
}
function hashToSearchRepository(dbInfo)
{
return '#package-search-section?'
+ encodeURIComponent('name=&mode=name-contains&db='
+ encodeURIComponent(Utils.makeRepoName(dbInfo.name, dbInfo.arch)));
}
window.globalInfo = undefined;
window.functionsPostponedUntilGlobalInfo = [];
window.hasGlobalStatus = false;

View File

@ -4,26 +4,33 @@ import * as PackageRendering from './packagerendering.js';
import * as SinglePageHelper from './singlepage.js';
import * as Utils from './utils.js';
export function initPackageSearch(sectionElement, sectionData, newParams)
export function initSearchForm()
{
const searchForm = document.getElementById('package-search-form');
if (!searchForm.dataset.initialized) {
searchForm.onsubmit = function() {
searchForPackages();
return false;
};
const packageResultsFormElements = document.getElementById('package-results-form').elements;
packageResultsFormElements.selectall.onclick = function () {
Utils.alterFormSelection(this.form, 'check-all');
};
packageResultsFormElements.unselectall.onclick = function () {
Utils.alterFormSelection(this.form, 'uncheck-all');
};
packageResultsFormElements.startselected.onclick = function () {
fillBuildActionFromPackageSearch();
};
searchForm.dataset.initialized = true;
if (searchForm.dataset.initialized) {
return searchForm;
}
searchForm.onsubmit = function() {
searchForPackages();
return false;
};
const packageResultsFormElements = document.getElementById('package-results-form').elements;
packageResultsFormElements.selectall.onclick = function () {
Utils.alterFormSelection(this.form, 'check-all');
};
packageResultsFormElements.unselectall.onclick = function () {
Utils.alterFormSelection(this.form, 'uncheck-all');
};
packageResultsFormElements.startselected.onclick = function () {
fillBuildActionFromPackageSearch();
};
searchForm.dataset.initialized = true;
return searchForm;
}
export function initPackageSearch(sectionElement, sectionData, newParams)
{
initSearchForm();
let currentParams = sectionData.state.params;
if (currentParams && currentParams.startsWith('?')) {
currentParams = currentParams.substr(1);
@ -83,7 +90,7 @@ function searchForPackagesFromParams(searchParams)
return res;
}
function searchForPackages()
export function searchForPackages()
{
const res = AjaxHelper.startFormQueryEx('package-search-form', showPackageSearchResults);
const params = SinglePageHelper.sections['package-search'].state.params = res.params.substr(1);