{% extends "base.html" %} {% block title %}Correlation Graph — SignalOps{% endblock %} {% block extra_style %} [hidden]{display:none!important} .gr-top{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:14px} .gr-top .section-hdr{margin-bottom:0} .gr-sub{font-size:10px;letter-spacing:1px;color:var(--tm);text-transform:none;font-family:'JetBrains Mono',monospace;font-weight:400} .gr-btn{font-family:'Rajdhani',sans-serif;font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;cursor:pointer; border-radius:6px;padding:5px 11px;background:transparent;color:var(--td);border:1px solid rgba(255,255,255,0.12); text-decoration:none;display:inline-flex;align-items:center;gap:4px;white-space:nowrap;line-height:1.3} .gr-btn:hover{color:var(--t);border-color:rgba(138, 122, 184,0.4)} .gr-btn:disabled{opacity:.4;cursor:not-allowed} .gr-btn.p{color:var(--pl);border-color:rgba(138, 122, 184,0.35);background:rgba(138, 122, 184,0.08)} .gr-btn.g{color:var(--g);border-color:rgba(116, 176, 149,0.3);background:rgba(116, 176, 149,0.06)} .gr-ctl{padding:14px 16px} .gr-form{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(180px,2fr) 80px 96px 96px auto;gap:10px;align-items:end} .gr-f label,.gr-lbl{display:block;font-size:9px;letter-spacing:2px;color:var(--tm);text-transform:uppercase;margin-bottom:4px} .gr-f input,.gr-f select{padding:7px 10px} .gr-row2{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--b)} .gr-kinds{display:flex;gap:4px;flex-wrap:wrap;align-items:center} .gr-chk{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--td);border:1px solid rgba(255,255,255,0.08); border-radius:12px;padding:3px 9px;cursor:pointer;user-select:none;white-space:nowrap} .gr-chk input{width:auto;margin:0;accent-color:var(--p)} .gr-chk:has(input:checked){color:var(--t);border-color:rgba(138, 122, 184,0.45);background:rgba(138, 122, 184,0.1)} .gr-chk i{width:14px;height:0;border-top:2px solid;display:inline-block} .gr-chk i.dash{border-top-style:dashed} .gr-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start} .gr-card{padding:0;overflow:hidden;position:relative;margin-bottom:0} .gr-tools{display:flex;gap:6px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--b);flex-wrap:wrap} .gr-tools input{flex:1 1 180px;min-width:0;padding:6px 10px} .gr-hits{font-size:10px;color:var(--tm);white-space:nowrap} #gr-cy{height:calc(100vh - 330px);min-height:460px;background:radial-gradient(ellipse at center,#101015 0%,#0B0B0F 75%)} #gr-legend{position:absolute;left:10px;bottom:10px;z-index:5;background:rgba(11, 11, 15,0.88);border:1px solid var(--b);border-radius:6px; padding:6px 10px;font-size:10px;color:var(--td);display:flex;gap:4px 12px;flex-wrap:wrap;max-width:calc(100% - 20px);pointer-events:none} #gr-legend span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap} .gr-sw{width:10px;height:10px;display:inline-block;flex-shrink:0} .gr-sw.c{border-radius:50%}.gr-sw.d{transform:rotate(45deg) scale(.8)}.gr-sw.r{border-radius:2px} .gr-sw.t{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:10px solid;background:none!important} #gr-status{position:absolute;right:10px;top:54px;z-index:5;font-size:10px;color:var(--td);background:rgba(11, 11, 15,0.85); border:1px solid var(--b);border-radius:6px;padding:5px 9px;max-width:calc(100% - 20px);pointer-events:none} #gr-status.warn{color:var(--warn);border-color:rgba(201, 161, 90,0.3)} #gr-status.err{color:var(--danger);border-color:rgba(199, 123, 123,0.3)} .gr-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 20px;color:var(--tm); position:absolute;inset:46px 0 0 0;z-index:6;background:rgba(11, 11, 15,0.92)} .gr-empty .ic{font-size:40px;opacity:.25;margin-bottom:12px} .gr-empty .t{font-family:'Rajdhani',sans-serif;letter-spacing:3px;color:var(--td);font-size:15px} .gr-empty .s{font-size:11px;margin:8px 0 14px;max-width:420px;line-height:1.6} .gr-panel{padding:16px;max-height:calc(100vh - 230px);overflow-y:auto;margin-bottom:0} .gr-h1{font-family:'Rajdhani',sans-serif;font-size:20px;font-weight:700;color:var(--t);letter-spacing:.5px;overflow-wrap:anywhere;line-height:1.2} .gr-key{font-size:10px;color:var(--tm);overflow-wrap:anywhere;margin-top:4px} .gr-kick{font-size:9px;letter-spacing:2px;color:var(--tm);text-transform:uppercase;margin-bottom:4px} .gr-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px} .gr-stat{background:var(--e);border:1px solid var(--b);border-radius:6px;padding:8px 10px;min-width:0} .gr-stat .v{font-family:'Rajdhani',sans-serif;font-size:16px;font-weight:700;color:var(--t);overflow-wrap:anywhere} .gr-stat .l{font-size:9px;letter-spacing:1.5px;color:var(--td);opacity:.75;text-transform:uppercase;margin-top:2px} .gr-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px} .gr-sec{margin-top:16px} .gr-sec>h4{font-family:'Rajdhani',sans-serif;font-size:12px;font-weight:700;letter-spacing:2px;color:var(--td);text-transform:uppercase; margin-bottom:8px;display:flex;align-items:center;gap:8px} .gr-sec>h4::before{content:'';width:3px;height:12px;background:var(--p);border-radius:2px} .gr-kv{width:100%} .gr-kv td{padding:4px 6px;font-size:10px;overflow-wrap:anywhere;vertical-align:top} .gr-kv td:first-child{color:var(--tm);width:96px} .gr-chips{display:flex;flex-direction:column;gap:4px} .gr-nb{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left;background:var(--e);border:1px solid transparent; border-left:3px solid var(--tm);border-radius:5px;padding:6px 9px;cursor:pointer;color:var(--t);font-family:'JetBrains Mono',monospace;font-size:10px} .gr-nb:hover{border-color:rgba(138, 122, 184,0.35)} .gr-nb span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .gr-nb .w{color:var(--td);flex-shrink:0} .gr-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex-shrink:0} .gr-help{font-size:11px;color:var(--td);line-height:1.7;margin-top:12px} .gr-help b{color:var(--t);font-weight:500} @media (max-width:1200px){ .gr-form{grid-template-columns:repeat(3,minmax(0,1fr))} .gr-form .gr-f.wide{grid-column:span 2} } @media (max-width:900px){ .gr-grid{grid-template-columns:minmax(0,1fr)} #gr-cy{height:60vh;min-height:300px} .gr-panel{max-height:none} .gr-btn{min-height:32px} } @media (max-width:600px){ .gr-form{grid-template-columns:repeat(2,minmax(0,1fr))} .gr-form .gr-f.wide,.gr-form .gr-f.full{grid-column:1 / -1} .gr-ctl{padding:12px} #gr-legend{font-size:9px;gap:3px 8px;padding:5px 8px} #gr-status{position:static;display:block;margin:0 10px 10px;max-width:none} #gr-legend{display:none} .gr-legend-sm{display:flex!important} } .gr-legend-sm{display:none;gap:4px 10px;flex-wrap:wrap;font-size:9px;color:var(--td);padding:8px 10px;border-top:1px solid var(--b)} .gr-legend-sm span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap} {% endblock %} {% block content %}
Correlation Graph · devices · cases · shared SSID / subnet / LAC / org
← Cases
Scan kinds
Edges
Loading…
{% endblock %} {% block scripts %} {% endblock %}