480 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			480 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
= 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.
 | 
						|
 | 
						|
[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
 | 
						|
---------
 |