This commit is contained in:
shanhexi
2023-11-20 15:44:13 +08:00
parent ed1a3268ec
commit 242df2cd21
24 changed files with 38 additions and 93 deletions

View File

@@ -12,8 +12,8 @@ import { ITreeConfigItem, treeConfig } from '../treeConfig';
import { useMemo } from 'react';
// ----- store -----
import { createConsole, addWorkspaceTab } from '@/store/console';
import { useWorkspaceStore } from '@/store/workspace';
import { createConsole, addWorkspaceTab } from '@/pages/main/workspace/store/console';
import { useWorkspaceStore } from '@/pages/main/workspace/store';
// ---- functions -----
import { openView, openFunction, openProcedure, openTrigger } from '../functions/openAsyncSql';

View File

@@ -15,7 +15,7 @@ import LoadingGracile from '@/components/Loading/LoadingGracile';
import Driver from './components/Driver';
// ----- store -----
import { useConnectionStore } from '@/store/connection';
import { useConnectionStore } from '@/pages/main/store/connection';
const { Option } = Select;

View File

@@ -55,7 +55,7 @@ const OperationLine = (props: IProps) => {
</Button>
</div>
<div>
{/* <SelectBoundInfo setBoundInfo={setBoundInfo} boundInfo={boundInfo} /> */}
<SelectBoundInfo setBoundInfo={setBoundInfo} boundInfo={boundInfo} />
</div>
</div>
);

View File

@@ -1,7 +1,7 @@
import React, { useEffect, useMemo, useState } from 'react';
import { IBoundInfo } from '../../index';
import { Dropdown } from 'antd';
import { useConnectionStore } from '@/store/connection';
import { useConnectionStore } from '@/pages/main/store/connection';
import connectionService from '@/service/connection';
import styles from './index.less';

View File

@@ -8,7 +8,7 @@ import sqlService from '@/service/sql';
import i18n from '@/i18n';
import { debounce } from 'lodash';
import { DatabaseTypeCode } from '@/constants';
import { setOpenCreateDatabaseModal } from '@/store/workspace/modal';
import { setOpenCreateDatabaseModal } from '@/pages/main/workspace/store/modal';
interface IProps {
relyOnParams: {

View File

@@ -1,8 +1,8 @@
import React, { memo } from 'react';
import styles from './index.less';
import classnames from 'classnames';
import { useWorkspaceStore } from '@/store/workspace';
import { togglePanelLeft, togglePanelRight } from '@/store/workspace/config';
import { useWorkspaceStore } from '@/pages/main/workspace/store';
import { togglePanelLeft, togglePanelRight } from '@/pages/main/workspace/store/config';
interface IProps {
className?: string;

View File

@@ -1,4 +1,5 @@
import { setWorkspaceTabList, useConsoleStore, setActiveConsoleId } from '@/store/console';
import { setWorkspaceTabList, setActiveConsoleId } from '@/pages/main/workspace/store/console';
import { useWorkspaceStore } from '@/pages/main/workspace/store';
import { ConsoleStatus, ConsoleOpenedStatus, WorkspaceTabType, DatabaseTypeCode } from '@/constants'
import historyService from '@/service/history';
@@ -14,7 +15,7 @@ interface ICreateConsoleParams {
}
function useCreateConsole() {
const { workspaceTabList } = useConsoleStore(state => {
const { workspaceTabList } = useWorkspaceStore(state => {
return {
workspaceTabList: state.workspaceTabList,
}

View File

@@ -1,9 +1,9 @@
import { useEffect } from 'react';
import connectionService from '@/service/connection';
import { setConnectionEnvList, getConnectionList } from '@/store/connection';
import { useWorkspaceStore } from '@/store/workspace';
import { setCurrentConnectionDetails } from '@/store/workspace/common';
import { setConnectionEnvList, getConnectionList } from '@/pages/main/store/connection';
import { useWorkspaceStore } from '@/pages/main/workspace/store';
import { setCurrentConnectionDetails } from '@/pages/main/workspace/store/common';
const useGetConnection = () => {

View File

@@ -22,7 +22,7 @@ import MenuLabel from '@/components/MenuLabel';
import useClickAndDoubleClick from '@/hooks/useClickAndDoubleClick';
// ----- store -----
import { useConnectionStore, getConnectionList } from '@/store/connection';
import { useConnectionStore, getConnectionList } from '@/pages/main/store/connection';
import styles from './index.less';

View File

@@ -88,19 +88,13 @@ function MainPage(props: IProps) {
if (!activeNav) {
return;
}
// activeNav 发生变化,同步到全局状态管理
activeNav.isLoad = true;
dispatch({
type: 'mainPage/updateCurPage',
payload: activeNav.key,
});
// activeNav 发生变化 如果没有选中连接并且不在connections 那么需要跳转到 连接页面
// if (!curConnection?.id && activeNav.key !== 'connections') {
// setActiveNav(navConfig[2]);
// }
// activeNav 变化 同步地址栏变化
// change url,but no page refresh
// window.history.pushState({}, "", `/#/${activeNav.key}`);
}, [activeNav]);
useEffect(() => {

View File

@@ -2,7 +2,7 @@ import React, { memo, useEffect, useState } from 'react';
import styles from './index.less';
import classnames from 'classnames';
import { useWorkspaceStore } from '@/store/workspace';
import { useWorkspaceStore } from '@/pages/main/workspace/store';
// ----- components -----
import OperationLine from '../OperationLine';

View File

@@ -10,7 +10,7 @@ import { DatabaseTypeCode } from '@/constants';
import Iconfont from '@/components/Iconfont';
// ----- store -----
import { useWorkspaceStore } from '@/store/workspace';
import { useWorkspaceStore } from '@/pages/main/workspace/store';
interface IProps {
searchValue: string;

View File

@@ -4,7 +4,7 @@ import classnames from 'classnames';
import { Popover } from 'antd';
import Iconfont from '@/components/Iconfont';
import Output from '@/components/Output';
import { useWorkspaceStore } from '@/store/workspace';
import { useWorkspaceStore } from '@/pages/main/workspace/store';
import i18n from '@/i18n';
interface IProps {

View File

@@ -4,9 +4,9 @@ import classnames from 'classnames';
import styles from './index.less';
// ---- store ----
import { useConnectionStore } from '@/store/connection';
import { useWorkspaceStore } from '@/store/workspace';
import { setCurrentConnectionDetails } from '@/store/workspace/common';
import { useConnectionStore } from '@/pages/main/store/connection';
import { useWorkspaceStore } from '@/pages/main/workspace/store';
import { setCurrentConnectionDetails } from '@/pages/main/workspace/store/common';
// ----- components -----
import Iconfont from '@/components/Iconfont';

View File

@@ -20,8 +20,8 @@ import Iconfont from '@/components/Iconfont';
import ShortcutKey from '@/components/ShortcutKey';
// ---- store -----
import { useConsoleStore, getSavedConsoleList, setActiveConsoleId, setWorkspaceTabList } from '@/store/console';
import { useWorkspaceStore } from '@/store/workspace';
import { getSavedConsoleList, setActiveConsoleId, setWorkspaceTabList } from '@/pages/main/workspace/store/console';
import { useWorkspaceStore } from '@/pages/main/workspace/store';
// ----- services -----
import historyService from '@/service/history';
@@ -29,7 +29,8 @@ import historyService from '@/service/history';
import indexedDB from '@/indexedDB';
const WorkspaceTabs = memo(() => {
const { activeConsoleId, consoleList, workspaceTabList } = useConsoleStore((state) => {
const { activeConsoleId, consoleList, workspaceTabList } = useWorkspaceStore((state) => {
return {
consoleList: state.consoleList,
activeConsoleId: state.activeConsoleId,

View File

@@ -1,7 +1,7 @@
import React, { memo, useRef } from 'react';
import classnames from 'classnames';
import { useWorkspaceStore } from '@/store/workspace';
import { useWorkspaceStore } from '@/pages/main/workspace/store';
import DraggableContainer from '@/components/DraggableContainer';
import WorkspaceLeft from './components/WorkspaceLeft';

View File

@@ -1,7 +1,4 @@
import { UseBoundStoreWithEqualityFn, createWithEqualityFn } from 'zustand/traditional';
import { devtools } from 'zustand/middleware';
import { shallow } from 'zustand/shallow';
import { StoreApi } from 'zustand';
import { useWorkspaceStore } from './index';
import { IConsole, ICreateConsoleParams } from '@/typings';
import { IWorkspaceTab } from '@/typings/workspace';
import historyService from '@/service/history';
@@ -13,37 +10,32 @@ export interface IConsoleStore {
workspaceTabList: IWorkspaceTab[] | null;
}
const initConsoleStore = {
export const initConsoleStore = {
consoleList: null,
activeConsoleId: null,
workspaceTabList: null,
}
export const useConsoleStore: UseBoundStoreWithEqualityFn<StoreApi<IConsoleStore>> = createWithEqualityFn(
devtools(() => (initConsoleStore)),
shallow
);
export const getSavedConsoleList = () => {
historyService.getSavedConsoleList({
tabOpened: 'y',
pageNo: 1,
pageSize: 20,
}).then((res) => {
useConsoleStore.setState({ consoleList: res?.data });
useWorkspaceStore.setState({ consoleList: res?.data });
});
}
export const setActiveConsoleId = (id: IConsoleStore['activeConsoleId']) => {
useConsoleStore.setState({ activeConsoleId: id });
useWorkspaceStore.setState({ activeConsoleId: id });
}
export const setWorkspaceTabList = (items: IConsoleStore['workspaceTabList']) => {
useConsoleStore.setState({ workspaceTabList: items });
useWorkspaceStore.setState({ workspaceTabList: items });
}
export const createConsole = (params: ICreateConsoleParams)=>{
const workspaceTabList = useConsoleStore.getState().workspaceTabList;
const workspaceTabList = useWorkspaceStore.getState().workspaceTabList;
const newConsole = {
...params,
name: params.name || 'create console',
@@ -71,7 +63,7 @@ export const createConsole = (params: ICreateConsoleParams)=>{
}
export const addWorkspaceTab = (params: IWorkspaceTab) => {
const workspaceTabList = useConsoleStore.getState().workspaceTabList;
const workspaceTabList = useWorkspaceStore.getState().workspaceTabList;
if(workspaceTabList?.findIndex((item) => item?.id === params?.id) !== -1){
setActiveConsoleId(params.id);
return;

View File

@@ -4,7 +4,7 @@ import { shallow } from 'zustand/shallow';
import { StoreApi } from 'zustand';
import { initConfigStore, IConfigStore } from './config';
import { consoleStore, IConsoleStore } from './console';
import { initConsoleStore, IConsoleStore } from './console';
import { initCommonStore, ICommonStore } from './common';
import { initModalStore , IModalStore } from './modal';
@@ -13,8 +13,8 @@ export type IStore = IConfigStore & IConsoleStore & ICommonStore & IModalStore;
export const useWorkspaceStore: UseBoundStoreWithEqualityFn<StoreApi<IStore>> = createWithEqualityFn(
devtools(
persist(
(set) => ({
...consoleStore(set),
() => ({
...initConsoleStore,
...initConfigStore,
...initCommonStore,
...initModalStore,

View File

@@ -1,43 +0,0 @@
export interface IConsoleStore {
activeTab: {
activeConsole: {
id: string | number | null;
};
activeSearchResult: {
id: string | number | null;
};
};
setActiveConsole: (props: IActiveTabData) => void;
setActiveSearchResult: (props: IActiveTabData) => void;
}
type IActiveTabData = {
id: string | number;
} | null
export const consoleStore = (set): IConsoleStore => ({
activeTab: {
activeConsole: {
id: null,
},
activeSearchResult: {
id: null,
},
},
setActiveConsole: (activeConsole: IActiveTabData) => {
return set((state) => ({
activeTab: {
...state.activeTab,
activeConsole,
},
}));
},
setActiveSearchResult: (activeSearchResult: IActiveTabData) => {
return set((state) => ({
activeTab: {
...state.activeTab,
activeSearchResult,
},
}));
},
});