arch-repo-manager/srv/static/js/customrendering.js

57 lines
1.9 KiB
JavaScript

/// \brief Renders a dependency object.
function renderDependency(value)
{
if (value.length < 1) {
return renderArrayAsCommaSeparatedString(value);
}
const list = document.createElement('ul');
list.className = 'dependency-list';
value.forEach(function (dependency) {
const item = document.createElement('li');
let res = dependency.name;
if (dependency.version) {
const modes = [undefined, undefined, '=', '>=', '<=', '>', '<'];
const mode = modes[dependency.mode];
if (mode !== undefined) {
res += mode + dependency.version;
}
}
item.appendChild(document.createTextNode(res));
if (dependency.description) {
const descriptionSpan = document.createElement('span');
descriptionSpan.appendChild(document.createTextNode(' - ' + dependency.description));
descriptionSpan.style.fontStyle = 'italics';
item.appendChild(descriptionSpan);
}
list.appendChild(item);
});
return list;
}
/// \brief Renders a "Reload" button invoking the specified \a handler when clicked.
function renderReloadButton(handler)
{
const reloadButton = document.createElement('button');
reloadButton.className = 'icon-button icon-reload';
reloadButton.type = 'button';
reloadButton.onclick = handler;
reloadButton.appendChild(document.createTextNode('Reload'));
return reloadButton;
}
/// \brief Renders an icon.
function renderIcon(iconName)
{
const icon = document.createElement('span');
icon.className = 'icon icon-' + iconName;
return icon;
}
/// \brief Renders an icon link which will invoke the specified \a handler when clicked.
function renderIconLink(value, row, handler, tooltip, href, middleClickHref)
{
const link = renderLink(renderIcon(value), row, handler, tooltip, href, middleClickHref);
link.className = 'icon-link';
return link;
}