Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/deephaven/js-plugin-template
A Template and Example Files for creating a Javascript Plugin
https://github.com/deephaven/js-plugin-template
deephaven javascript plugin
Last synced: 27 days ago
JSON representation
A Template and Example Files for creating a Javascript Plugin
- Host: GitHub
- URL: https://github.com/deephaven/js-plugin-template
- Owner: deephaven
- Created: 2021-01-25T17:15:10.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-05-24T16:14:44.000Z (over 1 year ago)
- Last Synced: 2023-05-24T17:26:52.442Z (over 1 year ago)
- Topics: deephaven, javascript, plugin
- Language: JavaScript
- Homepage:
- Size: 162 KB
- Stars: 0
- Watchers: 16
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DEPRECATED
Please use the [cookiecutter templates](https://github.com/deephaven/deephaven-plugins/tree/main/templates) instead.
Use this Template to create a Javascript Plugin
## Initial Setup
After checking out this template for the first time:
1. Do an `npm install`
## Source Files
1. Your main source file is `src/index.js`
It is defaulted to ExamplePlugin.jsx from the examples directory which is a Table Plugin. You may want to overwrite with ExampleAppPlugin.jsx
if you are writing an App Plugin.2. Copy any included source files into `src` maintaining their directory structure (none are needed for the examples).
## Build the Plugin
```
npm run build
```Your output will be in `dist/main.js`
## Uploading the Plugin
1. Create a directory on the Server to place the plugins.
```
sudo -u irisadmin mkdir /etc/sysconfig/deephaven/plugins/javascript-plugins
```2. Set the config value for `Webapi.plugins` to point to the plugins directory.
- Export props:
```
sudo -u dbquery /usr/illumon/latest/bin/etcd_prop_file --export iris-environment.prop /tmp
```
- Edit `/tmp/iris-environment.prop` and add the following line:```
Webapi.plugins=/etc/sysconfig/deephaven/plugins/javascript-plugins
```
- Import the updated props:
```
sudo -u irisadmin /usr/illumon/latest/bin/etcd_prop_file --import /tmp/iris-environment.prop
```3. Copy the output file `main.js` to that directory on the server and rename it (e.g. `ExamplePlugin.js`).
```
scp ./main.js username@host:/tmp
ssh username@host
sudo -u irisadmin cp /tmp/main.js /etc/sysconfig/deephaven/plugins/javascript-plugins/ExamplePlugin.js
```4. The file name is used as the name of the plugin.
e.g. `ExamplePlugin.js` will be named `ExamplePlugin`## Attach a Plugin in a Query
Simply set the PLUGIN_NAME attribute on the Table with the name of the plugin
For a plugin located at https://host/url/iriside/plugins/ExamplePlugin.js
The name will ExamplePlugin```
t=db.t("LearnDeephaven", "StockTrades").where("Date=`2017-08-21`")
t.setAttribute("PluginName", "ExamplePlugin")
```## Setting an Application Level Plugin
In the config set `Webapi.app.plugins` to your plugin name. This can be a comma separated list to support multiple plugins.
## Login Plugin
A Login Plugin loads before the user logs in to the Web Client, and it allows UI permissions to be set. See `ExampleLoginPlugin.jsx` for an example.
The current supported permissions are:- canUsePanels - Allows the user access to the `Panels` button in the UI.
- canCreateDashboard - Allows the user to create a new Dashboard.
- canCreateCodeStudio - Allows the user to create a new Code Studio.
- canCreateQueryMonitor - Allows the user to create a new Query Monitor.
- canCopy - Allows the user to copy cells and rows from a table.
- canDownloadCsv - Allows the user to download a table to CSV.All permissions default to `true` but can be set to `false` for certain users or groups to disable functionality.
This is done by calling the `onPermissionOverrides` function in `componentDidMount`. Return an object with only
the permissions that need to be changed. If a user should have the default permissions, return an empty object.## Setting a Login Plugin
As with other plugin types, you must have a plugin directory configured and copy the Login Plugin to that directory.
Then in the config set `Webapi.login.plugins` to your plugin name. This can be a comma separated list to support multiple login plugins.
Finally, you must add this to the Auth Config, e.g.
```
authentication.client.configuration.list=Webapi.login.plugins
```This last step allows the login plugin to load prior to the user logging in.