Filegroup Memory optimized Add button should be disabled when have one filegroup #24309 (#24446)

This commit is contained in:
Sai Avishkar Sreerama
2023-09-15 16:19:44 -05:00
committed by GitHub
parent 600f59eae6
commit 9c5ec7dcbc
2 changed files with 21 additions and 3 deletions

View File

@@ -930,7 +930,8 @@ export class DatabaseDialog extends ObjectManagementDialogBase<Database, Databas
this.memoryOptimizedFilegroupNameInput = this.getFilegroupNameInput(this.memoryOptimizedFilegroupsTable, FileGroupType.MemoryOptimizedDataFileGroup);
const addButtonComponent: DialogButton = {
buttonAriaLabel: localizedConstants.AddFilegroupText,
buttonHandler: () => this.onAddDatabaseFileGroupsButtonClicked(this.memoryOptimizedFilegroupsTable)
buttonHandler: () => this.onAddDatabaseFileGroupsButtonClicked(this.memoryOptimizedFilegroupsTable),
enabled: this.memoryoptimizedFileGroupsTableRows.length < 1
};
const removeButtonComponent: DialogButton = {
buttonAriaLabel: localizedConstants.RemoveButton,
@@ -956,6 +957,19 @@ export class DatabaseDialog extends ObjectManagementDialogBase<Database, Databas
return this.createGroup(localizedConstants.MemoryOptimizedFileGroupsSectionText, [this.memoryOptimizedFilegroupsTable, memoryOptimizedContainer], true);
}
/**
* Overrides declarative table add button enabled/disabled state
* @param table table component
* @returns table add button enabled/disabled state
*/
public override addButtonEnabled(table: azdata.TableComponent | azdata.DeclarativeTableComponent): boolean {
let enabled = true;
if (table === this.memoryOptimizedFilegroupsTable) {
enabled = this.memoryoptimizedFileGroupsTableRows.length < 1;
}
return enabled;
}
/**
* Update the default value for the filegroup
* @param arg selected checkbox event

View File

@@ -24,7 +24,8 @@ export function getTableHeight(rowCount: number, minRowCount: number = DefaultMi
export interface DialogButton {
buttonAriaLabel: string;
buttonHandler: (button: azdata.ButtonComponent) => Promise<void>
buttonHandler: (button: azdata.ButtonComponent) => Promise<void>,
enabled?: boolean
}
export type TableListItemEnabledStateGetter<T> = (item: T) => boolean;
@@ -80,6 +81,8 @@ export abstract class DialogBase<DialogResult> {
protected removeButtonEnabled(table: azdata.TableComponent): boolean { return true; }
protected addButtonEnabled(table: azdata.TableComponent): boolean { return true; }
protected validateInput(): Promise<string[]> { return Promise.resolve([]); }
public async open(): Promise<void> {
@@ -295,12 +298,13 @@ export abstract class DialogBase<DialogResult> {
if (editButton !== undefined) {
editButtonComponent.enabled = tableSelectedRowsLengthCheck;
}
addButtonComponent.enabled = this.addButtonEnabled(table);
removeButtonComponent.enabled = !!isRemoveEnabled && tableSelectedRowsLengthCheck;
}
addButtonComponent = this.createButton(uiLoc.AddText, addbutton.buttonAriaLabel, async () => {
await addbutton.buttonHandler(addButtonComponent);
updateButtons();
});
}, addbutton.enabled ?? true);
buttonComponents.push(addButtonComponent);
if (editButton !== undefined) {