diff --git a/README.md b/README.md index 5bdf5e1..21a3834 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Control은 라즈베리파이/리눅스 호스트의 팬과 시스템 상태를 - PWM slider 기반 수동 팬 제어 - CPU/RP1 온도, 팬 RPM, 팬 효율, CPU 전력, 배터리 상태 차트 - WiFi client 목록과 2.4G/5G client 수 표시 -- WiFi/DHCP service restart 버튼 +- WiFi client 상태 표시 - System Notice와 process CPU/MEM 후보 표시 - dmesg 로그 열람 - Web Push 구독 등록, 자동 복구, 구독 기기 목록 표시 @@ -84,4 +84,3 @@ Control은 라즈베리파이/리눅스 호스트의 팬과 시스템 상태를 - 하드웨어 또는 OS 변경 후 fan sysfs 경로를 확인합니다. - WebSocket 장기 실행 중 DB 연결이 끊길 수 있으므로 reconnect 로그를 확인합니다. - Push 구독 자동 복구가 과도한 반복 등록을 만들지 않는지 확인합니다. - diff --git a/public/assets/app.js b/public/assets/app.js index ba0a084..dc29bc4 100644 --- a/public/assets/app.js +++ b/public/assets/app.js @@ -1041,23 +1041,6 @@ } } - async function wifiAction(button) { - try { - button.disabled = true; - notice('Applying WiFi command...', 'info'); - render(await api('wifi', { - unit: button.dataset.wifiUnit, - verb: button.dataset.wifiAction, - })); - notice('WiFi command completed', 'success'); - } catch (e) { - console.error(e); - notice(e.message || 'wifi command failed', 'error'); - } finally { - button.disabled = false; - } - } - if (els.fanSlider && els.fanSliderValue) { els.fanSlider.addEventListener('input', () => { markFanDirty(); @@ -1078,9 +1061,6 @@ fanApply(input.value, pwm, true); }); }); - document.querySelectorAll('[data-wifi-action]').forEach(button => { - button.addEventListener('click', () => wifiAction(button)); - }); els.dmesgToggle?.addEventListener('click', () => { setDmesgOpen(!state.dmesgOpen); }); diff --git a/public/index.php b/public/index.php index 4b190d7..59e3607 100644 --- a/public/index.php +++ b/public/index.php @@ -101,7 +101,6 @@ a{color:inherit;text-decoration:none} .slider-wrap{display:flex;gap:12px;align-items:center}.slider-wrap[hidden]{display:none}.slider{width:100%;accent-color:var(--blue)} .select:focus,.slider:focus{outline:2px solid rgba(59,130,246,.65);outline-offset:2px} .btn:disabled{opacity:.55;cursor:not-allowed} -.wifi-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.wifi-actions .btn{min-height:48px;padding:6px 10px;flex-direction:column;gap:2px}.btn-line{display:block} .status-list{display:grid;gap:10px}.status-row{display:grid;grid-template-columns:112px minmax(0,1fr);gap:12px;align-items:baseline;padding:10px 12px;background:var(--card2);border-radius:14px}.status-key{color:var(--sub);font-size:13px}.status-value{overflow:visible;white-space:normal;word-break:break-word;font-variant-numeric:tabular-nums} .table-wrap{max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;border-radius:16px;border:1px solid var(--line)}.wifi-table{width:100%;min-width:1080px;table-layout:fixed;border-collapse:collapse}.wifi-table th,.wifi-table td{padding:11px 13px;border-bottom:1px solid rgba(255,255,255,.06);text-align:left;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wifi-table th{position:sticky;top:0;background:#1d2330;z-index:1;font-weight:500}.wifi-table tr:hover{background:rgba(255,255,255,.03)}.wifi-table .col-band{width:72px}.wifi-table .col-host{width:240px}.wifi-table .col-ip{width:132px}.wifi-table .col-mac{width:170px}.wifi-table .col-signal{width:100px}.wifi-table .col-rate{width:120px}.wifi-table .col-time{width:130px} .chart-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.chart-box{height:280px;background:#11151d;border:1px solid rgba(84,101,128,.58);border-radius:16px;padding:12px 12px 18px}.chart-box h3{margin:0 0 8px;color:#c6d3e6;font-size:13px}.chart-canvas{position:relative;height:calc(100% - 27px);min-height:0}.chart-canvas canvas{width:100%!important;height:100%!important} @@ -109,7 +108,7 @@ a{color:inherit;text-decoration:none} .resource-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.resource-box{min-width:0}.resource-box h3{margin:0 0 9px;color:#c6d3e6;font-size:14px;font-weight:500}.resource-table{width:100%;min-width:620px;table-layout:fixed;border-collapse:collapse;border:1px solid var(--line);border-radius:14px;overflow:hidden}.resource-table th,.resource-table td{padding:9px 10px;border-bottom:1px solid rgba(255,255,255,.06);background:#11151d;text-align:left;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resource-table th{background:#1d2330;color:#c6d3e6;font-weight:500}.resource-table .pid{width:72px}.resource-table .metric{width:82px}.resource-table .service{width:150px}.resource-table .cmd{width:auto}.push-device-list{display:grid;gap:8px;margin-top:8px}.push-device-row{padding:10px 12px;border:1px solid rgba(84,101,128,.58);background:#11151d;border-radius:12px}.push-device-main{min-width:0;color:var(--sub);font-size:12px;line-height:1.45;display:grid;gap:2px;word-break:break-all}.push-device-main strong{color:#edf1f7;font-size:13px} .notice{position:fixed;right:20px;bottom:20px;min-width:220px;max-width:420px;padding:14px 16px;border-radius:14px;font-weight:500;background:#1d2330;border:1px solid var(--line);box-shadow:var(--shadow);z-index:99}.notice:empty{display:none}.notice[data-type=success]{border-color:rgba(53,196,107,.5)}.notice[data-type=error]{border-color:rgba(255,95,87,.5)} @media(max-width:1320px){.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}} -@media(max-width:1100px){.layout{grid-template-columns:1fr}.chart-grid,.resource-grid{grid-template-columns:1fr}.wifi-actions{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}.topbar-right{width:100%}.topbar-right .btn{flex:1}.stat-grid{grid-template-columns:1fr}.resource-head{align-items:flex-start;flex-direction:column}.baseline-pill{text-align:left;white-space:normal}} +@media(max-width:1100px){.layout{grid-template-columns:1fr}.chart-grid,.resource-grid{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}.topbar-right{width:100%}.topbar-right .btn{flex:1}.stat-grid{grid-template-columns:1fr}.resource-head{align-items:flex-start;flex-direction:column}.baseline-pill{text-align:left;white-space:normal}} @@ -171,12 +170,6 @@ a{color:inherit;text-decoration:none}
2.4G Clients
-
5G Clients
-
-
-
- - - -
@@ -288,7 +281,7 @@ a{color:inherit;text-decoration:none}
- +