secubox-openwrt/luci-app-network-modes/htdocs/luci-static/resources/network-modes/helpers.js
CyberMind-FR 562ac55fe1 feat(network-modes): Prepare v0.3.5 implementation foundation
- Version bump to 0.3.5 in Makefile and README
- Add helpers.js utility module for common UI operations
- Expand API with new RPC method declarations
- Enhance view files with improved functionality:
  - accesspoint.js: Enhanced WiFi configuration options
  - relay.js: WireGuard setup improvements
  - router.js: Expanded proxy and vhost settings
  - sniffer.js: Enhanced capture configuration
  - wizard.js: Improved mode selection flow
- RPCD backend enhancements (+176 lines)
- Add deployment script for easier testing

Claude settings: Update permissions for network-modes work

Preparation for implementing features documented in CODEX-v0.3.5.md
2025-12-28 14:25:50 +01:00

60 lines
1.7 KiB
JavaScript

'use strict';
'require ui';
'require network-modes.api as api';
function isToggleActive(node) {
return !!(node && node.classList.contains('active'));
}
function persistSettings(mode, payload) {
ui.showModal(_('Saving settings...'), [
E('p', { 'class': 'spinning' }, _('Applying configuration changes...'))
]);
return api.updateSettings(mode, payload).then(function(result) {
ui.hideModal();
if (result && result.success) {
ui.addNotification(null, E('p', {}, result.message || _('Settings updated')), 'info');
} else {
ui.addNotification(null, E('p', {}, (result && result.error) || _('Failed to update settings')), 'error');
}
}).catch(function(err) {
ui.hideModal();
ui.addNotification(null, E('p', {}, err.message || err), 'error');
});
}
function showGeneratedConfig(mode) {
ui.showModal(_('Generating configuration...'), [
E('p', { 'class': 'spinning' }, _('Building configuration preview...'))
]);
return api.generateConfig(mode).then(function(result) {
ui.hideModal();
if (!result || !result.config) {
ui.addNotification(null, E('p', {}, _('No configuration data returned')), 'error');
return;
}
ui.showModal(_('Configuration Preview'), [
E('pre', { 'class': 'nm-config-preview' }, result.config),
E('div', { 'class': 'right', 'style': 'margin-top: 16px;' }, [
E('button', {
'class': 'cbi-button cbi-button-positive',
'click': ui.hideModal
}, _('Close'))
])
]);
}).catch(function(err) {
ui.hideModal();
ui.addNotification(null, E('p', {}, err.message || err), 'error');
});
}
return {
isToggleActive: isToggleActive,
persistSettings: persistSettings,
showGeneratedConfig: showGeneratedConfig
};