All files / Sources/Common/DataModel/Molecule index.js

100% Statements 14/14
85.71% Branches 6/7
100% Functions 2/2
100% Lines 14/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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        1x                               4x             1x                         4x     4x   4x 3x   4x 3x   4x 3x     4x     4x         1x          
import macro from 'vtk.js/Sources/macros';
 
// ----------------------------------------------------------------------------
 
const MOLECULE_FIELDS = [
  'chemical json',
  'name',
  'inchi',
  'formula',
  'atoms',
  'bonds',
  'properties',
];
 
// ----------------------------------------------------------------------------
// vtkMolecule methods
// ----------------------------------------------------------------------------
 
function vtkMolecule(publicAPI, model) {
  // Set our className
  model.classHierarchy.push('vtkMolecule');
}
 
// ----------------------------------------------------------------------------
// Object factory
// ----------------------------------------------------------------------------
 
const DEFAULT_VALUES = {
  'chemical json': 0,
  name: '',
  inchi: '',
  formula: '',
  atoms: null,
  bonds: null,
  properties: null,
};
 
// ----------------------------------------------------------------------------
 
export function extend(publicAPI, model, initialValues = {}) {
  Object.assign(model, DEFAULT_VALUES, initialValues);
 
  // Object methods
  macro.obj(publicAPI, model);
 
  if (!model.atoms) {
    model.atoms = {};
  }
  if (!model.bonds) {
    model.bonds = {};
  }
  if (!model.properties) {
    model.properties = {};
  }
 
  macro.setGet(publicAPI, model, MOLECULE_FIELDS);
 
  // Object specific methods
  vtkMolecule(publicAPI, model);
}
 
// ----------------------------------------------------------------------------
 
export const newInstance = macro.newInstance(extend, 'vtkMolecule');
 
// ----------------------------------------------------------------------------
 
export default { newInstance, extend };