diff --git a/packages/api/src/controllers/connections.js b/packages/api/src/controllers/connections.js index 37b9252ff..1a20669f1 100644 --- a/packages/api/src/controllers/connections.js +++ b/packages/api/src/controllers/connections.js @@ -162,6 +162,14 @@ module.exports = { return res; }, + update_meta: 'post', + async update({ _id, values }) { + if (portalConnections) return; + const res = await this.datastore.update({ _id }, { $set: values }); + socket.emitChanged('connection-list-changed'); + return res; + }, + delete_meta: 'post', async delete(connection) { if (portalConnections) return; diff --git a/packages/web/src/modals/ChooseConnectionColorModal.svelte b/packages/web/src/modals/ChooseConnectionColorModal.svelte new file mode 100644 index 000000000..4a244dc84 --- /dev/null +++ b/packages/web/src/modals/ChooseConnectionColorModal.svelte @@ -0,0 +1,27 @@ + + + + { + value = e.detail; + + axiosInstance.post('connections/update', { + _id: conid, + values: { connectionColor: e.detail }, + }); + }} + /> + diff --git a/packages/web/src/plugins/ThemeDark.svelte b/packages/web/src/plugins/ThemeDark.svelte index 76f5ab663..0ff082ab3 100644 --- a/packages/web/src/plugins/ThemeDark.svelte +++ b/packages/web/src/plugins/ThemeDark.svelte @@ -55,6 +55,7 @@ --theme-bg-statusbar-inv: #0050b3; --theme-bg-statusbar-inv-hover: #096dd9; + --theme-bg-statusbar-inv-font: #222; --theme-bg-modalheader: rgb(43, 60, 61); --theme-bg-button-inv: #004488; diff --git a/packages/web/src/plugins/ThemeLight.svelte b/packages/web/src/plugins/ThemeLight.svelte index e31f4d2b9..353e1b536 100644 --- a/packages/web/src/plugins/ThemeLight.svelte +++ b/packages/web/src/plugins/ThemeLight.svelte @@ -49,6 +49,7 @@ --theme-bg-statusbar-inv: #0050b3; --theme-bg-statusbar-inv-hover: #096dd9; + --theme-bg-statusbar-inv-font: #222; --theme-bg-modalheader: #eff; --theme-bg-button-inv: #337ab7; diff --git a/packages/web/src/utility/useConnectionColor.ts b/packages/web/src/utility/useConnectionColor.ts index 405f38035..20b1eefea 100644 --- a/packages/web/src/utility/useConnectionColor.ts +++ b/packages/web/src/utility/useConnectionColor.ts @@ -8,6 +8,7 @@ export function getConnectionColor(connections, dbid, themeType, colorIndex, bac const current = connections.find(x => x._id == dbid.conid); if (!current?.connectionColor) return undefined; const palettes = themeType == 'dark' ? presetDarkPalettes : presetPalettes; + if (colorIndex == null) return current?.connectionColor; const color = palettes[current?.connectionColor][colorIndex]; if (backgroundStyle) return `background:${color}`; return color; diff --git a/packages/web/src/widgets/StatusBar.svelte b/packages/web/src/widgets/StatusBar.svelte index 833a0303a..0bbc1bb40 100644 --- a/packages/web/src/widgets/StatusBar.svelte +++ b/packages/web/src/widgets/StatusBar.svelte @@ -31,6 +31,8 @@ import _ from 'lodash'; import { writable } from 'svelte/store'; import moment from 'moment'; + import { showModal } from '../modals/modalTools'; + import ChooseConnectionColorModal from '../modals/ChooseConnectionColorModal.svelte'; import FontIcon from '../icons/FontIcon.svelte'; @@ -52,6 +54,7 @@ $: connectionLabel = getConnectionLabel(connection, { allowExplicitDatabase: false }); $: connectionBackground = useConnectionColor(dbid, 3, 'dark', true); + $: connectionButtonBackground = useConnectionColor(dbid, 6, 'dark', true); let timerValue = 1; @@ -74,11 +77,22 @@ {databaseName} {/if} - {#if connectionLabel} + {#if connectionLabel && dbid}
{connectionLabel}
+
{ + showModal(ChooseConnectionColorModal, { conid: dbid.conid }); + }} + > +
+ +
+
{/if} {#if connection && connection.user}
@@ -173,4 +187,10 @@ .clickable:hover { background-color: var(--theme-bg-statusbar-inv-hover); } + + .colorbox { + padding: 0px 3px; + border-radius: 2px; + color: var(--theme-bg-statusbar-inv-font); + }