Files
azuredatastudio/src/sql/workbench/services/tableDesigner/browser/tableDesignerService.ts
Alan Ren f07427f2c1 add open table designer event telemetry (#17595)
* add open table designer telemetry event

* rename variables to reflect the text change

* format code
2021-11-04 17:00:32 -07:00

56 lines
2.5 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { TableDesignerProvider, ITableDesignerService } from 'sql/workbench/services/tableDesigner/common/interface';
import { invalidProvider } from 'sql/base/common/errors';
import * as azdata from 'azdata';
import { ACTIVE_GROUP, IEditorService } from 'vs/workbench/services/editor/common/editorService';
import { TableDesignerInput } from 'sql/workbench/browser/editor/tableDesigner/tableDesignerInput';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { IAdsTelemetryService } from 'sql/platform/telemetry/common/telemetry';
import { TelemetryAction, TelemetryView } from 'sql/platform/telemetry/common/telemetryKeys';
export class TableDesignerService implements ITableDesignerService {
constructor(@IEditorService private _editorService: IEditorService,
@IInstantiationService private _instantiationService: IInstantiationService,
@IAdsTelemetryService private _adsTelemetryService: IAdsTelemetryService) { }
public _serviceBrand: undefined;
private _providers = new Map<string, TableDesignerProvider>();
/**
* Register a data grid provider
*/
public registerProvider(providerId: string, provider: TableDesignerProvider): void {
if (this._providers.has(providerId)) {
throw new Error(`A table designer provider with id "${providerId}" is already registered`);
}
this._providers.set(providerId, provider);
}
public unregisterProvider(providerId: string): void {
this._providers.delete(providerId);
}
public getProvider(providerId: string): TableDesignerProvider {
const provider = this._providers.get(providerId);
if (provider) {
return provider;
}
throw invalidProvider(providerId);
}
public async openTableDesigner(providerId: string, tableInfo: azdata.designers.TableInfo): Promise<void> {
this._adsTelemetryService.createActionEvent(TelemetryView.TableDesigner, TelemetryAction.Open).withAdditionalProperties({
provider: providerId,
newTable: tableInfo.isNewTable
}).send();
const provider = this.getProvider(providerId);
const tableDesignerInput = this._instantiationService.createInstance(TableDesignerInput, provider, tableInfo);
await this._editorService.openEditor(tableDesignerInput, { pinned: true }, ACTIVE_GROUP);
}
}