* Show '-' in notifiers table when lastNotifyAttemptDuration is 0s
* Add tests for no attempt (lastNotifyAttempt null date) and no last duration (lastNotifyAttemptDuration 0s)
* Flamegraph
* Updated flame graph width/height values
* Fix top table rendering issue
* Add feature toggle for flamegraph in explore
* Update tests
* Hide flamegraph from dash panel viz list if feature toggle not enabled
* Show table if no flameGraphFrames
* Add flame graph to testdata ds
* Minor improvement
* Switch from lingui from i18next
* Change lingui messages to i18next messages
* Change lingui messages to i18next messages (grafana-ui)
* Init i18n for tests
* Alerting: Receivers integrations error feedback: WIP - Add notifications error at the top right on contact points view (#52390)
* Add interfaces for contact point errors
* [WIP] Create fake response for the new service to get contact point errors
* [WIP] Create action an reducer for the new service to get contact point errors
* Fetch fetchContactPointStates in Contact Points tab every 20s and when AM changes
* [WIP] Use store to get error count
* Show number of integrations errors at the contact points main view
* Add warning icon and refactor styles using getStyles
* Change lastNotify type to string instead of DateTime
* Use Stack component from experimental library when it is possible
* Alerting: Add receivers error feedback in contact point list (#52524)
* Refactor types for contact points state
* Add health column in ReceiversTable in case error state is available for this AM
* Create method for converting contact points state DTO to the FE type used in Redux store
* Update types
* Fix indexOf criteria getting integration type
* Change type name to integrationType name
* Change new components to be named functions to follow the FE style-guide
* Fix typos
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
* Decouple ReceiversTable from Redux state
* Create private useContactPointsState hook to simplify code in ReceiversTable component
* Add tests for getIntegrationType and refactor the method to validate the name
* Add tests for contactPointsStateDtoToModel method
* Remove unnecessary check
* Use Badge compoment for health status in contact point list
* Create new method parseIntegrationName to simplify getting types and index from integration name
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
* Alerting: Show integrations error feedback when expanding contact point in list (#52920)
* Use DynamicTable for rendering list of contact points and make them expandable if error status is available
* Render expanded content for contact points integrations
* Style and format last notify column
* Add send resolve column to the integration details
* Fix receiver id for DynamicTable row
* Update clock icon in integration state
* Fix tests
* Add PR review sugestions
* Alerting/integrations error feedback handle null dates in response 3 (#55659)
* Update fake response with lastNotify ISO8601 formatted, to be aligned with latest BE changes
* Update LastNotify in ReceiversTable component to handle null date
* Alerting/integrations error feedback handle 404 state not available (#55803)
* Create fetchContactPointsState using the future contact point url and handle 404 error
* Add contact points state tests
* Alerting/update receivers dto naming 2 (#56201)
* Update NotifierStatus naming and fix sendResolved not being updated in UI
* Return always empty ContactPointsState array when catching an error in the request response
* Fix test
* Show notification status only in notifications main view
* Calculate total error count from the final contactPointsState object, to avoid errors when duplicated entries are returned wronly in the response
* Add PR review suggestions
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
* fix log row being falsely added to context
* do not add to many lines
* fix scroll position in context
* more flexible id comparison
* add original refid to context query
* added missing row comparison
* updated comment
Co-authored-by: Matias Chomicki <matyax@gmail.com>
Co-authored-by: Matias Chomicki <matyax@gmail.com>
* playlist: Split PlaylistItem into standalone TS type
* update playlist model
* actually set the title
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* chore(grafana-ui): don't bundle emotionPerfTest
* chore(grafana-ui): fix circular dependencies that cause esm chunks to not match up
* chore(grafana-ui): prevent bundling all css properties in package types
* Revert "Explore: Prevent panes from disappearing when resizing window in split view (#55696)"
This reverts commit 0a5aa19ca2.
* Revert "Explore: Add resize to split view, with Min/Max button (#54420)"
This reverts commit c3e4f1f876.
* 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
* initial collapsible section nav implementation
* fix unit tests
* automatically collapse sectionnav when below lg size
* fix unit tests
* only register 1 event listener each time
* fix display name for SectionNavToggle
* show breadcrumbs correctly when on the home page
* adjust breadcrumb unit tests
* update betterer
* fix backend tests
* update getSectionRoot to look at the home nav id
* remove redundant setting of home dashboard
* construct a home navmodelitem in the backend
* fix cases when the feature toggle is off
* fix unit test
* fix more unit tests
* refactor how buildBreadcrumbs works
* use HOME_NAV_ID
* move homeNav useSelector into NavToolbar
* remove unnecesary cloneDeep
* don't need locationUtil here
* restore using getUrlForPartial in DashboardPage
* special case for the editview query param
* remove commented out code
* add comment to clarify splice behaviour
* slightly cleaner syntax
* Add messages for new trackings
* Track clicking on alert state filters
* Track creating alert rule from panel
* Track creating alert rule from scratch
* Track on success and when cancelling a rule creation
* Alerting: Allow created by to be manually set when there's no creator
Grafana has a mode that allows unauthenticated interaction, typically the created by field of a silence is inferred from the current logged user. When this is not present, the field is left black and thus the silence creation fails.
This allows us to set the created by when we is not possible to infer it from the current user.
* Show created by input field only if user is not logged
* Add test for new logic with createdBy input field
Co-authored-by: Sonia Aguilar <soniaaguilarpeiron@gmail.com>
* added center implementation
* fixed passing `scrollElement` to wrong component
* rather destructure than direct ref
* removed unnecessary `undefined`
When a contact point configuration field has `showWhen` set on it, the contact point form was not correctly displaying. This change fixes that so that forms display correctly.
* NewIA: Plugin nav config
* progress
* Progress
* Things are working
* Add monitoring node
* Add alerts and incidents
* added experiment with standalone page
* Refactoring by adding a type for navtree root
* First test working
* More tests
* more tests
* Progress on richer config and sorting
* Sort weight working
* Path config
* Improving logic for not including admin or cfg nodes, making it the last step so that enterprise can add admin nodes without having to worry about the section not existing
* fixed index routes
* removed file
* Fixes
* Fixing tests
* Fixing more tests and adding support for weight config
* Updates
* Remove unused fake
* More fixes
* Minor tweak
* Minor fix
* Can now control position using sortweight even when existing items have no sortweight
* Added tests for frontend standalone page logic
* more tests
* Remove unused fake and fixed lint issue
* Moving reading settings to navtree impl package
* remove nav_id setting prefix
* Remove old test file
* Fix trailing newline
* Fixed bug with adding nil node
* fixing lint issue
* remove some code we have to rethink
* move read settings to PrivideService and switch to util.SplitString
* PluginDetails: Make plugin details page look good in topnav
* Minor style tweak aligning things
* minor refactoring where I moved the logic to decide the default tab into its own hook.
* refactor(plugindetails): first pass at using navmodel for usePluginDetailsTabs hook
* refactor(plugindetails): move "reset page when uninstalling plugin" to installcontrols
this prevents a user from seeing a blank page if they uninstall an app plugin whilst viewing a
config page
* refactor(plugindetails): remove usage of toIconName and reduce nested if
* Trying to fix tests
* minor fix
* test(plugindetails): update selectors causing failing tests
* chore(plugindetails): remove commented out test code
* test(plugindetails): clean up - remove unnecesary usage of waitFor
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* add floating footer logo to pubdash pages
* make it a link
* fix typo
* use rem instead of pixels
* Update public/app/features/dashboard/components/PubdashFooter/PubdashFooter.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update public/app/features/dashboard/components/PubdashFooter/PubdashFooter.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update public/app/features/dashboard/components/PubdashFooter/PubdashFooter.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update public/app/features/dashboard/components/PubdashFooter/PubdashFooter.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* PR feedback
* add todo
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Add split resize to Explore without keeping width in state
* debug commit
* ugly hack around split lib only supporting one child
* Use SplitView to accomodate one or two elements, remove debug code, fix test
* More cleanup, fix state action
* Fix even split from manual size scenario
* cleanup
* Add new state elements to test
* Handle scrollable on internal element for virtualized lists
* Left align overflow button for explore
* Change min/max buttons
* Apply suggestions from code review
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Add more suggestions from the code review
* Fix problems tests found
* commit broken test with debug info
* Add test, remove debug code
* Remove second get of panes
* Remove second get of panes
Co-authored-by: Elfo404 <me@giordanoricci.com>
* Refactor FolderPicker to functional componment and add dissalowSlashes as an optional prop
* Update DetailsStep component to use FolderPicker dissalowing slashes in folders
* Adds icon that links to the Github issue when showing slashes not allowed warning
* Add test for slashed folders warning
* Fix merge conflicts with folder creation fix PR
* Move slashes filter to useRuleFolderFilter hook, and make folder warning an optional generic prop
* Apply PR review suggestions
* Log leaving rule group edit without saving
* Log filtering alert instances by label
Also debouncing the search to prevent sending too many log requests
* Log loading the Alert Rules list
* Move log messages to centralized location
* Add tests on log trackings
* Fix linting
* search: create a separate http endpoint
* search: extract api uri
* search: rename uri
* search: replicate the readiness check
* search: replicate the readiness check metric
* search: update mock
* convert plugin filter options to use a type instead of string
* add secrets manager and renderer to app plugin filter
* update frontend tests
* more test updates
* fix function to handle all cases
* scaffold new component + remove storing of expanded state
* some padding fixes
* simplify!
* move browse back to being a child of dashboards
* behaviour working
* improve child matcher to look recursively
* increase NavBarMenu zIndex to ensure it overlays explore drawer
* some renaming
* fix unit test
* make dashboards a top level item again and make chevrons their own buttons
* remove active background state
* Finished tweaks
* remove theme change
* Remove exit animation
* align button centrally + fix empty message alignment
* only show the empty message if there are no children
* ensure overflowing menu items truncate correctly
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* feat: add tracking in query row button group
* feat: add tracking for split view
* feat: add tracking for query inspector tab open
* feat: add tracking for shortened link button
* feat: add tracking for change of datasource
* feat: add tracking for time range options
* refactor: clean up
* refactor: repair tests
* refactor: clean up
* feat: add details to change of data source
* refactor: remove duplicate tracking
* refactor: make tracking reusable in an easier way
* refactor: add property
* refactor: change data for time picker
* refactor: change tracking label for time picker
Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
* refactor: store tracking in explore component
* refactor: add index signature
* refactor: remove ?
* refactor: split into 3 callbacks
* refactor: apply suggestions from code review
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Add type='button' in button used in Heading component to prevent having the default value ='submit'
* Add type='button' for buttons used in form when grafana-managed alert type is selected
* Add type='button' for buttons used in form when mimir-or-loki alert type is selected
* Use datasource function with error handling
* Check datasource exists when validating query, add test
* Add mock to test that now requires it
* Add comment explaining verbose validity logic
* logs: added a copy of the grafana-ui logs-files
* fix: added the ansicolor package to the main grafana package
* logs-components: import things from grafana-ui
* import from local files
* logs-components: other fixes
* add betterer-exceptions
* apply updates from grafana-ui package
* Hide Correlations Page behind a toggle
* Remove redundant defaults
* Ensure top nav is rendered when correlations are disabled
This is for the case when:
[feature_toggles]
topnav = true
* added pageNav subttitle and used navid for usercreatepage
* improve subtitle copy and redirected to user page after creation
* improve title copy
* improve copies
* breadcrumbs redirect to users page instead of org
* Initial progress
* Moving keybindingSrv to context
* Simplfy KioskMode
* Removed unused logic
* Make kiosk=tv behave as before but when topnav is enabled
* Minor fix
* Fixing tests
* Fixing bug with notice when entering kiosk mode
* Fixed test
*Refactor FolderPicker to be functional component.
* Add customAdd optional property to FolderPicker so we can add new values in the alert view but keeping the same behaviour in the rest of the ui.
* Add test for being able to add folder when no folders found.
* Design tweaks
* Updated
* Fixing unit tests
* Review fixes
* Text primary on active sections, and change home icon to text
* spacing fix
* More fix
* Fixes
* Updates
* Progress
* Progress
* Things are working
* More tweaks
* Fixing unit test
* Tweaks and fixing e2e tests
* Remove ... in Save as
* Fixing unit test
* Fixing e2e test
* Fixes
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Use original query time range when duplicating it
If there's no time range, then assign a default one
* Add tests
* Import default relative time range from common lib
* update data-testids
* update data-testids
* Convert TimelineHeaderRow test to RTL
* update data-testids
* Convert TimelineHeaderRow test to RTL
* Convert TimelineHeaderRow test to RTL
* modify TraceView test
* revert test
* Update packages/jaeger-ui-components/src/TraceTimelineViewer/TimelineRow.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Ran yarn betterer
* update selector
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Hamas Shafiq <hamas.shafiq@grafana.com>
* behaviour mostly there
* slight performance improvement
* slightly nicer...
* refactor search and add it to the store
* add comments about removing old component
* remove unneeded logic
* small design tweak
* More small tweaks
* Restore top margin
* add onCloseSearch/onSelectSearchItem to useSearchQuery
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* RBAC: Allow app plugins restriction
Co-authored-by: Kalle Persson <kalle.persson@grafana.com>
* Moving declaration to HttpServer
Co-Authored-By: marefr <marcus.efraimsson@gmail.com>
* Picking changes from the other branch
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* Rename plugins.settings to plugins
Co-authored-by: Kalle Persson <kalle.persson@grafana.com>
* Account for PluginAdminExternalManageEnabled
Co-authored-by: Will Browne <will.browne@grafana.com>
* Set metadata on instantiation
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
Co-authored-by: Kalle Persson <kalle.persson@grafana.com>
Co-authored-by: marefr <marcus.efraimsson@gmail.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: Will Browne <will.browne@grafana.com>
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
* 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
* super quick attempt
* feature toggle everything
* only construct alertNav if there are navChildren
* fix toggle name
* plugin landing pages poc
* add apps route + put behind feature toggle
* use toIconName
* rename to NavLandingPage
* feature toggle new routes
* don't modify GetServerAdminNode
* some fairly hacky code to check if the plugin has a root page
* remove trailing slash
* Remove single member team restriction
* Add label when permissions list is empty
* Fix unit tests
* Add co-author.
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Add release note url to footer's version label
* Filter out pre-release versions in release notes link at the footer
* correct links for beta/prerelease release notes
* make all links target blank
* Fix TeamPages test
Co-authored-by: joshhunt <josh@trtr.co>
* Revert "Add FocusScope to PanelEditor when open in the Dashboard Page so that a11y focus never catches invisible content. (#54400)"
This reverts commit ef32050508.
* Betterer <3
* Toggle on the mixed mode option
* Ensure switching to mixed gives existing query prev datasource
* WIP - Populate datasource when switching between mixed and not
* WIP - handle change from mixed
* Remove preimport filter, refine filter to work for queries
* WIP debugging datasource transition
* Ensure creating a new query gets target data source if switching with no matches between
* Add mixed datasource to rich history display
* Cleanup console logs, add relevant comments
* Add feature toggle for mixed datasource
* Fix Wrapper tests
* Fix tests!
* Fix test types and add feature tracking
* Remove unnecessary default, remove explore/mixed workarounds for D2E
* Move display text logic to mixed datasource file
* Add in the default query parameters to a generated empty query
* Condense some code
* Apply suggestions from code review
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Add more logic around mixed datasource being off for explore
* Build out logic to handle different datasource scenarios
* Add tests
* Finalize last test
* Fix mixed URL with mixed ds off, and relevant test
* Fix datasource to explore workflow
* Add datasource change function, call import queries if needed
* add logic for changing single query ds
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Navigation Bar: Remove plugins link under Server Admin
* Modify frontend to handle admin plugins as just plugins
* update assets and documentation mentioned path
* Fix copy to remove redundant text
This works correctly on initial dashboard load. However, when an action
is taken that triggers a "re-mount", e.g. opening the options pane on
the right side of the page, the `data` prop becomes undefined.
* 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>
* Dashboard: Fix `changes note` textarea to save draft when going to other tabs
* Do not show Changes tab if there are no changes
* Fix comments
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Search: use SQL search as a fallback when bluge indexing is ongoing
* Search: lint
* Search: feedback fixes - return an empty frame with a special name
* Search: revert readiness check query type
* Search: remove println
* remove sleep, get coffee
* DashList: Stop using IDs
* DashLinks: Stop using IDs
* BackendSrv: Do not use ID for search endpoint
* DashboardDataDTO: Remove ID
* Remove unused properties from DashboardSearchItem
* RolePicker: Handle inherited with
* Small ammendment to Create Service Account layout
* RolePicker: introduce maxWidth prop
* Clean up
* Change VerticalGroup spacing to large on Team Settings page
* Introduce constant for submenu width
* Update public/app/core/components/RolePicker/RolePicker.tsx
Simplify style parameter
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Add description to the improved calculation
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* use navId, pageNav and update alignments of service account page
* Fixing item header when feature is disabled
* Fix orgs item page
* Minor tweak to subtitle for service account item page
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Adhoc variable: Correctly preselect datasource when provisioning
* Fix test
* Remove data sources from ad hoc variable state in favor of DataSourcePicker
* Scenes: Support new top nav
* Page: Make Page component support new and old dashboard page layouts
* Pass scrollbar props
* Fixing flex layout for dashboard
* Progress on dashboard settings working with topnav
* Updated
* Annotations working
* Starting to work fully
* Fix merge issue
* Fixed tests
* Added buttons to annotations editor
* Updating tests
* Move Page component to each page
* fixed general settings page
* Fixed versions
* Fixed annotation item page
* Variables section working
* Fixed tests
* Minor fixes to versions
* Update
* Fixing unit tests
* Adding add variable button
* Restore annotations edit form so it's the same as before
* Fixed semicolon in dashboard permissions
* Fixing unit tests
* Fixing tests
* Minor test update
* Fixing unit test
* Fixing e2e tests
* fix for e2e test
* fix a11y issues
* Changing places Settings -> General
* Trying to fix a11y
* I hope this fixes the e2e test
* Fixing merge issue
* tweak
* hacky first attempt
* slightly cleaner...
* behaviour mostly working...
* remove unnecessary wrapper
* css tweaks
* much cleaner implementation with intersectionobserver
* set style props directly on children
* separate story, integrate when toggle is off
* improve story, integrate when toggle is on
* remove styles from DashNavTimeControls
* mock IntersectionObserver for all unit tests
* prettier
* don't use dropdown anymore
* add some basic documentation
* add right alignment to scenes toolbarbuttonrow
* just use the react children api to prevent duplicating children
* Add fixture-factories for all variable types
* clean up variable guards
* add tests for isMulti, hasCurrent, and hasOptions variable type guards
* create VariableSupport type to try and work around ts wonkiness
* RBAC: Add orgID to DeleteUserPermissions
* RBAC: Refactor query to delete all permissions in specified org, 0
deletes all permissions
* Delete user permission in org when user is removed
* Remove call to delete permissions in frontend
* Remove user permissions if removed orgs is detected during oauth sync
Co-authored-by: Jo <joao.guerreiro@grafana.com>
* Add disabled column to Org's Users table
* fix typo
* Change column order
* Add test for testing whether GetOrgUsers populates the DTO correctly
* Remove type assertion
* Show alerting availability in data source details
* Show tooltip info in data source dropdown when creating an alert
* return earlier in HeaderExtras component
* Use getDataSourceSrv().getInstanceSettings instead of getDataSourceSrv().get to simplify
* Make information icon clickable and open a new window with documentation url
* RolePicker: Check if user has permissions to delegate roles
* UserRolePicker: Require both UserRolsAdd and UserRolesRemove for chaning
roles
* RolePicker: Add option for controlling if roles can be updated to
RolePicker
* UserOrgs: Dont try to fetch roles with wrong permission
* RolePicker: make usage consistent with allowed actions
* RolePickerMenu: Remove unused property
* UserOrgs: Check for correct permission
* UserRolePicker: add apply to controll apply behaviour instand of
updateDisabled
* UserOrgs: Check for correct permission when trying to update roles
* RolePicker: Disable button if no roles or org role can be updated
* RolePicker: Always close on update
* RolePicker: Fix issue with updating immutable value
* ServiceAccountsListItem: Pass correct value to RolePicker
* ServiceAccountCreatePage: Pass correct value