Plugins: Extend panel menu with links from plugins (#63089)
* feat(plugins): introduce dashboard panel menu placement for adding menu items * test: add test for getPanelMenu() * added an unique identifier for each extension. * added context to getPluginExtensions. * wip * Wip * wiwip * Wip * feat: WWWIIIIPPPP 🧨 * Wip * Renamed some of the types to align a bit better. * added limit to how many extensions a plugin can register per placement. * decreased number of items to 2 * will trim the lenght of titles to max 25 chars. * wrapping configure function with error handling. * added error handling for all scenarios. * moved extension menu items to the bottom of the more sub menu. * added tests for configuring the title. * minor refactorings. * changed so you need to specify the full path in package.json. * wip * removed unused type. * big refactor to make things simpler and to centralize all configure error/validation handling. * added missing import. * fixed failing tests. * fixed tests. * revert(extensions): remove static extensions config in favour of registering via AppPlugin APIs * removed the compose that didn't work for some reason. * added tests just to verify that validation and error handling is tied together in configuration function. * adding some more values to the context. * draft validation. * added missing tests for getPanelMenu. * added more tests. * refactor(extensions): move logic for validating extension link config to function * Fixed ts errors. * Update packages/grafana-data/src/types/app.ts Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com> * Update packages/grafana-runtime/src/services/pluginExtensions/extensions.test.ts Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com> * refactor(extensions): rename limiter -> pluginPlacementCount * refactor(getpanelmenu): remove redundant continue statement --------- Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com> Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
This commit is contained in:
co-authored by
Levente Balogh
Marcus Andersson
parent
5bd2fac9c8
commit
8c8f584b41
@@ -3,7 +3,7 @@ package plugindef
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
|
||||
"github.com/grafana/thema"
|
||||
)
|
||||
|
||||
@@ -122,23 +122,6 @@ seqs: [
|
||||
...
|
||||
}
|
||||
|
||||
#ExtensionsLink: {
|
||||
// Target where the link will be rendered
|
||||
placement: =~"^(plugins|grafana)\/[a-z-/0-9]*$"
|
||||
// Type of extension
|
||||
type: "link"
|
||||
// Title that will be displayed for the rendered link
|
||||
title: string & strings.MinRunes(3) & strings.MaxRunes(22)
|
||||
// Description for the rendered link
|
||||
description: string & strings.MaxRunes(200)
|
||||
// Path relative to the extending plugin e.g. /incidents/declare
|
||||
path: =~"^\/.*"
|
||||
...
|
||||
}
|
||||
|
||||
// Extensions made by the current plugin.
|
||||
extensions?: [...#ExtensionsLink]
|
||||
|
||||
// For data source plugins, if the plugin supports logs.
|
||||
logs?: bool
|
||||
|
||||
|
||||
Reference in New Issue
Block a user