diff --git a/extensions/mssql/src/objectManagement/constants.ts b/extensions/mssql/src/objectManagement/constants.ts index 82a6350317..2e8c5f6417 100644 --- a/extensions/mssql/src/objectManagement/constants.ts +++ b/extensions/mssql/src/objectManagement/constants.ts @@ -28,9 +28,11 @@ export const AlterApplicationRoleDocUrl = 'https://learn.microsoft.com/sql/t-sql export const CreateDatabaseRoleDocUrl = 'https://learn.microsoft.com/sql/t-sql/statements/create-role-transact-sql'; export const AlterDatabaseRoleDocUrl = 'https://learn.microsoft.com/sql/t-sql/statements/alter-role-transact-sql'; export const CreateDatabaseDocUrl = 'https://learn.microsoft.com/sql/t-sql/statements/create-database-transact-sql'; -export const ViewServerPropertiesDocUrl = 'https://learn.microsoft.com/sql/t-sql/functions/serverproperty-transact-sql'; +export const ViewGeneralServerPropertiesDocUrl = 'https://learn.microsoft.com/sql/t-sql/functions/serverproperty-transact-sql'; +export const ViewMemoryServerPropertiesDocUrl = 'https://learn.microsoft.com/sql/database-engine/configure-windows/server-properties-memory-page'; export const DetachDatabaseDocUrl = 'https://go.microsoft.com/fwlink/?linkid=2240322'; -export const DatabasePropertiesDocUrl = 'https://learn.microsoft.com/sql/relational-databases/databases/database-properties-general-page'; +export const DatabaseGeneralPropertiesDocUrl = 'https://learn.microsoft.com/sql/relational-databases/databases/database-properties-general-page'; +export const DatabaseOptionsPropertiesDocUrl = 'https://learn.microsoft.com/sql/relational-databases/databases/database-properties-options-page' export const enum TelemetryActions { CreateObject = 'CreateObject', diff --git a/extensions/mssql/src/objectManagement/localizedConstants.ts b/extensions/mssql/src/objectManagement/localizedConstants.ts index cc778bba37..41395ac566 100644 --- a/extensions/mssql/src/objectManagement/localizedConstants.ts +++ b/extensions/mssql/src/objectManagement/localizedConstants.ts @@ -125,7 +125,7 @@ export function ObjectPropertiesDialogTitle(objectType: string, objectName: stri return localize({ key: 'objectManagement.objectPropertiesDialogTitle', comment: ['{0} object type, {1}: object name.'] - }, '{0} - {1} (Preview)', objectType, objectName); + }, '{0} Properties (Preview) - {1}', objectType, objectName); } export function RenameObjectOperationDisplayName(objectType: string, originalName: string, newName: string): string { diff --git a/extensions/mssql/src/objectManagement/ui/databaseDialog.ts b/extensions/mssql/src/objectManagement/ui/databaseDialog.ts index 820163854e..29e55a0fc5 100644 --- a/extensions/mssql/src/objectManagement/ui/databaseDialog.ts +++ b/extensions/mssql/src/objectManagement/ui/databaseDialog.ts @@ -7,7 +7,7 @@ import * as azdata from 'azdata'; import { ObjectManagementDialogBase, ObjectManagementDialogOptions } from './objectManagementDialogBase'; import { IObjectManagementService } from 'mssql'; import * as localizedConstants from '../localizedConstants'; -import { CreateDatabaseDocUrl, DatabasePropertiesDocUrl } from '../constants'; +import { CreateDatabaseDocUrl, DatabaseGeneralPropertiesDocUrl, DatabaseOptionsPropertiesDocUrl } from '../constants'; import { Database, DatabaseViewInfo } from '../interfaces'; import { convertNumToTwoDecimalStringInMB } from '../utils'; import { isUndefinedOrNull } from '../../types'; @@ -20,6 +20,7 @@ export class DatabaseDialog extends ObjectManagementDialogBase { @@ -83,7 +101,7 @@ export class DatabaseDialog extends ObjectManagementDialogBase { + this.activeTabId = tabId; + })); this.formContainer.addItem(propertiesTabbedPannel); } } diff --git a/extensions/mssql/src/objectManagement/ui/serverPropertiesDialog.ts b/extensions/mssql/src/objectManagement/ui/serverPropertiesDialog.ts index efd3791c7e..6b34008cfc 100644 --- a/extensions/mssql/src/objectManagement/ui/serverPropertiesDialog.ts +++ b/extensions/mssql/src/objectManagement/ui/serverPropertiesDialog.ts @@ -7,11 +7,12 @@ import { ObjectManagementDialogBase, ObjectManagementDialogOptions } from './obj import { DefaultInputWidth } from '../../ui/dialogBase'; import { IObjectManagementService } from 'mssql'; import * as localizedConstants from '../localizedConstants'; -import { ViewServerPropertiesDocUrl } from '../constants'; +import { ViewGeneralServerPropertiesDocUrl, ViewMemoryServerPropertiesDocUrl } from '../constants'; import { Server, ServerViewInfo } from '../interfaces'; export class ServerPropertiesDialog extends ObjectManagementDialogBase { private generalTab: azdata.Tab; + private readonly generalTabId: string = 'generalId'; private platformSection: azdata.GroupContainer; private sqlServerSection: azdata.GroupContainer; private nameInput: azdata.InputBoxComponent; @@ -34,18 +35,31 @@ export class ServerPropertiesDialog extends ObjectManagementDialogBase { + this.activeTabId = tabId; + })); this.formContainer.addItem(serverPropertiesTabbedPannel); } @@ -158,19 +176,19 @@ export class ServerPropertiesDialog extends ObjectManagementDialogBase { this.objectInfo.minServerMemory.value = +newValue; - }, this.objectInfo.minServerMemory.value.toString(), isEnabled, 'number', DefaultInputWidth, this.objectInfo.minServerMemory.minimumValue, this.objectInfo.minServerMemory.maximumValue); + }, this.objectInfo.minServerMemory.value.toString(), isEnabled, 'number', DefaultInputWidth, true, this.objectInfo.minServerMemory.minimumValue, this.objectInfo.minServerMemory.maximumValue); const minMemoryContainer = this.createLabelInputContainer(localizedConstants.minServerMemoryText, this.minServerMemoryInput); this.maxServerMemoryInput = this.createInputBox(localizedConstants.maxServerMemoryText, async (newValue) => { this.objectInfo.maxServerMemory.value = +newValue; - }, this.objectInfo.maxServerMemory.value.toString(), isEnabled, 'number', DefaultInputWidth, this.objectInfo.maxServerMemory.minimumValue, this.objectInfo.maxServerMemory.maximumValue); + }, this.objectInfo.maxServerMemory.value.toString(), isEnabled, 'number', DefaultInputWidth, true, this.objectInfo.maxServerMemory.minimumValue, this.objectInfo.maxServerMemory.maximumValue); const maxMemoryContainer = this.createLabelInputContainer(localizedConstants.maxServerMemoryText, this.maxServerMemoryInput); this.memorySection = this.createGroup('', [ @@ -178,7 +196,7 @@ export class ServerPropertiesDialog extends ObjectManagementDialogBase { diff --git a/extensions/mssql/src/ui/dialogBase.ts b/extensions/mssql/src/ui/dialogBase.ts index d556a39655..d6b7d2f6cf 100644 --- a/extensions/mssql/src/ui/dialogBase.ts +++ b/extensions/mssql/src/ui/dialogBase.ts @@ -147,8 +147,8 @@ export abstract class DialogBase { return this.createInputBox(ariaLabel, textChangeHandler, value, enabled, 'password', width); } - protected createInputBox(ariaLabel: string, textChangeHandler: (newValue: string) => Promise, value: string = '', enabled: boolean = true, type: azdata.InputBoxInputType = 'text', width: number = DefaultInputWidth, min?: number, max?: number): azdata.InputBoxComponent { - const inputbox = this.modelView.modelBuilder.inputBox().withProps({ inputType: type, enabled: enabled, ariaLabel: ariaLabel, value: value, width: width, min: min, max: max }).component(); + protected createInputBox(ariaLabel: string, textChangeHandler: (newValue: string) => Promise, value: string = '', enabled: boolean = true, type: azdata.InputBoxInputType = 'text', width: number = DefaultInputWidth, required?: boolean, min?: number, max?: number): azdata.InputBoxComponent { + const inputbox = this.modelView.modelBuilder.inputBox().withProps({ inputType: type, enabled: enabled, ariaLabel: ariaLabel, value: value, width: width, required: required, min: min, max: max }).component(); this.disposables.push(inputbox.onTextChanged(async () => { await textChangeHandler(inputbox.value!); this.onFormFieldChange();