123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- const path = require('path');
- const fs = require('fs')
- const csv = require('csv-parser')
- const prompt = require('electron-prompt');
- const createCsvWriter = require('csv-writer').createObjectCsvWriter;
- const { app, BrowserWindow } = require('electron');
- const { ipcMain } = require('electron')
- function createWindow() {
- // 创建浏览器窗口
- let win = new BrowserWindow({
- width: 800,
- height: 600,
- webPreferences: {
- nodeIntegration: true,
- contextIsolation: true,
- preload: path.join(__dirname, 'preload.js')
- }
- })
- win.webContents.openDevTools() // 打开开发者工具
- // 加载index.html文件
- win.loadFile('index.html');
- }
- app.on('ready', createWindow);
- ipcMain.on('parse-csv', (event, path) => {
- const results = []
- fs.createReadStream(path)
- .pipe(csv())
- .on('data', (data) => {
- results.push(data)
- })
- .on('end', () => {
- event.reply('csv-data', results)
- })
- })
- // 保存数据到csv文件
- ipcMain.on('save2csv', (event, path, data) => {
- // 保存数据到路径中
- // 如果数据为空,直接返回
- if (data.length === 0) {
- return;
- }
- // 从第一个数据对象中提取字段名
- const headers = Object.keys(data[0]).map(key => ({id: key, title: key}));
- const csvWriter = createCsvWriter({
- path: path,
- header: headers
- });
- csvWriter.writeRecords(data).then(() => {
- });
- })
- ipcMain.on('get-file-list', (event, dirPath) => {
- console.error('Will read directory: ', dirPath);
- fs.readdir(dirPath, (err, files) => {
- if (err) {
- console.error('Error reading directory: ', err);
- event.reply('file-list-error', err);
- } else {
- event.reply('file-list-data', files);
- }
- });
- });
- ipcMain.on('open-newlv-prompt', (event, arg) => {
- prompt({
- title: 'Prompt',
- label: '请输入关卡id:',
- value: '',
- inputAttrs: {
- type: 'text'
- },
- type: 'input'
- })
- .then((r) => {
- if(r === null) {
- console.log('user cancelled');
- } else {
- console.log('result', r);
- event.reply('prompt-newlv-reply', r);
- }
- })
- .catch(console.error);
- })
- ipcMain.on('open-newinst-prompt', (event, arg) => {
- prompt({
- title: 'Prompt',
- label: '请输入实例id:',
- value: '',
- inputAttrs: {
- type: 'text'
- },
- type: 'input'
- })
- .then((r) => {
- if(r === null) {
- console.log('user cancelled');
- } else {
- console.log('result', r);
- event.reply('prompt-newinst-reply', r);
- }
- })
- .catch(console.error);
- })
|