Telemetry points for SQL Database Projects extension (#14088)

* Added publish and schema compare telemetry
* Adding telemetry points for add/exclude/delete
* telemetry for validation
* Adding telemetry from project roundtrip updates, editing sqlproj, and db refs
* Changed method for obtaining extension ID during registration
* Fixing test failures, updating ads telemetry package dependency
* replacing action strings with enums
* change database project string actions to enums
* Changed action name to better match dialog
* PR feedback
This commit is contained in:
Benjin Dubishar
2021-01-31 16:38:48 -08:00
committed by GitHub
parent 15fa03876d
commit 1c0259f4c5
19 changed files with 239 additions and 71 deletions

View File

@@ -14,7 +14,7 @@ export interface IProjectProviderRegistry {
* Registers a new project provider
* @param provider The project provider
*/
registerProvider(provider: IProjectProvider): vscode.Disposable;
registerProvider(provider: IProjectProvider, providerId: string): vscode.Disposable;
/**
* Clear the providers

View File

@@ -6,14 +6,14 @@
import { IProjectProvider } from 'dataworkspace';
import * as vscode from 'vscode';
import { IProjectProviderRegistry } from './interfaces';
import { TelemetryReporter, TelemetryViews } from './telemetry';
import { TelemetryActions, TelemetryReporter, TelemetryViews } from './telemetry';
export const ProjectProviderRegistry: IProjectProviderRegistry = new class implements IProjectProviderRegistry {
private _providers = new Array<IProjectProvider>();
private _providerFileExtensionMapping: { [key: string]: IProjectProvider } = {};
private _providerProjectTypeMapping: { [key: string]: IProjectProvider } = {};
registerProvider(provider: IProjectProvider): vscode.Disposable {
registerProvider(provider: IProjectProvider, providerId: string): vscode.Disposable {
this.validateProvider(provider);
this._providers.push(provider);
provider.supportedProjectTypes.forEach(projectType => {
@@ -21,9 +21,9 @@ export const ProjectProviderRegistry: IProjectProviderRegistry = new class imple
this._providerProjectTypeMapping[projectType.id.toUpperCase()] = provider;
});
TelemetryReporter.createActionEvent(TelemetryViews.ProviderRegistration, 'ProviderRegistered')
TelemetryReporter.createActionEvent(TelemetryViews.ProviderRegistration, TelemetryActions.ProviderRegistered)
.withAdditionalProperties({
providerId: provider.providerExtensionId,
providerId: providerId,
extensions: provider.supportedProjectTypes.map(p => p.projectFileExtension).sort().join(', ')
})
.send();

View File

@@ -14,13 +14,6 @@ let packageInfo = utils.getPackageInfo(packageJson)!;
export const TelemetryReporter = new AdsTelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey);
export enum TelemetryViews {
WorkspaceTreePane = 'WorkspaceTreePane',
OpenExistingDialog = 'OpenExistingDialog',
NewProjectDialog = 'NewProjectDialog',
ProviderRegistration = 'ProviderRegistration'
}
export function calculateRelativity(projectPath: string, workspacePath?: string): string {
workspacePath = workspacePath ?? vscode.workspace.workspaceFile?.fsPath;
@@ -42,3 +35,22 @@ export function calculateRelativity(projectPath: string, workspacePath?: string)
return 'other'; // sibling, cousin, descendant, etc.
}
export enum TelemetryViews {
WorkspaceTreePane = 'WorkspaceTreePane',
OpenExistingDialog = 'OpenExistingDialog',
NewProjectDialog = 'NewProjectDialog',
ProviderRegistration = 'ProviderRegistration'
}
export enum TelemetryActions {
ProviderRegistered = 'ProviderRegistered',
ProjectAddedToWorkspace = 'ProjectAddedToWorkspace',
ProjectRemovedFromWorkspace = 'ProjectRemovedFromWorkspace',
OpeningProject = 'OpeningProject',
NewProjectDialogLaunched = 'NewProjectDialogLaunched',
OpeningWorkspace = 'OpeningWorkspace',
OpenExistingDialogLaunched = 'OpenExistingDialogLaunched',
NewProjectDialogCompleted = 'NewProjectDialogCompleted'
}