Skip to main content

Context Parameters

context.element

Return a current element.

Usage

context.element;

Example

const currentElement = context.element;

Panel

panel.data

Result set of panel queries.

Usage

context.panel.data;

Example

const data = context.panel.data;

panel.elements

Return form elements.

Usage

context.panel.elements;

Example

const currentElements = context.panel.elements;

panel.initial

Parsed values from the initial request.

Usage

context.panel.initial;

Example

const initialValues = context.panel.initial;

panel.initialRequest()

Performs an initial request to reload the panel.

Usage

context.panel.initialRequest();

Example

if (context.panel.response && context.panel.response.ok) {
context.grafana.notifySuccess(["Update", "Values updated successfully."]);
context.panel.initialRequest();
} else {
context.grafana.notifyError([
"Error",
`An error occurred updating values: ${context.panel.response.status}`,
]);
}

panel.options

Return panel's options.

Usage

context.panel.options;

Example

const options = context.panel.options;

panel.onOptionsChange(options)

Modifies a handler to refresh the panel. The context.panel.onOptionsChange() handler is required to update the panel.

Refresh panel

The context.panel.onOptionsChange(options) handler calls the refresh panel.

If you use it in the initial request, don't forget to disable the Synchronize option. Enabling the Synchronize option and using it together with context.panel.onOptionsChange(options) in the Initial Request will cause the panel to reload constantly.

Usage

context.panel.onOptionsChange(options);

Example

context.panel.onOptionsChange({
...context.panel.options,
elements: context.panel.options.elements.map((element) => {
return element.id === "name" ? { ...element, value: "test" } : element;
}),
});
const options = context.panel.options;
context.panel.onOptionsChange({
...options,
sync: true,
});

Arguments

  • options Object
    Panel options. Use console.log('options:',context.panel.options) to check all fields

panel.onChangeElements(options)

Updates elements in the local state. Change elements. Accepts an array of new elements.

Usage

context.panel.onChangeElements(elements);

Example

context.panel.onChangeElements(
context.panel.elements.map((element) => ({
...element,
value: json[element.id],
}))
);
context.panel.onChangeElements(
elements.map((element) => {
return element.id === "name" ? { ...element, value: "test" } : element;
})
);

Arguments

  • elements Array
    Array of elements.

panel.patchFormValue(values)

Update the value of the elements. Accepts an object.

Usage

context.panel.patchFormValue(elements);

Example

// only passed elements should be updated, the rest stay the same
context.panel.patchFormValue({ name: "Alex" });
// name and isAdmin
context.panel.patchFormValue({ name: "Alex", isAdmin: true });

Arguments

  • values Object
    Object. Each key is the id of the element and the value of the key is the value of the element

panel.setFormValue(values)

Update the value of the elements. Accepts an object. If value is not passed to the element, the value should be used from initial or cleared.

Usage

context.panel.setFormValue(elements);

Example

context.panel.setFormValue({ name: "Alex", isAdmin: true });

Arguments

  • values Object
    Object. Each key is the id of the element and the value of the key is the value of the element

panel.formValue()

Return a current form value as object.

Usage

context.panel.formValue(elements);

Example

const payload = context.panel.formValue;
// return { name: 'Alex', isAdmin: true }

panel.response

Contains a current Request's response.

Usage

context.panel.response;

Example

if (context.panel.response && context.panel.response.ok) {
context.grafana.notifySuccess(["Update", "Values updated successfully."]);
context.grafana.refresh();
} else {
context.grafana.notifyError([
"Update",
`An error occurred updating values: ${context.panel.response.status}`,
]);
}

panel.setInitial(values)

Specifies initial values for a custom initial request to highlight modified values and requests a user's confirmation.

Usage

context.panel.setInitial(values);

Example

// Initial custom code example
const payload = {};

context.panel.elements.forEach((element) => {
if (!element.value) {
return;
}

payload[element.id] = element.value;
});

context.panel.setInitial(payload);

return;

Arguments

  • values Object

    Object. Each key is the id of the element and the value of the key is the value of the element

    // example
    {
    "max": 100,
    "min": 10,
    "speed": 54,
    "option1": "option1",
    "option2": "option1",
    "code": "option1"
    }

Errors

panel.setError(message)

Displays an error on panel.

Usage

context.panel.setError(message);

Example

context.panel.setError("Message");
Displays an error on panel.
Displays an error on panel.

Arguments

  • message String

    Error Message

Buttons

panel.enableSubmit()

Enable Submit button.

Usage

context.panel.enableSubmit();

Example

if (condition) {
context.panel.enableSubmit();
}

context.panel.enableSubmit();

panel.disableSubmit()

Disable Submit button.

Usage

context.panel.disableSubmit();

Example

if (condition) {
context.panel.disableSubmit();
}

//

context.panel.disableSubmit();

panel.enableReset()

Enable Reset button.

Usage

context.panel.enableReset();

Example

if (condition) {
context.panel.enableReset();
}

context.panel.disableSubmit();

panel.disableReset()

Disable Reset button.

Usage

context.panel.disableReset();

Example

if (condition) {
context.panel.disableReset();
}

context.panel.disableReset();

panel.enableSaveDefault()

Enable Save Default button.

Usage

context.panel.enableSaveDefault();

Example

if (condition) {
context.panel.enableSaveDefault();
}

context.panel.enableSaveDefault();

panel.disableSaveDefault()

Disable Save Default button.

Usage

context.panel.disableSaveDefault();

Example

if (condition) {
context.panel.disableSaveDefault();
}

context.panel.disableSaveDefault();

Sections Utils

sectionsUtils.add(section)

Add a new Section.

Added in: v4.9.0

Refresh panel

The context.panel.sectionsUtils.add(section) handler calls the refresh panel.

If you use it in the initial request, don't forget to disable the Synchronize option. Enabling the Synchronize option and using it together with context.panel.sectionsUtils.add(section) in the Initial Request will cause the panel to reload constantly.

Usage

context.panel.sectionsUtils.add(section);

Example

context.panel.sectionsUtils.add({
name: "Section 1",
id: "id-s-1",
elements: [],
});

const newSection = {
name: "Section 2",
id: "id-s-2",
elements: ["elem-1", "elem-2"],
};

context.panel.sectionsUtils.add(newSection);

Arguments

  • section Object
    Section. Each section include name, id, elements

Common Section properties

  • name string. Section name.

  • id string. Section Id.

  • elements Array. Elements ids assign to section. Could Be empty array.

sectionsUtils.update(sections)

Change Sections.

Added in: v4.9.0

Refresh panel

The context.panel.sectionsUtils.update(sections) handler calls the refresh panel.

If you use it in the initial request, don't forget to disable the Synchronize option. Enabling the Synchronize option and using it together with context.panel.sectionsUtils.update(sections) in the Initial Request will cause the panel to reload constantly.

Usage

context.panel.sectionsUtils.update(sections);

Example

context.panel.sectionsUtils.update([{ name: "Section 1", id: "id-s-1" }]);

Arguments

  • sections Array
    Sections. Each section include name and id

sectionsUtils.remove(id)

Remove Section.

Added in: v4.9.0

Refresh panel

The context.panel.sectionsUtils.remove(id) handler calls the refresh panel.

If you use it in the initial request, don't forget to disable the Synchronize option. Enabling the Synchronize option and using it together with context.panel.sectionsUtils.remove(id) in the Initial Request will cause the panel to reload constantly.

Usage

context.panel.removeSection(id);

Example

context.panel.removeSection("id-s-1");

Arguments

  • id string. Section id.

sectionsUtils.assign(id,elements)

Assign elements to Section.

Added in: v4.9.0

Refresh panel

The context.panel.sectionsUtils.assign(id,elements) handler calls the refresh panel.

If you use it in the initial request, don't forget to disable the Synchronize option. Enabling the Synchronize option and using it together with context.panel.sectionsUtils.assign(id,elements) in the Initial Request will cause the panel to reload constantly.

Usage

context.panel.sectionsUtils.assign(id, elements);

Example

context.panel.sectionsUtils.assign("id-s-1", ["elem-1", "elem-2"]);

Arguments

  • id string. Section Id.
  • elements Array. Array of elements ids

sectionsUtils.unassign(elements)

Unassign elements from Section.

Added in: v4.9.0

Refresh panel

The context.panel.sectionsUtils.unassign(elements) handler calls the refresh panel.

If you use it in the initial request, don't forget to disable the Synchronize option. Enabling the Synchronize option and using it together with context.panel.sectionsUtils.unassign(elements) in the Initial Request will cause the panel to reload constantly.

Usage

context.panel.sectionsUtils.unassign(elements);

Example

context.panel.sectionsUtils.unassign(["elem-1", "elem-2"]);

Arguments

  • elements Array. Array of elements ids

sectionsUtils.get(id)

Get Section by id. Return Section with elements assign to section.

Added in: v4.9.0

Usage

context.panel.sectionsUtils.get(id);

Example

context.panel.sectionsUtils.get("section-id");

Arguments

  • id string. Section Id

sectionsUtils.getAll()

Get All Sections. Return Sections with elements assign to each section.

Added in: v4.9.0

Usage

context.panel.sectionsUtils.getAll();

Example

context.panel.sectionsUtils.getAll();

sectionsUtils.collapse(id)

Collapse Section.

Updated in: v4.9.0

Usage

context.panel.sectionsUtils.collapse(id);

Example

context.panel.sectionsUtils.collapse("section-id");

Arguments

  • id string. Section Id

sectionsUtils.expand(id)

Expand Section.

Added in: v4.9.0

Usage

context.panel.sectionsUtils.expand(id);

Example

context.panel.sectionsUtils.expand("section-id");

Arguments

  • id string. Section Id

sectionsUtils.toggle(id)

Toggle (Collapse/Expand) Section.

Added in: v4.9.0

Usage

context.panel.sectionsUtils.toggle(id);

Example

context.panel.sectionsUtils.toggle("section-id");

Arguments

  • id string. Section Id

sectionsUtils.expandedState

Returns Expand/Collapse State for Sections.

Added in: v4.9.0

Usage

context.panel.sectionsUtils.expandedState;

Example

const sectionsExpandedState = context.panel.sectionsUtils.expandedState;

Grafana

grafana.locationService

Grafana's locationService function to work with the browser's location and history.

Usage

context.grafana.locationService;

Example

context.grafana.locationService.reload();

const history = context.grafana.locationService.history;

grafana.backendService

Grafana's backendService used to communicate to a remote backend such as the Grafana backend, a datasource etc.

Usage

context.grafana.backendService;

Example

const deviceID = context.grafana.backendService.deviceID;

grafana.notifyError([header, message])

Displays an error.

Usage

context.grafana.notifyError([header, message]);

Example

context.grafana.notifyError([
"Error",
`An error occurred updating values: ${context.panel.response.status}`,
]);

context.grafana.notifyError(["Error Title", `Show error message`]);
Displays an error.
Displays an error.

Arguments

  • header string. Error title
  • message string. Error message

grafana.notifySuccess([header, message])

Displays a success notification.

Usage

context.grafana.notifySuccess([header, message]);

Example

context.grafana.notifySuccess(["Success Title", `Success message`]);

Arguments

  • header string. Success title
  • message string. Success message

grafana.notifyWarning([header, message])

Displays a warning.

Usage

context.grafana.notifyWarning([header, message]);

Example

context.grafana.notifyWarning(["warning Title", `warning message`]);

Arguments

  • header string. Warning title
  • message string. Warning message

grafana.eventBus

Publish and subscribe to application events.

Usage

context.grafana.eventBus;

Example

const subscriber = eventBus.getStream(RefreshEvent).subscribe(() => {
// to do
});

grafana.templateService

Grafana's templateService function that provides access to variables and enables the update of a time range.

Usage

context.grafana.templateService;

Example

const regEx = context.grafana.templateService.regex;

grafana.refresh()

Function to refresh dashboard panels using application events.

Usage

context.grafana.refresh();

Utils

utils.fileToBase64(file)

Convert ot base64 format.

Usage

context.utils.fileToBase64(file);

Example

const payload = {};

context.panel.elements.forEach((element) => {
if (!element.value) {
return;
}

payload[element.id] = element.value;
});

/**
* Data Source payload
*/
const getPayload = async () => {
const file = payload.file[0];
const base64 = await context.utils.fileToBase64(file);

return {
file,
base64,
};
};

return getPayload();

Arguments

  • file File. A File provides information about files.

utils.toDataQueryResponse(res)

Parse the results from /api/ds/query into a DataQueryResponse

Usage

context.utils.toDataQueryResponse(res);

Example

const dataQuery = context.utils.toDataQueryResponse(context.panel.response);

Arguments

  • res response. The HTTP response data