Skip to content

deephaven/deephaven-js-plugin-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DEPRECATED

Please use the cookiecutter templates instead.

Use this Template to create a JavaScript Plugin. It is set up with TypeScript, React, ESLint, Prettier, sass, and image loader. Use this template as a starting point for creating new Deephaven JavaScript Module Plugins. Each JavaScript module may or may not include different plugin types, such as a DashboardPlugin or a TablePlugin.

Initial Setup

After checking out this template for the first time:

  1. Do an npm install

Build the Plugin

npm run build

Your output will be in dist/index.js

Source Files

Your main source file is src/index.ts. From this file, export the plugin types you want to register. For example, you can export a DashboardPlugin and a TablePlugin from this file.

Installing the Plugin Module

Development Installation

In development, run npm start to start a local build that watches for changes. Anytime you make a change to the source code, your build will update. You'll then need to define a manifest.json in the parent directory, using the name of this directory as the name of the plugin. For example, a proper manifest would be:

{
  "plugins": [{ "name": "deephaven-js-plugin-template", "version": "0.0.1", "main": "dist/index.js" }]
}

You can then start up Deephaven using the parent directory with the manifest.json file as the plugin directory:

START_OPTS="-Ddeephaven.jsPlugins.resourceBase=/path/to/manifest/directory" ./gradlew server-jetty-app:run

Then, refresh your browser after making changes to the source code to see your changes.

Production Installation

In production, you need to publish your plugin:

  • Publish your package: You'll need to publish your package so it can be installed in a production Deephaven environment.
  • Install the package: After the plugin is published, you install the plugin in your Docker image so it can be used.

Plugin Types

A module can optionally export one or more of the following types of plugins.

Dashboard Plugin (DashboardPlugin)

Export a DashboardPlugin from the module to register a Dashboard Plugin. Dashboard Plugins can listen for and emit events on a Dashboard, register their own type of components for display in a Dashboard, and display their own UI overtop of a Dashboard.

Table Plugin (TablePlugin)

Set the PLUGIN_NAME attribute on the Table with the name of the plugin.

from deephaven import empty_table
t = empty_table(5).update("X=i")
t = t.with_attributes({'PluginName': 'deephaven-js-plugin-template'})

Authentication Plugin (AuthenticationPlugin)

Export an AuthenticationPlugin from the module to register an Authentication Plugin. Authentication Plugins can provide a UI for authenticating users and provide credentials when connecting to the Deephaven server.

For some examples of the core Authentication Plugins, see the @deephaven/auth-plugins package. This package includes plugins for anonymous, pre-shared key, and parent window authentication.

For a complete example of an Authentication Plugin that authenticates using Keycloak, see the @deephaven/auth-keycloak repository.

About

Deephaven JS Plugin template

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •