Files
TRIMSP/TrimSPelec.js

134 lines
3.6 KiB
JavaScript

// This file contains function that are Electron/Node.JS specific
// Load required packages
const Plotly = require('plotly.js-dist');
const ipcRenderer = require('electron').ipcRenderer;
const fs = require('fs');
const exec = require('child_process').execSync;
const remote = require('electron').remote;
function getFiles(dir, filelist){
fileList = [];
var files = fs.readdirSync(dir);
for(var i of files){
if (!files.hasOwnProperty(i)) continue;
var name = dir+'/'+files[i];
if (!fs.statSync(name).isDirectory()){
fileList.push(name);
}
}
return fileList;
}
function execute(command) {
exec(command, {stdio: 'inherit'});
}
function checkDir(directory) {
// Check whether directory exists, if not create it
if (!fs.existsSync(directory)) {
// Folder does not exist try to create it
fs.mkdir(directory,{recursive: true}, (err) => {
if (err) {
alert('Cannot create data folder '+directory);
return(0);
}
});
}
return(1);
}
function writeAsciiFile(filename,content) {
// Write string content into ascii file filename
try { fs.writeFileSync(filename, content, 'utf-8'); }
catch(e) {
alert('Failed to save '+filename);
return(0);
}
return(1);
}
function readAsciiFile(filename) {
// Read ascii file filename and return content in a string
var content;
// If an array of filenames was sent take the first one only
if (Array.isArray(filename)) {filename=filename[0];}
try {
content = fs.readFileSync(filename, 'utf8');
} catch(e) {
alert('Failed to read '+filename);
return(0);
}
return(content);
}
function fileExists(filename) {
try {
if (fs.existsSync(filename)) {
return 1;
}
}catch(err) {
console.log(err);
}
return 0;
}
function firstLoad() {
document.getElementById("trimPath").value = remote.getGlobal('path');
// Catch calls for open file
ipcRenderer.on('openFile', function(event, filename) {
console.log('Open file '+filename);
fs.readFile(filename.toString(), function read(err, data) {
if (err) {
throw err;
}
setValues(data);
});
});
// Catch calls for selectfolder
ipcRenderer.on('selectFolder', function(event, foldername) {
if (foldername.length != 0) {
document.getElementById("workPath").value = foldername[0];
// Change process directory
process.chdir(foldername[0]);
}
console.log("currentdir",process.cwd());
});
// Catch calls for save as
ipcRenderer.on('saveFile', function(event, filename) {
// If filename is empty use default value
if (filename == '') {filename='TrimSP.cfg';}
// Get values from all fields and prepare config file
let trimSPcfg=prep_cfg(0);
// Save file to filename
console.log('Save file to '+filename);
try { fs.writeFileSync(filename, trimSPcfg, 'utf-8'); }
catch(e) { alert('Failed to save the file !'); }
});
// Catch calls for plotProf
ipcRenderer.on('plotProf', function(event, filename) {
console.log("filename="+filename);
plotProfiles(filename);
});
// Catch calls for plotFrac
ipcRenderer.on('plotFrac', function(event, filename) {
console.log("filename="+filename);
plotFractions(filename);
});
// Catch calls for plotMean
ipcRenderer.on('plotMean', function(event, filename) {
console.log("filename="+filename);
plotMean(filename);
});
// Catch clicks for Browse button
ipcRenderer.on('browseFolder', function(event, foldername) {
if (foldername.length != 0) {
document.getElementById("workPath").value = foldername[0];
// Change process directory
process.chdir(foldername[0]);
}
});
}