diff --git a/src/sql/platform/telemetry/common/telemetryKeys.ts b/src/sql/platform/telemetry/common/telemetryKeys.ts index 2e4a33e0fc..dc21bf84c5 100644 --- a/src/sql/platform/telemetry/common/telemetryKeys.ts +++ b/src/sql/platform/telemetry/common/telemetryKeys.ts @@ -123,7 +123,9 @@ export const enum NbTelemetryAction { RedoCell = 'RedoCell', MoveCell = 'MoveCell', MIMETypeRendererNotFound = 'MIMETypeRendererNotFound', - CellExecutionFailed = 'CellExecutionFailed' + CellExecutionFailed = 'CellExecutionFailed', + TextCellToolbarAction = 'TextCellToolbarAction', + WYSIWYGKeyboardAction = 'WYSIWYGKeyboardAction' } export const enum TelemetryPropertyName { diff --git a/src/sql/workbench/contrib/notebook/browser/cellViews/textCell.component.ts b/src/sql/workbench/contrib/notebook/browser/cellViews/textCell.component.ts index 4ed80e95cf..24a4f622b1 100644 --- a/src/sql/workbench/contrib/notebook/browser/cellViews/textCell.component.ts +++ b/src/sql/workbench/contrib/notebook/browser/cellViews/textCell.component.ts @@ -31,6 +31,7 @@ import { HTMLMarkdownConverter } from 'sql/workbench/contrib/notebook/browser/ht import { highlightSelectedText } from 'sql/workbench/contrib/notebook/browser/utils'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; +import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys'; export const TEXT_SELECTOR: string = 'text-cell-component'; const USER_SELECT_CLASS = 'actionselect'; @@ -80,19 +81,24 @@ export class TextCellComponent extends CellView implements OnInit, OnChanges { } else if ((keyEvent.ctrlKey || keyEvent.metaKey) && keyEvent.keyCode === KeyCode.KEY_B) { // Bold text preventDefaultAndExecCommand(e, 'bold'); + this.cellModel.notebookModel.sendNotebookTelemetryActionEvent(TelemetryKeys.NbTelemetryAction.WYSIWYGKeyboardAction, { transformAction: 'BOLD' }); } else if ((keyEvent.ctrlKey || keyEvent.metaKey) && keyEvent.keyCode === KeyCode.KEY_I) { // Italicize text preventDefaultAndExecCommand(e, 'italic'); + this.cellModel.notebookModel.sendNotebookTelemetryActionEvent(TelemetryKeys.NbTelemetryAction.WYSIWYGKeyboardAction, { transformAction: 'ITALIC' }); } else if ((keyEvent.ctrlKey || keyEvent.metaKey) && keyEvent.keyCode === KeyCode.KEY_U) { // Underline text preventDefaultAndExecCommand(e, 'underline'); + this.cellModel.notebookModel.sendNotebookTelemetryActionEvent(TelemetryKeys.NbTelemetryAction.WYSIWYGKeyboardAction, { transformAction: 'UNDERLINE' }); } else if ((keyEvent.ctrlKey || keyEvent.metaKey) && keyEvent.shiftKey && keyEvent.keyCode === KeyCode.KEY_K) { // Code Block preventDefaultAndExecCommand(e, 'formatBlock', false, 'pre'); + this.cellModel.notebookModel.sendNotebookTelemetryActionEvent(TelemetryKeys.NbTelemetryAction.WYSIWYGKeyboardAction, { transformAction: 'CODE' }); } else if ((keyEvent.ctrlKey || keyEvent.metaKey) && keyEvent.shiftKey && keyEvent.keyCode === KeyCode.KEY_H) { // Highlight Text DOM.EventHelper.stop(e, true); highlightSelectedText(); + this.cellModel.notebookModel.sendNotebookTelemetryActionEvent(TelemetryKeys.NbTelemetryAction.WYSIWYGKeyboardAction, { transformAction: 'HIGHLIGHT' }); } } } diff --git a/src/sql/workbench/contrib/notebook/browser/markdownToolbarActions.ts b/src/sql/workbench/contrib/notebook/browser/markdownToolbarActions.ts index 7916c0bb17..7d217e6a29 100644 --- a/src/sql/workbench/contrib/notebook/browser/markdownToolbarActions.ts +++ b/src/sql/workbench/contrib/notebook/browser/markdownToolbarActions.ts @@ -17,6 +17,7 @@ import { Position } from 'vs/editor/common/core/position'; import { MarkdownToolbarComponent } from 'sql/workbench/contrib/notebook/browser/cellViews/markdownToolbar.component'; import { IEditor } from 'vs/editor/common/editorCommon'; import { highlightSelectedText } from 'sql/workbench/contrib/notebook/browser/utils'; +import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys'; export class TransformMarkdownAction extends Action { @@ -35,9 +36,11 @@ export class TransformMarkdownAction extends Action { public override async run(context: any): Promise { if (!context?.cellModel?.showMarkdown && context?.cellModel?.showPreview) { this.transformDocumentCommand(); + this._cellModel.notebookModel.sendNotebookTelemetryActionEvent(TelemetryKeys.NbTelemetryAction.TextCellToolbarAction, { transformAction: this._type, mode: 'RichTextView' }); } else { let markdownTextTransformer = new MarkdownTextTransformer(this._notebookService, this._cellModel); await markdownTextTransformer.transformText(this._type); + this._cellModel.notebookModel.sendNotebookTelemetryActionEvent(TelemetryKeys.NbTelemetryAction.TextCellToolbarAction, { transformAction: this._type, mode: context.cellModel.showPreview ? 'Splitview' : 'MarkdownView' }); } }