first commit
This commit is contained in:
67
plan-app/main.js
Normal file
67
plan-app/main.js
Normal file
@@ -0,0 +1,67 @@
|
||||
// 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);
|
||||
Reference in New Issue
Block a user