From c822feff9edd6da63da44d935f7cac4365871f01 Mon Sep 17 00:00:00 2001 From: Serena <26805916+sleepyfoodie@users.noreply.github.com> Date: Wed, 25 Sep 2024 13:20:04 -0400 Subject: [PATCH] Home: add setup guide tab under home tab (#92947) * feat: add setup guide in home tab * chore: add feature toggle for setup guide * chore: add feature toggle for sub menu * chore: run pretier * chore: run i18n * chore: run generated files again * chore: update description * chore: update comment to trigger test flow * chore: trigger test * chore: fix styling --- .../configure-grafana/feature-toggles/index.md | 1 + .../grafana-data/src/types/featureToggles.gen.ts | 1 + pkg/services/featuremgmt/codeowners.go | 1 + pkg/services/featuremgmt/registry.go | 7 +++++++ pkg/services/featuremgmt/toggles_gen.csv | 1 + pkg/services/featuremgmt/toggles_gen.go | 4 ++++ pkg/services/featuremgmt/toggles_gen.json | 16 ++++++++++++++++ pkg/services/navtree/navtreeimpl/navtree.go | 12 ++++++++++++ .../components/AppChrome/MegaMenu/MegaMenu.tsx | 4 +++- public/app/core/utils/navBarItem-translations.ts | 2 ++ public/locales/en-US/grafana.json | 3 +++ public/locales/pseudo-LOCALE/grafana.json | 3 +++ 12 files changed, 54 insertions(+), 1 deletion(-) diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md index 3102a626929..6edf736dadd 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -201,6 +201,7 @@ Experimental features might be changed or removed without prior notice. | `exploreLogsShardSplitting` | Used in Explore Logs to split queries into multiple queries based on the number of shards | | `exploreLogsAggregatedMetrics` | Used in Explore Logs to query by aggregated metrics | | `exploreLogsLimitedTimeRange` | Used in Explore Logs to limit the time range | +| `homeSetupGuide` | Used in Home for users who want to return to the onboarding flow or quickly find popular config pages | | `appSidecar` | Enable the app sidecar feature that allows rendering 2 apps at the same time | ## Development feature toggles diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index fe6aceaadec..5b7e7fc1dcb 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -209,6 +209,7 @@ export interface FeatureToggles { exploreLogsShardSplitting?: boolean; exploreLogsAggregatedMetrics?: boolean; exploreLogsLimitedTimeRange?: boolean; + homeSetupGuide?: boolean; appPlatformAccessTokens?: boolean; appSidecar?: boolean; groupAttributeSync?: boolean; diff --git a/pkg/services/featuremgmt/codeowners.go b/pkg/services/featuremgmt/codeowners.go index 2269fd6a1d1..83f9fda7ee2 100644 --- a/pkg/services/featuremgmt/codeowners.go +++ b/pkg/services/featuremgmt/codeowners.go @@ -28,4 +28,5 @@ const ( enterpriseDatasourcesSquad codeowner = "@grafana/enterprise-datasources" grafanaSharingSquad codeowner = "@grafana/sharing-squad" grafanaDatabasesFrontend codeowner = "@grafana/databases-frontend" + growthAndOnboarding codeowner = "@grafana/growth-and-onboarding" ) diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index ba60f9270c8..7909994201f 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -1438,6 +1438,13 @@ var ( FrontendOnly: true, Owner: grafanaObservabilityLogsSquad, }, + { + Name: "homeSetupGuide", + Description: "Used in Home for users who want to return to the onboarding flow or quickly find popular config pages", + Stage: FeatureStageExperimental, + FrontendOnly: true, + Owner: growthAndOnboarding, + }, { Name: "appPlatformAccessTokens", Description: "Enables the use of access tokens for the App Platform", diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 15adc71435a..d05dfd61e64 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -190,6 +190,7 @@ singleTopNav,experimental,@grafana/grafana-frontend-platform,false,false,true exploreLogsShardSplitting,experimental,@grafana/observability-logs,false,false,true exploreLogsAggregatedMetrics,experimental,@grafana/observability-logs,false,false,true exploreLogsLimitedTimeRange,experimental,@grafana/observability-logs,false,false,true +homeSetupGuide,experimental,@grafana/growth-and-onboarding,false,false,true appPlatformAccessTokens,experimental,@grafana/identity-access-team,false,false,false appSidecar,experimental,@grafana/explore-squad,false,false,false groupAttributeSync,experimental,@grafana/identity-access-team,false,false,false diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index d1bcec7d3d0..ae8f0c3d4e5 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -771,6 +771,10 @@ const ( // Used in Explore Logs to limit the time range FlagExploreLogsLimitedTimeRange = "exploreLogsLimitedTimeRange" + // FlagHomeSetupGuide + // Used in Home for users who want to return to the onboarding flow or quickly find popular config pages + FlagHomeSetupGuide = "homeSetupGuide" + // FlagAppPlatformAccessTokens // Enables the use of access tokens for the App Platform FlagAppPlatformAccessTokens = "appPlatformAccessTokens" diff --git a/pkg/services/featuremgmt/toggles_gen.json b/pkg/services/featuremgmt/toggles_gen.json index 4c8ad4a0a3f..f1f8041c5b5 100644 --- a/pkg/services/featuremgmt/toggles_gen.json +++ b/pkg/services/featuremgmt/toggles_gen.json @@ -1433,6 +1433,22 @@ "hideFromAdminPage": true } }, + { + "metadata": { + "name": "homeSetupGuide", + "resourceVersion": "1726258153467", + "creationTimestamp": "2024-09-10T15:46:32Z", + "annotations": { + "grafana.app/updatedTimestamp": "2024-09-13 20:09:13.467989 +0000 UTC" + } + }, + "spec": { + "description": "Used in Home for users who want to return to the onboarding flow or quickly find popular config pages", + "stage": "experimental", + "codeowner": "@grafana/growth-and-onboarding", + "frontend": true + } + }, { "metadata": { "name": "idForwarding", diff --git a/pkg/services/navtree/navtreeimpl/navtree.go b/pkg/services/navtree/navtreeimpl/navtree.go index 6bbc3277383..d33e93f763b 100644 --- a/pkg/services/navtree/navtreeimpl/navtree.go +++ b/pkg/services/navtree/navtreeimpl/navtree.go @@ -202,6 +202,18 @@ func (s *ServiceImpl) getHomeNode(c *contextmodel.ReqContext, prefs *pref.Prefer Icon: "home-alt", SortWeight: navtree.WeightHome, } + ctx := c.Req.Context() + if s.features.IsEnabled(ctx, featuremgmt.FlagHomeSetupGuide) { + var children []*navtree.NavLink + // setup guide (a submenu item under Home) + children = append(children, &navtree.NavLink{ + Id: "home-setup-guide", + Text: "Setup guide", + Url: homeUrl + "/setup-guide", + SortWeight: navtree.WeightHome, + }) + homeNode.Children = children + } return homeNode } diff --git a/public/app/core/components/AppChrome/MegaMenu/MegaMenu.tsx b/public/app/core/components/AppChrome/MegaMenu/MegaMenu.tsx index eafdf5426c2..d7deaaeb3cd 100644 --- a/public/app/core/components/AppChrome/MegaMenu/MegaMenu.tsx +++ b/public/app/core/components/AppChrome/MegaMenu/MegaMenu.tsx @@ -123,7 +123,7 @@ export const MegaMenu = memo(