Files
HowBadIsMyBatch/docs/UIUtils.js

95 lines
2.4 KiB
JavaScript

class UIUtils {
static show(element) {
element.style.display = "block";
}
static hide(element) {
element.style.display = "none";
}
static disableButton(button) {
button.disabled = true;
}
static enableButton(button) {
button.disabled = false;
}
static instantiateTemplate(templateId) {
return document.getElementById(templateId).content.firstElementChild.cloneNode(true);
}
static createCanvas() {
return UIUtils.instantiateTemplate('template-canvas');
}
static clear(container) {
container.replaceChildren();
}
static createChartViewElementWithHeading(heading) {
const chartViewElement = UIUtils.instantiateTemplate('template-ChartView');
chartViewElement.querySelector(".heading").textContent = heading;
return {
chartViewElement: chartViewElement,
canvas: chartViewElement.querySelector(".canvas")
};
}
static getSelectedOption(selectElement) {
return selectElement.options[selectElement.selectedIndex];
}
static getYLabelWithPercent(context) {
return UIUtils.#getLabelWithPercent(context, context.parsed.y);
}
static getXLabelWithPercent(context) {
return UIUtils.#getLabelWithPercent(context, context.parsed.x);
}
static #getLabelWithPercent(context, value) {
let label = context.dataset.label || '';
if (label) {
label += ': ';
}
if (value !== null) {
label += value.toFixed(1) + "%";
}
return label;
}
static getPercentageScale(label) {
return {
min: 0,
max: 100,
title: {
display: true,
text: label
},
ticks: {
callback: value => value + "%"
}
}
}
static getSearchParam(urlParams, searchParam, defaultValue) {
return urlParams.has(searchParam) ?
urlParams.get(searchParam) :
defaultValue;
}
static isSearchParamYES(urlParams, searchParam) {
return UIUtils.getSearchParam(urlParams, searchParam, 'NO').toUpperCase() == 'YES';
}
static downloadUrlAsFilename(url, filename) {
const a = document.createElement('a');
a.setAttribute('href', url);
a.setAttribute('download', filename);
a.click();
}
}