change to recent database

This commit is contained in:
Jan Prochazka
2021-03-25 13:20:42 +01:00
parent 2a9c67d2f6
commit 638b04877d
4 changed files with 51 additions and 2 deletions

View File

@@ -18,7 +18,6 @@
import { filterName } from 'dbgate-datalib';
import _ from 'lodash';
import { derived } from 'svelte/store';
import { onMount } from 'svelte';
import { commands, getVisibleCommandPalette, visibleCommandPalette } from '../stores';
import clickOutside from '../utility/clickOutside';
@@ -28,6 +27,7 @@
let domInput;
let parentCommand;
let filter = '';
const domItems = {};
$: selectedIndex = true ? 0 : filter;
@@ -65,7 +65,12 @@
if (e.keyCode == keycodes.downArrow && selectedIndex < filteredItems.length - 1) selectedIndex++;
if (e.keyCode == keycodes.enter) handleCommand(filteredItems[selectedIndex]);
if (e.keyCode == keycodes.escape) $visibleCommandPalette = false;
if (e.keyCode == keycodes.pageDown) selectedIndex = Math.min(selectedIndex + 15, filteredItems.length - 1);
if (e.keyCode == keycodes.pageUp) selectedIndex = Math.max(selectedIndex - 15, 0);
}
$: if (domItems[selectedIndex]) domItems[selectedIndex].scrollIntoView({ block: 'nearest', inline: 'nearest' });
</script>
<div class="main" use:clickOutside on:clickOutside={() => ($visibleCommandPalette = false)}>
@@ -80,7 +85,12 @@
</div>
<div class="content">
{#each filteredItems as command, index}
<div class="command" class:selected={index == selectedIndex} on:click={() => handleCommand(command)}>
<div
class="command"
class:selected={index == selectedIndex}
on:click={() => handleCommand(command)}
bind:this={domItems[index]}
>
<div>{command.text}</div>
{#if command.keyText}
<div class="shortcut">{command.keyText}</div>

View File

@@ -0,0 +1,30 @@
import _ from 'lodash';
import { recentDatabases, currentDatabase, getRecentDatabases } from '../stores';
import registerCommand from './registerCommand';
currentDatabase.subscribe(value => {
console.log('DB', value);
if (!value) return;
recentDatabases.update(list => {
const res = [
value,
..._.compact(list).filter(x => x.name != value.name || x.connection?._id != value.connection?.id),
].slice(0, 10);
return res;
});
});
function switchDatabaseCommand(db) {
return {
text: `${db.name} on ${db?.connection?.displayName || db?.connection?.server}`,
onClick: () => currentDatabase.set(db),
};
}
registerCommand({
id: 'database.switch',
category: 'Database',
name: 'Change to recent',
keyText: 'Ctrl+D',
getSubCommands: () => getRecentDatabases().map(switchDatabaseCommand),
});

View File

@@ -13,6 +13,7 @@ import getElectron from '../utility/getElectron';
import { openElectronFile } from '../utility/openElectronFile';
import { getDefaultFileFormat } from '../plugins/fileformats';
import { getCurrentConfig } from '../stores';
import './recentDatabaseSwitch';
const electron = getElectron();