MCPcopy Create free account
hub / github.com/cppla/ServerStatus / bindAdmin

Function bindAdmin

web/js/app.js:807–863  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

805 }
806}
807function bindAdmin(){
808 $('adminToken').value = S.admin.token;
809 $('adminTokenForm').addEventListener('submit', async e => {
810 e.preventDefault();
811 S.admin.token = $('adminToken').value.trim();
812 localStorage.setItem('serverstatusAdminToken', S.admin.token);
813 try{ await loadConfig(); }catch(err){ setAdminStatus('认证失败:' + err.message, 'err'); }
814 });
815 $('refreshConfigBtn').addEventListener('click', async () => { try{ await loadConfig(); }catch(err){ setAdminStatus('刷新失败:' + err.message, 'err'); } });
816 $('configTypeTabs').addEventListener('click', e => {
817 if(e.target.tagName !== 'BUTTON') return;
818 S.admin.selectedType = e.target.dataset.type;
819 S.admin.selectedIndex = -1;
820 renderConfigList();
821 renderConfigEditor();
822 });
823 $('addConfigItemBtn').addEventListener('click', clearConfigForm);
824 $('resetConfigFormBtn').addEventListener('click', clearConfigForm);
825 $('adminReload').addEventListener('click', async () => {
826 try{ await api('/api/reload', { method:'POST' }); setAdminStatus('配置重载已触发。', 'ok'); }
827 catch(err){ setAdminStatus('重载失败:' + err.message, 'err'); }
828 });
829 $('adminRestart').addEventListener('click', async () => {
830 if(!confirm('重启 sergate 采集服务?客户端会短暂断开后自动重连。')) return;
831 try{ await api('/api/restart', { method:'POST' }); setAdminStatus('服务重启已触发,等待容器入口脚本拉起 sergate。', 'ok'); }
832 catch(err){ setAdminStatus('重启失败:' + err.message, 'err'); }
833 });
834 $('configForm').addEventListener('submit', async e => {
835 e.preventDefault();
836 const def = activeConfigDef();
837 const key = S.admin.selectedType;
838 const item = formConfigItem();
839 const index = S.admin.selectedIndex;
840 try{
841 await saveConfigItem(key, index, item);
842 S.admin.selectedIndex = index >= 0 ? index : configItems().length - 1;
843 renderConfigList();
844 renderConfigEditor(configItems()[S.admin.selectedIndex]);
845 setAdminStatus(`${def.label}配置已保存并重载。`, 'ok');
846 }catch(err){ setAdminStatus('保存失败:' + err.message, 'err'); }
847 });
848 $('deleteConfigItemBtn').addEventListener('click', async () => {
849 const def = activeConfigDef();
850 const key = S.admin.selectedType;
851 const index = S.admin.selectedIndex;
852 if(index < 0) return setAdminStatus(`请先选择要删除的${def.label}。`, 'err');
853 const item = configItems()[index];
854 if(!confirm(`删除${def.label} ${def.title(item, index)}?`)) return;
855 try{
856 await deleteConfigItem(key, index);
857 S.admin.selectedIndex = -1;
858 renderConfigList();
859 renderConfigEditor();
860 setAdminStatus(`${def.label}配置已删除并重载。`, 'ok');
861 }catch(err){ setAdminStatus('删除失败:' + err.message, 'err'); }
862 });
863}
864

Callers 1

app.jsFile · 0.85

Calls 11

$Function · 0.85
loadConfigFunction · 0.85
setAdminStatusFunction · 0.85
renderConfigListFunction · 0.85
renderConfigEditorFunction · 0.85
apiFunction · 0.85
activeConfigDefFunction · 0.85
formConfigItemFunction · 0.85
saveConfigItemFunction · 0.85
configItemsFunction · 0.85
deleteConfigItemFunction · 0.85

Tested by

no test coverage detected