let energy = [];
let jpi = [];
let Name;
let A;
let Sym;
function breakdownName(str) {
const match = str.match(/^(\d+)([a-zA-Z]+)$/);
if (match) {
const numberPart = parseInt(match[1]);
const stringPart = match[2];
return { numberPart, stringPart };
} else {
return null; // If the input string doesn't match the expected format
}
}
let Sn = 999;
let Sp = 999;
let Sa = 999;
function GetData(){
Name = document.getElementById('ASym').value;
let maxEx = parseFloat(document.getElementById('maxEx').value);
let str = 'displayIsoData.py?ASym=' + Name + "&maxEx=" + maxEx;
let client = new XMLHttpRequest();
client.onreadystatechange = function() {
let haha = client.responseText.split('\n');
jpi = [];
energy = [];
haha.forEach(line =>{
// console.log(line)
if( line.includes("Sn:") ) {
let pos1 = line.indexOf("Sn:");
let pos2 = line.indexOf("MeV");
Sn = parseFloat(line.substring(pos1+3, pos2));
}
if( line.includes("Sp:") ) {
let pos1 = line.indexOf("Sp:");
let pos2 = line.indexOf("MeV");
Sp = parseFloat(line.substring(pos1+3, pos2));
}
if( line.includes("Sa:") ) {
let pos1 = line.indexOf("Sa:");
let pos2 = line.indexOf("MeV");
Sa = parseFloat(line.substring(pos1+3, pos2));
}
if( line.includes("
fontSizeMeV) {
count++;
}
}
if (count === l) {
noOverlap = true;
}
loop++;
}
for (let i = 0; i < l; i++) {
fig.data.push({
x: [0, 1],
y: [energy[i], energy[i]],
mode: 'lines',
line: { color: 'black', width: 1 }
});
fig.data.push({
x: [1.03, 1.1, 1.19],
y: [energy[i], ypos[i], ypos[i]],
mode: 'lines',
line: { color: 'gray', width: 1 }
});
// console.log(energy[i]+ ", " + ypos[i]);
fig.layout.annotations.push({
x: 1.2,
y: ypos[i],
text: `${energy[i].toFixed(3)}, ${jpi[i]}`,
xanchor: 'left',
font: { size: fontSize },
showarrow: false
});
}
console.log("Sn: " + Sn);
console.log("Sp: " + Sp);
console.log("Sa: " + Sa);
let leftPos = -0.8;
fig.data.push({
x: [leftPos, 1],
y: [Sn, Sn],
mode: 'lines',
line: { color: 'blue', width: 1 }
});
fig.layout.annotations.push({
x: leftPos,
y: Sn + fontSizeMeV/2,
text: `${'Sn:'+Sn.toFixed(3)}`,
xanchor: 'left',
font: { size: fontSize, color: 'blue' },
showarrow: false
});
fig.data.push({
x: [leftPos, 1],
y: [Sp, Sp],
mode: 'lines',
line: { color: 'red', width: 1 }
});
fig.layout.annotations.push({
x: leftPos,
y: Sp + fontSizeMeV/2,
text: `${'Sp:'+Sp.toFixed(3)}`,
xanchor: 'left',
font: { size: fontSize, color: 'red' },
showarrow: false
});
fig.data.push({
x: [leftPos, 1],
y: [Sa, Sa],
mode: 'lines',
line: { color: 'purple', width: 1 }
});
fig.layout.annotations.push({
x: leftPos,
y: Sa + fontSizeMeV/2,
text: `${'Sa:'+Sa.toFixed(3)}`,
xanchor: 'left',
font: { size: fontSize, color: 'purple' },
showarrow: false
});
// let NameYPos = (parseFloat(maxEx) + 2*fontSizeMeV);
// console.log(NameYPos);
let name2 = breakdownName(Name);
fig.layout.annotations.push({
x: 0.5,
y: (maxEx + 1),
text: "" + name2.numberPart +"" + name2.stringPart,
font: { size: 2 * fontSize },
showarrow: false
});
// Create the plot
Plotly.newPlot('Plot_Levels', fig.data, fig.layout);
} |