mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-29 17:23:25 -05:00
* Added Azure Log Analytics resource for generating AAD Token. * Fixed AzureResource * Removed debug code from connectionManagementService * Moved AzureLogAnalytics from AzureResource enum in azdata.d.ts to azdata.proposed.d.ts. Added azureLogAnalyticsResource to all azureSettings in providerSettings.ts * Updated endpoint for generating AAD Token for LogAnalytics for UsGov, UsNat, and China * Initial Commit of Azure Monitor Extension * Added extension name to azuremonitor package strings * Removed azureMonitor resource from germanyCloud in providerSettings * Added logic to exclude menuItems in object explorer for LogAnalytics * Changed exe from AzureMonitor to Kusto * Added if clause for queryName for new queries * Changed queryWindow name from KustoQuery to KQLQuery for Kusto and LogAnalytics. * Added LogAnalytics for setTaskBarContent * Added serialization and telemetry feature classes to AzureMonitor. Added references for azdata and vscode. * Added azure monitor light and dark icons * Added config for Dashboard in package.json * Added workspace information to dashboard * Added language support for LogAnalytics * Added Notebook support * Added Hide flag to package.json for databaseName * Changed providerId from LogAnalytics to LOGANALYTICS * Changed Workspace to Workspace ID in package.nls.json * Added support for Azure Widget browser * Changed fullName to use workspaceId when connecting * Changed providerId from alertsManagement to azureMonitor * Added .gitignore and *.vsix to vscodeignore. * Removed unused devDependencies * Code Review Feedback * Changed tsconfig.json to match Kusto and Sql * Changed package.json to match kusto package. * Changed tsconfig to validate unused params and implictAny. Changed existing code to satisfy build. * Fixed tsconfig to use the correct base class. * Added objectExplorerNodeProvider and all related classes. * Removed unused tmLanguage file * Added logic to to download extension from toolservice * Fixed launchArgs. Removed commented code from extension.ts. Changed config.json to use net5.0 * Added displayName to package.nls.json. Removed hide flag from databaseName. Other code review feedback. * Added readme info to AzureMonitor * Removed unused client-error-handler and ui-references files. Combined outputChannel in azuremonitorServer. Removed TODO from contextProvider. Renamed function in extension.ts. Removed unneeded 'use strict' from cancelableStream.ts. Removed second outputChannel from objectExplorerNodeProvider. * Removed unused files
88 lines
2.6 KiB
TypeScript
88 lines
2.6 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
'use strict';
|
|
|
|
import * as azdata from 'azdata';
|
|
import * as vscode from 'vscode';
|
|
import { ITreeNode } from './types';
|
|
|
|
type TreeNodePredicate = (node: TreeNode) => boolean;
|
|
|
|
export abstract class TreeNode implements ITreeNode {
|
|
private _parent?: TreeNode;
|
|
private _errorStatusCode?: number;
|
|
|
|
public get parent(): TreeNode | undefined {
|
|
return this._parent;
|
|
}
|
|
|
|
public set parent(node: TreeNode | undefined) {
|
|
this._parent = node;
|
|
}
|
|
|
|
public get errorStatusCode(): number | undefined {
|
|
return this._errorStatusCode;
|
|
}
|
|
|
|
public set errorStatusCode(error: number | undefined) {
|
|
this._errorStatusCode = error;
|
|
}
|
|
|
|
public generateNodePath(): string | undefined {
|
|
let path: string | undefined;
|
|
if (this.parent) {
|
|
path = this.parent.generateNodePath();
|
|
}
|
|
path = path ? `${path}/${this.nodePathValue}` : this.nodePathValue;
|
|
return path;
|
|
}
|
|
|
|
public findNodeByPath(path: string, _expandIfNeeded: boolean = false): Promise<TreeNode | undefined> {
|
|
let condition: TreeNodePredicate = (node: TreeNode) => node.getNodeInfo().nodePath === path || node.getNodeInfo().nodePath.startsWith(path);
|
|
let filter: TreeNodePredicate = (node: TreeNode) => path.startsWith(node.getNodeInfo().nodePath);
|
|
return TreeNode.findNode(this, condition, filter, true);
|
|
}
|
|
|
|
public static async findNode(node: TreeNode, condition: TreeNodePredicate, filter: TreeNodePredicate, expandIfNeeded: boolean): Promise<TreeNode | undefined> {
|
|
if (!node) {
|
|
return undefined;
|
|
}
|
|
|
|
if (condition(node)) {
|
|
return node;
|
|
}
|
|
|
|
let nodeInfo = node.getNodeInfo();
|
|
if (nodeInfo.isLeaf) {
|
|
return undefined;
|
|
}
|
|
|
|
// TODO #3813 support filtering by already expanded / not yet expanded
|
|
let children = await node.getChildren(false);
|
|
if (children) {
|
|
for (let child of children) {
|
|
if (filter && filter(child)) {
|
|
let childNode = await this.findNode(child, condition, filter, expandIfNeeded);
|
|
if (childNode) {
|
|
return childNode;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
/**
|
|
* The value to use for this node in the node path
|
|
*/
|
|
public abstract get nodePathValue(): string;
|
|
|
|
abstract getChildren(refreshChildren: boolean): TreeNode[] | Promise<TreeNode[]>;
|
|
abstract getTreeItem(): vscode.TreeItem | Promise<vscode.TreeItem>;
|
|
|
|
abstract getNodeInfo(): azdata.NodeInfo;
|
|
}
|