fix refresh node and add sample (#16888)

This commit is contained in:
Alan Ren
2021-08-25 14:52:45 -07:00
committed by GitHub
parent fe1f8fb2f3
commit ab1112bfb3
4 changed files with 58 additions and 29 deletions

View File

@@ -44,6 +44,10 @@
{
"command": "sqlservices.openModelViewDashboard",
"title": "sqlservices.openModelViewDashboard"
},
{
"command": "sqlservices.updateObjectExplorerNode",
"title": "sqlservices.updateObjectExplorerNode"
}
],
"dashboard.tabs": [
@@ -193,8 +197,8 @@
"menus": {
"objectExplorer/item/context": [
{
"command": "sqlservices.openDialog",
"when": "nodeType =~ /^(Database|Server)$/ && connectionProvider == TESTPROVIDER"
"command": "sqlservices.updateObjectExplorerNode",
"when": "connectionProvider == TESTPROVIDER"
}
]
}

View File

@@ -87,6 +87,10 @@ export default class MainController implements vscode.Disposable {
dashboard.openModelViewDashboard(this.context);
});
vscode.commands.registerCommand('sqlservices.updateObjectExplorerNode', async (context: azdata.ObjectExplorerContext) => {
await objectExplorer.updateNode(context);
});
return Promise.resolve(true);
}

View File

@@ -6,6 +6,8 @@ import * as azdata from 'azdata';
import * as vscode from 'vscode';
import { ProviderId } from './connectionProvider';
const RootNode: string = 'root';
/**
* This class implements the ObjectExplorerProvider interface that is responsible for providing the connection tree view content.
*/
@@ -28,7 +30,7 @@ export class ObjectExplorerProvider implements azdata.ObjectExplorerProvider {
sessionId: '1',
success: true,
rootNode: {
nodePath: 'root',
nodePath: RootNode,
nodeType: 'server',
label: 'abc',
isLeaf: false
@@ -55,34 +57,20 @@ export class ObjectExplorerProvider implements azdata.ObjectExplorerProvider {
handler(e);
});
}
/**
* This is called when a node is being expanded for the first time
*/
expandNode(nodeInfo: azdata.ExpandNodeInfo): Thenable<boolean> {
setTimeout(() => {
this.onExpandCompletedEmitter.fire({
sessionId: nodeInfo.sessionId,
nodePath: nodeInfo.nodePath,
nodes: [
{
nodePath: 'root/1',
nodeType: '',
icon: {
light: this.context.asAbsolutePath('images/group.svg'),
dark: this.context.asAbsolutePath('images/group_inverse.svg')
},
label: 'obj 1',
isLeaf: false
}, {
nodePath: 'root/2',
nodeType: '',
icon: azdata.SqlThemeIcon.Column,
label: 'obj 2',
isLeaf: false
}
]
});
}, 500);
this.executeExpandNode(nodeInfo);
return Promise.resolve(true);
}
/**
* This is called when a node is being refreshed, This is triggered by the 'Refresh' context menu item of the node.
*/
refreshNode(nodeInfo: azdata.ExpandNodeInfo): Thenable<boolean> {
this.executeExpandNode(nodeInfo);
return Promise.resolve(true);
}
findNodes(findNodesInfo: azdata.FindNodesInfo): Thenable<azdata.ObjectExplorerFindNodesResponse> {
@@ -95,4 +83,37 @@ export class ObjectExplorerProvider implements azdata.ObjectExplorerProvider {
}
handle?: number;
providerId: string = ProviderId;
private executeExpandNode(nodeInfo: azdata.ExpandNodeInfo): void {
setTimeout(() => {
const timestamp = new Date(Date.now()).toLocaleTimeString();
this.onExpandCompletedEmitter.fire({
sessionId: nodeInfo.sessionId,
nodePath: nodeInfo.nodePath,
nodes: [
{
nodePath: nodeInfo.nodePath + '/1',
nodeType: '',
icon: {
light: this.context.asAbsolutePath('images/group.svg'),
dark: this.context.asAbsolutePath('images/group_inverse.svg')
},
label: `obj 1 - ${timestamp}`,
isLeaf: false
}, {
nodePath: nodeInfo.nodePath + '/2',
nodeType: '',
icon: azdata.SqlThemeIcon.Column,
label: `obj 2 - ${timestamp}`,
isLeaf: false
}
]
});
}, 500);
}
public async updateNode(node: azdata.ObjectExplorerContext): Promise<void> {
const node1 = await azdata.objectexplorer.getNode(node.connectionProfile.id, node.isConnectionNode ? RootNode : node.nodeInfo.nodePath);
await node1.refresh();
}
}

View File

@@ -44,7 +44,7 @@ export interface IServerTreeView {
deleteObjectExplorerNodeAndRefreshTree(profile: ConnectionProfile): Promise<void>;
getSelection(): Array<ServerTreeElement>;
isFocused(): boolean;
refreshElement(node: TreeNode): Promise<void>;
refreshElement(node: ServerTreeElement): Promise<void>;
readonly treeActionProvider: ServerTreeActionProvider;
isExpanded(node?: ServerTreeElement): boolean;
reveal(node: ServerTreeElement): Promise<void>;
@@ -722,7 +722,7 @@ export class ObjectExplorerService implements IObjectExplorerService {
if (!treeNode) {
return undefined;
}
await this._serverTreeView?.refreshElement(treeNode);
await this._serverTreeView?.refreshElement(this.getTreeItem(treeNode));
if (treeNode?.children?.length ?? -1 > 0) {
await treeNode?.setExpandedState(TreeItemCollapsibleState.Expanded);
}