Difference between revisions of "Jmol JavaScript Object/Legacy"
AngelHerraez (talk | contribs) (old vs. new functions) |
AngelHerraez (talk | contribs) m (→Converting the oldest Jmol pages that used the <applet> syntax) |
||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Converting legacy web pages to JSmol == | == Converting legacy web pages to JSmol == | ||
+ | __TOC__ | ||
=== Overview === | === Overview === | ||
Line 16: | Line 17: | ||
Or you can modify your page source code to use the new format. Or, easiest solution, use the 'adapter' library described below. | Or you can modify your page source code to use the new format. Or, easiest solution, use the 'adapter' library described below. | ||
+ | === Table of equivalence old vs. new functions === | ||
The main methods formerly implemented in {{file|Jmol.js}} (and more!) have now [[Jmol_JavaScript_Object/Functions|equivalent functions]] that can be found in [{{SVN JSmol Trunk}}jsmoljs/JSmolApi.js JSmolApi.js] | The main methods formerly implemented in {{file|Jmol.js}} (and more!) have now [[Jmol_JavaScript_Object/Functions|equivalent functions]] that can be found in [{{SVN JSmol Trunk}}jsmoljs/JSmolApi.js JSmolApi.js] | ||
-- also included in the distribution: {{file|jsmol.zip}} > {{folder|js}} > {{file|JSmolApi.js}} | -- also included in the distribution: {{file|jsmol.zip}} > {{folder|js}} > {{file|JSmolApi.js}} | ||
− | |||
− | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Legacy (Jmol.js) !! New (JSmol.min.js) | ! Legacy (Jmol.js) !! New (JSmol.min.js) | ||
+ | |- style="text-align:center; font-style:italic;" | ||
+ | | [[Jmol_JavaScript_Object/Legacy/Jmol_Js|documentation]] || [[Jmol_JavaScript_Object/Functions|documentation]] | ||
|- | |- | ||
| jmolInitialize || properties of the <code>Info</code> variable | | jmolInitialize || properties of the <code>Info</code> variable | ||
Line 39: | Line 41: | ||
| jmolMenu || Jmol.jmolMenu | | jmolMenu || Jmol.jmolMenu | ||
|- | |- | ||
− | | jmolSetAppletColor || <code>color</code> property of the <code>Info</code> variable | + | | jmolSetAppletColor || <code>color</code> property of the <code>Info</code> variable, or use the <code>background</code> command in a script |
|- | |- | ||
| jmolResizeApplet || Jmol.resizeApplet | | jmolResizeApplet || Jmol.resizeApplet | ||
Line 67: | Line 69: | ||
What has been just described (i.e., writing custom functions that allow to keep using the old calls as used with Jmol.js) has been implemented in a special new Jmol2.js 'adapter' library. If you use this, you can leave your existing calls to jmolApplet(), jmolButton(), jmolLink() etc. You just need to: | What has been just described (i.e., writing custom functions that allow to keep using the old calls as used with Jmol.js) has been implemented in a special new Jmol2.js 'adapter' library. If you use this, you can leave your existing calls to jmolApplet(), jmolButton(), jmolLink() etc. You just need to: | ||
− | + | {| | |
− | + | |- | |
− | + | ! method A: !! method B: | |
− | + | |- style="vertical-align: top;" | |
− | + | | | |
− | + | * ''Step 1:'' | |
− | |||
− | |||
− | |||
− | * ''Step 1'' | ||
** In all your pages, add a call to {{file|JSmol.min.js}} | ** In all your pages, add a call to {{file|JSmol.min.js}} | ||
** In all your pages, change the existing call to {{file|Jmol.js}} into {{file|Jmol2.js}} | ** In all your pages, change the existing call to {{file|Jmol.js}} into {{file|Jmol2.js}} | ||
− | + | | | |
− | + | * ''Step 1:'' | |
− | * ''Step 1'' | ||
** Open in a text editor both {{file|JSmol.min.js}}, {{file|Jmol2.js}} and a new blank document. Combine in this document the contents of {{file|JSmol.min.js}} followed by the contents of {{file|Jmol2.js}}. Save this new document as {{file|Jmol.js}} | ** Open in a text editor both {{file|JSmol.min.js}}, {{file|Jmol2.js}} and a new blank document. Combine in this document the contents of {{file|JSmol.min.js}} followed by the contents of {{file|Jmol2.js}}. Save this new document as {{file|Jmol.js}} | ||
** Do not change your pages, keep the existing call to {{file|Jmol.js}} | ** Do not change your pages, keep the existing call to {{file|Jmol.js}} | ||
− | + | |- style="vertical-align: top;" | |
− | + | | | |
− | |||
− | |||
* ''Step 2:'' | * ''Step 2:'' | ||
** Add the JSmol files and folders as appropriate † | ** Add the JSmol files and folders as appropriate † | ||
− | + | | | |
− | |||
* ''Step 2:'' | * ''Step 2:'' | ||
** Add the JSmol files and folders as appropriate † | ** Add the JSmol files and folders as appropriate † | ||
− | + | |} | |
− | + | ||
− | + | (†) That is described in the Installation and Initialization sections of [[Jmol JavaScript Object|this page]]. | |
− | (†) That is described in the Installation and Initialization sections of this page. | ||
For more details, read inside the Jmol2.js file itself. | For more details, read inside the Jmol2.js file itself. | ||
Line 107: | Line 100: | ||
=== Upgrading Jmol without using JSmol === | === Upgrading Jmol without using JSmol === | ||
+ | ''Note: since suport for Java applets is being removed from all major browsers, this procedure will most likely not work any more.'' | ||
− | If you have a | + | If you have a legacy site that uses Jmol.js, and you would prefer to stick with Java and just upgrade your site so that it still works, then all you have to do is the following: |
* Download the latest [http://sourceforge.net/projects/jmol/files Jmol ZIP file distribution]. | * Download the latest [http://sourceforge.net/projects/jmol/files Jmol ZIP file distribution]. | ||
Line 116: | Line 110: | ||
Everything should work as before, but users will see a much kinder, more welcoming warning message the first time they access the new applet. Of course they will still have to give permission for the applet to be run, maybe in several dialogs. Please be aware that most users will not be able to see Jmol applets in their browser. | Everything should work as before, but users will see a much kinder, more welcoming warning message the first time they access the new applet. Of course they will still have to give permission for the applet to be run, maybe in several dialogs. Please be aware that most users will not be able to see Jmol applets in their browser. | ||
+ | |||
+ | == Converting the oldest Jmol pages that used the <applet> syntax == | ||
+ | |||
+ | The very ancient syntax (dating up to 2006 at least) for including Jmol Java applets in web pages used the html <code><applet></code> tag for both the Jmol panels and the buttons acting on them. | ||
+ | Both were embedded in the page by using just the JmolApplet.jar file and specific applet tags. | ||
+ | :[[Jmol JavaScript Object/Legacy/Applet Tags|A description of the old applet syntax]]. | ||
+ | |||
+ | Of course, with time web browsers abandoned the use of embedded Java applets and hence Jmol, then JSmol, evolved to new syntaxes, first with the use of the <code>Jmol.js</code> library (to facilitate the insertion of applets as such or as embed tags) and later with the <code>JSmol.min.js</code> library and its accessory files (to switch to fully html5-compliant objects instead of applets). | ||
+ | |||
+ | So there are old pages that used the <code><applet></code> tags, and here is a method to resuscitate them without rewriting all their code to new JSmol syntax, just by adding calls to two JavaScript files. You only need the standard files composing the JSmol library (included in downloadable Jmol distribution) and an additional adapter file: {{file|convertJmolApplets.js}}. | ||
+ | |||
+ | '''Instructions:''' | ||
+ | |||
+ | In the folder that contains your pages (or elsewhere if you adjust the paths), add these items extracted from the {{file|jsmol.zip}} package which is, in turn, contained in the downloaded distribution of Jmol: | ||
+ | * the whole {{folder|j2s}} folder | ||
+ | * the whole {{folder|php}} folder | ||
+ | * the {{file|JSmol.min.js}} file | ||
+ | * the 'adapter' library, {{file|convertJmolApplets.js}} (extracted from [[:File:ConvertJmolApplets.zip|this zipfile]]) | ||
+ | |||
+ | Then, in the <code>head</code> section of your page, include the calls to both js files, something like this: | ||
+ | <script src="JSmol.min.js"></script> | ||
+ | <script src="convertJmolApplets.js"></script> | ||
+ | |||
+ | That's all ! <br>Save the modified page and test it in the web browser. | ||
+ | If you need help, do not hesitate to contact the jmol-users list or [[User:AngelHerraez|AngelHerraez]] ([[User talk:AngelHerraez|talk]]) |
Latest revision as of 08:44, 28 August 2022
Converting legacy web pages to JSmol
Contents
Overview
It is not hard to convert pages that used the Jmol Applet to use the HTML5 versions of JSmol. The basic sequence includes:
- Switching from Jmol.js to JSmol.min.js
- Adding the j2s folder/directory to your website.
- Setting parameters in the
Info
variable. - Modifying function calls from the format
jmolXxxx(..., appletExtension)
toJmol.jmolXxxx(appletID, ...)
(see below). Depending upon the magnitude of the problem, you may want to write (but read the next section first!) a set of JavaScript functions that allow you to keep your page source code unchanged. For example, if you use the simplest form of jmolButton, the converting function would be:
function jmolButton(script, label) { Jmol.jmolButton(myJmol, script, label) }
Or you can modify your page source code to use the new format. Or, easiest solution, use the 'adapter' library described below.
Table of equivalence old vs. new functions
The main methods formerly implemented in Jmol.js (and more!) have now equivalent functions that can be found in JSmolApi.js -- also included in the distribution: jsmol.zip > js > JSmolApi.js
Legacy (Jmol.js) | New (JSmol.min.js) |
---|---|
documentation | documentation |
jmolInitialize | properties of the Info variable
|
jmolApplet | Jmol.getApplet or Jmol.getAppletHtml |
jmolButton | Jmol.jmolButton |
jmolLink | Jmol.jmolLink |
jmolCheckbox | Jmol.jmolCheckbox |
jmolRadioGroup | Jmol.jmolRadioGroup or Jmol.jmolRadio |
jmolMenu | Jmol.jmolMenu |
jmolSetAppletColor | color property of the Info variable, or use the background command in a script
|
jmolResizeApplet | Jmol.resizeApplet |
jmolHtml | Jmol.jmolHtml |
jmolBr | Jmol.jmolBr |
jmolScript | Jmol.script |
jmolScriptWait | Jmol.scriptWait, but you should consider using Jmol.evaluateVar instead |
jmolScriptWaitAsArray | Jmol.scriptWaitAsArray |
jmolCommandInput | Jmol.jmolCommandInput |
jmolSaveOrientation | use Jmol.script with save orientation command
|
jmolRestoreOrientation | use Jmol.script with restore orientation command
|
jmolRestoreOrientationDelayed | use Jmol.script with restore orientation command
|
jmolSetDocument | Jmol.setDocument, usually in combination with Jmol.getAppletHtml |
Conversion using the Jmol2.js 'adapter' library
What has been just described (i.e., writing custom functions that allow to keep using the old calls as used with Jmol.js) has been implemented in a special new Jmol2.js 'adapter' library. If you use this, you can leave your existing calls to jmolApplet(), jmolButton(), jmolLink() etc. You just need to:
method A: | method B: |
---|---|
|
|
(†) That is described in the Installation and Initialization sections of this page.
For more details, read inside the Jmol2.js file itself.
- In the Jmol download, Jmol-14.x.x-binary.zip > jsmol.zip > jsmol\js\Jmol2.js
- In the JSmol repository
- at StOlaf
Upgrading Jmol without using JSmol
Note: since suport for Java applets is being removed from all major browsers, this procedure will most likely not work any more.
If you have a legacy site that uses Jmol.js, and you would prefer to stick with Java and just upgrade your site so that it still works, then all you have to do is the following:
- Download the latest Jmol ZIP file distribution.
- Extract all the JmolAppletSigned0*.jar files in the applet directory (you should not be using the JmolApplet0*.jar files any more, unless you are certain what you are doing, since the unsigned applet will be blocked in browsers).
- Use the most recent version of Jmol.js that you have, or retrieve it from St. Olaf.
- Upgrade your site's Jmol.js and your JAR files with the files you have extracted.
Everything should work as before, but users will see a much kinder, more welcoming warning message the first time they access the new applet. Of course they will still have to give permission for the applet to be run, maybe in several dialogs. Please be aware that most users will not be able to see Jmol applets in their browser.
Converting the oldest Jmol pages that used the <applet> syntax
The very ancient syntax (dating up to 2006 at least) for including Jmol Java applets in web pages used the html <applet>
tag for both the Jmol panels and the buttons acting on them.
Both were embedded in the page by using just the JmolApplet.jar file and specific applet tags.
Of course, with time web browsers abandoned the use of embedded Java applets and hence Jmol, then JSmol, evolved to new syntaxes, first with the use of the Jmol.js
library (to facilitate the insertion of applets as such or as embed tags) and later with the JSmol.min.js
library and its accessory files (to switch to fully html5-compliant objects instead of applets).
So there are old pages that used the <applet>
tags, and here is a method to resuscitate them without rewriting all their code to new JSmol syntax, just by adding calls to two JavaScript files. You only need the standard files composing the JSmol library (included in downloadable Jmol distribution) and an additional adapter file: convertJmolApplets.js.
Instructions:
In the folder that contains your pages (or elsewhere if you adjust the paths), add these items extracted from the jsmol.zip package which is, in turn, contained in the downloaded distribution of Jmol:
- the whole j2s folder
- the whole php folder
- the JSmol.min.js file
- the 'adapter' library, convertJmolApplets.js (extracted from this zipfile)
Then, in the head
section of your page, include the calls to both js files, something like this:
<script src="JSmol.min.js"></script> <script src="convertJmolApplets.js"></script>
That's all !
Save the modified page and test it in the web browser.
If you need help, do not hesitate to contact the jmol-users list or AngelHerraez (talk)