mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-25 01:25:36 -05:00
Batch messages on the exthost to not freeze ads (#8949)
* batch messages on the exthost to not freeze ads * clear out messages on query complete
This commit is contained in:
@@ -20,7 +20,7 @@ import { IThemeService, ITheme } from 'vs/platform/theme/common/themeService';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { OpenMode, ClickBehavior, ICancelableEvent, IControllerOptions } from 'vs/base/parts/tree/browser/treeDefaults';
|
||||
import { WorkbenchTreeController } from 'vs/platform/list/browser/listService';
|
||||
import { isArray } from 'vs/base/common/types';
|
||||
import { isArray, isString } from 'vs/base/common/types';
|
||||
import { Disposable, DisposableStore } from 'vs/base/common/lifecycle';
|
||||
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||
import { ScrollbarVisibility } from 'vs/base/common/scrollable';
|
||||
@@ -30,8 +30,13 @@ import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
|
||||
import { resultsErrorColor } from 'sql/platform/theme/common/colors';
|
||||
import { MessagePanelState } from 'sql/workbench/common/editor/query/messagePanelState';
|
||||
|
||||
export interface IResultMessageIntern extends IQueryMessage {
|
||||
export interface IResultMessageIntern {
|
||||
id?: string;
|
||||
batchId?: number;
|
||||
isError: boolean;
|
||||
time?: string | Date;
|
||||
message: string;
|
||||
selection?: ISelectionData;
|
||||
}
|
||||
|
||||
export interface IMessagePanelMessage {
|
||||
@@ -190,7 +195,7 @@ export class MessagePanel extends Disposable {
|
||||
let expandableTree: IExpandableTree = <IExpandableTree>this.tree;
|
||||
if (this.state && this.state.scrollPosition) {
|
||||
const previousScroll = this.state.scrollPosition;
|
||||
this.tree.refresh(this.model).then(() => {
|
||||
this.tree.refresh(this.model, false).then(() => {
|
||||
// Restore the previous scroll position when switching between tabs
|
||||
expandableTree.setScrollPosition(previousScroll);
|
||||
});
|
||||
@@ -290,13 +295,13 @@ class MessageDataSource implements IDataSource {
|
||||
|
||||
class MessageRenderer implements IRenderer {
|
||||
|
||||
getHeight(tree: ITree, element: IQueryMessage): number {
|
||||
getHeight(tree: ITree, element: IResultMessageIntern): number {
|
||||
const lineHeight = 22;
|
||||
let lines = element.message.split('\n').length;
|
||||
return lineHeight * lines;
|
||||
}
|
||||
|
||||
getTemplateId(tree: ITree, element: IQueryMessage): string {
|
||||
getTemplateId(tree: ITree, element: IResultMessageIntern): string {
|
||||
if (element instanceof Model) {
|
||||
return TemplateIds.MODEL;
|
||||
} else if (element.selection) {
|
||||
@@ -333,13 +338,16 @@ class MessageRenderer implements IRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
renderElement(tree: ITree, element: IQueryMessage, templateId: string, templateData: IMessageTemplate | IBatchTemplate): void {
|
||||
renderElement(tree: ITree, element: IResultMessageIntern, templateId: string, templateData: IMessageTemplate | IBatchTemplate): void {
|
||||
if (templateId === TemplateIds.MESSAGE || templateId === TemplateIds.ERROR) {
|
||||
let data: IMessageTemplate = templateData;
|
||||
data.message.innerText = element.message;
|
||||
} else if (templateId === TemplateIds.BATCH) {
|
||||
let data = templateData as IBatchTemplate;
|
||||
data.timeStamp.innerText = element.time;
|
||||
if (isString(element.time)) {
|
||||
element.time = new Date(element.time!);
|
||||
}
|
||||
data.timeStamp.innerText = (element.time as Date).toLocaleTimeString();
|
||||
data.message.innerText = element.message;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user