mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-20 00:17:44 +00:00
feat(settings): auto-reload restored data tabs on open
This commit is contained in:
@@ -844,6 +844,7 @@ const editSidebarSearchOpenedDatabasesOnly = ref(settingsStore.editorSettings.si
|
||||
const editAutoSelectActiveSidebarNode = ref(settingsStore.editorSettings.autoSelectActiveSidebarNode);
|
||||
const editSidebarBrowseObjectsOnDatabaseActivation = ref(settingsStore.editorSettings.sidebarBrowseObjectsOnDatabaseActivation);
|
||||
const editOpenTabsRestoreMode = ref<OpenTabsRestoreMode>(settingsStore.editorSettings.openTabsRestoreMode);
|
||||
const editAutoReloadRestoredDataTabsOnOpen = ref(settingsStore.editorSettings.autoReloadRestoredDataTabsOnOpen);
|
||||
const editDisconnectTabHandlingMode = ref<DisconnectTabHandlingMode>(settingsStore.editorSettings.disconnectTabHandlingMode);
|
||||
const editDeleteConnectionTabHandlingMode = ref<DeleteConnectionTabHandlingMode>(settingsStore.editorSettings.deleteConnectionTabHandlingMode);
|
||||
const editRememberConnectionDatabaseOnDelete = ref(settingsStore.editorSettings.rememberConnectionDatabaseOnDelete);
|
||||
@@ -1127,6 +1128,7 @@ function currentEditorSettingsDraft(): EditorSettingsDraft {
|
||||
autoSelectActiveSidebarNode: editAutoSelectActiveSidebarNode.value,
|
||||
sidebarBrowseObjectsOnDatabaseActivation: editSidebarBrowseObjectsOnDatabaseActivation.value,
|
||||
openTabsRestoreMode: editOpenTabsRestoreMode.value,
|
||||
autoReloadRestoredDataTabsOnOpen: editAutoReloadRestoredDataTabsOnOpen.value,
|
||||
disconnectTabHandlingMode: editDisconnectTabHandlingMode.value,
|
||||
deleteConnectionTabHandlingMode: editDeleteConnectionTabHandlingMode.value,
|
||||
rememberConnectionDatabaseOnDelete: editRememberConnectionDatabaseOnDelete.value,
|
||||
@@ -1796,6 +1798,7 @@ function syncEditorSettingsDraftFromStore() {
|
||||
editAutoSelectActiveSidebarNode.value = settingsStore.editorSettings.autoSelectActiveSidebarNode;
|
||||
editSidebarBrowseObjectsOnDatabaseActivation.value = settingsStore.editorSettings.sidebarBrowseObjectsOnDatabaseActivation;
|
||||
editOpenTabsRestoreMode.value = settingsStore.editorSettings.openTabsRestoreMode;
|
||||
editAutoReloadRestoredDataTabsOnOpen.value = settingsStore.editorSettings.autoReloadRestoredDataTabsOnOpen;
|
||||
editDisconnectTabHandlingMode.value = settingsStore.editorSettings.disconnectTabHandlingMode;
|
||||
editDeleteConnectionTabHandlingMode.value = settingsStore.editorSettings.deleteConnectionTabHandlingMode;
|
||||
editRememberConnectionDatabaseOnDelete.value = settingsStore.editorSettings.rememberConnectionDatabaseOnDelete;
|
||||
@@ -1937,6 +1940,7 @@ const editorSettingsDraftRefs: EditorSettingsDraftRefMap = {
|
||||
autoSelectActiveSidebarNode: editAutoSelectActiveSidebarNode,
|
||||
sidebarBrowseObjectsOnDatabaseActivation: editSidebarBrowseObjectsOnDatabaseActivation,
|
||||
openTabsRestoreMode: editOpenTabsRestoreMode,
|
||||
autoReloadRestoredDataTabsOnOpen: editAutoReloadRestoredDataTabsOnOpen,
|
||||
disconnectTabHandlingMode: editDisconnectTabHandlingMode,
|
||||
deleteConnectionTabHandlingMode: editDeleteConnectionTabHandlingMode,
|
||||
rememberConnectionDatabaseOnDelete: editRememberConnectionDatabaseOnDelete,
|
||||
@@ -2444,6 +2448,7 @@ function resetDefaultsForTab(tab: SettingsCategory) {
|
||||
editAutoSelectActiveSidebarNode.value = DEFAULT_EDITOR_SETTINGS.autoSelectActiveSidebarNode;
|
||||
editSidebarBrowseObjectsOnDatabaseActivation.value = DEFAULT_EDITOR_SETTINGS.sidebarBrowseObjectsOnDatabaseActivation;
|
||||
editOpenTabsRestoreMode.value = DEFAULT_EDITOR_SETTINGS.openTabsRestoreMode;
|
||||
editAutoReloadRestoredDataTabsOnOpen.value = DEFAULT_EDITOR_SETTINGS.autoReloadRestoredDataTabsOnOpen;
|
||||
editDisconnectTabHandlingMode.value = DEFAULT_EDITOR_SETTINGS.disconnectTabHandlingMode;
|
||||
editDeleteConnectionTabHandlingMode.value = DEFAULT_EDITOR_SETTINGS.deleteConnectionTabHandlingMode;
|
||||
editRememberConnectionDatabaseOnDelete.value = DEFAULT_EDITOR_SETTINGS.rememberConnectionDatabaseOnDelete;
|
||||
@@ -2626,6 +2631,7 @@ function resetAllDefaults() {
|
||||
editAutoSelectActiveSidebarNode.value = DEFAULT_EDITOR_SETTINGS.autoSelectActiveSidebarNode;
|
||||
editSidebarBrowseObjectsOnDatabaseActivation.value = DEFAULT_EDITOR_SETTINGS.sidebarBrowseObjectsOnDatabaseActivation;
|
||||
editOpenTabsRestoreMode.value = DEFAULT_EDITOR_SETTINGS.openTabsRestoreMode;
|
||||
editAutoReloadRestoredDataTabsOnOpen.value = DEFAULT_EDITOR_SETTINGS.autoReloadRestoredDataTabsOnOpen;
|
||||
editDisconnectTabHandlingMode.value = DEFAULT_EDITOR_SETTINGS.disconnectTabHandlingMode;
|
||||
editDeleteConnectionTabHandlingMode.value = DEFAULT_EDITOR_SETTINGS.deleteConnectionTabHandlingMode;
|
||||
editRememberConnectionDatabaseOnDelete.value = DEFAULT_EDITOR_SETTINGS.rememberConnectionDatabaseOnDelete;
|
||||
@@ -7877,6 +7883,15 @@ onUnmounted(() => {
|
||||
{{ t("settings.openTabsRestoreModeHint") }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="settings-item flex items-center justify-between gap-4 rounded-md border bg-muted/20 px-3 py-2">
|
||||
<div class="flex items-center gap-2">
|
||||
<Label for="auto-reload-restored-data-tabs">{{ t("settings.autoReloadRestoredDataTabsOnOpen") }}</Label>
|
||||
<HelpTooltip :label="t('settings.autoReloadRestoredDataTabsOnOpen')">
|
||||
{{ t("settings.autoReloadRestoredDataTabsOnOpenDescription") }}
|
||||
</HelpTooltip>
|
||||
</div>
|
||||
<Switch id="auto-reload-restored-data-tabs" v-model="editAutoReloadRestoredDataTabsOnOpen" />
|
||||
</div>
|
||||
<div class="settings-item space-y-2 rounded-md border bg-muted/20 px-3 py-2">
|
||||
<div class="flex items-center gap-2">
|
||||
<Label for="disconnect-tab-handling-mode">{{ t("settings.disconnectTabHandlingMode") }}</Label>
|
||||
|
||||
@@ -64,6 +64,7 @@ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigge
|
||||
import CustomContextMenu, { type ContextMenuItem } from "@/components/ui/CustomContextMenu.vue";
|
||||
import { Switch } from "@/components/ui/switch";
|
||||
import LightTooltip from "@/components/ui/LightTooltip.vue";
|
||||
import HelpTooltip from "@/components/ui/tooltip/HelpTooltip.vue";
|
||||
import ColumnInfoPanel from "@/components/editor/ColumnInfoPanel.vue";
|
||||
import QueryLoadingState from "@/components/common/QueryLoadingState.vue";
|
||||
import QueryErrorActions from "@/components/common/QueryErrorActions.vue";
|
||||
@@ -1309,6 +1310,15 @@ function reloadUnavailableDataTab() {
|
||||
emit("reload", props.activeTab.id, undefined, undefined, whereInput, orderBy);
|
||||
}
|
||||
|
||||
watch(
|
||||
() => props.activeTab.id,
|
||||
() => {
|
||||
if (!settingsStore.editorSettings.autoReloadRestoredDataTabsOnOpen) return;
|
||||
if (canReloadUnavailableDataTab(props.activeTab)) reloadUnavailableDataTab();
|
||||
},
|
||||
{ immediate: true },
|
||||
);
|
||||
|
||||
function refreshData(): boolean {
|
||||
// Reuse ObjectBrowser's reload path so schema reloads and stale object-response guards stay intact.
|
||||
if (props.activeTab.mode === "objects") return objectBrowserRef.value?.refresh?.() ?? false;
|
||||
@@ -3019,6 +3029,9 @@ defineExpose({
|
||||
<span>{{ t("grid.dataUnavailableHintPrefix") }}</span>
|
||||
<kbd v-for="key in modRKeys" :key="key" class="min-w-5 rounded border border-border/60 bg-muted/50 px-1.5 py-0.5 text-center font-mono text-[12px] leading-none text-muted-foreground shadow-xs">{{ key }}</kbd>
|
||||
<span>{{ t("grid.dataUnavailableHintSuffix") }}</span>
|
||||
<HelpTooltip :label="t('settings.autoReloadRestoredDataTabsOnOpen')">
|
||||
{{ t("grid.dataUnavailableAutoReloadHint", { setting: t("settings.autoReloadRestoredDataTabsOnOpen"), section: t("settings.navigationTab") }) }}
|
||||
</HelpTooltip>
|
||||
</div>
|
||||
<Button variant="outline" size="sm" class="h-7 gap-1.5" @click="reloadUnavailableDataTab()">
|
||||
<RefreshCcw class="h-3.5 w-3.5" />
|
||||
|
||||
@@ -2511,6 +2511,7 @@ export default withEnglishFallback({
|
||||
reexecuteQuery: "Sorğunu yenidən işlət",
|
||||
dataUnavailableHintPrefix: "Basın: ",
|
||||
dataUnavailableHintSuffix: " və ya yenidən yükləmək üçün aşağıdakı Yenilə düyməsinə klikləyin.",
|
||||
dataUnavailableAutoReloadHint: 'Avtomatik yeniləmə üçün Parametrlər › {section} bölməsində "{setting}" seçimini aktivləşdirin.',
|
||||
refresh: "Yenilə",
|
||||
undoChange: "Dəyişikliyi geri al",
|
||||
redoChange: "Dəyişikliyi təkrarla",
|
||||
@@ -7581,6 +7582,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "Yalnız bərkidilmiş vərəqləri saxla",
|
||||
openTabsRestoreModeNone: "Vərəqləri saxlama",
|
||||
openTabsRestoreModeHint: "Bərkidilmiş vərəqlər vərəq zolağının sol tərəfində qalır və tez-tez istifadə olunan giriş nöqtələri kimi əlverişlidir.",
|
||||
autoReloadRestoredDataTabsOnOpen: "Açılış zamanı bərpa edilmiş cədvəl məlumatlarını yenilə",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "Hələ məlumatı olmayan bərpa edilmiş cədvəl vərəqinə daxil olduqda, o avtomatik yenilənir (Ctrl+R düymələrinə basmaq və ya Yenilə düyməsinə klikləməklə eyni). Yalnız açdığınız vərəqə tətbiq olunur.",
|
||||
disconnectTabHandlingMode: "Əlaqə kəsildikdən sonra vərəqlər",
|
||||
disconnectTabHandlingModeDescription: "Əlaqə və ya verilənlər bazası bağlandıqdan sonra əlaqəli vərəqlərin necə idarə olunacağını seçin.",
|
||||
disconnectTabHandlingModeCloseTabs: "Bütün vərəqləri bağla",
|
||||
|
||||
@@ -2876,6 +2876,7 @@ export default {
|
||||
reexecuteQuery: "Run query again",
|
||||
dataUnavailableHintPrefix: "Press ",
|
||||
dataUnavailableHintSuffix: " or click Refresh below to reload.",
|
||||
dataUnavailableAutoReloadHint: 'Enable "{setting}" in Settings › {section} to reload automatically when you open the tab.',
|
||||
refresh: "Refresh",
|
||||
undoChange: "Undo change",
|
||||
redoChange: "Redo change",
|
||||
@@ -8408,6 +8409,8 @@ export default {
|
||||
openTabsRestoreModePinned: "Keep pinned tabs only",
|
||||
openTabsRestoreModeNone: "Do not keep tabs",
|
||||
openTabsRestoreModeHint: "Pinned tabs stay on the left side of the tab bar and work well as frequent entry points.",
|
||||
autoReloadRestoredDataTabsOnOpen: "Reload restored table data on open",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "When you enter a restored table tab that has no data yet, reload it automatically (same as pressing Ctrl+R or clicking Refresh). Applies only to the tab you open.",
|
||||
disconnectTabHandlingMode: "Tabs after disconnect",
|
||||
disconnectTabHandlingModeDescription: "Choose how related tabs should be handled after closing a connection or database.",
|
||||
disconnectTabHandlingModeCloseTabs: "Close all tabs",
|
||||
|
||||
@@ -2733,6 +2733,7 @@ export default withEnglishFallback({
|
||||
viewSnapshotSelectionNotRestored: "Se restauró la vista anterior, pero la selección era demasiado grande para conservarla.",
|
||||
dataUnavailableHintPrefix: "Presiona ",
|
||||
dataUnavailableHintSuffix: " o haz clic en Actualizar abajo para recargar.",
|
||||
dataUnavailableAutoReloadHint: "Puedes activar «{setting}» en Ajustes › {section} para recargar automáticamente al abrir la pestaña.",
|
||||
refresh: "Actualizar",
|
||||
undoChange: "Deshacer cambio",
|
||||
redoChange: "Rehacer cambio",
|
||||
@@ -7771,6 +7772,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "Solo pestañas fijadas",
|
||||
openTabsRestoreModeNone: "No conservar pestañas",
|
||||
openTabsRestoreModeHint: "Las pestañas fijadas permanecen en el lado izquierdo de la barra de pestañas y son útiles como puntos de entrada frecuentes.",
|
||||
autoReloadRestoredDataTabsOnOpen: "Recargar datos de tablas restauradas al abrirlas",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "Al entrar en una pestaña de tabla restaurada que aún no tiene datos, los recarga automáticamente (igual a presionar Ctrl+R o hacer clic en Actualizar). Se aplica solo a la pestaña que abres.",
|
||||
disconnectTabHandlingMode: "Pestañas tras desconectar",
|
||||
disconnectTabHandlingModeDescription: "Elige cómo conservar las pestañas relacionadas al cerrar una conexión o base de datos.",
|
||||
disconnectTabHandlingModeCloseTabs: "Cerrar todas las pestañas",
|
||||
|
||||
@@ -2775,6 +2775,7 @@ export default withEnglishFallback({
|
||||
reexecuteQuery: "Jalankan kueri lagi",
|
||||
dataUnavailableHintPrefix: "Tekan ",
|
||||
dataUnavailableHintSuffix: " atau klik Segarkan di bawah untuk memuat ulang.",
|
||||
dataUnavailableAutoReloadHint: "Aktifkan “{setting}” di Pengaturan › {section} agar dimuat ulang otomatis saat tab dibuka.",
|
||||
refresh: "Segarkan",
|
||||
undoChange: "Urungkan perubahan",
|
||||
redoChange: "Ulangi perubahan",
|
||||
@@ -8240,6 +8241,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "Hanya simpan tab yang disematkan",
|
||||
openTabsRestoreModeNone: "Jangan simpan tab",
|
||||
openTabsRestoreModeHint: "Tab yang disematkan tetap berada di sisi kiri bilah tab dan cocok sebagai titik masuk yang sering digunakan.",
|
||||
autoReloadRestoredDataTabsOnOpen: "Muat ulang data tabel yang dipulihkan saat dibuka",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "Saat membuka tab tabel yang dipulihkan dan belum memiliki data, tab akan dimuat ulang secara otomatis (sama dengan menekan Ctrl+R atau mengklik Segarkan). Hanya berlaku untuk tab yang Anda buka.",
|
||||
disconnectTabHandlingMode: "Tab setelah memutuskan koneksi",
|
||||
disconnectTabHandlingModeDescription: "Pilih bagaimana tab terkait ditangani setelah menutup koneksi atau database.",
|
||||
disconnectTabHandlingModeCloseTabs: "Tutup semua tab",
|
||||
|
||||
@@ -2624,6 +2624,7 @@ export default withEnglishFallback({
|
||||
viewSnapshotSelectionNotRestored: "La vista precedente è stata ripristinata, ma la selezione era troppo grande per essere mantenuta.",
|
||||
dataUnavailableHintPrefix: "Premi ",
|
||||
dataUnavailableHintSuffix: " o fai clic su Aggiorna qui sotto per ricaricare.",
|
||||
dataUnavailableAutoReloadHint: "Abilita «{setting}» in Impostazioni › {section} per ricaricare automaticamente all'apertura della scheda.",
|
||||
refresh: "Aggiorna",
|
||||
undoChange: "Annulla modifica",
|
||||
redoChange: "Ripeti modifica",
|
||||
@@ -7558,6 +7559,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "Solo schede fissate",
|
||||
openTabsRestoreModeNone: "Non mantenere schede",
|
||||
openTabsRestoreModeHint: "Le schede fissate restano sul lato sinistro della barra delle schede e sono utili come punti di accesso frequenti.",
|
||||
autoReloadRestoredDataTabsOnOpen: "Ricarica i dati delle tabelle ripristinate all'apertura",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "Quando entri in una scheda di tabella ripristinata che non ha ancora dati, la ricarica automaticamente (come premere Ctrl+R o fare clic su Aggiorna). Si applica solo alla scheda che apri.",
|
||||
disconnectTabHandlingMode: "Schede dopo la disconnessione",
|
||||
disconnectTabHandlingModeDescription: "Scegli come gestire le schede correlate dopo la chiusura di una connessione o di un database.",
|
||||
disconnectTabHandlingModeCloseTabs: "Chiudi tutte le schede",
|
||||
|
||||
@@ -2631,6 +2631,7 @@ export default withEnglishFallback({
|
||||
viewSnapshotSelectionNotRestored: "前回の表示位置は復元しましたが、選択範囲が大きすぎるため復元できませんでした。",
|
||||
dataUnavailableHintPrefix: "",
|
||||
dataUnavailableHintSuffix: " を押すか、下の更新ボタンをクリックして再読み込みしてください。",
|
||||
dataUnavailableAutoReloadHint: "タブを開いたときに自動で再読み込みするには、設定 › {section} で「{setting}」を有効にしてください。",
|
||||
refresh: "更新",
|
||||
commit: "コミット",
|
||||
rollback: "ロールバック",
|
||||
@@ -7575,6 +7576,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "ピン留めタブのみ保持",
|
||||
openTabsRestoreModeNone: "タブを保持しない",
|
||||
openTabsRestoreModeHint: "ピン留めタブはタブバーの左側に配置され、頻繁に使う作業の入り口として便利です。",
|
||||
autoReloadRestoredDataTabsOnOpen: "復元したテーブルデータを開いたときに再読み込み",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "まだデータがない復元済みテーブルタブを開くと、自動的に再読み込みします(Ctrl+R キーや「更新」のクリックと同じ)。開いたタブにのみ適用されます。",
|
||||
disconnectTabHandlingMode: "切断後のタブ",
|
||||
disconnectTabHandlingModeDescription: "接続またはデータベースを閉じた後の関連タブの処理方法を選択します。",
|
||||
disconnectTabHandlingModeCloseTabs: "すべてのタブを閉じる",
|
||||
|
||||
@@ -2624,6 +2624,7 @@ export default withEnglishFallback({
|
||||
reexecuteQuery: "쿼리 다시 실행",
|
||||
dataUnavailableHintPrefix: "",
|
||||
dataUnavailableHintSuffix: "을(를) 누르거나 아래 새로고침을 클릭하여 다시 불러오세요.",
|
||||
dataUnavailableAutoReloadHint: "탭을 열 때 자동으로 다시 불러오려면 설정 › {section}에서 “{setting}”을(를) 활성화하세요.",
|
||||
refresh: "새로고침",
|
||||
undoChange: "실행 취소",
|
||||
redoChange: "다시 실행",
|
||||
@@ -7330,6 +7331,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "고정 탭만 유지",
|
||||
openTabsRestoreModeNone: "탭 유지 안 함",
|
||||
openTabsRestoreModeHint: "고정 탭은 탭 바의 왼쪽에 유지되며 빈번한 진입점으로 잘 작동합니다.",
|
||||
autoReloadRestoredDataTabsOnOpen: "복원된 테이블 데이터를 열 때 다시 불러오기",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "아직 데이터가 없는 복원된 테이블 탭을 열면 자동으로 다시 불러옵니다(Ctrl+R 누르기 또는 새로고침 클릭과 동일). 열린 탭에만 적용됩니다.",
|
||||
disconnectTabHandlingMode: "연결 해제 후 탭",
|
||||
disconnectTabHandlingModeDescription: "연결이나 데이터베이스를 닫은 후 관련 탭을 처리하는 방법을 선택하세요.",
|
||||
disconnectTabHandlingModeCloseTabs: "모든 탭 닫기",
|
||||
|
||||
@@ -2626,6 +2626,7 @@ export default withEnglishFallback({
|
||||
viewSnapshotSelectionNotRestored: "A visualização anterior foi restaurada, mas a seleção era grande demais para ser mantida.",
|
||||
dataUnavailableHintPrefix: "Pressione ",
|
||||
dataUnavailableHintSuffix: " ou clique em Atualizar abaixo para recarregar.",
|
||||
dataUnavailableAutoReloadHint: "Ative “{setting}” em Configurações › {section} para recarregar automaticamente ao abrir a aba.",
|
||||
refresh: "Atualizar",
|
||||
undoChange: "Desfazer alteração",
|
||||
redoChange: "Refazer alteração",
|
||||
@@ -7560,6 +7561,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "Apenas abas fixadas",
|
||||
openTabsRestoreModeNone: "Não manter abas",
|
||||
openTabsRestoreModeHint: "As abas fixadas permanecem no lado esquerdo da barra de abas e funcionam bem como pontos de entrada frequentes.",
|
||||
autoReloadRestoredDataTabsOnOpen: "Recarregar dados de tabelas restauradas ao abrir",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "Ao entrar em uma aba de tabela restaurada que ainda não tem dados, recarrega-a automaticamente (o mesmo que pressionar Ctrl+R ou clicar em Atualizar). Aplica-se apenas à aba que você abrir.",
|
||||
disconnectTabHandlingMode: "Abas após desconectar",
|
||||
disconnectTabHandlingModeDescription: "Escolha como as abas relacionadas devem ser tratadas após fechar uma conexão ou banco de dados.",
|
||||
disconnectTabHandlingModeCloseTabs: "Fechar todas as abas",
|
||||
|
||||
@@ -2746,6 +2746,7 @@ export default withEnglishFallback({
|
||||
reexecuteQuery: "Выполнить запрос снова",
|
||||
dataUnavailableHintPrefix: "Нажмите ",
|
||||
dataUnavailableHintSuffix: " или нажмите «Обновить» ниже, чтобы перезагрузить.",
|
||||
dataUnavailableAutoReloadHint: "Включите «{setting}» в Настройки › {section}, чтобы вкладка перезагружалась автоматически при её открытии.",
|
||||
refresh: "Обновить",
|
||||
undoChange: "Отменить изменение",
|
||||
redoChange: "Повторить изменение",
|
||||
@@ -8783,6 +8784,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "Сохранять только закреплённые вкладки",
|
||||
openTabsRestoreModeNone: "Не сохранять вкладки",
|
||||
openTabsRestoreModeHint: "Закреплённые вкладки остаются слева на панели вкладок и удобны как точки частого доступа.",
|
||||
autoReloadRestoredDataTabsOnOpen: "Перезагружать данные восстановленных таблиц при открытии",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "При входе в восстановленную вкладку таблицы, в которой ещё нет данных, она перезагружается автоматически (то же, что нажать Ctrl+R или «Обновить»). Применяется только к открываемой вкладке.",
|
||||
disconnectTabHandlingMode: "Вкладки после отключения",
|
||||
disconnectTabHandlingModeDescription: "Выберите, что делать со связанными вкладками после закрытия подключения или базы данных.",
|
||||
disconnectTabHandlingModeCloseTabs: "Закрывать все вкладки",
|
||||
|
||||
@@ -2506,6 +2506,7 @@ export default withEnglishFallback({
|
||||
reexecuteQuery: "Sorguyu yeniden çalıştır",
|
||||
dataUnavailableHintPrefix: "Yeniden yüklemek için ",
|
||||
dataUnavailableHintSuffix: " tuşuna basın veya aşağıdaki Yenile düğmesine tıklayın.",
|
||||
dataUnavailableAutoReloadHint: "Sekmeyi açtığınızda otomatik yeniden yüklemek için Ayarlar › {section} bölümünde “{setting}” seçeneğini etkinleştirin.",
|
||||
refresh: "Yenile",
|
||||
undoChange: "Değişikliği geri al",
|
||||
redoChange: "Değişikliği yinele",
|
||||
@@ -7463,6 +7464,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "Yalnızca sabitlenmiş sekmeleri koru",
|
||||
openTabsRestoreModeNone: "Sekmeleri koruma",
|
||||
openTabsRestoreModeHint: "Sabitlenmiş sekmeler sekme çubuğunun sol tarafında kalır ve sık kullanılan giriş noktaları olarak iyi çalışır.",
|
||||
autoReloadRestoredDataTabsOnOpen: "Geri yüklenen tablo verilerini açılışta yeniden yükle",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "Henüz verisi olmayan geri yüklenmiş bir tablo sekmesine girdiğinizde, otomatik olarak yeniden yükler (Ctrl+R tuşuna basmak veya Yenile'ye tıklamakla aynı). Yalnızca açtığınız sekmeye uygulanır.",
|
||||
disconnectTabHandlingMode: "Bağlantı kesildikten sonraki sekmeler",
|
||||
disconnectTabHandlingModeDescription: "Bir bağlantı veya veritabanı kapatıldıktan sonra ilgili sekmelerin nasıl ele alınacağını seçin.",
|
||||
disconnectTabHandlingModeCloseTabs: "Tüm sekmeleri kapat",
|
||||
|
||||
@@ -2787,6 +2787,7 @@ export default withEnglishFallback({
|
||||
viewSnapshotSelectionNotRestored: "已恢复上次的视图位置,但过大的选择范围未能保留。",
|
||||
dataUnavailableHintPrefix: "按 ",
|
||||
dataUnavailableHintSuffix: " 或点击下方刷新按钮重新加载。",
|
||||
dataUnavailableAutoReloadHint: "若要在打开标签页时自动重新加载,请在 设置 › {section} 中启用「{setting}」。",
|
||||
cachedResultUnavailable: "缓存结果缺失或不兼容。",
|
||||
reexecuteQuery: "重新运行查询",
|
||||
refresh: "刷新",
|
||||
@@ -8374,6 +8375,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "仅保留固定标签",
|
||||
openTabsRestoreModeNone: "不保留标签",
|
||||
openTabsRestoreModeHint: "固定标签会显示在标签栏左侧,适合作为常用工作入口。",
|
||||
autoReloadRestoredDataTabsOnOpen: "打开时重新加载已恢复的表数据",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "进入尚未加载数据的已恢复表标签页时,自动重新加载(等同于按 Ctrl+R 或点击刷新)。仅对您打开的标签页生效。",
|
||||
disconnectTabHandlingMode: "关闭连接后的标签页处理",
|
||||
disconnectTabHandlingModeDescription: "选择关闭连接或数据库后,相关标签页的保留策略。",
|
||||
disconnectTabHandlingModeCloseTabs: "关闭全部页签",
|
||||
|
||||
@@ -2626,6 +2626,7 @@ export default withEnglishFallback({
|
||||
viewSnapshotSelectionNotRestored: "已還原上次的檢視位置,但過大的選取範圍未能保留。",
|
||||
dataUnavailableHintPrefix: "按 ",
|
||||
dataUnavailableHintSuffix: " 或點擊下方重新整理來重新載入。",
|
||||
dataUnavailableAutoReloadHint: "若要在開啟分頁時自動重新載入,請在 設定 › {section} 中啟用「{setting}」。",
|
||||
queryError: "查詢出錯",
|
||||
saveErrorTitle: "資料修改儲存失敗",
|
||||
refresh: "重新整理",
|
||||
@@ -6878,6 +6879,8 @@ export default withEnglishFallback({
|
||||
openTabsRestoreModePinned: "僅保留置頂分頁",
|
||||
openTabsRestoreModeNone: "不保留分頁",
|
||||
openTabsRestoreModeHint: "置頂分頁會顯示在分頁列左側,適合作為常用工作入口。",
|
||||
autoReloadRestoredDataTabsOnOpen: "開啟時重新載入已還原的資料表資料",
|
||||
autoReloadRestoredDataTabsOnOpenDescription: "進入尚未載入資料的已還原資料表分頁時,自動重新載入(等同於按 Ctrl+R 或點擊重新整理)。僅對您開啟的分頁生效。",
|
||||
disconnectTabHandlingMode: "關閉連線後的分頁處理",
|
||||
disconnectTabHandlingModeDescription: "選擇關閉連線或資料庫後,相關分頁的保留策略。",
|
||||
disconnectTabHandlingModeCloseTabs: "關閉全部分頁",
|
||||
|
||||
@@ -96,6 +96,7 @@ export const EDITOR_SETTINGS_DRAFT_KEYS = [
|
||||
"autoSelectActiveSidebarNode",
|
||||
"sidebarBrowseObjectsOnDatabaseActivation",
|
||||
"openTabsRestoreMode",
|
||||
"autoReloadRestoredDataTabsOnOpen",
|
||||
"disconnectTabHandlingMode",
|
||||
"deleteConnectionTabHandlingMode",
|
||||
"rememberConnectionDatabaseOnDelete",
|
||||
|
||||
@@ -127,6 +127,7 @@ const SETTINGS_TRANSFER_CATEGORY_KEYS: Record<SettingsTransferCategoryId, readon
|
||||
"autoSelectActiveSidebarNode",
|
||||
"sidebarBrowseObjectsOnDatabaseActivation",
|
||||
"openTabsRestoreMode",
|
||||
"autoReloadRestoredDataTabsOnOpen",
|
||||
"disconnectTabHandlingMode",
|
||||
"deleteConnectionTabHandlingMode",
|
||||
"rememberConnectionDatabaseOnDelete",
|
||||
|
||||
@@ -372,6 +372,13 @@ describe("normalizeEditorSettings", () => {
|
||||
expect(normalizeEditorSettings({ restoreOpenTabsOnLaunch: true } as any).openTabsRestoreMode).toBe("all");
|
||||
});
|
||||
|
||||
it("keeps auto-reload of restored data tabs off unless explicitly enabled", () => {
|
||||
expect(normalizeEditorSettings({}).autoReloadRestoredDataTabsOnOpen).toBe(false);
|
||||
expect(normalizeEditorSettings({ autoReloadRestoredDataTabsOnOpen: true }).autoReloadRestoredDataTabsOnOpen).toBe(true);
|
||||
expect(normalizeEditorSettings({ autoReloadRestoredDataTabsOnOpen: "true" as any }).autoReloadRestoredDataTabsOnOpen).toBe(false);
|
||||
expect(normalizeEditorSettings({ autoReloadRestoredDataTabsOnOpen: undefined }).autoReloadRestoredDataTabsOnOpen).toBe(false);
|
||||
});
|
||||
|
||||
it("defaults the delete-time tab handling to closing tabs and preserves explicit modes", () => {
|
||||
expect(normalizeEditorSettings({}).deleteConnectionTabHandlingMode).toBe("close-tabs");
|
||||
expect(normalizeEditorSettings({ deleteConnectionTabHandlingMode: "keep-sql-tabs" }).deleteConnectionTabHandlingMode).toBe("keep-sql-tabs");
|
||||
|
||||
@@ -991,6 +991,7 @@ export interface EditorSettings {
|
||||
sidebarBrowseObjectsOnDatabaseActivation: boolean;
|
||||
sidebarBrowseObjectsOnDatabaseActivationMigrationVersion: number;
|
||||
openTabsRestoreMode: OpenTabsRestoreMode;
|
||||
autoReloadRestoredDataTabsOnOpen: boolean;
|
||||
disconnectTabHandlingMode: DisconnectTabHandlingMode;
|
||||
deleteConnectionTabHandlingMode: DeleteConnectionTabHandlingMode;
|
||||
/** 删除连接时记住「连接名 → 数据库名」,新建同名同类型连接时自动回填并重绑保留的 SQL 页签。 */
|
||||
@@ -1285,6 +1286,7 @@ export const DEFAULT_EDITOR_SETTINGS: EditorSettings = {
|
||||
sidebarBrowseObjectsOnDatabaseActivation: false,
|
||||
sidebarBrowseObjectsOnDatabaseActivationMigrationVersion: SIDEBAR_BROWSE_OBJECTS_MIGRATION_VERSION,
|
||||
openTabsRestoreMode: "all",
|
||||
autoReloadRestoredDataTabsOnOpen: false,
|
||||
disconnectTabHandlingMode: "close-tabs",
|
||||
deleteConnectionTabHandlingMode: "close-tabs",
|
||||
rememberConnectionDatabaseOnDelete: true,
|
||||
@@ -1884,6 +1886,7 @@ export function normalizeEditorSettings(settings: Partial<EditorSettings>, exist
|
||||
}
|
||||
).restoreOpenTabsOnLaunch,
|
||||
),
|
||||
autoReloadRestoredDataTabsOnOpen: settings.autoReloadRestoredDataTabsOnOpen === true,
|
||||
disconnectTabHandlingMode: normalizeDisconnectTabHandlingMode(
|
||||
(settings as Partial<EditorSettings>).disconnectTabHandlingMode,
|
||||
(
|
||||
@@ -2719,6 +2722,7 @@ export const useSettingsStore = defineStore("settings", () => {
|
||||
if (partial.autoSelectActiveSidebarNode !== undefined) editorSettings.value.autoSelectActiveSidebarNode = partial.autoSelectActiveSidebarNode;
|
||||
if (partial.sidebarBrowseObjectsOnDatabaseActivation !== undefined) editorSettings.value.sidebarBrowseObjectsOnDatabaseActivation = partial.sidebarBrowseObjectsOnDatabaseActivation === true;
|
||||
if (partial.openTabsRestoreMode !== undefined) editorSettings.value.openTabsRestoreMode = normalizeOpenTabsRestoreMode(partial.openTabsRestoreMode);
|
||||
if (partial.autoReloadRestoredDataTabsOnOpen !== undefined) editorSettings.value.autoReloadRestoredDataTabsOnOpen = partial.autoReloadRestoredDataTabsOnOpen === true;
|
||||
if (partial.disconnectTabHandlingMode !== undefined) editorSettings.value.disconnectTabHandlingMode = normalizeDisconnectTabHandlingMode(partial.disconnectTabHandlingMode);
|
||||
if (partial.deleteConnectionTabHandlingMode !== undefined) editorSettings.value.deleteConnectionTabHandlingMode = normalizeDeleteConnectionTabHandlingMode(partial.deleteConnectionTabHandlingMode);
|
||||
if (partial.rememberConnectionDatabaseOnDelete !== undefined) editorSettings.value.rememberConnectionDatabaseOnDelete = partial.rememberConnectionDatabaseOnDelete === true;
|
||||
|
||||
Reference in New Issue
Block a user