Skip to content

Commit 6f9cefd

Browse files
authored
Create ci-health-badges.component.js
1 parent 39f26d9 commit 6f9cefd

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Now Experience component (simplified snippet)
2+
// Renders a badge based on CI health from CiHealthApi via GlideAjax.
3+
4+
(function() {
5+
// minimal component-like function for illustration inside repo
6+
function renderBadge(targetEl, ciSysId) {
7+
if (!ciSysId) {
8+
targetEl.innerHTML = '<span>CI not specified</span>';
9+
return;
10+
}
11+
12+
var ga = new GlideAjax('CiHealthApi');
13+
ga.addParam('sysparm_name', 'getHealth');
14+
ga.addParam('sysparm_ciSysId', ciSysId);
15+
ga.getXMLAnswer(function(answer) {
16+
try {
17+
var res = JSON.parse(answer);
18+
if (!res.ok) {
19+
targetEl.innerHTML = '<span>' + (res.message || 'No data') + '</span>';
20+
return;
21+
}
22+
var cls = res.label === 'Good' ? 'badge-good' : res.label === 'Warning' ? 'badge-warn' : 'badge-crit';
23+
targetEl.innerHTML =
24+
'<span class="badge ' + cls + '">' + res.label + ' (' + res.score + ')</span>' +
25+
'<small> Evaluated: ' + res.evaluated_at + '</small>';
26+
} catch (e) {
27+
targetEl.innerHTML = '<span>Failed to parse health data</span>';
28+
}
29+
});
30+
}
31+
32+
// Example usage in a portal page widget:
33+
// renderBadge(document.getElementById('ci-badge'), 'PUT_CI_SYS_ID');
34+
35+
// rudimentary styles for illustration
36+
var style = document.createElement('style');
37+
style.textContent = '.badge{padding:4px 8px;border-radius:6px;color:#fff;margin-right:6px}' +
38+
'.badge-good{background:#2e7d32}.badge-warn{background:#f9a825}.badge-crit{background:#c62828}';
39+
document.head.appendChild(style);
40+
41+
// expose for demo
42+
window.renderCiHealthBadge = renderBadge;
43+
})();

0 commit comments

Comments
 (0)