File size: 2,744 Bytes
99415de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ketcher Embed</title>
</head>
<body>
<iframe id="ifKetcher" src="/static/index.html" width="800" height="600"></iframe>
<script>
setTimeout(() => {
var iframe = document.getElementById("ifKetcher");
// 访问iframe的window对象
var ketcherWindow = iframe.contentWindow;
var ketcher = ketcherWindow.ketcher;
ketcher.setMolecule('c1ccccc1');
console.log('set mol!');
// 监听 Ketcher 的 'change' 事件,当分子结构改变时触发
ketcher.on('change', () => {
ketcher.getSmiles().then(smiles => {
console.log("生成的新 SMILES:", smiles);
sendDataToBackend(smiles);
}).catch(err => {
console.error('获取 SMILES 时出错:', err);
});
});
// 监听 Ketcher 的 'load' 事件,当分子结构加载时触发
ketcher.on('load', () => {
ketcher.getSmiles().then(smiles => {
console.log("加载的 SMILES:", smiles);
sendDataToBackend(smiles);
}).catch(err => {
console.error('获取 SMILES 时出错:', err);
});
});
/**
* 发送 SMILES 数据到 Gradio 后端的函数
* @param {string} smiles - 分子的 SMILES 字符串
*/
function sendDataToBackend(smiles) {
gradioApp().then((app) => {
app.call('process_smiles', smiles).then((response) => {
console.log("Backend response:", response);
// 可以在这里处理后端返回的响应,例如更新某个组件
}).catch(error => {
console.error("调用后端函数时出错:", error);
});
}).catch(error => {
console.error("获取 Gradio 应用时出错:", error);
});
}
/**
* 从 Gradio 前端加载 SMILES 到 Ketcher
* @param {string} smiles - 分子的 SMILES 字符串
*/
function loadSmiles(smiles){
if (ketcher){
console.log("加载 SMILES 到 Ketcher:", smiles);
ketcher.setMolecule(smiles).then(() => {
console.log("SMILES 加载成功");
}).catch(err => {
console.error("加载 SMILES 时出错:", err);
});
}
}
window.loadSmiles = loadSmiles;
}, 2e3)
</script>
</body>
</html> |