提交 eef9baf1 编写于 作者: C Christof Marti

Revert "Update controller, simplify telemetry (#27152)"

This reverts commit 66bc0d13.
上级 9bd2d94c
......@@ -774,8 +774,7 @@ export class QuickOpenController extends Component implements IQuickOpenService
}
// Get results
let addedGroupLabel = false;
const handleResult = (result: IModel<QuickOpenEntry>, last = false) => {
const handleResult = (result) => {
if (this.currentResultToken === currentResultToken) {
// now is the time to show the input if we did not have set it before
......@@ -786,10 +785,10 @@ export class QuickOpenController extends Component implements IQuickOpenService
// merge history and default handler results
const handlerResults = (result && result.entries) || [];
addedGroupLabel = this.mergeResults(quickOpenModel, handlerResults, !addedGroupLabel ? resolvedHandler.getGroupLabel() : null, last) || addedGroupLabel;
this.mergeResults(quickOpenModel, handlerResults, resolvedHandler.getGroupLabel());
}
};
return resolvedHandler.getResults(value).then(result => handleResult(result, true), undefined, handleResult);
return resolvedHandler.getResults(value).then(handleResult, undefined, handleResult);
});
}
......@@ -846,7 +845,7 @@ export class QuickOpenController extends Component implements IQuickOpenService
return results.sort((elementA: EditorHistoryEntry, elementB: EditorHistoryEntry) => QuickOpenEntry.compare(elementA, elementB, normalizedSearchValue));
}
private mergeResults(quickOpenModel: QuickOpenModel, handlerResults: QuickOpenEntry[], groupLabel: string, last: boolean): boolean {
private mergeResults(quickOpenModel: QuickOpenModel, handlerResults: QuickOpenEntry[], groupLabel: string): void {
// Remove results already showing by checking for a "resource" property
const mapEntryToResource = this.mapEntriesToResource(quickOpenModel);
......@@ -863,21 +862,17 @@ export class QuickOpenController extends Component implements IQuickOpenService
// Show additional handler results below any existing results
if (additionalHandlerResults.length > 0) {
const autoFocusFirstEntry = (quickOpenModel.getEntries().length === 0); // the user might have selected another entry meanwhile in local history (see https://github.com/Microsoft/vscode/issues/20828)
if (groupLabel) {
const useTopBorder = quickOpenModel.getEntries().length > 0;
additionalHandlerResults[0] = new QuickOpenEntryGroup(additionalHandlerResults[0], groupLabel, useTopBorder);
}
const useTopBorder = quickOpenModel.getEntries().length > 0;
additionalHandlerResults[0] = new QuickOpenEntryGroup(additionalHandlerResults[0], groupLabel, useTopBorder);
quickOpenModel.addEntries(additionalHandlerResults);
this.quickOpenWidget.refresh(quickOpenModel, { autoFocusFirstEntry });
return !!groupLabel;
}
// Otherwise if no results are present (even from histoy) indicate this to the user
else if (quickOpenModel.getEntries().length === 0 && last) {
else if (quickOpenModel.getEntries().length === 0) {
quickOpenModel.addEntries([new PlaceholderQuickOpenEntry(nls.localize('noResultsFound1', "No results found"))]);
this.quickOpenWidget.refresh(quickOpenModel, { autoFocusFirstEntry: true });
}
return false;
}
private handleSpecificHandler(handlerDescriptor: QuickOpenHandlerDescriptor, value: string, currentResultToken: string): TPromise<void> {
......
......@@ -168,7 +168,8 @@ export class OpenAnythingHandler extends QuickOpenHandler {
resultPromises.push(this.openSymbolHandler.getResults(searchValue));
}
const handleResult = (result: QuickOpenModel | FileQuickOpenModel) => {
// Join and sort unified
const handleResults = (results: (QuickOpenModel | FileQuickOpenModel)[]) => {
this.pendingSearch = null;
// If the quick open widget has been closed meanwhile, ignore the result
......@@ -176,13 +177,16 @@ export class OpenAnythingHandler extends QuickOpenHandler {
return new QuickOpenModel();
}
const entries = result.entries;
// Combine file results and symbol results (if any)
const mergedResults: QuickOpenEntry[] = results.reduce((entries: QuickOpenEntry[], model: QuickOpenModel) => {
return entries.concat(model.entries);
}, []);
// Sort
const unsortedResultTime = Date.now();
const normalizedSearchValue = strings.stripWildcards(searchValue).toLowerCase();
const compare = (elementA: QuickOpenEntry, elementB: QuickOpenEntry) => QuickOpenEntry.compareByScore(elementA, elementB, searchValue, normalizedSearchValue, this.scorerCache);
const viewResults = arrays.top(entries, compare, OpenAnythingHandler.MAX_DISPLAYED_RESULTS);
const viewResults = arrays.top(mergedResults, compare, OpenAnythingHandler.MAX_DISPLAYED_RESULTS);
const sortedResultTime = Date.now();
// Apply range and highlights to file entries
......@@ -195,34 +199,38 @@ export class OpenAnythingHandler extends QuickOpenHandler {
}
});
// Telemetry
if (result instanceof FileQuickOpenModel) {
const fileSearchStats = (<FileQuickOpenModel>result).stats;
const duration = new Date().getTime() - startTime;
const data = this.createTimerEventData(startTime, {
searchLength: searchValue.length,
unsortedResultTime,
sortedResultTime,
resultCount: entries.length,
symbols: { fromCache: false },
files: fileSearchStats
});
this.telemetryService.publicLog('openAnything', objects.assign(data, { duration }));
let fileSearchStats: ISearchStats;
for (const result of results) {
if (result instanceof FileQuickOpenModel) {
fileSearchStats = (<FileQuickOpenModel>result).stats;
break;
}
}
const duration = new Date().getTime() - startTime;
const data = this.createTimerEventData(startTime, {
searchLength: searchValue.length,
unsortedResultTime,
sortedResultTime,
resultCount: mergedResults.length,
symbols: { fromCache: false },
files: fileSearchStats
});
this.telemetryService.publicLog('openAnything', objects.assign(data, { duration }));
return new QuickOpenModel(viewResults);
};
this.pendingSearch = new PPromise<QuickOpenModel, QuickOpenModel>((complete, error, progress) => {
// When any of the result promises return, forward the result as progress.
const processed = resultPromises.map(resultPromise =>
resultPromises.map(resultPromise => {
resultPromise.then(result => {
progress(handleResult(result));
})
);
progress(handleResults([result]));
});
});
// Complete the promise when all promises have completed.
TPromise.join(processed).then(() => {
TPromise.join(resultPromises).then(() => {
// We already sent the results via progress.
complete(new QuickOpenModel());
}, error => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册