// main.js const { app, BrowserWindow, ipcMain, dialog } = require('electron'); const path = require('path'); const { runBypivot } = require('./bypivot.js'); const { runBydep } = require('./bydep.js'); const { runBywork } = require('./bywork.js'); const scriptRunners = { 'bypivot.js': { runner: runBypivot, defaultName: 'output_แผนงานในการขอซื้อของจ้าง.xlsx' }, 'bydep.js': { runner: runBydep, defaultName: 'output_แผนกวิชา.xlsx' }, 'bywork.js': { runner: runBywork, defaultName: 'output_งาน.xlsx' }, }; function createWindow() { const win = new BrowserWindow({ width: 650, height: 450, webPreferences: { nodeIntegration: true, contextIsolation: false, }, }); win.loadFile(path.join(__dirname, 'index.html')); // win.webContents.openDevTools(); } ipcMain.handle('select-file', async () => { const result = await dialog.showOpenDialog({ title: 'เลือกไฟล์ Excel', filters: [{ name: 'Excel Files', extensions: ['xlsx'] }], properties: ['openFile'] }); if (result.canceled || result.filePaths.length === 0) { return null; } return result.filePaths[0]; }); // ✅ ส่วนรันสคริปต์ที่ปรับปรุงใหม่ + เพิ่ม Save Dialog ipcMain.handle('run-script', async (_, { script, filePath }) => { const scriptInfo = scriptRunners[script]; if (!scriptInfo) { throw new Error(`ไม่พบสคริปต์สำหรับ: ${script}`); } // 🚀 แสดงหน้าต่าง Save Dialog const saveResult = await dialog.showSaveDialog({ title: 'เลือกตำแหน่งที่จะบันทึกไฟล์', defaultPath: scriptInfo.defaultName, filters: [{ name: 'Excel Files', extensions: ['xlsx'] }] }); // ถ้าผู้ใช้ไม่เลือกที่บันทึก ให้ยกเลิก if (saveResult.canceled || !saveResult.filePath) { return 'ยกเลิกการบันทึก'; // ส่งข้อความกลับไปบอกสถานะ } const outputPath = saveResult.filePath; // เรียกใช้ฟังก์ชันโดยตรงและส่งทั้ง input และ output path return scriptInfo.runner(filePath, outputPath); }); app.whenReady().then(createWindow);