function serviceStatusDisplay({
hostName,
accountName,
repositoryName,
...options
} = {}) {
console.log("serviceStatusDisplay", hostName, accountName, repositoryName);
let interval = options.interval;
let panel = document.createElement("div");
let titleElement = document.createElement("div");
let gaugeElement = document.createElement("div");
let timeseriesElement = document.createElement("div");
let width = options.width || 800;
let height = options.height || 200;
let titleWidth = 50;
let gaugeOptions = Object.assign(
{ width: 200, height: height },
options.gauge || {}
);
let timeseriesOptions = Object.assign(
{
width: width - (titleWidth + gaugeOptions.width),
height: Math.floor(height * 0.75),
account: accountName,
repository: repositoryName
},
options.timeseries || {}
);
panel.appendChild(titleElement);
panel.appendChild(gaugeElement);
panel.appendChild(timeseriesElement);
function acceptSQS(sqs) {
console.log("acceptSQS", sqs);
function acceptSQH(sqh) {
console.log("acceptSQH", sqh);
function acceptSS(status) {
let { averageElapsedTime, sampleElapsedTime } =
queryElapsedTimeStatistics(sqs, sqh, 100);
status.sampleElapsedTime = sampleElapsedTime;
status.averageElapsedTime = averageElapsedTime;
console.log("status continued", status);
let gauge = makeGaugeInstance(status, gaugeOptions);
gaugeElement.innerHTML = "";
gaugeElement.appendChild(gauge);
titleElement.innerHTML = `version: ${status.VersionTimestamp} ...<br />host: <a href='https://${hostName}/admin/status.html' target='_blank'>${hostName}</a>`;
}
let timeseries = makeTimeseriesInstance(sqs, sqh, timeseriesOptions);
timeseriesElement.innerHTML = "";
timeseriesElement.appendChild(timeseries);
serverStatus(acceptSS, hostName);
}
systemQueryHistory(
acceptSQH,
hostName,
accountName,
repositoryName,
options.limit
);
}
systemQueryStatus(acceptSQS, hostName, accountName, repositoryName, {});
panel.style.cssText = `
border: ${options.border || "none"};
display: grid;
grid-template-areas: 'title gauge timeseries';
grid-gap: 10px;
padding-bottom: 20px;
`;
panel.style.width = width + "px";
panel.style.height = height + "px";
titleElement.className = "title";
titleElement.style.cssText = `width: ${titleWidth}px; height: ${height}px;
grid-area: title;
border: none;
writing-mode: vertical-lr;
text-align: center;
font-size: 10pt;
`;
timeseriesElement.className = "timeseries";
timeseriesElement.style.cssText = `width: ${timeseriesOptions.width}px; height: ${height}px;
grid-area: timeseries;
border: none;
`;
gaugeElement.className = "gauge";
gaugeElement.style.cssText = `width: ${gaugeOptions.width}px; height: ${height}px;
grid-area: gauge;
border: none;
`;
return panel;
}