From 14cab472648955fbdfe6285248c0e36889c89cfe Mon Sep 17 00:00:00 2001 From: c2v2zw4k Date: Mon, 22 May 2023 03:01:35 +0000 Subject: [PATCH] Upload files to 'js/dev/mol' --- js/dev/mol/molEnergycalc.js | 111 ++++++++++++++++++++ js/dev/mol/molFGen.js | 81 +++++++++++++++ js/dev/mol/molGen.js | 199 ++++++++++++++++++++++++++++++++++++ js/dev/mol/molHGen.js | 81 +++++++++++++++ js/dev/mol/smileGen.js | 57 +++++++++++ 5 files changed, 529 insertions(+) create mode 100644 js/dev/mol/molEnergycalc.js create mode 100644 js/dev/mol/molFGen.js create mode 100644 js/dev/mol/molGen.js create mode 100644 js/dev/mol/molHGen.js create mode 100644 js/dev/mol/smileGen.js diff --git a/js/dev/mol/molEnergycalc.js b/js/dev/mol/molEnergycalc.js new file mode 100644 index 0000000..69f8030 --- /dev/null +++ b/js/dev/mol/molEnergycalc.js @@ -0,0 +1,111 @@ +var tabelaPeriodica = { + 'H': {'energia': 4.5}, + 'He': {'energia': 24.6}, + 'Li': {'energia': 5.4}, + 'Be': {'energia': 9.3}, + 'B': {'energia': 8.3}, + 'C': {'energia': 7.5}, + 'N': {'energia': 10.0}, + 'O': {'energia': 12.0}, + 'F': {'energia': 15.0}, + 'Ne': {'energia': 21.6}, + 'Na': {'energia': 5.1}, + 'Mg': {'energia': 7.6}, + 'Al': {'energia': 5.9}, + 'Si': {'energia': 8.2}, + 'P': {'energia': 10.5}, + 'S': {'energia': 10.4}, + 'Cl': {'energia': 12.0}, + 'Ar': {'energia': 15.8}, + 'K': {'energia': 4.3}, + 'Ca': {'energia': 6.1}, + 'Sc': {'energia': 6.6}, + 'Ti': {'energia': 6.8}, + 'V':{'energia' :6.7 }, + 'Cr':{'energia' :6.8 }, + 'Mn':{'energia' :7.4 }, + 'Fe':{'energia' :7.9 }, + 'Co':{'energia' :7.7 }, + 'Ni':{'energia' :7.6 }, + 'Cu':{'energia' :7.7 }, + 'Zn':{'energia' :9.4 }, + 'Ga':{'energia' :5.9 }, + 'Ge':{'energia' :7.9 }, + 'As':{'energia' :9.8 }, + 'Se':{'energia' :9.8 }, + 'Br':{'energia' :11.8 }, + 'Kr':{'energia' :14.0 }, + 'Rb':{'energia' :4.2 }, + 'Sr':{'energia' :5.0 }, + 'Y':{'energia' :6.2 }, + 'Zr':{'energia' :6.6 }, + 'Nb':{'energia' :6.8 }, + 'Mo':{'energia' :7.1 }, + 'Tc':{'energia' :7.3 }, + 'Ru':{'energia' :7.2 }, + 'Rh':{'energia' :7.5 }, + 'Pd':{'energia' :8.3 }, + 'Ag':{'energia' :7.6 }, + 'Cd':{'energia' :8.9 }, + 'In':{'energia' :5.8 }, + 'Sn':{'energia' :7.3 }, + 'Sb':{'energia' :8.6 }, + 'Te':{'energia' :9.0 }, + 'I':{'energia' :10.5 }, + "Xe": {"energy":12} + }; + +function calcularEnergiaMolecula() { + var smiles = document.getElementById("smiles").value; + var molecula = converterSMILESParaMolecula(smiles); + var energiaMolecula = calcularEnergia(molecula); + document.getElementById("outputMolEnergy").innerHTML = "A energia total da molécula é: " + energiaMolecula + " eV"; + + // Get the existing button element by its ID + var existingButton = document.getElementById("molEnergycaleV"); + + // Attach an event listener to the button that calls navigator.clipboard.writeText() + existingButton.addEventListener("click", function() { + navigator.clipboard.writeText(energiaMolecula); + }); +} + + + function converterSMILESParaMolecula(smiles) { + var molecula = {}; + var i = 0; + while (i < smiles.length) { + var elemento = ''; + var quantidade = 1; + if (smiles[i].toUpperCase() === smiles[i]) { + elemento = smiles[i]; + i++; + if (i < smiles.length && smiles[i].toLowerCase() === smiles[i]) { + elemento += smiles[i]; + i++; + } + } + if (i < smiles.length && !isNaN(parseInt(smiles[i]))) { + quantidade = parseInt(smiles[i]); + i++; + } + if (elemento in molecula) { + molecula[elemento] += quantidade; + } else { + molecula[elemento] = quantidade; + } + } + return molecula; + } + + function calcularEnergia(molecula) { + var energiaTotal = 0; + for (var elemento in molecula) { + if (molecula.hasOwnProperty(elemento)) { + var quantidade = molecula[elemento]; + var energiaAtomo = tabelaPeriodica[elemento]['energia']; + energiaTotal += energiaAtomo * quantidade; + } + } + return energiaTotal; + } diff --git a/js/dev/mol/molFGen.js b/js/dev/mol/molFGen.js new file mode 100644 index 0000000..52d3569 --- /dev/null +++ b/js/dev/mol/molFGen.js @@ -0,0 +1,81 @@ +function generateFissionMolecule() { + var moleculeName = "FissionMolecule"; + var atoms = []; + var bonds = []; + + var periodicTable = [ + { symbol: "U", minBonds: 1, maxBonds: 6 }, + { symbol: "Pu", minBonds: 1, maxBonds: 6 }, + { symbol: "Np", minBonds: 1, maxBonds: 6 }, + { symbol: "Am", minBonds: 1, maxBonds: 6 }, + { symbol: "Cm", minBonds: 1, maxBonds: 6 }, + { symbol: "Bk", minBonds: 1, maxBonds: 6 }, + { symbol: "Cf", minBonds: 1, maxBonds: 6 }, + { symbol: "Es", minBonds: 1, maxBonds: 6 }, + { symbol: "Fm", minBonds: 1, maxBonds: 6 }, + { symbol: "Md", minBonds: 1, maxBonds: 6 }, + { symbol: "No", minBonds: 1, maxBonds: 6 }, + { symbol: "Lr", minBonds: 1, maxBonds: 6 } + ]; + + for (var i = 0; i < 12; i++) { + var x = i - 6; + var y = 0; + var z = 0; + + var element = periodicTable[i]; + var atomType = element.symbol; + + atoms.push([x, y, z, atomType]); + } + + for (var i = 0; i < 11; i++) { + var atom1 = i; + var atom2 = i + 1; + var bondType = 1; + bonds.push([atom1, atom2, bondType]); + } + + var molecule = "Molecule Name\n " + moleculeName + " 0 0.00000 0.00000 0\n[Insert Comment Here]\n 12 11 0 0 0 0 0 0 0 0 1 V2000\n"; + + for (var i = 0; i < atoms.length; i++) { + var atom = atoms[i]; + var x = atom[0]; + var y = atom[1]; + var z = atom[2]; + var atomType = atom[3]; + molecule += " " + x.toFixed(4) + " " + y.toFixed(4) + " " + z.toFixed(4) + " " + atomType + " 0 0 0 1 0 0 0 0 0 0 0 0\n"; + } + + for (var i = 0; i < bonds.length; i++) { + var bond = bonds[i]; + var atom1 = bond[0] + 1; + var atom2 = bond[1] + 1; + var bondType = bond[2]; + molecule += " " + atom1 + " " + atom2 + " " + bondType + " 0 0 0 0\n"; + } + + molecule += "M END\n> \n07-08-2009\n"; + +// Exibir o resultado no campo de texto + var outputTextarea = document.getElementById("outputTextarea3"); + outputTextarea.value = molecule; +} + + function saveMolecule3() { + var moleculeText = document.getElementById("outputTextarea3").value; + var blob = new Blob([moleculeText], { type: 'text/plain' }); + var url = URL.createObjectURL(blob); + var link = document.createElement('a'); + link.href = url; + link.download = 'molecule.mol'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + + function copymolecule3() { + var outputElement = document.getElementById("outputTextarea3"); + outputElement.select(); + document.execCommand("copy"); + } diff --git a/js/dev/mol/molGen.js b/js/dev/mol/molGen.js new file mode 100644 index 0000000..77eebf1 --- /dev/null +++ b/js/dev/mol/molGen.js @@ -0,0 +1,199 @@ +function generateMolecule2() { + var moleculeName = "CHEMDOOD" + String(Math.floor(Math.random() * 1000000000000)).padStart(11, '0'); + var atoms = []; + var bonds = []; + + var periodicTable = [ + { symbol: "H", minBonds: 1, maxBonds: 1 }, + { symbol: "He", minBonds: 0, maxBonds: 0 }, + { symbol: "Li", minBonds: 1, maxBonds: 1 }, + { symbol: "Be", minBonds: 2, maxBonds: 2 }, + { symbol: "B", minBonds: 3, maxBonds: 3 }, + { symbol: "C", minBonds: 4, maxBonds: 4 }, + { symbol: "N", minBonds: 3, maxBonds: 5 }, + { symbol: "O", minBonds: 2, maxBonds: 2 }, + { symbol: "F", minBonds: 1, maxBonds: 1 }, + { symbol: "Ne", minBonds: 0, maxBonds: 0 }, + { symbol: "Na", minBonds: 1, maxBonds: 1 }, + { symbol: "Mg", minBonds: 2, maxBonds: 2 }, + { symbol: "Al", minBonds: 3, maxBonds: 3 }, + { symbol: "Si", minBonds: 4, maxBonds: 4 }, + { symbol: "P", minBonds: 3, maxBonds: 5 }, + { symbol: "S", minBonds: 2, maxBonds: 6 }, + { symbol: "Cl", minBonds: 1, maxBonds: 1 }, + { symbol: "Ar", minBonds: 0, maxBonds: 0 }, + { symbol: "K", minBonds: 1, maxBonds: 1 }, + { symbol: "Ca", minBonds: 2, maxBonds: 2 }, + { symbol: "Sc", minBonds: 1, maxBonds: 3 }, + { symbol: "Ti", minBonds: 1, maxBonds: 4 }, + { symbol: "V", minBonds: 1, maxBonds: 5 }, + { symbol: "Cr", minBonds: 1, maxBonds: 6 }, + { symbol: "Mn", minBonds: 1, maxBonds: 7 }, + { symbol: "Fe", minBonds: 1, maxBonds: 8 }, + { symbol: "Co", minBonds: 1, maxBonds: 9 }, + { symbol: "Ni", minBonds: 1, maxBonds: 10 }, + { symbol: "Cu", minBonds: 1, maxBonds: 11 }, + { symbol: "Zn", minBonds: 2, maxBonds: 12 }, + { symbol: "Ga", minBonds: 3, maxBonds: 13 }, + { symbol: "Ge", minBonds: 4, maxBonds: 14 }, + { symbol: "As", minBonds: 3, maxBonds: 15 }, + { symbol: "Se", minBonds: 2, maxBonds: 16 }, + { symbol: "Br", minBonds: 1, maxBonds: 1 }, + { symbol: "Kr", minBonds: 0, maxBonds: 0 }, + { symbol: "Rb", minBonds: 1, maxBonds: 1 }, + { symbol: "Sr", minBonds: 2, maxBonds: 2 }, + { symbol: "Y", minBonds: 1, maxBonds: 3 }, + { symbol: "Zr", minBonds: 1, maxBonds: 4 }, + { symbol: "Nb", minBonds: 1, maxBonds: 5 }, + { symbol: "Mo", minBonds: 1, maxBonds: 6 }, + { symbol: "Tc", minBonds: 1, maxBonds: 7 }, + { symbol: "Ru", minBonds: 1, maxBonds: 8 }, + { symbol: "Rh", minBonds: 1, maxBonds: 9 }, + { symbol: "Pd", minBonds: 1, maxBonds: 10 }, + { symbol: "Ag", minBonds: 1, maxBonds: 11 }, + { symbol: "Cd", minBonds: 2, maxBonds: 12 }, + { symbol: "In", minBonds: 3, maxBonds: 13 }, + { symbol: "Sn", minBonds: 4, maxBonds: 14 }, + { symbol: "Sb", minBonds: 3, maxBonds: 15 }, + { symbol: "Te", minBonds: 2, maxBonds: 16 }, + { symbol: "I", minBonds: 1, maxBonds: 1 }, + { symbol: "Xe", minBonds: 0, maxBonds: 0 }, + { symbol: "Cs", minBonds: 1, maxBonds: 1 }, + { symbol: "Ba", minBonds: 2, maxBonds: 2 }, + { symbol: "La", minBonds: 1, maxBonds: 3 }, + { symbol: "Ce", minBonds: 1, maxBonds: 4 }, + { symbol: "Pr", minBonds: 1, maxBonds: 5 }, + { symbol: "Nd", minBonds: 1, maxBonds: 6 }, + { symbol: "Pm", minBonds: 1, maxBonds: 7 }, + { symbol: "Sm", minBonds: 1, maxBonds: 8 }, + { symbol: "Eu", minBonds: 1, maxBonds: 9 }, + { symbol: "Gd", minBonds: 1, maxBonds: 10 }, + { symbol: "Tb", minBonds: 1, maxBonds: 11 }, + { symbol: "Dy", minBonds: 1, maxBonds: 12 }, + { symbol: "Ho", minBonds: 1, maxBonds: 13 }, + { symbol: "Er", minBonds: 1, maxBonds: 14 }, + { symbol: "Tm", minBonds: 1, maxBonds: 15 }, + { symbol: "Yb", minBonds: 1, maxBonds: 16 }, + { symbol: "Hf", minBonds: 1, maxBonds: 4 }, + { symbol: "Ta", minBonds: 1, maxBonds: 5 }, + { symbol: "W", minBonds: 1, maxBonds: 6 }, + { symbol: "Re", minBonds: 1, maxBonds: 7 }, + { symbol: "Os", minBonds: 1, maxBonds: 8 }, + { symbol: "Ir", minBonds: 1, maxBonds: 9 }, + { symbol: "Pt", minBonds: 1, maxBonds: 10 }, + { symbol: "Au", minBonds: 1, maxBonds: 11 }, + { symbol: "Hg", minBonds: 1, maxBonds: 12 }, + { symbol: "Tl", minBonds: 1, maxBonds: 13 }, + { symbol: "Pb", minBonds: 2, maxBonds: 14 }, + { symbol: "Bi", minBonds: 3, maxBonds: 15 }, + { symbol: "Po", minBonds: 2, maxBonds: 16 }, + { symbol: "At", minBonds: 1, maxBonds: 1 }, + { symbol: "Rn", minBonds: 0, maxBonds: 0 }, + { symbol: "Fr", minBonds: 1, maxBonds: 1 }, + { symbol: "Ra", minBonds: 2, maxBonds: 2 }, + { symbol: "Ac", minBonds: 1, maxBonds: 3 }, + { symbol: "Th", minBonds: 1, maxBonds: 4 }, + { symbol: "Pa", minBonds: 1, maxBonds: 5 }, + { symbol: "U", minBonds: 1, maxBonds: 6 }, + { symbol: "Np", minBonds: 1, maxBonds: 7 }, + { symbol: "Pu", minBonds: 1, maxBonds: 8 }, + { symbol: "Am", minBonds: 1, maxBonds: 9 }, + { symbol: "Cm", minBonds: 1, maxBonds: 10 }, + { symbol: "Bk", minBonds: 1, maxBonds: 11 }, + { symbol: "Cf", minBonds: 1, maxBonds: 12 }, + { symbol: "Es", minBonds: 1, maxBonds: 13 }, + { symbol: "Fm", minBonds: 1, maxBonds: 14 }, + { symbol: "Md", minBonds: 1, maxBonds: 15 }, + { symbol: "No", minBonds: 1, maxBonds: 16 }, + { symbol: "Lr", minBonds: 1, maxBonds: 17 }, + { symbol: "Rf", minBonds: 1, maxBonds: 4 }, + { symbol: "Db", minBonds: 1, maxBonds: 5 }, + { symbol: "Sg", minBonds: 1, maxBonds: 6 }, + { symbol: "Bh", minBonds: 1, maxBonds: 7 }, + { symbol: "Hs", minBonds: 1, maxBonds: 8 }, + { symbol: "Mt", minBonds: 1, maxBonds: 9 }, + { symbol: "Ds", minBonds: 1, maxBonds: 10 }, + { symbol: "Rg", minBonds: 1, maxBonds: 11 }, + { symbol: "Cn", minBonds: 2, maxBonds: 12 }, + { symbol: "Nh", minBonds: 3, maxBonds: 13 }, + { symbol: "Fl", minBonds: 2, maxBonds: 14 }, + { symbol: "Mc", minBonds: 1, maxBonds: 15 }, + { symbol: "Lv", minBonds: 2, maxBonds: 16 }, + { symbol: "Ts", minBonds: 1, maxBonds: 17 }, + { symbol: "Og", minBonds: 0, maxBonds: 18 } + ]; + + for (var i = 0; i < 14; i++) { + var x = Math.round(Math.random() * 4 - 2, 4); + var y = Math.round(Math.random() * 4 - 2, 4); + var z = Math.round(Math.random() * 4 - 2, 4); + + // Randomly select an element from the periodic table + var element = periodicTable[Math.floor(Math.random() * periodicTable.length)]; + var atomType = element.symbol; + + atoms.push([x, y, z, atomType]); + } + + for (var i = 1; i <= 14; i++) { + var numBonds = Math.floor(Math.random() * 4); + var connectedAtoms = []; + + while (connectedAtoms.length < numBonds) { + var atom = Math.floor(Math.random() * 14 + 1); + if (connectedAtoms.indexOf(atom) === -1 && atom !== i) { + connectedAtoms.push(atom); + var bondType = Math.random() < 0.5 ? 1 : 2; + var bond = [i, atom, bondType]; + if (!bonds.find(function(existingBond) { + return existingBond[0] === bond[0] && existingBond[1] === bond[1] && existingBond[2] === bond[2]; + })) { + bonds.push(bond); + } + } + } + } + + var molecule = "Molecule Name\n " + moleculeName + " 0 0.00000 0.00000 0\n[Insert Comment Here]\n 14 15 0 0 0 0 0 0 0 0 1 V2000\n"; + + for (var i = 0; i < atoms.length; i++) { + var atom = atoms[i]; + var x = atom[0]; + var y = atom[1]; + var z = atom[2]; + var atomType = atom[3]; + molecule += " " + x.toFixed(4) + " " + y.toFixed(4) + " " + z.toFixed(4) + " " + atomType + " 0 0 0 1 0 0 0 0 0 0 0 0\n"; + } + + for (var i = 0; i < bonds.length; i++) { + var bond = bonds[i]; + var atom1 = bond[0]; + var atom2 = bond[1]; + var bondType = bond[2]; + molecule += " " + atom1 + " " + atom2 + " " + bondType + " 0 0 0 0\n"; + } + + molecule += "M END\n> \n07-08-2009\n"; + +// Exibir o resultado no campo de texto + var outputTextarea = document.getElementById("outputTextarea2"); + outputTextarea.value = molecule; +} + + function saveMolecule2() { + var moleculeText = document.getElementById("outputTextarea2").value; + var blob = new Blob([moleculeText], { type: 'text/plain' }); + var url = URL.createObjectURL(blob); + var link = document.createElement('a'); + link.href = url; + link.download = 'molecule.mol'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + + function copymolecule2() { + var outputElement = document.getElementById("outputTextarea2"); + outputElement.select(); + document.execCommand("copy"); + } diff --git a/js/dev/mol/molHGen.js b/js/dev/mol/molHGen.js new file mode 100644 index 0000000..8f921f1 --- /dev/null +++ b/js/dev/mol/molHGen.js @@ -0,0 +1,81 @@ +function generateHighEnergyMolecule() { + var moleculeName = "HighEnergyMolecule"; + var atoms = []; + var bonds = []; + + var periodicTable = [ + { symbol: "U", minBonds: 1, maxBonds: 6 }, + { symbol: "Pu", minBonds: 1, maxBonds: 6 }, + { symbol: "Np", minBonds: 1, maxBonds: 6 }, + { symbol: "Am", minBonds: 1, maxBonds: 6 }, + { symbol: "Cm", minBonds: 1, maxBonds: 6 }, + { symbol: "Bk", minBonds: 1, maxBonds: 6 }, + { symbol: "Cf", minBonds: 1, maxBonds: 6 }, + { symbol: "Es", minBonds: 1, maxBonds: 6 }, + { symbol: "Fm", minBonds: 1, maxBonds: 6 }, + { symbol: "Md", minBonds: 1, maxBonds: 6 }, + { symbol: "No", minBonds: 1, maxBonds: 6 }, + { symbol: "Lr", minBonds: 1, maxBonds: 6 } + ]; + + for (var i = 0; i < 12; i++) { + var x = i - 6; + var y = 0; + var z = 0; + + var element = periodicTable[i]; + var atomType = element.symbol; + + atoms.push([x, y, z, atomType]); + } + + for (var i = 0; i < 11; i++) { + var atom1 = i; + var atom2 = i + 1; + var bondType = 2; // Increase the bond type to 2 (representing higher energy) + bonds.push([atom1, atom2, bondType]); + } + + var molecule = "Molecule Name\n " + moleculeName + " 0 0.00000 0.00000 0\n[Insert Comment Here]\n 12 11 0 0 0 0 0 0 0 0 1 V2000\n"; + + for (var i = 0; i < atoms.length; i++) { + var atom = atoms[i]; + var x = atom[0]; + var y = atom[1]; + var z = atom[2]; + var atomType = atom[3]; + molecule += " " + x.toFixed(4) + " " + y.toFixed(4) + " " + z.toFixed(4) + " " + atomType + " 0 0 0 1 0 0 0 0 0 0 0 0\n"; + } + + for (var i = 0; i < bonds.length; i++) { + var bond = bonds[i]; + var atom1 = bond[0] + 1; + var atom2 = bond[1] + 1; + var bondType = bond[2]; + molecule += " " + atom1 + " " + atom2 + " " + bondType + " 0 0 0 0\n"; + } + + molecule += "M END\n> \n07-08-2009\n"; + +// Exibir o resultado no campo de texto + var outputTextarea = document.getElementById("outputTextarea4"); + outputTextarea.value = molecule; +} + + function saveMolecule4() { + var moleculeText = document.getElementById("outputTextarea4").value; + var blob = new Blob([moleculeText], { type: 'text/plain' }); + var url = URL.createObjectURL(blob); + var link = document.createElement('a'); + link.href = url; + link.download = 'molecule.mol'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + + function copymolecule4() { + var outputElement = document.getElementById("outputTextarea4"); + outputElement.select(); + document.execCommand("copy"); + } diff --git a/js/dev/mol/smileGen.js b/js/dev/mol/smileGen.js new file mode 100644 index 0000000..641964a --- /dev/null +++ b/js/dev/mol/smileGen.js @@ -0,0 +1,57 @@ +function gerarHEsmiles() { + var simbolosAtomos = ['H', 'C', 'N', 'O', 'F', 'P', 'S', 'Cl']; + var comprimentoMolecula = Math.floor(Math.random() * (15 - 5 + 1)) + 5; + var smiles = ''; + for (var i = 0; i < comprimentoMolecula; i++) { + var simbolo = simbolosAtomos[Math.floor(Math.random() * simbolosAtomos.length)]; + smiles += simbolo; + } + + document.getElementById("outputTextarea3").innerHTML = smiles; + } + + function saveMolecule3() { + var moleculeText = document.getElementById("outputTextarea3").value; + var blob = new Blob([moleculeText], { type: 'text/plain' }); + var url = URL.createObjectURL(blob); + var link = document.createElement('a'); + link.href = url; + link.download = 'molecule.mol'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + +function copyOutput3() { + const output = document.getElementById("outputTextarea3").textContent; + navigator.clipboard.writeText(output); +} + +function gerarHEsmiles() { + var simbolosAtomos = ['H', 'C', 'N', 'O', 'F', 'P', 'S', 'Cl']; + var comprimentoMolecula = Math.floor(Math.random() * (15 - 5 + 1)) + 5; + var smiles = ''; + for (var i = 0; i < comprimentoMolecula; i++) { + var simbolo = simbolosAtomos[Math.floor(Math.random() * simbolosAtomos.length)]; + smiles += simbolo; + } + + document.getElementById("outputTextarea3").innerHTML = smiles; + } + + function saveMolecule3() { + var moleculeText = document.getElementById("outputTextarea3").value; + var blob = new Blob([moleculeText], { type: 'text/plain' }); + var url = URL.createObjectURL(blob); + var link = document.createElement('a'); + link.href = url; + link.download = 'molecule.mol'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + +function copyOutput3() { + const output = document.getElementById("outputTextarea3").textContent; + navigator.clipboard.writeText(output); +}