diff --git a/.github/actions/node/set-up-node/action.yml b/.github/actions/node/set-up-node/action.yml index 0b03a6289e0..6b531b1e3a7 100644 --- a/.github/actions/node/set-up-node/action.yml +++ b/.github/actions/node/set-up-node/action.yml @@ -13,7 +13,7 @@ runs: # restore s3 cache for node installation - name: Restore Node.js from cache if: ${{ steps.check-node.outputs.node-installed == 'false' }} - uses: runs-on/cache/restore@v4 + uses: runs-on/cache/restore@v5.0.5 id: node-cache env: RUNS_ON_S3_BUCKET_CACHE: gdc-github-cache diff --git a/.github/actions/node/warm-up-node/action.yml b/.github/actions/node/warm-up-node/action.yml index e456a58d194..534844ea09e 100644 --- a/.github/actions/node/warm-up-node/action.yml +++ b/.github/actions/node/warm-up-node/action.yml @@ -13,7 +13,7 @@ runs: # create s3 cache for node installation - name: Cache Node.js if: ${{ steps.check-node.outputs.node-installed == 'false' }} - uses: runs-on/cache@v4 + uses: runs-on/cache@v5.0.5 id: node-cache env: RUNS_ON_S3_BUCKET_CACHE: gdc-github-cache diff --git a/.github/actions/rush/set-up-rush/action.yml b/.github/actions/rush/set-up-rush/action.yml index 85c18994477..8464c9fa758 100644 --- a/.github/actions/rush/set-up-rush/action.yml +++ b/.github/actions/rush/set-up-rush/action.yml @@ -64,7 +64,7 @@ runs: # Restore cache for global rush installation # We need defined unified home folder for rush on runners and different docker images - name: Cache Rush - uses: runs-on/cache/restore@v4 + uses: runs-on/cache/restore@v5.0.5 env: RUNS_ON_S3_BUCKET_CACHE: gdc-github-cache with: @@ -76,7 +76,7 @@ runs: - name: Cache pnpm if: ${{ inputs.install-dependencies == 'true' }} id: cache-pnpm - uses: runs-on/cache/restore@v4 + uses: runs-on/cache/restore@v5.0.5 env: RUNS_ON_S3_BUCKET_CACHE: gdc-github-cache with: diff --git a/.github/actions/rush/warm-up-rush/action.yml b/.github/actions/rush/warm-up-rush/action.yml index 9577d4b894c..397de597c20 100644 --- a/.github/actions/rush/warm-up-rush/action.yml +++ b/.github/actions/rush/warm-up-rush/action.yml @@ -21,7 +21,7 @@ runs: # path common/.rush is set via RUSH_GLOBAL_FOLDER # We need defined unified home folder for rush on runners and different docker images - name: Cache Rush - uses: runs-on/cache@v4 + uses: runs-on/cache@v5.0.5 env: RUNS_ON_S3_BUCKET_CACHE: gdc-github-cache with: @@ -33,7 +33,7 @@ runs: # Perform a lookup to check if the cache for pnpm exists - name: Cache pnpm lookup id: cache-pnpm-lookup - uses: runs-on/cache/restore@v4 + uses: runs-on/cache/restore@v5.0.5 env: RUNS_ON_S3_BUCKET_CACHE: gdc-github-cache with: @@ -47,7 +47,7 @@ runs: # we skip cache fetch if we are warming up the cache and cache hit if: ${{ steps.cache-pnpm-lookup.outputs.cache-hit != 'true' }} id: cache-pnpm - uses: runs-on/cache@v4 + uses: runs-on/cache@v5.0.5 env: RUNS_ON_S3_BUCKET_CACHE: gdc-github-cache with: diff --git a/.github/workflows/checklist-integrated-staging.yaml b/.github/workflows/checklist-integrated-staging.yaml index ec714099307..d0ef0e3fe67 100644 --- a/.github/workflows/checklist-integrated-staging.yaml +++ b/.github/workflows/checklist-integrated-staging.yaml @@ -76,7 +76,7 @@ jobs: needs: [setup-stage] if: ${{ needs.setup-stage.outputs.run-cypress-sdk == 'true' }} with: - CYPRESS_TEST_TAGS: "checklist_integrated_fe" + CYPRESS_TEST_TAGS: "checklist_fe" GIT_REVISION: ${{ inputs.test-branch }} TEST_BACKEND: "https://checklist.staging.stg11.panther.intgdc.com" TIGER_DATASOURCES_NAME: "vertica_staging-goodsales" @@ -90,7 +90,7 @@ jobs: needs: [setup-stage, checklist-SDK] if: ${{ !cancelled() && needs.setup-stage.outputs.run-export == 'true' }} with: - CYPRESS_TEST_TAGS: "checklist_integrated_export_fe" + CYPRESS_TEST_TAGS: "checklist_export_fe" GIT_REVISION: ${{ inputs.test-branch }} TEST_BACKEND: "https://checklist.staging.stg11.panther.intgdc.com" TIGER_DATASOURCES_NAME: "vertica_staging-goodsales" diff --git a/common/changes/@gooddata/sdk-ui-all/GDAI-1574-remove-llm-endpoint_2026-05-10-19-53.json b/common/changes/@gooddata/sdk-ui-all/GDAI-1574-remove-llm-endpoint_2026-05-10-19-53.json new file mode 100644 index 00000000000..212b7b2b8ae --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/GDAI-1574-remove-llm-endpoint_2026-05-10-19-53.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-ui-gen-ai: Remove enableLlmEndpointReplacement feature flag and the legacy LLM endpoint code path; the provider mode is now the only supported behavior.", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/GDAI-1741_2026-05-07-15-30.json b/common/changes/@gooddata/sdk-ui-all/GDAI-1741_2026-05-07-15-30.json new file mode 100644 index 00000000000..482b20c2f92 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/GDAI-1741_2026-05-07-15-30.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "fix: preserve isHidden/isHiddenFromKda on insight and metric save", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index df32d16e3bb..362f47a7325 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -12,14 +12,14 @@ { "definitionName": "lockStepVersion", "policyName": "sdk", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" }, { "definitionName": "lockStepVersion", "policyName": "sdk-examples", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" } diff --git a/common/scripts/ci/run_boiler_app_integrated.sh b/common/scripts/ci/run_boiler_app_integrated.sh index 7f326c3c752..dde69a217c3 100755 --- a/common/scripts/ci/run_boiler_app_integrated.sh +++ b/common/scripts/ci/run_boiler_app_integrated.sh @@ -47,9 +47,9 @@ fi # Run Playwright tests export BASE_URL=$BOILER_APP_HOST if [ -n "$FILTER" ]; then - npx playwright test --config ./playwright/playwright.config.ts --grep "@checklist_integrated_boiler_tiger" $(echo "$FILTER" | tr "," " "); + npx playwright test --config ./playwright/playwright.config.ts --grep "@checklist_boiler_tiger" $(echo "$FILTER" | tr "," " "); else - npx playwright test --config ./playwright/playwright.config.ts --grep "@checklist_integrated_boiler_tiger"; + npx playwright test --config ./playwright/playwright.config.ts --grep "@checklist_boiler_tiger"; fi # Cleanup workspace (scripts moved to sdk-ui-tests-reference-workspace package) diff --git a/common/scripts/ci/run_boiler_app_integration_tests_with_live_backend.sh b/common/scripts/ci/run_boiler_app_integration_tests_with_live_backend.sh index 1d91072ad2d..be4e5fc222f 100755 --- a/common/scripts/ci/run_boiler_app_integration_tests_with_live_backend.sh +++ b/common/scripts/ci/run_boiler_app_integration_tests_with_live_backend.sh @@ -39,7 +39,7 @@ fi pushd $E2E_TEST_DIR cat > .env <<-EOF HOST=${HOST:-} -PLAYWRIGHT_GREP=@checklist_integrated_boiler_tiger +PLAYWRIGHT_GREP=@checklist_boiler_tiger FIXTURE_TYPE=${FIXTURE_TYPE:-} FILTER=${FILTER:-} TIGER_DATASOURCES_NAME=${TIGER_DATASOURCES_NAME:-} diff --git a/examples/playground/tsconfig.json b/examples/playground/tsconfig.json index c72f8c9e39a..9ed43cbcfc3 100644 --- a/examples/playground/tsconfig.json +++ b/examples/playground/tsconfig.json @@ -12,8 +12,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "rootDir": ".", "outDir": "./dist", diff --git a/examples/sdk-interactive-examples/examples-template/package.json b/examples/sdk-interactive-examples/examples-template/package.json index 01200b09f11..27d1273089f 100644 --- a/examples/sdk-interactive-examples/examples-template/package.json +++ b/examples/sdk-interactive-examples/examples-template/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples-template", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "GoodData interactive example template", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples-template/tsconfig.build.json b/examples/sdk-interactive-examples/examples-template/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples-template/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples-template/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples-template/tsconfig.json b/examples/sdk-interactive-examples/examples-template/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples-template/tsconfig.json +++ b/examples/sdk-interactive-examples/examples-template/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json index cdad2adfaee..ce7b65b0d22 100644 --- a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-attributefilter", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "This example demonstrates how to use the AttributeFilter component to filter data in a visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-attributefilter/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-attributefilter/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-attributefilter/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-attributefilter/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-attributefilter/tsconfig.json b/examples/sdk-interactive-examples/examples/example-attributefilter/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-attributefilter/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-attributefilter/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json index e74d6f017eb..0aa611f8cb8 100644 --- a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json +++ b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-chartconfig", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "This interactive example demonstrates how to manipulate the chart config.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-chartconfig/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-chartconfig/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-chartconfig/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-chartconfig/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-chartconfig/tsconfig.json b/examples/sdk-interactive-examples/examples/example-chartconfig/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-chartconfig/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-chartconfig/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-columnchart/package.json b/examples/sdk-interactive-examples/examples/example-columnchart/package.json index c27064e330b..9b1f1c6071c 100644 --- a/examples/sdk-interactive-examples/examples/example-columnchart/package.json +++ b/examples/sdk-interactive-examples/examples/example-columnchart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-columnchart", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "This example demonstrates the usage of the ColumnChart component with the viewBy and stackBy properties.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-columnchart/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-columnchart/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-columnchart/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-columnchart/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-columnchart/tsconfig.json b/examples/sdk-interactive-examples/examples/example-columnchart/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-columnchart/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-columnchart/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-combochart/package.json b/examples/sdk-interactive-examples/examples/example-combochart/package.json index 7df93ff4259..ce9368dd7b7 100644 --- a/examples/sdk-interactive-examples/examples/example-combochart/package.json +++ b/examples/sdk-interactive-examples/examples/example-combochart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-combochart", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "Example demonstrates ComboChart secondaryMeasures definition. ", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-combochart/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-combochart/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-combochart/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-combochart/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-combochart/tsconfig.json b/examples/sdk-interactive-examples/examples/example-combochart/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-combochart/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-combochart/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-dashboard/package.json b/examples/sdk-interactive-examples/examples/example-dashboard/package.json index fdd83f44329..eb3e68f8047 100644 --- a/examples/sdk-interactive-examples/examples/example-dashboard/package.json +++ b/examples/sdk-interactive-examples/examples/example-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dashboard", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "This example shows how to use the Dashboard component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-dashboard/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-dashboard/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-dashboard/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-dashboard/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-dashboard/tsconfig.json b/examples/sdk-interactive-examples/examples/example-dashboard/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-dashboard/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-dashboard/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-datefilter/package.json b/examples/sdk-interactive-examples/examples/example-datefilter/package.json index cb8735efe49..705cf23ce31 100644 --- a/examples/sdk-interactive-examples/examples/example-datefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-datefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-datefilter", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "Example demonstrates usage of Date Filter component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-datefilter/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-datefilter/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-datefilter/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-datefilter/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-datefilter/tsconfig.json b/examples/sdk-interactive-examples/examples/example-datefilter/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-datefilter/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-datefilter/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json index 5fb6cf8332a..9f254c70bfa 100644 --- a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json +++ b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dependentfilters", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "This example demonstrates how to use multiple attribute filters linked together to filter data in a visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-dependentfilters/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-dependentfilters/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-dependentfilters/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-dependentfilters/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-dependentfilters/tsconfig.json b/examples/sdk-interactive-examples/examples/example-dependentfilters/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-dependentfilters/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-dependentfilters/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-execute/package.json b/examples/sdk-interactive-examples/examples/example-execute/package.json index ab522976a68..02dd67f95d6 100644 --- a/examples/sdk-interactive-examples/examples/example-execute/package.json +++ b/examples/sdk-interactive-examples/examples/example-execute/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-execute", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "This example demonstrates using Execute component and build custom visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-execute/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-execute/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-execute/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-execute/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-execute/tsconfig.json b/examples/sdk-interactive-examples/examples/example-execute/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-execute/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-execute/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-granularity/package.json b/examples/sdk-interactive-examples/examples/example-granularity/package.json index 31730f796a1..48ca4be58e7 100644 --- a/examples/sdk-interactive-examples/examples/example-granularity/package.json +++ b/examples/sdk-interactive-examples/examples/example-granularity/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-granularity", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "This example exmplains DateFilter granularity ", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-granularity/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-granularity/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-granularity/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-granularity/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-granularity/tsconfig.json b/examples/sdk-interactive-examples/examples/example-granularity/tsconfig.json index d09b64d5d3c..837a8914479 100644 --- a/examples/sdk-interactive-examples/examples/example-granularity/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-granularity/tsconfig.json @@ -24,8 +24,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true diff --git a/examples/sdk-interactive-examples/examples/example-headline/package.json b/examples/sdk-interactive-examples/examples/example-headline/package.json index 9d0916d0bad..5be04920f83 100644 --- a/examples/sdk-interactive-examples/examples/example-headline/package.json +++ b/examples/sdk-interactive-examples/examples/example-headline/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-headline", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "This example shows how to use the Headline component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-headline/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-headline/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-headline/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-headline/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-headline/tsconfig.json b/examples/sdk-interactive-examples/examples/example-headline/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-headline/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-headline/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-pivottable/package.json b/examples/sdk-interactive-examples/examples/example-pivottable/package.json index 6915938a2a2..b60790f610d 100644 --- a/examples/sdk-interactive-examples/examples/example-pivottable/package.json +++ b/examples/sdk-interactive-examples/examples/example-pivottable/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-pivottable", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "Basic PivotTable manipulation.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-pivottable/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-pivottable/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-pivottable/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-pivottable/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-pivottable/tsconfig.json b/examples/sdk-interactive-examples/examples/example-pivottable/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-pivottable/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-pivottable/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json index c9df886264a..4b511b2afe4 100644 --- a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-relativedatefilter", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "Example demonstrates how to set relative DateFilter for visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-relativedatefilter/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-relativedatefilter/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-relativedatefilter/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-relativedatefilter/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-relativedatefilter/tsconfig.json b/examples/sdk-interactive-examples/examples/example-relativedatefilter/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-relativedatefilter/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-relativedatefilter/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/examples/example-repeater/package.json b/examples/sdk-interactive-examples/examples/example-repeater/package.json index 5535975e742..61512b54b26 100644 --- a/examples/sdk-interactive-examples/examples/example-repeater/package.json +++ b/examples/sdk-interactive-examples/examples/example-repeater/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-repeater", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "This example demonstrates how to use Repeater component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-repeater/tsconfig.build.json b/examples/sdk-interactive-examples/examples/example-repeater/tsconfig.build.json index 795863ad809..3109cd8e478 100644 --- a/examples/sdk-interactive-examples/examples/example-repeater/tsconfig.build.json +++ b/examples/sdk-interactive-examples/examples/example-repeater/tsconfig.build.json @@ -25,8 +25,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "noCheck": true, "rootDir": "./src", diff --git a/examples/sdk-interactive-examples/examples/example-repeater/tsconfig.json b/examples/sdk-interactive-examples/examples/example-repeater/tsconfig.json index 0c980003885..bef3b03538e 100644 --- a/examples/sdk-interactive-examples/examples/example-repeater/tsconfig.json +++ b/examples/sdk-interactive-examples/examples/example-repeater/tsconfig.json @@ -23,8 +23,6 @@ "incremental": false, "resolveJsonModule": true, "declaration": true, - "declarationMap": true, - "sourceMap": true, "strictNullChecks": false, "tsBuildInfoFile": "./tsconfig.check.tsbuildinfo", "noEmit": true, diff --git a/examples/sdk-interactive-examples/package.json b/examples/sdk-interactive-examples/package.json index 353cb28a40d..ec2324ab678 100644 --- a/examples/sdk-interactive-examples/package.json +++ b/examples/sdk-interactive-examples/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "private": false, "description": "GoodData React interactive examples", "license": "LicenseRef-LICENSE", diff --git a/libs/api-client-tiger/api/api-client-tiger.api.md b/libs/api-client-tiger/api/api-client-tiger.api.md index 10133dd8643..8f580443ae8 100644 --- a/libs/api-client-tiger/api/api-client-tiger.api.md +++ b/libs/api-client-tiger/api/api-client-tiger.api.md @@ -34292,8 +34292,8 @@ export interface Xliff { // Warnings were encountered during analysis: // -// src/gd-tiger-model/TigerTypes.ts:823:9 - (ae-forgotten-export) The symbol "ITigerDashboardAttributeFilterParent" needs to be exported by the entry point index.d.ts -// src/gd-tiger-model/TigerTypes.ts:824:9 - (ae-forgotten-export) The symbol "ITigerDashboardAttributeFilterByDate" needs to be exported by the entry point index.d.ts -// src/locationStyle.ts:53:5 - (ae-forgotten-export) The symbol "ILocationStyleListItem" needs to be exported by the entry point index.d.ts +// esm/gd-tiger-model/TigerTypes.d.ts:681:9 - (ae-forgotten-export) The symbol "ITigerDashboardAttributeFilterParent" needs to be exported by the entry point index.d.ts +// esm/gd-tiger-model/TigerTypes.d.ts:682:9 - (ae-forgotten-export) The symbol "ITigerDashboardAttributeFilterByDate" needs to be exported by the entry point index.d.ts +// esm/locationStyle.d.ts:44:5 - (ae-forgotten-export) The symbol "ILocationStyleListItem" needs to be exported by the entry point index.d.ts ``` diff --git a/libs/api-client-tiger/package.json b/libs/api-client-tiger/package.json index 46dbf979a63..a7bbd0e76d0 100644 --- a/libs/api-client-tiger/package.json +++ b/libs/api-client-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/api-client-tiger", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "API Client for GoodData Cloud and GoodData.CN", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-base/package.json b/libs/sdk-backend-base/package.json index 6bac4a75b1e..2b693ede9da 100644 --- a/libs/sdk-backend-base/package.json +++ b/libs/sdk-backend-base/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-base", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData.UI SDK - Base for backend implementations", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-mockingbird/package.json b/libs/sdk-backend-mockingbird/package.json index ebddc783dac..4aa6963e01a 100644 --- a/libs/sdk-backend-mockingbird/package.json +++ b/libs/sdk-backend-mockingbird/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-mockingbird", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "Mock GoodData Backend SPI implementation", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-spi/package.json b/libs/sdk-backend-spi/package.json index fe0e5c0be0d..056441c68a9 100644 --- a/libs/sdk-backend-spi/package.json +++ b/libs/sdk-backend-spi/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-spi", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData Backend SPI abstraction interfaces", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-tiger/package.json b/libs/sdk-backend-tiger/package.json index 46019177efe..b2a447e0aa2 100644 --- a/libs/sdk-backend-tiger/package.json +++ b/libs/sdk-backend-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-tiger", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-tiger/src/backend/features/feature.ts b/libs/sdk-backend-tiger/src/backend/features/feature.ts index 280d8f6c8cf..7ec4bca520f 100644 --- a/libs/sdk-backend-tiger/src/backend/features/feature.ts +++ b/libs/sdk-backend-tiger/src/backend/features/feature.ts @@ -241,13 +241,6 @@ export function mapFeatures(features: FeaturesMap): Partial "BOOLEAN", FeatureFlagsValues.enableAlerting, ), - ...loadFeature( - features, - TigerFeaturesNames.EnableLlmEndpointReplacement, - "enableLlmEndpointReplacement", - "BOOLEAN", - FeatureFlagsValues.enableLlmEndpointReplacement, - ), ...loadFeature( features, TigerFeaturesNames.EnableAlertingAttributes, diff --git a/libs/sdk-backend-tiger/src/backend/uiFeatures.ts b/libs/sdk-backend-tiger/src/backend/uiFeatures.ts index e199fea7386..bbcb91bb553 100644 --- a/libs/sdk-backend-tiger/src/backend/uiFeatures.ts +++ b/libs/sdk-backend-tiger/src/backend/uiFeatures.ts @@ -45,7 +45,6 @@ export enum TigerFeaturesNames { EnableAnalyticalCatalog = "enableAnalyticalCatalog", EnableParameters = "enableParameters", EnableAlerting = "enableAlerting", - EnableLlmEndpointReplacement = "enableLlmEndpointReplacement", EnableAlertingAttributes = "enableAlertAttributes", EnableComparisonInAlerting = "enableComparisonInAlerting", EnableSmtp = "enableSmtp", @@ -211,7 +210,6 @@ export type ITigerFeatureFlags = { enableAnalyticalCatalog: (typeof FeatureFlagsValues)["enableAnalyticalCatalog"][number]; enableParameters: (typeof FeatureFlagsValues)["enableParameters"][number]; enableAlerting: (typeof FeatureFlagsValues)["enableAlerting"][number]; - enableLlmEndpointReplacement: (typeof FeatureFlagsValues)["enableLlmEndpointReplacement"][number]; enableAlertAttributes: (typeof FeatureFlagsValues)["enableAlertAttributes"][number]; enableComparisonInAlerting: (typeof FeatureFlagsValues)["enableComparisonInAlerting"][number]; enableSmtp: (typeof FeatureFlagsValues)["enableSmtp"][number]; @@ -383,7 +381,6 @@ export const DefaultFeatureFlags: ITigerFeatureFlags = { enableAnalyticalCatalog: false, enableParameters: false, enableAlerting: true, - enableLlmEndpointReplacement: false, enableAlertAttributes: true, enableComparisonInAlerting: true, enableSmtp: true, @@ -552,7 +549,6 @@ export const FeatureFlagsValues = { enableAnalyticalCatalog: [true, false] as const, enableParameters: [true, false] as const, enableAlerting: [true, false] as const, - enableLlmEndpointReplacement: [true, false] as const, enableAlertAttributes: [true, false] as const, enableComparisonInAlerting: [true, false] as const, enableSmtp: [true, false] as const, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts index 72612a74a42..2bbcbf9c8a0 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts @@ -303,6 +303,7 @@ export class TigerWorkspaceInsights implements IWorkspaceInsightsService { content: convertInsight(insight), title: insightTitle(insight), tags: insightTags(insight), + isHidden: insight.insight.isHidden, }, }, }, diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/MetricConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/MetricConverter.ts index fa2145d9574..fa306140ee0 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/MetricConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/MetricConverter.ts @@ -1,11 +1,11 @@ -// (C) 2021-2025 GoodData Corporation +// (C) 2021-2026 GoodData Corporation -import { type JsonApiMetricOutAttributes } from "@gooddata/api-client-tiger"; +import { type JsonApiMetricPostOptionalIdAttributes } from "@gooddata/api-client-tiger"; import { type IMeasureMetadataObjectDefinition } from "@gooddata/sdk-model"; export function convertMetricToBackend( measure: IMeasureMetadataObjectDefinition, -): JsonApiMetricOutAttributes { +): JsonApiMetricPostOptionalIdAttributes { return { title: measure.title, description: measure.description, @@ -15,5 +15,7 @@ export function convertMetricToBackend( ...(typeof measure.metricType === "undefined" ? {} : { metricType: measure.metricType }), }, tags: measure.tags, + isHidden: measure.isHidden, + isHiddenFromKda: measure.isHiddenFromKda, }; } diff --git a/libs/sdk-code-convertors/api/sdk-code-convertors.api.md b/libs/sdk-code-convertors/api/sdk-code-convertors.api.md index 689784d581b..ff86d40cd13 100644 --- a/libs/sdk-code-convertors/api/sdk-code-convertors.api.md +++ b/libs/sdk-code-convertors/api/sdk-code-convertors.api.md @@ -1179,75 +1179,75 @@ export function yamlWidgetToDeclarative(entities: ExportEntities, input: Visuali // Warnings were encountered during analysis: // -// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "load_5" needs to be exported by the entry point index.d.ts -// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "save_5" needs to be exported by the entry point index.d.ts -// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "ConfigDefaults" needs to be exported by the entry point index.d.ts -// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "DefaultProperties_5" needs to be exported by the entry point index.d.ts -// src/configs/barChart.ts:282:22 - (ae-forgotten-export) The symbol "load_2" needs to be exported by the entry point index.d.ts -// src/configs/barChart.ts:282:22 - (ae-forgotten-export) The symbol "save_2" needs to be exported by the entry point index.d.ts -// src/configs/barChart.ts:282:22 - (ae-forgotten-export) The symbol "DefaultProperties_2" needs to be exported by the entry point index.d.ts -// src/configs/bubbleChart.ts:246:25 - (ae-forgotten-export) The symbol "load_7" needs to be exported by the entry point index.d.ts -// src/configs/bubbleChart.ts:246:25 - (ae-forgotten-export) The symbol "save_7" needs to be exported by the entry point index.d.ts -// src/configs/bubbleChart.ts:246:25 - (ae-forgotten-export) The symbol "DefaultProperties_7" needs to be exported by the entry point index.d.ts -// src/configs/bulletChart.ts:231:25 - (ae-forgotten-export) The symbol "load_14" needs to be exported by the entry point index.d.ts -// src/configs/bulletChart.ts:231:25 - (ae-forgotten-export) The symbol "save_14" needs to be exported by the entry point index.d.ts -// src/configs/bulletChart.ts:231:25 - (ae-forgotten-export) The symbol "DefaultProperties_14" needs to be exported by the entry point index.d.ts -// src/configs/columnChart.ts:282:25 - (ae-forgotten-export) The symbol "load_3" needs to be exported by the entry point index.d.ts -// src/configs/columnChart.ts:282:25 - (ae-forgotten-export) The symbol "save_3" needs to be exported by the entry point index.d.ts -// src/configs/columnChart.ts:282:25 - (ae-forgotten-export) The symbol "DefaultProperties_3" needs to be exported by the entry point index.d.ts -// src/configs/comboChart.ts:507:24 - (ae-forgotten-export) The symbol "load_19" needs to be exported by the entry point index.d.ts -// src/configs/comboChart.ts:507:24 - (ae-forgotten-export) The symbol "save_19" needs to be exported by the entry point index.d.ts -// src/configs/comboChart.ts:507:24 - (ae-forgotten-export) The symbol "DefaultProperties_19" needs to be exported by the entry point index.d.ts -// src/configs/dependencyWheelChart.ts:113:34 - (ae-forgotten-export) The symbol "load_16" needs to be exported by the entry point index.d.ts -// src/configs/dependencyWheelChart.ts:113:34 - (ae-forgotten-export) The symbol "save_16" needs to be exported by the entry point index.d.ts -// src/configs/dependencyWheelChart.ts:113:34 - (ae-forgotten-export) The symbol "DefaultProperties_16" needs to be exported by the entry point index.d.ts -// src/configs/donutChart.ts:133:24 - (ae-forgotten-export) The symbol "load_9" needs to be exported by the entry point index.d.ts -// src/configs/donutChart.ts:133:24 - (ae-forgotten-export) The symbol "save_9" needs to be exported by the entry point index.d.ts -// src/configs/donutChart.ts:133:24 - (ae-forgotten-export) The symbol "DefaultProperties_9" needs to be exported by the entry point index.d.ts -// src/configs/funnelChart.ts:133:25 - (ae-forgotten-export) The symbol "load_12" needs to be exported by the entry point index.d.ts -// src/configs/funnelChart.ts:133:25 - (ae-forgotten-export) The symbol "save_12" needs to be exported by the entry point index.d.ts -// src/configs/funnelChart.ts:133:25 - (ae-forgotten-export) The symbol "DefaultProperties_12" needs to be exported by the entry point index.d.ts -// src/configs/geoAreaChart.ts:287:26 - (ae-forgotten-export) The symbol "load_21" needs to be exported by the entry point index.d.ts -// src/configs/geoAreaChart.ts:287:26 - (ae-forgotten-export) The symbol "save_21" needs to be exported by the entry point index.d.ts -// src/configs/geoAreaChart.ts:287:26 - (ae-forgotten-export) The symbol "DefaultProperties_21" needs to be exported by the entry point index.d.ts -// src/configs/geoChart.ts:352:22 - (ae-forgotten-export) The symbol "load_20" needs to be exported by the entry point index.d.ts -// src/configs/geoChart.ts:352:22 - (ae-forgotten-export) The symbol "save_20" needs to be exported by the entry point index.d.ts -// src/configs/geoChart.ts:352:22 - (ae-forgotten-export) The symbol "DefaultProperties_20" needs to be exported by the entry point index.d.ts -// src/configs/headlineChart.ts:190:27 - (ae-forgotten-export) The symbol "load_18" needs to be exported by the entry point index.d.ts -// src/configs/headlineChart.ts:190:27 - (ae-forgotten-export) The symbol "save_18" needs to be exported by the entry point index.d.ts -// src/configs/headlineChart.ts:190:27 - (ae-forgotten-export) The symbol "DefaultProperties_18" needs to be exported by the entry point index.d.ts -// src/configs/heatmapChart.ts:209:26 - (ae-forgotten-export) The symbol "load_13" needs to be exported by the entry point index.d.ts -// src/configs/heatmapChart.ts:209:26 - (ae-forgotten-export) The symbol "save_13" needs to be exported by the entry point index.d.ts -// src/configs/heatmapChart.ts:209:26 - (ae-forgotten-export) The symbol "DefaultProperties_13" needs to be exported by the entry point index.d.ts -// src/configs/lineChart.ts:392:23 - (ae-forgotten-export) The symbol "load_4" needs to be exported by the entry point index.d.ts -// src/configs/lineChart.ts:392:23 - (ae-forgotten-export) The symbol "save_4" needs to be exported by the entry point index.d.ts -// src/configs/lineChart.ts:392:23 - (ae-forgotten-export) The symbol "DefaultProperties_4" needs to be exported by the entry point index.d.ts -// src/configs/pieChart.ts:133:22 - (ae-forgotten-export) The symbol "load_8" needs to be exported by the entry point index.d.ts -// src/configs/pieChart.ts:133:22 - (ae-forgotten-export) The symbol "save_8" needs to be exported by the entry point index.d.ts -// src/configs/pieChart.ts:133:22 - (ae-forgotten-export) The symbol "DefaultProperties_8" needs to be exported by the entry point index.d.ts -// src/configs/pyramidChart.ts:133:26 - (ae-forgotten-export) The symbol "load_11" needs to be exported by the entry point index.d.ts -// src/configs/pyramidChart.ts:133:26 - (ae-forgotten-export) The symbol "save_11" needs to be exported by the entry point index.d.ts -// src/configs/pyramidChart.ts:133:26 - (ae-forgotten-export) The symbol "DefaultProperties_11" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "load_22" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "save_22" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "saveInlineVisualizations" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "DefaultProperties_22" needs to be exported by the entry point index.d.ts -// src/configs/sankeyChart.ts:117:25 - (ae-forgotten-export) The symbol "load_17" needs to be exported by the entry point index.d.ts -// src/configs/sankeyChart.ts:117:25 - (ae-forgotten-export) The symbol "save_17" needs to be exported by the entry point index.d.ts -// src/configs/sankeyChart.ts:117:25 - (ae-forgotten-export) The symbol "DefaultProperties_17" needs to be exported by the entry point index.d.ts -// src/configs/scatterChart.ts:271:26 - (ae-forgotten-export) The symbol "load_6" needs to be exported by the entry point index.d.ts -// src/configs/scatterChart.ts:271:26 - (ae-forgotten-export) The symbol "save_6" needs to be exported by the entry point index.d.ts -// src/configs/scatterChart.ts:271:26 - (ae-forgotten-export) The symbol "DefaultProperties_6" needs to be exported by the entry point index.d.ts -// src/configs/table.ts:247:19 - (ae-forgotten-export) The symbol "load" needs to be exported by the entry point index.d.ts -// src/configs/table.ts:247:19 - (ae-forgotten-export) The symbol "save" needs to be exported by the entry point index.d.ts -// src/configs/table.ts:247:19 - (ae-forgotten-export) The symbol "DefaultProperties" needs to be exported by the entry point index.d.ts -// src/configs/treemapChart.ts:133:26 - (ae-forgotten-export) The symbol "load_10" needs to be exported by the entry point index.d.ts -// src/configs/treemapChart.ts:133:26 - (ae-forgotten-export) The symbol "save_10" needs to be exported by the entry point index.d.ts -// src/configs/treemapChart.ts:133:26 - (ae-forgotten-export) The symbol "DefaultProperties_10" needs to be exported by the entry point index.d.ts -// src/configs/waterfallChart.ts:287:28 - (ae-forgotten-export) The symbol "load_15" needs to be exported by the entry point index.d.ts -// src/configs/waterfallChart.ts:287:28 - (ae-forgotten-export) The symbol "save_15" needs to be exported by the entry point index.d.ts -// src/configs/waterfallChart.ts:287:28 - (ae-forgotten-export) The symbol "DefaultProperties_15" needs to be exported by the entry point index.d.ts -// src/to/yamlVisualisationToDeclarative.ts:1170:5 - (ae-forgotten-export) The symbol "VisualisationDefinition" needs to be exported by the entry point index.d.ts +// esm/configs/areaChart.d.ts:108:5 - (ae-forgotten-export) The symbol "load_5" needs to be exported by the entry point index.d.ts +// esm/configs/areaChart.d.ts:109:5 - (ae-forgotten-export) The symbol "save_5" needs to be exported by the entry point index.d.ts +// esm/configs/areaChart.d.ts:110:5 - (ae-forgotten-export) The symbol "ConfigDefaults" needs to be exported by the entry point index.d.ts +// esm/configs/areaChart.d.ts:110:5 - (ae-forgotten-export) The symbol "DefaultProperties_5" needs to be exported by the entry point index.d.ts +// esm/configs/barChart.d.ts:96:5 - (ae-forgotten-export) The symbol "load_2" needs to be exported by the entry point index.d.ts +// esm/configs/barChart.d.ts:97:5 - (ae-forgotten-export) The symbol "save_2" needs to be exported by the entry point index.d.ts +// esm/configs/barChart.d.ts:98:5 - (ae-forgotten-export) The symbol "DefaultProperties_2" needs to be exported by the entry point index.d.ts +// esm/configs/bubbleChart.d.ts:88:5 - (ae-forgotten-export) The symbol "load_7" needs to be exported by the entry point index.d.ts +// esm/configs/bubbleChart.d.ts:89:5 - (ae-forgotten-export) The symbol "save_7" needs to be exported by the entry point index.d.ts +// esm/configs/bubbleChart.d.ts:90:5 - (ae-forgotten-export) The symbol "DefaultProperties_7" needs to be exported by the entry point index.d.ts +// esm/configs/bulletChart.d.ts:82:5 - (ae-forgotten-export) The symbol "load_14" needs to be exported by the entry point index.d.ts +// esm/configs/bulletChart.d.ts:83:5 - (ae-forgotten-export) The symbol "save_14" needs to be exported by the entry point index.d.ts +// esm/configs/bulletChart.d.ts:84:5 - (ae-forgotten-export) The symbol "DefaultProperties_14" needs to be exported by the entry point index.d.ts +// esm/configs/columnChart.d.ts:96:5 - (ae-forgotten-export) The symbol "load_3" needs to be exported by the entry point index.d.ts +// esm/configs/columnChart.d.ts:97:5 - (ae-forgotten-export) The symbol "save_3" needs to be exported by the entry point index.d.ts +// esm/configs/columnChart.d.ts:98:5 - (ae-forgotten-export) The symbol "DefaultProperties_3" needs to be exported by the entry point index.d.ts +// esm/configs/comboChart.d.ts:150:5 - (ae-forgotten-export) The symbol "load_19" needs to be exported by the entry point index.d.ts +// esm/configs/comboChart.d.ts:151:5 - (ae-forgotten-export) The symbol "save_19" needs to be exported by the entry point index.d.ts +// esm/configs/comboChart.d.ts:152:5 - (ae-forgotten-export) The symbol "DefaultProperties_19" needs to be exported by the entry point index.d.ts +// esm/configs/dependencyWheelChart.d.ts:32:5 - (ae-forgotten-export) The symbol "load_16" needs to be exported by the entry point index.d.ts +// esm/configs/dependencyWheelChart.d.ts:33:5 - (ae-forgotten-export) The symbol "save_16" needs to be exported by the entry point index.d.ts +// esm/configs/dependencyWheelChart.d.ts:34:5 - (ae-forgotten-export) The symbol "DefaultProperties_16" needs to be exported by the entry point index.d.ts +// esm/configs/donutChart.d.ts:42:5 - (ae-forgotten-export) The symbol "load_9" needs to be exported by the entry point index.d.ts +// esm/configs/donutChart.d.ts:43:5 - (ae-forgotten-export) The symbol "save_9" needs to be exported by the entry point index.d.ts +// esm/configs/donutChart.d.ts:44:5 - (ae-forgotten-export) The symbol "DefaultProperties_9" needs to be exported by the entry point index.d.ts +// esm/configs/funnelChart.d.ts:42:5 - (ae-forgotten-export) The symbol "load_12" needs to be exported by the entry point index.d.ts +// esm/configs/funnelChart.d.ts:43:5 - (ae-forgotten-export) The symbol "save_12" needs to be exported by the entry point index.d.ts +// esm/configs/funnelChart.d.ts:44:5 - (ae-forgotten-export) The symbol "DefaultProperties_12" needs to be exported by the entry point index.d.ts +// esm/configs/geoAreaChart.d.ts:75:5 - (ae-forgotten-export) The symbol "load_21" needs to be exported by the entry point index.d.ts +// esm/configs/geoAreaChart.d.ts:76:5 - (ae-forgotten-export) The symbol "save_21" needs to be exported by the entry point index.d.ts +// esm/configs/geoAreaChart.d.ts:77:5 - (ae-forgotten-export) The symbol "DefaultProperties_21" needs to be exported by the entry point index.d.ts +// esm/configs/geoChart.d.ts:55:5 - (ae-forgotten-export) The symbol "load_20" needs to be exported by the entry point index.d.ts +// esm/configs/geoChart.d.ts:56:5 - (ae-forgotten-export) The symbol "save_20" needs to be exported by the entry point index.d.ts +// esm/configs/geoChart.d.ts:57:5 - (ae-forgotten-export) The symbol "DefaultProperties_20" needs to be exported by the entry point index.d.ts +// esm/configs/headlineChart.d.ts:84:5 - (ae-forgotten-export) The symbol "load_18" needs to be exported by the entry point index.d.ts +// esm/configs/headlineChart.d.ts:85:5 - (ae-forgotten-export) The symbol "save_18" needs to be exported by the entry point index.d.ts +// esm/configs/headlineChart.d.ts:86:5 - (ae-forgotten-export) The symbol "DefaultProperties_18" needs to be exported by the entry point index.d.ts +// esm/configs/heatmapChart.d.ts:70:5 - (ae-forgotten-export) The symbol "load_13" needs to be exported by the entry point index.d.ts +// esm/configs/heatmapChart.d.ts:71:5 - (ae-forgotten-export) The symbol "save_13" needs to be exported by the entry point index.d.ts +// esm/configs/heatmapChart.d.ts:72:5 - (ae-forgotten-export) The symbol "DefaultProperties_13" needs to be exported by the entry point index.d.ts +// esm/configs/lineChart.d.ts:130:5 - (ae-forgotten-export) The symbol "load_4" needs to be exported by the entry point index.d.ts +// esm/configs/lineChart.d.ts:131:5 - (ae-forgotten-export) The symbol "save_4" needs to be exported by the entry point index.d.ts +// esm/configs/lineChart.d.ts:132:5 - (ae-forgotten-export) The symbol "DefaultProperties_4" needs to be exported by the entry point index.d.ts +// esm/configs/pieChart.d.ts:42:5 - (ae-forgotten-export) The symbol "load_8" needs to be exported by the entry point index.d.ts +// esm/configs/pieChart.d.ts:43:5 - (ae-forgotten-export) The symbol "save_8" needs to be exported by the entry point index.d.ts +// esm/configs/pieChart.d.ts:44:5 - (ae-forgotten-export) The symbol "DefaultProperties_8" needs to be exported by the entry point index.d.ts +// esm/configs/pyramidChart.d.ts:42:5 - (ae-forgotten-export) The symbol "load_11" needs to be exported by the entry point index.d.ts +// esm/configs/pyramidChart.d.ts:43:5 - (ae-forgotten-export) The symbol "save_11" needs to be exported by the entry point index.d.ts +// esm/configs/pyramidChart.d.ts:44:5 - (ae-forgotten-export) The symbol "DefaultProperties_11" needs to be exported by the entry point index.d.ts +// esm/configs/repeaterChart.d.ts:30:5 - (ae-forgotten-export) The symbol "load_22" needs to be exported by the entry point index.d.ts +// esm/configs/repeaterChart.d.ts:31:5 - (ae-forgotten-export) The symbol "save_22" needs to be exported by the entry point index.d.ts +// esm/configs/repeaterChart.d.ts:32:5 - (ae-forgotten-export) The symbol "saveInlineVisualizations" needs to be exported by the entry point index.d.ts +// esm/configs/repeaterChart.d.ts:33:5 - (ae-forgotten-export) The symbol "DefaultProperties_22" needs to be exported by the entry point index.d.ts +// esm/configs/sankeyChart.d.ts:34:5 - (ae-forgotten-export) The symbol "load_17" needs to be exported by the entry point index.d.ts +// esm/configs/sankeyChart.d.ts:35:5 - (ae-forgotten-export) The symbol "save_17" needs to be exported by the entry point index.d.ts +// esm/configs/sankeyChart.d.ts:36:5 - (ae-forgotten-export) The symbol "DefaultProperties_17" needs to be exported by the entry point index.d.ts +// esm/configs/scatterChart.d.ts:90:5 - (ae-forgotten-export) The symbol "load_6" needs to be exported by the entry point index.d.ts +// esm/configs/scatterChart.d.ts:91:5 - (ae-forgotten-export) The symbol "save_6" needs to be exported by the entry point index.d.ts +// esm/configs/scatterChart.d.ts:92:5 - (ae-forgotten-export) The symbol "DefaultProperties_6" needs to be exported by the entry point index.d.ts +// esm/configs/table.d.ts:56:5 - (ae-forgotten-export) The symbol "load" needs to be exported by the entry point index.d.ts +// esm/configs/table.d.ts:57:5 - (ae-forgotten-export) The symbol "save" needs to be exported by the entry point index.d.ts +// esm/configs/table.d.ts:58:5 - (ae-forgotten-export) The symbol "DefaultProperties" needs to be exported by the entry point index.d.ts +// esm/configs/treemapChart.d.ts:42:5 - (ae-forgotten-export) The symbol "load_10" needs to be exported by the entry point index.d.ts +// esm/configs/treemapChart.d.ts:43:5 - (ae-forgotten-export) The symbol "save_10" needs to be exported by the entry point index.d.ts +// esm/configs/treemapChart.d.ts:44:5 - (ae-forgotten-export) The symbol "DefaultProperties_10" needs to be exported by the entry point index.d.ts +// esm/configs/waterfallChart.d.ts:104:5 - (ae-forgotten-export) The symbol "load_15" needs to be exported by the entry point index.d.ts +// esm/configs/waterfallChart.d.ts:105:5 - (ae-forgotten-export) The symbol "save_15" needs to be exported by the entry point index.d.ts +// esm/configs/waterfallChart.d.ts:106:5 - (ae-forgotten-export) The symbol "DefaultProperties_15" needs to be exported by the entry point index.d.ts +// esm/to/yamlVisualisationToDeclarative.d.ts:29:5 - (ae-forgotten-export) The symbol "VisualisationDefinition" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package) diff --git a/libs/sdk-code-convertors/package.json b/libs/sdk-code-convertors/package.json index ed46c5d3e2f..18650cc2108 100644 --- a/libs/sdk-code-convertors/package.json +++ b/libs/sdk-code-convertors/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-code-convertors", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData AAC declarative converters", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-code-convertors/python/pyproject.toml b/libs/sdk-code-convertors/python/pyproject.toml index 3ebc47c0905..c5cfd6abce8 100644 --- a/libs/sdk-code-convertors/python/pyproject.toml +++ b/libs/sdk-code-convertors/python/pyproject.toml @@ -2,7 +2,7 @@ [project] name = "gooddata-code-convertors" -version = "11.35.0a4" +version = "11.35.0a5" description = "GoodData AAC YAML / Declarative API code converters (WASM-powered)" readme = "README.md" license = { file = "LICENSE" } diff --git a/libs/sdk-code-schemas/package.json b/libs/sdk-code-schemas/package.json index f84fb517900..482f0b0f303 100644 --- a/libs/sdk-code-schemas/package.json +++ b/libs/sdk-code-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-code-schemas", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData AAC JSON Schema types and compiled schemas", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-e2e-utils/package.json b/libs/sdk-e2e-utils/package.json index b2bb59af696..e310a64382d 100644 --- a/libs/sdk-e2e-utils/package.json +++ b/libs/sdk-e2e-utils/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-e2e-utils", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData utility functions for Playwright E2E tests", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-e2e-utils/tsconfig.build.json b/libs/sdk-e2e-utils/tsconfig.build.json index 01bc55a7395..3d37e4dc1fc 100644 --- a/libs/sdk-e2e-utils/tsconfig.build.json +++ b/libs/sdk-e2e-utils/tsconfig.build.json @@ -4,8 +4,6 @@ "rootDir": "./src", "outDir": "./esm", "declaration": true, - "declarationMap": true, - "sourceMap": true, "types": ["node"], "noEmit": false, "allowImportingTsExtensions": false diff --git a/libs/sdk-embedding/package.json b/libs/sdk-embedding/package.json index 51803eb43b0..ed75c3fda9c 100644 --- a/libs/sdk-embedding/package.json +++ b/libs/sdk-embedding/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-embedding", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData Embedding APIs", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-model/api/sdk-model.api.md b/libs/sdk-model/api/sdk-model.api.md index 1644cee7818..ca7ed9eeca1 100644 --- a/libs/sdk-model/api/sdk-model.api.md +++ b/libs/sdk-model/api/sdk-model.api.md @@ -2613,7 +2613,6 @@ export interface IFeatureFlags { enableKDRichText?: boolean; enableKDVisualizationSwitcher?: boolean; enableLineChartTrendThreshold?: boolean; - enableLlmEndpointReplacement?: boolean; // (undocumented) enableMariaDbDataSource?: boolean; enableMatchFilterAD?: boolean; @@ -5209,6 +5208,9 @@ export function isWidgetAttachment(obj: unknown): obj is IWidgetAttachment; // @alpha export function isWidgetDefinition(obj: unknown): obj is IWidgetDefinition; +// @alpha +export function isWidgetWithFilterSettings(widget: unknown): widget is IWidget; + // @public export type ItemInDimension = { dim: IDimension; diff --git a/libs/sdk-model/package.json b/libs/sdk-model/package.json index 74ba85f1d8e..dd4b712eaaf 100644 --- a/libs/sdk-model/package.json +++ b/libs/sdk-model/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-model", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData Model definitions used by UI components and Backend SPI", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-model/src/dashboard/widget.ts b/libs/sdk-model/src/dashboard/widget.ts index ae4faf18f5f..d99d088f8dc 100644 --- a/libs/sdk-model/src/dashboard/widget.ts +++ b/libs/sdk-model/src/dashboard/widget.ts @@ -194,3 +194,13 @@ export function isVisualizationSwitcherWidgetDefinition( (obj as IVisualizationSwitcherWidgetDefinition).type === "visualizationSwitcher" ); } + +/** + * Type-guard testing whether the provided object is a widget that can store dashboard filter settings. + * + * @alpha + */ + +export function isWidgetWithFilterSettings(widget: unknown): widget is IWidget { + return isInsightWidget(widget) || isKpiWidget(widget) || isRichTextWidget(widget); +} diff --git a/libs/sdk-model/src/index.ts b/libs/sdk-model/src/index.ts index db32ab7a067..71f063cbb33 100644 --- a/libs/sdk-model/src/index.ts +++ b/libs/sdk-model/src/index.ts @@ -875,6 +875,7 @@ export { type IWidgetDefinition, isWidget, isWidgetDefinition, + isWidgetWithFilterSettings, widgetUri, widgetId, widgetRef, diff --git a/libs/sdk-model/src/settings/settings.ts b/libs/sdk-model/src/settings/settings.ts index 0d82b0cd637..fd7b5309024 100644 --- a/libs/sdk-model/src/settings/settings.ts +++ b/libs/sdk-model/src/settings/settings.ts @@ -596,11 +596,6 @@ export interface IFeatureFlags { */ enableAlerting?: boolean; - /** - * Enables the replacement of LLM endpoints. - */ - enableLlmEndpointReplacement?: boolean; - /** * Enables attributes in alerts. */ diff --git a/libs/sdk-pluggable-application-model/package.json b/libs/sdk-pluggable-application-model/package.json index 1407543ebd2..3365cc78838 100644 --- a/libs/sdk-pluggable-application-model/package.json +++ b/libs/sdk-pluggable-application-model/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-pluggable-application-model", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK model contracts for pluggable applications", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-all/package.json b/libs/sdk-ui-all/package.json index f208ce2561e..cd7ef3bec01 100644 --- a/libs/sdk-ui-all/package.json +++ b/libs/sdk-ui-all/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-all", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK - All-In-One", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/libs/sdk-ui-catalog/package.json b/libs/sdk-ui-catalog/package.json index 6a20581d053..6f83aa6fc4a 100644 --- a/libs/sdk-ui-catalog/package.json +++ b/libs/sdk-ui-catalog/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-catalog", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK - Analytics Catalog", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-charts/package.json b/libs/sdk-ui-charts/package.json index 1c533509df6..aa57aebed6f 100644 --- a/libs/sdk-ui-charts/package.json +++ b/libs/sdk-ui-charts/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-charts", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData.UI SDK - Charts", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-dashboard/package.json b/libs/sdk-ui-dashboard/package.json index d5864ea0d63..c73f91eacf8 100644 --- a/libs/sdk-ui-dashboard/package.json +++ b/libs/sdk-ui-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-dashboard", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK - Dashboard Component", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/measureValueFilter/addMeasureValueFilterHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/measureValueFilter/addMeasureValueFilterHandler.ts index a24e50c975b..8080a9c99aa 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/measureValueFilter/addMeasureValueFilterHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/measureValueFilter/addMeasureValueFilterHandler.ts @@ -5,11 +5,20 @@ import { call, put, select } from "redux-saga/effects"; import { invariant } from "ts-invariant"; import { + type IDashboardFilterReference, type IDashboardMeasureValueFilter, + type IWidget, + type ObjRef, areObjRefsEqual, dashboardFilterLocalIdentifier, dashboardFilterObjRef, + insightMeasures, + isInsightWidget, + isKpiWidget, + isWidgetWithFilterSettings, + measureItem, objRefToString, + widgetRef, } from "@gooddata/sdk-model"; import { type IAddMeasureValueFilter } from "../../../commands/filters.js"; @@ -18,12 +27,14 @@ import { invalidArgumentsProvided } from "../../../events/general.js"; import { dispatchDashboardEvent } from "../../../store/_infra/eventDispatcher.js"; import { selectBackendCapabilities } from "../../../store/backendCapabilities/backendCapabilitiesSelectors.js"; import { selectAllCatalogMeasuresMap } from "../../../store/catalog/catalogSelectors.js"; +import { selectInsightsMap } from "../../../store/insights/insightsSelectors.js"; import { selectCanAddMoreFilters, selectFilterContextFilters, selectFilterContextMeasureValueFilters, } from "../../../store/tabs/filterContext/filterContextSelectors.js"; import { tabsActions } from "../../../store/tabs/index.js"; +import { selectWidgets } from "../../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; import { dispatchFilterContextChanged } from "../common.js"; @@ -115,7 +126,74 @@ export function* addMeasureValueFilterHandler( ); } + yield call(disableMeasureValueFilterForIncompatibleWidgets, cmd, measure); + yield dispatchDashboardEvent(measureValueFilterAdded(ctx, addedFilter, index, cmd.correlationId)); yield call(dispatchFilterContextChanged, ctx, cmd); } + +function* disableMeasureValueFilterForIncompatibleWidgets( + cmd: IAddMeasureValueFilter, + measure: ObjRef, +): SagaIterator { + const widgets: ReturnType = yield select(selectWidgets); + const insightsMap: ReturnType = yield select(selectInsightsMap); + + for (const widget of widgets) { + if (!isWidgetWithFilterSettings(widget) || widgetUsesMeasure(widget, insightsMap, measure)) { + continue; + } + + const isAlreadyIgnored = widget.ignoreDashboardFilters.some( + (reference) => + reference.type === "measureValueFilterReference" && + areObjRefsEqual(reference.measure, measure), + ); + + if (isAlreadyIgnored) { + continue; + } + + const measureValueFilterReference: IDashboardFilterReference = { + type: "measureValueFilterReference", + measure, + }; + + yield put( + tabsActions.replaceWidgetFilterSettings({ + ref: widgetRef(widget), + dateDataSet: widget.dateDataSet, + ignoreDashboardFilters: [...widget.ignoreDashboardFilters, measureValueFilterReference], + undo: { + cmd, + }, + }), + ); + } +} + +function widgetUsesMeasure( + widget: IWidget, + insightsMap: ReturnType, + measure: ObjRef, +): boolean { + if (isInsightWidget(widget)) { + const insight = insightsMap.get(widget.insight); + + return ( + !!insight && + insightMeasures(insight).some((insightMeasure) => { + const insightMeasureRef = measureItem(insightMeasure); + + return !!insightMeasureRef && areObjRefsEqual(insightMeasureRef, measure); + }) + ); + } + + if (isKpiWidget(widget)) { + return areObjRefsEqual(widget.kpi.metric, measure); + } + + return false; +} diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts index 7909b77bbb0..9b87e292cea 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts @@ -7,6 +7,7 @@ import { invariant } from "ts-invariant"; import { type DashboardAttributeFilterItem, + type IDashboardMeasureValueFilter, type IInsight, type IInsightWidget, type IKpiWidget, @@ -15,11 +16,15 @@ import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, dashboardAttributeFilterItemLocalIdentifier, + dashboardFilterObjRef, + insightMeasures, insightRef, isDashboardAttributeFilterReference, + isDashboardMeasureValueFilterReference, isInsightWidget, isKpiWidget, isRichTextWidget, + measureItem, objRefToString, } from "@gooddata/sdk-model"; @@ -35,7 +40,10 @@ import { import { type IMeasureDateDatasets, queryDateDatasetsForMeasure } from "../../../queries/kpis.js"; import { query } from "../../../store/_infra/queryCall.js"; import { selectAttributeFilterConfigsDisplayAsLabelMap } from "../../../store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js"; -import { selectFilterContextAttributeFilterItems } from "../../../store/tabs/filterContext/filterContextSelectors.js"; +import { + selectFilterContextAttributeFilterItems, + selectFilterContextMeasureValueFilters, +} from "../../../store/tabs/filterContext/filterContextSelectors.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; import { type ExtendedDashboardItem } from "../../../types/layoutTypes.js"; import { extractInsightRefsFromItems } from "../../../utils/dashboardItemUtils.js"; @@ -243,6 +251,49 @@ function removeObsoleteAttributeFilterIgnores( + widget: T, + measureValueFilters: IDashboardMeasureValueFilter[], + widgetMeasureRefs: ObjRef[], +): T { + const ignoreDashboardFilters = [...widget.ignoreDashboardFilters]; + + measureValueFilters.forEach((filter) => { + const filterMeasureRef = dashboardFilterObjRef(filter); + const usesMeasure = + filterMeasureRef && + widgetMeasureRefs.some((widgetMeasureRef) => areObjRefsEqual(widgetMeasureRef, filterMeasureRef)); + + if (usesMeasure || !filterMeasureRef) { + return; + } + + const isAlreadyIgnored = ignoreDashboardFilters.some( + (reference) => + isDashboardMeasureValueFilterReference(reference) && + areObjRefsEqual(reference.measure, filterMeasureRef), + ); + + if (!isAlreadyIgnored) { + ignoreDashboardFilters.push({ + type: "measureValueFilterReference", + measure: filterMeasureRef, + }); + } + }); + + return { + ...widget, + ignoreDashboardFilters, + }; +} + +function getInsightMeasureRefs(insight: IInsight) { + return insightMeasures(insight) + .map(measureItem) + .filter((ref): ref is ObjRef => !!ref); +} + /** * This generator function will ensure that Insight and KPI widgets that are included in the `items` * have valid filter settings: @@ -272,6 +323,9 @@ export function* validateAndResolveItemFilterSettings( const displayAsLabelMap: ReturnType = yield select( selectAttributeFilterConfigsDisplayAsLabelMap, ); + const measureValueFilters: ReturnType = yield select( + selectFilterContextMeasureValueFilters, + ); const { resolvedInsights, normalizedItems } = items; const updatedItems: ExtendedDashboardItem[] = []; let i = 0; @@ -297,10 +351,15 @@ export function* validateAndResolveItemFilterSettings( autoDateDataset, resolvedInsight, ); + const widgetWithMeasureValueFilterIgnores = resolveMeasureValueFilterIgnores( + updatedWidget, + measureValueFilters, + getInsightMeasureRefs(resolvedInsight), + ); updatedItems.push({ ...item, - widget: updatedWidget, + widget: widgetWithMeasureValueFilterIgnores, }); } else if (isKpiWidget(widget)) { const updatedWidget: SagaReturnType = yield call( @@ -310,10 +369,15 @@ export function* validateAndResolveItemFilterSettings( widget, autoDateDataset, ); + const widgetWithMeasureValueFilterIgnores = resolveMeasureValueFilterIgnores( + updatedWidget, + measureValueFilters, + [widget.kpi.metric], + ); updatedItems.push({ ...item, - widget: updatedWidget, + widget: widgetWithMeasureValueFilterIgnores, }); } else if (isRichTextWidget(widget)) { const updatedWidget: SagaReturnType = yield call( @@ -323,10 +387,15 @@ export function* validateAndResolveItemFilterSettings( widget, autoDateDataset, ); + const widgetWithMeasureValueFilterIgnores = resolveMeasureValueFilterIgnores( + updatedWidget, + measureValueFilters, + [], + ); updatedItems.push({ ...item, - widget: updatedWidget, + widget: widgetWithMeasureValueFilterIgnores, }); } else { updatedItems.push(item); @@ -351,10 +420,26 @@ export function* validateAndResolveItemFilterSettings( attributeFilters, displayAsLabelMap, ); + const resolvedInsight = isInsightWidget(updatedWidget) + ? resolvedInsights.resolved.get(updatedWidget.insight) + : undefined; + let widgetMeasureRefs: ObjRef[]; + if (isInsightWidget(updatedWidget)) { + widgetMeasureRefs = resolvedInsight ? getInsightMeasureRefs(resolvedInsight) : []; + } else if (isKpiWidget(updatedWidget)) { + widgetMeasureRefs = [updatedWidget.kpi.metric]; + } else { + widgetMeasureRefs = []; + } + const widgetWithMeasureValueFilterIgnores = resolveMeasureValueFilterIgnores( + updatedWidget, + measureValueFilters, + widgetMeasureRefs, + ); updatedItems.push({ ...item, - widget: updatedWidget, + widget: widgetWithMeasureValueFilterIgnores, }); } else { updatedItems.push(item); diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/de-DE.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/de-DE.json index 9109d373d4c..e27d89f6841 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/de-DE.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/de-DE.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "Die Visualisierung kann nicht nach {attributeName} gefiltert werden. Markierung des Kontrollfelds entfernen.", "configurationPanel.kpiCantBeFilteredByAttribute": " Leistungskennzahl kann nicht nach {attributeName} gefiltert werden. Markierung des Kontrollfelds entfernen.", "configurationPanel.vizCantBeFilteredByDate": "Die Visualisierung kann nicht nach Datum gefiltert werden. Markierung des Kontrollfelds entfernen.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filtern ist auf diese Visualisierung nicht anwendbar.", "configurationPanel.kpiCantBeFilteredByDate": "Leistungskennzahl kann nicht nach Datum gefiltert werden. Markierung des Kontrollfelds entfernen.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" kann nicht mehr auf die Visualisierung angewendet werden. Wählen Sie eine andere Dimension oder bearbeiten Sie die Visualisierung.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" kann nicht mehr auf den Leistungskennzahl angewandt werden. Wählen Sie eine andere Dimension oder bearbeiten Sie den Leistungskennzahl.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-AU.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-AU.json index 80ddf661f9f..4a85ecfcc08 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-AU.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-AU.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "The visualisation cannot be filtered by {attributeName}. Unselect the check box.", "configurationPanel.kpiCantBeFilteredByAttribute": "The kpi cannot be filtered by {attributeName}. Unselect the check box.", "configurationPanel.vizCantBeFilteredByDate": "The visualization cannot be filtered by Date. Unselect the check box.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filter is not applicable to this visualisation.", "configurationPanel.kpiCantBeFilteredByDate": "The kpi can't be filtered by Date. Unselect the check box.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" can no longer be applied to the visualisation. Select a different dimension or edit the visualisation.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" can no longer be applied to the KPI. Select a different dimension or edit the KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-GB.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-GB.json index ebf33b84a39..b3d5d1e8b7d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-GB.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-GB.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "The visualisation cannot be filtered by {attributeName}. Unselect the check box.", "configurationPanel.kpiCantBeFilteredByAttribute": "The kpi cannot be filtered by {attributeName}. Unselect the check box.", "configurationPanel.vizCantBeFilteredByDate": "The visualisation cannot be filtered by Date. Unselect the check box.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filter is not applicable to this visualisation.", "configurationPanel.kpiCantBeFilteredByDate": "The kpi cannot be filtered by Date. Unselect the check box.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" can no longer be applied to the visualisation. Select a different dimension or edit the visualisation.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" can no longer be applied to the kpi. Select a different dimension or edit the kpi.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/es-419.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/es-419.json index f5c2b2c9627..605c963c690 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/es-419.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/es-419.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "La visualización no puede filtrarse por {attributeName}. Desmarque la casilla de verificación.", "configurationPanel.kpiCantBeFilteredByAttribute": "El KPI no se puede filtrar por {attributeName}. Desmarque la casilla de verificación.", "configurationPanel.vizCantBeFilteredByDate": "La visualización no puede filtrarse por Fecha. Desmarque la casilla de verificación.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "El filtro no se puede aplicar a esta visualización.", "configurationPanel.kpiCantBeFilteredByDate": "El KPI no se puede filtrar por fecha. Desmarque la casilla de verificación.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ya no se puede aplicar a la visualización. Seleccione una dimensión diferente o edite la visualización.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ya no se puede aplicar al KPI. Seleccione otra dimensión o edite el KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/es-ES.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/es-ES.json index 2f8bf6a79ea..f212f560f5f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/es-ES.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/es-ES.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "La visualización no puede filtrarse por {attributeName}. Desmarque la casilla de verificación.", "configurationPanel.kpiCantBeFilteredByAttribute": "El KPI no se puede filtrar por {attributeName}. Desmarque la casilla de verificación.", "configurationPanel.vizCantBeFilteredByDate": "La visualización no puede filtrarse por Fecha. Desmarque la casilla de verificación.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "El filtro no se puede aplicar a esta visualización.", "configurationPanel.kpiCantBeFilteredByDate": "El KPI no se puede filtrar por fecha. Desmarque la casilla de verificación.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ya no se puede aplicar a la visualización. Seleccione una dimensión diferente o edite la visualización.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ya no se puede aplicar al KPI. Seleccione una dimensión diferente o edite el KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fi-FI.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fi-FI.json index 0aa07db4258..9b63f96ca58 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fi-FI.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fi-FI.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "Visualisointia ei voida suodattaa {attributeName}. Poista valintaruudun valinta.", "configurationPanel.kpiCantBeFilteredByAttribute": "KPI:ta ei voi suodattaa {attributeName}. Poista valintamerkki.", "configurationPanel.vizCantBeFilteredByDate": "Visualisointia ei voida suodattaa päivämäärän mukaan. Poista valinta valintaruudusta.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Suodatin ei sovellu tähän visualisointiin.", "configurationPanel.kpiCantBeFilteredByDate": "KPI:ta ei voi suodattaa päivämäärällä. Poista valintamerkki.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ei voida enää soveltaa visualisointiin. Valitse toinen ulottuvuus tai muokkaa visualisointia.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ei voi enää soveltaa KPI:hin. Valitse eri ulottuvuus tai muokkaa KPI:tä.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fr-CA.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fr-CA.json index 541eea0b7f4..c9f29357690 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fr-CA.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fr-CA.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "La visualisation ne peut pas être filtrée par {attributeName}. Désélectionnez la case à cocher.", "configurationPanel.kpiCantBeFilteredByAttribute": "Le KPI ne peut pas être filtré par {attributeName}. Décochez la case.", "configurationPanel.vizCantBeFilteredByDate": "La visualisation ne peut pas être filtrée par la Date. Désélectionnez la case à cocher.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Le filtre ne s’applique pas à cette visualisation.", "configurationPanel.kpiCantBeFilteredByDate": "Le KPI ne peut pas être filtré par Date. Décochez la case.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué à la visualisation. Sélectionnez une dimension différente ou modifiez la visualisation.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué au KPI. Sélectionnez une dimension différente ou modifiez le KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fr-FR.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fr-FR.json index a4a10ae2170..a4d70eea75e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fr-FR.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/fr-FR.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "La visualisation ne peut pas être filtrée par {attributeName}. Désélectionnez la case à cocher.", "configurationPanel.kpiCantBeFilteredByAttribute": "Le KPI ne peut pas être filtré par {attributeName}. Décochez la case.", "configurationPanel.vizCantBeFilteredByDate": "La visualisation ne peut pas être filtrée par date. Désélectionnez la case à cocher.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Le filtre ne peut pas être appliqué à cette visualisation.", "configurationPanel.kpiCantBeFilteredByDate": "Le KPI ne peut pas être filtré par date. Décochez la case.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué à la visualisation. Sélectionnez une autre dimension ou modifiez la visualisation.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué au KPI. Sélectionnez une autre dimension ou modifiez le KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/id-ID.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/id-ID.json index 635a0a2b35f..453eccba91c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/id-ID.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/id-ID.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "Visualisasi tidak dapat difilter oleh {attributeName}. Batalkan pilihan kotak centang.", "configurationPanel.kpiCantBeFilteredByAttribute": "kpi tidak dapat difilter oleh {attributeName}. Batalkan pilihan kotak centang.", "configurationPanel.vizCantBeFilteredByDate": "Visualisasi tidak dapat difilter oleh Tanggal. Batalkan pilihan kotak centang.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filter tidak dapat diterapkan pada visualisasi ini.", "configurationPanel.kpiCantBeFilteredByDate": "kpi tidak dapat difilter oleh Tanggal. Batalkan pilihan kotak centang.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" tidak dapat lagi diterapkan pada visualisasi. Pilih dimensi lain atau edit visualisasi.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" tidak dapat lagi diterapkan pada kpi. Pilih dimensi lain atau edit kpi.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/it-IT.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/it-IT.json index cf21e5bc76b..252a38c6695 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/it-IT.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/it-IT.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "La visualizzazione non può essere filtrata da {attributeName}. Deselezionare la casella di controllo.", "configurationPanel.kpiCantBeFilteredByAttribute": "Il KPI non può essere filtrato per {attributeName}. Deselezionare la casella di controllo.", "configurationPanel.vizCantBeFilteredByDate": "La visualizzazione non può essere filtrata per data. Deselezionare la casella di controllo.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Il filtro non può essere applicato a questa visualizzazione.", "configurationPanel.kpiCantBeFilteredByDate": "Il KPI non può essere filtrato per Data. Deselezionare la casella di controllo.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" non può più essere applicato alla visualizzazione. Selezionare una dimensione diversa o modificare la visualizzazione.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" non può più essere applicato al KPI. Selezionare una dimensione diversa o modificare il KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ja-JP.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ja-JP.json index 8a0b8f13021..703b8735810 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ja-JP.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ja-JP.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "ビジュアライゼーションは{attributeName} でフィルターできません。チェックボックスをオフにします。", "configurationPanel.kpiCantBeFilteredByAttribute": "KPIは{attributeName}でフィルターできません。チェックボックスの選択を解除してください。", "configurationPanel.vizCantBeFilteredByDate": "ビジュアライゼーションを日付でフィルターすることはできません。チェックボックスの選択を解除してください。", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "この可視化にはフィルターを適用できません。", "configurationPanel.kpiCantBeFilteredByDate": "KPIは日付でフィルターできません。チェックボックスの選択を解除してください。", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" はビジュアライゼーションに適用できなくなりました。別の次元を選択するか、ビジュアライゼーションを編集してください。", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\"はKPIに適用できなくなりました。別のディメンションを選ぶか、KPIを編集してください。", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ko-KR.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ko-KR.json index c8996fcd351..84b6b6c3110 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ko-KR.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ko-KR.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "시각화는 {attributeName}(으)로 필터링할 수 없습니다. 체크박스를 선택 해제하세요.", "configurationPanel.kpiCantBeFilteredByAttribute": "KPI는 {attributeName}(으)로 필터링할 수 없습니다. 체크박스를 선택 해제하세요.", "configurationPanel.vizCantBeFilteredByDate": "시각화는 날짜로 필터링할 수 없습니다. 체크 박스를 선택 해제하세요.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "이 시각화에는 필터를 적용할 수 없습니다.", "configurationPanel.kpiCantBeFilteredByDate": "KPI는 날짜로 필터링할 수 없습니다. 체크박스를 선택 해제하세요.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\"을/를 더 이상 시각화에 적용할 수 없습니다. 다른 차원을 선택하거나 시각화를 편집하세요.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\"은/는 더 이상 KPI에 적용할 수 없습니다. 다른 차원을 선택하거나 KPI를 편집하세요.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/nl-NL.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/nl-NL.json index a2309b8a775..86897912c08 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/nl-NL.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/nl-NL.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "De visualisatie kan niet worden gefilterd op {attributeName}. Schakel het selectievakje uit.", "configurationPanel.kpiCantBeFilteredByAttribute": "De KPI kan niet worden gefilterd op {attributeName}. Vink het selectievakje af.", "configurationPanel.vizCantBeFilteredByDate": "De visualisatie kan niet worden gefilterd op Datum. Schakel het selectievakje uit.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filter is niet van toepassing op deze visualisatie.", "configurationPanel.kpiCantBeFilteredByDate": "De KPI kan niet worden gefilterd op Datum. Vink het selectievakje af.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" kan niet langer worden toegepast op de visualisatie. Selecteer een andere dimensie of bewerk de visualisatie.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" kan niet langer op de KPI worden toegepast. Selecteer een andere dimensie of bewerk de KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pl-PL.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pl-PL.json index 5e3b7c9327c..f68369c1f9c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pl-PL.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pl-PL.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "Wizualizacja nie może być filtrowana przez {attributeName}. Odznacz pole wyboru.", "configurationPanel.kpiCantBeFilteredByAttribute": "KPI nie może być filtrowany przez {attributeName}. Odznacz pole wyboru.", "configurationPanel.vizCantBeFilteredByDate": "Wizualizacja nie może być filtrowana wg daty. Odznacz pole wyboru.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filtr nie ma zastosowania do tej wizualizacji.", "configurationPanel.kpiCantBeFilteredByDate": "KPI nie może być filtrowane wg daty. Odznacz pole wyboru.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" nie może być już zastosowany do wizualizacji. Wybierz inny wymiar lub edytuj wizualizację.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" nie może być już zastosowany do KPI. Wybierz inny wymiar lub edytuj KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pt-BR.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pt-BR.json index be970d0ce0e..66b189c29c2 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pt-BR.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pt-BR.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "A visualização não pode ser filtrada pelo {attributeName}. Desmarque a caixa de seleção.", "configurationPanel.kpiCantBeFilteredByAttribute": "O KPI não pode ser filtrado por {attributeName}. Desmarque a caixa de seleção.", "configurationPanel.vizCantBeFilteredByDate": "A visualização não pode ser filtrada por Data. Desmarque a caixa de seleção.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "O filtro não é aplicável a esta visualização.", "configurationPanel.kpiCantBeFilteredByDate": "O KPI não pode ser filtrado por Data. Desmarque a caixa de seleção.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" não pode mais ser aplicado à visualização. Selecione uma dimensão diferente ou edite a visualização.", "configurationPanel.unrelatedKpiDateInfo": "Não é possível aplicar \"{dateDataSet}\" ao KPI. Selecione uma dimensão diferente ou edite o KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pt-PT.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pt-PT.json index 19b511a2378..75f30706e4d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pt-PT.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/pt-PT.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "A visualização não pode ser filtrada por {attributeName}. Desmarque a caixa de seleção.", "configurationPanel.kpiCantBeFilteredByAttribute": "Não é possível filtrar o kpi por {attributeName}. Desmarque a caixa de verificação.", "configurationPanel.vizCantBeFilteredByDate": "A visualização não pode ser filtrada por Data. Desmarque a caixa de seleção.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "O filtro não é aplicável a esta visualização.", "configurationPanel.kpiCantBeFilteredByDate": "Não é possível filtrar o kpi por Data. Desmarque a caixa de verificação.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" não pode mais ser aplicado à visualização. Selecione uma dimensão diferente ou edite a visualização.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" já não pode ser aplicado ao kpi. Selecione uma dimensão diferente ou edite o kpi.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ru-RU.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ru-RU.json index 9a7ef6cde9d..b84a9b6ecb0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ru-RU.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/ru-RU.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "Эту визуализацию нельзя фильтровать по {attributeName}. Снимите флажок.", "configurationPanel.kpiCantBeFilteredByAttribute": "Этот КПЭ нельзя фильтровать по {attributeName}. Снимите флажок.", "configurationPanel.vizCantBeFilteredByDate": "Эту визуализацию нельзя фильтровать по дате. Снимите флажок.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Фильтр неприменим к этой визуализации.", "configurationPanel.kpiCantBeFilteredByDate": "Этот КПЭ нельзя фильтровать по дате. Снимите флажок.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" больше нельзя применять к визуализации. Выберите другое измерение или отредактируйте визуализацию.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" больше нельзя применять к КПЭ. Выберите другое измерение или отредактируйте анализ.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/sl-SI.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/sl-SI.json index da12b6184e0..a297a462798 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/sl-SI.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/sl-SI.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "Vizualizacije ni mogoče filtrirati glede na {attributeName}. Odznačite potrditveno polje.", "configurationPanel.kpiCantBeFilteredByAttribute": "KPI-ja ni mogoče filtrirati glede na {attributeName}. Odznačite potrditveno polje.", "configurationPanel.vizCantBeFilteredByDate": "Vizualizacije ni mogoče filtrirati po datumu. Odznačite potrditveno polje.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filter ni uporaben za to vizualizacijo.", "configurationPanel.kpiCantBeFilteredByDate": "KPI-ja ni mogoče filtrirati po datumu. Odznačite potrditveno polje.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" se ne more več uporabljati pri vizualizaciji. Izberite drugo dimenzijo ali uredite vizualizacijo.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" se ne more več uporabljati pri KPI-ju. Izberite drugo dimenzijo ali uredite KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/th-TH.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/th-TH.json index c18acf44f43..075b3d788c3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/th-TH.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/th-TH.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "การแสดงภาพข้อมูลไม่สามารถถูกกรองโดย {attributeName} ได้ ยกเลิกการเลือกช่องทำเครื่องหมาย", "configurationPanel.kpiCantBeFilteredByAttribute": "KPI ไม่สามารถถูกกรองโดย {attributeName} ได้ ยกเลิกการเลือกช่องทำเครื่องหมาย", "configurationPanel.vizCantBeFilteredByDate": "การแสดงภาพข้อมูลไม่สามารถถูกกรองตามวันที่ได้ ยกเลิกการเลือกช่องทำเครื่องหมาย", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "ตัวกรองไม่สามารถใช้ได้กับการแสดงภาพข้อมูลนี้", "configurationPanel.kpiCantBeFilteredByDate": "KPI ไม่สามารถถูกกรองตามวันที่ได้ ยกเลิกการเลือกช่องทำเครื่องหมาย", "configurationPanel.unrelatedVizDateInfo": "ไม่สามารถนำ \"{dateDataSet}\" ไปใช้กับการแสดงภาพข้อมูลได้อีกต่อไป เลือกมิติอื่นหรือแก้ไขการแสดงภาพข้อมูล", "configurationPanel.unrelatedKpiDateInfo": "ไม่สามารถนำ \"{dateDataSet}\" ไปใช้กับ kpi ได้อีกต่อไป เลือกมิติอื่นหรือแก้ไข kpi", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/tr-TR.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/tr-TR.json index b4f9a36cff3..b6ba9c92fc5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/tr-TR.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/tr-TR.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "Görselleştirme {attributeName} ile filtrelenemez. Onay kutusunun işaretini kaldırın.", "configurationPanel.kpiCantBeFilteredByAttribute": "KPI, {attributeName} tarafından filtrelenemez. Onay kutusunun işaretini kaldırın.", "configurationPanel.vizCantBeFilteredByDate": "Görselleştirme Tarihe göre filtrelenemez. Onay kutusunun işaretini kaldırın.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filtre bu görselleştirme için uygulanamaz.", "configurationPanel.kpiCantBeFilteredByDate": "KPI, Tarihe göre filtrelenemez. Onay kutusunun işaretini kaldırın.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" artık görselleştirmeye uygulanamaz. Farklı bir boyut seçin veya görselleştirmeyi düzenleyin.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" artık KPI'ya uygulanamaz. Farklı bir boyut seçin veya KPI'yı düzenleyin.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/uk-UA.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/uk-UA.json index 59fa15a0bbc..2b52eed4a70 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/uk-UA.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/uk-UA.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "Візуалізацію не можна фільтрувати за {attributeName}. Зніміть прапорець.", "configurationPanel.kpiCantBeFilteredByAttribute": "KPI не можна фільтрувати за {attributeName}. Зніміть прапорець.", "configurationPanel.vizCantBeFilteredByDate": "Візуалізацію не можна фільтрувати за датою. Зніміть прапорець.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Фільтр не можна застосувати до цієї візуалізації.", "configurationPanel.kpiCantBeFilteredByDate": "KPI не можна фільтрувати за датою. Зніміть прапорець.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" більше не можна застосувати до візуалізації. Виберіть інший вимір або відредагуйте візуалізацію.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" більше не можна застосувати до KPI. Виберіть інший вимір або відредагуйте KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/vi-VN.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/vi-VN.json index 995c18caf48..1fbdfe7b143 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/vi-VN.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/vi-VN.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "Trực quan hóa không thể được lọc theo {attributeName}. Bỏ chọn hộp kiểm.", "configurationPanel.kpiCantBeFilteredByAttribute": "KPI không thể được lọc theo {attributeName}. Bỏ chọn hộp kiểm.", "configurationPanel.vizCantBeFilteredByDate": "Trực quan hóa không thể được lọc theo Ngày. Bỏ chọn hộp kiểm.", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Bộ lọc không áp dụng được cho trực quan hóa này.", "configurationPanel.kpiCantBeFilteredByDate": "KPI không thể được lọc theo Ngày. Bỏ chọn hộp kiểm.", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" không còn có thể áp dụng cho trực quan hóa. Chọn một chiều khác hoặc chỉnh sửa trực quan hóa.", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" không thể áp dụng cho KPI nữa. Hãy chọn một chiều dữ liệu khác hoặc chỉnh sửa KPI.", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-HK.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-HK.json index e21204a1ff7..767028565dd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-HK.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-HK.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "無法通過 {attributeName}篩選可視化效果。 取消選中該複選框。", "configurationPanel.kpiCantBeFilteredByAttribute": "KPI唔可以透過 {attributeName}進行篩選。 取消選中該複選框。", "configurationPanel.vizCantBeFilteredByDate": "無法按日期篩選可視化效果。 取消選中該複選框。", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "篩選器不適用於此可視化。", "configurationPanel.kpiCantBeFilteredByDate": "KPI唔可以按日期篩選。 取消選中該複選框。", "configurationPanel.unrelatedVizDateInfo": "“{dateDataSet}”無法再應用於可視化效果。 選擇其他維度或編輯可視化效果。", "configurationPanel.unrelatedKpiDateInfo": "“{dateDataSet}”唔可以再應用於KPI。 選擇其他維度或編輯KPI。", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-Hans.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-Hans.json index 70497f62d84..40eb42fd038 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-Hans.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-Hans.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "可视化无法按 {attributeName} 筛选。请取消选中该复选框。", "configurationPanel.kpiCantBeFilteredByAttribute": "KPI 无法按 {attributeName} 筛选。请取消选中该复选框。", "configurationPanel.vizCantBeFilteredByDate": "可视化无法按日期筛选。请取消选中该复选框。", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "筛选器不适用于此可视化。", "configurationPanel.kpiCantBeFilteredByDate": "KPI 无法按日期筛选。请取消选中该复选框。", "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\"无法再应用于该可视化。请选择其他范围或编辑该可视化。", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\"无法再应用于该 KPI。请选择其他范围或编辑该 KPI。", diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-Hant.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-Hant.json index 88caebaaafc..50905821c61 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-Hant.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/zh-Hant.json @@ -443,6 +443,7 @@ "configurationPanel.vizCantBeFilteredByAttribute": "可視化不能依以下條件過濾{attributeName}。取消選取該複選框。", "configurationPanel.kpiCantBeFilteredByAttribute": "kpi 無法過濾 {attributeName}。取消選取該複選框。", "configurationPanel.vizCantBeFilteredByDate": "可視化無法按日期過濾。取消選取該複選框。", + "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "篩選不適用於此視覺化。", "configurationPanel.kpiCantBeFilteredByDate": "kpi 無法按日期過濾。取消選取該複選框。", "configurationPanel.unrelatedVizDateInfo": "」{dateDataSet} \" 無法再套用於視覺化。選擇不同的維度或編輯視覺化。", "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" 無法再套用於 kpi。選擇其他維度或編輯 kpi。", diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/MeasureValueFilterConfigurationItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/MeasureValueFilterConfigurationItem.tsx index e1bc9727834..513f8e754ea 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/MeasureValueFilterConfigurationItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/MeasureValueFilterConfigurationItem.tsx @@ -49,7 +49,8 @@ export function MeasureValueFilterConfigurationItem({ const isLoading = status === "loading"; const isIncompatible = !isCompatible; - const isDisabled = isIncompatible && !isApplied; + const isDisabled = isIncompatible; + const isChecked = isCompatible && isApplied; const classNames = cx( `s-${simplifyText(title)}`, @@ -71,7 +72,7 @@ export function MeasureValueFilterConfigurationItem({ className={classNames} uniqueKey={uniqueKey} title={title} - isApplied={isApplied} + isApplied={isChecked} isLoading={isLoading} disabled={isDisabled} onChange={handleIgnoreChanged} diff --git a/libs/sdk-ui-ext/package.json b/libs/sdk-ui-ext/package.json index 3ce2b3095e5..d48eac742d3 100644 --- a/libs/sdk-ui-ext/package.json +++ b/libs/sdk-ui-ext/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-ext", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData.UI SDK - Extensions", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/customTooltip/CustomTooltipSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/customTooltip/CustomTooltipSection.tsx index 32ae9f5dcce..36f038cc9a4 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/customTooltip/CustomTooltipSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/customTooltip/CustomTooltipSection.tsx @@ -16,7 +16,7 @@ import { ConfigSection } from "../ConfigSection.js"; import { DropdownControl } from "../DropdownControl.js"; const FORMATTING_OPTIONS_DOC_URL = - "https://www.gooddata.com/docs/cloud/create-visualizations/customizable-tooltips/"; + "https://www.gooddata.com/docs/cloud/create-visualizations/custom-tooltips/"; export interface ICustomTooltipSectionProps { controlsDisabled: boolean; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx index 9c535e25059..2ff826685fb 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx @@ -56,6 +56,14 @@ export interface IConfigurationPanelContentProps { pushData?(data: any): void; panelConfig?: PanelConfig; configurationPanelRenderers?: IConfigurationPanelRenderers; + /** + * Indicates whether the visualization's runtime can render the custom-tooltip + * section. Gates {@link ConfigurationPanelContent.renderCustomTooltipSection} + * alongside the `enableCustomTooltip` feature flag. Defaults to `true`; set + * to `false` from pluggables whose runtime can't render the section (e.g., + * legacy Mapbox geo pushpin). + */ + supportsCustomTooltip?: boolean; } export abstract class ConfigurationPanelContent< @@ -76,6 +84,7 @@ export abstract class ConfigurationPanelContent< permissions: undefined, axis: undefined, panelConfig: {}, + supportsCustomTooltip: true, }; protected supportedPropertiesList: string[] | undefined; @@ -253,9 +262,9 @@ export abstract class ConfigurationPanelContent< } protected renderCustomTooltipSection(): ReactNode { - const { pushData, properties, propertiesMeta, featureFlags } = this.props; + const { pushData, properties, propertiesMeta, featureFlags, supportsCustomTooltip } = this.props; - if (!featureFlags?.enableCustomTooltip) { + if (!featureFlags?.enableCustomTooltip || !supportsCustomTooltip) { return null; } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx index 8b1961d4c8e..7dfd6f4dcb5 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx @@ -107,6 +107,7 @@ export class GeoAreaConfigurationPanel extends ConfigurationPanelContent ); } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx index e2aeb918b0c..55cd3c8feee 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx @@ -192,6 +192,7 @@ export class GeoPushpinConfigurationPanel extends ConfigurationPanelContent , configPanelElement, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts index 23d76b1c017..085631efd64 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts @@ -362,6 +362,21 @@ describe("buildGeoVisualizationConfig", () => { expect(config.center).toEqual({ lat: 40, lng: -74 }); expect(config.zoom).toBe(3); }); + + it("propagates customTooltip from supportedControls into the rendered config", () => { + const customTooltip = { + enabled: true, + content: "**{label/region}** — Revenue: {metric/revenue}", + placement: "above" as const, + }; + const config = buildGeoVisualizationConfig({ + options, + supportedControls: { customTooltip }, + colorMapping: undefined, + environment: DASHBOARDS_ENVIRONMENT, + }); + expect(config.customTooltip).toEqual(customTooltip); + }); }); describe("buildAreaVisualizationConfig", () => { @@ -466,4 +481,19 @@ describe("buildAreaVisualizationConfig", () => { expect(config.basemap).toBe("satellite"); }); + + it("propagates customTooltip from supportedControls into the rendered config", () => { + const customTooltip = { + enabled: true, + content: "# {label/state}\n{metric/population}", + placement: "above" as const, + }; + const config = buildAreaVisualizationConfig({ + options, + supportedControls: { customTooltip }, + colorMapping: undefined, + environment: DASHBOARDS_ENVIRONMENT, + }); + expect(config.customTooltip).toEqual(customTooltip); + }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.ts index e5141279812..6cc7fd4850d 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.ts @@ -159,6 +159,7 @@ const supportedGeoConfigProperties = new Set([ "viewport", "points", "showLabels", + "customTooltip", ]); export function geoConfigFromInsight( diff --git a/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts b/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts index df97537984a..0019e4cb535 100644 --- a/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts +++ b/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts @@ -409,9 +409,10 @@ export const GEOPUSHPIN_SUPPORTED_PROPERTIES = [ * Legacy pushpin chart still relies on `tooltipText` and therefore keeps it in * {@link GEOPUSHPIN_SUPPORTED_PROPERTIES}. */ -export const GEOPUSHPIN_NEXT_SUPPORTED_PROPERTIES = GEOPUSHPIN_SUPPORTED_PROPERTIES.filter( - (p) => p !== "tooltipText", -); +export const GEOPUSHPIN_NEXT_SUPPORTED_PROPERTIES = [ + ...GEOPUSHPIN_SUPPORTED_PROPERTIES.filter((p) => p !== "tooltipText"), + ...CUSTOM_TOOLTIP_PROPERTIES, +]; export const GEOAREA_SUPPORTED_PROPERTIES = [ "legend", @@ -429,6 +430,7 @@ export const GEOAREA_SUPPORTED_PROPERTIES = [ "disableKeyDriveAnalysis", "disableKeyDriveAnalysisOn", "chartConfigOverride", + ...CUSTOM_TOOLTIP_PROPERTIES, ]; export const PIVOT_TABLE_SUPPORTED_PROPERTIES = [ diff --git a/libs/sdk-ui-filters/package.json b/libs/sdk-ui-filters/package.json index e6f7e89b45b..ea4fdbc48aa 100644 --- a/libs/sdk-ui-filters/package.json +++ b/libs/sdk-ui-filters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-filters", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData.UI SDK - Filter Components", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-gen-ai/package.json b/libs/sdk-ui-gen-ai/package.json index 27229fd4444..4c68350e034 100644 --- a/libs/sdk-ui-gen-ai/package.json +++ b/libs/sdk-ui-gen-ai/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-gen-ai", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData GenAI SDK", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-gen-ai/src/components/hooks/useEndpointCheck.ts b/libs/sdk-ui-gen-ai/src/components/hooks/useEndpointCheck.ts index e7b26de49eb..1b9f1547aa2 100644 --- a/libs/sdk-ui-gen-ai/src/components/hooks/useEndpointCheck.ts +++ b/libs/sdk-ui-gen-ai/src/components/hooks/useEndpointCheck.ts @@ -13,33 +13,20 @@ export function useEndpointCheck(settings: IUserWorkspaceSettings | undefined, c const promise = async () => { if (!canFullControl) { - if (settings?.enableLlmEndpointReplacement) { - const unsupportedProvider = hasUnsupportedActiveProvider( - settings?.activeLlmProvider, - settings?.enableAiAgenticConversations, - ); - return createInfo(0, unsupportedProvider, unsupportedProvider); - } else { - return createInfo(); - } + const unsupportedProvider = hasUnsupportedActiveProvider( + settings?.activeLlmProvider, + settings?.enableAiAgenticConversations, + ); + return createInfo(0, unsupportedProvider, unsupportedProvider); } try { - if (settings?.enableLlmEndpointReplacement) { - return getProviderInfo(backend, settings); - } else { - return getEndpointInfo(backend); - } + return getProviderInfo(backend, settings); } catch { return createInfo(); } }; - const { result, status } = useCancelablePromise({ promise }, [ - backend, - canFullControl, - tries, - settings?.enableLlmEndpointReplacement, - ]); + const { result, status } = useCancelablePromise({ promise }, [backend, canFullControl, tries, settings]); const restart = useCallback(() => { retry(); @@ -68,12 +55,6 @@ async function getProviderInfo(backend: IAnalyticalBackend, settings: IUserWorks return createInfo(providers.length, true, unsupportedProvider); } -async function getEndpointInfo(backend: IAnalyticalBackend) { - const org = await backend.organizations().getCurrentOrganization(); - const endpoints = await org.llmEndpoints().getEndpointsQuery().queryAll(); - return createInfo(endpoints.length, true, false); -} - function createInfo(count = 0, evaluated = false, hasUnsupportedOpenAiModel = false) { return { count, diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/utils.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/utils.ts index 5dbd66c7f24..080f9d58b71 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/utils.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/utils.ts @@ -1,11 +1,14 @@ // (C) 2024-2026 GoodData Corporation +import { isUnexpectedResponseError } from "@gooddata/sdk-backend-spi"; + import { type IChatConversationLocalItem, type Message, makeUserItem } from "../../model.js"; export function extractError(e: unknown) { - // Normal error if (e instanceof Error) { - return `${e.name}: ${e.message}`; + // Prefer error detail from response body over axios's generic message + const message = extractErrorDetail(e) ?? e.message; + return `${e.name}: ${message}`; } if (typeof e === "object" && e !== null && "detail" in e) { @@ -15,6 +18,15 @@ export function extractError(e: unknown) { return String(e); } +function extractErrorDetail(e: Error): string | undefined { + if (!isUnexpectedResponseError(e)) return undefined; + const body = e.responseBody; + if (body && typeof body === "object" && "detail" in body && typeof body.detail === "string") { + return body.detail; + } + return undefined; +} + export function convertMessageToChatConversation(message: Message): IChatConversationLocalItem { //NOTE: Try to convert message to local item to ensure backward compatibility with // previous action diff --git a/libs/sdk-ui-geo/package.json b/libs/sdk-ui-geo/package.json index 5dae3754179..ff6c2094ce1 100644 --- a/libs/sdk-ui-geo/package.json +++ b/libs/sdk-ui-geo/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-geo", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData.UI SDK - Geo Charts", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-geo/src/next/layers/area/adapter.ts b/libs/sdk-ui-geo/src/next/layers/area/adapter.ts index 32e4cf37a30..35a3b7663d4 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/adapter.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/adapter.ts @@ -20,6 +20,7 @@ import { getHeaderPredicateFingerprint } from "../../utils/predicateFingerprint. import { computeLegend } from "../common/computeLegend.js"; import { getGeoChartDimensions } from "../common/dimensions.js"; import { canSetGeoJsonSourceData, trySetGeoJsonSourceData } from "../common/layerOps.js"; +import { buildTooltipReferenceMaps } from "../common/tooltipReferenceMaps.js"; import { createLayerInsight, sanitizeDeduplicatedGlobalFilters } from "../execution/layerInsightFactory.js"; import { prepareExecutionWithTooltipText } from "../execution/prepareTooltipExecution.js"; import { resolveAttributeDisplayForms } from "../execution/resolveAttributeDisplayForms.js"; @@ -195,7 +196,9 @@ export const areaAdapter: IGeoLayerAdapter = { const bbox = deriveCollectionBoundingBox(boundaryFeatures); const initialViewport = bboxToViewport(bbox); - return { source, legend, geoData, colorStrategy, initialViewport }; + const tooltipReferenceMaps = buildTooltipReferenceMaps(dataView); + + return { source, legend, geoData, colorStrategy, initialViewport, tooltipReferenceMaps }; }, syncToMap(layer, map, output, dataView, context): void { @@ -269,7 +272,7 @@ export const areaAdapter: IGeoLayerAdapter = { removeAreaLayer(map, layer.id); }, - getTooltipConfig(layer, _output, context, { tooltip, drillablePredicates }) { + getTooltipConfig(layer, output, context, { tooltip, drillablePredicates }) { if (!tooltip || !context.intl) { return undefined; } @@ -278,7 +281,14 @@ export const areaAdapter: IGeoLayerAdapter = { const ids = getAreaLayerIds(layer.id); const layerIds = [ids.fillLayerId, ids.outlineLayerId]; - return createAreaTooltipConfig(tooltip, config, drillablePredicates, context.intl, layerIds); + return createAreaTooltipConfig( + tooltip, + config, + drillablePredicates, + context.intl, + layerIds, + output.tooltipReferenceMaps, + ); }, getMapLibreLayerIds(layer) { diff --git a/libs/sdk-ui-geo/src/next/layers/area/data/transformation.ts b/libs/sdk-ui-geo/src/next/layers/area/data/transformation.ts index bd833efc619..0b94ea002ea 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/data/transformation.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/data/transformation.ts @@ -276,11 +276,13 @@ function processColorBucket(ctx: IAreaBucketProcessingContext): IGeoMeasureItem return undefined; } + const measureDescriptors = dv.meta().measureDescriptors(); return { index: colorBucket.index, name: colorBucket.name, data: getMeasureData(dv, colorIndex), format: getFormatFromExecutionResponse(dv, colorIndex), + localIdentifier: measureDescriptors[colorIndex]?.measureHeaderItem.localIdentifier, }; } diff --git a/libs/sdk-ui-geo/src/next/layers/area/source.ts b/libs/sdk-ui-geo/src/next/layers/area/source.ts index 9375cebb446..f2890b476ec 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/source.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/source.ts @@ -123,6 +123,7 @@ function buildAreaProperties(args: { colorTitle?: string; colorValue?: number; colorFormat?: string; + colorLocalId?: string; areaColorFill: string; segmentTitle?: string; segmentValue?: string; @@ -142,6 +143,7 @@ function buildAreaProperties(args: { colorTitle, colorValue, colorFormat, + colorLocalId, areaColorFill, segmentTitle, segmentValue, @@ -164,6 +166,7 @@ function buildAreaProperties(args: { title: colorTitle ?? "", value: colorValue, format: colorFormat ?? "", + localId: colorLocalId, }, }; @@ -433,6 +436,7 @@ function createAreaFeatures({ colorTitle, colorValue: areaData.colorValue, colorFormat, + colorLocalId: color?.localIdentifier, areaColorFill: areaData.areaColorFill, segmentTitle: areaData.segmentTitle, segmentValue: areaData.segmentValue, diff --git a/libs/sdk-ui-geo/src/next/layers/area/tooltip/tooltipManagement.ts b/libs/sdk-ui-geo/src/next/layers/area/tooltip/tooltipManagement.ts index 6e7c9fbb088..63c19579906 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/tooltip/tooltipManagement.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/tooltip/tooltipManagement.ts @@ -4,8 +4,10 @@ import { type IntlShape } from "react-intl"; import { type ISeparators } from "@gooddata/sdk-model"; import { type IHeaderPredicate } from "@gooddata/sdk-ui"; +import { type ICustomTooltipConfig } from "@gooddata/sdk-ui-vis-commons"; import { type IGeoAreaChartConfig } from "../../../types/config/areaChart.js"; +import { buildCustomTooltipPieces, composeTooltipBody } from "../../common/customTooltipSection.js"; import type { IPopupFacade } from "../../common/mapFacade.js"; import { type TooltipFormatConfig, @@ -16,7 +18,7 @@ import { getTooltipProperties, parseTooltipPayload, } from "../../common/tooltipUtils.js"; -import type { IGeoTooltipConfig } from "../../registry/adapterTypes.js"; +import type { IGeoTooltipConfig, ITooltipReferenceMaps } from "../../registry/adapterTypes.js"; function escapeHtml(str: string): string { return str @@ -33,26 +35,44 @@ const tooltipFormatConfig: TooltipFormatConfig = { }; function buildAreaTooltipHtml( + rawProperties: GeoJSON.GeoJsonProperties, locationName: TooltipPayload | undefined, color: TooltipPayload | undefined, segment: TooltipPayload | undefined, strokeColor: string, - separators?: ISeparators, + separators: ISeparators | undefined, + customConfig: ICustomTooltipConfig | undefined, + referenceMaps: ITooltipReferenceMaps | undefined, + intl: IntlShape, ): string | null { const attributeItems = dedupeAttributePayloadsByAttrId([locationName, segment]) .map((payload) => formatAttributeHtml(payload, tooltipFormatConfig)) .filter((item): item is string => item !== null); const measureItem = formatMeasureHtml(color, separators, tooltipFormatConfig); const items = [...attributeItems, ...(measureItem ? [measureItem] : [])]; + const defaultItemsHtml = items.join(""); - if (items.length === 0) { + const fallbackText = `(${intl.formatMessage({ id: "richText.no_data" })})`; + const customPieces = buildCustomTooltipPieces( + rawProperties, + customConfig, + referenceMaps, + separators, + fallbackText, + ); + + // Suppress the tooltip entirely only when there's nothing to show in + // either the default or the custom section. + if (items.length === 0 && !customPieces.sectionHtml) { return null; } + const body = composeTooltipBody(defaultItemsHtml, customPieces, customConfig?.placement); + return `
-
${items.join("")}
+
${body}
`; } @@ -63,8 +83,10 @@ function buildAreaTooltipHtml( * @param tooltip - Popup facade for displaying tooltips * @param config - Chart configuration * @param _drillableItems - Drillable items predicates (unused for area) - * @param _intl - Internationalization instance (unused for area) + * @param intl - Internationalization instance (used for the custom-tooltip + * `(No data)` fallback string) * @param layerIds - MapLibre layer IDs to monitor + * @param referenceMaps - Per-layer maps used by the custom-tooltip resolver * @returns Tooltip configuration for unified handling * * @internal @@ -73,8 +95,9 @@ export function createAreaTooltipConfig( tooltip: IPopupFacade, config: IGeoAreaChartConfig, _drillableItems: IHeaderPredicate[] | undefined, - _intl: IntlShape, + intl: IntlShape, layerIds: string[], + referenceMaps?: ITooltipReferenceMaps, ): IGeoTooltipConfig { const { separators } = config; @@ -93,7 +116,17 @@ export function createAreaTooltipConfig( const fallbackStroke = properties["color_fill"]; const tooltipStroke = color?.fill ?? (typeof fallbackStroke === "string" ? fallbackStroke : "#20B2E2"); - const tooltipHtml = buildAreaTooltipHtml(locationName, color, segment, tooltipStroke, separators); + const tooltipHtml = buildAreaTooltipHtml( + feature.properties, + locationName, + color, + segment, + tooltipStroke, + separators, + config.customTooltip, + referenceMaps, + intl, + ); if (tooltipHtml) { tooltip diff --git a/libs/sdk-ui-geo/src/next/layers/common/customTooltipSection.ts b/libs/sdk-ui-geo/src/next/layers/common/customTooltipSection.ts new file mode 100644 index 00000000000..96887386531 --- /dev/null +++ b/libs/sdk-ui-geo/src/next/layers/common/customTooltipSection.ts @@ -0,0 +1,85 @@ +// (C) 2026 GoodData Corporation + +import { type ISeparators } from "@gooddata/sdk-model"; +import { type ICustomTooltipConfig, markdownToHtml, resolveReferences } from "@gooddata/sdk-ui-vis-commons"; + +import { type ITooltipReferenceMaps } from "../registry/adapterTypes.js"; + +import { resolveReferencesFromGeoFeature } from "./resolveReferencesFromGeoFeature.js"; + +interface ICustomTooltipPieces { + /** Wrapped `
` or "" if disabled/empty. */ + sectionHtml: string; + /** Wrapped `
` or "" if no separator should render. */ + separatorHtml: string; +} + +/** + * Build the custom-tooltip section + separator HTML pieces for a hovered feature. + * + * The caller decides how to splice the pieces into the surrounding tooltip body + * based on `customConfig.placement` (above / below / replace). + * + * @internal + */ +export function buildCustomTooltipPieces( + properties: GeoJSON.GeoJsonProperties, + customConfig: ICustomTooltipConfig | undefined, + referenceMaps: ITooltipReferenceMaps | undefined, + separators: ISeparators | undefined, + fallbackText: string, +): ICustomTooltipPieces { + if (!customConfig?.enabled || !customConfig.content) { + return { sectionHtml: "", separatorHtml: "" }; + } + + const values = resolveReferencesFromGeoFeature(properties, referenceMaps, separators); + const resolvedContent = resolveReferences(customConfig.content, values, fallbackText); + const html = markdownToHtml(resolvedContent); + const sectionHtml = `
${html}
`; + + // Replace mode shows only the custom section, so no separator is needed. + const separatorHtml = + customConfig.placement === "replace" ? "" : `
`; + + return { sectionHtml, separatorHtml }; +} + +/** + * Splice custom-tooltip pieces into the default tooltip body. + * + * - `above` (default): custom section above the default items. + * - `below`: custom section below the default items. + * - `replace`: custom section replaces the default items entirely (interaction + * message stays since it's a behavioral hint, not data content). + * + * `defaultItemsHtml` is the rendered default items (locationName / size / + * color / segment / measures) — not the interaction message. The caller + * appends `interactionHtml` after this function returns. + * + * @internal + */ +export function composeTooltipBody( + defaultItemsHtml: string, + pieces: ICustomTooltipPieces, + placement: ICustomTooltipConfig["placement"] | undefined, +): string { + if (!pieces.sectionHtml) { + return defaultItemsHtml; + } + + if (placement === "replace") { + return pieces.sectionHtml; + } + + // Suppress the separator when there's no default body to separate from — + // otherwise the user sees an orphan rule line above/below the custom section. + const separatorHtml = defaultItemsHtml ? pieces.separatorHtml : ""; + + if (placement === "below") { + return `${defaultItemsHtml}${separatorHtml}${pieces.sectionHtml}`; + } + + // "above" — also the default when placement is undefined. + return `${pieces.sectionHtml}${separatorHtml}${defaultItemsHtml}`; +} diff --git a/libs/sdk-ui-geo/src/next/layers/common/resolveReferencesFromGeoFeature.ts b/libs/sdk-ui-geo/src/next/layers/common/resolveReferencesFromGeoFeature.ts new file mode 100644 index 00000000000..e1df34fd4d1 --- /dev/null +++ b/libs/sdk-ui-geo/src/next/layers/common/resolveReferencesFromGeoFeature.ts @@ -0,0 +1,113 @@ +// (C) 2026 GoodData Corporation + +import { ClientFormatterFacade } from "@gooddata/number-formatter"; +import { type ISeparators } from "@gooddata/sdk-model"; +import { type IResolvedReferenceValues } from "@gooddata/sdk-ui-vis-commons"; + +import { type ITooltipReferenceMaps } from "../registry/adapterTypes.js"; + +import { type TooltipPayload, getTooltipProperties, parseTooltipPayload } from "./tooltipUtils.js"; + +/** + * Builds the resolver lookup table for a hovered GeoJSON feature. + * + * Walks the standard tooltip payload slots in default-tooltip render order + * (`locationName → size → color → measures[] → segment → tooltipText`) and + * registers values keyed by `metric/` and `label/`. The first slot + * that contributes a key wins — this matches the order users see in the + * default tooltip, so a `{metric/foo}` reference in markdown resolves to the + * same value the user can already see above it. + * + * Attribute payloads register under BOTH the display-form id (the `attrId` + * stored on the payload) and, when `attributes[displayFormId]` is known, the + * parent attribute id — mirroring Highcharts' dual-key behavior. + * + * @internal + */ +export function resolveReferencesFromGeoFeature( + properties: GeoJSON.GeoJsonProperties, + referenceMaps: ITooltipReferenceMaps | undefined, + separators: ISeparators | undefined, +): IResolvedReferenceValues { + const values: IResolvedReferenceValues = {}; + + if (!properties) { + return values; + } + + const props = getTooltipProperties(properties); + const measureLdmByLocalId = referenceMaps?.measures ?? {}; + const attributeIdByDisplayFormId = referenceMaps?.attributes ?? {}; + + const registerAttribute = (payload: TooltipPayload | undefined) => { + if (!payload?.attrId || payload.value === undefined) { + return; + } + const text = String(payload.value); + const displayFormKey = `label/${payload.attrId}`; + if (values[displayFormKey] === undefined) { + values[displayFormKey] = text; + } + // When `attrId` and the parent attribute id are equal, `attributeKey` + // collapses onto `displayFormKey` and the second write is a no-op + // under first-wins — no self-equality check needed. + const attributeId = attributeIdByDisplayFormId[payload.attrId]; + if (attributeId) { + const attributeKey = `label/${attributeId}`; + if (values[attributeKey] === undefined) { + values[attributeKey] = text; + } + } + }; + + const registerMeasure = (payload: TooltipPayload | undefined) => { + if (!payload?.localId) { + return; + } + const ldmId = measureLdmByLocalId[payload.localId]; + if (!ldmId) { + return; + } + const key = `metric/${ldmId}`; + if (values[key] !== undefined) { + return; // first-wins precedence + } + const rawValue = payload.value; + if (typeof rawValue !== "number" || !Number.isFinite(rawValue)) { + return; + } + // Use the raw formatted value without HTML escaping. The resolved + // content goes through `markdownToHtml`, which escapes once at render + // time — pre-escaping here would produce double-escaped output (`&` → + // `&amp;`). Matches Highcharts' `resolveReferencesFromPoint`. + if (payload.format) { + const { formattedValue } = ClientFormatterFacade.formatValue( + rawValue, + payload.format, + separators, + ); + values[key] = formattedValue; + } else { + values[key] = String(rawValue); + } + }; + + // Walk in default-tooltip render order so `{metric/foo}` resolves to the + // value users see above the custom section when the same metric appears + // in multiple slots (rare; values are typically identical across slots). + registerAttribute(parseTooltipPayload(props["locationName"])); + registerMeasure(parseTooltipPayload(props["size"])); + registerMeasure(parseTooltipPayload(props["color"])); + + const rawMeasures = props["measures"]; + if (Array.isArray(rawMeasures)) { + for (const item of rawMeasures) { + registerMeasure(parseTooltipPayload(item)); + } + } + + registerAttribute(parseTooltipPayload(props["segment"])); + registerAttribute(parseTooltipPayload(props["tooltipText"])); + + return values; +} diff --git a/libs/sdk-ui-geo/src/next/layers/common/tests/customTooltipSection.test.ts b/libs/sdk-ui-geo/src/next/layers/common/tests/customTooltipSection.test.ts new file mode 100644 index 00000000000..aaefd860dcb --- /dev/null +++ b/libs/sdk-ui-geo/src/next/layers/common/tests/customTooltipSection.test.ts @@ -0,0 +1,113 @@ +// (C) 2026 GoodData Corporation + +import { describe, expect, it } from "vitest"; + +import { type ICustomTooltipConfig } from "@gooddata/sdk-ui-vis-commons"; + +import { type ITooltipReferenceMaps } from "../../registry/adapterTypes.js"; +import { buildCustomTooltipPieces, composeTooltipBody } from "../customTooltipSection.js"; + +const FALLBACK = "(No data)"; + +const enabledAbove: ICustomTooltipConfig = { + enabled: true, + content: "**hello**", + placement: "above", +}; + +const enabledBelow: ICustomTooltipConfig = { ...enabledAbove, placement: "below" }; +const enabledReplace: ICustomTooltipConfig = { ...enabledAbove, placement: "replace" }; + +const emptyMaps: ITooltipReferenceMaps = { measures: {}, attributes: {} }; + +describe("buildCustomTooltipPieces", () => { + it("returns empty pieces when config is undefined", () => { + expect(buildCustomTooltipPieces({}, undefined, emptyMaps, undefined, FALLBACK)).toEqual({ + sectionHtml: "", + separatorHtml: "", + }); + }); + + it("returns empty pieces when config is disabled", () => { + const cfg: ICustomTooltipConfig = { enabled: false, content: "x" }; + expect(buildCustomTooltipPieces({}, cfg, emptyMaps, undefined, FALLBACK)).toEqual({ + sectionHtml: "", + separatorHtml: "", + }); + }); + + it("returns empty pieces when content is missing", () => { + const cfg: ICustomTooltipConfig = { enabled: true }; + expect(buildCustomTooltipPieces({}, cfg, emptyMaps, undefined, FALLBACK)).toEqual({ + sectionHtml: "", + separatorHtml: "", + }); + }); + + it("wraps rendered HTML in the custom-section div for above placement", () => { + const result = buildCustomTooltipPieces({}, enabledAbove, emptyMaps, undefined, FALLBACK); + expect(result.sectionHtml).toContain('
'); + expect(result.sectionHtml).toContain("hello"); + expect(result.separatorHtml).toBe('
'); + }); + + it("emits a separator for below placement", () => { + const result = buildCustomTooltipPieces({}, enabledBelow, emptyMaps, undefined, FALLBACK); + expect(result.separatorHtml).toBe('
'); + }); + + it("suppresses the separator for replace placement", () => { + const result = buildCustomTooltipPieces({}, enabledReplace, emptyMaps, undefined, FALLBACK); + expect(result.sectionHtml).not.toBe(""); + expect(result.separatorHtml).toBe(""); + }); + + it("substitutes references that resolve, and uses fallbackText for unknown refs", () => { + const cfg: ICustomTooltipConfig = { + enabled: true, + content: "value: {metric/sales}, missing: {metric/missing}", + }; + const props: GeoJSON.GeoJsonProperties = { + color: JSON.stringify({ title: "Sales", value: 42, localId: "m1" }), + }; + const maps: ITooltipReferenceMaps = { + measures: { m1: "sales" }, + attributes: {}, + }; + const result = buildCustomTooltipPieces(props, cfg, maps, undefined, FALLBACK); + expect(result.sectionHtml).toContain("value: 42"); + expect(result.sectionHtml).toContain(`missing: ${FALLBACK}`); + }); +}); + +describe("composeTooltipBody", () => { + const pieces = { + sectionHtml: "
", + separatorHtml: "", + }; + const empty = { sectionHtml: "", separatorHtml: "" }; + + it("returns defaultItemsHtml when no custom section is present", () => { + expect(composeTooltipBody("", empty, "above")).toBe(""); + }); + + it("places the custom section above by default when placement is undefined", () => { + expect(composeTooltipBody("", pieces, undefined)).toBe("
"); + }); + + it("places the custom section below for placement=below", () => { + expect(composeTooltipBody("", pieces, "below")).toBe("
"); + }); + + it("renders only the custom section for placement=replace", () => { + expect(composeTooltipBody("", pieces, "replace")).toBe("
"); + }); + + it("suppresses the separator (above) when defaultItemsHtml is empty", () => { + expect(composeTooltipBody("", pieces, "above")).toBe("
"); + }); + + it("suppresses the separator (below) when defaultItemsHtml is empty", () => { + expect(composeTooltipBody("", pieces, "below")).toBe("
"); + }); +}); diff --git a/libs/sdk-ui-geo/src/next/layers/common/tests/resolveReferencesFromGeoFeature.test.ts b/libs/sdk-ui-geo/src/next/layers/common/tests/resolveReferencesFromGeoFeature.test.ts new file mode 100644 index 00000000000..10952b28fd5 --- /dev/null +++ b/libs/sdk-ui-geo/src/next/layers/common/tests/resolveReferencesFromGeoFeature.test.ts @@ -0,0 +1,127 @@ +// (C) 2026 GoodData Corporation + +import { describe, expect, it } from "vitest"; + +import { type ITooltipReferenceMaps } from "../../registry/adapterTypes.js"; +import { resolveReferencesFromGeoFeature } from "../resolveReferencesFromGeoFeature.js"; + +const measure = (title: string, value: number, localId: string) => JSON.stringify({ title, value, localId }); + +const attribute = (title: string, value: string, attrId: string) => JSON.stringify({ title, value, attrId }); + +describe("resolveReferencesFromGeoFeature", () => { + it("returns an empty map when properties are missing", () => { + expect(resolveReferencesFromGeoFeature(null, undefined, undefined)).toEqual({}); + }); + + it("registers a measure under its LDM identifier when localId maps to one", () => { + const props: GeoJSON.GeoJsonProperties = { + color: measure("Sales", 100, "m_color"), + }; + const maps: ITooltipReferenceMaps = { + measures: { m_color: "ldm.sales" }, + attributes: {}, + }; + expect(resolveReferencesFromGeoFeature(props, maps, undefined)).toEqual({ + "metric/ldm.sales": "100", + }); + }); + + it("skips measures whose localId has no LDM mapping", () => { + const props: GeoJSON.GeoJsonProperties = { + color: measure("Sales", 100, "m_color"), + }; + const maps: ITooltipReferenceMaps = { measures: {}, attributes: {} }; + expect(resolveReferencesFromGeoFeature(props, maps, undefined)).toEqual({}); + }); + + it("skips measures with non-finite values", () => { + const props: GeoJSON.GeoJsonProperties = { + color: JSON.stringify({ title: "Sales", value: Number.NaN, localId: "m" }), + size: JSON.stringify({ title: "Size", value: "not a number", localId: "s" }), + }; + const maps: ITooltipReferenceMaps = { + measures: { m: "ldm.sales", s: "ldm.size" }, + attributes: {}, + }; + expect(resolveReferencesFromGeoFeature(props, maps, undefined)).toEqual({}); + }); + + it("first-wins precedence: size populates the metric key before color when both reference the same LDM id", () => { + const props: GeoJSON.GeoJsonProperties = { + size: measure("Size", 1, "m_size"), + color: measure("Color", 2, "m_color"), + }; + const maps: ITooltipReferenceMaps = { + // both map to the same ldm id + measures: { m_size: "ldm.shared", m_color: "ldm.shared" }, + attributes: {}, + }; + const values = resolveReferencesFromGeoFeature(props, maps, undefined); + expect(values["metric/ldm.shared"]).toBe("1"); + }); + + it("registers attribute payloads under both display-form and parent attribute keys", () => { + const props: GeoJSON.GeoJsonProperties = { + locationName: attribute("Country", "Czechia", "df.country"), + }; + const maps: ITooltipReferenceMaps = { + measures: {}, + attributes: { "df.country": "attr.country" }, + }; + expect(resolveReferencesFromGeoFeature(props, maps, undefined)).toEqual({ + "label/df.country": "Czechia", + "label/attr.country": "Czechia", + }); + }); + + it("registers only the display-form key when no parent attribute mapping exists", () => { + const props: GeoJSON.GeoJsonProperties = { + segment: attribute("Segment", "EU", "df.segment"), + }; + const maps: ITooltipReferenceMaps = { measures: {}, attributes: {} }; + expect(resolveReferencesFromGeoFeature(props, maps, undefined)).toEqual({ + "label/df.segment": "EU", + }); + }); + + it("walks the tooltipText slot and registers under both display-form and parent attribute keys", () => { + const props: GeoJSON.GeoJsonProperties = { + tooltipText: attribute("Region", "Bohemia", "df.region"), + }; + const maps: ITooltipReferenceMaps = { + measures: {}, + attributes: { "df.region": "attr.region" }, + }; + expect(resolveReferencesFromGeoFeature(props, maps, undefined)).toEqual({ + "label/df.region": "Bohemia", + "label/attr.region": "Bohemia", + }); + }); + + it("walks measures[] entries in order with first-wins precedence", () => { + const props: GeoJSON.GeoJsonProperties = { + measures: [measure("First", 10, "a"), measure("Second", 20, "b")], + }; + const maps: ITooltipReferenceMaps = { + measures: { a: "ldm.x", b: "ldm.y" }, + attributes: {}, + }; + expect(resolveReferencesFromGeoFeature(props, maps, undefined)).toEqual({ + "metric/ldm.x": "10", + "metric/ldm.y": "20", + }); + }); + + it("treats undefined referenceMaps as empty (no metric/label keys registered)", () => { + const props: GeoJSON.GeoJsonProperties = { + color: measure("Sales", 100, "m_color"), + locationName: attribute("Country", "CZ", "df.country"), + }; + // attribute display-form key is still registered (no parent lookup needed) + // but no metric key — measures table is empty. + expect(resolveReferencesFromGeoFeature(props, undefined, undefined)).toEqual({ + "label/df.country": "CZ", + }); + }); +}); diff --git a/libs/sdk-ui-geo/src/next/layers/common/tests/tooltipReferenceMaps.test.ts b/libs/sdk-ui-geo/src/next/layers/common/tests/tooltipReferenceMaps.test.ts new file mode 100644 index 00000000000..68b2e7057c5 --- /dev/null +++ b/libs/sdk-ui-geo/src/next/layers/common/tests/tooltipReferenceMaps.test.ts @@ -0,0 +1,97 @@ +// (C) 2026 GoodData Corporation + +import { describe, expect, it } from "vitest"; + +import { + type IAttributeDescriptor, + type IMeasure, + idRef, + newArithmeticMeasure, + newMeasure, + newPopMeasure, +} from "@gooddata/sdk-model"; +import { type DataViewFacade } from "@gooddata/sdk-ui"; + +import { buildTooltipReferenceMaps } from "../tooltipReferenceMaps.js"; + +function dataViewWith(measures: IMeasure[], descriptors: IAttributeDescriptor[]): DataViewFacade { + return { + definition: { measures }, + meta: () => ({ + attributeDescriptors: () => descriptors, + }), + } as unknown as DataViewFacade; +} + +const attributeDescriptor = ( + displayFormId: string, + attributeId: string | undefined, + overrides: Partial = {}, +): IAttributeDescriptor => + ({ + attributeHeader: { + uri: `/gdc/md/${displayFormId}`, + identifier: displayFormId, + localIdentifier: "loc", + ref: idRef(displayFormId, "displayForm"), + name: "Attr", + primaryLabel: idRef(displayFormId, "displayForm"), + formOf: attributeId + ? { + ref: idRef(attributeId, "attribute"), + uri: `/gdc/md/${attributeId}`, + identifier: attributeId, + name: "Attr", + } + : undefined, + ...overrides, + }, + }) as unknown as IAttributeDescriptor; + +describe("buildTooltipReferenceMaps", () => { + it("maps simple measures by localIdentifier → LDM identifier", () => { + const m = newMeasure("ldm.sales", (b) => b.localId("m_sales")); + const maps = buildTooltipReferenceMaps(dataViewWith([m], [])); + expect(maps.measures).toEqual({ m_sales: "ldm.sales" }); + }); + + it("resolves derived (PoP) measures to the master simple measure's LDM id", () => { + const master = newMeasure("ldm.sales", (b) => b.localId("m_master")); + const pop = newPopMeasure("m_master", "attr.year", (b) => b.localId("m_pop")); + const maps = buildTooltipReferenceMaps(dataViewWith([master, pop], [])); + expect(maps.measures).toEqual({ + m_master: "ldm.sales", + m_pop: "ldm.sales", + }); + }); + + it("skips arithmetic measures (no LDM identifier)", () => { + const a = newMeasure("ldm.a", (b) => b.localId("a")); + const b = newMeasure("ldm.b", (b) => b.localId("b")); + const arith = newArithmeticMeasure(["a", "b"], "sum", (b) => b.localId("arith")); + const maps = buildTooltipReferenceMaps(dataViewWith([a, b, arith], [])); + expect(maps.measures).toEqual({ a: "ldm.a", b: "ldm.b" }); + expect(maps.measures).not.toHaveProperty("arith"); + }); + + it("maps display-form identifier → parent attribute identifier", () => { + const desc = attributeDescriptor("df.country", "attr.country"); + const maps = buildTooltipReferenceMaps(dataViewWith([], [desc])); + expect(maps.attributes).toEqual({ "df.country": "attr.country" }); + }); + + it("falls back to URI when the display-form has no identifier", () => { + const desc = attributeDescriptor("df.country", "attr.country", { + identifier: undefined, + uri: "/gdc/md/df.country", + }); + const maps = buildTooltipReferenceMaps(dataViewWith([], [desc])); + expect(maps.attributes).toEqual({ "/gdc/md/df.country": "attr.country" }); + }); + + it("skips attributes without a parent attribute identifier", () => { + const desc = attributeDescriptor("df.country", undefined); + const maps = buildTooltipReferenceMaps(dataViewWith([], [desc])); + expect(maps.attributes).toEqual({}); + }); +}); diff --git a/libs/sdk-ui-geo/src/next/layers/common/tooltipReferenceMaps.ts b/libs/sdk-ui-geo/src/next/layers/common/tooltipReferenceMaps.ts new file mode 100644 index 00000000000..4e2659e98d2 --- /dev/null +++ b/libs/sdk-ui-geo/src/next/layers/common/tooltipReferenceMaps.ts @@ -0,0 +1,46 @@ +// (C) 2026 GoodData Corporation + +import { measureLocalId } from "@gooddata/sdk-model"; +import { type DataViewFacade } from "@gooddata/sdk-ui"; +import { resolveMeasureLdmIdentifier } from "@gooddata/sdk-ui-vis-commons"; + +import { type ITooltipReferenceMaps } from "../registry/adapterTypes.js"; + +/** + * Builds the per-layer reference maps the custom-tooltip resolver needs. + * + * - `measures`: `localIdentifier` → LDM measure id (skipping measures whose + * identifier ref can't be resolved, e.g. arithmetic measures). + * - `attributes`: display-form id → attribute id, sourced from each attribute + * descriptor's `identifier` (the display-form id surfaced on tooltip + * payloads as `attrId`) paired with `formOf.identifier` (the parent + * attribute id). Entries where both ids are equal are still emitted so + * callers can do a single lookup without a self-equality check. + * + * @internal + */ +export function buildTooltipReferenceMaps(dataView: DataViewFacade): ITooltipReferenceMaps { + const definition = dataView.definition; + + const measures: Record = {}; + for (const measure of definition.measures) { + const ldmId = resolveMeasureLdmIdentifier(measure, definition.measures); + if (ldmId) { + measures[measureLocalId(measure)] = ldmId; + } + } + + const attributes: Record = {}; + for (const descriptor of dataView.meta().attributeDescriptors()) { + const header = descriptor.attributeHeader; + // `identifier` is the display-form id (URI-typed display forms fall + // back to `uri` since `identifier` is undefined for them). + const displayFormId = header.identifier ?? header.uri; + const attributeId = header.formOf?.identifier; + if (displayFormId && attributeId) { + attributes[displayFormId] = attributeId; + } + } + + return { measures, attributes }; +} diff --git a/libs/sdk-ui-geo/src/next/layers/common/tooltipUtils.ts b/libs/sdk-ui-geo/src/next/layers/common/tooltipUtils.ts index a1090a11e48..34411cc9c88 100644 --- a/libs/sdk-ui-geo/src/next/layers/common/tooltipUtils.ts +++ b/libs/sdk-ui-geo/src/next/layers/common/tooltipUtils.ts @@ -11,6 +11,14 @@ export type TooltipPayload = { format?: string; attrId?: string; fill?: string; + /** + * Bucket `localIdentifier` of the underlying measure. By convention only + * set by measure payload writers (size, color, items in `measures[]`); + * the parser doesn't constrain other slots. Used by the custom-tooltip + * resolver as the lookup key into `ITooltipReferenceMaps.measures` to + * find the LDM identifier referenced as `{metric/}`. + */ + localId?: string; }; function isPayloadRecord(value: unknown): value is Record { @@ -50,6 +58,7 @@ export function parseTooltipPayload(item: JsonValue): TooltipPayload | undefined const format = typeof parsed["format"] === "string" ? parsed["format"] : undefined; const attrId = typeof parsed["attrId"] === "string" ? parsed["attrId"] : undefined; const fill = typeof parsed["fill"] === "string" ? parsed["fill"] : undefined; + const localId = typeof parsed["localId"] === "string" ? parsed["localId"] : undefined; return { title, @@ -57,6 +66,7 @@ export function parseTooltipPayload(item: JsonValue): TooltipPayload | undefined format, attrId, fill, + localId, }; } diff --git a/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts b/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts index dcb5145f2bf..036253dc8c6 100644 --- a/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts +++ b/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts @@ -21,6 +21,7 @@ import { getHeaderPredicateFingerprint } from "../../utils/predicateFingerprint. import { computeLegend } from "../common/computeLegend.js"; import { getGeoChartDimensions } from "../common/dimensions.js"; import { canSetGeoJsonSourceData, trySetGeoJsonSourceData } from "../common/layerOps.js"; +import { buildTooltipReferenceMaps } from "../common/tooltipReferenceMaps.js"; import { createLayerInsight, sanitizeDeduplicatedGlobalFilters } from "../execution/layerInsightFactory.js"; import { prepareExecutionWithGeoIcon } from "../execution/prepareGeoIconExecution.js"; import { prepareExecutionWithTooltipText } from "../execution/prepareTooltipExecution.js"; @@ -302,7 +303,16 @@ export const pushpinAdapter: IGeoLayerAdapter; + measures: Array<{ title: string; format: string; data: number[]; localId?: string }>; geoIconData: string[]; pushpinColors: IPushpinColor[]; geoPointsConfig: IGeoChartPointsConfig; @@ -99,6 +101,8 @@ function buildPushpinFeatureProperties( segmentTitle, sizeFormat, colorFormat, + sizeLocalId, + colorLocalId, locationNameData, segmentData, segmentUris, @@ -137,11 +141,13 @@ function buildPushpinFeatureProperties( title: colorTitle, value: colorData[index], format: colorFormat, + localId: colorLocalId, }, size: { title: sizeTitle, value: sizeData[index], format: sizeFormat, + localId: sizeLocalId, }, segment: { title: segmentTitle, @@ -156,6 +162,7 @@ function buildPushpinFeatureProperties( title: m.title, value: m.data[index], format: m.format, + localId: m.localId, })); // Keep backward-compatible "metric" property for single measure, // and always provide "measures" array for multi-measure support. @@ -188,6 +195,7 @@ function createPushpinFeatures({ title: m.name, format: m.format, data: m.data, + localId: m.localIdentifier, })); const geoIconData = geoIcon?.data ?? []; const { min: minSizeFromData, max: maxSizeFromData } = getMinMax(sizeData); @@ -204,6 +212,8 @@ function createPushpinFeatures({ segmentTitle: segment?.name ?? "", sizeFormat: size?.format ?? "", colorFormat: color?.format ?? "", + sizeLocalId: size?.localIdentifier, + colorLocalId: color?.localIdentifier, measures: measuresCtx, locationNameData, segmentData: segment?.data ?? [], diff --git a/libs/sdk-ui-geo/src/next/layers/pushpin/tooltip/tooltipManagement.ts b/libs/sdk-ui-geo/src/next/layers/pushpin/tooltip/tooltipManagement.ts index 0d9a4de3689..78f3aa5bd93 100644 --- a/libs/sdk-ui-geo/src/next/layers/pushpin/tooltip/tooltipManagement.ts +++ b/libs/sdk-ui-geo/src/next/layers/pushpin/tooltip/tooltipManagement.ts @@ -5,6 +5,7 @@ import { type IntlShape } from "react-intl"; import { type ISeparators } from "@gooddata/sdk-model"; import { type IHeaderPredicate } from "@gooddata/sdk-ui"; +import { type ICustomTooltipConfig } from "@gooddata/sdk-ui-vis-commons"; import { getTooltipContentWidth } from "../../../map/style/tooltipFormatting.js"; import { type IGeoPushpinChartConfig } from "../../../types/config/pushpinChart.js"; @@ -15,6 +16,7 @@ import { isLngLatTuple, isRecord, } from "../../../utils/guards.js"; +import { buildCustomTooltipPieces, composeTooltipBody } from "../../common/customTooltipSection.js"; import { type IPopupFacade } from "../../common/mapFacade.js"; import { type TooltipFormatConfig, @@ -26,7 +28,7 @@ import { isTooltipPayloadValid, parseTooltipPayload, } from "../../common/tooltipUtils.js"; -import type { IGeoTooltipConfig } from "../../registry/adapterTypes.js"; +import type { IGeoTooltipConfig, ITooltipReferenceMaps } from "../../registry/adapterTypes.js"; import { DEFAULT_PUSHPIN_COLOR_VALUE, NULL_TOOLTIP_VALUE, @@ -145,7 +147,16 @@ function getInteractionMessage(drillableItems?: IHeaderPredicate[], intl?: IntlS * @param maxWidth - Maximum width of tooltip * @param separators - Number format separators * @param drillableItems - Drillable items configuration - * @param intl - Internationalization shape + * @param intl - Internationalization shape (used for the custom-tooltip + * `(No data)` fallback string) + * @param showStroke - Whether to render the stroke band above the body + * (defaults to `true`; pass `false` for icon-shape pushpins) + * @param customConfig - Optional custom-tooltip config (markdown content + + * placement). When omitted or disabled, the tooltip renders the default + * items only. + * @param referenceMaps - Optional per-layer maps used by the custom-tooltip + * resolver to translate `localIdentifier` / `attrId` into the LDM ids + * referenced as `{metric/}` and `{label/}`. * @returns HTML string for tooltip * * @internal @@ -154,10 +165,12 @@ export function getTooltipHtml( geoProperties: GeoJSON.GeoJsonProperties, tooltipStroke: string, maxWidth: number, - separators?: ISeparators, - drillableItems?: IHeaderPredicate[], - intl?: IntlShape, + separators: ISeparators | undefined, + drillableItems: IHeaderPredicate[] | undefined, + intl: IntlShape, showStroke: boolean = true, + customConfig?: ICustomTooltipConfig, + referenceMaps?: ITooltipReferenceMaps, ): string { const interactionMessage = getInteractionMessage(drillableItems, intl); const properties = getTooltipProperties(geoProperties); @@ -185,13 +198,23 @@ export function getTooltipHtml( .filter((item): item is string => item !== null) .join(""); + const fallbackText = `(${intl.formatMessage({ id: "richText.no_data" })})`; + const customPieces = buildCustomTooltipPieces( + geoProperties, + customConfig, + referenceMaps, + separators, + fallbackText, + ); + const itemsBody = composeTooltipBody(tooltipItems, customPieces, customConfig?.placement); + const strokeHtml = showStroke ? `` : ""; return `
${strokeHtml} -
${tooltipItems}${interactionMessage}
+
${itemsBody}${interactionMessage}
`; } @@ -225,6 +248,7 @@ export function createPushpinTooltipConfig( drillableItems: IHeaderPredicate[] | undefined, intl: IntlShape, layerIds: string[], + referenceMaps?: ITooltipReferenceMaps, ): IGeoTooltipConfig { const { separators } = config; @@ -239,7 +263,14 @@ export function createPushpinTooltipConfig( const { properties, geometry } = feature; const parsedProps = parsePushpinGeoProperties(properties); - if (!shouldShowTooltip(parsedProps)) { + // Render even when no default payload items are valid if the user + // configured a non-empty custom tooltip — otherwise `replace`-mode + // and data-sparse scenarios would silently suppress the tooltip + // (mirrors area's `items.length === 0 && !customPieces.sectionHtml`). + const hasCustomTooltipContent = Boolean( + config.customTooltip?.enabled && config.customTooltip?.content, + ); + if (!shouldShowTooltip(parsedProps) && !hasCustomTooltipContent) { return; } @@ -272,6 +303,8 @@ export function createPushpinTooltipConfig( drillableItems, intl, !isIconShape, + config.customTooltip, + referenceMaps, ); tooltip diff --git a/libs/sdk-ui-geo/src/next/layers/registry/adapterTypes.ts b/libs/sdk-ui-geo/src/next/layers/registry/adapterTypes.ts index ee3e3e1e2af..33b7c127ec7 100644 --- a/libs/sdk-ui-geo/src/next/layers/registry/adapterTypes.ts +++ b/libs/sdk-ui-geo/src/next/layers/registry/adapterTypes.ts @@ -94,6 +94,39 @@ export interface IGeoAdapterContext { intl?: IntlShape; } +/** + * Maps that let the custom-tooltip resolver register feature values under the + * LDM identifier(s) users reference in `{metric/}` and `{label/}`. + * + * For measures, this means translating `localIdentifier` → LDM id. For + * attributes, this means pairing the display-form id (already on the payload + * as `attrId`) with its parent attribute id so the resolver can register the + * same value under both keys. + * + * Built once per layer at `prepareLayer` time and stashed on + * {@link IGeoLayerOutput} for the tooltip handler to pick up. + * + * @internal + */ +export interface ITooltipReferenceMaps { + /** + * `localIdentifier` → LDM measure identifier. Derived measures (PoP, previous + * period) trace back to the master simple measure's LDM id. + * + * Entries are omitted for measures whose identifier ref can't be resolved + * (e.g. arithmetic measures), so the map may be smaller than + * `definition.measures`. + */ + measures: Record; + + /** + * Display-form identifier → attribute identifier. Lets the resolver register + * `{label/}` AND `{label/}` against the same value + * so users may reference an attribute by either id, mirroring Highcharts. + */ + attributes: Record; +} + /** * Legend computation result. * @@ -163,6 +196,22 @@ export interface IGeoLayerOutput< * Optional viewport suggestion based on layer data. */ initialViewport?: Partial | null; + + /** + * Reference id maps for custom-tooltip resolution. + * + * @remarks + * Adapters build this from the layer's execution definition + attribute + * descriptors. The adapter's `getTooltipConfig` forwards it into the + * layer's tooltip renderer, which calls the resolver at hover time so + * `{metric/}` / `{label/}` references resolve. + * + * Optional — adapters that don't support custom tooltips may omit it; the + * resolver treats missing maps as empty (which simply means fewer + * references resolve, leaving unresolved tokens to fall back via + * `resolveReferences`). + */ + tooltipReferenceMaps?: ITooltipReferenceMaps; } /** diff --git a/libs/sdk-ui-geo/src/next/types/geoData/common.ts b/libs/sdk-ui-geo/src/next/types/geoData/common.ts index 2dc1eb795b0..12b8f44fa98 100644 --- a/libs/sdk-ui-geo/src/next/types/geoData/common.ts +++ b/libs/sdk-ui-geo/src/next/types/geoData/common.ts @@ -62,6 +62,15 @@ export interface IGeoMeasureItem extends IGeoDataItem { * Array of numeric values */ data: number[]; + /** + * Bucket localIdentifier of the underlying measure. + * + * @remarks + * Used by custom-tooltip reference resolution as the lookup key into + * `ITooltipReferenceMaps.measures` to find the LDM identifier referenced + * as `{metric/}` in tooltip content. + */ + localIdentifier?: string; } /** diff --git a/libs/sdk-ui-kit/package.json b/libs/sdk-ui-kit/package.json index c177dabba21..ebbb15d8d95 100644 --- a/libs/sdk-ui-kit/package.json +++ b/libs/sdk-ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-kit", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK - UI Building Components", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-loaders/package.json b/libs/sdk-ui-loaders/package.json index a8a321943e3..3dcc950ccf0 100644 --- a/libs/sdk-ui-loaders/package.json +++ b/libs/sdk-ui-loaders/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-loaders", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK Runtime Component Loaders", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-pivot/package.json b/libs/sdk-ui-pivot/package.json index 29d447bc4f0..78312410779 100644 --- a/libs/sdk-ui-pivot/package.json +++ b/libs/sdk-ui-pivot/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pivot", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData.UI SDK - Pivot Table", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-pluggable-application/package.json b/libs/sdk-ui-pluggable-application/package.json index b06d64b2f5a..c72806ce51b 100644 --- a/libs/sdk-ui-pluggable-application/package.json +++ b/libs/sdk-ui-pluggable-application/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pluggable-application", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK React helpers for pluggable applications", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-semantic-search/package.json b/libs/sdk-ui-semantic-search/package.json index f488900e258..8b7260bae99 100644 --- a/libs/sdk-ui-semantic-search/package.json +++ b/libs/sdk-ui-semantic-search/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-semantic-search", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK TypeScript & React skeleton", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-tests-app/tsconfig.json b/libs/sdk-ui-tests-app/tsconfig.json index e5d6a4a8366..59e43e2bd19 100644 --- a/libs/sdk-ui-tests-app/tsconfig.json +++ b/libs/sdk-ui-tests-app/tsconfig.json @@ -7,7 +7,6 @@ "moduleResolution": "bundler", "noEmit": true, "outDir": "dist", - "sourceMap": true, "allowSyntheticDefaultImports": true, "paths": { "react": ["./node_modules/@types/react"] diff --git a/libs/sdk-ui-tests-e2e/playwright/tests/boilerapp.spec.ts b/libs/sdk-ui-tests-e2e/playwright/tests/boilerapp.spec.ts index 8e057df30e8..7966f2a1966 100644 --- a/libs/sdk-ui-tests-e2e/playwright/tests/boilerapp.spec.ts +++ b/libs/sdk-ui-tests-e2e/playwright/tests/boilerapp.spec.ts @@ -11,7 +11,7 @@ test.beforeEach(async ({ page }) => { }); test.topLevelDescribe("Boiler app Chart", "boilerapp", () => { - test(`check boiler app tiger`, { tag: ["@checklist_integrated_boiler_tiger"] }, async ({ page }) => { + test(`check boiler app tiger`, { tag: ["@checklist_boiler_tiger"] }, async ({ page }) => { await page.goto("/"); const container = page.locator(".insight-view-visualization .headline"); diff --git a/libs/sdk-ui-theme-provider/package.json b/libs/sdk-ui-theme-provider/package.json index a75f996aa73..640ead479ef 100644 --- a/libs/sdk-ui-theme-provider/package.json +++ b/libs/sdk-ui-theme-provider/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-theme-provider", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK - Theme provider", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-vis-commons/package.json b/libs/sdk-ui-vis-commons/package.json index ff0291f2e59..be5ae2b661e 100644 --- a/libs/sdk-ui-vis-commons/package.json +++ b/libs/sdk-ui-vis-commons/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-vis-commons", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData.UI SDK - common functionality for different types of visualizations", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui/package.json b/libs/sdk-ui/package.json index 3a5378e28fc..6fe66a286c3 100644 --- a/libs/sdk-ui/package.json +++ b/libs/sdk-ui/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData.UI SDK - Core", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/tsconfig.base.json b/libs/tsconfig.base.json index 50e11a52bbd..e2545c7b79b 100644 --- a/libs/tsconfig.base.json +++ b/libs/tsconfig.base.json @@ -9,8 +9,6 @@ "importHelpers": true, "incremental": false, "resolveJsonModule": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true + "declaration": true } } diff --git a/libs/util/package.json b/libs/util/package.json index e95255ad450..d7459664283 100644 --- a/libs/util/package.json +++ b/libs/util/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/util", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData Utility Functions", "license": "MIT", "author": "GoodData", diff --git a/tools/app-toolkit/package.json b/tools/app-toolkit/package.json index 0250cbbae7d..52b9d525e96 100644 --- a/tools/app-toolkit/package.json +++ b/tools/app-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/app-toolkit", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "CLI with useful tools for creating and maintaining GoodData web applications.", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/tools/catalog-export/package.json b/tools/catalog-export/package.json index dd931bd9459..5fda27981f2 100644 --- a/tools/catalog-export/package.json +++ b/tools/catalog-export/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/catalog-export", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK Catalog Export tooling", "license": "MIT", "author": "GoodData", diff --git a/tools/dashboard-plugin-template/configTemplates/ts/tsconfig.json b/tools/dashboard-plugin-template/configTemplates/ts/tsconfig.json index 26ad9b892e7..aaba04cd9f3 100644 --- a/tools/dashboard-plugin-template/configTemplates/ts/tsconfig.json +++ b/tools/dashboard-plugin-template/configTemplates/ts/tsconfig.json @@ -17,8 +17,6 @@ "noUnusedParameters": true, "noImplicitReturns": true, "composite": false, - "declaration": true, - "declarationMap": true, - "sourceMap": true + "declaration": true } } diff --git a/tools/dashboard-plugin-template/tsconfig.build.json b/tools/dashboard-plugin-template/tsconfig.build.json index ff704c466dc..4434632be3f 100644 --- a/tools/dashboard-plugin-template/tsconfig.build.json +++ b/tools/dashboard-plugin-template/tsconfig.build.json @@ -16,8 +16,6 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true + "declaration": true } } diff --git a/tools/eslint-config/package.json b/tools/eslint-config/package.json index f9cea44b5b4..e06f1966c37 100644 --- a/tools/eslint-config/package.json +++ b/tools/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/eslint-config", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "license": "MIT", "author": "GoodData", "repository": { diff --git a/tools/i18n-toolkit/package.json b/tools/i18n-toolkit/package.json index 831c65e1384..5b83f45f8b0 100644 --- a/tools/i18n-toolkit/package.json +++ b/tools/i18n-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/i18n-toolkit", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "Localization validator to validate localization complexity and intl and html format.", "license": "MIT", "author": "GoodData", diff --git a/tools/lint-config/package.json b/tools/lint-config/package.json index c921c22b042..910ba543690 100644 --- a/tools/lint-config/package.json +++ b/tools/lint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/lint-config", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "Linter-agnostic shared rules for @gooddata/eslint-config and @gooddata/oxlint-config", "license": "MIT", "author": "GoodData", diff --git a/tools/mock-handling/package.json b/tools/mock-handling/package.json index 3eb96090b4f..27b16f49bf8 100644 --- a/tools/mock-handling/package.json +++ b/tools/mock-handling/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/mock-handling", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK Mock data capture and management tool", "license": "MIT", "author": "GoodData", diff --git a/tools/oxlint-config/package.json b/tools/oxlint-config/package.json index 093f609a13a..4fb72e1ec2e 100644 --- a/tools/oxlint-config/package.json +++ b/tools/oxlint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/oxlint-config", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "license": "MIT", "author": "GoodData", "repository": { diff --git a/tools/plugin-toolkit/package.json b/tools/plugin-toolkit/package.json index 54c199b9e52..797b3d02749 100644 --- a/tools/plugin-toolkit/package.json +++ b/tools/plugin-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/plugin-toolkit", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData Set of Tools for working with Plugins", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/tools/react-app-template/configTemplates/ts/tsconfig.json b/tools/react-app-template/configTemplates/ts/tsconfig.json index 26ad9b892e7..aaba04cd9f3 100644 --- a/tools/react-app-template/configTemplates/ts/tsconfig.json +++ b/tools/react-app-template/configTemplates/ts/tsconfig.json @@ -17,8 +17,6 @@ "noUnusedParameters": true, "noImplicitReturns": true, "composite": false, - "declaration": true, - "declarationMap": true, - "sourceMap": true + "declaration": true } } diff --git a/tools/react-app-template/tsconfig.json b/tools/react-app-template/tsconfig.json index ff704c466dc..4434632be3f 100644 --- a/tools/react-app-template/tsconfig.json +++ b/tools/react-app-template/tsconfig.json @@ -16,8 +16,6 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true + "declaration": true } } diff --git a/tools/react-compatibility-test/tsconfig.json b/tools/react-compatibility-test/tsconfig.json index 26ad9b892e7..aaba04cd9f3 100644 --- a/tools/react-compatibility-test/tsconfig.json +++ b/tools/react-compatibility-test/tsconfig.json @@ -17,8 +17,6 @@ "noUnusedParameters": true, "noImplicitReturns": true, "composite": false, - "declaration": true, - "declarationMap": true, - "sourceMap": true + "declaration": true } } diff --git a/tools/reference-workspace/package.json b/tools/reference-workspace/package.json index ad4455abcde..d12fe9e1266 100644 --- a/tools/reference-workspace/package.json +++ b/tools/reference-workspace/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/reference-workspace", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData SDK - Reference Workspace for tests", "license": "MIT", "author": "GoodData", diff --git a/tools/stylelint-config/package.json b/tools/stylelint-config/package.json index 7871c47b822..eb4d8c84d9e 100644 --- a/tools/stylelint-config/package.json +++ b/tools/stylelint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/stylelint-config", - "version": "11.35.0-alpha.4", + "version": "11.35.0-alpha.5", "description": "GoodData CSS Style Guide", "keywords": [ "config", diff --git a/tools/tsconfig.base.json b/tools/tsconfig.base.json index db133a40d1b..d4bac4dda15 100644 --- a/tools/tsconfig.base.json +++ b/tools/tsconfig.base.json @@ -8,8 +8,6 @@ "incremental": false, "resolveJsonModule": true, "noImplicitReturns": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true + "declaration": true } }