Marvin Live developer guide - resolver plugins

Marvin Live resolver plugins load molecules into the editor by fetching the source for a given corporate or database ID. These plugins are NodeJS modules, stored in a folder set by Marvin Live’s configuration file.

Prerequisites

  • an instance of Marvin Live available for development purposes, i.e.: the ability to stop and start it, to try different configuration options

  • familiarity with JavaScript, NodeJS and its module system

  • good understanding of Promises

Resolver plugins

This plugin type is intended to fetch the MRV or SDF formatted chemical structure corresponding to a company specific ID or an alias, by making asynchronous network requests to RESTful JSON services.

images/download/attachments/46800076/Screen_Shot_2014-12-15_at_16.30.29.png

Life-cycle

Marvin Live scans the services directory to find the resolver plugins and generates a GUI element where chemists can type IDs. There may be only 1 resolver plugin active in a meeting room.

images/download/attachments/46800076/sEhR--ddDnTUDhV_c4vFDdA.png

Specification

Resolver plugins are NodeJS modules , denoted by their filename: *.resolve.js and their location in the services directory as configured during installation.

A resolver plugin exports the following required properties:

Name

Type

Description

resolve

function

The main function of the plugin, called when the chemist types an ID. The function should resolve the given ID or alias to a chemical structure and must return a Promise of the results. The results are broadcasted by the application.

Arguments:

  • id (string) ID or alias

  • this includes domain and roomName for the current call

Return value: Promise

The fulfillment value of the promise must be a chemical structure in SDF or MRV format. A rejected promise will display an error to the chemist.

name

string

Unique identifier of the plugin, used by Marvin Live for identification and internal communication. If multiple plugins use the same identifier, the last one to be loaded overrides the others.

label

string

Human readable name of the plugin, used by Marvin Live to display GUI elements related to this plugin.

domains

array of strings

List of domains where this plugin may be used, when authentication is enabled in Marvin Live. Use * to allow any domain. If no authentication is setup, this option has no effect. To query the configured domains, send a GET request to /domains or open /domains in your browser.

Examples

You can find a brief selection of plugins in this archive for: custom dictionaries in Name to Structure and Compound Registration.

images/inline/1cc77a416c910f0d413f9a1c307e85f4f48152aa.png