Files
root b4714c70d1 Add ATC Team chat, soft identity, and update Present decks.
Ship team/DM chat with files, avatars, unread alerts, and a first-open identity gate (including Guest); fold Team into Ops desk; clarify Datacenter Engineer vs "Data Plumbers" FDE roles; refresh Present story/tech slides to match.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 01:42:00 +02:00

813 lines
42 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dell OpenManage Cockpit — ATC</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="/styles.css?v=team6" />
<link rel="icon" href="/dell.png" type="image/png" />
<link rel="stylesheet" href="/vendor/xterm/xterm.css?v=home1" />
<script>
(function () {
try {
var t = localStorage.getItem("cockpit_theme") || "light";
document.documentElement.setAttribute("data-theme", t === "dark" ? "dark" : "light");
} catch (e) {
document.documentElement.setAttribute("data-theme", "light");
}
})();
</script>
</head>
<body>
<div id="notify-stack" aria-live="polite" aria-atomic="false"></div>
<div id="app">
<header class="topbar">
<a class="brand" href="/" title="OpenManage Cockpit home">
<img class="dell-logo" src="/dell.png" alt="Dell" width="44" height="44" />
<div class="brand-text">
<h1>OpenManage <span>Cockpit</span></h1>
<p id="ome-meta">OME · connecting…</p>
</div>
</a>
<div class="kpi-strip" id="kpi-strip" aria-label="Fleet KPIs"></div>
<div class="top-actions">
<button type="button" class="btn ghost" id="btn-reset-view" title="Fit fleet in view">Reset view</button>
<button type="button" class="btn ghost" id="btn-ome-console" title="Open OME console">OME console</button>
<button type="button" class="btn ghost" id="btn-network" title="Fabric map &amp; ATC racks">Network</button>
<button type="button" class="btn console-btn" id="btn-console" title="Live iDRAC console wall">Console</button>
<button type="button" class="btn ghost" id="btn-reports" title="Fleet reports &amp; Dell compliance">Reports</button>
<div class="ops-team-combo" title="Ops desk &amp; team chat">
<button type="button" class="btn ghost" id="btn-ops" title="ATC admin tickets">Ops desk</button>
<button type="button" class="btn team-btn" id="btn-team" title="ATC team chat · files">
<span class="team-btn-label">Team</span>
<span class="team-unread hidden" id="team-unread" aria-label="Unread messages">0</span>
<span class="team-btn-who hidden" id="team-identity-badge" title="Switch identity"></span>
</button>
</div>
<button type="button" class="btn theme-toggle" id="btn-theme" title="Switch theme" aria-label="Switch light or dark theme">
<svg class="theme-ico theme-ico-to-dark" viewBox="0 0 24 24" width="16" height="16" aria-hidden="true">
<path fill="currentColor" d="M12 3a9 9 0 1 0 9 9c0-.3 0-.6-.05-.9A7 7 0 0 1 12 3z"/>
<circle cx="12" cy="12" r="9" fill="none" stroke="currentColor" stroke-width="1.6"/>
</svg>
<svg class="theme-ico theme-ico-to-light" viewBox="0 0 24 24" width="16" height="16" aria-hidden="true">
<circle cx="12" cy="12" r="4" fill="currentColor"/>
<path fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
d="M12 2.5v2.2M12 19.3v2.2M2.5 12h2.2M19.3 12h2.2M5.1 5.1l1.6 1.6M17.3 17.3l1.6 1.6M18.9 5.1l-1.6 1.6M6.7 17.3l-1.6 1.6"/>
</svg>
</button>
<button type="button" class="btn present-btn" id="btn-present" title="Customer presentation · mid or fullscreen slides">Present</button>
<button type="button" class="btn primary" id="btn-chat">Cockpit Copilot</button>
</div>
</header>
<aside class="rail left" id="left-rail">
<section class="rail-block open" data-module="viz">
<button type="button" class="rail-toggle" aria-expanded="true">
<span>Visualization</span>
<span class="chev" aria-hidden="true"></span>
</button>
<div class="rail-panel">
<p class="hint">Interactive topology layout</p>
<div class="viz-grid" id="layout-modes">
<button type="button" class="viz-card active" data-layout="orbit"><span class="viz-ico"></span><span class="viz-t">Orbit</span><span class="viz-s">Hub &amp; rings</span></button>
<button type="button" class="viz-card" data-layout="galaxy"><span class="viz-ico"></span><span class="viz-t">Galaxy</span><span class="viz-s">Spiral arms</span></button>
<button type="button" class="viz-card" data-layout="clusters"><span class="viz-ico"></span><span class="viz-t">Clusters</span><span class="viz-s">Subnet islands</span></button>
<button type="button" class="viz-card" data-layout="radar"><span class="viz-ico"></span><span class="viz-t">Radar</span><span class="viz-s">Sector sweep</span></button>
<button type="button" class="viz-card" data-layout="lanes"><span class="viz-ico"></span><span class="viz-t">Lanes</span><span class="viz-s">Fiber highways</span></button>
<button type="button" class="viz-card" data-layout="helix"><span class="viz-ico"></span><span class="viz-t">Helix</span><span class="viz-s">3D depth coil</span></button>
</div>
</div>
</section>
<section class="rail-block open" data-module="filters">
<button type="button" class="rail-toggle" aria-expanded="true">
<span>Filters</span>
<span class="chev" aria-hidden="true"></span>
</button>
<div class="rail-panel">
<p class="hint">Servers / iDRACs = include types. Both off = empty map.</p>
<div class="filters" id="filters">
<label class="toggle"><input type="checkbox" id="f-servers" checked /> Servers</label>
<label class="toggle"><input type="checkbox" id="f-idrac" /> iDRACs</label>
<label class="toggle"><input type="checkbox" id="f-connected" /> Connected only</label>
<label class="toggle"><input type="checkbox" id="f-powered" /> Powered on</label>
<label class="toggle"><input type="checkbox" id="f-has-power" /> Has power reading</label>
<label class="toggle"><input type="checkbox" id="f-ghost-links" /> Ghost offline links</label>
<div class="pulse-row">
<label class="toggle"><input type="checkbox" id="f-pulse-links" checked /> Animate link pulse</label>
<button type="button" class="btn ghost compact pulse-gear" id="btn-pulse-settings" title="Pulse speed settings" aria-haspopup="dialog" aria-expanded="false"></button>
<div class="pulse-pop" id="pulse-pop" hidden role="dialog" aria-label="Link pulse settings">
<strong>Link pulse</strong>
<label class="range pulse-speed-range">
<span>Speed <em id="pulse-speed-label">0.45×</em></span>
<input type="range" id="f-pulse-speed" min="0.15" max="1.5" step="0.05" value="0.45" />
</label>
<div class="pulse-presets">
<button type="button" class="chip" data-pulse-speed="0.25">Slow</button>
<button type="button" class="chip" data-pulse-speed="0.45">Normal</button>
<button type="button" class="chip" data-pulse-speed="0.8">Fast</button>
<button type="button" class="chip" data-pulse-speed="1.2">Max</button>
</div>
<div class="pulse-colors">
<label class="pulse-color-field">
<span>Line</span>
<input type="color" id="f-pulse-line-color" value="#3dffe0" title="Link line color" />
</label>
<label class="pulse-color-field">
<span>Glow</span>
<input type="color" id="f-pulse-glow-color" value="#00a8e8" title="Link glow color" />
</label>
<label class="pulse-color-field">
<span>Packet</span>
<input type="color" id="f-pulse-packet-color" value="#ffffff" title="Moving packet color" />
</label>
</div>
<div class="pulse-color-presets" id="pulse-color-presets">
<button type="button" class="pulse-swatch" data-pulse-theme="cyan" style="--sw:#3dffe0" title="Cyan"></button>
<button type="button" class="pulse-swatch" data-pulse-theme="orange" style="--sw:#ff9a3c" title="Orange"></button>
<button type="button" class="pulse-swatch" data-pulse-theme="green" style="--sw:#3dffa0" title="Green"></button>
<button type="button" class="pulse-swatch" data-pulse-theme="purple" style="--sw:#c4a7ff" title="Purple"></button>
<button type="button" class="pulse-swatch" data-pulse-theme="pink" style="--sw:#f472b6" title="Pink"></button>
<button type="button" class="pulse-swatch" data-pulse-theme="gold" style="--sw:#f0e68c" title="Gold"></button>
</div>
<p class="hint">Lower speed = calmer packets on the main map.</p>
</div>
</div>
<label class="range">
<span>Min watts <em id="min-w-label">0</em></span>
<input type="range" id="f-min-watts" min="0" max="800" step="10" value="0" />
</label>
</div>
<div class="filter-actions">
<button type="button" class="btn ghost compact" id="btn-clear-filters" title="Reset filters to defaults">Reset filters</button>
</div>
<input type="search" id="search" class="search" placeholder="Search name, tag, IP, model…" autocomplete="off" />
</div>
</section>
<section class="rail-block open" data-module="view">
<button type="button" class="rail-toggle" aria-expanded="true">
<span>Color mode</span>
<span class="chev" aria-hidden="true"></span>
</button>
<div class="rail-panel">
<p class="hint">Node colors by status, power, model…</p>
<div class="chip-grid" id="view-modes">
<button type="button" class="chip active" data-mode="status">Status</button>
<button type="button" class="chip" data-mode="power">Power (W)</button>
<button type="button" class="chip" data-mode="connection">Connection</button>
<button type="button" class="chip" data-mode="model">Model</button>
<button type="button" class="chip" data-mode="subnet">Subnet</button>
</div>
</div>
</section>
<section class="rail-block open" data-module="live">
<button type="button" class="rail-toggle" aria-expanded="true">
<span>Realtime context</span>
<span class="chev" aria-hidden="true"></span>
</button>
<div class="rail-panel">
<p class="hint">Live OME alerts + fleet deltas — click to focus</p>
<div class="ctx-stats" id="ctx-stats"></div>
<div class="list" id="alert-list"></div>
</div>
</section>
<section class="rail-block open" data-module="networks">
<button type="button" class="rail-toggle" aria-expanded="true">
<span>Networks</span>
<span class="chev" aria-hidden="true"></span>
</button>
<div class="rail-panel">
<p class="hint">Management subnets — click to focus</p>
<div class="list" id="subnet-list"></div>
</div>
</section>
<section class="rail-block" data-module="models">
<button type="button" class="rail-toggle" aria-expanded="false">
<span>Models</span>
<span class="chev" aria-hidden="true"></span>
</button>
<div class="rail-panel">
<p class="hint">Server platforms in inventory</p>
<div class="list" id="model-list"></div>
</div>
</section>
<section class="rail-block" data-module="groups">
<button type="button" class="rail-toggle" aria-expanded="false">
<span>Groups</span>
<span class="chev" aria-hidden="true"></span>
</button>
<div class="rail-panel">
<div class="list" id="group-list"></div>
</div>
</section>
</aside>
<main class="stage">
<div class="ctx-bar" id="ctx-bar">
<div class="ctx-live">
<span class="pulse-dot" aria-hidden="true"></span>
<span id="ctx-live-text">Realtime context · waiting for OME…</span>
</div>
<div class="ctx-focus" id="ctx-focus">Focus: all networks</div>
</div>
<canvas id="topo"></canvas>
<div class="stage-hud">
<div class="legend" id="legend"></div>
<div class="hint-bar">Scroll = zoom · drag = pan · hover tip · double-click = Quick Connect</div>
</div>
<aside class="ctx-feed" id="ctx-feed" aria-label="Realtime feed">
<header class="ctx-feed-head" id="ctx-feed-drag">
<strong>Live feed</strong>
<span id="ctx-feed-meta"></span>
<span class="feed-docks">
<button type="button" class="feed-dock" id="btn-feed-collapse" title="Minimize feed"></button>
<button type="button" class="feed-dock hidden" id="btn-feed-expand" title="Expand feed"></button>
</span>
</header>
<div class="ctx-feed-body" id="ctx-feed-body"></div>
</aside>
</main>
<aside class="rail right" id="inspector">
<div class="inspector-empty" id="inspector-empty">
<img src="/dell.png" alt="" class="ghost-logo" />
<h2>Inspector</h2>
<p>Select a node, KPI, or subnet for live details. Everything is clickable.</p>
</div>
<div class="inspector-body hidden" id="inspector-body"></div>
</aside>
<footer class="app-footer" id="app-footer">
<div class="app-credit" title="Not an official Dell product">
<span>OME Cockpit · Data FDEs <strong>Mohamed El Kadi</strong> &amp; <strong>Bart Sjerps</strong></span>
<span class="app-credit-sep" aria-hidden="true">·</span>
<span>Data Forward Deployed Engineers</span>
<span class="app-credit-sep" aria-hidden="true">·</span>
<span>Not an official Dell Technologies product</span>
</div>
<div class="ticker" id="ticker"></div>
</footer>
</div>
<!-- Cockpit chat / Copilot -->
<div class="drawer chat-copilot" id="chat-drawer" aria-hidden="true">
<div class="drawer-head">
<div class="drawer-brand">
<img src="/dell.png" alt="Dell" height="22" />
<span>Cockpit Copilot</span>
</div>
<button type="button" class="btn ghost" id="btn-chat-close">Close</button>
</div>
<div class="chat-context" id="chat-context">
<label class="chat-model-wrap" title="Select model (Llama / OpenManage AI)">
<span class="chat-model-label">Model</span>
<select id="chat-model" class="chat-model-select" aria-label="Chat model">
<option value="llama3-70b-gptq">llama3-70b-gptq</option>
</select>
</label>
<span class="chat-ctx-pill" id="chat-ctx-fleet">fleet …</span>
<span class="chat-ctx-pill" id="chat-ctx-focus">focus: none</span>
</div>
<section class="chat-gpu" aria-label="Live GPU matrix">
<div class="chat-gpu-head">
<strong>V100 GPU matrix</strong>
<span class="chat-gpu-host">atc-gpu-prod · live</span>
</div>
<div id="gpu-summary" class="gpu-summary">Waiting for GPU telemetry…</div>
<div id="gpu-matrix" class="gpu-matrix chat-gpu-matrix"></div>
</section>
<div class="chat-quick" id="chat-quick">
<button type="button" data-q="List every device with its Service Tag, model, and IP.">All service tags</button>
<button type="button" data-q="How much memory (RAM GB) does each server currently have? List Service Tag, name, model, and installed GB.">Memory per server</button>
<button type="button" data-q="What is the current fleet health? Include Service Tags for critical systems.">Fleet health</button>
<button type="button" data-q="List all critical alerts with system name, Service Tag, and IP.">Critical alerts</button>
<button type="button" data-q="Which systems are firmware outdated vs the Dell catalog? Include Service Tags and BIOS/iDRAC versions if known.">Outdated firmware</button>
<button type="button" data-q="Summarize V100 GPU utilization on atc-gpu-prod from the live matrix.">GPU status</button>
</div>
<div class="chat-body" id="chat-body"></div>
<form class="chat-form" id="chat-form">
<input type="text" id="chat-input" placeholder="Ask about fleet memory, alerts, power, iDRACs, GPUs…" autocomplete="off" />
<button type="submit" class="btn primary">Send</button>
</form>
<footer class="drawer-credit">OME Cockpit · Data Forward Deployed Engineers <strong>Mohamed El Kadi</strong> &amp; <strong>Bart Sjerps</strong> · Not an official Dell Technologies product</footer>
</div>
<!-- Ops desk / tickets -->
<div class="drawer wide ops-drawer" id="ops-drawer" aria-hidden="true">
<div class="drawer-head">
<div class="drawer-brand">
<img src="/dell.png" alt="Dell" height="22" />
<span>ATC Ops desk</span>
</div>
<div class="ops-head-actions">
<button type="button" class="btn team-btn compact" id="btn-ops-open-team" title="Open team chat">Team chat</button>
<button type="button" class="btn ghost" id="btn-ops-close">Close</button>
</div>
</div>
<div class="ops-layout">
<div class="ops-side">
<label class="ops-identity">Acting as
<select id="ops-actor">
<optgroup label="Datacenter Engineers">
<option value="jody">Jody van Dongen · DC Engineer</option>
<option value="laurens">Laurens Rammers · DC Engineer</option>
</optgroup>
<optgroup label="Data FDE team">
<option value="mo">Mohamed El Kadi · Data FDE · "Data Plumbers" 😉</option>
<option value="bart">Bart Sjerps · Data FDE · "Data Plumbers" 😉</option>
</optgroup>
<optgroup label="Other">
<option value="guest">Guest · Visitor</option>
</optgroup>
</select>
</label>
<div class="ops-side-actions">
<button type="button" class="btn primary" id="btn-new-ticket">New ticket</button>
<button type="button" class="btn compact" id="btn-ops-refresh" title="Reload ticket list">Refresh</button>
</div>
<div class="ops-filters">
<select id="ops-filter" title="Ticket history filter">
<option value="all" selected>All history</option>
<option value="openish">Active only</option>
<option value="open">Open</option>
<option value="accepted">Accepted</option>
<option value="in_progress">In progress</option>
<option value="resolved">Resolved</option>
<option value="closed">Closed</option>
<option value="mine">Assigned to me</option>
<option value="created">Created by me</option>
<option value="fde">FDE involved</option>
<option value="admin">Admin handoff</option>
</select>
<span class="ops-count" id="ops-count">0 tickets</span>
</div>
<div class="list" id="ticket-list"></div>
</div>
<div class="ops-main" id="ops-main">
<div class="ops-empty" id="ops-empty">
<h3>ATC Ops desk</h3>
<p class="ops-intro">Select a ticket or create one to collaborate across Datacenter Engineers and Data Forward Deployed Engineers.</p>
<div class="ops-team-grid" id="ops-team-grid">
<section class="ops-team-card admin">
<h4>Datacenter Engineers</h4>
<ul>
<li><strong>Jody van Dongen</strong><span>Datacenter Engineer · storage · servers · network · rack &amp; stack · installs</span></li>
<li><strong>Laurens Rammers</strong><span>Datacenter Engineer · storage · servers · network · rack &amp; stack · installs</span></li>
</ul>
</section>
<section class="ops-team-card fde">
<h4>Data Forward Deployed Engineers</h4>
<ul>
<li><strong>Mohamed El Kadi</strong><span>Data FDE · &quot;Data Plumbers&quot; 😉 · Cockpit · OpenManage AI</span></li>
<li><strong>Bart Sjerps</strong><span>Data FDE · &quot;Data Plumbers&quot; 😉 · FDE cluster · AI workloads</span></li>
</ul>
</section>
</div>
<div class="ops-quick" id="ops-quick">
<h4>Quick actions</h4>
<div class="ops-quick-row">
<button type="button" class="btn primary" data-ops-quick="ticket">New ticket</button>
<button type="button" class="btn" data-ops-quick="to-admin">Handoff to DC engineer</button>
<button type="button" class="btn" data-ops-quick="to-fde">Ask FDE / AI cluster</button>
<button type="button" class="btn" data-ops-quick="active">Show active tickets</button>
<button type="button" class="btn" data-ops-quick="team">Team chat</button>
<button type="button" class="btn" data-ops-quick="chat">Open Copilot</button>
<button type="button" class="btn" data-ops-quick="reports">Fleet reports</button>
</div>
</div>
<div class="ops-stats" id="ops-stats"></div>
</div>
<div class="ops-thread hidden" id="ops-thread"></div>
</div>
</div>
<footer class="ops-footer">
<span>OME Cockpit · Data FDEs <strong>Mohamed El Kadi</strong> &amp; <strong>Bart Sjerps</strong></span>
<span class="ops-footer-sep" aria-hidden="true">·</span>
<span>Data Forward Deployed Engineers</span>
<span class="ops-footer-sep" aria-hidden="true">·</span>
<span>Not an official Dell Technologies product</span>
</footer>
</div>
<div class="drawer" id="ai-drawer" aria-hidden="true">
<div class="drawer-head">
<div class="drawer-brand">
<img src="/dell.png" alt="Dell" height="22" />
<span>OpenManage AI</span>
</div>
<button type="button" class="btn ghost" id="btn-ai-close">Close</button>
</div>
<iframe id="ai-frame" title="OpenManage AI" src="about:blank"></iframe>
</div>
<!-- Network: fabric + ATC racks -->
<div class="drawer wide network-drawer" id="network-drawer" aria-hidden="true">
<div class="drawer-head">
<div class="drawer-brand">
<img src="/dell.png" alt="Dell" height="22" />
<span>Network · ATC1 / ATC2</span>
</div>
<div class="net-head-meta">
<span id="network-status" class="hint"></span>
<button type="button" class="btn ghost" id="btn-network-close">Close</button>
</div>
</div>
<div class="chip-grid" id="network-tabs">
<button type="button" class="chip active" data-ntab="fabric">Fabric</button>
<button type="button" class="chip" data-ntab="racks">Racks 42U</button>
<button type="button" class="chip" data-ntab="vlans">VLANs</button>
</div>
<div class="network-body">
<div id="network-fabric" class="network-panel"></div>
<div id="network-racks" class="network-panel hidden"></div>
<div id="network-vlans" class="network-panel hidden"></div>
</div>
<footer class="drawer-credit">OME Cockpit · Data Forward Deployed Engineers <strong>Mohamed El Kadi</strong> &amp; <strong>Bart Sjerps</strong> · Not an official Dell Technologies product</footer>
</div>
<!-- Live iDRAC Console wall -->
<div class="drawer wide console-drawer" id="console-drawer" aria-hidden="true">
<div class="console-aurora" aria-hidden="true"></div>
<div class="drawer-head console-head">
<div class="drawer-brand">
<img src="/dell.png" alt="Dell" height="22" />
<div>
<span class="console-title">Console · iDRAC wall</span>
<p class="console-sub">4 live embeds · drag from fleet · network-aware</p>
</div>
</div>
<div class="console-head-actions">
<div id="console-stats" class="console-stats"></div>
<div class="console-density" role="group" aria-label="Wall size">
<button type="button" class="chip active" data-console-slots="4" title="4 consoles">4 screens</button>
<button type="button" class="chip" data-console-slots="8" title="8 consoles">8 screens</button>
</div>
<div class="console-density" role="group" aria-label="Tile density">
<button type="button" class="chip" data-console-density="small" title="Compact tiles">Small</button>
<button type="button" class="chip active" data-console-density="medium" title="Larger tiles">Medium</button>
</div>
<button type="button" class="btn primary" id="btn-console-autofill" title="Fill wall with live iDRACs">Auto-fill live</button>
<button type="button" class="btn ghost" id="btn-console-clear">Clear wall</button>
<button type="button" class="btn ghost" id="btn-console-close">Close</button>
</div>
</div>
<div class="console-body">
<aside class="console-fleet">
<div class="console-fleet-tools">
<input type="search" id="console-search" placeholder="Search name, IP, tag, subnet…" autocomplete="off" />
<div class="console-subnet-chips" id="console-subnet-chips"></div>
<p class="hint">Only real iDRAC/BMC IPs · drag onto a slot or click <strong>+ Wall</strong> · Fullscreen = popup</p>
</div>
<div class="console-fleet-list" id="console-fleet-list"></div>
</aside>
<section class="console-stage density-medium" id="console-stage" aria-label="iDRAC console wall"></section>
</div>
<footer class="drawer-credit">OME Cockpit · Data Forward Deployed Engineers <strong>Mohamed El Kadi</strong> &amp; <strong>Bart Sjerps</strong> · Not an official Dell Technologies product</footer>
</div>
<div class="modal hidden console-fs-modal" id="console-fs-modal" aria-hidden="true" role="dialog" aria-labelledby="console-fs-title">
<div class="modal-card console-fs-card">
<button type="button" class="modal-close" id="btn-console-fs-close" aria-label="Close">×</button>
<div class="console-fs-head">
<div>
<p class="modal-kicker">Fullscreen iDRAC</p>
<h2 id="console-fs-title">Console</h2>
<p class="modal-sub" id="console-fs-sub"></p>
<div id="console-fs-net"></div>
</div>
</div>
<div class="console-fs-frame-wrap">
<iframe id="console-fs-frame" title="iDRAC fullscreen" allow="fullscreen; clipboard-read; clipboard-write"></iframe>
</div>
</div>
</div>
<!-- Reports / compliance / export -->
<div class="drawer wide reports-drawer" id="reports-drawer" aria-hidden="true">
<div class="drawer-head">
<div class="drawer-brand">
<img src="/dell.png" alt="Dell" height="22" />
<span>Fleet reports · Dell compliance</span>
</div>
<button type="button" class="btn ghost" id="btn-reports-close">Close</button>
</div>
<div class="chip-grid reports-tabs" id="reports-tabs">
<button type="button" class="chip active" data-tab="analytics" title="Dashboard KPIs — click tiles to drill into filtered views">Analytics</button>
<button type="button" class="chip" data-tab="hardware" title="DIMM slot map, disk/PCIe expansion, Dell best practices">Hardware / Expansion</button>
<button type="button" class="chip" data-tab="fleet" title="Full fleet table with Service Tags — filter & export">Fleet inventory</button>
<button type="button" class="chip" data-tab="firmware" title="BIOS/iDRAC vs Dell Online Baseline — outdated filter">Firmware / BIOS</button>
<button type="button" class="chip" data-tab="warranty" title="Warranty end dates — expired / expiring filters">Warranty</button>
<button type="button" class="chip" data-tab="ome" title="OME ReportDefs, catalogs, baselines, jobs">OME reports</button>
<button type="button" class="chip" data-tab="brief" title="Printable customer brief with Service Tag appendix">Customer brief</button>
</div>
<div class="reports-body" id="reports-mount">
<p class="hint">Select a report tab to load live OME data.</p>
</div>
<footer class="drawer-credit">OME Cockpit · Data Forward Deployed Engineers <strong>Mohamed El Kadi</strong> &amp; <strong>Bart Sjerps</strong> · Not an official Dell Technologies product</footer>
</div>
<!-- ATC Team Chat -->
<div class="drawer wide team-drawer" id="team-drawer" aria-hidden="true">
<div class="drawer-head team-head">
<div class="drawer-brand">
<img src="/dell.png" alt="Dell" height="22" />
<div>
<span class="team-title">Team chat</span>
<p class="team-sub">Jody · Laurens · Mo · Bart — messages &amp; files</p>
</div>
</div>
<div class="team-head-actions">
<div id="team-presence" class="team-presence"></div>
<button type="button" class="btn ghost" id="btn-team-switch">Switch identity</button>
<button type="button" class="btn ghost" id="btn-team-close">Close</button>
</div>
</div>
<div class="team-body">
<aside class="team-rail">
<div class="team-room-list" id="team-room-list"></div>
</aside>
<section class="team-chat-main" id="team-chat-main">
<header class="team-chat-head">
<div>
<h2 id="team-chat-title">ATC Team</h2>
<p class="modal-sub" id="team-chat-sub"></p>
</div>
<span id="team-typing" class="team-typing"></span>
</header>
<div class="team-messages" id="team-messages"></div>
<form class="team-composer" id="team-form">
<label class="team-attach btn ghost compact" title="Attach file">
📎
<input type="file" id="team-file" multiple hidden />
</label>
<input type="text" id="team-input" placeholder="Message the team… (drop files anywhere)" autocomplete="off" maxlength="8000" />
<button type="submit" class="btn primary">Send</button>
</form>
</section>
</div>
<footer class="drawer-credit">OME Cockpit · Data Forward Deployed Engineers <strong>Mohamed El Kadi</strong> &amp; <strong>Bart Sjerps</strong> · Not an official Dell Technologies product</footer>
</div>
<div class="identity-gate hidden" id="identity-gate" aria-hidden="true" role="dialog" aria-labelledby="identity-gate-title">
<div class="identity-gate-card">
<img src="/dell.png" alt="Dell" width="48" height="48" />
<p class="modal-kicker">ATC Cockpit</p>
<h2 id="identity-gate-title">Who are you?</h2>
<p class="modal-sub">Select yourself to continue — Team chat, Ops desk, and handoffs use this identity. Guests welcome.</p>
<div class="identity-gate-grid" id="identity-gate-grid"></div>
<div class="identity-avatar-row" id="identity-avatar-row">
<div class="id-avatar-preview" id="identity-avatar-preview" aria-hidden="true">
<img id="identity-avatar-img" alt="" hidden />
<span id="identity-avatar-initials">?</span>
</div>
<div class="identity-avatar-copy">
<strong id="identity-avatar-label">Profile photo</strong>
<p class="modal-sub">JPG, PNG, WebP or GIF · max 5 MB</p>
</div>
<label class="btn ghost compact" id="identity-avatar-btn">
Upload photo
<input type="file" id="identity-avatar-file" accept="image/jpeg,image/png,image/webp,image/gif" hidden />
</label>
</div>
</div>
</div>
<div class="scrim" id="scrim"></div>
<div class="node-tip hidden" id="node-tip" role="tooltip"></div>
<div class="modal hidden" id="ticket-modal" aria-hidden="true" role="dialog" aria-labelledby="ticket-modal-title">
<div class="modal-card ticket-card">
<button type="button" class="modal-close" id="btn-ticket-modal-close" aria-label="Close">×</button>
<div class="modal-brand">
<img src="/dell.png" alt="Dell" width="36" height="36" />
<div>
<p class="modal-kicker">ATC Ops desk</p>
<h2 id="ticket-modal-title">Create ticket</h2>
<p class="modal-sub">Handoff between Datacenter Engineers (Jody / Laurens) and Data FDEs (Mo / Bart)</p>
</div>
</div>
<form id="ticket-form" class="ticket-form">
<label>Title
<input type="text" id="ticket-title" required maxlength="180" placeholder="Short operational title" />
</label>
<div class="ticket-form-row">
<label>Priority
<select id="ticket-priority">
<option value="low">Low</option>
<option value="normal" selected>Normal</option>
<option value="high">High</option>
<option value="critical">Critical</option>
</select>
</label>
<label>Assign to
<select id="ticket-assignee">
<optgroup label="Datacenter Engineers">
<option value="jody">Jody van Dongen</option>
<option value="laurens">Laurens Rammers</option>
</optgroup>
<optgroup label="Data FDE team">
<option value="mo">Mohamed El Kadi</option>
<option value="bart">Bart Sjerps</option>
</optgroup>
<optgroup label="Other">
<option value="guest">Guest</option>
</optgroup>
</select>
</label>
</div>
<label>Details / note
<textarea id="ticket-body" rows="7" required placeholder="Context, system, IP, observed impact, requested action…"></textarea>
</label>
<div class="ticket-form-actions">
<button type="button" class="btn ghost" id="btn-ticket-cancel">Cancel</button>
<button type="submit" class="btn primary">Create ticket</button>
</div>
</form>
</div>
</div>
<div class="modal hidden" id="an-context-modal" aria-hidden="true" role="dialog" aria-labelledby="an-ctx-title">
<div class="modal-card an-ctx-card">
<button type="button" class="modal-close" id="an-ctx-close" aria-label="Close">×</button>
<div class="modal-brand">
<img src="/dell.png" alt="Dell" width="32" height="32" />
<div>
<p class="modal-kicker">Analytics context</p>
<h2 id="an-ctx-title">Context</h2>
<p class="modal-sub" id="an-ctx-sub"></p>
</div>
</div>
<div class="an-ctx-pills" id="an-ctx-pills"></div>
<div class="an-ctx-list" id="an-ctx-list"></div>
<div class="an-ctx-actions" id="an-ctx-actions"></div>
</div>
</div>
<div class="modal hidden" id="kpi-modal" aria-hidden="true" role="dialog" aria-labelledby="kpi-title">
<div class="modal-card kpi-card">
<button type="button" class="modal-close" id="btn-kpi-close" aria-label="Close">×</button>
<div class="modal-brand">
<img src="/dell.png" alt="Dell" width="36" height="36" />
<div>
<p class="modal-kicker">Fleet context</p>
<h2 id="kpi-title">KPI</h2>
<p class="modal-sub" id="kpi-sub">Interactive breakdown — click a system for actions</p>
</div>
</div>
<div class="kpi-summary" id="kpi-summary"></div>
<div class="kpi-toolbar">
<input type="search" id="kpi-search" class="search" placeholder="Search name, IP, model, tag, subnet…" autocomplete="off" />
<select id="kpi-sort" aria-label="Sort">
<option value="name">Sort: name</option>
<option value="watts">Sort: power</option>
<option value="status">Sort: status</option>
<option value="subnet">Sort: subnet</option>
</select>
<button type="button" class="btn" id="btn-kpi-apply">Apply as map filter</button>
<button type="button" class="btn ghost" id="btn-kpi-clear">Clear map filter</button>
</div>
<div class="kpi-layout">
<div class="kpi-list" id="kpi-list"></div>
<div class="kpi-detail" id="kpi-detail">
<p class="hint">Select a system on the left for live context and actions.</p>
</div>
</div>
</div>
</div>
<div class="modal hidden" id="triage-modal" aria-hidden="true" role="dialog" aria-labelledby="triage-title">
<div class="modal-card triage-card">
<button type="button" class="modal-close" id="btn-triage-close" aria-label="Close">×</button>
<div class="modal-brand">
<img src="/dell.png" alt="Dell" width="36" height="36" />
<div>
<p class="modal-kicker">Realtime triage</p>
<h2 id="triage-title">Critical alerts</h2>
<p class="modal-sub" id="triage-sub">Click a system to inspect · create ATC ticket instantly</p>
</div>
</div>
<div class="triage-toolbar">
<div class="chip-grid" id="triage-tabs">
<button type="button" class="chip active" data-triage="critical">Critical</button>
<button type="button" class="chip" data-triage="warning">Warning</button>
<button type="button" class="chip" data-triage="events">Fleet deltas</button>
<button type="button" class="chip" data-triage="hottest">Live power</button>
<button type="button" class="chip" data-triage="all">All feed</button>
</div>
<input type="search" id="triage-search" class="search" placeholder="Filter by system, IP, message, tag…" />
</div>
<div class="triage-layout">
<div class="triage-list" id="triage-list"></div>
<div class="triage-detail" id="triage-detail">
<p class="hint">Select an alert or system on the left.</p>
</div>
</div>
</div>
</div>
<div class="modal hidden" id="connect-modal" aria-hidden="true" role="dialog" aria-labelledby="connect-title">
<div class="modal-card">
<button type="button" class="modal-close" id="btn-connect-close" aria-label="Close">×</button>
<div class="modal-brand">
<img src="/dell.png" alt="Dell" width="36" height="36" />
<div>
<p class="modal-kicker">Quick Connect</p>
<h2 id="connect-title">Device</h2>
<p class="modal-sub" id="connect-sub"></p>
</div>
</div>
<div class="modal-badges" id="connect-badges"></div>
<div class="modal-context" id="connect-context"></div>
<div class="connect-grid" id="connect-grid"></div>
<p class="modal-foot">iDRAC opens in a new tab · SSH = in-browser terminal · RDP = popout for Windows (local client)</p>
</div>
</div>
<div class="modal hidden" id="idrac-console-modal" aria-hidden="true" role="dialog" aria-labelledby="idrac-console-title">
<div class="modal-card idrac-console-card">
<button type="button" class="modal-close" id="btn-idrac-console-close" aria-label="Close">×</button>
<div class="modal-brand">
<img src="/dell.png" alt="Dell" width="36" height="36" />
<div>
<p class="modal-kicker">iDRAC console</p>
<h2 id="idrac-console-title">Console</h2>
<p class="modal-sub" id="idrac-console-sub"></p>
</div>
</div>
<div class="idrac-console-toolbar">
<button type="button" class="btn primary" id="btn-idrac-popout">Open popout</button>
<button type="button" class="btn ghost" id="btn-idrac-web">iDRAC Web</button>
<button type="button" class="btn ghost" id="btn-idrac-reload">Reload embed</button>
</div>
<p class="hint" id="idrac-console-note"></p>
<div class="idrac-console-frame-wrap">
<iframe id="idrac-console-frame" title="iDRAC console" allow="fullscreen; clipboard-read; clipboard-write" referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
</div>
</div>
<div class="modal hidden" id="ssh-modal" aria-hidden="true" role="dialog" aria-labelledby="ssh-device">
<div class="modal-card ssh-card">
<button type="button" class="modal-close" id="btn-ssh-close" aria-label="Close">×</button>
<div class="modal-brand">
<img src="/dell.png" alt="Dell" width="36" height="36" />
<div>
<p class="modal-kicker">SSH terminal</p>
<h2 id="ssh-device">SSH session</h2>
<p class="modal-sub" id="ssh-sub"></p>
</div>
</div>
<p class="ssh-status" id="ssh-status">Enter username and password, then Connect.</p>
<form class="ssh-login" id="ssh-login" autocomplete="on">
<div class="ssh-grid">
<label>Host
<input type="text" id="ssh-host" name="host" autocomplete="off" spellcheck="false" />
</label>
<label>Port
<input type="number" id="ssh-port" name="port" value="22" min="1" max="65535" />
</label>
<label>Username
<input type="text" id="ssh-user" name="username" autocomplete="username" spellcheck="false" placeholder="your account (not root)" />
</label>
<label>Password
<input type="password" id="ssh-pass" name="password" autocomplete="current-password" placeholder="••••••••" />
</label>
</div>
<div class="ssh-actions">
<button type="submit" class="btn primary" id="ssh-connect-btn">Connect</button>
<button type="button" class="btn ghost" id="btn-ssh-disconnect">Disconnect</button>
</div>
</form>
<div class="ssh-term-wrap hidden" id="ssh-term-wrap">
<div id="ssh-term" class="ssh-term"></div>
</div>
</div>
</div>
<script src="/vendor/xterm/xterm.min.js?v=home1"></script>
<script src="/vendor/xterm/xterm-addon-fit.min.js?v=home1"></script>
<script src="/app.js?v=power5"></script>
<script src="/ops.js?v=opsfde6"></script>
<script src="/ssh.js?v=fabric4"></script>
<script src="/rdp.js?v=fabric4"></script>
<script src="/reports.js?v=anctx1"></script>
<script src="/network.js?v=vlanall1"></script>
<script src="/console.js?v=console2"></script>
<script src="/team.js?v=team6"></script>
<script src="/present.js?v=present20"></script>
</body>
</html>