* Table panel: Support multiple data links in default cell
* Table panel: Show data links for Image and JSONView cells
* Simplify DataLinksContextMenu api
* Betterer
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>
* rename yZeroDisplay -> yMinDisplay
* remove heatmap-cells-sparse frame type
* parse x bucket size to millis
* take into account hideLE & hideGE filters to auto-range color scale
* extract cell value range scanning to heatmapData
* Use nullInsertThreshold and nullToValue in time series
* Allow for undefined timeRange to support certain candlestick uses of prepareGraphableFields
* Make sure null to value doesn't modify initial data
* Do a shallow values copy and avoid Array.push()
* Clean up null to value transformation.
* Add basic tests
* Remove redunant null threshold application flagging
* set nullThresholdApplied flag even when no null inserts were done
* Include nullThresholdApplied in test snapshot
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* unit test scaffolding for FolderSection
* remove redundant spinner + more test scaffolding
* more test experimentation
* clear localStorage between test runs
* more tests + add back spinner when renderStandaloneBody
* bit of tidy up
* update Spinner data-testid
* fix import ordering
* make it possible to set default query
* set default query in cloudwatch ds
* remove cloudwatch example code
* apply feedback
* Update public/app/features/explore/state/query.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/features/query/components/QueryGroup.tsx
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* add alpha tag to method definiton
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* coremodel: Generate static registry
* Actually make codegen work
Also, remove the per-coremodel assignability test from generator set.
* Make wire gen depend on cue gen
This is necessary now that we're generating a wire set as part of
coremodel registry generation.
* Add wire inject bits to http server
* s/staticregistry/registry/
* move to static and dynamic wording
* Move registry type into registry package
* Use static registry in http handler
* Oi comments
* 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>
* GeomapPanel: Add base types to data layer options
Removed isBaseMap check from data layer filter, which used to remove
base layer types from data layer options. For layer editor, slider to
control opacity is added.
* GeomapPanel: Reorder data layer options
For data layer selection, present user with data layer types first,
before base map layer types. Refactored to consolidate layer options
into a single exported function in registry with a base map boolean.
* GeomapPanel: Add descriptions to base map types
* GeomapPanel: add hideOpacity and apply to markers
* GeomapPanel: update descriptions for map types
Closes#47812
* Feature Flags: introduce a flag for enabling the Data Connections page
* Feature Flags: generate schemas
* Navigation: add navigation weight for the Data Connections page
* NavLink: add a comment pointing out where icon names can be looked up
* NavTree: add a new page called Data Connections
* fix(Api): prefix the navigation IDs with the parent ("data-connections")
* feat(Frontend): add a basic page with four tabs
* feat(Plugins): add a hook for importing an app plugin
* feat(Plugins): add a component for loading app plugins anywhere
* feat(Data Connections): load the cloud-onboarding app under the "Cloud onboarding" tab
* feat(Data Connections): generate a proper nav model to highlight active tabs
* test(Data Connections): add tests
* refactor(Data Connections): update temporary text content
This is only used as a placeholder until the tabs are under development.
* refactor(Data Cnnnections): move /pages to /tabs
* refactor(Data Connections): remove the `types.ts` file as it is not referenced by any module
* feat(Data Connections): only register routes if feature is enabled
* fix(grafana-ui): prevent module resolution failure where component-indexof appears as indexof
* chore(grafana-ui): update comment explaining need for alias plugin
* APM table
* Remove unnecessary changes in Explore.tsx
* Enhancements
* Show empty table if filter returns no results for table
* Error checking
* Combine extra filter options
* Convert service map query to apm query for apm requests
* Simplify links
* Better query building
* Extract method and clean up
* Upgrade filter
* Self review
* Export method
* Update test
* Switch area-chart to lcd-gauge
* Remove AreaChartCell
* Colors, units and other UI upgrades
* Remove 2 queries and reuse existing queries
* Nested observables
* rate/error rate/duration links: open new pane with range query and exemplars turned on
* Align error rate values to rate values col according to span_name
* Rearrange code
* Several improvements
* Filter by span_name
* align the table col values to the same row name (rateName) across the table
* On click tempo link filter by span_name
* Filtering updates
* Ensure serviceQuery null is ok
* Update link expr
* Update duration p90 unit
* Tempo links case
* Update tests
* Self review
* Tests
* Empty state
* Remove some code
* Test: should build expr correctly
* Test: should build link expr correctly
* Test: should get rate aligned values correctly
* Test: should make apm request correctly
* Test: should make tempo link correctly
* Move apm table tests to its own describe
* Feature toggle
* Added to docs for APM table
* Add screenshot to APM table section in docs
* Add feature toggle to test
* Split queries and make method names clearer
* Doc changes
* Add back in config import removed by merge
* Update tempo link and tests
* Update filter
* Set field filterable: false
* Updated doc
* Remove @end from queries
* Add back in tempo link
* Fix random typo I found
* add 'useDataFrame' boolean to each layer type to determine whether the layer queues off of query data
* Add data frame picker to options layout depending on layer type
* change layer update logic to render features from a specific data frame. Lift data frame selection up a level in order to add some more complex error handling.
* add a todo to the MapLayerRegistryItem interface
* update optional arg in function signature for consistency
* move dataframe filtering to paneldata, revert layers to prior state
* commit refactor, need to clean up still
* pull copy-pasted code into its own function
* clean up comments
* Update layer.ts
* remove unused types
* fix spacing
* improve dropdown
* need to add dependency to this callback function, otherwise it will always use the context of the last layer
* add data query recovery logic to handle query renames
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* refactor(selectoptiontest): move helper function out of grafana/ui so testing-lib isn't in bundle
* test(selectoptionintest): update import location of helper function
* test(amroutes): put back missing selectOptionInTest helper
* test(selectoptionintest): clean up remaining file imports / exports
* test(queryeditor): fix failing import
* refactor(grafana-ui): reuse selectOptionInTest in SelectBase test
* Remove crufty scuemata bits
Buhbye to: cue/ dir with old definitions, CI steps for checking unnecessary
things, and the original dashboard scuemata file.
* Remove grafana-cli cue subcommand
* Remove old testdata
* Don't swallow errors from codegen
* Small nits and tweaks to cuectx package
* WIP - refactor pluggen to use Thema
Also consolidate the embed.FS in the repo root.
* Finish halfway rename
* Convert all panel models.cue to thema
* Rewrite pluggen to use Thema
* Remove pkg/schema, and trim command
* Remove schemaloader service and usages
Will be replaced by coremodel-centric hydrate/dehydrate system Soon™.
* Remove schemaloader from wire
* Remove hangover field on histogram models.cue
* Fix lint errors, some vestiges of trim service
* Remove unused cuetsify cli command
* 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>