From c00c103c62917af0be13eac3f9ab7806cbdf375b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr>
Date: Wed, 5 Sep 2018 10:13:49 +0200
Subject: [PATCH] autoload current SMILES in MarvinJS

for #83


Former-commit-id: 64b18caaaf2a94e65fe2ab8fcaadcdf650f6da16
---
 ippisite/ippidb/templates/compound_list.html  |  2 +-
 ippisite/ippidb/templates/marvinjs_modal.html | 18 ++++++++++++++++--
 ippisite/ippidb/urls.py                       |  1 +
 ippisite/ippidb/views.py                      |  8 +++++++-
 4 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/ippisite/ippidb/templates/compound_list.html b/ippisite/ippidb/templates/compound_list.html
index f48c732f..53d39762 100644
--- a/ippisite/ippidb/templates/compound_list.html
+++ b/ippisite/ippidb/templates/compound_list.html
@@ -174,6 +174,6 @@
   {% include "slider_modal.html" with label="AlogP" param_name="a_log_p" param_min=a_log_p_min param_max=a_log_p_max param_value=a_log_p step='1' param_label='Select a cutoff value for the AlogP of the compounds to be selected'%}
   {% include "slider_modal.html" with label="H donors" param_name="nb_donor_h" param_min=nb_donor_h_min param_max=nb_donor_h_max param_value=nb_donor_h step='1' param_label='Select a cutoff value for the number of H donors in the compounds to be selected'%}
   {% include "slider_modal.html" with label="Publications" param_name="pubs" param_min=pubs_min param_max=pubs_max param_value=pubs step='1' param_label='Select a cutoff value for the number of publications mentioning the compounds to be selected'%}
-  {% include "marvinjs_modal.html" %}
+  {% include "marvinjs_modal.html" with smiles=similar_to %}
 
 {% endblock %}
diff --git a/ippisite/ippidb/templates/marvinjs_modal.html b/ippisite/ippidb/templates/marvinjs_modal.html
index 157a83a1..2fb16235 100644
--- a/ippisite/ippidb/templates/marvinjs_modal.html
+++ b/ippisite/ippidb/templates/marvinjs_modal.html
@@ -9,7 +9,7 @@
       </div>
       <div class="modal-body">
         Sketch or upload (in .mol format and in 2D only) the query structure here
-        <iframe id="marviniframe" src="/static/marvin-ippidbeditor.html" style="overflow: hidden; min-width: 700px; min-height: 500px; border: 1px solid darkgray;"  />
+        <iframe id="marviniframe" src="/static/marvin-ippidbeditor.html" data-smiles="{{ smiles }}" style="overflow: hidden; min-width: 700px; min-height: 500px; border: 1px solid darkgray;"  />
         </iframe>
       </div>
       <div class="modal-footer">
@@ -21,10 +21,24 @@
             var marvinSketcherInstance;
             MarvinJSUtil.getEditor("marviniframe").then(function(sketcherInstance) {
                 marvinSketcherInstance = sketcherInstance;
+                $('#modal-marvin').on('shown.bs.modal', function (e) {
+                  var smilesToLoad = $('#marviniframe').attr('data-smiles');
+                  if(smilesToLoad!=''){
+                    $.ajax({
+                              url: '/utils/smi2mol',
+                              data: {'smiString':smilesToLoad},
+                              success: function(data){
+                                var molString = data.mol;
+                                marvinSketcherInstance.importStructure("mol", molString).catch(function(error, toto) {
+                                  console.log("error importing MOL file into MarvinJS:", error);
+                                });
+                              }
+                          });
+                        }
+                    });
                 $('#marvinApplyButton').click(function(){
                     $('#modal-marvin').modal('hide');
                     marvinSketcherInstance.exportStructure("mol").then(function(source) {
-                        //alert(source);
                         $.ajax({
                             url: '/utils/mol2smi',
                             data: {'molString':source},
diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py
index b0cbe0f1..1b9bda0c 100644
--- a/ippisite/ippidb/urls.py
+++ b/ippisite/ippidb/urls.py
@@ -22,6 +22,7 @@ urlpatterns = [
     url(r'^admin-session/add/$', ippidb_wizard, name='ippidb'),
     url(r'^admin-session/update/$', views.update, name='update'),
     url(r'^utils/mol2smi$', views.convert_mol2smi, name='mol2smi'),
+    url(r'^utils/smi2mol$', views.convert_smi2mol, name='smi2mol'),
 ]
 
 from django.conf import settings
diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py
index 9f85b1ea..02e5b8b6 100644
--- a/ippisite/ippidb/views.py
+++ b/ippisite/ippidb/views.py
@@ -14,7 +14,7 @@ from formtools.wizard.views import SessionWizardView, NamedUrlSessionWizardView
 
 import ippidb
 from .forms import *
-from .utils import mol2smi
+from .utils import mol2smi, smi2mol
 from .models import Protein, Bibliography, ProteinDomainComplex, ProteinDomainBoundComplex, RefCompoundBiblio, TestActivityDescription, Compound, Ppi, Disease, Taxonomy, LeLleBiplotData, PcaBiplotData, PpiFamily, CompoundTanimoto, create_tanimoto
 from .ws import get_pdb_uniprot_mapping
 
@@ -358,3 +358,9 @@ def convert_mol2smi(request):
     smiles_string = mol2smi(mol_string)
     resp = {'smiles': smiles_string}
     return JsonResponse(resp)
+
+def convert_smi2mol(request):
+    smi_string = request.GET.get('smiString')
+    mol_string = smi2mol(smi_string)
+    resp = {'mol': mol_string}
+    return JsonResponse(resp)
-- 
GitLab