first commit
This commit is contained in:
118
renderer.js
Normal file
118
renderer.js
Normal file
@@ -0,0 +1,118 @@
|
||||
// Check if window.electronAPI exists
|
||||
if (window.electronAPI) {
|
||||
document.getElementById('close-btn').addEventListener('click', () => {
|
||||
window.electronAPI.windowControl('close');
|
||||
});
|
||||
|
||||
document.getElementById('minimize-btn').addEventListener('click', () => {
|
||||
window.electronAPI.windowControl('minimize');
|
||||
});
|
||||
}
|
||||
|
||||
// Logic for View Switching
|
||||
const views = {
|
||||
main: document.getElementById('view-main'),
|
||||
custom: document.getElementById('view-custom'),
|
||||
progress: document.getElementById('view-progress'),
|
||||
config: document.getElementById('view-config')
|
||||
};
|
||||
|
||||
function switchView(viewName) {
|
||||
Object.values(views).forEach(v => v.classList.remove('active'));
|
||||
views[viewName].classList.add('active');
|
||||
}
|
||||
|
||||
// Main View Handlers
|
||||
document.getElementById('btn-custom-install').addEventListener('click', () => {
|
||||
switchView('custom');
|
||||
});
|
||||
|
||||
document.getElementById('btn-install-now').addEventListener('click', () => {
|
||||
startInstallation();
|
||||
});
|
||||
|
||||
// Custom View Handlers
|
||||
document.getElementById('btn-back-main').addEventListener('click', () => {
|
||||
switchView('main');
|
||||
});
|
||||
|
||||
document.getElementById('btn-install-start').addEventListener('click', () => {
|
||||
startInstallation();
|
||||
});
|
||||
|
||||
document.getElementById('btn-change-path').addEventListener('click', async () => {
|
||||
if (window.electronAPI) {
|
||||
const path = await window.electronAPI.selectDirectory();
|
||||
if (path) {
|
||||
document.getElementById('install-path').value = path;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Installation Process Simulation
|
||||
function startInstallation() {
|
||||
switchView('progress');
|
||||
const fill = document.getElementById('progress-fill');
|
||||
const text = document.getElementById('progress-text');
|
||||
|
||||
let progress = 0;
|
||||
const interval = setInterval(() => {
|
||||
progress += Math.random() * 15;
|
||||
if (progress >= 100) {
|
||||
progress = 100;
|
||||
clearInterval(interval);
|
||||
setTimeout(() => {
|
||||
switchView('config');
|
||||
}, 500);
|
||||
}
|
||||
fill.style.width = progress + '%';
|
||||
text.innerText = `正在安装文件... ${Math.floor(progress)}%`;
|
||||
}, 300);
|
||||
}
|
||||
|
||||
// Config View Handlers
|
||||
document.getElementById('btn-change-workdir').addEventListener('click', async () => {
|
||||
if (window.electronAPI) {
|
||||
const path = await window.electronAPI.selectDirectory();
|
||||
if (path) {
|
||||
document.getElementById('work-dir').value = path;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Service selection logic
|
||||
const cards = document.querySelectorAll('.service-card');
|
||||
cards.forEach(card => {
|
||||
card.addEventListener('click', () => {
|
||||
cards.forEach(c => c.classList.remove('active'));
|
||||
card.classList.add('active');
|
||||
});
|
||||
});
|
||||
|
||||
document.getElementById('btn-test-api').addEventListener('click', () => {
|
||||
const btn = document.getElementById('btn-test-api');
|
||||
const originalText = btn.innerText;
|
||||
btn.innerText = '验证中...';
|
||||
btn.disabled = true;
|
||||
|
||||
// Simulate API testing
|
||||
setTimeout(() => {
|
||||
btn.innerText = '验证通过';
|
||||
btn.style.backgroundColor = '#40c057';
|
||||
btn.style.color = 'white';
|
||||
document.getElementById('btn-finish').disabled = false;
|
||||
|
||||
setTimeout(() => {
|
||||
btn.innerText = originalText;
|
||||
btn.style.backgroundColor = '';
|
||||
btn.style.color = '';
|
||||
btn.disabled = false;
|
||||
}, 2000);
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
document.getElementById('btn-finish').addEventListener('click', () => {
|
||||
if (window.electronAPI) {
|
||||
window.electronAPI.windowControl('close'); // or launch main app
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user