Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
d4afa02b
Commit
d4afa02b
authored
Feb 06, 2013
by
Carlos Andrés Rocha
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Modify editamolecule to load GWT scripts dynamically
parent
31b8f0ce
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
43 additions
and
25 deletions
+43
-25
common/lib/capa/capa/templates/editamolecule.html
+0
-2
common/static/js/capa/editamolecule.js
+43
-23
No files found.
common/lib/capa/capa/templates/editamolecule.html
View file @
d4afa02b
<section
id=
"editamoleculeinput_${id}"
class=
"editamoleculeinput"
>
<div
class=
"script_placeholder"
data-src=
"/static/js/capa/jsmolcalc/jsmolcalc.nocache.js"
/>
<div
class=
"script_placeholder"
data-src=
"/static/js/capa/jsme/jsme_export.nocache.js"
/>
<div
class=
"script_placeholder"
data-src=
"${applet_loader}"
/>
% if status == 'unsubmitted':
...
...
common/static/js/capa/editamolecule.js
View file @
d4afa02b
...
...
@@ -2,23 +2,53 @@
var
timeout
=
100
;
// Simple "lock" to prevent applets from being initialized more than once
if
(
typeof
(
_editamolecule_lock
)
==
'undefined'
||
_editamolecule_lock
==
false
)
{
_editamolecule_lock
=
true
;
if
(
typeof
(
_editamolecule_loaded
)
==
'undefined'
)
{
_editamolecule_loaded
=
true
;
loadGWTScripts
();
waitForGWT
();
}
else
{
return
;
}
// FIXME: [rocha] jsme and jsmolcalc are not initialized automatically by
// the GWT script loader. To fix this, wait for the scripts to load, initialize
// them manually and wait until they are ready
function
loadScript
(
src
)
{
var
script
=
document
.
createElement
(
'script'
);
script
.
setAttribute
(
'type'
,
'text/javascript'
);
script
.
setAttribute
(
'src'
,
src
);
$
(
'head'
)[
0
].
appendChild
(
script
);
}
function
loadGWTScripts
()
{
// The names of the script are split to prevent them from
// being rewritten by LMS. GWT uses the filename of the script
// to find the URL path in which the script lives. If the name
// of the file is changed, GWT won't load correctly
var
jsmolcalc_src
=
'/sta'
+
'tic/js/capa/jsmolcalc/jsmolcalc.nocache.js'
;
var
jsme_src
=
'/sta'
+
'tic/js/capa/jsme/jsme_export.nocache.js'
;
// Make sure we don't request the scripts twice
if
(
typeof
(
_jsmolcalc
)
==
'undefined'
)
{
_jsmolcalc
=
true
;
loadScript
(
jsmolcalc_src
);
}
if
(
typeof
(
_jsme
)
==
'undefined'
)
{
_jsme
=
true
;
loadScript
(
jsme_src
);
}
}
function
waitForGWT
()
{
if
(
typeof
(
jsmolcalc
)
!=
"undefined"
&&
jsmolcalc
)
// jsme and jsmolcalc are not initialized automatically by the GWT
// script loader. To fix this, wait for the scripts to load,
// initialize them manually and wait until they are ready
if
(
typeof
(
jsmolcalc
)
!=
'undefined'
&&
jsmolcalc
)
{
jsmolcalc
.
onInjectionDone
(
'jsmolcalc'
);
}
if
(
typeof
(
jsme_export
)
!=
"undefined"
&&
jsme_export
)
if
(
typeof
(
jsme_export
)
!=
'undefined'
&&
jsme_export
)
{
// dummy function called by jsme_export
window
.
jsmeOnLoad
=
function
()
{};
...
...
@@ -29,7 +59,7 @@
if
(
typeof
(
jsmol
)
!=
'undefined'
&&
typeof
(
JavaScriptApplet
)
!=
'undefined'
)
{
// ready, initialize applets
initializeApplets
();
_editamolecule_lo
ck
=
false
;
// release lock, for reloading
_editamolecule_lo
aded
=
false
;
}
else
{
setTimeout
(
waitForGWT
,
timeout
);
}
...
...
@@ -59,7 +89,6 @@
var
reset_button
=
parent
.
find
(
'button.reset'
);
// Add div for error messages
$
(
'<br/> <br/> <div class="errormsgs" style="padding: 5px 5px 5px 5px;
\
visibility:hidden; background-color:#FA6666; height:60px;
\
width:400px;"> </div>'
).
appendTo
(
parent
);
...
...
@@ -93,16 +122,14 @@
function
requestAppletData
(
element
,
applet
,
input_field
)
{
var
molFile
=
$
(
element
).
data
(
'molfile-src'
);
jQuery
.
ajax
({
url
:
molFile
,
dataType
:
"text"
,
success
:
function
(
data
)
{
//console.log("Done.");
loadAppletData
(
applet
,
data
,
input_field
);
},
error
:
function
()
{
console
.
error
(
"Cannot load mol data
."
);
console
.
error
(
"Cannot load mol data
from: "
+
molFile
);
}
});
}
...
...
@@ -118,12 +145,9 @@
var
jme
=
applet
.
jmeFile
();
var
info
=
formatInfo
(
jsmol
.
API
.
getInfo
(
mol
,
smiles
,
jme
).
toString
(),
input_field
,
element
);
input_field
,
element
);
var
value
=
{
mol
:
mol
,
info
:
info
};
//console.log("Molecule info:");
//console.log(info);
input_field
.
val
(
JSON
.
stringify
(
value
));
return
value
;
...
...
@@ -131,10 +155,8 @@
function
formatInfo
(
info
,
input_field
,
element
)
{
var
results
=
[];
//console.log("element parent is"+$(element).parent())
var
errordiv
=
$
(
element
).
parent
().
find
(
'.errormsgs'
)[
0
];
//console.log(errordiv);
if
(
!
errordiv
)
{
// This is a bit hackish, but works.
// There are situations where formatInfo is called but no div yet exists
...
...
@@ -143,7 +165,7 @@
//console.log("There is no errordiv loaded yet. trying again soon");
return
[]
}
if
(
info
.
search
(
"It is not possible"
)
==
-
1
)
{
errordiv
.
innerHTML
=
''
;
errordiv
.
style
.
visibility
=
'hidden'
;
...
...
@@ -153,12 +175,10 @@
});
}
else
{
//console.log("err");
// remove Brian's html tags
var
tags
=
/<
((\/)?\w{1,7})
>/g
;
var
errmsg
=
info
.
replace
(
tags
,
' '
);
//console.log(errmsg);
errordiv
.
innerHTML
=
errmsg
;
errordiv
.
style
.
visibility
=
'visible'
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment