Add telemetry for schema compare and sql database projects options dialogs (#19799)

* add more telemetry for schema compare and sql projects options dialogs

* cleanup

* change to sendActionEvent
This commit is contained in:
Kim Santiago
2022-06-22 13:31:28 -07:00
committed by GitHub
parent c24305f9d8
commit a3cad2378c
5 changed files with 22 additions and 3 deletions

View File

@@ -10,6 +10,7 @@ import * as loc from '../localizedConstants';
import { SchemaCompareMainWindow } from '../schemaCompareMainWindow'; import { SchemaCompareMainWindow } from '../schemaCompareMainWindow';
import { isNullOrUndefined } from 'util'; import { isNullOrUndefined } from 'util';
import { SchemaCompareOptionsModel } from '../models/schemaCompareOptionsModel'; import { SchemaCompareOptionsModel } from '../models/schemaCompareOptionsModel';
import { TelemetryReporter, TelemetryViews } from '../telemetry';
export class SchemaCompareOptionsDialog { export class SchemaCompareOptionsDialog {
public dialog: azdata.window.Dialog; public dialog: azdata.window.Dialog;
@@ -82,7 +83,10 @@ export class SchemaCompareOptionsDialog {
this.schemaComparison.startCompare(); this.schemaComparison.startCompare();
} }
}); });
TelemetryReporter.sendActionEvent(TelemetryViews.SchemaCompareOptionsDialog, 'OptionsChanged');
} }
this.disposeListeners(); this.disposeListeners();
} }
@@ -106,6 +110,8 @@ export class SchemaCompareOptionsDialog {
await this.updateObjectsTable(); await this.updateObjectsTable();
this.objectTypesFlexBuilder.removeItem(this.objectsTable); this.objectTypesFlexBuilder.removeItem(this.objectsTable);
this.objectTypesFlexBuilder.addItem(this.objectsTable, { CSSStyles: { 'overflow': 'scroll', 'height': '80vh' } }); this.objectTypesFlexBuilder.addItem(this.objectsTable, { CSSStyles: { 'overflow': 'scroll', 'height': '80vh' } });
TelemetryReporter.sendActionEvent(TelemetryViews.SchemaCompareOptionsDialog, 'ResetOptions');
} }
private initializeSchemaCompareOptionsDialogTab(): void { private initializeSchemaCompareOptionsDialogTab(): void {

View File

@@ -15,5 +15,6 @@ export const TelemetryReporter = new AdsTelemetryReporter(packageInfo.name, pack
export enum TelemetryViews { export enum TelemetryViews {
SchemaCompareMainWindow = 'SchemaCompareMainWindow', SchemaCompareMainWindow = 'SchemaCompareMainWindow',
SchemaCompareDialog = 'SchemaCompareDialog' SchemaCompareDialog = 'SchemaCompareDialog',
SchemaCompareOptionsDialog = 'SchemaCompareOptionsDialog'
} }

View File

@@ -16,6 +16,7 @@ export enum TelemetryViews {
ProjectController = 'ProjectController', ProjectController = 'ProjectController',
SqlProjectPublishDialog = 'SqlProjectPublishDialog', SqlProjectPublishDialog = 'SqlProjectPublishDialog',
ProjectTree = 'ProjectTree', ProjectTree = 'ProjectTree',
PublishOptionsDialog = 'PublishOptionsDialog'
} }
export enum TelemetryActions { export enum TelemetryActions {
@@ -41,5 +42,7 @@ export enum TelemetryActions {
publishToContainer = 'publishToContainer', publishToContainer = 'publishToContainer',
publishToNewAzureServer = 'publishToNewAzureServer', publishToNewAzureServer = 'publishToNewAzureServer',
generateProjectFromOpenApiSpec = 'generateProjectFromOpenApiSpec', generateProjectFromOpenApiSpec = 'generateProjectFromOpenApiSpec',
publishConfigureOptionsClicked = 'PublishConfigureOptionsClicked' publishOptionsOpened = 'publishOptionsOpened',
resetOptions = 'resetOptions',
optionsChanged = 'optionsChanged'
} }

View File

@@ -916,7 +916,7 @@ export class PublishDatabaseDialog {
const optionsRow = view.modelBuilder.flexContainer().withItems([this.optionsButton], { CSSStyles: { flex: '0 0 auto', 'margin': '6px 0 0 287px' } }).withLayout({ flexFlow: 'row', alignItems: 'center' }).component(); const optionsRow = view.modelBuilder.flexContainer().withItems([this.optionsButton], { CSSStyles: { flex: '0 0 auto', 'margin': '6px 0 0 287px' } }).withLayout({ flexFlow: 'row', alignItems: 'center' }).component();
this.toDispose.push(this.optionsButton.onDidClick(async () => { this.toDispose.push(this.optionsButton.onDidClick(async () => {
TelemetryReporter.sendActionEvent(TelemetryViews.SqlProjectPublishDialog, TelemetryActions.publishConfigureOptionsClicked); TelemetryReporter.sendActionEvent(TelemetryViews.SqlProjectPublishDialog, TelemetryActions.publishOptionsOpened);
// Create fresh options dialog with default selections each time when creating the 'configure options' button // Create fresh options dialog with default selections each time when creating the 'configure options' button
this.publishOptionsDialog = new PublishOptionsDialog(this.deploymentOptions!, this); this.publishOptionsDialog = new PublishOptionsDialog(this.deploymentOptions!, this);
this.publishOptionsDialog.openDialog(); this.publishOptionsDialog.openDialog();

View File

@@ -10,6 +10,7 @@ import * as utils from '../common/utils';
import type * as azdataType from 'azdata'; import type * as azdataType from 'azdata';
import { PublishDatabaseDialog } from './publishDatabaseDialog'; import { PublishDatabaseDialog } from './publishDatabaseDialog';
import { DeployOptionsModel } from '../models/options/deployOptionsModel'; import { DeployOptionsModel } from '../models/options/deployOptionsModel';
import { TelemetryActions, TelemetryReporter, TelemetryViews } from '../common/telemetry';
export class PublishOptionsDialog { export class PublishOptionsDialog {
@@ -21,6 +22,7 @@ export class PublishOptionsDialog {
private optionsTable: azdataType.TableComponent | undefined; private optionsTable: azdataType.TableComponent | undefined;
public optionsModel: DeployOptionsModel; public optionsModel: DeployOptionsModel;
private optionsFlexBuilder: azdataType.FlexContainer | undefined; private optionsFlexBuilder: azdataType.FlexContainer | undefined;
private optionsChanged: boolean = false;
constructor(defaultOptions: mssql.DeploymentOptions, private publish: PublishDatabaseDialog) { constructor(defaultOptions: mssql.DeploymentOptions, private publish: PublishDatabaseDialog) {
this.optionsModel = new DeployOptionsModel(defaultOptions); this.optionsModel = new DeployOptionsModel(defaultOptions);
@@ -85,6 +87,7 @@ export class PublishOptionsDialog {
if (checkboxState && checkboxState.row !== undefined) { if (checkboxState && checkboxState.row !== undefined) {
const label = this.optionsModel.optionsLabels[checkboxState.row]; const label = this.optionsModel.optionsLabels[checkboxState.row];
this.optionsModel.optionsLookup[label] = checkboxState.checked; this.optionsModel.optionsLookup[label] = checkboxState.checked;
this.optionsChanged = true;
} }
})); }));
@@ -137,6 +140,10 @@ export class PublishOptionsDialog {
this.optionsModel.setDeploymentOptions(); this.optionsModel.setDeploymentOptions();
this.publish.setDeploymentOptions(this.optionsModel.deploymentOptions); this.publish.setDeploymentOptions(this.optionsModel.deploymentOptions);
this.disposeListeners(); this.disposeListeners();
if (this.optionsChanged) {
TelemetryReporter.sendActionEvent(TelemetryViews.PublishOptionsDialog, TelemetryActions.optionsChanged);
}
} }
/* /*
@@ -159,6 +166,8 @@ export class PublishOptionsDialog {
await this.updateOptionsTable(); await this.updateOptionsTable();
this.optionsFlexBuilder?.removeItem(this.optionsTable!); this.optionsFlexBuilder?.removeItem(this.optionsTable!);
this.optionsFlexBuilder?.insertItem(this.optionsTable!, 0, { CSSStyles: { 'overflow': 'scroll', 'height': '65vh' } }); this.optionsFlexBuilder?.insertItem(this.optionsTable!, 0, { CSSStyles: { 'overflow': 'scroll', 'height': '65vh' } });
TelemetryReporter.sendActionEvent(TelemetryViews.PublishOptionsDialog, TelemetryActions.resetOptions);
} }
private disposeListeners(): void { private disposeListeners(): void {