From 87a7c659f23bea483966eba6c3aa54b71b74aaf8 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Sat, 20 Jun 2020 17:18:25 -0700 Subject: [PATCH] Add BDC/Arc welcome views (#11020) * add BDC/Arc welcome views * remove en-us --- extensions/arc/package.json | 8 ++- extensions/arc/package.nls.json | 1 + extensions/big-data-cluster/package.json | 18 ++++--- extensions/big-data-cluster/package.nls.json | 3 +- .../src/bigDataCluster/constants.ts | 1 - .../tree/connectControllerNode.ts | 50 ------------------- .../tree/controllerTreeDataProvider.ts | 18 +++---- .../bigDataCluster/tree/controllerTreeNode.ts | 2 +- extensions/big-data-cluster/src/commands.ts | 2 +- extensions/big-data-cluster/src/extension.ts | 12 ++--- 10 files changed, 36 insertions(+), 79 deletions(-) delete mode 100644 extensions/big-data-cluster/src/bigDataCluster/tree/connectControllerNode.ts diff --git a/extensions/arc/package.json b/extensions/arc/package.json index dcbb769fc6..55aa00ab29 100644 --- a/extensions/arc/package.json +++ b/extensions/arc/package.json @@ -134,7 +134,13 @@ "description": "%arc.ignoreSslVerification.desc%" } } - } + }, + "viewsWelcome": [ + { + "view": "azureArc", + "contents": "%arc.view.welcome%" + } + ] }, "dependencies": { "request": "^2.88.0", diff --git a/extensions/arc/package.nls.json b/extensions/arc/package.nls.json index fdf3452a14..16ab2f243f 100644 --- a/extensions/arc/package.nls.json +++ b/extensions/arc/package.nls.json @@ -7,6 +7,7 @@ "arc.managePostgres": "Manage Postgres", "arc.manageArcController": "Manage Arc Controller", "arc.view.title" : "Azure Arc Controllers", + "arc.view.welcome" : "No Azure Arc controllers registered. [Learn More](https://azure.microsoft.com/services/azure-arc/)\n[Connect Controller](command:arc.connectToController)", "command.createController.title" : "Create New Controller", "command.connectToController.title": "Connect to Existing Controller", "command.removeController.title": "Remove Controller", diff --git a/extensions/big-data-cluster/package.json b/extensions/big-data-cluster/package.json index 510e2a3877..3c22cbd525 100644 --- a/extensions/big-data-cluster/package.json +++ b/extensions/big-data-cluster/package.json @@ -17,7 +17,7 @@ "onCommand:bigDataClusters.command.deletemount", "onCommand:bigDataClusters.command.createController", "onCommand:bigDataClusters.command.connectController", - "onCommand:bigDataClusters.command.deleteController", + "onCommand:bigDataClusters.command.removeController", "onCommand:bigDataClusters.command.manageController", "onCommand:bigDataClusters.command.refreshController", "onView:sqlBigDataCluster" @@ -47,7 +47,7 @@ "when": "false" }, { - "command": "bigDataClusters.command.deleteController", + "command": "bigDataClusters.command.removeController", "when": "false" }, { @@ -95,7 +95,7 @@ "group": "navigation@2" }, { - "command": "bigDataClusters.command.deleteController", + "command": "bigDataClusters.command.removeController", "when": "view == sqlBigDataCluster && viewItem == bigDataClusters.itemType.controllerNode", "group": "navigation@3" } @@ -130,8 +130,8 @@ "icon": "$(disconnect)" }, { - "command": "bigDataClusters.command.deleteController", - "title": "%command.deleteController.title%", + "command": "bigDataClusters.command.removeController", + "title": "%command.removeController.title%", "when": "viewItem == bigDataClusters.itemType.controllerNode" }, { @@ -166,7 +166,13 @@ "description": "%bdc.ignoreSslVerification.desc%" } } - } + }, + "viewsWelcome": [ + { + "view": "sqlBigDataCluster", + "contents": "%bdc.view.welcome%" + } + ] }, "dependencies": { "ads-kerberos": "^1.1.3", diff --git a/extensions/big-data-cluster/package.nls.json b/extensions/big-data-cluster/package.nls.json index 0c93686c45..a0143ddd14 100644 --- a/extensions/big-data-cluster/package.nls.json +++ b/extensions/big-data-cluster/package.nls.json @@ -3,12 +3,13 @@ "text.sqlServerBigDataClusters": "SQL Server Big Data Clusters", "command.connectController.title": "Connect to Existing Controller", "command.createController.title": "Create New Controller", - "command.deleteController.title" : "Delete", + "command.removeController.title" : "Remove Controller", "command.refreshController.title" : "Refresh", "command.manageController.title" : "Manage", "command.mount.title" : "Mount HDFS", "command.refreshmount.title" : "Refresh Mount", "command.deletemount.title" : "Delete Mount", "bdc.configuration.title" : "Big Data Cluster", + "bdc.view.welcome" : "No SQL Big Data Cluster controllers registered. [Learn More](https://docs.microsoft.com/sql/big-data-cluster/big-data-cluster-overview)\n[Connect Controller](command:bigDataClusters.command.connectController)", "bdc.ignoreSslVerification.desc" : "Ignore SSL verification errors against SQL Server Big Data Cluster endpoints such as HDFS, Spark, and Controller if true" } diff --git a/extensions/big-data-cluster/src/bigDataCluster/constants.ts b/extensions/big-data-cluster/src/bigDataCluster/constants.ts index 3ab34933b6..26f9de0804 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/constants.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/constants.ts @@ -8,7 +8,6 @@ import * as vscode from 'vscode'; export enum BdcItemType { controllerRoot = 'bigDataClusters.itemType.controllerRootNode', controller = 'bigDataClusters.itemType.controllerNode', - connectController = 'bigDataClusters.itemType.connectControllerNode', loadingController = 'bigDataClusters.itemType.loadingControllerNode' } diff --git a/extensions/big-data-cluster/src/bigDataCluster/tree/connectControllerNode.ts b/extensions/big-data-cluster/src/bigDataCluster/tree/connectControllerNode.ts deleted file mode 100644 index aa6980b7b5..0000000000 --- a/extensions/big-data-cluster/src/bigDataCluster/tree/connectControllerNode.ts +++ /dev/null @@ -1,50 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as nls from 'vscode-nls'; -import * as azdata from 'azdata'; -import * as vscode from 'vscode'; -import { TreeNode } from './treeNode'; -import { BdcItemType } from '../constants'; - -const localize = nls.loadMessageBundle(); - -export class ConnectControllerNode extends TreeNode { - private readonly nodeType: string; - - constructor() { - super(localize('textBigDataClusterControllerWithDots', "Connect to SQL Server Big Data Cluster controller...")); - this.nodeType = BdcItemType.connectController; - } - - public async getChildren(): Promise { - return []; - } - - public getTreeItem(): vscode.TreeItem { - let item = new vscode.TreeItem(this.label, vscode.TreeItemCollapsibleState.None); - item.command = { - title: localize('textConnectToController', "Connect to Controller"), - command: 'bigDataClusters.command.connectController', - arguments: [this] - }; - item.contextValue = this.nodeType; - return item; - } - - public getNodeInfo(): azdata.NodeInfo { - return { - label: this.label, - isLeaf: this.isLeaf, - errorMessage: undefined, - metadata: undefined, - nodePath: this.nodePath, - nodeStatus: undefined, - nodeType: this.nodeType, - iconType: this.nodeType, - nodeSubType: undefined - }; - } -} diff --git a/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeDataProvider.ts b/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeDataProvider.ts index 4590338273..fb3212c9ba 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeDataProvider.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeDataProvider.ts @@ -8,7 +8,6 @@ import * as azdata from 'azdata'; import * as nls from 'vscode-nls'; import { TreeNode } from './treeNode'; import { IControllerTreeChangeHandler } from './controllerTreeChangeHandler'; -import { ConnectControllerNode } from './connectControllerNode'; import { ControllerRootNode, ControllerNode } from './controllerTreeNode'; import { showErrorMessage } from '../utils'; import { LoadingControllerNode } from './loadingControllerNode'; @@ -79,12 +78,12 @@ export class ControllerTreeDataProvider implements vscode.TreeDataProvider 0) { for (let i = 0; i < nodes.length; ++i) { - if (nodes[i] instanceof ConnectControllerNode || - nodes[i] instanceof LoadingControllerNode + if (nodes[i] instanceof LoadingControllerNode ) { nodes.splice(i--, 1); } @@ -142,11 +140,7 @@ export class ControllerTreeDataProvider implements vscode.TreeDataProvider this.root.addChild(node)); - } + treeNodes.forEach(node => this.root.addChild(node)); this.notifyNodeChanged(); } catch (err) { // Reset so we can try again if the tree refreshes diff --git a/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeNode.ts b/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeNode.ts index 24e448eb62..822ca8ee46 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeNode.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeNode.ts @@ -128,7 +128,7 @@ export class ControllerRootNode extends ControllerTreeNode { } } - public deleteControllerNode(url: string, auth: AuthType, username: string): ControllerNode[] | undefined { + public removeControllerNode(url: string, auth: AuthType, username: string): ControllerNode[] | undefined { if (!url || (auth === 'basic' && !username)) { return undefined; } diff --git a/extensions/big-data-cluster/src/commands.ts b/extensions/big-data-cluster/src/commands.ts index 6e538fcb11..af540ea899 100644 --- a/extensions/big-data-cluster/src/commands.ts +++ b/extensions/big-data-cluster/src/commands.ts @@ -6,7 +6,7 @@ export const ManageControllerCommand = 'bigDataClusters.command.manageController'; export const CreateControllerCommand = 'bigDataClusters.command.createController'; export const ConnectControllerCommand = 'bigDataClusters.command.connectController'; -export const DeleteControllerCommand = 'bigDataClusters.command.deleteController'; +export const RemoveControllerCommand = 'bigDataClusters.command.removeController'; export const RefreshControllerCommand = 'bigDataClusters.command.refreshController'; export const MountHdfsCommand = 'bigDataClusters.command.mount'; export const RefreshMountCommand = 'bigDataClusters.command.refreshmount'; diff --git a/extensions/big-data-cluster/src/extension.ts b/extensions/big-data-cluster/src/extension.ts index 7713c3bb7b..1572d7575e 100644 --- a/extensions/big-data-cluster/src/extension.ts +++ b/extensions/big-data-cluster/src/extension.ts @@ -50,7 +50,7 @@ function registerCommands(context: vscode.ExtensionContext, treeDataProvider: Co runThrottledAction(commands.CreateControllerCommand, () => vscode.commands.executeCommand('azdata.resource.deploy')); }); - vscode.commands.registerCommand(commands.DeleteControllerCommand, async (node: TreeNode) => { + vscode.commands.registerCommand(commands.RemoveControllerCommand, async (node: TreeNode) => { await deleteBdcController(treeDataProvider, node); }); @@ -180,20 +180,20 @@ async function deleteBdcController(treeDataProvider: ControllerTreeDataProvider, let options = { ignoreFocusOut: false, - placeHolder: localize('textConfirmDeleteController', "Are you sure you want to delete \'{0}\'?", controllerNode.label) + placeHolder: localize('textConfirmRemoveController', "Are you sure you want to remove \'{0}\'?", controllerNode.label) }; let result = await vscode.window.showQuickPick(Object.keys(choices), options); let remove: boolean = !!(result && choices[result]); if (remove) { - await deleteControllerInternal(treeDataProvider, controllerNode); + await removeControllerInternal(treeDataProvider, controllerNode); } return remove; } -async function deleteControllerInternal(treeDataProvider: ControllerTreeDataProvider, controllerNode: ControllerNode): Promise { - const deleted = treeDataProvider.deleteController(controllerNode.url, controllerNode.auth, controllerNode.username); - if (deleted) { +async function removeControllerInternal(treeDataProvider: ControllerTreeDataProvider, controllerNode: ControllerNode): Promise { + const removed = treeDataProvider.removeController(controllerNode.url, controllerNode.auth, controllerNode.username); + if (removed) { await treeDataProvider.saveControllers(); } }