Changelog

4.7.0

May 06, 2012

Executive Summary

This significant update improves performance and graphics for both 2D and 3D components. PDB file reading has been optimized on the Javascript side, and you can now control the resolution of protein and nucleic meshes, leading to significantly faster loading. Two new spectrum components have been added, OverlayCanvas which draws several spectra in the same domain, and SeekerCanvas which shows plot coordinate information.

Additions

  1. Improved the rendering of bonds adjacent to atom labels. The graphics are now significantly better. The visual specification, bonds_atomLabelBuffer_2D, is no longer a percentage of the bond length, but is now the buffer between atom labels and bond ends in pixels.
  2. You can now control the resolution of PDB meshes with the visual specifications: proteins_verticalResolution, proteins_horizontalResolution, and nucleics_verticalResolution. The are set to high quality models by default, for low quality models, set all these values to 3. This improvement is so significant, that even huge PDB files, such as 3CC2 with nearly 100 thousands atoms, will have meshes generated by the ChemDoodle Web Components in a few seconds. The PDB demo has been updated to use low quality meshes for large structures.
  3. A new spectrum component, OverlayCanvas, will overlay several spectra in the same domain. You can see the tutorial page for this component here.
  4. A new spectrum component, SeekerCanvas, will display plot coordinate information based on input events. You can see the tutorial page for this component here.
  5. The Spectrum class has a new function, getInternalCoordinates(), that will convert screen coordinates to spectrum coordinates.
  6. The Spectrum class has a new function, getClosestPlotInternalCoordinates(), that will convert screen coordinates to the closest plot coordinates.
  7. Added getInverseTransformedY() function to the spectrum class.
  8. PDBInterpreter now adheres to CONECT records, and will only deduce HETATM bonds if no CONECT records are present.
  9. PDBInterpreter bond deduction is now much faster for residue bonds. PDBInterpreter has a new parameter, deduceResidueBonds, to determine if residue bonds should be found. This is false by default.

Fixes

  1. Significantly improved the rendering efficiency of 2D components. This is most noticeable on mobile devices.
  2. Fixed major bug that caused Apple Safari to crash on Mac OS X Lion when large spectra were rendered.
  3. Nucleotide backbone meshes are now segmented to avoid exceeding the WebGL index buffer size.
  4. Fixed slits that appeared on some large ribbon models.

4.6.2

April 17, 2012

Executive Summary

This is a bugfix update to the components, bringing 1 new feature, a package to help load files from your server via url (as opposed to a server side script like PHP).

Additions

  1. There is a new file package, ChemDoodle.io.file, with a function, content(). This content function will retrieve the content of a file given a URL for use with the ChemDoodle Web Components. This function works via AJAX and is an alternative to using server side scripts to print file contents to the HTML page. Note that this function is asynchronous and the download will occur separately from the rest of the page, but it is more convenient for those that do not have access to a server side script, or for when an application needs an asynchronous load.

Fixes

  1. PDB optimization is now significantly faster.
  2. Fixed issue where a drawn bond in 2D would overfill the entire canvas if the start and end coordinates are identical.
  3. Fix several CIF parsing issues. CIF parser now respects bonds if present.
  4. A few code and performance improvements.

4.6.1

April 02, 2012

Executive Summary

This minor update provides a number of fixes and improvements. Of significant note are a new resize function, new mobile events, a greatly improved CIF parser, that should now handle any CIF file, and the fixing of a bug that affected the rendering of very long protein ribbons.

Additions

  1. Added a resize function, Canvas.resize(w, h), that will efficiently and quickly resize a Canvas at any time.
  2. The width/height ratio for WebGL Canvases are now automatically determined. The corresponding visual specification will now act as an override if set.
  3. Added a tap event to Canvases, Canvas.tap(). This event is a mobile event, and is fired when a user presses down and releases within a quarter of a second. This event will forward its action to the click event if tap is not set.
  4. Added a touchhold event to Canvases, Canvas.touchhold(). This event is a mobile event, and is fired when the user presses down and keeps the finger down without moving it for 1 second.

Fixes

  1. The CIF parser has been thoroughly improved and should now handle any CIF file presented.
  2. Fixed major bug where very long protein chains would produce a WebGL mesh with more vertices than allowed currently by WebGL vertex buffers, resulting in nonsense rendering. All protein chains will now render correctly, regardless of length.
  3. Zooming is now supported by Canvas3D in scenes with orthographic projections.
  4. The iChemLabs function, getSMILES(), will now automatically kekulize input.
  5. Added a defualt alt tag to the <canvas> constructor.

4.6.0

January 27, 2012

Executive Summary

This update provides Lewis Dot Structure rendering in 2D components, a new MovieCanvas3D component to play molecule movies, an XYZ file reader and several other minor additions and fixes.

Additions

  1. Lewis Dot Structures can now be rendered in 2D components. This is achieved by setting the Atom.numLonePair variable for atoms. The sketcher now contains tools for adding and removing lone pairs.
  2. A new component, MovieCanvas3D, will play molecule movies, given a set of Molecule data structures that represent the frames of the animation. You can control the speed of the animation, and several playback modes are provided. You can see the tutorial page for this component here.
  3. Added an XYZInterpreter class to read molecule data from XYZ files.
  4. The PyMOL color set for atoms is now provided in the ELEMENT array, and can be used with visual specifications identically to using the Jmol color set.
  5. Updated glMatrix to version 1.2.3.

Fixes

  1. Scaling 3D scenes is now more consistent as the scaling magnitude is now a function of the dimensions of the displayed structure.
  2. Eliminated the notch that could be seen in between bonds in some cases when the “Line” representation was being used.
  3. “Line” representation can now be used with residue visual specifications in PDB files.
  4. Fixed bug where charges were not shown on carbons without shown labels.
  5. Fixed issue where Atom.altLabel could not be set to the number 0.
  6. Lone atoms represented as dots will now correctly display their label when the atoms_showAllCarbons specification is true.
  7. Fixed bug where pinch gestures on the sketcher on mobile devices were throwing errors.
  8. Fixed bug where help icon was nonfunctional on mobile devices if the scale of the sketcher was not 1.
  9. Minor code improvements and optimizations.

4.5.0

January 06, 2012

Executive Summary

This update provides a few fixes and additions to the 2D components and several new features for the 3D components, including more coloring options for proteins, protein backbone rendering, star geometries, primitive line rendering, and the groundworks for our surfaces system, with dot and solid molecular surfaces.

Additions

  1. Molecular surfaces can now be displayed. Currently only very basic surfaces can be rendered. The new ChemDoodle.informatics.MolecularSurfaceGenerator class will generate surfaces given parameters for the atomic radii set to use, probe diameter and the resolution of the surface mesh. Visual specifications for surfaces are provided. Currently, only the "Dot" and "Solid" styles are provided. A "Mesh" style, as well as transparency, gradient coloring options, and the handling of Cube files will be provided in future releases.
  2. Added a new variable to the Atom class, altLabel, which does not need to be chemically significant and will be displayed instead of the element symbol for that atom. It will adhere to the same visual specifications that the element symbol adheres to.
  3. Primitive lines can now be rendered for bonds. A new 3D representation "Line" is provided.
  4. Alpha carbon backbones can now be displayed for proteins. You can control the thickness and color with visual specifications.
  5. A new visual specification, macro_colorByChain, will color a PDB file by chain by iterating through HSL colorspace.
  6. A new visual specification, proteins_usePolarityColors, will color amino acids in a PDB file by polarity.
  7. Star geometries can now be rendered for non-bonded atoms. This is useful for rendering ions/metals and for displaying water oxygens in crowded PDB files. Enable it with the visual specification, atoms_nonBondedAsStars_3D.
  8. A new visual specification, atoms_displayAllCarbonLabels_2D, to render all carbon labels. This is useful for rendering Lewis dot structures.

Fixes

  1. Fixed bug that prevented multiple SketcherCanvas instances from being declared on the same page
  2. Fixed bug where the help button on the SketcherCanvas did not function on mobile devices.
  3. Fixed bug with the SketcherCanvas where toolbars would appear cutoff on the sides of the screen if the sketcher was to close to the edges of the page.
  4. Added support for pixel ratios in WebGL canvases.

4.4.2

December 01, 2011

Executive Summary

This minor update provides a few improvements.

Fixes

  1. Mobile events are now only linked on mobile devices, while mouse and keyboard events are only linked on non-mobile devices. This fixes the issue where mobile browsers that simulate mouse events would be double calling component functions.
  2. Removed old if statements in WebGL shaders.
  3. Changed highp declaration in fragment shader to mediump to better support mobile devices.
  4. Atom symbols in MOLfile output are now left-aligned.

4.4.1

November 14, 2011

Executive Summary

This minor update provides a few improvements.

Additions

  1. When bonds are colored by Jmol colors, they can now be rendered with a color split, instead of a smooth gradient. By default, the color will be split; the color style can be set to a gradient by changing the bonds_colorGradient visual specification to true.
  2. Added a new iChemLabs function, getMoleculeFromContent(), which will return a Molecule data structure from an input string, given a format that ChemDoodle supports.
  3. Updated glMatrix to version 1.0.1.

Fixes

  1. Fixed issue where drop down buttons for the sketcher would not update the first time their function is changed.
  2. The JCAMPInterpreter will now recognize shift offsets.

4.4.0

September 28, 2011

Executive Summary

This significant update provides new WebGL features, CIF file interpretation, 3D graphics for nucleic acids, a handful of new iChemLabs services and general improvements.

Additions

  1. Advanced support for the features in PDB files. HETATM atoms are now displayed by default, as they usually describe ligands. Protein and nucleic acid atoms will be hidden by default, and can be shown with a visual specification. You can also control a cutoff distance from ligand atoms to show residue atoms. Water molecules can be shown and hidden with a visual specification.
  2. New 3D graphics for nucleic acids. Tubes represent the phosphate backbone with platforms representing the bases.
  3. Protein ribbons now have thicknesses and this can be controled with a visual specification.
  4. Crystallographic Information Files can now be read with the new CIFInterpreter class. See this page for more details.
  5. Unit cells can now be rendered for relevant data, and will be automatically rendered for CIF data. The unit cell color and line width can be set with visual specifications.
  6. Added new iChemLabs services.
    1. kekulize() – provided with an input Molecule, this function will kekulize either the entire single bond system, or just the resonance bonds into a valid kekule structure where pi delocalization is maximized; the kekulized copy structure will be returned as a parameter to the callback function
    2. isGraphIsomorphism() – this function will determine if the arrow molecule is a graph isomorphism of the target molecule, with the boolean value being returned as a parameter to the callback function
    3. isSubgraphIsomorphism() – this function will determine if the arrow molecule is a subgraph isomorphism of the target molecule, with the boolean value being returned as a parameter to the callback function
    4. readIUPACName() – given an IUPAC name, the corresponding molecule will be returned as a parameter to the callback function
    5. generateImage() – generates an image file of the input Molecule in any of the chemical formats that ChemDoodle understands (specified by the ext parameter); returns a link to the callback function that is the url of the file on our server that can then be downloaded
    6. getZeoliteFromIZA() – given an IZA code, the read zeolite, in a Molecule data structure, will be returned as a parameter to the callback function; the three number parameters are the supercell dimensions, and if not specified, will default to 1
  7. Visual specifications can now be set to individual atoms, bonds or groups, for total control over graphical rendering. See this page for more details.
  8. Canvases now take into account the device pixel ratio for absolutely crisp graphics on mobile devices that support densely packed pixels. In other words, the Retina display on the iPhone 4 is now supported as well as various Android devices that have high resolution screens.
  9. Added a new class, Splitter, to split a Molecule data structure composed of multiple discrete structures, into individual Molecule data structures.
  10. A new feature detection function, ChemDoodle.featureDetection.supports_gesture(), to determine if the browser supports multitouch and gestures.
  11. iChemLabs services are asynchronous by default; they can now be forced synchronous, by setting the ChemDoodle.iChemLabs.asynchronous variable to false.
  12. Orthographic projections for WebGL canvases can now be set with visual specifications.
  13. The calculator for the sketcher now lists more descriptors.
  14. The calculator for the sketcher now displays units for calculations.

Fixes

  1. Renamed the “ribbon” visual specifications to more closely match the standards by which the other specifications are named. Make sure to update these names in your programs.
  2. MOLInterpreter no longer multiplies the y coordinate by -1, as necessary for 2D files, if the multiplier is 1, so stereocenters in 3D files remain correct.
  3. Added shader debug alerts for program linking.
  4. Removed all double quotes in Javascript source, replacing them with single quotes to remain consistent throughout the source code.
  5. WebGL code cleaning and optimizing.

4.3.1

August 18, 2011

Executive Summary

This minor version update fixes a few bugs.

Additions

  1. A new package ChemDoodle.io.PNG, for generating png images from Canvases.
  2. Added 2D rendering support for hashed and wavy bonds.
  3. Now packaged with jQuery 1.6.

Fixes

  1. Minor optimizations.
  2. Spectrum x-axis now intelligently lays out tick labels so they don’t overlap.
  3. Spectrum y-axis grids are now displayed even if the y-axis is hidden.
  4. Fixed issue for Safari on Mac OS X Lion where group buttons for the sketcher would open their tray behind the sketching canvas.

4.3.0

April 28, 2011

Executive Summary

This update introduces a new component, the Periodic Table Canvas, which displays an interactive and customizable periodic table of elements. Minor bug fixes are also provided.

Additions

  1. A new component, the Periodic Table Canvas is introduced. This component displays a periodic table of elements. The graphics are fully customizable and you can attach input events to the component. The most immediate use of this component is as the element chooser in the 2D sketcher. The tutorial page on this component can be found here.
  2. Components may now be constructed on <canvas> elements already constructed in the DOM. Just set the id of the <canvas> element to a value to be used in the component constructor, and that <canvas> will become the component instead of a new one being generated.

Fixes

  1. Fixed issue where improperly formatted, non-official, PDB files using the ATOM record caused issues.
  2. Fixed issue where name values were not being properly interpreted in some PDB files.
  3. Fixed issue where elements with no published vdW radii caused rendering issues when vdW radii were used. The default value of 1Å is now used if no published value is provided. These values may always be set in the ChemDoodle.ELEMENT array.
  4. Fixed issue where starting a mobile gesture did not clear a ring preview for the sketcher.
  5. Fixed uncought bug when trying to load a null molecule into the sketcher.

4.2.2

March 13, 2011

Executive Summary

This minor update provides full support for Microsoft Internet Explorer 9. Additionally, a few features are improved and a few bugs are fixed. The performance of the 3D components in Google Chrome has been further optimized and is now very fast for even the largest 3D scenes.

Additions

  1. Microsoft Internet Explorer 9 is now fully supported. Try the sketcher!
  2. iChemLabs services now work in IE9 and Opera. Try any of the non-WebGL demos in any browser, and it should work.
  3. Improved the rendering of wedge bonds for 2D components.
  4. Added two new visual specifications, atoms_font_bold_2D and atoms_font_italic_2D, which will control whether atom labels are drawn with bold and italic styles.
  5. Added more robust color support for 3D components. Colors for visual specifications can now be specified in HEX, RGB, or by named color.

Fixes

  1. Fixed issue where element types with 2 or 3 length symbols were not being properly read from PDB files.
  2. Improved WebGL performance to be very efficient in Google Chrome.

4.2.1

March 08, 2011

Executive Summary

The minor update brings several WebGL optimizations to improve performance in Google Chrome. The glMatrix library is updated to version 0.9.5.

4.2.0

February 24, 2011

Executive Summary

This update provides significant new WebGL features. The PDBInterpreter class will now parse residue data and generate ribbon models for WebGL scenes. Support is provided for both proteins and nucleic acid based macromolecules. Many options are provided, such as cartoon based graphics and different residue color sets. Additional WebGL features include higher bond order rendering and efficiency improvements. The mobile touch event and gesture system has been upgraded to support more advanced gestures, such as multiple-taps and multiple-touch drags.

Additions

  1. The PDBInterpreter class will now parse residue data from files and generate ribbons for rendering. The ribbons can be continuous or cartoonized. Both “Amino” and “Shapely” residue color sets are provided. All colors for ribbons and cartoon models can be customized. Both the front and back colors of ribbons can be customized.
  2. Added a new static HashMap, ChemDoodle.RESIDUE, that contains Residue data structures and associated information.
  3. Added a new function, ChemDoodle.iChemLabs.getOptimizedPDBStructure(), that will use iChemLabs services to download and parse a PDB file by id and return optimized structure and ribbon data. Using this function is magnitudes faster than printing the PDB file to a variable and parsing in Javascript.
  4. Added new VisualSpecifications.bonds_showBondOrders_3D, that when set to true, will render higher order bond orders in WebGL scenes. The higher order bonds will always orient themselves to face the camera.
  5. Added new VisualSpecifications.atoms_vdwMultiplier_3D specification, that will multiply to the van der Waals radius in WebGL scenes when vdW radii are used.
  6. Added higher level mobile gesture, _Canvas.multitouchmove, that will notify a Canvas when multiple fingers are moving.
  7. Added higher level mobile gesture, _Canvas.dbltap, that will notify a Canvas when a finger double-taps. If this is not implemented, an event is sent to the dblclick handler, if available.
  8. All ChemDoodle.iChemLabs calls now accept an optional parameter function, called errorback, that will be automatically called if any errors or warnings are thrown using iChemLabs services.

Fixes

  1. Fixed issue for the PerspectiveCanvas, on mobile devices, where the y-axis scale would initially jump when doing a pinch gesture to scale the spectrum.
  2. Double tapping a PerspectiveCanvas on mobile devices will now reset its view.
  3. Two finger sliding on a PerspectiveCanvas on mobile devices will translate the spectrum view.
  4. The sketcher, on mobile devices, now reverses single-tap events if multiple fingers are detected.
  5. Fixed issue where plus and minus keys were not being recognized in Firefox/Opera.
  6. All Array appends based on “array[array.length] =” have been changed to array.push().
  7. Improved WebGL Ball and Stick rendering.
  8. Improved WebGL rendering efficiency.
  9. The default multiplier for reading PDB files is now 1.

4.1.0

February 10, 2011

Executive Summary

This update brings significant improvements to the Spectrum canvas. Interpretation of JCAMP files has been perfected. Additionally, interfacing with iChemLabs services is now much cleaner, with proper warning messages when XHR2 is not supported. XHR2 support for Firefox 3 is now provided, so iChemLabs services now work in all browsers except Opera.

Additions

  1. Added new iChemLabs services functions, simulate1HNMR(), simulate13CNMR() and simulateMassParentPeak(), to simulate various spectroscopic methods in Javascript.
  2. The JCAMPInterpreter class now has a boolean parameter, convertHZ2PPm, which, when true, will automatically convert spectra in HZ to PPM when read.
  3. Added a new gesture to the PerspectiveCanvas, shift+drag, which slides the spectrum.
  4. Added a new option to the Spectrum class which allows for autoscaling the y-axis when zoomed in.
  5. Added a new Spectrum function, alertMetadata(), which will pop up an alert displaying the header information of the corresponding JCAMP file.
  6. Added new functionality to the Spectrum class, to render spectrum metadata at the top left corner of its plot. This list display is completely customizable.
  7. Integrations now ignore any y-values less that 1% of the maximum y-value in the spectrum. This parameter is tunable.
  8. Setting an unsymmetrical bond (wedge, double in ring) bond type twice in the SketcherCanvas will flip the bond.
  9. An error message is now displayed when contacting iChemLabs services and XHR2 is not supported.
  10. Added iChemLabs services support to Firefox 3; now iChemLabs services are supported in all recent browsers, except Opera.
  11. The ChemDoodle.featureDetection.supports_xhr2() function is now local and no longer requires iChemLabs services.
  12. The ChemDoodle Web Components qUnit testing suite is now provided in the download.
  13. Updated jQuery to version 1.5.

Fixes

  1. The spectrum y-axis now scales in place.
  2. Fixed issue where the JCAMPInterpreter was rounding peak table values.
  3. Integration lines now remain static when the y-axis is scaled.
  4. Fixed issue where performance would degrade when zooming in on a spectrum.
  5. Fixed bug where a crash would occur when zooming in close on an integration line.
  6. Spectrum x-axis ticks are now more sensitive for better display of information.
  7. Fixed issue where the JCAMPInterpreter class was incorrectly handling x-sequence checks.
  8. JCAMPInterpreter now correctly handles y-value checks.
  9. JCAMPInterpreter now reads in JCAMP peak tables that are missing semicolon delimiters.
  10. The help button in the SketcherCanvas component is now clickable regardless of the current Canvas scale.
  11. Implicit hydrogen counts are now properly accounted for based on charge and valence.
  12. Fixed bug where setting the same bond multiple times caused multiple actions to be pushed to the history stack in the SketcherCanvas.
  13. Fixed bug where the multiplier to the ChemDoodle.readPDB() shortcut was being ignored.
  14. Scrolling sensitivity is increased by a factor of 10 to account for upcomming browser changes.
  15. Minor improvements to the WebGL rendering code.
  16. Removed dead code.
  17. Added semicolons after local function objects to avoid possible issues in the future.

4.0.0

January 12, 2011

Executive Summary

This massive update brings a new full-featured sketching component for desktop and mobile devices, full access to the ChemDoodle desktop API through AJAX, improved animations, further optimized and smaller Javascript, new and improved packaging to reduce polluting the global Javascript namespace, and a polished touch event and mobile gesture framework. Some aspects of the API have changed slightly, so be sure to refer to the new API page.

Additions

  1. A new full-featured sketching component, SketcherCanvas, has replaced the DoodleCanvas component. This component is completely customizable, from the buttons and canvas theme, to the way structures are rendered. This is the most professional and advanced web based sketcher available, with or without plugins. It is completely free and open-source.
  2. The ChemDoodle Web Components library now has full access to the entire ChemDoodle desktop API through AJAX XMLHttpRequest Level 2 to our server. Now you can use the ChemDoodle Web Components library to manipulate SMILES, read and write ChemDoodle and ChemDraw files, simulate NMR, generate descriptors and much more.
  3. The ChemDoodle Web Components library has been rewritten using closures. This optimizes the code for faster performance, and allows the code to be minified smaller. Also, only the ChemDoodle variable is now placed into the global Javascript namespace, so no conflicts should occur with other libraries. All functions in the ChemDoodle Web Components library can be accessed through the ChemDoodle variable. This means that the API has changed a bit. All code is now organized into packages that can be easily used and extended.
  4. Added a complete and thorough tutorial to introduce users to using the ChemDoodle Web Components library. It covers everything from using the ChemDoodle object, to creating complex animations, to generating SMILES strings.
  5. The animations framework has been improved. The framework now keeps track of time between repaint calls, for very smooth and consistent animations across all devices. The default timeout now specifies framerates of 30fps. The abstract nextFrame() function now takes a delta parameter to notify the update of how much time has ellapsed since the last call.
  6. Calls to WebGL have been updated in anticipation for the official launch of the technology.
  7. The WebGL warning has been removed, and WebGL canvases now just render that WebGL is unavailable if they cannot perform.
  8. Double-clicking on the TransformCanvas component now centers the structure.
  9. The touch event and mobile gesture framework has been improved to better handle mobile devices.
  10. A new function has been added to retrieve the version of the current source, ChemDoodle.getVersion().
  11. Added a new specification for molecular data in JSON for optimized storage and handling of chemical information.

Fixes

  1. Charges are now placed in more aethetic positions.
  2. Fixed bug where bonds referenced past rings, even after they were destroyed.
  3. Fixed a rare issue where some mouse events were being doubly called.
  4. Multi-word font names are now handled properly.
  5. Removed Hanser ring detection.
  6. Fixed bug where wedge bonds did not color according to JMol colors when the corresponding specification was set.
  7. Changed key event access from keyCode to which.
  8. Removed unnecessary semicolons after loops.

3.5.1

November 28, 2010

Executive Summary

This is a minor update, adding the ability to render isotope mass values as well as providing a few bug fixes and improvements.

Additions

  1. Isotope mass values are now displayed in the appropriate position next to atom labels. This value is defined by the Atom.mass variable. By default it is -1; the attribute will be rendered if this variable is set to a positive value. The Element class now holds an additional variable, Element.mass, which defines the integer value for the mass of the most abundant isotope of the element. The MDLInterpreter class now reads and writes isotope mass values.

Fixes

  1. Changed all calls to jQuery from $. to jQuery. to avoid conflicts with other 3rd party libraries that may be in use.
  2. Updated font selections on the overview pages to better suit macs and mobile devices.
  3. Removed redundant parseInt calls in MDLInterpreter.
  4. Removed unneccessary variable declarations.
  5. Updated the calculation of mobile event locations in accordance with the iOS 4.2 update.
  6. Fixed issue where a mobile touch event would be registered after a gesture, causing irregular behavior in components on mobile devices.
  7. Added a fallback message to the canvas tags to be displayed if the browser in use does not support HTML5/Canvas. This should be an exceedingly rare occurance now.
  8. Updated jQuery to version 1.4.4. No changes were required.
  9. jQuery plugins in the ChemDoodleWeb-libs.js file are now labelled clearly. If you need to remove jQuery from the libs file, make sure to retain the plugins as those are still required for ChemDoodle Web Components to operate properly.

3.5.0

August 15, 2010

Executive Summary

Components for spectra and reactions have been added. The entire library has been optimized to significantly improve performance across browsers and to minimize size, including the removal of several external libraries. 3D ChemDoodle Web Components have also been optimized and updated to reflect recent retrospective changes to the development browsers.

Additions

  1. Spectrum graphics are now provided. Added SpectrumCanvas as a child of Canvas for rendering spectra. There are currently two children, ObserverCanvas, which displays a static image of a spectrum, and PerspectiveCanvas which allows for interaction with a spectrum. Spectrum graphics are completely customizable and grids and integration lines can be shown.
  2. Added JCAMPInterpreter that reads JCAMP-DX spectra for the spectrum Canvases. All compressed JCAMP-DX data formats are read. Additional spectrum descriptors are also read, such as title, units, etc.
  3. Reactions graphics are now provided. Added a new component, Layout, which defines how multiple, related Canvases are displayed relative to each other. Currently, there is only a single Layout, SimpleReactionLayout that shows reactants and products with plus symbols in the appropriate places, as well as a reaction arrow and condition text. All decorations for Layouts are customizable.
  4. Charges are now rendered on molecules. Charges are now read and written by MDLInterpreter. The Doodler now manipulates charges using the + and - keys while an atom is hovered.
  5. Optimized the ChemDoodle Web Component library for faster loads, interpretation and runtimes.
  6. Hidden Carbons (those connecting two and only two bonds of the same bond order that are parallel to each other) will now have their labels drawn. The VisualSpecifications.atoms_showHiddenCarbons_2D boolean variable now controls this setting. It is true by default.
  7. Added more ring perception algorithms. All ring perception classes are now children of the RingFinder class which contains methods for reducing molecule graphs to improve perception runtimes. Ring perception classes include HanserRingFinder, EulerFacetRingFinder and SSSRFinder. ChemDoodle Web Components now use a more efficient means to calculate rings, rather than just using the Hanser method, leading to much faster page loads.
  8. Added Molecule.scaleToAverageBondLength() and Molecule.getAverageBondLength() to help in standardizing input from various sources of chemical files.
  9. Added Molecule.getBonds(Atom a) as a helper file to return an array of the Bonds connected to the input Atom. Removed the Molecule.getBondNumber(Atom a) function as it is now redundant. Changed the Molecule.getCoordinationNumber(Atom a) function to Molecule.getCoordinationNumber(Array bonds) to be more efficient with the added getBonds method.
  10. Added Bond.getLength() and Bond.getLength3D() helper methods.
  11. Added a new Counter class that is the parent for objects that calculate integer descriptors for molecules. Both FrerejacqueNumberCounter and NumberOfMoleculesCounter have been added.
  12. Setting VisualSpecifications.backgroundColor to null will now allow you to show transparent components.
  13. Added middlemousedown, middleclick and middlemouseup events to the Canvas class.
  14. File Loader now displays a message if the input file does not contain chemical or compatible data.
  15. The latest version of jQuery, 1.4.2, has been integrated.
  16. Removed the antiquated BrowserDetect external library. Replaced with simpler internal source.
  17. The Sylvester and glUtils external libraries have been replaced with the smaller and more efficient glMatrix library.

Fixes

  1. Changed the default framerate of animations to 20fps to greatly improve performance.
  2. Fixed a bug in the pre-handling of mobile events where coordinates were offset.
  3. Fixed issue where the default mobile actions for events were overridden even if the event was not supported.
  4. Fixed several issues in Opera, and the browser is now fairly well supported.
  5. Fixed bug where unsaturated terminal atoms would incorrectly stack Hydrogens vertically.
  6. Replaced the right-click and drag jQuery extensions with simpler and more reliable internal source. This fixes a number of inconsistencies in mouse gestures for some browsers.
  7. Removed unneeded source to make the library smaller and Google Closure is now used instead of Yahoo YUI to minimize and optimize the source.
  8. Modifier keys now call the Doodler to repaint for immediate visual feedback.
  9. Fixed issue where the bond highlight in the Doodler sometimes drew a full circle in Google Chrome.
  10. The quaternion rotations option for Transformer Canvases has been removed. The trackball external library has been removed.
  11. ChemDoodle Web Components will no longer hang when loading highly embedded ring systems.
  12. Fixed boundary conditions in Hydrogen label stacking to prefer horizontal layouts.
  13. Fixed issue where some rings were not discovered if the Molecule object’s graph was disjoint.
  14. Fixed issue where empty message did not appear in Firefox.
  15. Stopped automatic firing of the File Loader action when loaded in Firefox.
  16. 3D ChemDoodle Web Components have been updated to reflect the recent retrospective changes to the browsers.
  17. 3D ChemDoodle Web Components now use the correct recent WebGL typed arrays.

3.1.0

July 23, 2010

Executive Summary

Major additions in this release are the rendering of implicit hydrogens in 2D components and an advanced framework for handling touch events and gestures from mobile devices. iPhone OS and Android are now fully supported!

Additions

  1. The ChemDoodle Web Component framework for handling touch events and gestures from mobile devices (notably iPhone OS and Android) has been completed. The Canvas class now has 6 new optional abstract methods: touchstart, touchmove, touchend, gesturestart, gesturechange and gestureend.

    Users can interact with ChemDoodle Web Components through a desktop browser using a keyboard and mouse or through a mobile browser using touch events and gestures. For desktop browsers, implement the mouse and keyboard event listeners to perform actions. On mobile devices, the touch events and gestures will be closely mapped to the most equivalent mouse and keyboard event handlers. This is perfect for simple applications as the drag, mousedown and mouseup events are closely matched to touch events. However, hovering is something that is not possible on mobile devices, so mousemove handlers will never be called. Additionally, gestures like pinching have no mouse equivalent.

    To rectify this, write event handlers for any of the touch or gesture events to have mobile device interactions forwarded to more appropriate methods. If those mobile gesture handlers are implemented, the Canvas class will forward the corresponding events to them instead of to the mapped mouse and keyboard events. This way, you can implement all of the handlers for your single component and it will perform suitably on both desktop and mobile browsers!

  2. Implicit hydrogens are now rendered in 2D components for all atoms with visible labels. This specification is controlled by the VisualSpecificationsatoms_implicitHydrogens_2D variable which is true by default. The numbers in hydrogen labels will be properly subscripted and the hydrogens will stack depending on the orientations of bonds from the concerned atom.
  3. To correspond with the rendering of implicit hydrogens, a new VisualSpecifications variable, atoms_displayTerminalCarbonLabels_2D, has been added that will show carbon labels for terminal carbons. Combined with the atoms_implicitHydrogens_2D specification, methyl groups can be nicely displayed. This specification is false by default.
  4. Animations for Rotators and Rotator3Ds can now be toggled by double clicking on them.

Fixes

  1. The zoom scale for Transformer components can no longer become a negative value, which caused molecules to invert.
  2. The element selecting algorithm performed when setting atom labels in the Doodler component has been greatly improved to mirror how ChemDoodle works.

3.0.0

February 06, 2010

Executive Summary

This release introduces 3D components based on WebGL technology to provide hardware accelerated 3D graphics in web browsers. The 3D components are in an alpha state due to the fact that the standard browsers do not yet support WebGL; they are fairly stable in the development browsers. Several prebuilt components are provided. Several visual representations are built in. An advanced Phong shader has been implemented in javascript/GLSL to provide quality graphics. A few minor issues with the 2D components have been fixed.

Additions

  1. New 3D components have been included: Viewer3D, Rotator3D, Transformer3D and MolGrabber3D. Their implementation and functionality is very similar to their 2D analogues. The API has been updated for these new components.

Fixes

  1. Fixed small issue where short bond lengths were not clearing bond overlaps.
  2. Expanded the atomic data system to better match our ElementalData database. A new Element class has been added for storing elemental data, and an array of Elements is now provided in the ELEMENT hash array where the element symbol is the lookup key.
  3. Added more links and updated the browser compatibility list.

2.5.0

October 08, 2009

Executive Summary

This release stabilizes the API and provides in-depth extendable functionality for creating your own custom components. The API has seen some major changes (it has been significantly improved), so make sure to review it before upgrading. jQuery has been introduced to standardize the handling of user input events, simplifying the Canvas class. Two new components have been introduced: Slideshow and Hyperlink. In addition, our test driven development suite is now exposed on the site using a modified version of QUnit. ChemDoodle Web Components 2.5 works on all major browsers, including Microsoft Internet Explorer, Mozilla Firefox, Apple Safari and Google Chrome/Chromium. Yahoo YUI Compressor is now used to minify the libs for even faster page loads.

Additions

  1. A new Slideshow component has been added for displaying multiple molecules, one at a time, with transitions in between.
  2. A new Hyperlink component has been added to provide basic button-like interaction with visitors. This component is completely customizable, view the components page to see some nice examples. They can redirect users to urls or execute functions on click.
  3. The API for handling user input events has been changed significantly, all canvases are now extendable, and there is a new class called AnimatorCanvas to provide an extendable framework for producing animated components. The RotatorCanvas.startRotation() and RotatorCanvas.stopRotation() functions have been replaced with AnimatorCanvas.startAnimation() and AnimatorCanvas.stopAnimation() respectively. The API provided on the web is now much more thorough, better formatted, and is linked for easy navigation.
  4. The jQuery library is now used by the Canvas class to standardize the handling of user input events.
  5. Our test driven development suite is now exposed on the site using a modified version of QUnit.
  6. Images are now supported. You can set background images for the components, and hover images for the Hyperlinks. Images override the backgroundColor visual specification.
  7. Support for Google Chrome Frame has been implemented. The ChemDoodle Web Components now work beautifully on Microsoft Internet Explorer.
  8. Bond stereochemistry is now possible. You can specify protruding and recessed single bonds as well as ambiguous double bonds. They are drawn as solid and dashed wedges and a crossing double bond.
  9. New visual specifications added: atom label buffer, wedge thickness, hash width, hash spacing.
  10. Added another algorithm to the TransformCanvas for standard x and y axis 3D rotation. This is the default, as there seems to be an issue with quaternion rotations, where some mouse directions are reversed. To enable quaternion rotations, set the TransformCanvas.useQuaternions boolean to true.
  11. A new MolGrabberCanvas function, setSearchTerm(), has been added to preset a term to be queried on page load.
  12. Google Chromium added to the list of supported Linux browsers, and it works very, very well with the ChemDoodle Web Components.
  13. Yahoo YUI Compressor is now used to minify the the libs for even faster page loads.
  14. Added more links to the Community Resources section. If you have discussed or used the ChemDoodle Web Components, let us know and we will add a link to you as well.

Fixes

  1. Fixed issue where strokeStyle was not being set when drawing atoms as circles, leading to unexpected graphical effects when specifying bonds_JMOLColors to true. The strokeStyle is now set to ‘black’.

2.1.0

September 14, 2009

Executive Summary

This release adds new functionality and fixes some minor issues. For a nice demo of the enhanced ChemDoodle Web Components, visit web.chemdoodle.com/pdb.php.

Additions

  1. Sample PHP code for querying the RCSB Protein Data Bank has been added.
  2. The ability to read PDB files has been added, along with a new Angstroms per bond length visual specification.
  3. Both atoms and bonds within a molecule can now be sorted by z coordinates.
  4. Covalent bonds can now be calculated based on covalent radii.
  5. Added new functions for manipulating 3D coordinates between atoms.
  6. New visual specifications for contrasting bond overlaps.
  7. A function to remove Hydrogens and their bonds.
  8. Added a function to copy structures.
  9. The API has been completed.

Fixes

  1. When reading MOLFiles, the y coordinate is now flipped so that structures appear right side up on the inverted canvas.
  2. MOLFile output is now centered first.
  3. Fixed minor bug that mishandled null content sent to writeMOL(content).
  4. Fixed bug where strokeStyle was bring set for atom circle width instead of the correct lineWidth property.
  5. Submit button names no longer cause conflicts.

2.0.0

August 16, 2009
Initial public release.


1.0.0

June 15, 2009
Initial internal release.