* 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>
* Set default query when changing data source or adding new alert query
* Set default query when creating new alert rule
* Set fefault query for cloud and recording rules
* Create hook for getting defaults in AlertRuleForm
* fixing tests
* Use conditionals with 'if' for more clarity and rename lazy to async
* Add loading indicator for default queries
* Fix tests
* Make newModel a sync method and fix tests error
* Use useAsync instead of useEffect for an async call
* Update dependency rollup to v3
* build(rollup): update all rollup related deps to latest version
* chore(runtime): update peerDeps to match other package semver ranges
* chore(yarn): refresh lock file
* refactor(packages): migrate to esm for rollup@3 configs
* build(packages): remove unused rollup dependencies
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Renamed target -> id and href -> path after feedback.
* fixed type issues in test page.
* chore(pluginschemajson): update extensions props target -> id
* this is the final.
* fixed typings...again...
---------
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* added extensions to plugin.json and exposing it via frontend settings.
* added extensions to the plugin.json schema.
* changing the extensions in frontend settings to a map instead of an array.
* wip
* feat(pluginregistry): begin wiring up registry
* feat(pluginextensions): prevent duplicate links and clean up
* added test case for link extensions.
* added tests and implemented the getPluginLink function.
* wip
* feat(pluginextensions): expose plugin extension registry
* fix(pluginextensions): appease the typescript gods post rename
* renamed file and will throw error if trying to call setExtensionsRegistry if trying to call it twice.
* added reafactorings.
* fixed failing test.
* minor refactorings to make sure we only include extensions if the app is enabled.
* fixed some nits.
* Update public/app/features/plugins/extensions/registry.test.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update packages/grafana-runtime/src/services/pluginExtensions/registry.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update packages/grafana-runtime/src/services/pluginExtensions/registry.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update public/app/features/plugins/extensions/registry.test.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Moved types for extensions from data to runtime.
* added a small example on how you could consume link extensions.
* renamed after feedback from levi.
* updated the plugindef.cue.
* using the generated plugin def.
* added tests for apps and extensions.
* fixed linting issues.
* wip
* wip
* wip
* wip
* test(extensions): fix up failing tests
* feat(extensions): freeze registry extension arrays, include type in registry items
* added restrictions in the pugindef cue schema.
* wip
* added required fields.
* added key to uniquely identify each item.
* test(pluginextensions): align tests with implementation
* chore(schema): refresh reference.md
---------
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* *Create Caching Config interface and OSS impl
*Create front-end facing DS Cache config
*Populate Caching Config on Datasource DTO
*Update OSS wire deps
* fix unit test
* handle query caching TTL override on the frontend
* Make sure the override works with pubdash
* move caching config to the right place in the ds info
* move caching config logic to enterprise index hook
* move queryCachingTTL to pubdash query payload
* Remove from metadata (not needed)
* rename struct and add comment
* remove invalid wire dependency
* manual revert of 395c74b
* fix frontend test
* fix backend test
* fix tests for real this time
* truly fix frontend test
* fix back end unit test for real
* Use suggested value for uid
* update the snapshot
* use __expr__
* replace all -100 with __expr__
* update snapshot
* more changes
* revert redundant change
* Use expr.DatasourceUID where it's possible
* generate files
* Update dependency @testing-library/dom to v8.20.0
* do some lockfile surgery
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Add config to remove Snapshot functionality (frontend is hidden and validation in the backend)
* Add test cases
* Remove unused mock on the test
* Moving Snapshot config from globar variables to settings.Cfg
* Removing warnings on code
* rename routes and fix access control for support bundles
* AccessControl: Hide menu if not authorized
* AccessControl: Add AC guards for create and delete
* lint
* build(webpack): replace babel-loader with esbuild-loader
* build(webpack): add esbuild minifier to production builds
* Wip
* Removed ngInject and replaced with manual inject params
* chore: bump esbuild to 0.15.13
* Fixed angular issues
* build(frontend): update esbuild to 0.16.16
* chore(webpack): support browserslist for esbuild
* build(esbuild): unify versions of esbuild to 0.16.17 and esbuild-loader to 2.21.0
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Update dependency @testing-library/dom to v8.19.0
* refresh lockfile
* fix unit tests
* Revert "fix unit tests"
This reverts commit eb40f3207a.
* Revert "refresh lockfile"
This reverts commit c0cd5822da.
* ensure a consistent version of @testing-library/dom
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* usageinsights: record events for Explore queries
* usageinsights: make the source field optional
It is not logical to have it for an event like the dashboard-view
* usageinsights: add comment to Explore test
Explain why we are reversing a previous decision
* Update jest monorepo to v29
* update snapshots + wrap test in act
* fix linting errors: jest.mocked now defaults to deep mocking
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Add new configuration option for SA tokens
* Add new expiry date option to frontend components
* Add backend validation
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Started search state refactor
* Things are working
* Move more to statemanger
* minor tweaks
* Fixed name of hook
* revert yarn.lock changes
* Harderning StateManagerBase
* More tests and refinements
* Fixed unit test
* More polish
* fixing tests
* fixed test
* Fixed test
* first stab at context away plugin tracking.
* adding a plugin context and a hook to get hold of a tracker that always appends the plugin context information.
* wip
* improved the code a bit.
* wip
* Fixed type errors.
* added datasource_uid to data sources.
* fixed error message when trying to use hook outside of context.
* small refactoring according to feedback.
* using the correct provider for data source context.
* check not needed.
* enforcing the interaction name to start with grafana_plugin_
* exposing guards for the other context type.
* added structure for writing reporter hook tests.
* added some more tests.
* added tests.
* reverted back to inheritance between context types.
* adding mock for getDataSourceSrv
* Theme: Inter font change with new line-height
* Add it behind feature toggle
* make buildVariant easier to read + enforce integer multiples of 2 (#56486)
* Minor update
* Update
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* add navid and pagenav to edit/add/view alert rules
* move ruleeditor smaller component to its own file
* fix form alignments with new layout
* fixed broken test
* reuse AlertingPageWrapper
* feat: make it possible to pass in `options` to `.get()`, `.post()`, etc methods
* feat(Datasource): make it possible to specify `optinos` for `getResource()` and `postResource()`
* fix(BackendSrv): use partial `BackendSrvRequest`
* feat(Datasource): make it possible to set `options` for resource requests
* refactor(BackendSrv): remove internal usage of `.request()`
* fix(GettingStarted): remove unnecessary import
* fix: fix type issues by typing the delete dashboard response
* refactor: use more strict types for `params`
By reusing the type of `BackendSrvRequest.params`
* refactor: make the options paramater partial
* fix: extract `data` from the fetch response
* docs: update the deprecation notice or `BackendSrv.request()`
* refactor: use `.request()` as if it was private
* refactor: remove unnecessary change
* fix(toolkit): package without dist folder so config file paths are correct
* chore(packages): make sure to bundle readme, changelog and apache2 license
* refactor(packages): recursively copy src when prepacking toolkit
* chore(toolkit): lock down babel dependencies. use grafana-eslint-config@5 for TS4.8 support
* Change nav structure when topnav is enable to do initial tests with new information architecture
* Support for nested sections
* Updated
* sentance case
* Progress on plugin challange
* Rewrite to functional component
* Progress
* Updates
* Progress
* Progress on things
* missing file
* Fixing issue with runtime, need to use setter way to set component exposed via runtime
* Move PageLayoutType to grafana/data
* Fixing breadcrumb issue, adding more tests
* reverted backend change
* fix recursive issue with cleanup
* Update dependency @testing-library/user-event to v14.4.3
* use ReturnType instead of using a nested import
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Revert "Chore: Bump terser to fix security vulnerability (#53052)"
This reverts commit 7ae74d2a18.
* feat: use tsc and rollup directly with esbuild and publishConfig, files props
* refactor(grafana-data): fix isolatedModules re-export type error
* refactor(grafana-data): import paths from src not package name
* refactor(rollup): fix dts output.file
* chore(grafana-schema): delete dashboard_experimental.gen.ts - cannot work with isolatedModules
* refactor(grafana-e2e-selectors): fix export types isolatedModules error
* refactor(grafana-runtime): fix isolatedModules re-export type error
* refactor(grafana-ui): fix isolatedModules re-export type error
* feat(grafana-ui): use named imports for treeshaking
* refactor(grafana-ui): use named imports for treeshaking
* feat: react and react-dom as peerDeps for packages
* feat(grafana-ui): emotion packages as peerDeps
* feat(grafana-e2e): use tsc, rollup, esbuild for bundling
* chore(packages): clean up redundant dependencies
* chore(toolkit): deprecate unused package:build task
* chore(schema): put back dashboard_experimental and exclude to prevent isolatedModules error
* docs(packages): update readme
* chore(storybook): disable isolatedModules for builds
* chore: relax peerDeps for emotion and react
* revert(grafana-ui): put @emotion dependencies back
* refactor: replace relative package imports with package name
* build(packages): set emitDeclaration false for typecheck scripts to work
* test(publicdashboarddatasource): move test next to implementation. try to appease the betterer gods
* chore(storybook): override ts-node config for storybook compilation
* refactor(grafana-data): use ternary so babel doesnt complain about expecting flow types
* chore(toolkit): prefer files and publishConfig package.json props over copying
* build(npm): remove --contents dist arg from publishing commands
* chore(packages): introduce sideEffects prop to package.json to hint package can be treeshaken
* chore(packages): remove redundant index.js files
* feat(packages): set publishConfig.access to public
* feat(packages): use yarn berry and npm for packaging and publishing
* refactor(packages): simplify rollup configs
* chore(schema): add comment explaining need to exclude dashboard_experimental
* revert(toolkit): put back clean to prevent cli failures
* ci(packages): run packages:pack before a canary publish
* chore(gitignore): add npm-artifacts directory to ignore list
* test(publicdashboarddatasource): fix module mocking
* chore(packages): delete package.tgz when running clean
* chore(grafana-data): move dependencies from devDeps to prevent build resolution errors
* wip
* make diff easier to read
* Update template_srv getVariables to return new TypedVariableModel
* update VariableType to use the type from TypedVariableModel
* tidy things up
* Auth: check of auth_token in url and resolve user if present
* check if auth_token is passed in url
* Auth: Pass auth_token for request if present in path
* no need to decode token in index
* temp
* use loadURLToken and set authorization header
* cache token in memory and strip it from url
* Use loadURLToken
* Keep token in url
* strip sensitive query strings from url used by context logger
* adapt login by url to jwt token
* add jwt iframe devenv
* add jwt iframe devenv instructions
* add access note
* add test for cleaning request
* ensure jwt token is not carried into handlers
* do not reshuffle queries, might be important
* add correct db dump location
* prefer set token instead of cached token
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Initial work on new toolbar button
* Minor step
* Small progress
* Minor progress
* Minor fix
* removed console.log
* Removing stuff we don't need yet
* Playing around
* This is getting interesting
* Updates
* Updated
* Observable experiments
* This is tricky
* VizPanel panel renderer
* New model progress
* Maybe this could be something
* Updated
* Rename
* updates
* Updated
* Query runners? not sure
* Updated
* updates
* flex box layout starting to work
* Testing
* Tested an action
* Parent context sort of working
* Progress
* Progress
* Updated
* Starting to work
* Things are working
* Scene list, nested scene demo
* Progress on repeats
* Moving things
* Pretty big progress
* More things working
* Great progress
* Progress
* Name changing
* Minor tweaks
* Simplified sizing
* Move toggleDirection to SceneFlexLayout
* add feature flag (#50990)
* removed new useObservable hook
* Rename folder and feature toggle to scenes
* Caching scenes so you can go back to another scene without having to re-query data
* Fix issue with subs on re-mount
* Fixing test
* Added SceneCanvasText to play around with layout elements with size based on content
* Scene: Edit mode and component edit wrapper that handles selection (#51078)
* First step for scene variables
* Started playing around with a scene edit mode
* Better way to set component
* Progress on edit mode
* Update
* Progress on edit mode
* Progress on editor
* Progress on editor
* Updates
* More working
* Progress
* Minor update
* removed unnessary file
* Moving things around
* Updated
* Making time range separate from time picker
* minor rename of methods
* The most basic variable start
* Minor renames
* Fixed interpolate issue if not found at closest level
* An embryo of event model and url sync handling
* Update url sync types
* Removed unnessary any type arg
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* passes id and uid to PublicDashboardDatasource
* betterer results
* If for a public dashboard, return the PublicDashboardDataSource first or else getDatasourceSrv.get() will fail bc of no authed user.
Added some unit tests for resolving the uid from the many possible datasource types.
* updates betterer
* Exports DashboardService. Adds method to DashboardService to build anonymous user for use with public dashboards where there is no authed user. Adds method on dashboard_queries to get all dashboard uids from a dashboard.
* refactors to get unique datasource uids
* Adds tests for getting all unique datasource uids off a dashboard
* adds test for building anonymous user with read and query actions that are scoped to each datasource uid in the dashboard
* updates casing of DashboardService
* updates test case to have additional panel with a different datasource
* gives default interval to public dashboard data source
* add special handling on the plugin gathering side to check whether secrets manager plugins are enabled or not
* show disabled badge in front end if the plugin is not enabled
* Only show error in disabled badge hover if one is present (otherwise it shows "undefined")
* refactor to make use of fields already available in the DTO
* fix typo
* if there is no error returned for the plugin, just show 'disabled'
* fix typo
* Update public/app/features/plugins/admin/components/Badges/PluginDisabledBadge.tsx
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update frontendsettings.go
add clarifying comment
* fix unit test
* rework task to use new frontend property combined with plugin type to determine if the plugin should be disabled
* Update helpers.test.ts
revert test change
* fix unit test
* bogus commit to trigger precommit
* undo commit
* run precommit manually
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
This PR completes public dashboards v1 functionality and simplifies public dashboard conventions. It exists as a large PR so that we are not making constant changes to the database schema.
models.PublicDashboardConfig model replaced with models.PublicDashboard directly
dashboard_public_config table renamed to dashboard_public
models.Dashboard.IsPublic removed from the dashboard and replaced with models.PublicDashboard.isEnabled
Routing now uses a uuid v4 as an access token for viewing a public dashboard anonymously, PublicDashboard.Uid only used as database identifier
Frontend utilizes uuid for auth'd operations and access token for anonymous access
Default to time range defined on dashboard when viewing public dashboard
Add audit fields to public dashboard
Co-authored-by: Owen Smallwood <owen.smallwood@grafana.com>, Ezequiel Victorero <ezequiel.victorero@grafana.com>, Jesse Weaver <jesse.weaver@grafana.com>
* Public dashboard query API
* Create new API on service for building metric request
* Flesh out testing, implement BuildPublicDashboardMetricRequest
* Test for errors and missing panels
* WIP: Test for multiple datasources
* Refactor tests, add supporting code for multiple datasources
* Gets the panel data from the pubdash query api
* Adds tests to make sure we get the correct api url from retrieving panel data
* Public dashboard query API
* Create new API on service for building metric request
* Flesh out testing, implement BuildPublicDashboardMetricRequest
* Test for errors and missing panels
* WIP: Test for multiple datasources
* Refactor tests, add supporting code for multiple datasources
* Handle queries from multiple datasources
* Replace dashboard time range with pubdash time range settings
* Fix comments from review, build failure
* removes changes to DataSourceWithBackend.ts regarding getting the pubdash panel query url. Going to do this in a new class, PublicDashboardDataSource.ts
* Include pubdash Uid in dashboard meta
* Creates new PublicDashboardDataSource.ts and adds test
* Passes pubdash uid down to PanelQueryRunner.ts to a PublicDashboardDatasource can be chosen when were looking at a public dashboard
* removes comment
* checks for error when unmarshalling json
* Only replace dashboard time settings with pubdash time settings when pubdash time settings exist
* formatting and added comment
Co-authored-by: Jesse Weaver <jesse.weaver@grafana.com>
Co-authored-by: Jeff Levin <jeff@levinology.com>
* Update dependency @types/jest to v28
* modern is now default!
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* implement filterQuery to support query.hide
* Fixed - expression ds name in mixed mode
* Execute expression query on blur
* show actual error message when ds return Query data error
* add isPublic to dashboard
* refactor routes to use route group and add placeholder method for sharing apii
* add sharing pane and utils for public dashboard config to sharing modal
* Sharing modal now persists data through the api
* moves ShareDashboard endpoint to new file and starts adding tests
* generates mocks. Adds tests for public dashboard feature flag
* Adds ability to pass in array of features to enable for the test
* test to update public flag on dashboard WIP
* Adds mock for SaveDashboardSharingConfig
* Fixes tests. Had to use FakeDashboardService
* Adds React tests for public dashboards toggle
* removes semicolons
* refactors SharePublic component to use hooks
* rename from `share publicly` to `public dashboard config`
* checkpoint. debugging tests. need to verify name changes
* checkpoint. test bugs fixed. need to finish returning proper response codes
* finish renaming. fix test
* Update pkg/api/api.go
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* update backend url
* rename internal objects and commands. fix configuration modal labels
* add endpoint for retrieving public dashboard configuration and populate the frontend state from it
* add test for dashboardCanBePublic
* adds backend routes
* copy DashboardPage component into component for public dashboards. WIP
* adds react routes, and doesnt render main nav bar when viewing a public route
* removes extra react route from testing
* updates component name
* Wrap the original dashboard component so we can pass props relevant to public dashboards, turn kiosk mode on/off, etc
* Wraps DashboardPage in PublicDashboardPage component. DashboardPage gets rendered in kiosk mode when public prop is passed.
* removes commented out code from exploratory work
* Makes public dashboard routes require no auth
* extracts helper to own util file to check if were viewing a public page
* Hides panel dropdown when its being viewed publicly
* formatting
* use function from utils file for determining if publicly viewed. If public, hides app notifications, searchwrapper, and commandpalette.
* adds unit tests for util function used to see if page is being viewed publicly
* cant added annotations to panel when being publicly viewed
* removes useless comment
* hides backend and frontend pubdash routes behind feature flag
* consider feature flag when checking url path to see if on public dashboard
* renames function
* still render app notifications when in public view
* Extract pubdash route logic into own file
* fixes failing tests
* Determines path using location locationUtils. This covers the case when grafana is being hosted on a subpath. Updates tests.
* renames pubdash web route to be more understandable
* rename route
* fixes failing test
* fixes failing test. Needed to update pubdash urls
* sets flag on grafana boot config for if viewing public dashboard. Removes hacky check that looks at the url
* fixes failing tests. Uses config to determine if viewing public dashboard
* renders the blue panel timeInfo on public dashboard panel
* Extracts conditional logic for rendering components out into their own functions
* removes publicDashboardView check, and uses dashboard meta instead
* the timeInfo is always displayed on the panel
* After fetch of public dashboard dto, the meta isPublic flag gets set and used to determine if viewing public dashboard for child components. Fixes tests for PanelHeader.
* Fixes failing test. Needed to add isPublic flag to dashboard meta.
Co-authored-by: Jeff Levin <jeff@levinology.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* bump packages to jest 28
* changes needed for jest 28
* map react-colorful as well
* use customResolver and fix last test
* don't need react-colorful installed if we're using a custom resolver
* return correct thing in mock
* remove watchPathIgnorePatterns since we don't have node_modules anymore
* Add RBAC section to settings
* Default to RBAC enabled settings to true
* Update tests to respect RBAC
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
* Updates queryResponse tests to include new cachedResponse bool
* Adds cachedResponse bool to QueryResponse
* Adds tests to assert the correct query counts (totalQueries and cachedQueries) are dispatched for data-requests
* Adds totalQueries and cachedQueries counts to the data-request events
* Adds new metrics and their descriptions to docs
* uses more descriptive variable name
* changes naming
* removes hyphen in docs
* extracts calculations to own lines prior to assignment
* Update dependency @testing-library/user-event to v14.1.1
* make this test more consistent
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Update dependency @testing-library/user-event to v14
* everything is async...
* everything is async pt.2
* Fix cascader tests
* hack the yarn.lock file to remove the old version of @testing-library/dom
* some more fixes!
* MOAR FIXES
* more fixes
* remove a bunch of places where we're wrapping in act()
* down to 7 failing tests...
* Fix arrow tests
* Fix rest of NavBarItem tests
* Fix last tests
* Use {Enter} instead of {enter}
* Revert "Use {Enter} instead of {enter}"
This reverts commit e72453bb52.
* remove some unused act imports
* Fix LibraryPanelsSearch tests
* more stable test
* More consistent test...
Co-authored-by: Renovate Bot <bot@renovateapp.com>
* Performance: Create separate div for portal root to limit reflow -> recalc style
* refactoring
* NoData: Use field config No value option as text when display no data message
* Use PanelDataErrorView in TabelPanel
* Add PanelDataErrorView to PieChart
* Updated
.substr() is deprecated so we replace it with .slice() which works similarily but isn't deprecated
Signed-off-by: Tobias Speicher <rootcommander@gmail.com>
* Expose option to disable help menu
* Expose option to disable profile menu
* Add Profile FeatureTogglePage
* Update public/app/features/profile/FeatureTogglePage.tsx
Uptake PR wording suggestion.
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Fix front end lint issue
* Fix back end lint issue
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Ensure TemplateService is updated with new time range on each time range change.
* Fix linting errors
* Fix explorePane.test.ts
* Reuse createDefaultInitialState
* Remove unused imports
* Add a test for left/right split
* Silence console.error in tests
* Silence console.error in tests
* chore(tsconfig): update grafana/tsconfig to 1.2.0 for outputting es6
* rewrote the unsubscription part to use first().
* test: update failing tests to work with es6 output
* removed bug where we dispatch a promise instead of an array of ritch history.
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Downgrade typescript to 4.5.2 for now
* Downgrade to 4.4.4 instead :(
* kick drone
* Update .github/renovate.json5
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Update dependency typescript to v4.5.4
* Changes needed to support new TypeScript version
* kick drone
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Chore(dependencies): Tidy up deps in root package
* Tidy up dependencies in @grafana/data
* Tidy up dependencies in @grafana/e2e
* Tidy up @grafana/e2e-selectors packages
* Tidy up packages in @grafana/runtime
* tidy up packages in @grafana/ui
* tidy up packages in jaeger-ui-components
* Readd regenerator-runtime in @grafana/data
* Update jest monorepo
* Update version of marked so it doesn't throw an error, set testEnvironment
* Fix some unit tests
* Remove all these tests that aren't actually working...
* use spyOn instead of mocking the whole module
* Fix linting
Co-authored-by: Renovate Bot <bot@renovateapp.com>
* PanelDataError: Show actions when current panel cannot visualize data
* Fixed so that suggestions tab is opened from action
* Cleanup
* Fixed tests
* Fix tests
* Fixing tests
* Fixed ts issues
* Update sentry-javascript monorepo to v6
* Pass fetch implementation to FetchTransport and stub in unit tests
* kick drone
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* properly set query type
* set default unit from data when found
* make AlertQueryRunner take into account ds.filterQuery
* fix tests
* feedback after pr
Co-authored-by: Peter Holmberg <peter.hlmbrg@gmail.com>
* refactor(pkg/api/frontendsettings): group plugin catalog settings
* feat(plugins/admin): add a default config value for `pluginCatalogHiddenPlugins`
* chore(grafana/config): add type for `pluginCatalogHiddenPlugins`
* feat(plugins/admin): hide plugins from the catalog based on the grafana config
* fix(plugins/admin): fix a rebase typo
* fix(plugins/admin): remove unnecessary filtering
* making it possible to cache plugins based on the version.
* feat(plugincache): introduce function to invalidate entries
* removed todo's
* added tests for the cache buster.
* fixed tests.
* fixed failing tests.
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Rename "Logs volume" labels to "Log volume"
Code references are kept intact as there's a lot of them, it could be renamed in a separate PR just with renaming
* Add log level docs
* Remove feature flag to enable log volume by default
* Update error message
* Update docs
* Fix unit test
* Fix unit test
Queries are now run automatically
* Add extra param for Loki API
* Remove "Load volume" button
* Update documentation about log volume
* Move comment
* Make reload button more accessible
* Update docs/sources/explore/logs-integration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Hide full range log volume for Loki behind the feature toggle
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Fix: make webpack pickup workers written in TS
* Add comlink to dependencies
* Temporary fix: copy paste `toDataQueryError` from @grafana/runtime to avoid web dependencies
* Implemented comlink-based centrifuge worker & worker proxy
* Temporary fix: implement comlink transferHandlers for subscriptions and streamingdataframes
* Move liveTimer filtering from CentrifugeService into GrafanaLiveService
* Switch from CentrifugeService to CentrifugeServiceWorkerProxy in GrafanaLive
* Naming fix
* Refactor: move liveTimer-based data filtering from GrafanaLiveService to CentrifugeServiceWorker
* observe dataStream on an async scheduler
* Fix: - Unsubscribe is now propagated from the main thread to the worker, - improve worker&workerProxy types
* Fix: Prettify types
* Fix: Add error & complete observers
* Docs: Add comment explaining the `subscriberTransferHandler`
* Fix: Replace `StreamingDataFrameHandler` with explicitly converting StreamingDataFrame to a DataFrameDTO
* Refactor: move liveTimer filtering to service.ts to make it easy to implement a `live-service-web-worker` feature flag
* Feat: add `live-service-web-worker` feature flag
* Fix: extract toDataQueryError.ts to a separate file within `@grafana-runtime` to avoid having a dependency from webworker to the whole package (@grafana-runtime/index.ts)
* Update public/app/features/dashboard/dashgrid/liveTimer.ts
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Fix: fixed default import class in worker file
* Fix: cast worker as Endpoint
* Migrate from worker-loader to webpack native worker support v1 - broken prod build
* Fix: Use custom path in HtmlWebpackPlugin
* Fix: Loading workers from CDNs
* Fix: Avoid issues with jest ESM support by mocking `createWorker` files
* Fix: move the custom mockWorker rendering layout to `test/mocks`
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Initial pass to move panel state to it's own, and make it by key not panel.id
* Progress
* Not making much progress, having panel.key be mutable is causing a lot of issues
* Think this is starting to work
* Began fixing tests
* Add selector
* Bug fixes and changes to cleanup, and fixing all flicking when switching library panels
* Removed console.log
* fixes after merge
* fixing tests
* fixing tests
* Added new test for changePlugin thunk
* Initial struture in place
* responding to state changes in another part of the state
* bha
* going in a different direction
* This is getting exciting
* minor
* More structure
* More real
* Added builder to reduce boiler plate
* Lots of progress
* Adding more visualizations
* More smarts
* tweaks
* suggestions
* Move to separate view
* Refactoring to builder concept
* Before hover preview test
* Increase line width in preview
* More suggestions
* Removed old elements of onSuggestVisualizations
* Don't call suggestion suppliers if there is no data
* Restore card styles to only borders
* Changing supplier interface to support data vs option suggestion scenario
* Renamed functions
* Add dynamic width support
* not sure about this
* Improve suggestions
* Improve suggestions
* Single grid/list
* Store vis select pane & size
* Prep for option suggestions
* more suggestions
* Name/title option for preview cards
* Improve barchart suggestions
* Support suggestions when there are no data
* Minor change
* reverted some changes
* Improve suggestions for stacking
* Removed size option
* starting on unit tests, hit cyclic dependency issue
* muuu
* First test for getting suggestion seems to work, going to bed
* add missing file
* A basis for more unit tests
* More tests
* More unit tests
* Fixed unit tests
* Update
* Some extreme scenarios
* Added basic e2e test
* Added another unit test for changePanelPlugin action
* More cleanup
* Minor tweak
* add wait to e2e test
* Renamed function and cleanup of unused function
* Adding search support and adding search test to e2e test
* Basic implementation of getLogsVolumeQuery method
* Add todos
* Add a switcher to automatically load logs volume
* De-scope dismissing logs volume panel
* De-scope logs volume query cancellation
* Remove todo
* Aggregate logs volume components in single panel
* Show logs volume only when it's available
* Aggregate logs volume by level
* Simplify aggregation
* Handle no logs volume data
* Add error handling
* Do not show auto-load logs volume switcher when loading logs volume is not available
* Remove old logs volume graph
* Clean up
* Make getting data provider more generic
* Provide complete logs volume data (error, isLoading)
* Display more specific error message
* Add missing props to mocks
* Remove setRequest method
* Mark getQueryRelatedDataProviders as internal
* Add missing dataQueryRequest and add a todo
* Remove redundant loading state
* Do not mutate existing queries
* Apply fix for zooming-in from main
* Post-merge fixes
* Create collection for data provider results
* Use more generic names
* Move aggregation logic to Loki logs volume provider
* Move LogsVolume to common types
* Update tests
* Post-merge fixes
* Fix mapping related data values
* Simplify prop mappings
* Add docs
* Fix property name
* Clean-up
* Mark new types as internal
* Reduce number of providers to logs volume only
* Simplify data structure to DataQueryResponse
* Move Logs Volume panel to a separate component
* Test logsVolumeProvider.ts
* Add observable version of datasource mock
* Test getLogsVolumeDataProvider method
* Test LogsVolumePanel
* Test logs volume reducer
* Clean up
* Clean up
* Fix test
* Use sum by to use level field directly
* Fix strict type errors
* Fix strict type errors
* Use "logs" instead of "unknown" if only one level was detected
* Add docs about logs volume
* Rename histogramRequest to logsVolumeRequest
* Use LogsVolumeContentWrapper all content types
* Move `autoLoadLogsVolume` local storage handling
* Fix strict error
* Move getting autoLoadLogsVolume to initial state
* Cancel current logs volume subscription
* Test cancelling subscriptions
* Update docs/sources/datasources/loki.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update packages/grafana-data/src/types/explore.ts
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Inline container styles
* Ensure logs volume is aggregated per each subscription separately
* Simplify logs volume provider
* Type-guard support for logs volume provider
* Simplify event handlers to avoid casting
* Clean up and docs
* Move auto-load switcher to logs volume panel
* Fix test
* Move DataSourceWithLogsVolumeSupport to avoid cross referencing
* Simplify interface
* Bring back old histogram and hide the new one behind a feature flag
* Add missing props to logs histogram panel
* Clean up the provider when it's not supported
* Simplify storing autoLoadLogsVolume
* Remove docs
* Update packages/grafana-data/src/types/logsVolume.ts
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* Skip dataframes without fields (instant queries)
* Revert styles changes
* Revert styles changes
* Add release tag
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* chore(Plugins/Admin): make the Plugins Catalog the default way to interact with plugins
* chore(defaults.ini): change the default value for `plugin_admin_enabled`
* test(Plugins): make the tests pass
* add create and add buttons that will be linked to enterprise
* wip
* wip
* clean up
* Co-authored-by: Travis Patterson <masslessparticle@gmail.com>
Added Query Modal that can be accessed from enterprise.
* reset docs
* reset docs
* docs changing
* docs
* docs
* unexporting props
* added generic ways to add more query actions and create actions
* cleanup
* adding internal tag
* adding onAddQuery to props so actions can add queries
* created a single query action component
* adding partial to query
* casting dataquery
Co-authored-by: Travis Patterson <travis.patterson@grafana.com>
* POC/Thresholds: Allow thresholds modification directly from the time series panel
* Snapshot updates
* Optimize styles memoization
* change threshold from graph
* renames and logging
* using useeffect to update graph
* Fix react worning about setting state on unmounted component
* revert panelrenderer
* using onFieldConfig change
* use a useeffect
* simplied fieldConfig state
* Do not use plot context in ThresholdControlsPlugin
* Do not throw setState warnings when drag handle is dropped
* Update thresholds position on the graph when updating threshold drag handle
* fix issues with rerenders
* prevent thresholds on conditions with range
* only edit the first threshold
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Refactor log query handling
* Add link to config page
* Change message about missing xray to alert
* Add xrayTraceLinks
* Fix typo in field name
* Fix tests and lint
* Move test
* Add test for trace id link
* lint
* prometheus: add monaco-based query-field
for now it is behind a feature-flag
* added new trigger character
* better separate grafana-specifc and prom-specific code
* better styling
* more styling
* more styling
* simpler monaco-import
* better imports
* simplified code
* simplified type imports
* refactor: group completion-provider files together
* renamed type
* simplify type-import
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* handle no-metric-name autocompletes
* updated comment
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Add Tempo search behind feature flag
* Add query fields for Tempo search
* Only show loki search if a logs-to-traces datasource is set up
* Refactor tempo search to use separate fields for service name, span name, and tags
* Add tests to buildSearchQuery
* Move search to separate component and rename type to native search
* Improve Tempo tokenizer syntax
* Fix jsdoc description for datasourceRequest
* Align default subscription width with other fields
* AzureMonitor: Show error message when requesting default subscriptions in ConfigEditor
* update snapshots:
* Replace analytics service with Echo backend
* Add Rudderstack integration and general pageview and interaction Echo events
* Update conf/defaults.ini
Co-authored-by: Dan Cech <dcech@grafana.com>
* Update packages/grafana-runtime/src/types/analytics.ts
Co-authored-by: Dan Cech <dcech@grafana.com>
* Update conf/defaults.ini
Co-authored-by: Dan Cech <dcech@grafana.com>
* Update tests
* Force cla check
Co-authored-by: Dan Cech <dcech@grafana.com>
* Improve error handling for error messages
The error message will be read from error object from the following properties in the following order:
- message
- data.message
- statusText
* Convert api/ds/query errors to TestingStatus
SQL datasources (mysql, mssql, postgres) and CloudWatch use api/ds/query to test the data source, but previously didn't handle errors returned by this endpoint. If the error cannot be handled it's re-thrown to be handled in public/app/features/datasources/state/actions.ts
* Use async/await instead of Promises
* Remove incorrect type import
TestingStatus is in app/types. Should be pulled down to grafana/data but it depends on HealthCheckResultDetails that is public and lives in grafana/runtime. Ideally TestingStatus should live in grafana/data but I'm not sure if HealthCheckResultDetails can be move there too (?)
* Update packages/grafana-data/src/types/datasource.ts
Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
* Handle errors with no details in toTestingStatus instead of re-throwing
* Update packages/grafana-data/src/types/datasource.ts
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Chore: update developer guide to use Volta
* Chore: Fix Volta config
* Chore: Add volta config to each workspace
* Chore: Add volta config to each workspace
* Apply suggestions from code review
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update contribute/developer-guide.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>