/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // This is the place for API experiments and proposal. import * as vscode from 'vscode'; declare module 'azdata' { export namespace queryeditor { /** * Opens an untitled text document. The editor will prompt the user for a file * path when the document is to be saved. The `options` parameter allows to * specify the *content* of the document. * * @param options Options to control how the document will be created. * @param providerId Optional provider ID this editor will be associated with. Defaults to MSSQL. * @return A promise that resolves to a [document](#QueryDocument). */ export function openQueryDocument(options?: { content?: string; }, providerId?: string): Thenable; } export namespace nb { export interface NotebookDocument { /** * Sets the trust mode for the notebook document. */ setTrusted(state: boolean): void; } export interface IStandardKernel { readonly blockedOnSAW?: boolean; } export interface IKernelChangedArgs { nbKernelAlias?: string } export interface ICellOutput { /** * Unique identifier for this cell output. */ id?: string; } export interface IExecuteResult { data: any; } export interface IExecuteResultUpdate { output_type: string; resultSet: ResultSetSummary; data: any; } export interface IExecuteRequest { /** * URI of the notebook document that is sending this execute request. */ notebookUri?: vscode.Uri; /** * The index of the cell which the code being executed is from. */ cellIndex: number; } export interface INotebookMetadata { connection_name?: string; multi_connection_mode?: boolean; } export interface ICellMetadata { connection_name?: string; } export interface ICellContents { attachments?: ICellAttachments; } export type ICellAttachments = { [key: string]: ICellAttachment }; export type ICellAttachment = { [key: string]: string }; export interface SessionManager { /** * Shutdown all sessions. */ shutdownAll(): Thenable; /** * Disposes the session manager. */ dispose(): void; } /** * An event that is emitted when a [notebook document](#NotebookDocument) is closed. */ export const onDidCloseNotebookDocument: vscode.Event; } export type SqlDbType = 'BigInt' | 'Binary' | 'Bit' | 'Char' | 'DateTime' | 'Decimal' | 'Float' | 'Image' | 'Int' | 'Money' | 'NChar' | 'NText' | 'NVarChar' | 'Real' | 'UniqueIdentifier' | 'SmallDateTime' | 'SmallInt' | 'SmallMoney' | 'Text' | 'Timestamp' | 'TinyInt' | 'VarBinary' | 'VarChar' | 'Variant' | 'Xml' | 'Udt' | 'Structured' | 'Date' | 'Time' | 'DateTime2' | 'DateTimeOffset'; export interface SimpleColumnInfo { name: string; /** * This is expected to match the SqlDbTypes for serialization purposes */ dataTypeName: SqlDbType; } export interface SerializeDataStartRequestParams { /** * 'csv', 'json', 'excel', 'xml' */ saveFormat: string; filePath: string; isLastBatch: boolean; rows: DbCellValue[][]; columns: SimpleColumnInfo[]; includeHeaders?: boolean; delimiter?: string; lineSeperator?: string; textIdentifier?: string; encoding?: string; formatted?: boolean; } export interface SerializeDataContinueRequestParams { filePath: string; isLastBatch: boolean; rows: DbCellValue[][]; } export interface SerializeDataResult { messages?: string; succeeded: boolean; } export interface SerializationProvider extends DataProvider { startSerialization(requestParams: SerializeDataStartRequestParams): Thenable; continueSerialization(requestParams: SerializeDataContinueRequestParams): Thenable; } export namespace dataprotocol { export function registerSerializationProvider(provider: SerializationProvider): vscode.Disposable; export function registerSqlAssessmentServicesProvider(provider: SqlAssessmentServicesProvider): vscode.Disposable; /** * Registers a DataGridProvider which is used to provide lists of items to a data grid * @param provider The provider implementation */ export function registerDataGridProvider(provider: DataGridProvider): vscode.Disposable; } export enum DataProviderType { DataGridProvider = 'DataGridProvider' } /** * The type of the DataGrid column */ export type DataGridColumnType = 'hyperlink' | 'text' | 'image'; /** * A column in a data grid */ export interface DataGridColumn { /** * The text to display on the column heading. */ name: string; /** * The property name in the DataGridItem */ field: string; /** * A unique identifier for the column within the grid. */ id: string; /** * The type of column this is. This is used to determine how to render the contents. */ type: DataGridColumnType; /** * Whether this column is sortable. */ sortable?: boolean; /** * Whether this column is filterable */ filterable?: boolean; /** * If false, column can no longer be resized. */ resizable?: boolean; /** * If set to a non-empty string, a tooltip will appear on hover containing the string. */ tooltip?: string; /** * Width of the column in pixels. */ width?: number } /** * Info for a command to execute */ export interface ExecuteCommandInfo { /** * The ID of the command to execute */ id: string; /** * The text to display for the action */ displayText?: string; /** * The optional args to pass to the command */ args?: any[]; } /** * Info for displaying a hyperlink value in a Data Grid table */ export interface DataGridHyperlinkInfo { /** * The text to display for the link */ displayText: string; /** * The URL to open or command to execute */ linkOrCommand: string | ExecuteCommandInfo; } /** * An item for displaying in a data grid */ export interface DataGridItem { /** * A unique identifier for this item */ id: string; /** * The other properties that will be displayed in the grid columns */ [key: string]: string | DataGridHyperlinkInfo; } /** * A data provider that provides lists of resource items for a data grid */ export interface DataGridProvider extends DataProvider { /** * Gets the list of data grid items for this provider */ getDataGridItems(): Thenable; /** * Gets the list of data grid columns for this provider */ getDataGridColumns(): Thenable; /** * The user visible string to use for the title of the grid */ title: string; } export interface DeclarativeTableColumn { headerCssStyles?: CssStyles; rowCssStyles?: CssStyles; ariaLabel?: string; showCheckAll?: boolean; hidden?: boolean; } export enum DeclarativeDataType { component = 'component', menu = 'menu' } export type DeclarativeTableRowSelectedEvent = { row: number }; export interface DeclarativeTableComponent extends Component, DeclarativeTableProperties { onRowSelected: vscode.Event; /** * Sets the filter currently applied to this table - only rows with index in the given array will be visible. undefined * will clear the filter */ setFilter(rowIndexes: number[] | undefined): void; /** * Sets the data values. * @param v The new data values */ setDataValues(v: DeclarativeTableCellValue[][]): Promise; } /* * Add optional azureAccount for connectionWidget. */ export interface IConnectionProfile extends ConnectionInfo { azureAccount?: string; azureResourceId?: string; azurePortalEndpoint?: string; } /* * Add optional per-OS default value. */ export interface DefaultValueOsOverride { os: string; defaultValueOverride: string; } export interface ConnectionOption { defaultValueOsOverrides?: DefaultValueOsOverride[]; } export interface ModelBuilder { radioCardGroup(): ComponentBuilder; listView(): ComponentBuilder; tabbedPanel(): TabbedPanelComponentBuilder; slider(): ComponentBuilder; } export interface RadioCard { id: string; descriptions: RadioCardDescription[]; icon?: IconPath; } export interface RadioCardDescription { textValue: string; linkDisplayValue?: string; displayLinkCodicon?: boolean; textStyles?: CssStyles; linkStyles?: CssStyles; linkCodiconStyles?: CssStyles; } export interface RadioCardGroupComponentProperties extends ComponentProperties, TitledComponentProperties { cards: RadioCard[]; cardWidth: string; cardHeight: string; iconWidth?: string; iconHeight?: string; selectedCardId?: string; orientation?: Orientation; // Defaults to horizontal iconPosition?: 'top' | 'left'; // Defaults to top } export type RadioCardSelectionChangedEvent = { cardId: string; card: RadioCard }; export type RadioCardLinkClickEvent = { cardId: string, card: RadioCard, description: RadioCardDescription }; export interface RadioCardGroupComponent extends Component, RadioCardGroupComponentProperties { /** * The card object returned from this function is a clone of the internal representation - changes will not impact the original object */ onSelectionChanged: vscode.Event; onLinkClick: vscode.Event; } export interface ListViewComponentProperties extends ComponentProperties { title?: ListViewTitle; options: ListViewOption[]; selectedOptionId?: string; } export interface ListViewTitle { text?: string; style?: CssStyles; } export interface ListViewOption { label: string; id: string; } export type ListViewClickEvent = { id: string }; export interface ListViewComponent extends Component, ListViewComponentProperties { onDidClick: vscode.Event; } export interface DeclarativeTableProperties { /** * dataValues will only be used if data is an empty array. * To set the dataValues, it is recommended to use the setDataValues method that returns a promise. */ dataValues?: DeclarativeTableCellValue[][]; /** * Gets a boolean value determines whether the row selection is enabled. Default value is false. */ enableRowSelection?: boolean; /** * Gets or sets the selected row number of the table. -1 means to no selected row. */ selectedRow?: number; } export interface DeclarativeTableMenuCellValue { /** * commands for the menu. Use an array for a group and menu separators will be added. */ commands: (string | string[])[]; /** * context that will be passed to the commands. */ context: { [key: string]: string | boolean | number } | string | boolean | number | undefined } export interface DeclarativeTableCellValue { /** * The cell value */ value: string | number | boolean | Component | DeclarativeTableMenuCellValue; /** * The aria-label of the cell */ ariaLabel?: string; /** * The CSS style of the cell */ style?: CssStyles; /** * A boolean value indicates whether the cell is enabled. Default value is true. * Note: this is currently only implemented for boolean type (checkbox). */ enabled?: boolean; } export interface DropDownProperties { /** * Adds a short hint that describes the expected value for the editable dropdown */ placeholder?: string; /** * Define error messages to show when custom validation fails. Note: For empty required dropdowns we use a default error message. */ validationErrorMessages?: string[]; } /** * Panel component with tabs */ export interface TabbedPanelComponent extends Container { /** * An event triggered when the selected tab is changed. * The event argument is the id of the selected tab. */ onTabChanged: vscode.Event; /** * update the tabs. * @param tabs new tabs */ updateTabs(tabs: (Tab | TabGroup)[]): void; /** * Selects the tab with the specified id * @param id The id of the tab to select */ selectTab(id: string): void; } /** * Defines the tab orientation of TabbedPanelComponent */ export enum TabOrientation { Vertical = 'vertical', Horizontal = 'horizontal' } /** * Layout of TabbedPanelComponent, can be used to initialize the component when using ModelBuilder */ export interface TabbedPanelLayout { /** * Tab orientation. Default horizontal. */ orientation?: TabOrientation; /** * Whether to show the tab icon. Default false. */ showIcon?: boolean; /** * Whether to show the tab navigation pane even when there is only one tab. Default false. */ alwaysShowTabs?: boolean; } /** * Represents the tab group of TabbedPanelComponent */ export interface TabGroup { /** * Title of the tab group */ title: string; /** * children of the tab group */ tabs: Tab[]; } /** * Builder for TabbedPanelComponent */ export interface TabbedPanelComponentBuilder extends ContainerBuilder { /** * Add the tabs to the component * @param tabs tabs/tab groups to be added */ withTabs(tabs: (Tab | TabGroup)[]): ContainerBuilder; } export interface SliderComponentProperties extends ComponentProperties { /** * The value selected on the slider. Default initial value is the minimum value. */ value?: number, /** * The minimum value of the slider. Default value is 1. */ min?: number, /** * The maximum value of the slider. Default value is 100. */ max?: number, /** * The value between each "tick" of the slider. Default is 1. */ step?: number, /** * Whether to show the tick marks on the slider. Default is false. */ showTicks?: boolean /** * The width of the slider, not including the value box. */ width?: number | string; } export interface SliderComponent extends Component, SliderComponentProperties { onChanged: vscode.Event; onInput: vscode.Event; } /** * The heading levels an HTML heading element can be. */ export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6; /** * The type of text this is - used to determine display color. */ export enum TextType { Normal = 'Normal', Error = 'Error', UnorderedList = 'UnorderedList', OrderedList = 'OrderedList' } export interface TextComponentProperties { /** * The heading level for this component - if set the text component will be created as an h# * HTML element with this value being the #. */ headingLevel?: HeadingLevel; /** * Sets the type of text box to be displayed */ textType?: TextType; } export namespace window { /** * The reason that the dialog was closed */ export type CloseReason = 'close' | 'cancel' | 'ok'; export interface Dialog { /** * Width of the dialog. * Default is 'narrow'. */ width?: DialogWidth; /** * Dialog style type: normal, flyout, callout. * Default is 'flyout'. */ dialogStyle?: DialogStyle; /** * Dialog position type: left, below and undefined. * Default is undefined. */ dialogPosition?: DialogPosition; /** * Specify whether or not to render the Dialog header. * Default is true. */ renderHeader?: boolean; /** * Specify whether or not to render the Dialog footer. * Default is true. */ renderFooter?: boolean; /** * Positional data prior to opening of dialog. * Default is undefined. */ dialogProperties?: IDialogProperties; /** * Fired when the dialog is closed for any reason. The value indicates the reason it was closed (such as 'ok' or 'cancel') */ onClosed: vscode.Event; } export interface Wizard { /** * Width of the wizard */ width?: DialogWidth; } /** * These dialog styles affect how the dialog displays in the application. * normal: Positioned top and centered. * flyout (default): Positioned full screen height, opens from the right side of the application. * callout: Opens below or beside parent element, contains footer section with buttons. */ export type DialogStyle = 'normal' | 'flyout' | 'callout'; /** * Where to position the dialog relative to the parent element */ export type DialogPosition = 'left' | 'below'; /** * The p * They are needed for positioning relative to the element which triggers the opening of the dialog. */ export interface IDialogProperties { /** * x position of the dialog relative to the parent element */ xPos: number, /** * y position of the dialog relative to the parent element */ yPos: number, /** * width of the dialog */ width: number, /** * height of the dialog */ height: number } /** * Create a dialog with the given title * @param title Title of the dialog, displayed at the top. * @param dialogName Name of the dialog. * @param width Width of the dialog, default is 'narrow'. * @param dialogStyle Defines the dialog style, default is 'flyout'. * @param dialogPosition Defines the dialog position, default is undefined * @param renderHeader Specify whether or not to render the Dialog header, default is true. * @param renderFooter Specify whether or not to render the Dialog footer, default is true. * @param dialogProperties Positional data prior to opening of dialog, default is undefined. */ export function createModelViewDialog(title: string, dialogName?: string, width?: DialogWidth, dialogStyle?: DialogStyle, dialogPosition?: DialogPosition, renderHeader?: boolean, renderFooter?: boolean, dialogProperties?: IDialogProperties): Dialog; } export interface TaskInfo { targetLocation?: string; } export interface ButtonColumnOption { icon?: IconPath; } export namespace sqlAssessment { export enum SqlAssessmentTargetType { Server = 1, Database = 2 } export enum SqlAssessmentResultItemKind { RealResult = 0, Warning = 1, Error = 2 } } // Assessment interfaces export interface SqlAssessmentResultItem { rulesetVersion: string; rulesetName: string; targetType: sqlAssessment.SqlAssessmentTargetType; targetName: string; checkId: string; tags: string[]; displayName: string; description: string; message: string; helpLink: string; level: string; timestamp: string; kind: sqlAssessment.SqlAssessmentResultItemKind; } export interface SqlAssessmentResult extends ResultStatus { items: SqlAssessmentResultItem[]; apiVersion: string; } export interface SqlAssessmentServicesProvider extends DataProvider { assessmentInvoke(ownerUri: string, targetType: sqlAssessment.SqlAssessmentTargetType): Promise; getAssessmentItems(ownerUri: string, targetType: sqlAssessment.SqlAssessmentTargetType): Promise; generateAssessmentScript(items: SqlAssessmentResultItem[]): Promise; } export interface TreeItem2 extends vscode.TreeItem { payload?: IConnectionProfile; childProvider?: string; type?: ExtensionNodeType; } export interface AccountDisplayInfo { email?: string; name?: string; } export interface AccountProvider { /** * Generates a security token for the provided account and tenant * @param account The account to generate a security token for * @param resource The resource to get the token for * @return Promise to return a security token object */ getAccountSecurityToken(account: Account, tenant: string, resource: AzureResource): Thenable; } export interface AccountKey { /** * A version string for an account */ accountVersion?: string; } export interface Account { /** * Specifies if an account should be deleted */ delete?: boolean; } export enum CardType { /** * Card with the icon as a background image */ Image = 'Image' } export namespace workspace { /** * Creates and enters a workspace at the specified location */ export function createAndEnterWorkspace(location: vscode.Uri, workspaceFile?: vscode.Uri): Promise; /** * Enters the workspace with the provided path * @param workspacefile */ export function enterWorkspace(workspaceFile: vscode.Uri): Promise; /** * Saves and enters the workspace with the provided path * @param workspacefile */ export function saveAndEnterWorkspace(workspaceFile: vscode.Uri): Promise; } export interface TableComponentProperties { /** * Specifies whether to use headerFilter plugin */ headerFilter?: boolean, } export interface TableComponent { /** * Append data to an existing table data. */ appendData(data: any[][]): Thenable; } export interface LinkArea { /* * Accessibility information used when screen reader interacts with this link. * Generally, a link has no need to set the `role` of the accessibilityInformation; * but it is exposed for situations that may require it. */ accessibilityInformation?: vscode.AccessibilityInformation } export interface IconColumnCellValue { /** * The icon to be displayed. */ icon: IconPath; /** * The title of the icon. */ title: string; } export interface ButtonColumnCellValue { /** * The icon to be displayed. */ icon?: IconPath; /** * The title of the button. */ title?: string; } export interface HyperlinkColumnCellValue { /** * The icon to be displayed. */ icon?: IconPath; /** * The title of the hyperlink. */ title?: string; /** * The url to open. */ url?: string; } export enum ColumnType { icon = 3, hyperlink = 4 } export interface TableColumn { /** * The text to display on the column heading. 'value' property will be used, if not specified */ name?: string; /** * whether the column is resizable. Default value is true. */ resizable?: boolean; } export interface IconColumnOptions { /** * The icon to use for all the cells in this column. */ icon?: IconPath; } export interface ButtonColumn extends IconColumnOptions, TableColumn { /** * Whether to show the text, default value is false. */ showText?: boolean; } export interface HyperlinkColumn extends IconColumnOptions, TableColumn { } export interface CheckboxColumn extends TableColumn { action: ActionOnCellCheckboxCheck; } export interface QueryExecuteResultSetNotificationParams { /** * Contains query plans returned by the database in ResultSets. */ executionPlans: QueryPlanGraph[]; } export interface ResultSetSummary { /** * The visualization options for the result set. */ visualization?: VisualizationOptions; /** * Generic query plan graph to be displayed in the results view. */ showplangraph?: QueryPlanGraph; } /** * Defines all the supported visualization types */ export type VisualizationType = 'bar' | 'count' | 'doughnut' | 'horizontalBar' | 'image' | 'line' | 'pie' | 'scatter' | 'table' | 'timeSeries'; /** * Defines the configuration options for visualization */ export interface VisualizationOptions { type: VisualizationType; } export interface PropertiesContainerComponentProperties { /** * Whether to show the button that will hide/show the content of the container. Default value is false. */ showToggleButton?: boolean; } export interface ServerInfo { /** * The CPU count of the host running the server. */ cpuCount?: number; /** * The physical memory of the host running the server. */ physicalMemoryInMb?: number; } export interface NodeInfo { /** * Specify the icon for the node. The value could the path to the icon or and ADS icon defined in {@link SqlThemeIcon}. */ icon?: IconPath | SqlThemeIcon; } export interface ObjectMetadata { /* * Parent object name for subobjects such as triggers, indexes, etc. */ parentName?: string; /* * Parent object type name, such as Table, View, etc. */ parentTypeName?: string; } export interface QueryProvider { /** * Notify clients that the URI for a connection has been changed. */ connectionUriChanged(newUri: string, oldUri: string): Thenable; } export namespace accounts { export interface AccountSecurityToken { /** * Access token expiry timestamp */ expiresOn?: number } } export interface ConnectionInfoSummary { /** * Indicates whether the server version is supported by ADS. The default value is true. If the value is false, ADS will show a warning message. */ isSupportedVersion?: boolean; /** * The messages that will be appended to the Azure Data Studio's warning message about unsupported versions. */ unsupportedVersionMessage?: string; } export enum DataProviderType { TableDesignerProvider = 'TableDesignerProvider' } export namespace dataprotocol { export function registerTableDesignerProvider(provider: designers.TableDesignerProvider): vscode.Disposable; } export namespace designers { /** * Open a table designer window. * @param providerId The table designer provider Id. * @param tableInfo The table information. The object will be passed back to the table designer provider as the unique identifier for the table. */ export function openTableDesigner(providerId: string, tableInfo: TableInfo): Thenable; /** * Definition for the table designer provider. */ export interface TableDesignerProvider extends DataProvider { /** * Initialize the table designer for the specified table. * @param table the table information. */ initializeTableDesigner(table: TableInfo): Thenable; /** * Process the table change. * @param table the table information * @param tableChangeInfo the information about the change user made through the UI. */ processTableEdit(table: TableInfo, tableChangeInfo: DesignerEdit): Thenable; /** * Publish the changes. * @param table the table information */ publishChanges(table: TableInfo): Thenable; /** * Generate script for the changes. * @param table the table information */ generateScript(table: TableInfo): Thenable; /** * Generate preview report describing the changes to be made. * @param table the table information */ generatePreviewReport(table: TableInfo): Thenable; /** * Notify the provider that the table designer has been closed. * @param table the table information */ disposeTableDesigner(table: TableInfo): Thenable; } /** * The information of the table. */ export interface TableInfo { /** * The server name. */ server: string; /** * The database name */ database: string; /** * The schema name, only required for existing table. */ schema?: string; /** * The table name, only required for existing table. */ name?: string; /** * A boolean value indicates whether a new table is being designed. */ isNewTable: boolean; /** * Unique identifier of the table. Will be used to decide whether a designer is already opened for the table. */ id: string; /** * Extension can store additional information that the provider needs to uniquely identify a table. */ [key: string]: any; } /** * The information to populate the table designer UI. */ export interface TableDesignerInfo { /** * The view definition. */ view: TableDesignerView; /** * The initial state of the designer. */ viewModel: DesignerViewModel; /** * The supported column types */ columnTypes: string[]; /** * The list of schemas in the database. */ schemas: string[]; } /** * Name of the common table properties. * Extensions can use the names to access the designer view model. */ export enum TableProperty { Columns = 'columns', Description = 'description', Name = 'name', Schema = 'schema', Script = 'script', ForeignKeys = 'foreignKeys', CheckConstraints = 'checkConstraints', } /** * Name of the common table column properties. * Extensions can use the names to access the designer view model. */ export enum TableColumnProperty { AllowNulls = 'allowNulls', DefaultValue = 'defaultValue', Length = 'length', Name = 'name', Type = 'type', IsPrimaryKey = 'isPrimaryKey', Precision = 'precision', Scale = 'scale' } /** * Name of the common foreign key constraint properties. * Extensions can use the names to access the designer view model. */ export enum TableForeignKeyProperty { Name = 'name', PrimaryKeyTable = 'primaryKeyTable', OnDeleteAction = 'onDeleteAction', OnUpdateAction = 'onUpdateAction', Columns = 'columns' } /** * Name of the columns mapping properties for foreign key. */ export enum ForeignKeyColumnMappingProperty { PrimaryKeyColumn = 'primaryKeyColumn', ForeignKeyColumn = 'foreignKeyColumn' } /** * Name of the common check constraint properties. * Extensions can use the name to access the designer view model. */ export enum TableCheckConstraintProperty { Name = 'name', Expression = 'expression' } /** * The table designer view definition. */ export interface TableDesignerView { /** * Additional table properties. Common table properties are handled by Azure Data Studio. see {@link TableProperty} */ additionalTableProperties?: DesignerDataPropertyInfo[]; /** * Additional tabs. */ additionalTabs?: DesignerTab[]; /** * Columns table options. * Common table columns properties are handled by Azure Data Studio. see {@link TableColumnProperty}. * Default columns to display values are: Name, Type, Length, Precision, Scale, IsPrimaryKey, AllowNulls, DefaultValue. */ columnTableOptions?: TableDesignerBuiltInTableViewOptions; /** * Foreign keys table options. * Common foreign key properties are handled by Azure Data Studio. see {@link TableForeignKeyProperty}. * Default columns to display values are: Name, PrimaryKeyTable. */ foreignKeyTableOptions?: TableDesignerBuiltInTableViewOptions; /** * Check constraints table options. * Common check constraint properties are handled by Azure Data Studio. see {@link TableCheckConstraintProperty} * Default columns to display values are: Name, Expression. */ checkConstraintTableOptions?: TableDesignerBuiltInTableViewOptions; } export interface TableDesignerBuiltInTableViewOptions { /** * Whether to show the table. Default value is false. */ showTable?: boolean; /** * Properties to be displayed in the table, other properties can be accessed in the properties view. */ propertiesToDisplay?: string[]; /** * Whether adding new rows is supported. */ canAddRows?: boolean; /** * Whether removing rows is supported. */ canRemoveRows?: boolean; /** * Additional properties for the entity. */ additionalProperties?: DesignerDataPropertyInfo[]; } /** * The view model of the designer. */ export interface DesignerViewModel { [key: string]: InputBoxProperties | CheckBoxProperties | DropDownProperties | DesignerTableProperties; } /** * The definition of a designer tab. */ export interface DesignerTab { /** * The title of the tab. */ title: string; /** * the components to be displayed in this tab. */ components: DesignerDataPropertyInfo[]; } /** * The definition of the property in the designer. */ export interface DesignerDataPropertyInfo { /** * The property name. */ propertyName: string; /** * The description of the property. */ description?: string; /** * The component type. */ componentType: DesignerComponentTypeName; /** * The group name, properties with the same group name will be displayed under the same group on the UI. */ group?: string; /** * Whether the property should be displayed in the properties view. The default value is true. */ showInPropertiesView?: boolean; /** * The properties of the component. */ componentProperties: InputBoxProperties | CheckBoxProperties | DropDownProperties | DesignerTableProperties; } /** * The child component types supported by designer. */ export type DesignerComponentTypeName = 'input' | 'checkbox' | 'dropdown' | 'table'; /** * The properties for the table component in the designer. */ export interface DesignerTableProperties extends ComponentProperties { /** * the name of the properties to be displayed, properties not in this list will be accessible in properties pane. */ columns?: string[]; /** * The display name of the object type. */ objectTypeDisplayName: string; /** * the properties of the table data item. */ itemProperties?: DesignerDataPropertyInfo[]; /** * The data to be displayed. */ data?: DesignerTableComponentDataItem[]; /** * Whether user can add new rows to the table. The default value is true. */ canAddRows?: boolean; /** * Whether user can remove rows from the table. The default value is true. */ canRemoveRows?: boolean; } /** * The data item of the designer's table component. */ export interface DesignerTableComponentDataItem { [key: string]: InputBoxProperties | CheckBoxProperties | DropDownProperties | DesignerTableProperties; } /** * Type of the edit originated from the designer UI. */ export enum DesignerEditType { /** * Add a row to a table. */ Add = 0, /** * Remove a row from a table. */ Remove = 1, /** * Update a property. */ Update = 2 } /** * Information of the edit originated from the designer UI. */ export interface DesignerEdit { /** * The edit type. */ type: DesignerEditType; /** * the path of the edit target. */ path: DesignerEditPath; /** * the new value. */ value?: any; } /** * The path of the edit target. * Below are the 3 scenarios and their expected path. * Note: 'index-{x}' in the description below are numbers represent the index of the object in the list. * 1. 'Add' scenario * a. ['propertyName1']. Example: add a column to the columns property: ['columns']. * b. ['propertyName1',index-1,'propertyName2']. Example: add a column mapping to the first foreign key: ['foreignKeys',0,'mappings']. * 2. 'Update' scenario * a. ['propertyName1']. Example: update the name of the table: ['name']. * b. ['propertyName1',index-1,'propertyName2']. Example: update the name of a column: ['columns',0,'name']. * c. ['propertyName1',index-1,'propertyName2',index-2,'propertyName3']. Example: update the source column of an entry in a foreign key's column mapping table: ['foreignKeys',0,'mappings',0,'source']. * 3. 'Remove' scenario * a. ['propertyName1',index-1]. Example: remove a column from the columns property: ['columns',0']. * b. ['propertyName1',index-1,'propertyName2',index-2]. Example: remove a column mapping from a foreign key's column mapping table: ['foreignKeys',0,'mappings',0]. */ export type DesignerEditPath = (string | number)[]; /** * The result returned by the table designer provider after handling an edit request. */ export interface DesignerEditResult { /** * The view model object. */ viewModel: DesignerViewModel; /** * Whether the current state is valid. */ isValid: boolean; /** * Error messages of current state, and the property the caused the error. */ errors?: { message: string, property?: DesignerEditPath }[]; } } export interface QueryPlanGraph { /** * Root of the query plan tree */ root: QueryPlanGraphNode; /** * Underlying query for the query plan graph. */ query: string; } export interface QueryPlanGraphNode { /** * Type of the node. This property determines the icon that is displayed for it */ type: string; /** * Cost associated with the node */ cost: number; /** * Cost of the node subtree */ subTreeCost: number; /** * Relative cost of the node compared to its siblings. */ relativeCost: number; /** * Time take by the node operation in milliseconds */ elapsedTimeInMs: number; /** * Node properties to be shown in the tooltip */ properties: QueryPlanGraphElementProperty[]; /** * Display name for the node */ name: string; /** * Description associated with the node. */ description: string; /** * Subtext displayed under the node name */ subtext: string[]; /** * Direct children of the nodes. */ children: QueryPlanGraphNode[]; /** * Edges corresponding to the children. */ edges: QueryGraphEdge[]; } export interface QueryGraphEdge { /** * Count of the rows returned by the subtree of the edge. */ rowCount: number; /** * Size of the rows returned by the subtree of the edge. */ rowSize: number; /** * Edge properties to be shown in the tooltip. */ properties: QueryPlanGraphElementProperty[] } export interface QueryPlanGraphElementProperty { /** * Name of the property */ name: string; /** * Formatted value for the property */ formattedValue: string; /** * Flag to show/hide props in tooltip */ showInToolTip: boolean; /** * Display order of property */ displayOrder: number; /** * Flag to indicate if the property has a longer value so that it will be shown at the bottom of the tooltip */ isLongString: boolean; } }