From 5170fa7dfc69a0613fdbff53afbe6fa32aa81a7c Mon Sep 17 00:00:00 2001 From: alex <48489896+devnaumov@users.noreply.github.com> Date: Thu, 6 Aug 2026 10:59:16 +0200 Subject: [PATCH] dbeaver/pro#10061 disable default profile deletion (#4526) Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com> --- .../src/AIProfiles/AIProfilesPanel.tsx | 2 +- .../src/AIProfiles/AIProfilesTable.tsx | 12 ++++++++++-- .../plugin-ai-administration/src/locales/de.ts | 4 ++++ .../plugin-ai-administration/src/locales/en.ts | 4 ++++ .../plugin-ai-administration/src/locales/fr.ts | 4 ++++ .../plugin-ai-administration/src/locales/ru.ts | 4 ++++ .../packages/plugin-data-grid/src/TableRowSelect.tsx | 5 ++++- 7 files changed, 31 insertions(+), 4 deletions(-) diff --git a/webapp/packages/plugin-ai-administration/src/AIProfiles/AIProfilesPanel.tsx b/webapp/packages/plugin-ai-administration/src/AIProfiles/AIProfilesPanel.tsx index 332d20f136..a7f4e9085b 100644 --- a/webapp/packages/plugin-ai-administration/src/AIProfiles/AIProfilesPanel.tsx +++ b/webapp/packages/plugin-ai-administration/src/AIProfiles/AIProfilesPanel.tsx @@ -55,7 +55,7 @@ export const AIProfilesPanel = observer(function AIProfilesPanel({ formSt const profiles = profilesLoader.data.filter(isDefined); const defaultProfileId = settingsInfoPart.initialState.defaultConfiguration; - const selection = useTableSelection(profiles.map(p => p.id)); + const selection = useTableSelection(profiles.filter(p => p.id !== defaultProfileId).map(p => p.id)); const table = useAIProfilesTable(selection); return ( diff --git a/webapp/packages/plugin-ai-administration/src/AIProfiles/AIProfilesTable.tsx b/webapp/packages/plugin-ai-administration/src/AIProfiles/AIProfilesTable.tsx index 1f2738a967..a3cb33e51b 100644 --- a/webapp/packages/plugin-ai-administration/src/AIProfiles/AIProfilesTable.tsx +++ b/webapp/packages/plugin-ai-administration/src/AIProfiles/AIProfilesTable.tsx @@ -51,8 +51,16 @@ export const AIProfilesTable = observer(function AIProfilesTable({ profil return null; } + const isDefault = profile.id === defaultProfileId; + if (column.key === SELECT_COLUMN.key) { - return ; + return ( + + ); } if (column.key === NAME_COLUMN.key) { @@ -65,7 +73,7 @@ export const AIProfilesTable = observer(function AIProfilesTable({ profil onClick={() => aiProfileFormService.open(profile.id, profile.name)} > {profile.name} - {profile.id === defaultProfileId && ( + {isDefault && ( {translate('plugin_ai_administration_profile_default_badge')} )} diff --git a/webapp/packages/plugin-ai-administration/src/locales/de.ts b/webapp/packages/plugin-ai-administration/src/locales/de.ts index c1706f0b63..8fd0845c10 100644 --- a/webapp/packages/plugin-ai-administration/src/locales/de.ts +++ b/webapp/packages/plugin-ai-administration/src/locales/de.ts @@ -43,4 +43,8 @@ export default [ ['plugin_ai_administration_profile_form_tab_options', 'Profil'], ['plugin_ai_administration_profile_name_max_length', 'Der Profilname darf {arg:length} Zeichen nicht überschreiten'], ['plugin_ai_administration_profile_name_min_length', 'Der Profilname muss mindestens {arg:length} Zeichen lang sein'], + [ + 'plugin_ai_administration_profile_default_delete_info', + 'Das Standardprofil kann nicht gelöscht werden. Bitte wählen Sie ein anderes Profil als Standard aus, bevor Sie dieses Profil löschen.', + ], ]; diff --git a/webapp/packages/plugin-ai-administration/src/locales/en.ts b/webapp/packages/plugin-ai-administration/src/locales/en.ts index 972e9b704c..e735f1d93d 100644 --- a/webapp/packages/plugin-ai-administration/src/locales/en.ts +++ b/webapp/packages/plugin-ai-administration/src/locales/en.ts @@ -43,4 +43,8 @@ export default [ ['plugin_ai_administration_profile_form_tab_options', 'Profile'], ['plugin_ai_administration_profile_name_max_length', 'Profile name must not exceed {arg:length} characters'], ['plugin_ai_administration_profile_name_min_length', 'Profile name must be at least {arg:length} characters'], + [ + 'plugin_ai_administration_profile_default_delete_info', + 'The default profile cannot be deleted. Please select another profile as the default before deleting this profile.', + ], ]; diff --git a/webapp/packages/plugin-ai-administration/src/locales/fr.ts b/webapp/packages/plugin-ai-administration/src/locales/fr.ts index 34872a4ff8..bae8e45407 100644 --- a/webapp/packages/plugin-ai-administration/src/locales/fr.ts +++ b/webapp/packages/plugin-ai-administration/src/locales/fr.ts @@ -43,4 +43,8 @@ export default [ ['plugin_ai_administration_profile_form_tab_options', 'Profil'], ['plugin_ai_administration_profile_name_max_length', 'Le nom du profil ne doit pas dépasser {arg:length} caractères'], ['plugin_ai_administration_profile_name_min_length', 'Le nom du profil doit contenir au moins {arg:length} caractères'], + [ + 'plugin_ai_administration_profile_default_delete_info', + 'Le profil par défaut ne peut pas être supprimé. Veuillez sélectionner un autre profil comme profil par défaut avant de supprimer ce profil.', + ], ]; diff --git a/webapp/packages/plugin-ai-administration/src/locales/ru.ts b/webapp/packages/plugin-ai-administration/src/locales/ru.ts index f941d1aa0f..fd245bf01a 100644 --- a/webapp/packages/plugin-ai-administration/src/locales/ru.ts +++ b/webapp/packages/plugin-ai-administration/src/locales/ru.ts @@ -43,4 +43,8 @@ export default [ ['plugin_ai_administration_profile_form_tab_options', 'Профиль'], ['plugin_ai_administration_profile_name_max_length', 'Название профиля не должно превышать {arg:length} символов'], ['plugin_ai_administration_profile_name_min_length', 'Название профиля должно содержать не менее {arg:length} символов'], + [ + 'plugin_ai_administration_profile_default_delete_info', + 'Профиль по умолчанию нельзя удалить. Перед удалением этого профиля выберите другой профиль по умолчанию.', + ], ]; diff --git a/webapp/packages/plugin-data-grid/src/TableRowSelect.tsx b/webapp/packages/plugin-data-grid/src/TableRowSelect.tsx index a60fc2b649..496c439869 100644 --- a/webapp/packages/plugin-data-grid/src/TableRowSelect.tsx +++ b/webapp/packages/plugin-data-grid/src/TableRowSelect.tsx @@ -15,6 +15,7 @@ import { TableSelectionContext } from './TableSelectionContext.js'; interface BaseProps { disabled?: boolean; + title?: string; } export interface ITableRowRootSelectProps extends BaseProps { @@ -29,7 +30,7 @@ export interface ITableRowSelectProps extends BaseProps { const CELL_CLASS_NAME = 'tw:flex tw:w-full tw:h-full tw:items-center tw:justify-center'; -export const TableRowSelect = observer(function TableRowSelect({ isRoot, id, disabled }) { +export const TableRowSelect = observer(function TableRowSelect({ isRoot, id, disabled, title }) { const selection = use(TableSelectionContext); const translate = useTranslate(); @@ -47,6 +48,7 @@ export const TableRowSelect = observer