Commit Graph

1058 Commits

Author SHA1 Message Date
Ashley Harrison
7d8afd9578 Tab: Improve accessible name (#89602)
* replace aria-label selector with data-testid

* fix unit tests

* fix e2e selectors

* fix last unit test

* fix e2e tests

* fix casing

* fix e2e test

* fix casing
2024-06-24 17:48:26 +01:00
Jack Westbrook
e5474511d8 Plugins: Introduce magic modules to fe sandbox loader (#89274)
* feat(fe-sandbox): introduce module and exports magic modules to executed plugin code

* refactor(fe-sandbox): rename module and exports vars for clarity
2024-06-21 11:35:02 +02:00
Levente Balogh
ebe42e1ada Plugins: Allow apps to expose components. Update the extensions API. (#87236)
* feat: introduce exposable components and update the public APIs

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* tests: fix the tests for `usePluginComponent()`

I broke them when I wrapped the component with the PluginContextProvider which fetches the plugin metadata.

* fix: typo

---------

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2024-06-07 18:05:00 +02:00
Jack Westbrook
036c878843 Plugins: Improve frontend loader cache (#87488)
* do it

* set empty child version to parent version

* feat(plugins): use pluginId for loader cache keys

* feat(plugins): apply caching to all js and css files systemjs loads

* remove old code and add comment

* test(plugins): update systemjs hooks tests in line with better caching

* test(plugins): wip - comment out failing backend loader tests

* fix tests and improve comment

* Update public/app/features/plugins/loader/cache.test.ts

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

---------

Co-authored-by: Will Browne <will.browne@grafana.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2024-06-07 10:03:41 +02:00
Timur Olzhabayev
4761326568 Fix: Proper plugin logo loading depending on staging (#88247)
* making logos respect the staging

* making it work when served from subfolders

* fixing helper test
2024-05-27 10:26:30 +02:00
Ashley Harrison
82eb160f5c Chore: SCSS tidy up (#87956)
* more scss tidy up

* replace some scss
2024-05-16 11:20:29 +01:00
Jack Westbrook
f785a71aae Fix: Angular detection in plugin loader (#87323)
fix(plugins): make sure angular detection is passed to loader
2024-05-13 09:55:26 +02:00
Ashley Harrison
670960f70c Chore: Upgrade redux (#86877)
* update packages

* fix type errors

* upgrade redux toolkit as well

* don't need eslint-disable command

* remove comment

* fix unit tests

* call rtk query selector directly

* remove unnecessary checks
2024-05-10 14:28:51 +01:00
David Harris
a4d296559c Plugins: Catalog to show all plugins by default (#87168)
* update plugin install filter to show all by default

* make pretty

* remove aria-label on lock icon

* wip: attempt to fix overflow

* switch to stack, add aria label back for testing

* make pretty

* switch to TextLink

* remove learn more link from catalog

* add hover text

* docs: update plugin install to reflect state filter change

* Revert "docs: update plugin install to reflect state filter change"

This reverts commit 16222aee0b.
2024-05-07 16:48:09 +03:00
Ashley Harrison
1d6d5cc2cd Chore: improve typings (#87306)
* some fixes

* some more fixes

* some canvas fixes

* use removeProperty instead

* few more

* fixy fix

* undo changes to ticks for now
2024-05-03 17:21:37 +01:00
Gábor Farkas
d7ff3213f3 postgres: decouple the frontend-part (#87131) 2024-05-02 12:25:25 +02:00
Jack Westbrook
b5a084611f Fix: Always fetch plugin css with Systemjs (#87211)
* fix(plugins): fetch strategy should always be used for css/json/wasm/html

* refactor(plugins): prefer checking for js file type rather than list of other file types
2024-05-02 11:55:20 +02:00
Esteban Beltran
9f5ab38477 FE Sandbox: Fix innerHTML distortion causing issues with DOMPurify inner works (#87117)
* FE Sandbox: Fix innerHTML distortion causing issues with DOMPurify inner works

* Add a comment explaining the fix
2024-05-02 11:17:04 +02:00
Ashley Harrison
c151a97110 Chore: Enable no-unreduced-motion and fix errors (#86572)
* enable `no-unreduced-motion` in betterer

* move all animation calls inside handleReducedMotion

* fix violations + enable rule

* update rule README

* remove unnecessary transition from <Collapse>

* remove handleReducedMotion utility and add handleMotion to theme

* update to use new theme value

* handle Dropdown and IconButton

* handle AppChromeMenu and update lint message

* keep rotation at a reduced speed

* handle DashboardLoading
2024-04-29 13:12:36 +01:00
Gábor Farkas
500558bb72 mysql decouple frontend part (#86308)
* mysql decouple frontend part

* eslint "fix"

* package version update
2024-04-29 09:55:09 +02:00
Levente Balogh
17a3ec52b6 Plugin preloading: Fix performance measurement (#86855)
fix: measuring plugin preload performance
2024-04-24 15:37:22 +02:00
Jack Westbrook
fd1bf66d86 Plugins: Selectively load plugins using script tags (#85750)
* feat(plugins): introduce logic to selectively load fe plugins via script tags

* feat(plugins): extend cache to store isAngular flag. use isAngular in shouldFetch

* revert(plugins): remove unused prepareImport from SystemJSWithLoaderHooks type

* fix(plugins): cache[path] maybe undefined if not registered or invalidated

* Update public/app/features/plugins/plugin_loader.ts

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

---------

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2024-04-24 12:27:28 +02:00
Esteban Beltran
1e1c62fef1 FE Sandbox: Get plugin module path from bootdata instead of plugin settings (#86702)
* FE Sandbox: Get plugin module path from bootdata instead of plugin settings

* Remove unnecessary async/await
2024-04-24 12:05:20 +02:00
Marcus Andersson
804c726413 PluginExtensions: Make the extensions registry reactive (#83085)
* feat: add a reactive extension registry

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* feat: add hooks to work with the reactive registry

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* feat: start using the reactive registry

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* feat: update the "command palette" extension point to use the hook

* feat: update the "alerting" extension point to use the hooks

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* feat: update the "explore" extension point to use the hooks

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* feat: update the "datasources config" extension point to use the hooks

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* feat: update the "panel menu" extension point to use the hooks

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* feat: update the "pyroscope datasource" extension point to use the hooks

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* feat: update the "user profile page" extension point to use the hooks

* chore: update betterer

* fix: update the hooks to not re-render unnecessarily

* chore: remove the old `createPluginExtensionRegistry` impementation

* chore: add "TODO" for `PanelMenuBehaviour` extension point

* feat: update the return value of the hooks to contain a `{ isLoading }` param

* tests: add more tests for the usePluginExtensions() hook

* fix: exclude the cloud-home-app from being non-awaited

* refactor: use uuidv4() for random ID generation (for the registry object)

* fix: linting issue

* feat: use the hooks for the new alerting extension point

* feat: use `useMemo()` for `AlertInstanceAction` extension point context

---------

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2024-04-24 09:33:16 +02:00
Esteban Beltran
0ec9c3e01a FE Sandbox: Fix worker post message not handling proxy objects correctly (#86654)
* FE Sandbox: Fix worker post message not handling proxy objects correctly

* use expect error instead of ignore

* use assertion instead of ignore

* Fix formatting
2024-04-23 14:08:34 +02:00
Tom Ratcliffe
a5c75c5ffb Remove explicit imports of whatwg-fetch from individual test files 2024-04-18 12:23:38 +01:00
Andres Martinez Gotor
0f4a47b180 Plugin load errors: Add more well-known errors (#85960) 2024-04-18 13:04:22 +02:00
TechVest
1ffe858e06 chore: remove repetitive words (#86412)
Signed-off-by: TechVest <techdashen@qq.com>
2024-04-17 13:08:00 +01:00
Ashley Harrison
40c148ba48 EmptyState: Provide custom messages for existing empty states (#86021)
provide custom messages for existing empty states
2024-04-12 11:08:14 +02:00
renovate[bot]
51d5a4c8f2 Update dependency @testing-library/dom to v10 (#85958)
* Update dependency @testing-library/dom to v10

* update @testing-library/react as well

* fix unit tests

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-04-11 17:29:35 +02:00
Hugo Kiyodi Oshiro
b200156a01 Plugins: Show update buttons when instance version is different (#85486) 2024-04-09 10:32:34 +02:00
Giuseppe Guerra
c033a15aaa Angular deprecation: Prefer local "angularDetected" value to the remote one (#85571)
* Angular deprecation: Prefer local value to remote

* Update tests
2024-04-05 10:45:11 +02:00
Adela Almasan
e5d1cd8ea5 AngularMigration: Allow dashboard by dashboard migration (#84100) 2024-03-27 16:24:24 -05:00
Ashley Harrison
7ad2ec9665 EmptyState: use not-found empty state variant everywhere in core (#85007)
* use EmptyState component everywhere in core

* remove GrotNotFound core component

* update unit tests

* search -> not-found

* fix 3 more
2024-03-27 12:15:12 +00:00
Leon Sorokin
d7fa99e2df XYChart: Refactor to new model (behind feature toggle) (#82499)
Co-authored-by: drew08t <drew08@gmail.com>
Co-authored-by: Ihor Yeromin <yeryomin.igor@gmail.com>
2024-03-22 10:44:37 -05:00
Jack Westbrook
3c359376e1 Grafana/Runtime: Remove SystemJS export (#84561)
* feat(systemjs): move systemjs to grafana core and stop exporting from runtime

* feat(plugins): move systemjs to own file, update imports

* chore(plugins): call systemjs directly from window as ref can be undefined

* chore(plugins): make sure systemjs is imported before its shared dependencies

* chore(systemjs): move dependency to root package.json
2024-03-21 09:22:35 +01:00
Fabrizio
d1f791cf1f Jaeger: Decouple Jaeger plugin (#81377) 2024-03-19 15:39:31 +02:00
Levente Balogh
155e38edfe Plugin Extensions: Add prop types to component extensions (#84295)
* feat: make it possible to specify prop types for component extensions

* Update packages/grafana-runtime/src/services/pluginExtensions/getPluginExtensions.ts

* chore: adapted test case

* chore: update betterer

* feat: update types for configureComponentExtension()

* fix: remove type specifics for `configureExtensionComponent`

* Update betterer config

---------

Co-authored-by: Darren Janeczek <38694490+darrenjaneczek@users.noreply.github.com>
Co-authored-by: Darren Janeczek <darren.janeczek@grafana.com>
2024-03-18 15:14:51 +02:00
Polina Boneva
fce78aea2c Variables: Multi-select DataSource variables are inconsistently displayed in the Data source picker (#76039)
Always show multi-select DataSource(DS) variables in the DS picker, and display a warning in the panel when a DataSource variable holds multiple values and is not being repeated.

---------

Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
Co-authored-by: Alexa V <239999+axelavargas@users.noreply.github.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2024-03-18 10:30:27 +01:00
Gilles De Mey
8765c48389 Alerting: Remove legacy alerting (#83671)
Removes legacy alerting, so long and thanks for all the fish! 🐟

---------

Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
Co-authored-by: Sonia Aguilar <soniaAguilarPeiron@users.noreply.github.com>
Co-authored-by: Armand Grillet <armandgrillet@users.noreply.github.com>
Co-authored-by: William Wernert <rwwiv@users.noreply.github.com>
Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2024-03-14 15:36:35 +01:00
Yulia Shanyrova
9de3d75bea Plugins: Add reportInteraction into plugin search (#84283)
add reportInteraction into plugin search
2024-03-14 15:25:59 +01:00
Jack Westbrook
6599fa805d Plugins: Always load decoupled frontend assets from builds (#81873)
* Wip

* Wip

* Adapt to load external module

* build: remove cloudmonitoring from built_in_plugins, clean up webpack output

* chore(plugins): remove decoupled plugins from package.json deps

* chore(codeowners): update file for nx.json

* revert(webpack): put back path in config

* build(frontend): use nx to run prod builds of decoupled plugins with yarn build

* style(prometheus): run prettier-write to fix tsconfig.json

* style(backend): remove unused subFile.isDistDir

* revert(locales): remove formatting changes adding new line at end of files

* chore(webpack): clean up dev output

* build(nx): make grafana an nx project, bump lerna and nx

* build(plugin-configs): move cache directory to node_modules

* style(datasource-plugins): add eslint ignore for .gen.ts files

* chore(codeowners): add frontend-ops as owner of project.json

* build(webpack): add getDecoupledPlugins to automatically ignore when watching

* ci(drone): skip nx cache when building frontend packages

* style(ci): fix missing trailing comma

* Revert "style(ci): fix missing trailing comma"

This reverts commit 7520d41576.

* Revert "ci(drone): skip nx cache when building frontend packages"

This reverts commit 46938883ac.

* feat(zipkin): remove from grafana core bundle

* chore(npm): bump nx package to latest 18.0.8

* docs(dev-guide): add a note about what yarn start now builds

---------

Co-authored-by: Andres Martinez <andres.martinez@grafana.com>
2024-03-13 12:40:09 +01:00
Ryan McKinley
3e86a4edc8 PanelTitleSearch: Show datasource usage in plugins (#83922) 2024-03-05 22:20:38 +02:00
Hugo Kiyodi Oshiro
7f970d4887 Plugins: Fetch instance provisioned plugins in cloud, to check full installation (#83784) 2024-03-05 16:30:14 +01:00
Levente Balogh
fdd2c1c59e Plugins Catalog: Fix plugin details page initial flickering (#83896)
fix: wait for the local and remote fetches to fulfill
2024-03-05 14:23:29 +01:00
Yulia Shanyrova
e930b49db3 Plugins: Add intraMode 1 into fuzzy search for plugins (#83846)
add intraMode 1 into fuzzy search for plugins
2024-03-05 09:27:34 +01:00
Jack Westbrook
c59ebfc60f Fix: Cache busting of plugins module.js file (#83763)
fix(plugins): make sure extractPath regex matches with and without leading slash
2024-03-01 18:29:39 +01:00
Takashi Idobe
f209a5a8b8 fix typos (#83414) 2024-02-26 10:52:44 -07:00
Jack Westbrook
0dcdfc261b Monaco Editor: Load via ESM (#78261)
* chore(monaco): bump monaco-editor to latest version

* feat(codeeditor): use esm to load monaco editor

* revert(monaco): put back previous version

* feat(monaco): setup MonacoEnvironment when bootstrapping app

* feat(monaco): load monaco languages from registry as workers

* feat(webpack): clean up warnings, remove need to copy monaco into lib

* fix(plugins): wip - remove amd loader workaround in systemjs hooks

* chore(azure): clean up so QueryField passes typecheck

* test(jest): update config to fix failing tests due to missing monaco-editor

* test(jest): update config to work with monaco-editor and kusto

* test(jest): prevent message eventlistener in nodeGraph/layout.worker tripping up monaco tests

* test(plugins): wip - remove amd related tests from systemjs hooks

* test(alerting): prefer clearAllMocks to prevent monaco editor failing due to missing matchMedia

* test(parca): fix failing test due to undefined backendSrv

* chore: move monacoEnv to app/core

* test: increase testing-lib timeout to 2secs, fix parca test to assert dom element

* feat(plugins): share kusto via systemjs

* test(e2e): increase timeout for checking monaco editor in exemplars spec

* test(e2e): assert monaco has loaded by checking the spinner is gone and window.monaco exists

* test(e2e): check for monaco editor textarea

* test(e2e): check monaco editor is loaded before assertions

* test(e2e): add waitForMonacoToLoad util to reduce duplication

* test(e2e): fix failing mysql spec

* chore(jest): add comment to setupTests explaining need to incresae default timeout

* chore(nodegraph): improve comment in layout.worker.utils to better explain the need for file
2024-02-22 12:31:40 +01:00
Ben Sully
be71277d33 Plugins: fix loading of modules which resolve to Promises (#82299)
* Plugins: fix loading of modules which resolve to Promises

Prior to this commit we expected the default export of a plugin module
to be an object with a `plugin` field.

This is the case for the vast majority of plugins, but if a plugin uses
webpack's `asyncWebAssembly` feature then the default export will actually
be a promise which resolves to such an object.

This commit checks the result of the SystemJS import to make sure it has
a `plugin` field. If not, and if the `default` field looks like a Promise,
it recursively attempts to resolve the Promise until the object looks like
a plugin.

I think this may have broken with the SystemJS upgrade (#70068) because it used
to work without this change in Grafana 10.1, but it's difficult to say
for sure.

* Use Promise.resolve instead of await to clean up some logic

* Override systemJSPrototype.import instead of handling defaults inside importPluginModule

* Add comment to explain why we're overriding systemJS' import

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

---------

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2024-02-21 13:25:00 +00:00
Esteban Beltran
49a3553b94 Sandbox: Fix custom variable query editors not working inside the sandbox (#83152) 2024-02-21 13:31:16 +01:00
Fabrizio
d1c5e491ac Zipkin: Decouple Zipkin plugin (#81354) 2024-02-20 18:24:40 +02:00
Yulia Shanyrova
8586893731 Plugins: Fix enable button to appear after installing APP plugin (#82511)
* Fix enable button to appear after installing APP plugin

* add plugin isFullyInstalled check for grafana cloud
2024-02-20 12:48:51 +01:00
Hugo Kiyodi Oshiro
4910a901de Plugins: Disable uninstall while cloud uninstall is not completed (#81907) 2024-02-19 12:00:47 +01:00
Hugo Kiyodi Oshiro
dcc977005c Plugins: Disable update button when cloud install is not completed (#81716) 2024-02-19 09:38:06 +01:00