254 lines
9.1 KiB
HTML
254 lines
9.1 KiB
HTML
<!DOCTYPE html>
|
|
<html class="mcss">
|
|
<head>
|
|
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
|
|
<link rel="stylesheet" href="ZGUI.css">
|
|
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
|
|
<script src="TrimSPlib.js"></script>
|
|
<script src="TrimSPelec.js"></script>
|
|
<script src="myplots.js"></script>
|
|
<script type="text/javascript">
|
|
const ipcRenderer = require('electron').ipcRenderer;
|
|
const fs = require('fs');
|
|
const exec = require('child_process').execSync;
|
|
</script>
|
|
|
|
<title>Trim.SP</title>
|
|
</head>
|
|
<body onresize="resizePl()" onload="adjust_table();adjust_scans();">
|
|
<table style="width: 100%;">
|
|
<tr><td>
|
|
<div class="col-full">
|
|
<div class="tab">
|
|
<button class="tablinks" onclick="openTab(event,'Layers')" id="btnLayers">Layers</button>
|
|
<button class="tablinks" onclick="openTab(event,'Scans')" id="btnScans">Scans</button>
|
|
<button class="tablinks" onclick="openTab(event,'Plots')" id="btnPlots">Plots</button>
|
|
<button class="tablinks" onclick="openTab(event,'Other')" id="btnOther">Other Params</button>
|
|
</div>
|
|
<div id="Layers" class="tabcontent">
|
|
<table style="width: 100%;">
|
|
<tr>
|
|
<td style="vertical-align: top;">
|
|
<table cellpadding="5">
|
|
<tr>
|
|
<td><label>File name prefix:</label><input name="fileNamePrefix" id="fileNamePrefix" type="text" size="7" value="SrTiO3"/>
|
|
<label>saved in:</label><input type="text" id="workPath" name="workPath" value="/tmp/test" onchange="console.log(this.value);"/>
|
|
</tr>
|
|
<tr><td>
|
|
<b>Layers</b>
|
|
</td></tr>
|
|
<tr><td>
|
|
<label>Number of
|
|
Layers: </label><input name="numLayer" id="numLayer" type="number" size="3" step="1" min="1" max="100" value="1" onchange="adjust_table()">
|
|
</td></tr>
|
|
<tr><td>
|
|
<table id="LTable" border="2" cellpadding="10">
|
|
<tr><td><b>Layer #</b></td><td><b>Composition</b></td><td><b>Density [g/cm<sup>3</sup>]</b></td><td><b>Thickness [A]</b></td></tr>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
</td>
|
|
<td style="vertical-align: top;">
|
|
<table cellpadding="5">
|
|
<tr><td collspan="2"><b>Projectile parameters</b></td></tr>
|
|
<tr><td>Projectile</td>
|
|
<td><select name="ProjType" id="ProjType" onchange="ProjSmartDefaults()" onload="ProjSmartDefaults()">
|
|
<option selected="selected" value="Muon">Muon</option>
|
|
<option value="Li8">Li8</option>
|
|
<option value="B12">B12</option>
|
|
<option value="H">H</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr><td>Number of projectiles</td>
|
|
<td><input name="numberProj" id="numberProj" type="text" size="7" value="1000" onchange="//ProjNumberLimit()"></td>
|
|
</tr>
|
|
<tr><td>Starting depth [A]</td><td><input name="z0" id="z0" type="text" size="7" value="0"></td></tr>
|
|
<tr><td>Depth increment [A]</td><td><input name="dz" id="dz" type="text" size="7" value="20"></td></tr>
|
|
<tr><td>Energy [eV]</td><td><input name="valEnergy" id="valEnergy" type="text" size="7" value="2000"></td></tr>
|
|
<tr><td>Energy sigma [eV]</td><td><input name="sigEnergy" id="sigEnergy" type="text" size="7" value="450"></td></tr>
|
|
<tr><td>Angel [deg]</td><td><input name="valAngle" id="valAngle" type="text" size="7" value="0"></td></tr>
|
|
<tr><td>Angle sigma [deg]</td><td><input name="sigAngle" id="sigAngle" type="text" size="7" value="15"></td></tr>
|
|
<tr><td>Random seed</td><td><input name="ranSeed" id="ranSeed" type="text" size="7" value="78741"></td></tr>
|
|
<tr><td><button onclick="document.getElementById('btnPlots').click();tester();">Start</button></td><td></td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div id="Scans" class="tabcontent">
|
|
<input type="checkbox" name="scanSeq" id="scanSeq" onChange="adjust_scans();"> Enable scan on
|
|
<select name="scanType" id="scanType" onchange="adjust_scans();">
|
|
<option value="scanLoop">Loop</option>
|
|
<option value="scanVals">Set of Values</option>
|
|
</select>
|
|
<div id="ScansLine" style="visibility: hidden;">
|
|
<br>Set of Values: <input name="scanList" id="scanList" type="text" value="1000">
|
|
corresponding depth increment <input name="scanListdz" id="scanListdz" type="text" value="">
|
|
</div>
|
|
<table id="ScansTable" style="width: 100%;visibility: hidden;">
|
|
<tr>
|
|
<td colspan="3">Scan parameter
|
|
<select name="comboScan" id="comboScan" onchange="">
|
|
<option value="EScan">Energy</option>
|
|
<option value="SigEScan">Energy Sigma</option>
|
|
<option value="AngleScan">Angle</option>
|
|
<option value="SigAngleScan">Angle Sigma</option>
|
|
<option value="NProjScan">Number of Projectiles</option>
|
|
<option value="dScan">Thickness of layer1</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<!input type="radio" name="ScanType" value="Loop" checked onChange="">
|
|
<!input type="radio" name="ScanType" value="ScanList" onChange="">
|
|
From: <input name="scanFrom" id="scanFrom" type="text" value="1000">
|
|
</td>
|
|
<td>
|
|
Step: <input name="scanStep" id="scanStep" type="text" value="2000">
|
|
</td>
|
|
<td>
|
|
To: <input name="scanTo" id="scanTo" type="text" value="14000">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div id="Plots" class="tabcontent">
|
|
<table style="width: 100%;">
|
|
<tr>
|
|
<td align="center"><div id="plotRge"><!-- Plotly chart will be drawn inside this DIV --></div></td>
|
|
<td align="center"><div id="plotFrac"><!-- Plotly chart will be drawn inside this DIV --></div></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div id="Other" class="tabcontent">
|
|
<table cellpadding="5">
|
|
<tr>
|
|
<td>EF</td>
|
|
<td>
|
|
<input name="parEF" id="parEF" type="number" size="7" step="0.1" value="0.5">
|
|
</td>
|
|
<td>KK0</td>
|
|
<td>
|
|
<input name="parKK0" id="parKK0" type="number" step="1" min="0" max="4" value="2">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>ESB</td>
|
|
<td>
|
|
<input name="parESB" id="parESB" type="number" size="7" step="0.1" value="0.0">
|
|
</td>
|
|
<td>KK0R</td>
|
|
<td>
|
|
<input name="parKK0R" id="parKK0R" type="number" step="1" min="0" max="4" value="2">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SHEATH</td>
|
|
<td>
|
|
<input name="parSHEATH" id="parSHEATH" type="number" size="7" step="0.1" value="0.0">
|
|
</td>
|
|
<td>KDEE1</td>
|
|
<td>
|
|
<input name="parKDEE1" id="parKDEE1" type="number" step="1" min="1" max="5" value="4">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>ERC</td>
|
|
<td>
|
|
<input name="parERC" id="parERC" type="number" size="7" step="0.1" value="0.0">
|
|
</td>
|
|
<td>KDEE2</td>
|
|
<td>
|
|
<input name="parKDEE2" id="parKDEE2" type="number" step="1" min="1" max="3" value="3">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>RD</td>
|
|
<td>
|
|
<input name="parRD" id="parRD" type="number" size="7" step="0.1" value="50.0">
|
|
</td>
|
|
<td>IPOT</td>
|
|
<td>
|
|
<input name="parIPOT" id="parIPOT" type="number" step="1" min="1" max="3" value="2">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CA</td>
|
|
<td>
|
|
<input name="parCA" id="parCA" type="number" size="7" step="0.1" value="1.0">
|
|
</td>
|
|
<td>IPOTR</td>
|
|
<td>
|
|
<input name="parIPOTR" id="parIPOTR" type="number" step="1" min="0" max="3" value="1">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td></td>
|
|
<td>IRL</td>
|
|
<td>
|
|
<input name="parIRL" id="parIRL" type="number" step="1" min="0" max="2" value="0">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</td></tr>
|
|
<!tr>
|
|
<!td>
|
|
<!progress id="myBar" max=100 min=0><!/progress>
|
|
<!/td>
|
|
<!/tr>
|
|
</table>
|
|
</body>
|
|
<script>
|
|
// 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 is empty use default value
|
|
if (foldername == '') {foldername ="/tmp/test";}
|
|
document.getElementById("workPath").value = foldername;
|
|
console.log("folder="+foldername);
|
|
});
|
|
// 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);
|
|
});
|
|
// Get the element with id="defaultOpen" and click on it
|
|
document.getElementById("btnLayers").click();
|
|
</script>
|
|
</html>
|