diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte
index 67fff6cdc..522dc9ca7 100644
--- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte
+++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte
@@ -378,12 +378,22 @@
null
);
}
+
+ function testEqual(a, b) {
+ return (
+ a.conid == b.conid &&
+ a.database == b.database &&
+ a.objectTypeField == b.objectTypeField &&
+ a.pureName == b.pureName &&
+ a.schemaName == b.schemaName
+ );
+ }
pinnedTables.update(list => [...list, data])}
+ onUnpin={isPinned ? () => pinnedTables.update(list => list.filter(x => !testEqual(x, data))) : null}
on:click={() => handleClick()}
on:middleclick={() => handleClick(true)}
on:expand
diff --git a/packages/web/src/appobj/PinnedAppObject.svelte b/packages/web/src/appobj/PinnedAppObject.svelte
new file mode 100644
index 000000000..94e301df0
--- /dev/null
+++ b/packages/web/src/appobj/PinnedAppObject.svelte
@@ -0,0 +1,21 @@
+
+
+
+
+{#if data.objectTypeField}
+
+{:else}
+
+{/if}
diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts
index e12175ea4..439b6b422 100644
--- a/packages/web/src/stores.ts
+++ b/packages/web/src/stores.ts
@@ -43,6 +43,7 @@ export const activeTabId = derived([openedTabs], ([$openedTabs]) => $openedTabs.
export const activeTab = derived([openedTabs], ([$openedTabs]) => $openedTabs.find(x => x.selected));
export const recentDatabases = writableWithStorage([], 'recentDatabases');
export const pinnedDatabases = writableWithStorage([], 'pinnedDatabases');
+export const pinnedTables = writableWithStorage([], 'pinnedTables');
export const commandsSettings = derived(useSettings(), (config: any) => (config || {}).commands || {});
export const allResultsInOneTabDefault = writableWithStorage(false, 'allResultsInOneTabDefault');
export const commandsCustomized = derived([commands, commandsSettings], ([$commands, $commandsSettings]) =>
diff --git a/packages/web/src/widgets/PinnedObjectsList.svelte b/packages/web/src/widgets/PinnedObjectsList.svelte
index fbafbdbe8..acf82f88f 100644
--- a/packages/web/src/widgets/PinnedObjectsList.svelte
+++ b/packages/web/src/widgets/PinnedObjectsList.svelte
@@ -2,17 +2,22 @@
import _ from 'lodash';
import WidgetsInnerContainer from './WidgetsInnerContainer.svelte';
import AppObjectList from '../appobj/AppObjectList.svelte';
- import { pinnedDatabases } from '../stores';
- import * as databaseAppObject from '../appobj/DatabaseAppObject.svelte';
+ import { currentDatabase, pinnedDatabases, pinnedTables } from '../stores';
+ import * as pinnedAppObject from '../appobj/PinnedAppObject.svelte';
import { useConnectionColorFactory } from '../utility/useConnectionColor';
+ import AboutModal from '../modals/AboutModal.svelte';
const connectionColorFactory = useConnectionColorFactory(3);
+
+ $: filteredTables = $pinnedTables.filter(
+ x => x.conid == $currentDatabase?.connection?._id && x.database == $currentDatabase?.name
+ );
diff --git a/packages/web/src/widgets/SqlObjectList.svelte b/packages/web/src/widgets/SqlObjectList.svelte
index 7879f9046..d129558d8 100644
--- a/packages/web/src/widgets/SqlObjectList.svelte
+++ b/packages/web/src/widgets/SqlObjectList.svelte
@@ -54,7 +54,6 @@
const handleRefreshDatabase = () => {
axiosInstance.post('database-connections/refresh', { conid, database });
};
-
{#if $status && $status.name == 'error'}
@@ -88,6 +87,7 @@
data.objectTypeField == 'tables' || data.objectTypeField == 'views' || data.objectTypeField == 'matviews'}
expandIconFunc={chevronExpandIcon}
{filter}
+ passProps={{ showPinnedInsteadOfUnpin: true }}
/>
{/if}