mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
3491 Added Function to NodeTypes. Added Function to CanAlter and CanExecute. Added function support to css. Added drag and drop support for functions (#11990)
This commit is contained in:
@@ -127,7 +127,7 @@ export async function script(connectionProfile: IConnectionProfile, metadata: az
|
|||||||
|
|
||||||
if (script) {
|
if (script) {
|
||||||
let description = (metadata.schema && metadata.schema !== '') ? `${metadata.schema}.${metadata.name}` : metadata.name;
|
let description = (metadata.schema && metadata.schema !== '') ? `${metadata.schema}.${metadata.name}` : metadata.name;
|
||||||
const owner = await queryEditorService.newSqlEditor({ initalContent: script, description });
|
const owner = await queryEditorService.newSqlEditor({ initalContent: script, description }, connectionProfile.providerName);
|
||||||
// Connect our editor to the input connection
|
// Connect our editor to the input connection
|
||||||
let options: IConnectionCompletionOptions = {
|
let options: IConnectionCompletionOptions = {
|
||||||
params: { connectionType: ConnectionType.editor, runQueryOnCompletion: RunQueryOnConnectionMode.none, input: owner },
|
params: { connectionType: ConnectionType.editor, runQueryOnCompletion: RunQueryOnConnectionMode.none, input: owner },
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export class NodeContextUtils extends Disposable {
|
|||||||
NodeType.User, NodeType.UserDefinedTableType, NodeType.View]);
|
NodeType.User, NodeType.UserDefinedTableType, NodeType.View]);
|
||||||
static readonly canExecute = new Set([NodeType.StoredProcedure]);
|
static readonly canExecute = new Set([NodeType.StoredProcedure]);
|
||||||
static readonly canAlter = new Set([NodeType.AggregateFunction, NodeType.PartitionFunction, NodeType.ScalarValuedFunction,
|
static readonly canAlter = new Set([NodeType.AggregateFunction, NodeType.PartitionFunction, NodeType.ScalarValuedFunction,
|
||||||
NodeType.StoredProcedure, NodeType.TableValuedFunction, NodeType.View]);
|
NodeType.StoredProcedure, NodeType.TableValuedFunction, NodeType.View, NodeType.Function]);
|
||||||
|
|
||||||
// General node context keys
|
// General node context keys
|
||||||
static NodeProvider = new RawContextKey<string>('nodeProvider', undefined);
|
static NodeProvider = new RawContextKey<string>('nodeProvider', undefined);
|
||||||
|
|||||||
@@ -139,7 +139,9 @@ MenuRegistry.appendMenuItem(MenuId.ObjectExplorerItemContext, {
|
|||||||
id: commands.OE_SCRIPT_AS_EXECUTE_COMMAND_ID,
|
id: commands.OE_SCRIPT_AS_EXECUTE_COMMAND_ID,
|
||||||
title: localize('scriptExecute', "Script as Execute")
|
title: localize('scriptExecute', "Script as Execute")
|
||||||
},
|
},
|
||||||
when: ContextKeyExpr.and(ConnectionContextKey.Provider.isEqualTo('MSSQL'), TreeNodeContextKey.NodeType.isEqualTo('StoredProcedure'))
|
when: ContextKeyExpr.or(
|
||||||
|
ContextKeyExpr.and(ConnectionContextKey.Provider.isEqualTo('MSSQL'), TreeNodeContextKey.NodeType.isEqualTo('StoredProcedure')),
|
||||||
|
ContextKeyExpr.and(ConnectionContextKey.Provider.isEqualTo('KUSTO'), TreeNodeContextKey.NodeType.isEqualTo('Function')))
|
||||||
});
|
});
|
||||||
|
|
||||||
MenuRegistry.appendMenuItem(MenuId.ObjectExplorerItemContext, {
|
MenuRegistry.appendMenuItem(MenuId.ObjectExplorerItemContext, {
|
||||||
@@ -169,6 +171,10 @@ MenuRegistry.appendMenuItem(MenuId.ObjectExplorerItemContext, {
|
|||||||
ContextKeyExpr.and(
|
ContextKeyExpr.and(
|
||||||
ConnectionContextKey.Provider.isEqualTo('MSSQL'),
|
ConnectionContextKey.Provider.isEqualTo('MSSQL'),
|
||||||
TreeNodeContextKey.NodeType.isEqualTo(NodeType.TableValuedFunction)),
|
TreeNodeContextKey.NodeType.isEqualTo(NodeType.TableValuedFunction)),
|
||||||
|
ContextKeyExpr.and(
|
||||||
|
ConnectionContextKey.Provider.isEqualTo('KUSTO'),
|
||||||
|
TreeNodeContextKey.NodeType.isEqualTo(NodeType.Function)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import { TreeNode } from 'sql/workbench/services/objectExplorer/common/treeNode'
|
|||||||
import { AsyncServerTree } from 'sql/workbench/services/objectExplorer/browser/asyncServerTree';
|
import { AsyncServerTree } from 'sql/workbench/services/objectExplorer/browser/asyncServerTree';
|
||||||
|
|
||||||
export function supportsNodeNameDrop(nodeId: string): boolean {
|
export function supportsNodeNameDrop(nodeId: string): boolean {
|
||||||
if (nodeId === 'Table' || nodeId === 'Column' || nodeId === 'View') {
|
if (nodeId === 'Table' || nodeId === 'Column' || nodeId === 'View' || nodeId === 'Function') {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -97,7 +97,12 @@ export class ServerTreeDragAndDrop implements IDragAndDrop {
|
|||||||
if (supportsNodeNameDrop(element.nodeTypeId)) {
|
if (supportsNodeNameDrop(element.nodeTypeId)) {
|
||||||
escapedSchema = escapeString(element.metadata.schema);
|
escapedSchema = escapeString(element.metadata.schema);
|
||||||
escapedName = escapeString(element.metadata.name);
|
escapedName = escapeString(element.metadata.name);
|
||||||
|
let providerName = this.getProviderNameFromElement(element);
|
||||||
|
if (providerName === 'KUSTO') {
|
||||||
|
finalString = element.nodeTypeId !== 'Function' && escapedName.indexOf(' ') > 0 ? `[@"${escapedName}"]` : escapedName;
|
||||||
|
} else {
|
||||||
finalString = escapedSchema ? `[${escapedSchema}].[${escapedName}]` : `[${escapedName}]`;
|
finalString = escapedSchema ? `[${escapedSchema}].[${escapedName}]` : `[${escapedName}]`;
|
||||||
|
}
|
||||||
originalEvent.dataTransfer.setData(DataTransfers.RESOURCES, JSON.stringify([`${element.nodeTypeId}:${element.id}?${finalString}`]));
|
originalEvent.dataTransfer.setData(DataTransfers.RESOURCES, JSON.stringify([`${element.nodeTypeId}:${element.id}?${finalString}`]));
|
||||||
}
|
}
|
||||||
if (supportsFolderNodeNameDrop(element.nodeTypeId, element.label)) {
|
if (supportsFolderNodeNameDrop(element.nodeTypeId, element.label)) {
|
||||||
@@ -115,6 +120,14 @@ export class ServerTreeDragAndDrop implements IDragAndDrop {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getProviderNameFromElement(element: TreeNode): string | undefined {
|
||||||
|
if (element.connection) {
|
||||||
|
return element.connection.providerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.getProviderNameFromElement(element.parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public canDragToConnectionProfileGroup(source: any, targetConnectionProfileGroup: ConnectionProfileGroup) {
|
public canDragToConnectionProfileGroup(source: any, targetConnectionProfileGroup: ConnectionProfileGroup) {
|
||||||
let canDragOver: boolean = true;
|
let canDragOver: boolean = true;
|
||||||
|
|||||||
@@ -546,6 +546,9 @@
|
|||||||
background: url("SystemUnicodeCharacterString.svg") center center no-repeat;
|
background: url("SystemUnicodeCharacterString.svg") center center no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.vs .icon.function,
|
||||||
|
.vs-dark .icon.function,
|
||||||
|
.hc-black .icon.function,
|
||||||
.vs .icon.tablevaluedfunction,
|
.vs .icon.tablevaluedfunction,
|
||||||
.vs-dark .icon.tablevaluedfunction,
|
.vs-dark .icon.tablevaluedfunction,
|
||||||
.hc-black .icon.tablevaluedfunction {
|
.hc-black .icon.tablevaluedfunction {
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ export class MssqlNodeContext extends Disposable {
|
|||||||
static readonly canCreateOrDelete = new Set([NodeType.AggregateFunction, NodeType.PartitionFunction, NodeType.ScalarValuedFunction,
|
static readonly canCreateOrDelete = new Set([NodeType.AggregateFunction, NodeType.PartitionFunction, NodeType.ScalarValuedFunction,
|
||||||
NodeType.Schema, NodeType.StoredProcedure, NodeType.Table, NodeType.TableValuedFunction,
|
NodeType.Schema, NodeType.StoredProcedure, NodeType.Table, NodeType.TableValuedFunction,
|
||||||
NodeType.User, NodeType.UserDefinedTableType, NodeType.View]);
|
NodeType.User, NodeType.UserDefinedTableType, NodeType.View]);
|
||||||
static readonly canExecute = new Set([NodeType.StoredProcedure]);
|
static readonly canExecute = new Set([NodeType.StoredProcedure, NodeType.Function]);
|
||||||
static readonly canAlter = new Set([NodeType.AggregateFunction, NodeType.PartitionFunction, NodeType.ScalarValuedFunction,
|
static readonly canAlter = new Set([NodeType.AggregateFunction, NodeType.PartitionFunction, NodeType.ScalarValuedFunction,
|
||||||
NodeType.StoredProcedure, NodeType.TableValuedFunction, NodeType.View]);
|
NodeType.StoredProcedure, NodeType.TableValuedFunction, NodeType.View, NodeType.Function]);
|
||||||
|
|
||||||
// General node context keys
|
// General node context keys
|
||||||
static NodeProvider = new RawContextKey<string>('nodeProvider', undefined);
|
static NodeProvider = new RawContextKey<string>('nodeProvider', undefined);
|
||||||
|
|||||||
@@ -93,10 +93,11 @@ export class NodeType {
|
|||||||
public static ExternalTable = 'ExternalTable';
|
public static ExternalTable = 'ExternalTable';
|
||||||
public static ColumnMasterKey = 'ColumnMasterKey';
|
public static ColumnMasterKey = 'ColumnMasterKey';
|
||||||
public static ColumnEncryptionKey = 'ColumnEncryptionKey';
|
public static ColumnEncryptionKey = 'ColumnEncryptionKey';
|
||||||
|
public static Function = 'Function';
|
||||||
|
|
||||||
public static readonly SCRIPTABLE_OBJECTS = [NodeType.Table, NodeType.View, NodeType.Schema, NodeType.User, NodeType.UserDefinedTableType,
|
public static readonly SCRIPTABLE_OBJECTS = [NodeType.Table, NodeType.View, NodeType.Schema, NodeType.User, NodeType.UserDefinedTableType,
|
||||||
NodeType.StoredProcedure, NodeType.AggregateFunction, NodeType.PartitionFunction, NodeType.ScalarValuedFunction,
|
NodeType.StoredProcedure, NodeType.AggregateFunction, NodeType.PartitionFunction, NodeType.ScalarValuedFunction,
|
||||||
NodeType.TableValuedFunction];
|
NodeType.TableValuedFunction, NodeType.Function];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SqlThemeIcon {
|
export interface SqlThemeIcon {
|
||||||
|
|||||||
Reference in New Issue
Block a user