Skip to content

Commit 63aa4f4

Browse files
authored
Fix a few issues with Messages tab in query result pane (#18050)
* add execution time msg and fix first missing msg * add link -> editor selection in message * fix message timestamp & styling * remove unused code * remove dup * remove newline * lint
1 parent aa52254 commit 63aa4f4

File tree

5 files changed

+44
-56
lines changed

5 files changed

+44
-56
lines changed

src/controllers/mainController.ts

+2-15
Original file line numberDiff line numberDiff line change
@@ -493,21 +493,8 @@ export default class MainController implements vscode.Disposable {
493493
this._outputContentProvider.setQueryResultWebviewController(
494494
this._queryResultWebviewController,
495495
);
496-
this._queryResultWebviewController.setRowRequestHandler(
497-
(
498-
uri: string,
499-
batchId: number,
500-
resultId: number,
501-
rowStart: number,
502-
numberOfRows: number,
503-
) =>
504-
this._outputContentProvider.rowRequestHandler(
505-
uri,
506-
batchId,
507-
resultId,
508-
rowStart,
509-
numberOfRows,
510-
),
496+
this._queryResultWebviewController.setSqlOutputContentProvider(
497+
this._outputContentProvider,
511498
);
512499

513500
// Init connection manager and connection MRU

src/models/sqlOutputContentProvider.ts

+13-1
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,6 @@ export class SqlOutputContentProvider {
377377
this._panels.get(uri).proxy.sendEvent("start", panelUri);
378378
} else {
379379
await vscode.commands.executeCommand("queryResult.focus");
380-
this._queryResultWebviewController.addQueryResultState(uri);
381380
this._queryResultWebviewController.getQueryResultState(
382381
uri,
383382
).tabStates.resultPaneTab = QueryResultPaneTabs.Messages;
@@ -465,6 +464,15 @@ export class SqlOutputContentProvider {
465464
.get(uri)
466465
.proxy.sendEvent("complete", totalMilliseconds);
467466
} else {
467+
this._queryResultWebviewController
468+
.getQueryResultState(uri)
469+
.messages.push({
470+
message:
471+
LocalizedConstants.elapsedTimeLabel(
472+
totalMilliseconds,
473+
),
474+
isError: hasError,
475+
});
468476
this._queryResultWebviewController.getQueryResultState(
469477
uri,
470478
).tabStates.resultPaneTab =
@@ -481,6 +489,10 @@ export class SqlOutputContentProvider {
481489
this._queryResultWebviewController.getQueryResultState(
482490
uri,
483491
);
492+
// reset query result state for the editor
493+
this._queryResultWebviewController.addQueryResultState(
494+
uri,
495+
);
484496
}
485497
},
486498
);

src/queryResult/queryResultWebViewController.ts

+12-19
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,15 @@
66
import * as vscode from "vscode";
77
import * as qr from "../sharedInterfaces/queryResult";
88
import { ReactWebviewViewController } from "../controllers/reactWebviewViewController";
9+
import { SqlOutputContentProvider } from "../models/sqlOutputContentProvider";
910

1011
export class QueryResultWebviewController extends ReactWebviewViewController<
1112
qr.QueryResultWebviewState,
1213
qr.QueryResultReducers
1314
> {
1415
private _queryResultStateMap: Map<string, qr.QueryResultWebviewState> =
1516
new Map<string, qr.QueryResultWebviewState>();
16-
private _rowRequestHandler:
17-
| ((
18-
uri: string,
19-
batchId: number,
20-
resultId: number,
21-
rowStart: number,
22-
numberOfRows: number,
23-
) => Promise<qr.ResultSetSubset>)
24-
| undefined;
17+
private _sqlOutputContentProvider: SqlOutputContentProvider;
2518

2619
constructor(context: vscode.ExtensionContext) {
2720
super(context, "queryResult", {
@@ -40,14 +33,20 @@ export class QueryResultWebviewController extends ReactWebviewViewController<
4033

4134
private registerRpcHandlers() {
4235
this.registerRequestHandler("getRows", async (message) => {
43-
return await this._rowRequestHandler(
36+
return await this._sqlOutputContentProvider.rowRequestHandler(
4437
message.uri,
4538
message.batchId,
4639
message.resultId,
4740
message.rowStart,
4841
message.numberOfRows,
4942
);
5043
});
44+
this.registerRequestHandler("setEditorSelection", async (message) => {
45+
return await this._sqlOutputContentProvider.editorSelectionRequestHandler(
46+
message.uri,
47+
message.selectionData,
48+
);
49+
});
5150
this.registerReducer("setResultTab", async (state, payload) => {
5251
state.tabStates.resultPaneTab = payload.tabId;
5352
return state;
@@ -74,15 +73,9 @@ export class QueryResultWebviewController extends ReactWebviewViewController<
7473
return res;
7574
}
7675

77-
public setRowRequestHandler(
78-
handler: (
79-
uri: string,
80-
batchId: number,
81-
resultId: number,
82-
rowStart: number,
83-
numberOfRows: number,
84-
) => Promise<qr.ResultSetSubset>,
76+
public setSqlOutputContentProvider(
77+
provider: SqlOutputContentProvider,
8578
): void {
86-
this._rowRequestHandler = handler;
79+
this._sqlOutputContentProvider = provider;
8780
}
8881
}

src/reactviews/pages/QueryResult/queryResultPane.tsx

+16-20
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ export const QueryResultPane = () => {
112112

113113
const sizingOptions: TableColumnSizingOptions = {
114114
time: {
115-
minWidth: 50,
116-
idealWidth: 50,
117-
defaultWidth: 50,
115+
minWidth: 100,
116+
idealWidth: 100,
117+
defaultWidth: 100,
118118
},
119119
message: {
120120
minWidth: 500,
@@ -272,19 +272,6 @@ export const QueryResultPane = () => {
272272
{...columnSizing_unstable.getTableProps()}
273273
ref={tableRef}
274274
>
275-
{/* <TableHeader>
276-
<TableRow>
277-
{
278-
columnsDef.map((column) => {
279-
return <TableHeaderCell
280-
{...columnSizing_unstable.getTableHeaderCellProps(column.columnId)}
281-
key={column.columnId}>
282-
{column.renderHeaderCell()}
283-
</TableHeaderCell>
284-
})
285-
}
286-
</TableRow>
287-
</TableHeader> */}
288275
<TableBody>
289276
{rows.map((row, index) => {
290277
return (
@@ -294,7 +281,9 @@ export const QueryResultPane = () => {
294281
"time",
295282
)}
296283
>
297-
{row.item.time}
284+
{row.item.batchId === undefined
285+
? row.item.time
286+
: null}
298287
</TableCell>
299288
<TableCell
300289
{...columnSizing_unstable.getTableCellProps(
@@ -307,9 +296,16 @@ export const QueryResultPane = () => {
307296
<>
308297
{" "}
309298
<Link
310-
onClick={() => {
311-
console.log(
312-
"TODO open link",
299+
onClick={async () => {
300+
await webViewState.extensionRpc.call(
301+
"setEditorSelection",
302+
{
303+
uri: metadata?.uri,
304+
selectionData:
305+
row
306+
.item
307+
.selection,
308+
},
313309
);
314310
}}
315311
>

src/sharedInterfaces/queryResult.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export interface IMessageLink {
5050

5151
export interface IMessage {
5252
batchId?: number;
53-
time: string;
53+
time?: string;
5454
message: string;
5555
isError: boolean;
5656
link?: IMessageLink;

0 commit comments

Comments
 (0)