mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Feature: Usage metrics (#2227)
* added user stats telemetry * finished daily, weekly and monthly events * code review comments * added wekly and monthly start dates * fixed the day condition using testing
This commit is contained in:
@@ -74,6 +74,7 @@ export class JobStepsViewComponent extends JobManagementView implements OnInit,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
let ownerUri: string = this._commonService.connectionManagementService.connectionInfo.ownerUri;
|
let ownerUri: string = this._commonService.connectionManagementService.connectionInfo.ownerUri;
|
||||||
this._tree = new Tree(this._tableContainer.nativeElement, {
|
this._tree = new Tree(this._tableContainer.nativeElement, {
|
||||||
controller: this._treeController,
|
controller: this._treeController,
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ export function resolveWorkbenchCommonProperties(storageService: IStorageService
|
|||||||
// result['common.instanceId'] = getOrCreateInstanceId(storageService);
|
// result['common.instanceId'] = getOrCreateInstanceId(storageService);
|
||||||
result['common.instanceId'] = '';
|
result['common.instanceId'] = '';
|
||||||
|
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
setUsageDates(storageService);
|
||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -51,3 +53,20 @@ export function resolveWorkbenchCommonProperties(storageService: IStorageService
|
|||||||
// storageService.store('telemetry.instanceId', result);
|
// storageService.store('telemetry.instanceId', result);
|
||||||
// return result;
|
// return result;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
function setUsageDates(storageService: IStorageService): void {
|
||||||
|
// daily last usage date
|
||||||
|
const appStartDate = new Date('January 1, 2000');
|
||||||
|
const dailyLastUseDate = storageService.get('telemetry.dailyLastUseDate') || appStartDate;
|
||||||
|
storageService.store('telemetry.dailyLastUseDate', dailyLastUseDate);
|
||||||
|
|
||||||
|
// weekly last usage date
|
||||||
|
const weeklyLastUseDate = storageService.get('telemetry.weeklyLastUseDate') || appStartDate;
|
||||||
|
storageService.store('telemetry.weeklyLastUseDate', weeklyLastUseDate);
|
||||||
|
|
||||||
|
// monthly last usage date
|
||||||
|
const monthlyLastUseDate = storageService.get('telemetry.monthlyLastUseDate') || appStartDate;
|
||||||
|
storageService.store('telemetry.monthlyLastUseDate', monthlyLastUseDate);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -291,6 +291,35 @@ export class WorkbenchShell {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
private sendUsageEvents(): void {
|
||||||
|
const dailyLastUseDate = Date.parse(this.storageService.get('telemetry.dailyLastUseDate'));
|
||||||
|
const weeklyLastUseDate = Date.parse(this.storageService.get('telemetry.weeklyLastUseDate'));
|
||||||
|
const monthlyLastUseDate = Date.parse(this.storageService.get('telemetry.monthlyLastUseDate'));
|
||||||
|
|
||||||
|
let today = new Date().toUTCString();
|
||||||
|
|
||||||
|
// daily user event
|
||||||
|
if (this.diffInDays(Date.parse(today), dailyLastUseDate) >= 1) {
|
||||||
|
// daily first use
|
||||||
|
this.telemetryService.publicLog('telemetry.dailyFirstUse', { dailyFirstUse: true });
|
||||||
|
this.storageService.store('telemetry.dailyLastUseDate', today);
|
||||||
|
}
|
||||||
|
|
||||||
|
// weekly user event
|
||||||
|
if (this.diffInDays(Date.parse(today), weeklyLastUseDate) >= 7) {
|
||||||
|
// weekly first use
|
||||||
|
this.telemetryService.publicLog('telemetry.weeklyFirstUse', { weeklyFirstUse: true });
|
||||||
|
this.storageService.store('telemetry.weeklyLastUseDate', today);
|
||||||
|
}
|
||||||
|
|
||||||
|
// monthly user events
|
||||||
|
if (this.diffInDays(Date.parse(today), monthlyLastUseDate) >= 30) {
|
||||||
|
this.telemetryService.publicLog('telemetry.monthlyUse', { monthlyFirstUse: true });
|
||||||
|
this.storageService.store('telemetry.monthlyLastUseDate', today);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private logLocalStorageMetrics(): void {
|
private logLocalStorageMetrics(): void {
|
||||||
if (this.lifecycleService.startupKind === StartupKind.ReloadedWindow || this.lifecycleService.startupKind === StartupKind.ReopenedWindow) {
|
if (this.lifecycleService.startupKind === StartupKind.ReloadedWindow || this.lifecycleService.startupKind === StartupKind.ReopenedWindow) {
|
||||||
return; // avoid logging localStorage metrics for reload/reopen, we prefer cold startup numbers
|
return; // avoid logging localStorage metrics for reload/reopen, we prefer cold startup numbers
|
||||||
@@ -400,6 +429,7 @@ export class WorkbenchShell {
|
|||||||
const errorTelemetry = new ErrorTelemetry(telemetryService);
|
const errorTelemetry = new ErrorTelemetry(telemetryService);
|
||||||
|
|
||||||
this.toUnbind.push(telemetryService, errorTelemetry);
|
this.toUnbind.push(telemetryService, errorTelemetry);
|
||||||
|
this.sendUsageEvents();
|
||||||
} else {
|
} else {
|
||||||
this.telemetryService = NullTelemetryService;
|
this.telemetryService = NullTelemetryService;
|
||||||
}
|
}
|
||||||
@@ -504,6 +534,11 @@ export class WorkbenchShell {
|
|||||||
this.toUnbind.push(addDisposableListener(window, EventType.RESIZE, () => this.layout()));
|
this.toUnbind.push(addDisposableListener(window, EventType.RESIZE, () => this.layout()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
private diffInDays(nowDate: number, lastUseDate: number): number {
|
||||||
|
return (nowDate - lastUseDate)/(24*3600*1000);
|
||||||
|
}
|
||||||
|
|
||||||
public onUnexpectedError(error: any): void {
|
public onUnexpectedError(error: any): void {
|
||||||
const errorMsg = toErrorMessage(error, true);
|
const errorMsg = toErrorMessage(error, true);
|
||||||
if (!errorMsg) {
|
if (!errorMsg) {
|
||||||
|
|||||||
Reference in New Issue
Block a user