forked from enviPath/enviPy
Compare commits
1 Commits
fix/ketche
...
hotfix/log
| Author | SHA1 | Date | |
|---|---|---|---|
| f99564cdc2 |
@ -256,31 +256,6 @@
|
|||||||
<script language="javascript">
|
<script language="javascript">
|
||||||
var currentPackage = "{{ meta.current_package.url }}";
|
var currentPackage = "{{ meta.current_package.url }}";
|
||||||
|
|
||||||
// Helper function to safely get Ketcher instance from iframe
|
|
||||||
function getKetcherInstance(iframeId) {
|
|
||||||
const ketcherFrame = document.getElementById(iframeId);
|
|
||||||
if (!ketcherFrame) {
|
|
||||||
console.error("Ketcher iframe not found:", iframeId);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (
|
|
||||||
"contentWindow" in ketcherFrame &&
|
|
||||||
ketcherFrame.contentWindow.ketcher
|
|
||||||
) {
|
|
||||||
return ketcherFrame.contentWindow.ketcher;
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
console.error(
|
|
||||||
"Cannot access Ketcher iframe - possible CORS issue:",
|
|
||||||
err,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Discourse API integration is now handled by discourse-api.js
|
// Discourse API integration is now handled by discourse-api.js
|
||||||
|
|
||||||
// Function to render Discourse topics into cards
|
// Function to render Discourse topics into cards
|
||||||
@ -384,16 +359,10 @@
|
|||||||
}, 300);
|
}, 300);
|
||||||
|
|
||||||
// Transfer SMILES from Ketcher to text input if available
|
// Transfer SMILES from Ketcher to text input if available
|
||||||
const ketcher = getKetcherInstance("index-ketcher");
|
if (window.indexKetcher && window.indexKetcher.getSmiles) {
|
||||||
if (ketcher && ketcher.getSmiles) {
|
const smiles = window.indexKetcher.getSmiles();
|
||||||
try {
|
if (smiles && smiles.trim() !== "") {
|
||||||
const smiles = ketcher.getSmiles();
|
$("#index-form-text-input").val(smiles);
|
||||||
if (smiles && smiles.trim() !== "") {
|
|
||||||
$("#index-form-text-input").val(smiles);
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
console.error("Failed to sync Ketcher to text input:", err);
|
|
||||||
// Non-critical error, just log it
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -462,32 +431,13 @@
|
|||||||
var textSmiles = "";
|
var textSmiles = "";
|
||||||
|
|
||||||
// Check if we're in Ketcher mode and extract SMILES
|
// Check if we're in Ketcher mode and extract SMILES
|
||||||
if ($('input[type="checkbox"]').is(":checked")) {
|
if ($('input[type="checkbox"]').is(":checked") && window.indexKetcher) {
|
||||||
// Use the robust getter function
|
textSmiles = window.indexKetcher.getSmiles().trim();
|
||||||
const ketcher = getKetcherInstance("index-ketcher");
|
|
||||||
if (ketcher && ketcher.getSmiles) {
|
|
||||||
try {
|
|
||||||
textSmiles = ketcher.getSmiles().trim();
|
|
||||||
} catch (err) {
|
|
||||||
console.error("Failed to get SMILES from Ketcher:", err);
|
|
||||||
alert(
|
|
||||||
"Unable to extract structure from the drawing editor. Please try again or switch to SMILES input mode.",
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.warn("Ketcher not available, possibly still loading");
|
|
||||||
alert(
|
|
||||||
"The drawing editor is still loading. Please wait a moment and try again.",
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
textSmiles = $("#index-form-text-input").val().trim();
|
textSmiles = $("#index-form-text-input").val().trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (textSmiles === "") {
|
if (textSmiles === "") {
|
||||||
alert("Please enter a SMILES string or draw a structure.");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -137,25 +137,6 @@
|
|||||||
</div>
|
</div>
|
||||||
{# prettier-ignore-start #}
|
{# prettier-ignore-start #}
|
||||||
<script>
|
<script>
|
||||||
// Helper function to safely get Ketcher instance from iframe
|
|
||||||
function getKetcherInstance(iframeId) {
|
|
||||||
const ketcherFrame = document.getElementById(iframeId);
|
|
||||||
if (!ketcherFrame) {
|
|
||||||
console.error("Ketcher iframe not found:", iframeId);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
if ('contentWindow' in ketcherFrame && ketcherFrame.contentWindow.ketcher) {
|
|
||||||
return ketcherFrame.contentWindow.ketcher;
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
console.error("Cannot access Ketcher iframe - possible CORS issue:", err);
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function predictKetcherToTextInput() {
|
function predictKetcherToTextInput() {
|
||||||
$("#predict-smiles").val(this.ketcher.getSmiles());
|
$("#predict-smiles").val(this.ketcher.getSmiles());
|
||||||
}
|
}
|
||||||
@ -190,21 +171,10 @@
|
|||||||
let smiles = $("#predict-smiles").val().trim();
|
let smiles = $("#predict-smiles").val().trim();
|
||||||
|
|
||||||
// If SMILES input is empty, try to get from Ketcher
|
// If SMILES input is empty, try to get from Ketcher
|
||||||
if (!smiles) {
|
if (!smiles && window.predictKetcher) {
|
||||||
const ketcher = getKetcherInstance('predict-ketcher');
|
smiles = window.predictKetcher.getSmiles().trim();
|
||||||
if (ketcher && ketcher.getSmiles) {
|
if (smiles) {
|
||||||
try {
|
$("#predict-smiles").val(smiles);
|
||||||
smiles = ketcher.getSmiles().trim();
|
|
||||||
if (smiles) {
|
|
||||||
$("#predict-smiles").val(smiles);
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
console.error("Failed to get SMILES from Ketcher:", err);
|
|
||||||
alert("Unable to extract structure from the drawing editor. Please enter a SMILES string instead.");
|
|
||||||
button.prop("disabled", false);
|
|
||||||
button.text("Predict");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user