Просмотр исходного кода

Added types and tracks to new project and connect source

jnfrati 4 лет назад
Родитель
Сommit
df8c016219

+ 2 - 0
dashboard/src/main/home/new-project/NewProject.tsx

@@ -15,6 +15,7 @@ import { isAlphanumeric } from "shared/common";
 import InputRow from "components/form-components/InputRow";
 import Helper from "components/form-components/Helper";
 import TitleSection from "components/TitleSection";
+import { trackCreateNewProject } from "shared/anayltics";
 
 type ValidationError = {
   hasError: boolean;
@@ -94,6 +95,7 @@ export const NewProjectFC = () => {
       setProjects(projectList);
       setCurrentProject(project);
       setButtonStatus("successful");
+      trackCreateNewProject();
       pushFiltered("/onboarding", []);
     } catch (error) {
       setButtonStatus("Couldn't create project, try again.");

+ 16 - 0
dashboard/src/main/home/onboarding/steps/ConnectSource.tsx

@@ -8,6 +8,7 @@ import { useRouting } from "shared/routing";
 import styled from "styled-components";
 import { OFState } from "../state";
 import github from "assets/github.png";
+import { connectSourceTracks } from "shared/anayltics";
 
 interface GithubAppAccessData {
   username?: string;
@@ -60,6 +61,11 @@ const ConnectSource: React.FC<{
   }, []);
 
   const nextStep = (selectedSource: "docker" | "github") => {
+    if (selectedSource === "docker") {
+      connectSourceTracks.trackUseDockerRegistryClicked();
+    } else {
+      connectSourceTracks.trackContinueAfterGithubConnect();
+    }
     onSuccess(selectedSource);
   };
 
@@ -87,6 +93,11 @@ const ConnectSource: React.FC<{
         <>
           <ConnectToGithubButton
             href={`/api/integrations/github-app/install?redirect_uri=${encoded_redirect_uri}`}
+            onClick={() => {
+              connectSourceTracks.trackConnectGithubButtonClicked();
+              // Will allow the anchor tag to redirect properly
+              return true;
+            }}
           >
             <GitHubIcon src={github} /> Connect to GitHub
           </ConnectToGithubButton>
@@ -120,6 +131,11 @@ const ConnectSource: React.FC<{
             Don't see the right repos?{" "}
             <A
               href={`/api/integrations/github-app/install?redirect_uri=${encoded_redirect_uri}`}
+              onClick={() => {
+                connectSourceTracks.trackInstallOnMoreRepositoriesClicked();
+                // Will allow the anchor tag to redirect properly
+                return true;
+              }}
             >
               Install Porter in more repositories
             </A>

+ 26 - 13
dashboard/src/shared/anayltics/onboarding/tracks.ts

@@ -1,3 +1,12 @@
+import type {
+  TrackConnectRegistryClickedProps,
+  TrackConnectRegistryIntentProps,
+  TrackProvisionAddCredentialsProps,
+  TrackProvisionIntentProps,
+  TrackProvisionResourcesClickedProps,
+  TrackRedirectToGuideProps,
+  TrackRegistryAddCredentialsProps,
+} from "./types";
 import {
   COMMON_TRACKS,
   CONNECT_REGISTRY_TRACKS,
@@ -10,7 +19,7 @@ export function trackCreateNewProject() {
   window.analytics?.track(PROJECT_CREATION_TRACKS.NEW_PROJECT_EVENT);
 }
 
-export function trackRedirectToGuide(props: RedirectToGuideProps) {
+export function trackRedirectToGuide(props: TrackRedirectToGuideProps) {
   window.analytics?.track(COMMON_TRACKS.REDIRECT_TO_GUIDE, props);
 }
 
@@ -39,27 +48,31 @@ export const connectRegistryTracks = {
   trackSkipRegistryConnection() {
     window.analytics?.track(CONNECT_REGISTRY_TRACKS.SKIP_REGISTRY_CONNECTION);
   },
-  trackConnectRegistryIntent() {
-    window.analytics?.track(CONNECT_REGISTRY_TRACKS.INTENT);
+  trackConnectRegistryIntent(props: TrackConnectRegistryIntentProps) {
+    window.analytics?.track(CONNECT_REGISTRY_TRACKS.INTENT, props);
   },
-  trackAddCredentials() {
-    window.analytics?.track(CONNECT_REGISTRY_TRACKS.ADD_CREDENTIALS);
+  trackRegistryAddCredentials(props: TrackRegistryAddCredentialsProps) {
+    window.analytics?.track(CONNECT_REGISTRY_TRACKS.ADD_CREDENTIALS, props);
   },
-  trackConnectRegistryClicked() {
-    window.analytics?.track(CONNECT_REGISTRY_TRACKS.CONNECT_REGISTRY_CLICKED);
+  trackConnectRegistryClicked(props: TrackConnectRegistryClickedProps) {
+    window.analytics?.track(
+      CONNECT_REGISTRY_TRACKS.CONNECT_REGISTRY_CLICKED,
+      props
+    );
   },
 };
 
 export const provisionResourcesTracks = {
-  trackProvisionIntent() {
-    window.analytics?.track(PROVISION_RESOURCES_TRACKS.PROVISION_INTENT);
+  trackProvisionIntent(props: TrackProvisionIntentProps) {
+    window.analytics?.track(PROVISION_RESOURCES_TRACKS.PROVISION_INTENT, props);
   },
-  trackAddCredentials() {
-    window.analytics?.track(PROVISION_RESOURCES_TRACKS.ADD_CREDENTIALS);
+  trackProvisionAddCredentials(props: TrackProvisionAddCredentialsProps) {
+    window.analytics?.track(PROVISION_RESOURCES_TRACKS.ADD_CREDENTIALS, props);
   },
-  trackProvisionResourcesClicked() {
+  trackProvisionResourcesClicked(props: TrackProvisionResourcesClickedProps) {
     window.analytics?.track(
-      PROVISION_RESOURCES_TRACKS.PROVISION_RESOURCES_CLICKED
+      PROVISION_RESOURCES_TRACKS.PROVISION_RESOURCES_CLICKED,
+      props
     );
   },
 };

+ 32 - 1
dashboard/src/shared/anayltics/onboarding/types.ts

@@ -1,3 +1,34 @@
-type RedirectToGuideProps = {
+export type TrackRedirectToGuideProps = {
   step: string;
+  guide_url: string;
+  provider?: string;
+};
+
+export type TrackConnectRegistryIntentProps = {
+  provider: string;
+};
+
+export type TrackRegistryAddCredentialsProps = {
+  step: string;
+  provider: string;
+};
+
+export type TrackConnectRegistryClickedProps = {
+  provider: string;
+  registry_name: string;
+};
+
+export type TrackProvisionIntentProps = {
+  provider: string;
+};
+
+export type TrackProvisionAddCredentialsProps = {
+  step: string;
+  provider: string;
+};
+
+export type TrackProvisionResourcesClickedProps = {
+  provider: string;
+  machine_type: string;
+  cluster_name: string;
 };