Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 92f1fba9b4 | |||
| 563ca4aa39 | |||
| f1d4c6433b | |||
| ccf0c5b40e | |||
| 6569f64267 | |||
| 1cc2a4cbe7 | |||
| 93c9887bc4 | |||
| 66d8379061 | |||
| 7e708e5976 | |||
| a9f59cf340 | |||
| 02fadf48fc | |||
| 496911e716 | |||
| 6d8ad119bf |
@@ -31,9 +31,9 @@ jobs:
|
||||
app_id: ${{ vars.DELIVERY_BOT_APP_ID }}
|
||||
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||
repositories: '["grafana"]'
|
||||
permissions: '{"contents": "write", "pull_requests": "write"}'
|
||||
permissions: '{"contents": "write", "pull_requests": "write", "workflows": "write"}'
|
||||
- name: Checkout Grafana
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
token: ${{ steps.generate_token.outputs.token }}
|
||||
- name: Update package.json versions
|
||||
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Set up version (Release Branches)
|
||||
@@ -140,7 +140,7 @@ jobs:
|
||||
# The downside to this is that the frontend will be built for each one when it could be reused for all of them.
|
||||
# This could be a future improvement.
|
||||
include:
|
||||
- name: linux-amd64
|
||||
- name: linux-amd64 # publish-npm relies on this step building npm packages
|
||||
artifacts: targz:grafana:linux/amd64,deb:grafana:linux/amd64,rpm:grafana:linux/amd64,docker:grafana:linux/amd64,docker:grafana:linux/amd64:ubuntu,npm:grafana,storybook
|
||||
verify: true
|
||||
- name: linux-arm64
|
||||
@@ -169,7 +169,7 @@ jobs:
|
||||
verify: true
|
||||
steps:
|
||||
- uses: grafana/shared-workflows/actions/dockerhub-login@dockerhub-login/v1.0.2
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Set up QEMU
|
||||
@@ -197,6 +197,7 @@ jobs:
|
||||
name: artifacts-${{ matrix.name }}
|
||||
path: ${{ steps.build.outputs.dist-dir }}
|
||||
retention-days: 1
|
||||
|
||||
publish-artifacts:
|
||||
name: Upload artifacts
|
||||
uses: grafana/grafana/.github/workflows/publish-artifact.yml@main
|
||||
@@ -211,6 +212,7 @@ jobs:
|
||||
run-id: ${{ github.run_id }}
|
||||
bucket-path: ${{ needs.setup.outputs.version }}_${{ github.run_id }}
|
||||
environment: prod
|
||||
|
||||
publish-dockerhub:
|
||||
if: github.ref_name == 'main'
|
||||
permissions:
|
||||
@@ -268,3 +270,68 @@ jobs:
|
||||
docker manifest push grafana/grafana:main-ubuntu
|
||||
docker manifest push "grafana/grafana-dev:${VERSION}"
|
||||
docker manifest push "grafana/grafana-dev:${VERSION}-ubuntu"
|
||||
|
||||
publish-npm-canaries:
|
||||
if: github.ref_name == 'main'
|
||||
name: Publish NPM canaries
|
||||
uses: ./.github/workflows/release-npm.yml
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
needs:
|
||||
- setup
|
||||
- build
|
||||
with:
|
||||
grafana_commit: ${{ needs.setup.outputs.grafana-commit }}
|
||||
version: ${{ needs.setup.outputs.version }}
|
||||
build_id: ${{ github.run_id }}
|
||||
version_type: "canary"
|
||||
|
||||
# notify-pr creates (or updates) a comment in a pull request to link to this workflow where the release artifacts are
|
||||
# being built.
|
||||
notify-pr:
|
||||
runs-on: ubuntu-x64-small
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
needs:
|
||||
- setup
|
||||
steps:
|
||||
- id: vault-secrets
|
||||
uses: grafana/shared-workflows/actions/get-vault-secrets@main
|
||||
with:
|
||||
repo_secrets: |
|
||||
GRAFANA_DELIVERY_BOT_APP_PEM=delivery-bot-app:PRIVATE_KEY
|
||||
- name: Generate token
|
||||
id: generate_token
|
||||
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
|
||||
with:
|
||||
app_id: ${{ vars.DELIVERY_BOT_APP_ID }}
|
||||
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||
repositories: '["grafana"]'
|
||||
permissions: '{"issues": "write", "pull_requests": "write", "contents": "read"}'
|
||||
- name: Find PR
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||
GRAFANA_COMMIT: ${{ needs.setup.outputs.grafana-commit }}
|
||||
run: echo "ISSUE_NUMBER=$(gh api "/repos/grafana/grafana/commits/${GRAFANA_COMMIT}/pulls" | jq -r '.[0].number')" >> "$GITHUB_ENV"
|
||||
- name: Find Comment
|
||||
uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e # v3
|
||||
id: fc
|
||||
with:
|
||||
issue-number: ${{ env.ISSUE_NUMBER }}
|
||||
comment-author: 'grafana-delivery-bot[bot]'
|
||||
body-includes: GitHub Actions Build
|
||||
token: ${{ steps.generate_token.outputs.token }}
|
||||
- name: Create or update comment
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
|
||||
with:
|
||||
token: ${{ steps.generate_token.outputs.token }}
|
||||
comment-id: ${{ steps.fc.outputs.comment-id }}
|
||||
issue-number: ${{ env.ISSUE_NUMBER }}
|
||||
body: |
|
||||
:rocket: Your submission is now being built and packaged.
|
||||
|
||||
- [GitHub Actions Build](https://github.com/grafana/grafana/actions/runs/${{ github.run_id }})
|
||||
- Version: ${{ needs.setup.outputs.version }}
|
||||
edit-mode: replace
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
name: Release NPM packages
|
||||
run-name: Publish NPM ${{ inputs.version_type }} ${{ inputs.version }}
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
grafana_commit:
|
||||
description: 'Grafana commit SHA to build against'
|
||||
required: true
|
||||
type: string
|
||||
version:
|
||||
description: 'Version to publish as'
|
||||
required: true
|
||||
type: string
|
||||
build_id:
|
||||
description: 'Run ID from the original release-build workflow'
|
||||
required: true
|
||||
type: string
|
||||
version_type:
|
||||
description: 'Version type (canary, nightly, stable)'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
grafana_commit:
|
||||
description: 'Grafana commit SHA to build against'
|
||||
required: true
|
||||
version:
|
||||
description: 'Version to publish as'
|
||||
required: true
|
||||
build_id:
|
||||
description: 'Run ID from the original release-build workflow'
|
||||
required: true
|
||||
version_type:
|
||||
description: 'Version type (canary, nightly, stable)'
|
||||
required: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
# If called with version_type 'canary' or 'stable', build + publish to NPM
|
||||
# If called with version_type 'nightly', just tag the given version with nightly tag. It was already published by the canary build.
|
||||
|
||||
publish:
|
||||
name: Publish NPM packages
|
||||
runs-on: github-hosted-ubuntu-x64-small
|
||||
if: inputs.version_type == 'canary' || inputs.version_type == 'stable'
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Info
|
||||
env:
|
||||
GITHUB_REF: ${{ github.ref }}
|
||||
GRAFANA_COMMIT: ${{ inputs.grafana_commit }}
|
||||
run: |
|
||||
echo "GRAFANA_COMMIT: $GRAFANA_COMMIT"
|
||||
echo "github.ref: $GITHUB_REF"
|
||||
|
||||
- name: Checkout workflow ref
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
fetch-depth: 100
|
||||
fetch-tags: false
|
||||
|
||||
# this will fail with "{commit} is not a valid commit" if the commit is valid but
|
||||
# not in the last 100 commits.
|
||||
- name: Verify commit is in workflow HEAD
|
||||
env:
|
||||
GIT_COMMIT: ${{ inputs.grafana_commit }}
|
||||
run: ./.github/workflows/scripts/validate-commit-in-head.sh
|
||||
shell: bash
|
||||
|
||||
- name: Map version type to NPM tag
|
||||
id: npm-tag
|
||||
env:
|
||||
VERSION: ${{ inputs.version }}
|
||||
VERSION_TYPE: ${{ inputs.version_type }}
|
||||
REFERENCE_PKG: "@grafana/runtime"
|
||||
run: |
|
||||
TAG=$(./.github/workflows/scripts/determine-npm-tag.sh)
|
||||
echo "NPM_TAG=$TAG" >> "$GITHUB_OUTPUT"
|
||||
shell: bash
|
||||
|
||||
- name: Checkout build commit
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
ref: ${{ inputs.grafana_commit }}
|
||||
|
||||
- name: Setup Node
|
||||
uses: ./.github/actions/setup-node
|
||||
|
||||
# Trusted Publishing is only available in npm v11.5.1 and later
|
||||
- name: Update npm
|
||||
run: npm install -g npm@^11.5.1
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn install --immutable
|
||||
|
||||
- name: Typecheck packages
|
||||
run: yarn run packages:typecheck
|
||||
|
||||
- name: Version, build, and pack packages
|
||||
env:
|
||||
VERSION: ${{ inputs.version }}
|
||||
run: |
|
||||
yarn run packages:build
|
||||
yarn lerna version "$VERSION" \
|
||||
--exact \
|
||||
--no-git-tag-version \
|
||||
--no-push \
|
||||
--force-publish \
|
||||
--yes
|
||||
yarn run packages:pack
|
||||
|
||||
- name: Debug packed files
|
||||
run: tree -a ./npm-artifacts
|
||||
|
||||
- name: Validate packages
|
||||
run: ./scripts/validate-npm-packages.sh
|
||||
|
||||
- name: Debug OIDC Claims
|
||||
uses: github/actions-oidc-debugger@2e9ba5d3f4bebaad1f91a2cede055115738b7ae8
|
||||
with:
|
||||
audience: '${{ github.server_url }}/${{ github.repository_owner }}'
|
||||
|
||||
- name: Publish packages
|
||||
env:
|
||||
NPM_TAG: ${{ steps.npm-tag.outputs.NPM_TAG }}
|
||||
run: ./scripts/publish-npm-packages.sh --dist-tag "$NPM_TAG" --registry 'https://registry.npmjs.org/'
|
||||
|
||||
# TODO: finish this step
|
||||
tag-nightly:
|
||||
name: Tag nightly release
|
||||
runs-on: github-hosted-ubuntu-x64-small
|
||||
needs: publish
|
||||
if: inputs.version_type == 'nightly'
|
||||
|
||||
steps:
|
||||
- name: Checkout workflow ref
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
# TODO: tag the given release with nightly
|
||||
|
||||
|
||||
@@ -1442,6 +1442,67 @@
|
||||
}
|
||||
],
|
||||
"type": "table"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-testdata-datasource"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"custom": {
|
||||
"align": "auto",
|
||||
"cellOptions": {
|
||||
"type": "auto"
|
||||
},
|
||||
"footer": {
|
||||
"reducers": ["lastNotNull", "countAll"]
|
||||
},
|
||||
"inspect": false
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 6,
|
||||
"w": 12,
|
||||
"x": 0,
|
||||
"y": 24
|
||||
},
|
||||
"id": 9,
|
||||
"options": {
|
||||
"cellHeight": "sm",
|
||||
"showHeader": true
|
||||
},
|
||||
"pluginVersion": "12.2.0-pre",
|
||||
"targets": [
|
||||
{
|
||||
"csvContent": "a,b\nfoo,bar\nbaz,bim\nbop,boop",
|
||||
"datasource": {
|
||||
"type": "grafana-testdata-datasource"
|
||||
},
|
||||
"refId": "A",
|
||||
"scenarioId": "csv_content"
|
||||
}
|
||||
],
|
||||
"title": "No numeric fields",
|
||||
"type": "table"
|
||||
}
|
||||
],
|
||||
"preload": false,
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
description: Guide for upgrading to Grafana v12.2
|
||||
keywords:
|
||||
- grafana
|
||||
- configuration
|
||||
- documentation
|
||||
- upgrade
|
||||
- '12.2'
|
||||
title: Upgrade to Grafana v12.2
|
||||
menuTitle: Upgrade to v12.2
|
||||
weight: 498
|
||||
---
|
||||
|
||||
# Upgrade to Grafana v12.2
|
||||
|
||||
{{< docs/shared lookup="upgrade/intro_2.md" source="grafana" version="<GRAFANA_VERSION>" >}}
|
||||
|
||||
{{< docs/shared lookup="back-up/back-up-grafana.md" source="grafana" version="<GRAFANA_VERSION>" leveloffset="+1" >}}
|
||||
|
||||
{{< docs/shared lookup="upgrade/upgrade-common-tasks.md" source="grafana" version="<GRAFANA_VERSION>" >}}
|
||||
@@ -192,6 +192,7 @@ For a complete list of every change, with links to pull requests and related iss
|
||||
|
||||
## Grafana 12
|
||||
|
||||
- [What's new in 12.2](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/whatsnew/whats-new-in-v12-2)
|
||||
- [What's new in 12.1](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/whatsnew/whats-new-in-v12-1)
|
||||
- [What's new in 12.0](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/whatsnew/whats-new-in-v12-0)
|
||||
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
description: Feature and improvement highlights for Grafana v12.2
|
||||
keywords:
|
||||
- grafana
|
||||
- new
|
||||
- documentation
|
||||
- '12.2'
|
||||
- release notes
|
||||
labels:
|
||||
products:
|
||||
- cloud
|
||||
- enterprise
|
||||
- oss
|
||||
title: What's new in Grafana v12.2
|
||||
posts:
|
||||
- title: SQL expressions
|
||||
items:
|
||||
- whats-new/2025-09-05-sql-expressions.md
|
||||
- title: Dashboards and visualizations
|
||||
items:
|
||||
- whats-new/2025-08-22-new-table-visualization-is-generally-available.md
|
||||
- whats-new/2025-08-27-generate-tooltips-from-table-fields.md
|
||||
- whats-new/2025-08-27-improved-footer-for-table-visualization.md
|
||||
- whats-new/2025-07-17-disable-tooltips-in-canvas-visualizations.md
|
||||
- whats-new/2025-07-14-static-options-for-query-variable.md
|
||||
- whats-new/2025-07-24-dynamic-connection-direction-in-canvas.md
|
||||
- whats-new/2025-08-04-canvas-pan-zoom-improvements.md
|
||||
- whats-new/2025-09-01-actions-authentication-via-infinity-datasource.md
|
||||
- whats-new/2025-09-02-enhanced-ad-hoc-filter-support.md
|
||||
- whats-new/2025-09-02-new-dashboard-apis-now-enabled-by-default.md
|
||||
- title: Reporting
|
||||
items:
|
||||
- whats-new/2025-05-27-new-and-improved-reporting.md
|
||||
- title: Data sources
|
||||
items:
|
||||
- whats-new/2025-08-12-jenkins-enterprise-data-source-for-grafana.md
|
||||
- whats-new/2025-07-16-google-sheets-data-source-now-supports-template-variables.md
|
||||
- whats-new/2025-09-04-azure-monitor-resource-picker-filtering-and-recent-resources.md
|
||||
- title: Explore
|
||||
items:
|
||||
- whats-new/2025-07-08-saved-queries-in-dashboards-and-explore.md
|
||||
- title: Logs Drilldown
|
||||
items:
|
||||
- whats-new/2025-08-29-json-log-line-viewer-in-logs-drilldown-is-now-generally-available.md
|
||||
- title: Metrics Drilldown
|
||||
items:
|
||||
- whats-new/2025-08-07-grafana-metrics-drilldown-entry-point-from-alerting-rule.md
|
||||
- title: Plugins
|
||||
items:
|
||||
- whats-new/2025-09-11-translate-your-plugin.md
|
||||
- title: Authentication and authorization
|
||||
items:
|
||||
- whats-new/2025-09-10-scim-configuration-ui.md
|
||||
whats_new_grafana_version: 12.2
|
||||
weight: -51
|
||||
---
|
||||
|
||||
# What’s new in Grafana v12.2
|
||||
|
||||
Welcome to Grafana 12.2! This release focuses on making it easier to gain insights from your data.
|
||||
|
||||
We're excited to announce several features are now GA. Enhanced ad hoc filtering transforms your dashboards into true command centers, allowing you to slice and dice datasets on the fly. The redesigned table visualization offers improved performance and visual aids for quick pattern and anomaly identification, helping you make faster decisions. The Logs Drilldown JSON viewer makes intimidating log structures organized and explorable. Metrics Drilldown now integrates with alert creation in Grafana, so you can explore Prometheus data with intuitive point-and-click interactions, find the right visualization, and easily use its query in your alert rule.
|
||||
|
||||
We're also collecting feedback on some new public preview features. AI-powered SQL expressions eliminate the barrier between questions and answers by generating SQL queries from natural language and providing instant explanations for existing queries. Our enhanced Canvas Pan and Zoom experience lets you design complex dashboards exactly as you envision them.
|
||||
|
||||
Keep reading to learn more about everything 12.2 has in store.
|
||||
|
||||
{{< youtube id=-7A_tePidEM >}}
|
||||
|
||||
For even more detail about all the changes in this release, refer to the [changelog](https://github.com/grafana/grafana/blob/main/CHANGELOG.md). For the specific steps we recommend when you upgrade to v12.2, check out our [Upgrade Guide](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/upgrade-guide/upgrade-v12.2/).
|
||||
|
||||
{{< docs/whats-new >}}
|
||||
@@ -11,7 +11,7 @@ const waitForTableLoad = async (loc: Page | Locator) => {
|
||||
};
|
||||
|
||||
test.describe('Panels test: Table - Footer', { tag: ['@panels', '@table'] }, () => {
|
||||
test('Footer unaffected by filtering', async ({ gotoDashboardPage, selectors, page }) => {
|
||||
test('Footer affected by filtering', async ({ gotoDashboardPage, selectors, page }) => {
|
||||
const dashboardPage = await gotoDashboardPage({
|
||||
uid: DASHBOARD_UID,
|
||||
queryParams: new URLSearchParams({ editPanel: '4' }),
|
||||
@@ -51,7 +51,7 @@ test.describe('Panels test: Table - Footer', { tag: ['@panels', '@table'] }, ()
|
||||
dashboardPage
|
||||
.getByGrafanaSelector(selectors.components.Panels.Visualization.TableNG.Footer.Value)
|
||||
.nth(minColumnIdx)
|
||||
).toHaveText(minReducerValue);
|
||||
).not.toHaveText(minReducerValue);
|
||||
});
|
||||
|
||||
test('Footer unaffected by sorting', async ({ gotoDashboardPage, selectors, page }) => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@test-plugins/extensions-test-app",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "NODE_OPTIONS='--experimental-strip-types --no-warnings=ExperimentalWarning' webpack -c ./webpack.config.ts --env production",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@test-plugins/grafana-e2etest-datasource",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "NODE_OPTIONS='--experimental-strip-types --no-warnings=ExperimentalWarning' webpack -c ./webpack.config.ts --env production",
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
|
||||
"npmClient": "yarn",
|
||||
"version": "12.2.0-pre"
|
||||
"version": "12.2.0"
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
"license": "AGPL-3.0-only",
|
||||
"private": true,
|
||||
"name": "grafana",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"repository": "github:grafana/grafana",
|
||||
"scripts": {
|
||||
"predev": "./scripts/check-frontend-dev.sh",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/alerting",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"description": "Grafana Alerting Library – Build vertical integrations on top of the industry-leading alerting solution",
|
||||
"keywords": [
|
||||
"typescript",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/data",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"description": "Grafana Data Library",
|
||||
"keywords": [
|
||||
"typescript"
|
||||
@@ -56,8 +56,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@braintree/sanitize-url": "7.0.1",
|
||||
"@grafana/i18n": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/i18n": "12.2.0",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@leeoniya/ufuzzy": "1.0.18",
|
||||
"@types/d3-interpolate": "^3.0.0",
|
||||
"@types/string-hash": "1.1.3",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/e2e-selectors",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"description": "Grafana End-to-End Test Selectors Library",
|
||||
"keywords": [
|
||||
"cli",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@grafana/eslint-plugin",
|
||||
"description": "ESLint rules for use within the Grafana repo. Not suitable (or supported) for external use.",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"main": "./index.cjs",
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/flamegraph",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"description": "Grafana flamegraph visualization component",
|
||||
"keywords": [
|
||||
"grafana",
|
||||
@@ -44,8 +44,8 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"@leeoniya/ufuzzy": "1.0.18",
|
||||
"d3": "^7.8.5",
|
||||
"lodash": "4.17.21",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/i18n",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"description": "Grafana Internationalization Library",
|
||||
"keywords": [
|
||||
"grafana",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"license": "AGPL-3.0-only",
|
||||
"name": "@grafana/o11y-ds-frontend",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"description": "Library to manage traces in Grafana.",
|
||||
"sideEffects": false,
|
||||
"repository": {
|
||||
@@ -18,12 +18,12 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/plugin-ui": "^0.10.10",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"react-select": "5.10.2",
|
||||
"react-use": "17.6.0",
|
||||
"rxjs": "7.8.2",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "@grafana/plugin-configs",
|
||||
"description": "Shared dependencies and files for core plugins",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "AGPL-3.0-only",
|
||||
"name": "@grafana/prometheus",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"description": "Grafana Prometheus Library",
|
||||
"keywords": [
|
||||
"typescript",
|
||||
@@ -41,13 +41,13 @@
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@floating-ui/react": "0.27.16",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/i18n": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/i18n": "12.2.0",
|
||||
"@grafana/plugin-ui": "^0.10.10",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"@hello-pangea/dnd": "18.0.1",
|
||||
"@leeoniya/ufuzzy": "1.0.18",
|
||||
"@lezer/common": "1.2.3",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/runtime",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"description": "Grafana Runtime Library",
|
||||
"keywords": [
|
||||
"grafana",
|
||||
@@ -53,11 +53,11 @@
|
||||
"postpack": "mv package.json.bak package.json && rimraf ./unstable"
|
||||
},
|
||||
"dependencies": {
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/faro-web-sdk": "^1.13.2",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"@types/systemjs": "6.15.3",
|
||||
"history": "4.10.1",
|
||||
"lodash": "4.17.21",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/schema",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"description": "Grafana Schema Library",
|
||||
"keywords": [
|
||||
"typescript"
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options {
|
||||
limit: number;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip, common.OptionsWithTextFormatting {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options extends common.OptionsWithLegend, common.SingleStatBaseOptions {
|
||||
displayMode: common.BarGaugeDisplayMode;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export enum VizDisplayMode {
|
||||
Candles = 'candles',
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export enum HorizontalConstraint {
|
||||
Center = 'center',
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface MetricStat {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options {
|
||||
selectedSeries: number;
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export type UpdateConfig = {
|
||||
render: boolean,
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export type BucketAggregation = (DateHistogram | Histogram | Terms | Filters | GeoHashGrid | Nested);
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options extends common.SingleStatBaseOptions {
|
||||
minVizHeight: number;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options {
|
||||
basemap: ui.MapLayerOptions;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
/**
|
||||
* Controls the color mode of the heatmap
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options {
|
||||
controlsStorageKey?: string;
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface ArcOption {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
/**
|
||||
* Select the pie chart display style.
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options extends common.SingleStatBaseOptions {
|
||||
colorMode: common.BigValueColorMode;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export enum TextMode {
|
||||
Code = 'code',
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export interface Options extends common.OptionsWithTimezones {
|
||||
legend: common.VizLegendOptions;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
/**
|
||||
* Identical to timeseries... except it does not have timezone settings
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.2.0-pre";
|
||||
export const pluginVersion = "12.2.0";
|
||||
|
||||
export enum PointShape {
|
||||
Circle = 'circle',
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"license": "AGPL-3.0-only",
|
||||
"private": true,
|
||||
"name": "@grafana/sql",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "http://github.com/grafana/grafana.git",
|
||||
@@ -16,12 +16,12 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/i18n": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/i18n": "12.2.0",
|
||||
"@grafana/plugin-ui": "^0.10.10",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"@react-awesome-query-builder/ui": "6.6.15",
|
||||
"immutable": "5.1.3",
|
||||
"lodash": "4.17.21",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/test-utils",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"private": true,
|
||||
"description": "Grafana test utils & Mock API",
|
||||
"keywords": [
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/ui",
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"description": "Grafana Components Library",
|
||||
"keywords": [
|
||||
"grafana",
|
||||
@@ -67,11 +67,11 @@
|
||||
"@emotion/react": "11.14.0",
|
||||
"@emotion/serialize": "1.3.3",
|
||||
"@floating-ui/react": "0.27.16",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/faro-web-sdk": "^1.13.2",
|
||||
"@grafana/i18n": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/i18n": "12.2.0",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@hello-pangea/dnd": "18.0.1",
|
||||
"@monaco-editor/react": "4.7.0",
|
||||
"@popperjs/core": "2.11.8",
|
||||
|
||||
@@ -108,7 +108,6 @@ export function TableNG(props: TableNGProps) {
|
||||
enablePagination = false,
|
||||
enableSharedCrosshair = false,
|
||||
enableVirtualization,
|
||||
fieldConfig,
|
||||
frozenColumns = 0,
|
||||
getActions = () => [],
|
||||
height,
|
||||
@@ -125,12 +124,6 @@ export function TableNG(props: TableNGProps) {
|
||||
width,
|
||||
} = props;
|
||||
|
||||
const hasFooter = useMemo(
|
||||
() => data.fields.some((field) => field.config?.custom?.footer?.reducers?.length ?? false),
|
||||
[data.fields]
|
||||
);
|
||||
const footerHeight = hasFooter ? calculateFooterHeight(data, fieldConfig) : 0;
|
||||
|
||||
const theme = useTheme2();
|
||||
const styles = useStyles2(getGridStyles, enablePagination, transparent);
|
||||
const panelContext = usePanelContext();
|
||||
@@ -146,7 +139,16 @@ export function TableNG(props: TableNGProps) {
|
||||
[getActions, data, userCanExecuteActions]
|
||||
);
|
||||
|
||||
const visibleFields = useMemo(() => getVisibleFields(data.fields), [data.fields]);
|
||||
const hasHeader = !noHeader;
|
||||
const hasFooter = useMemo(
|
||||
() => visibleFields.some((field) => Boolean(field.config.custom?.footer?.reducers?.length)),
|
||||
[visibleFields]
|
||||
);
|
||||
const footerHeight = useMemo(
|
||||
() => (hasFooter ? calculateFooterHeight(visibleFields) : 0),
|
||||
[hasFooter, visibleFields]
|
||||
);
|
||||
|
||||
const resizeHandler = useColumnResize(onColumnResize);
|
||||
|
||||
@@ -173,7 +175,7 @@ export function TableNG(props: TableNGProps) {
|
||||
const [expandedRows, setExpandedRows] = useState(() => new Set<number>());
|
||||
|
||||
// vt scrollbar accounting for column auto-sizing
|
||||
const visibleFields = useMemo(() => getVisibleFields(data.fields), [data.fields]);
|
||||
|
||||
const defaultRowHeight = useMemo(
|
||||
() => getDefaultRowHeight(theme, visibleFields, cellHeight),
|
||||
[theme, visibleFields, cellHeight]
|
||||
@@ -677,7 +679,7 @@ export function TableNG(props: TableNGProps) {
|
||||
),
|
||||
renderSummaryCell: () => (
|
||||
<SummaryCell
|
||||
rows={rows}
|
||||
rows={sortedRows}
|
||||
footers={footers}
|
||||
field={field}
|
||||
colIdx={i}
|
||||
@@ -707,10 +709,11 @@ export function TableNG(props: TableNGProps) {
|
||||
maxRowHeight,
|
||||
numFrozenColsFullyInView,
|
||||
onCellFilterAdded,
|
||||
rows,
|
||||
rowHeight,
|
||||
rowHeightFn,
|
||||
rows,
|
||||
setFilter,
|
||||
sortedRows,
|
||||
showTypeIcons,
|
||||
theme,
|
||||
timeRange,
|
||||
|
||||
@@ -46,6 +46,7 @@ import {
|
||||
getDefaultRowHeight,
|
||||
getDisplayName,
|
||||
predicateByName,
|
||||
calculateFooterHeight,
|
||||
} from './utils';
|
||||
|
||||
describe('TableNG utils', () => {
|
||||
@@ -1380,6 +1381,35 @@ describe('TableNG utils', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('calculateFooterHeight', () => {
|
||||
it('should return 0 if no footer is present', () => {
|
||||
const frame = createDataFrame({
|
||||
fields: [
|
||||
{ name: 'time', values: [1, 1, 2], nanos: [100, 99, 0] },
|
||||
{ name: 'value', values: [10, 20, 30] },
|
||||
],
|
||||
});
|
||||
|
||||
expect(calculateFooterHeight(frame.fields)).toBe(0);
|
||||
});
|
||||
|
||||
it('should return the height in pixels for the max reducers on a given field', () => {
|
||||
const frame = createDataFrame({
|
||||
fields: [
|
||||
{
|
||||
name: 'time',
|
||||
values: [1, 1, 2],
|
||||
nanos: [100, 99, 0],
|
||||
config: { custom: { footer: { reducers: ['min', 'max', 'count'] } } },
|
||||
},
|
||||
{ name: 'value', values: [10, 20, 30], config: { custom: { footer: { reducers: ['min'] } } } },
|
||||
],
|
||||
});
|
||||
|
||||
expect(calculateFooterHeight(frame.fields)).toBe(78); // 3 reducers * 22px line height + 12px padding
|
||||
});
|
||||
});
|
||||
|
||||
describe('getDisplayName', () => {
|
||||
it('should return the display name if set', () => {
|
||||
const field: Field = {
|
||||
|
||||
@@ -8,7 +8,6 @@ import { Count, varPreLine } from 'uwrap';
|
||||
import {
|
||||
FieldType,
|
||||
Field,
|
||||
FieldConfigSource,
|
||||
formattedValueToString,
|
||||
GrafanaTheme2,
|
||||
DisplayValue,
|
||||
@@ -842,55 +841,18 @@ export const processNestedTableRows = (
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* Get the maximum number of reducers across all fields
|
||||
*/
|
||||
const getMaxReducerCount = (dataFrame: DataFrame, fieldConfig?: FieldConfigSource): number => {
|
||||
// Filter to only numeric fields that can have reducers
|
||||
const numericFields = dataFrame.fields.filter(({ type }) => type === FieldType.number);
|
||||
|
||||
// If there are no numeric fields, return 0
|
||||
if (numericFields.length === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Map each field to its reducer count (direct config or override)
|
||||
const reducerCounts = numericFields.map((field) => {
|
||||
// Get the direct reducer count from the field config
|
||||
const directReducers = field.config?.custom?.footer?.reducers ?? [];
|
||||
let reducerCount = directReducers.length;
|
||||
|
||||
// Check for overrides if field config is available
|
||||
if (fieldConfig?.overrides) {
|
||||
// Find override that matches this field
|
||||
const override = fieldConfig.overrides.find(
|
||||
({ matcher: { id, options } }) => id === 'byName' && options === getDisplayName(field)
|
||||
);
|
||||
|
||||
// Check if there's a footer reducer property in the override
|
||||
const footerProperty = override?.properties?.find(({ id }) => id === 'custom.footer.reducers');
|
||||
if (footerProperty?.value && Array.isArray(footerProperty.value)) {
|
||||
// If override exists, it takes precedence over direct config
|
||||
reducerCount = footerProperty.value.length;
|
||||
}
|
||||
}
|
||||
|
||||
return reducerCount;
|
||||
});
|
||||
|
||||
// Return the maximum count or 0 if no reducers found
|
||||
return reducerCounts.length > 0 ? Math.max(...reducerCounts) : 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* Calculate the footer height based on the maximum reducer count
|
||||
*/
|
||||
export const calculateFooterHeight = (dataFrame: DataFrame, fieldConfig?: FieldConfigSource) => {
|
||||
const maxReducerCount = getMaxReducerCount(dataFrame, fieldConfig);
|
||||
export const calculateFooterHeight = (fields: Field[]): number => {
|
||||
let maxReducerCount = 0;
|
||||
for (const field of fields) {
|
||||
maxReducerCount = Math.max(maxReducerCount, field.config.custom?.footer?.reducers?.length ?? 0);
|
||||
}
|
||||
|
||||
// Base height (+ padding) + height per reducer
|
||||
return maxReducerCount * TABLE.LINE_HEIGHT + TABLE.CELL_PADDING * 2;
|
||||
return maxReducerCount > 0 ? maxReducerCount * TABLE.LINE_HEIGHT + TABLE.CELL_PADDING * 2 : 0;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -147,10 +147,10 @@ function DashboardControlsRenderer({ model }: SceneComponentProps<DashboardContr
|
||||
{editPanel && <PanelEditControls panelEditor={editPanel} />}
|
||||
</Stack>
|
||||
{!hideTimeControls && (
|
||||
<Stack justifyContent="flex-end">
|
||||
<div className={cx(styles.timeControls, editPanel && styles.timeControlsWrap)}>
|
||||
<timePicker.Component model={timePicker} />
|
||||
<refreshPicker.Component model={refreshPicker} />
|
||||
</Stack>
|
||||
</div>
|
||||
)}
|
||||
<Stack>
|
||||
<DropdownVariableControls dashboard={dashboard} />
|
||||
@@ -191,6 +191,7 @@ function getStyles(theme: GrafanaTheme2) {
|
||||
},
|
||||
}),
|
||||
controlsPanelEdit: css({
|
||||
flexWrap: 'wrap-reverse',
|
||||
// In panel edit we do not need any right padding as the splitter is providing it
|
||||
paddingRight: 0,
|
||||
}),
|
||||
@@ -198,5 +199,14 @@ function getStyles(theme: GrafanaTheme2) {
|
||||
background: 'unset',
|
||||
position: 'unset',
|
||||
}),
|
||||
timeControls: css({
|
||||
display: 'flex',
|
||||
justifyContent: 'flex-end',
|
||||
gap: theme.spacing(1),
|
||||
}),
|
||||
timeControlsWrap: css({
|
||||
flexWrap: 'wrap',
|
||||
marginLeft: 'auto',
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
"name": "@grafana-plugins/grafana-azure-monitor-datasource",
|
||||
"description": "Grafana data source for Azure Monitor",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/i18n": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/i18n": "12.2.0",
|
||||
"@grafana/plugin-ui": "^0.10.10",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"@kusto/monaco-kusto": "^10.0.0",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"i18next": "^25.0.0",
|
||||
@@ -26,8 +26,8 @@
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/plugin-configs": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/plugin-configs": "12.2.0",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/jest-dom": "6.6.4",
|
||||
"@testing-library/react": "16.3.0",
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
"name": "@grafana-plugins/stackdriver",
|
||||
"description": "Grafana data source for Google Cloud Monitoring",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/google-sdk": "0.3.4",
|
||||
"@grafana/plugin-ui": "^0.10.10",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"debounce-promise": "3.1.2",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"i18next": "^25.0.0",
|
||||
@@ -26,8 +26,8 @@
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/plugin-configs": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/plugin-configs": "12.2.0",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/jest-dom": "6.6.4",
|
||||
"@testing-library/react": "16.3.0",
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
"name": "@grafana-plugins/grafana-postgresql-datasource",
|
||||
"description": "PostgreSQL data source plugin",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/plugin-ui": "^0.10.10",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/sql": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/sql": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"lodash": "4.17.21",
|
||||
"react": "18.3.1",
|
||||
"rxjs": "7.8.2",
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/plugin-configs": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/plugin-configs": "12.2.0",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/react": "16.3.0",
|
||||
"@testing-library/user-event": "14.6.1",
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"name": "@grafana-plugins/grafana-pyroscope-datasource",
|
||||
"description": "Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"lodash": "4.17.21",
|
||||
"monaco-editor": "0.34.1",
|
||||
@@ -20,7 +20,7 @@
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/plugin-configs": "12.2.0-pre",
|
||||
"@grafana/plugin-configs": "12.2.0",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/jest-dom": "6.6.4",
|
||||
"@testing-library/react": "16.3.0",
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"name": "@grafana-plugins/grafana-testdata-datasource",
|
||||
"description": "Generates test data in different forms",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"d3-random": "^3.0.1",
|
||||
"lodash": "4.17.21",
|
||||
"micro-memoize": "^4.1.2",
|
||||
@@ -21,8 +21,8 @@
|
||||
"uuid": "11.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/plugin-configs": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/plugin-configs": "12.2.0",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/jest-dom": "6.6.4",
|
||||
"@testing-library/react": "16.3.0",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "@grafana-plugins/jaeger",
|
||||
"description": "Jaeger plugin for Grafana",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "workspace:*",
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
"name": "@grafana-plugins/loki",
|
||||
"description": "Loki data source plugin for Grafana",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/lezer-logql": "0.2.8",
|
||||
"@grafana/llm": "0.22.1",
|
||||
"@grafana/monaco-logql": "^0.0.8",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"d3-random": "^3.0.1",
|
||||
"lodash": "4.17.21",
|
||||
"micro-memoize": "^4.1.2",
|
||||
@@ -24,8 +24,8 @@
|
||||
"uuid": "11.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/plugin-configs": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/plugin-configs": "12.2.0",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/jest-dom": "6.6.4",
|
||||
"@testing-library/react": "16.3.0",
|
||||
|
||||
@@ -2,23 +2,23 @@
|
||||
"name": "@grafana-plugins/mssql",
|
||||
"description": "MSSQL data source plugin",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/i18n": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/i18n": "12.2.0",
|
||||
"@grafana/plugin-ui": "^0.10.10",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/sql": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/sql": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"lodash": "4.17.21",
|
||||
"react": "18.3.1",
|
||||
"rxjs": "7.8.2",
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/plugin-configs": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/plugin-configs": "12.2.0",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/react": "16.3.0",
|
||||
"@testing-library/user-event": "14.6.1",
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
"name": "@grafana-plugins/mysql",
|
||||
"description": "MySQL data source plugin",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/plugin-ui": "^0.10.10",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/sql": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/sql": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"lodash": "4.17.21",
|
||||
"react": "18.3.1",
|
||||
"rxjs": "7.8.2",
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.2.0-pre",
|
||||
"@grafana/plugin-configs": "12.2.0-pre",
|
||||
"@grafana/e2e-selectors": "12.2.0",
|
||||
"@grafana/plugin-configs": "12.2.0",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/react": "16.3.0",
|
||||
"@testing-library/user-event": "14.6.1",
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"name": "@grafana-plugins/parca",
|
||||
"description": "Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.2.0-pre",
|
||||
"@grafana/runtime": "12.2.0-pre",
|
||||
"@grafana/schema": "12.2.0-pre",
|
||||
"@grafana/ui": "12.2.0-pre",
|
||||
"@grafana/data": "12.2.0",
|
||||
"@grafana/runtime": "12.2.0",
|
||||
"@grafana/schema": "12.2.0",
|
||||
"@grafana/ui": "12.2.0",
|
||||
"lodash": "4.17.21",
|
||||
"monaco-editor": "0.34.1",
|
||||
"react": "18.3.1",
|
||||
@@ -18,7 +18,7 @@
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/plugin-configs": "12.2.0-pre",
|
||||
"@grafana/plugin-configs": "12.2.0",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/react": "16.3.0",
|
||||
"@testing-library/user-event": "14.6.1",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "@grafana-plugins/tempo",
|
||||
"description": "Grafana plugin for the Tempo data source.",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "workspace:*",
|
||||
@@ -38,7 +38,7 @@
|
||||
"uuid": "11.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/plugin-configs": "12.2.0-pre",
|
||||
"@grafana/plugin-configs": "12.2.0",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/jest-dom": "6.6.4",
|
||||
"@testing-library/react": "16.3.0",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "@grafana-plugins/zipkin",
|
||||
"description": "Zipkin plugin for Grafana",
|
||||
"private": true,
|
||||
"version": "12.2.0-pre",
|
||||
"version": "12.2.0",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "workspace:*",
|
||||
|
||||
@@ -31,7 +31,9 @@ export const BarChartPanel = (props: PanelProps<Options>) => {
|
||||
// const { dataLinkPostProcessor } = usePanelContext();
|
||||
|
||||
const theme = useTheme2();
|
||||
const { onAddAdHocFilter } = usePanelContext();
|
||||
const { onAddAdHocFilter, canExecuteActions } = usePanelContext();
|
||||
|
||||
const userCanExecuteActions = useMemo(() => canExecuteActions?.() ?? false, [canExecuteActions]);
|
||||
|
||||
const {
|
||||
barWidth,
|
||||
@@ -210,6 +212,7 @@ export const BarChartPanel = (props: PanelProps<Options>) => {
|
||||
dataLinks={dataLinks}
|
||||
adHocFilters={adHocFilters}
|
||||
hideZeros={options.tooltip.hideZeros}
|
||||
canExecuteActions={userCanExecuteActions}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
|
||||
@@ -78,9 +78,11 @@ export const geojsonLayer: MapLayerRegistryItem<GeoJSONMapperConfig> = {
|
||||
|
||||
// Interpolate variables in the URL
|
||||
const interpolatedUrl = getTemplateSrv().replace(config.src || '');
|
||||
const isAbsoluteUrl = interpolatedUrl.startsWith('http');
|
||||
const layerUrl = isAbsoluteUrl ? interpolatedUrl : `${window.__grafana_public_path__}${interpolatedUrl.replace(/^(public\/)/, '')}`;
|
||||
|
||||
const source = new VectorSource({
|
||||
url: `${window.__grafana_public_path__}build/${interpolatedUrl.replace(/^(public\/)/, '')}`,
|
||||
url: layerUrl,
|
||||
format: new GeoJSON(),
|
||||
});
|
||||
|
||||
|
||||
@@ -45,9 +45,11 @@ export const HeatmapPanel = ({
|
||||
}: HeatmapPanelProps) => {
|
||||
const theme = useTheme2();
|
||||
const styles = useStyles2(getStyles);
|
||||
const { sync, eventsScope, canAddAnnotations, onSelectRange } = usePanelContext();
|
||||
const { sync, eventsScope, canAddAnnotations, onSelectRange, canExecuteActions } = usePanelContext();
|
||||
const cursorSync = sync?.() ?? DashboardCursorSync.Off;
|
||||
|
||||
const userCanExecuteActions = useMemo(() => canExecuteActions?.() ?? false, [canExecuteActions]);
|
||||
|
||||
// temp range set for adding new annotation set by TooltipPlugin2, consumed by AnnotationPlugin2
|
||||
const [newAnnotationRange, setNewAnnotationRange] = useState<TimeRange2 | null>(null);
|
||||
|
||||
@@ -220,6 +222,7 @@ export const HeatmapPanel = ({
|
||||
maxHeight={options.tooltip.maxHeight}
|
||||
maxWidth={options.tooltip.maxWidth}
|
||||
replaceVariables={replaceVariables}
|
||||
canExecuteActions={userCanExecuteActions}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
|
||||
@@ -48,10 +48,12 @@ export const StatusHistoryPanel = ({
|
||||
|
||||
// temp range set for adding new annotation set by TooltipPlugin2, consumed by AnnotationPlugin2
|
||||
const [newAnnotationRange, setNewAnnotationRange] = useState<TimeRange2 | null>(null);
|
||||
const { sync, eventsScope, canAddAnnotations, dataLinkPostProcessor, eventBus } = usePanelContext();
|
||||
const { sync, eventsScope, canAddAnnotations, dataLinkPostProcessor, eventBus, canExecuteActions } =
|
||||
usePanelContext();
|
||||
const cursorSync = sync?.() ?? DashboardCursorSync.Off;
|
||||
|
||||
const enableAnnotationCreation = Boolean(canAddAnnotations && canAddAnnotations());
|
||||
const userCanExecuteActions = useMemo(() => canExecuteActions?.() ?? false, [canExecuteActions]);
|
||||
|
||||
const { frames, warn } = useMemo(
|
||||
() => prepareTimelineFields(data.series, false, timeRange, theme),
|
||||
@@ -152,6 +154,7 @@ export const StatusHistoryPanel = ({
|
||||
maxHeight={options.tooltip.maxHeight}
|
||||
replaceVariables={replaceVariables}
|
||||
dataLinks={dataLinks}
|
||||
canExecuteActions={userCanExecuteActions}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
|
||||
@@ -33,7 +33,10 @@ export const TrendPanel = ({
|
||||
replaceVariables,
|
||||
id,
|
||||
}: PanelProps<Options>) => {
|
||||
const { dataLinkPostProcessor } = usePanelContext();
|
||||
const { dataLinkPostProcessor, canExecuteActions } = usePanelContext();
|
||||
|
||||
const userCanExecuteActions = useMemo(() => canExecuteActions?.() ?? false, [canExecuteActions]);
|
||||
|
||||
// Need to fallback to first number field if no xField is set in options otherwise panel crashes 😬
|
||||
const trendXFieldName =
|
||||
options.xField ?? data.series[0]?.fields.find((field) => field.type === FieldType.number)?.name;
|
||||
@@ -142,6 +145,7 @@ export const TrendPanel = ({
|
||||
replaceVariables={replaceVariables}
|
||||
dataLinks={dataLinks}
|
||||
hideZeros={options.tooltip.hideZeros}
|
||||
canExecuteActions={userCanExecuteActions}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
VizLegendItem,
|
||||
useStyles2,
|
||||
useTheme2,
|
||||
usePanelContext,
|
||||
} from '@grafana/ui';
|
||||
import { getDisplayValuesForCalcs, TooltipHoverMode } from '@grafana/ui/internal';
|
||||
|
||||
@@ -28,6 +29,9 @@ export const XYChartPanel2 = (props: Props2) => {
|
||||
const styles = useStyles2(getStyles);
|
||||
const theme = useTheme2();
|
||||
|
||||
const { canExecuteActions } = usePanelContext();
|
||||
const userCanExecuteActions = useMemo(() => canExecuteActions?.() ?? false, [canExecuteActions]);
|
||||
|
||||
let { mapping, series: mappedSeries } = props.options;
|
||||
|
||||
// regenerate series schema when mappings or data changes
|
||||
@@ -128,6 +132,7 @@ export const XYChartPanel2 = (props: Props2) => {
|
||||
seriesIdx={seriesIdx!}
|
||||
replaceVariables={props.replaceVariables}
|
||||
dataLinks={dataLinks}
|
||||
canExecuteActions={userCanExecuteActions}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
|
||||
@@ -24,6 +24,7 @@ export interface Props {
|
||||
xySeries: XYSeries[];
|
||||
replaceVariables: InterpolateFunction;
|
||||
dataLinks: LinkModel[];
|
||||
canExecuteActions?: boolean;
|
||||
}
|
||||
|
||||
function stripSeriesName(fieldName: string, seriesName: string) {
|
||||
@@ -51,6 +52,7 @@ export const XYChartTooltip = ({
|
||||
isPinned,
|
||||
replaceVariables,
|
||||
dataLinks,
|
||||
canExecuteActions,
|
||||
}: Props) => {
|
||||
const rowIndex = dataIdxs.find((idx) => idx !== null)!;
|
||||
|
||||
@@ -130,7 +132,7 @@ export const XYChartTooltip = ({
|
||||
|
||||
if (isPinned || hasOneClickLink) {
|
||||
const yFieldFrame = data.find((frame) => frame.fields.includes(yField))!;
|
||||
const actions = getFieldActions(yFieldFrame, yField, replaceVariables, rowIndex);
|
||||
const actions = canExecuteActions ? getFieldActions(yFieldFrame, yField, replaceVariables, rowIndex) : [];
|
||||
|
||||
footer = <VizTooltipFooter dataLinks={dataLinks} actions={actions} />;
|
||||
}
|
||||
|
||||
@@ -2426,14 +2426,14 @@ __metadata:
|
||||
resolution: "@grafana-plugins/grafana-azure-monitor-datasource@workspace:public/app/plugins/datasource/azuremonitor"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/i18n": "npm:12.2.0-pre"
|
||||
"@grafana/plugin-configs": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/i18n": "npm:12.2.0"
|
||||
"@grafana/plugin-configs": "npm:12.2.0"
|
||||
"@grafana/plugin-ui": "npm:^0.10.10"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@kusto/monaco-kusto": "npm:^10.0.0"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/jest-dom": "npm:6.6.4"
|
||||
@@ -2473,13 +2473,13 @@ __metadata:
|
||||
resolution: "@grafana-plugins/grafana-postgresql-datasource@workspace:public/app/plugins/datasource/grafana-postgresql-datasource"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/plugin-configs": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/plugin-configs": "npm:12.2.0"
|
||||
"@grafana/plugin-ui": "npm:^0.10.10"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/sql": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/sql": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/react": "npm:16.3.0"
|
||||
"@testing-library/user-event": "npm:14.6.1"
|
||||
@@ -2505,11 +2505,11 @@ __metadata:
|
||||
resolution: "@grafana-plugins/grafana-pyroscope-datasource@workspace:public/app/plugins/datasource/grafana-pyroscope-datasource"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/plugin-configs": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/plugin-configs": "npm:12.2.0"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/jest-dom": "npm:6.6.4"
|
||||
"@testing-library/react": "npm:16.3.0"
|
||||
@@ -2546,12 +2546,12 @@ __metadata:
|
||||
resolution: "@grafana-plugins/grafana-testdata-datasource@workspace:public/app/plugins/datasource/grafana-testdata-datasource"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/plugin-configs": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/plugin-configs": "npm:12.2.0"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/jest-dom": "npm:6.6.4"
|
||||
"@testing-library/react": "npm:16.3.0"
|
||||
@@ -2630,15 +2630,15 @@ __metadata:
|
||||
resolution: "@grafana-plugins/loki@workspace:public/app/plugins/datasource/loki"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/lezer-logql": "npm:0.2.8"
|
||||
"@grafana/llm": "npm:0.22.1"
|
||||
"@grafana/monaco-logql": "npm:^0.0.8"
|
||||
"@grafana/plugin-configs": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/plugin-configs": "npm:12.2.0"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/jest-dom": "npm:6.6.4"
|
||||
"@testing-library/react": "npm:16.3.0"
|
||||
@@ -2674,14 +2674,14 @@ __metadata:
|
||||
resolution: "@grafana-plugins/mssql@workspace:public/app/plugins/datasource/mssql"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/i18n": "npm:12.2.0-pre"
|
||||
"@grafana/plugin-configs": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/i18n": "npm:12.2.0"
|
||||
"@grafana/plugin-configs": "npm:12.2.0"
|
||||
"@grafana/plugin-ui": "npm:^0.10.10"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/sql": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/sql": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/react": "npm:16.3.0"
|
||||
"@testing-library/user-event": "npm:14.6.1"
|
||||
@@ -2707,13 +2707,13 @@ __metadata:
|
||||
resolution: "@grafana-plugins/mysql@workspace:public/app/plugins/datasource/mysql"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/plugin-configs": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/plugin-configs": "npm:12.2.0"
|
||||
"@grafana/plugin-ui": "npm:^0.10.10"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/sql": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/sql": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/react": "npm:16.3.0"
|
||||
"@testing-library/user-event": "npm:14.6.1"
|
||||
@@ -2739,11 +2739,11 @@ __metadata:
|
||||
resolution: "@grafana-plugins/parca@workspace:public/app/plugins/datasource/parca"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/plugin-configs": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/plugin-configs": "npm:12.2.0"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/react": "npm:16.3.0"
|
||||
"@testing-library/user-event": "npm:14.6.1"
|
||||
@@ -2772,14 +2772,14 @@ __metadata:
|
||||
resolution: "@grafana-plugins/stackdriver@workspace:public/app/plugins/datasource/cloud-monitoring"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/google-sdk": "npm:0.3.4"
|
||||
"@grafana/plugin-configs": "npm:12.2.0-pre"
|
||||
"@grafana/plugin-configs": "npm:12.2.0"
|
||||
"@grafana/plugin-ui": "npm:^0.10.10"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/jest-dom": "npm:6.6.4"
|
||||
"@testing-library/react": "npm:16.3.0"
|
||||
@@ -2824,7 +2824,7 @@ __metadata:
|
||||
"@grafana/lezer-traceql": "npm:0.0.23"
|
||||
"@grafana/monaco-logql": "npm:^0.0.8"
|
||||
"@grafana/o11y-ds-frontend": "workspace:*"
|
||||
"@grafana/plugin-configs": "npm:12.2.0-pre"
|
||||
"@grafana/plugin-configs": "npm:12.2.0"
|
||||
"@grafana/plugin-ui": "npm:^0.10.10"
|
||||
"@grafana/runtime": "workspace:*"
|
||||
"@grafana/schema": "workspace:*"
|
||||
@@ -2989,13 +2989,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@grafana/data@npm:12.2.0-pre, @grafana/data@workspace:*, @grafana/data@workspace:packages/grafana-data":
|
||||
"@grafana/data@npm:12.2.0, @grafana/data@workspace:*, @grafana/data@workspace:packages/grafana-data":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/data@workspace:packages/grafana-data"
|
||||
dependencies:
|
||||
"@braintree/sanitize-url": "npm:7.0.1"
|
||||
"@grafana/i18n": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/i18n": "npm:12.2.0"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@leeoniya/ufuzzy": "npm:1.0.18"
|
||||
"@rollup/plugin-node-resolve": "npm:16.0.1"
|
||||
"@types/d3-interpolate": "npm:^3.0.0"
|
||||
@@ -3042,7 +3042,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@grafana/e2e-selectors@npm:12.2.0-pre, @grafana/e2e-selectors@workspace:*, @grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors":
|
||||
"@grafana/e2e-selectors@npm:12.2.0, @grafana/e2e-selectors@workspace:*, @grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors"
|
||||
dependencies:
|
||||
@@ -3142,8 +3142,8 @@ __metadata:
|
||||
"@babel/preset-env": "npm:7.28.0"
|
||||
"@babel/preset-react": "npm:7.27.1"
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@leeoniya/ufuzzy": "npm:1.0.18"
|
||||
"@rollup/plugin-node-resolve": "npm:16.0.1"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
@@ -3193,7 +3193,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@grafana/i18n@npm:12.2.0-pre, @grafana/i18n@workspace:*, @grafana/i18n@workspace:packages/grafana-i18n":
|
||||
"@grafana/i18n@npm:12.2.0, @grafana/i18n@workspace:*, @grafana/i18n@workspace:packages/grafana-i18n":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/i18n@workspace:packages/grafana-i18n"
|
||||
dependencies:
|
||||
@@ -3263,12 +3263,12 @@ __metadata:
|
||||
resolution: "@grafana/o11y-ds-frontend@workspace:packages/grafana-o11y-ds-frontend"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/plugin-ui": "npm:^0.10.10"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/jest-dom": "npm:^6.1.2"
|
||||
"@testing-library/react": "npm:16.3.0"
|
||||
@@ -3292,7 +3292,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@grafana/plugin-configs@npm:12.2.0-pre, @grafana/plugin-configs@workspace:*, @grafana/plugin-configs@workspace:packages/grafana-plugin-configs":
|
||||
"@grafana/plugin-configs@npm:12.2.0, @grafana/plugin-configs@workspace:*, @grafana/plugin-configs@workspace:packages/grafana-plugin-configs":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/plugin-configs@workspace:packages/grafana-plugin-configs"
|
||||
dependencies:
|
||||
@@ -3369,13 +3369,13 @@ __metadata:
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@floating-ui/react": "npm:0.27.16"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/i18n": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/i18n": "npm:12.2.0"
|
||||
"@grafana/plugin-ui": "npm:^0.10.10"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@hello-pangea/dnd": "npm:18.0.1"
|
||||
"@leeoniya/ufuzzy": "npm:1.0.18"
|
||||
"@lezer/common": "npm:1.2.3"
|
||||
@@ -3434,15 +3434,15 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@grafana/runtime@npm:12.2.0-pre, @grafana/runtime@workspace:*, @grafana/runtime@workspace:packages/grafana-runtime":
|
||||
"@grafana/runtime@npm:12.2.0, @grafana/runtime@workspace:*, @grafana/runtime@workspace:packages/grafana-runtime":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/runtime@workspace:packages/grafana-runtime"
|
||||
dependencies:
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/faro-web-sdk": "npm:^1.13.2"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@rollup/plugin-node-resolve": "npm:16.0.1"
|
||||
"@rollup/plugin-terser": "npm:0.4.4"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
@@ -3521,7 +3521,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@grafana/schema@npm:12.2.0-pre, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema":
|
||||
"@grafana/schema@npm:12.2.0, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/schema@workspace:packages/grafana-schema"
|
||||
dependencies:
|
||||
@@ -3537,17 +3537,17 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@grafana/sql@npm:12.2.0-pre, @grafana/sql@workspace:*, @grafana/sql@workspace:packages/grafana-sql":
|
||||
"@grafana/sql@npm:12.2.0, @grafana/sql@workspace:*, @grafana/sql@workspace:packages/grafana-sql":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/sql@workspace:packages/grafana-sql"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/i18n": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/i18n": "npm:12.2.0"
|
||||
"@grafana/plugin-ui": "npm:^0.10.10"
|
||||
"@grafana/runtime": "npm:12.2.0-pre"
|
||||
"@grafana/ui": "npm:12.2.0-pre"
|
||||
"@grafana/runtime": "npm:12.2.0"
|
||||
"@grafana/ui": "npm:12.2.0"
|
||||
"@react-awesome-query-builder/ui": "npm:6.6.15"
|
||||
"@testing-library/dom": "npm:10.4.1"
|
||||
"@testing-library/jest-dom": "npm:^6.1.2"
|
||||
@@ -3603,7 +3603,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@grafana/ui@npm:12.2.0-pre, @grafana/ui@workspace:*, @grafana/ui@workspace:packages/grafana-ui":
|
||||
"@grafana/ui@npm:12.2.0, @grafana/ui@workspace:*, @grafana/ui@workspace:packages/grafana-ui":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/ui@workspace:packages/grafana-ui"
|
||||
dependencies:
|
||||
@@ -3613,11 +3613,11 @@ __metadata:
|
||||
"@emotion/serialize": "npm:1.3.3"
|
||||
"@faker-js/faker": "npm:^9.0.0"
|
||||
"@floating-ui/react": "npm:0.27.16"
|
||||
"@grafana/data": "npm:12.2.0-pre"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0-pre"
|
||||
"@grafana/data": "npm:12.2.0"
|
||||
"@grafana/e2e-selectors": "npm:12.2.0"
|
||||
"@grafana/faro-web-sdk": "npm:^1.13.2"
|
||||
"@grafana/i18n": "npm:12.2.0-pre"
|
||||
"@grafana/schema": "npm:12.2.0-pre"
|
||||
"@grafana/i18n": "npm:12.2.0"
|
||||
"@grafana/schema": "npm:12.2.0"
|
||||
"@hello-pangea/dnd": "npm:18.0.1"
|
||||
"@monaco-editor/react": "npm:4.7.0"
|
||||
"@popperjs/core": "npm:2.11.8"
|
||||
@@ -11678,13 +11678,13 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"axios@npm:^1, axios@npm:^1.10.0, axios@npm:^1.6.1, axios@npm:^1.8.3, axios@npm:^1.9.0":
|
||||
version: 1.11.0
|
||||
resolution: "axios@npm:1.11.0"
|
||||
version: 1.12.2
|
||||
resolution: "axios@npm:1.12.2"
|
||||
dependencies:
|
||||
follow-redirects: "npm:^1.15.6"
|
||||
form-data: "npm:^4.0.4"
|
||||
proxy-from-env: "npm:^1.1.0"
|
||||
checksum: 10/232df4af7a4e4e07baa84621b9cc4b0c518a757b4eacc7f635c0eb3642cb98dff347326739f24b891b3b4481b7b838c79a3a0c4819c9fbc1fc40232431b9c5dc
|
||||
checksum: 10/886a79770594eaad76493fecf90344b567bd956240609b5dcd09bd0afe8d3e6f1ad6d3257a93a483b6192b409d4b673d9515a34619e3e3ed1b2c0ec2a83b20ba
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user