提交 7d2b5935 编写于 作者: J Johannes Rieken

debt - compute stats when scoring and filtering happens

上级 3d3cda18
......@@ -574,28 +574,15 @@ export class SuggestWidget implements IContentWidget, IDisposable {
this.completionModel = null;
} else {
// TODO@joao,joh move this to a better place
let snippetCount = 0;
let textCount = 0;
this.completionModel.items.forEach((item, index) => {
switch (item.suggestion.type) {
case 'snippet': snippetCount++; break;
case 'text': textCount++; break;
}
});
const {stats} = this.completionModel;
stats['wasAutomaticallyTriggered'] = !!isAuto;
this.telemetryService.publicLog('suggestWidget', stats);
this.list.splice(0, this.list.length, ...this.completionModel.items);
this.list.setFocus(this.completionModel.topScoreIdx);
this.list.reveal(this.completionModel.topScoreIdx, 0);
this.setState(State.Open);
this.telemetryService.publicLog('suggestWidget', {
suggestionCount: visibleCount,
snippetCount,
textCount,
wasAutomaticallyTriggered: !!isAuto
});
}
}
......
......@@ -27,6 +27,13 @@ export class CompletionItem {
}
}
export interface CompletionStats {
suggestionCount: number;
snippetCount: number;
textCount: number;
[name: string]: any;
}
export class LineContext {
leadingLineContent: string;
characterCountDelta: number;
......@@ -41,6 +48,7 @@ export class CompletionModel {
private _filteredItems: CompletionItem[] = undefined;
private _topScoreIdx: number;
private _stats: CompletionStats;
constructor(raw: ISuggestionItem[], lineContext: LineContext) {
this.raw = raw;
......@@ -77,9 +85,17 @@ export class CompletionModel {
return this._topScoreIdx;
}
get stats(): CompletionStats {
if (!this._filteredItems) {
this._filterAndScore();
}
return this._stats;
}
private _filterAndScore(): void {
this._filteredItems = [];
this._topScoreIdx = -1;
this._stats = { suggestionCount: 0, snippetCount: 0, textCount: 0 };
const {leadingLineContent, characterCountDelta} = this._lineContext;
let word = '';
......@@ -121,6 +137,13 @@ export class CompletionModel {
topScore = score;
this._topScoreIdx = this._filteredItems.length - 1;
}
// update stats
this._stats.suggestionCount++;
switch (item.suggestion.type) {
case 'snippet': this._stats.snippetCount++; break;
case 'text': this._stats.textCount++; break;
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册