| = Gerrit Code Review - JavaScript API |
| |
| Gerrit Code Review supports an API for JavaScript plugins to interact |
| with the web UI and the server process. |
| |
| == Entry Point |
| |
| JavaScript is loaded using a standard `<script src='...'>` HTML tag. |
| Plugins should protect the global namespace by defining their code |
| within an anonymous function passed to `Gerrit.install()`. The plugin |
| will be passed an object describing its registration with Gerrit: |
| |
| [source,javascript] |
| ---- |
| Gerrit.install(function (self) { |
| // ... plugin JavaScript code here ... |
| }); |
| ---- |
| |
| |
| [[self]] |
| == Plugin Instance |
| |
| The plugin instance is passed to the plugin's initialization function |
| and provides a number of utility services to plugin authors. |
| |
| [[self_getServerInfo]] |
| === self.getServerInfo() |
| Returns the server's link:rest-api-config.html#server-info[ServerInfo] |
| data. |
| |
| [[self_getPluginName]] |
| === self.getPluginName() |
| Returns the name this plugin was installed as by the server |
| administrator. The plugin name is required to access REST API |
| views installed by the plugin, or to access resources. |
| |
| [[self_on]] |
| === self.on() |
| Register a JavaScript callback to be invoked when events occur within |
| the web interface. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| self.on(event, callback); |
| ---- |
| |
| * event: A supported event type. See below for description. |
| |
| * callback: JavaScript function to be invoked when event happens. |
| Arguments may be passed to this function, depending on the event. |
| |
| Supported events: |
| |
| * `history`: Invoked when the view is changed to a new screen within |
| the Gerrit web application. The token after "#" is passed as the |
| argument to the callback function, for example "/c/42/" while |
| showing change 42. |
| |
| * `showchange`: Invoked when a change is made visible. A |
| link:rest-api-changes.html#change-info[ChangeInfo] and |
| link:rest-api-changes.html#revision-info[RevisionInfo] |
| are passed as arguments. PolyGerrit provides a third parameter which |
| is an object with a `mergeable` boolean. |
| |
| * `submitchange`: Invoked when the submit button is clicked |
| on a change. A link:rest-api-changes.html#change-info[ChangeInfo] |
| and link:rest-api-changes.html#revision-info[RevisionInfo] are |
| passed as arguments. Similar to a form submit validation, the |
| function must return true to allow the operation to continue, or |
| false to prevent it. The function may be called multiple times, for |
| example, if submitting a change shows a confirmation dialog, this |
| event may be called to validate that the check whether dialog can be |
| shown, and called again when the submit is confirmed to check whether |
| the actual submission action can proceed. |
| |
| * `comment`: Invoked when a DOM element that represents a comment is |
| created. This DOM element is passed as argument. This DOM element |
| contains nested elements that Gerrit uses to format the comment. The |
| DOM structure may differ between comment types such as inline |
| comments, file-level comments and summary comments, and it may change |
| with new Gerrit versions. |
| |
| * `highlightjs-loaded`: Invoked when the highlight.js library has |
| finished loading. The global `hljs` object (also now accessible via |
| `window.hljs`) is passed as an argument to the callback function. |
| This event can be used to register a new language highlighter with |
| the highlight.js library before syntax highlighting begins. |
| |
| [[self_changeActions]] |
| === self.changeActions() |
| Returns an instance of ChangeActions API. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| self.changeActions(); |
| ---- |
| |
| [[self_screen]] |
| === self.screen() |
| Register a module to be attached when the user navigates |
| to an extension screen provided by the plugin. Extension screens are |
| usually linked from the link:dev-plugins.html#top-menu-extensions[top menu]. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| self.screen(pattern, opt_moduleName); |
| ---- |
| |
| * pattern: URL token pattern to identify the screen. Argument can be |
| either a string (`'index'`) or a RegExp object (`/list\/(.*)/`). |
| If a RegExp is used the matching groups will be available inside of |
| the context as `token_match`. |
| |
| * opt_moduleName: The module to load when the user navigates to |
| the screen. The function will be passed a link:#ScreenContext[screen context]. |
| |
| [[self_settings]] |
| === self.settings() |
| Returns the Settings API. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| self.settings(); |
| ---- |
| |
| [[self_registerCustomComponent]] |
| === self.registerCustomComponent() |
| Register a custom component to a specific endpoint. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| self.registerCustomComponent(endpointName, opt_moduleName, opt_options); |
| ---- |
| |
| * endpointName: The endpoint this plugin should be reigistered to. |
| |
| * opt_moduleName: The module name the custom component will use. |
| |
| * opt_options: Options to register this custom component. |
| |
| [[self_url]] |
| === self.url() |
| Returns a URL within the plugin's URL space. If invoked with no |
| parameter the URL of the plugin is returned. If passed a string |
| the argument is appended to the plugin URL. |
| |
| A plugin's URL is where this plugin is loaded, it doesn't |
| necessary to be the same as the Gerrit host. Use `window.location` |
| if you need to access the Gerrit host info. |
| |
| For preloaded plugins, the plugin url is based on a global |
| configuration of where to load all plugins, default to current host. |
| |
| [source,javascript] |
| ---- |
| self.url(); // "https://gerrit-review.googlesource.com/plugins/demo/" |
| self.url('/static/icon.png'); // "https://gerrit-review.googlesource.com/plugins/demo/static/icon.png" |
| ---- |
| |
| [[self_restApi]] |
| === self.restApi() |
| Returns an instance of the Plugin REST API. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| self.restApi(prefix_url) |
| ---- |
| |
| * prefix_url: Base url for subsequent .get(), .post() etc requests. |
| |
| [[PluginRestAPI]] |
| == Plugin Rest API |
| |
| [[plugin_rest_delete]] |
| === restApi.delete() |
| Issues a DELETE REST API request to the Gerrit server. |
| Returns a promise with the response of the request. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| restApi.delete(url) |
| ---- |
| |
| * url: URL relative to the base url. |
| |
| [[plugin_rest_get]] |
| === restApi.get() |
| Issues a GET REST API request to the Gerrit server. |
| Returns a promise with the response of the request. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| restApi.get(url) |
| ---- |
| |
| * url: URL relative to the base url. |
| |
| [[plugin_rest_post]] |
| === restApi.post() |
| Issues a POST REST API request to the Gerrit server. |
| Returns a promise with the response of the request. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| restApi.post(url, opt_payload, opt_errFn, opt_contentType) |
| ---- |
| |
| * url: URL relative to the base url. |
| |
| * opt_payload: JavaScript object to serialize as the request payload. |
| |
| * opt_errFn: JavaScript function to be invoked when error occured. |
| |
| * opt_contentType: Content-Type to be sent along with the request. |
| |
| [source,javascript] |
| ---- |
| restApi.post( |
| '/my-servlet', |
| {start_build: true, platform_type: 'Linux'}); |
| ---- |
| |
| [[plugin_rest_put]] |
| === restApi.put() |
| Issues a PUT REST API request to the Gerrit server. |
| Returns a promise with the response of the request. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| restApi.put(url, opt_payload, opt_errFn, opt_contentType) |
| ---- |
| |
| * url: URL relative to the base url. |
| |
| * opt_payload: JavaScript object to serialize as the request payload. |
| |
| * opt_errFn: JavaScript function to be invoked when error occured. |
| |
| * opt_contentType: Content-Type to be sent along with the request. |
| |
| [source,javascript] |
| ---- |
| restApi.put( |
| '/builds', |
| {start_build: true, platform_type: 'Linux'}); |
| ---- |
| |
| [[ChangeActions]] |
| == Change Actions API |
| A new Change Actions API instance will be created when `changeActions()` |
| is invoked. |
| |
| [[change_actions_add]] |
| === changeActions.add() |
| Adds a new action to the change actions section. |
| Returns the key of the newly added action. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| changeActions.add(type, label) |
| ---- |
| |
| * type: The type of the action, either `change` or `revision`. |
| |
| * label: The label to be used in UI for this action. |
| |
| [source,javascript] |
| ---- |
| changeActions.add("change", "test") |
| ---- |
| |
| [[change_actions_remove]] |
| === changeActions.remove() |
| Removes an action from the change actions section. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| changeActions.remove(key) |
| ---- |
| |
| * key: The key of the action. |
| |
| [[change_actions_addTapListener]] |
| === changeActions.addTapListener() |
| Adds a tap listener to an action that will be invoked when the action |
| is tapped. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| changeActions.addTapListener(key, callback) |
| ---- |
| |
| * key: The key of the action. |
| |
| * callback: JavaScript function to be invoked when action tapped. |
| |
| [source,javascript] |
| ---- |
| changeActions.addTapListener("__key_for_my_action__", () => { |
| // do something when my action gets clicked |
| }) |
| ---- |
| |
| [[change_actions_removeTapListener]] |
| === changeActions.removeTapListener() |
| Removes an existing tap listener on an action. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| changeActions.removeTapListener(key, callback) |
| ---- |
| |
| * key: The key of the action. |
| |
| * callback: JavaScript function to be removed. |
| |
| [[change_actions_setLabel]] |
| === changeActions.setLabel() |
| Sets the label for an action. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| changeActions.setLabel(key, label) |
| ---- |
| |
| * key: The key of the action. |
| |
| * label: The label of the action. |
| |
| [[change_actions_setTitle]] |
| === changeActions.setTitle() |
| Sets the title for an action. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| changeActions.setTitle(key, title) |
| ---- |
| |
| * key: The key of the action. |
| |
| * title: The title of the action. |
| |
| [[change_actions_setIcon]] |
| === changeActions.setIcon() |
| Sets an icon for an action. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| changeActions.setIcon(key, icon) |
| ---- |
| |
| * key: The key of the action. |
| |
| * icon: The name of the icon. |
| |
| [[change_actions_setEnabled]] |
| === changeActions.setEnabled() |
| Sets an action to enabled or disabled. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| changeActions.setEnabled(key, enabled) |
| ---- |
| |
| * key: The key of the action. |
| |
| * enabled: The status of the action, true to enable. |
| |
| [[change_actions_setActionHidden]] |
| === changeActions.setActionHidden() |
| Sets an action to be hidden. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| changeActions.setActionHidden(type, key, hidden) |
| ---- |
| |
| * type: The type of the action. |
| |
| * key: The key of the action. |
| |
| * hidden: True to hide the action, false to show the action. |
| |
| [[change_actions_setActionOverflow]] |
| === changeActions.setActionOverflow() |
| Sets an action to show in overflow menu. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| changeActions.setActionOverflow(type, key, overflow) |
| ---- |
| |
| * type: The type of the action. |
| |
| * key: The key of the action. |
| |
| * overflow: True to move the action to overflow menu, false to move |
| the action out of the overflow menu. |
| |
| [[PanelContext]] |
| == Panel Context |
| A new panel context is passed to the `panel` callback function each |
| time a screen with the given extension point is loaded. |
| |
| [[panel_body]] |
| === panel.body |
| Empty HTML `<div>` node the plugin should add the panel content to. |
| The node is already attached to the document. |
| |
| [[PanelProperties]] |
| === Properties |
| |
| The extension panel parameters that are described in the |
| link:dev-plugins.html#panels[plugin development documentation] are |
| contained in the context as properties. Which properties are available |
| depends on the extension point. |
| |
| [[Gerrit]] |
| == Gerrit |
| |
| The `Gerrit` object is the only symbol provided into the global |
| namespace by Gerrit Code Review. All top-level functions can be |
| accessed through this name. |
| |
| [[Gerrit_css]] |
| === Gerrit.css() |
| [WARNING] |
| This method is deprecated. It doesn't work with Shadow DOM and |
| will be removed in the future. Please, use link:pg-plugin-dev.html#plugin-styles[plugin.styles] instead. |
| |
| Creates a new unique CSS class and injects it into the document. |
| The name of the class is returned and can be used by the plugin. |
| |
| Classes created with this function should be created once at install |
| time and reused throughout the plugin. Repeatedly creating the same |
| class will explode the global stylesheet. |
| |
| .Signature |
| [source,javascript] |
| ---- |
| Gerrit.install(function(self)) { |
| var style = { |
| name: Gerrit.css('background: #fff; color: #000;'), |
| }; |
| }); |
| ---- |
| |
| [[Gerrit_install]] |
| === Gerrit.install() |
| Registers a new plugin by invoking the supplied initialization |
| function. The function is passed the link:#self[plugin instance]. |
| |
| [source,javascript] |
| ---- |
| Gerrit.install(function (self) { |
| // ... plugin JavaScript code here ... |
| }); |
| ---- |
| |
| GERRIT |
| ------ |
| Part of link:index.html[Gerrit Code Review] |
| |
| SEARCHBOX |
| --------- |