MCPcopy Create free account
hub / github.com/PierreGode/Ragnar / loadTrafficPortActivity

Function loadTrafficPortActivity

web/scripts/ragnar_modern.js:16338–16485  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

16336 <span class="text-[10px] px-2 py-0.5 rounded ${roleClass}">${formatInterfaceRole(entry.role)}</span>
16337 ${focusChip}
16338 </div>
16339 <div class="text-[11px] text-gray-400">${connectionLabel}</div>
16340 </div>
16341 <button type="button" class="${buttonClasses}" data-interface="${escapeHtml(entry.name || '')}" data-scan-state="${scanning ? 'enabled' : 'disabled'}">${buttonLabel}</button>
16342 </div>
16343 <div class="text-[11px] ${scanClass}">${scanNote}${ipLabel}</div>
16344 </div>
16345 `;
16346 }).join('');
16347
16348 listEl.querySelectorAll('button[data-interface]').forEach(button => {
16349 button.addEventListener('click', handleScanControlToggle);
16350 });
16351
16352 updateMultiInterfaceModeControls(state);
16353}
16354
16355function updateMultiInterfaceModeControls(state) {
16356 const buttonsContainer = document.getElementById('wifi-multi-mode-buttons');
16357 const focusWrapper = document.getElementById('wifi-multi-focus-controls');
16358 const focusSelect = document.getElementById('wifi-multi-focus-select');
16359 if (!buttonsContainer || !focusWrapper || !focusSelect) {
16360 return;
16361 }
16362
16363 const activeMode = (state && state.scan_mode) ? state.scan_mode.toLowerCase() : 'single';
16364 const focusInterface = state && state.focus_interface ? state.focus_interface : '';
16365 const interfaces = state && Array.isArray(state.interfaces) ? state.interfaces : [];
16366
16367 const buttons = buttonsContainer.querySelectorAll('button[data-mode]');
16368 buttons.forEach(button => {
16369 const mode = button.dataset.mode;
16370 if (!mode) {
16371 return;
16372 }
16373 const isActive = mode === activeMode;
16374 button.classList.toggle('bg-Ragnar-500', isActive);
16375 button.classList.toggle('border-Ragnar-400', isActive);
16376 button.classList.toggle('text-white', isActive);
16377 button.classList.toggle('shadow-md', isActive);
16378 button.classList.toggle('bg-slate-800', !isActive);
16379 button.classList.toggle('border-slate-600', !isActive);
16380 button.classList.toggle('text-gray-300', !isActive);
16381 button.onclick = async () => {
16382 if (button.dataset.busy === 'true' || mode === activeMode) {
16383 return;
16384 }
16385 await setMultiInterfaceMode(mode, button);
16386 };
16387 });
16388
16389 const shouldShowFocus = activeMode === 'single';
16390 focusWrapper.classList.toggle('hidden', !shouldShowFocus);
16391
16392 const uniqueOptions = interfaces
16393 .filter(entry => entry && entry.name)
16394 .map(entry => ({
16395 name: entry.name,

Callers 1

loadTrafficAnalysisDataFunction · 0.70

Calls 6

addMethod · 0.80
sortMethod · 0.80
errorMethod · 0.80
updateElementFunction · 0.70
escapeHtmlFunction · 0.70
keysMethod · 0.45

Tested by

no test coverage detected