Files
quectel-rgmii-toolkit/www/js/advance/ttl-control.js
2024-10-06 08:00:12 +08:00

94 lines
3.6 KiB
JavaScript

// TTL Control functionality
const TTLControl = {
async getCurrentState() {
try {
const response = await fetch('/cgi-bin/advance/ttl.sh');
const data = await response.json();
return {
isEnabled: data.isEnabled,
currentValue: data.currentValue || 0
};
} catch (error) {
console.error('Error fetching TTL state:', error);
return { isEnabled: false, currentValue: 0 };
}
},
async setTTLValue(value) {
try {
const response = await fetch('/cgi-bin/advance/ttl.sh', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: `ttl=${value}`
});
const result = await response.json();
return result.success;
} catch (error) {
console.error('Error setting TTL value:', error);
return false;
}
},
updateUI(isEnabled, value) {
const stateInput = document.getElementById('ttl-state');
const valueInput = document.getElementById('ttl-current-value');
const stateIcon = stateInput.nextElementSibling.querySelector('i');
const valueIcon = valueInput.nextElementSibling.querySelector('i');
// Update State UI
if (isEnabled) {
// Enabled state
stateInput.value = 'Enabled';
stateInput.classList.remove('has-text-warning', 'is-danger');
stateInput.classList.add('has-text-success', 'has-text-weight-bold');
stateIcon.classList.remove('fa-exclamation-triangle', 'has-text-warning');
stateIcon.classList.add('fa-check', 'has-text-success');
} else {
// Disabled state
stateInput.value = 'Disabled';
stateInput.classList.remove('has-text-success', 'is-danger');
stateInput.classList.add('has-text-warning', 'has-text-weight-bold');
stateIcon.classList.remove('fa-check', 'has-text-success');
stateIcon.classList.add('fa-exclamation-triangle', 'has-text-warning');
}
// Update Value UI
valueInput.value = value.toString();
valueInput.classList.add('has-text-weight-bold', 'has-text-white');
if (isEnabled) {
valueIcon.classList.remove('fa-exclamation-triangle', 'has-text-warning');
valueIcon.classList.add('fa-check', 'has-text-success');
} else {
valueIcon.classList.remove('fa-check', 'has-text-success');
valueIcon.classList.add('fa-exclamation-triangle', 'has-text-warning');
}
}
};
// Event Listeners
document.addEventListener('DOMContentLoaded', async function() {
// Initial state fetch
const { isEnabled, currentValue } = await TTLControl.getCurrentState();
TTLControl.updateUI(isEnabled, currentValue);
// Submit button event listener
document.getElementById('ttl-submit').addEventListener('click', async function() {
const newValue = document.getElementById('ttl-set-value').value;
const numValue = parseInt(newValue);
if (isNaN(numValue) || numValue < 0) {
alert('Please enter a valid TTL value (0 or positive number)');
return;
}
const success = await TTLControl.setTTLValue(numValue);
if (success) {
TTLControl.updateUI(numValue !== 0, numValue);
alert('TTL settings updated successfully');
} else {
alert('Failed to update TTL settings');
}
});
});