|
| 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