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); }