Plugin configuration
Your plugin's main configuration file is named pluginConfig.ts
and must adhere to ExternalPluginConfig
interface.
Properly configured editor, will help you to edit this file, and will provide you with autocompletion and type checking.
Just remember, that any external plugin, must have a name, that starts with windy-plugin-
prefix.
Example
const config: ExternalPluginConfig = {
name: 'windy-plugin-airspace-example',
version: '1.0.0',
title: 'Airspaces example',
icon: '🚁',
description: 'This plugin demonstrates capabilities...',
author: 'IL (Windy.com)',
repository: 'https://github.com/windycom/windy-plugins',
desktopUI: 'embedded',
mobileUI: 'small',
};
Table of contents
Properties
- addToContextmenu
- author
- description
- desktopUI
- desktopWidth
- homepage
- icon
- internal
- listenToSingleclick
- mobileUI
- name
- private
- repository
- routerPath
- title
- version
Properties
addToContextmenu
• Optional
addToContextmenu: boolean
If user can open plugin from context menu on map (RH button mouse click) so plugin can be opened with lat, lon parameters.
author
• author: string
Plugin's author name
Example
'John Doe (optional company name)'
description
• Optional
description: string
Optional plugin description that will be displayed in plugins gallery
Example
'This plugin demonstrates capabilities of Windy Plugin System'
desktopUI
• desktopUI: "rhpane"
| "embedded"
Plugin behavior on desktop and tablet devices
rhpane
plugins occupy RH pane on desktop, which provides enormous amount of space, and enables to scroll down, but results in automatic closing or the plugin, when any other UI element opens from right side (menu, settings etc...).
Simply put only one rhpane plugin can be opened at the same time.
You can use embedded
position, whose space is limited, but plugin is embedded into main page and stays open.
desktopWidth
• Optional
desktopWidth: number
Width of rhpane
plugin in pixels (default is 400).
homepage
• Optional
homepage: string
Optional homepage, where plugin is described in more details
Example
'https://www.company.com/about-our-plugin
icon
• icon: string
Unicode emoji icon, that will be displayed in plugins gallery and in menu associated with this plugin
Example
'👋'
internal
• Optional
internal: boolean
The plugin has NO LINK in the main menu, can be open only programmatically and its installation is not persistent.
listenToSingleclick
• Optional
listenToSingleclick: boolean
Whether plugin (if opened) want to receive singleclick events from map.
mobileUI
• mobileUI: "fullscreen"
| "small"
Plugin behavior on mobile devices
fullscreen
plugin occupies whole screen, while small
takes only minimum space on the bottom of the screen.
name
• name: `windy-plugin-${string}`
Name of the plugin, that (in order to separate external and our internal plugins) MUST contain windy-plugin-
prefix
Example
'windy-plugin-hello-world'
private
• Optional
private: boolean
If set, indicates, that plugin is private and should not be offered to other users in plugins gallery. Companies and institutions, can display their sensitive data on Windy.com without any fear, that their API endpoints will be exposed.
repository
• Optional
repository: string
Location of repository, with source code of the plugin
Example
'https://github.com/windycom/hello-world-plugin'
routerPath
• Optional
routerPath: `/${string}`
Optional path to be used for routing and displaying of plugin's path as URL in browser. Must have form of SEO friendly string, with express.js inspired parameters.
If defined installed plugins can user access via URL https://www.windy.com/plugin/hello-world
Example
'/hello-world'
Example
'/hello-world/:lat/:lon'
Example
'/hello-world/:optional?'
title
• title: string
Official title of the plugin, that will be displayed as a browser title, when plugin will be opened
Example
'Hello World plugin'
version
• version: string
Version of the plugin in semver format.
Example
'1.0.0'