File size: 3,656 Bytes
a05c989
52bf9df
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d600a06
52bf9df
 
 
 
 
 
 
 
a05c989
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7d61a8d
aebc0d2
 
a05c989
7d61a8d
 
 
 
a05c989
 
 
fffb501
a05c989
 
 
d600a06
a05c989
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52bf9df
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
INITIAL_RENDERING_TEMPLATE = """<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <style>
            .mol-container {{
                width: 600px;
                height: 600px;
                position: relative;
            }}
            .mol-container select{{
                background-image:None;
            }}
        </style>
        <script src="https://3Dmol.csb.pitt.edu/build/3Dmol-min.js"></script>
    </head>

    <body>
    <div id="container" class="mol-container"></div>
    <script>
        $(document).ready(function() {{
            let element = $("#container");
            let config = {{ backgroundColor: "white" }};
            let viewer = $3Dmol.createViewer( element, config );
            viewer.addModel(`{molecule}`, "{fmt}")
            viewer.getModel().setStyle({{ stick: {{ colorscheme:"greenCarbon" }} }})
            viewer.zoomTo();
            viewer.zoom(0.7);
            viewer.render();
        }});
    </script>
    </body>
</html>
"""


SAMPLES_RENDERING_TEMPLATE = """<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <style>
            .mol-container {{
                width: 600px;
                height: 600px;
                position: relative;
            }}
            .mol-container select{{
                background-image:None;
            }}
        </style>
        <script src="https://3Dmol.csb.pitt.edu/build/3Dmol-min.js"></script>
    </head>

    <body>
    <div id="container" class="mol-container"></div>
    <button id="fragments">Input Fragments</button>
    <button id="molecule">Output Molecule</button> 
    <script>
        let element = $("#container");
        let config = {{ backgroundColor: "white" }};
        let viewer = $3Dmol.createViewer( element, config );
        
        $(document).ready(function() {{
            viewer.addModel(`{fragments}`, "{fragments_fmt}")
            viewer.getModel().setStyle({{ stick: {{ colorscheme:"greenCarbon" }} }})
            viewer.getModel().hide();
            viewer.addModel(`{molecule}`, "{molecule_fmt}")
            viewer.getModel().setStyle({{ stick: {{ colorscheme:"greenCarbon" }} }})
            viewer.zoomTo();
            viewer.zoom(0.7);
            viewer.render();
        }});
        $("#fragments").click(function() {{
            viewer.getModel(0).show();
            viewer.getModel(1).hide();
            viewer.render();
        }});
        $("#molecule").click(function() {{
            viewer.getModel(1).show();
            viewer.getModel(0).hide();
            viewer.render();
        }});
    </script>
    </body>
</html>
"""


INVALID_FORMAT_MSG = """
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <style>
            body{{
                font-family:sans-serif
            }}
        </style>
    </head>

    <body>
        <h3>Invalid file format: {extension}</h3>
        Please upload the file in one of the following formats:
        <ul>
          <li>.pdb</li>
          <li>.sdf</li>
          <li>.mol</li>
          <li>.mol2</li>
        </ul>
    </body>
</html>
"""


IFRAME_TEMPLATE = """<iframe style="width: 100%; height: 700px" name="result" allow="midi; geolocation; microphone; camera; 
display-capture; encrypted-media;" sandbox="allow-modals allow-forms allow-scripts allow-same-origin allow-popups 
allow-top-navigation-by-user-activation allow-downloads" allowfullscreen="" 
allowpaymentrequest="" frameborder="0" srcdoc='{html}'></iframe>"""