diff --git a/packages/web/src/appobj/AppObjects.js b/packages/web/src/appobj/AppObjectCore.js similarity index 50% rename from packages/web/src/appobj/AppObjects.js rename to packages/web/src/appobj/AppObjectCore.js index 4e82fec82..13f844df5 100644 --- a/packages/web/src/appobj/AppObjects.js +++ b/packages/web/src/appobj/AppObjectCore.js @@ -4,9 +4,10 @@ import _ from 'lodash'; import React from 'react'; import styled from 'styled-components'; import { FontIcon } from '../icons'; +import { useShowMenu } from '../modals/showMenu'; // import { showMenu } from '../modals/DropDownMenu'; import useTheme from '../theme/useTheme'; -import { useSetOpenedTabs, useAppObjectParams } from '../utility/globalState'; +// import { useSetOpenedTabs, useAppObjectParams } from '../utility/globalState'; const AppObjectDiv = styled.div` padding: 5px; @@ -18,10 +19,10 @@ const AppObjectDiv = styled.div` font-weight: ${(props) => (props.isBold ? 'bold' : 'normal')}; `; -const AppObjectSpan = styled.span` - white-space: nowrap; - font-weight: ${(props) => (props.isBold ? 'bold' : 'normal')}; -`; +// const AppObjectSpan = styled.span` +// white-space: nowrap; +// font-weight: ${(props) => (props.isBold ? 'bold' : 'normal')}; +// `; const IconWrap = styled.span` margin-right: 5px; @@ -32,49 +33,57 @@ const StatusIconWrap = styled.span` `; const ExtInfoWrap = styled.span` -font-weight: normal; -margin-left: 5px; + font-weight: normal; + margin-left: 5px; color: ${(props) => props.theme.left_font3}; `; export function AppObjectCore({ title, icon, - Menu, data, - makeAppObj, - onClick, - isBold, - isBusy, - component = 'div', - prefix = null, - statusIcon, - extInfo, - statusTitle, + // makeAppObj, + onClick = undefined, + onClick2 = undefined, + onClick3 = undefined, + isBold = undefined, + isBusy = undefined, + // component = 'div', + prefix = undefined, + statusIcon = undefined, + extInfo = undefined, + statusTitle = undefined, + Menu = undefined, ...other }) { - const appObjectParams = useAppObjectParams(); + // const appObjectParams = useAppObjectParams(); const theme = useTheme(); + const showMenu = useShowMenu(); const handleContextMenu = (event) => { if (!Menu) return; event.preventDefault(); + showMenu(event.pageX, event.pageY, ); // showMenu(event.pageX, event.pageY, ); }; - const Component = component == 'div' ? AppObjectDiv : AppObjectSpan; + // const Component = component == 'div' ? AppObjectDiv : AppObjectSpan; - let bold = false; - if (_.isFunction(isBold)) bold = isBold(appObjectParams); - else bold = !!isBold; + // let bold = false; + // if (_.isFunction(isBold)) bold = isBold(appObjectParams); + // else bold = !!isBold; return ( - onClick(data) : undefined} - isBold={bold} + onClick={() => { + if (onClick) onClick(data); + if (onClick2) onClick2(data); + if (onClick3) onClick3(data); + }} theme={theme} + isBold={isBold} {...other} > {prefix} @@ -86,12 +95,12 @@ export function AppObjectCore({ )} {extInfo && {extInfo}} - + ); } -export function AppObjectControl({ data, makeAppObj, component = 'div' }) { - const appObjectParams = useAppObjectParams(); - const appobj = makeAppObj(data, appObjectParams); - return ; -} +// export function AppObjectControl({ data, makeAppObj, component = 'div' }) { +// const appObjectParams = useAppObjectParams(); +// const appobj = makeAppObj(data, appObjectParams); +// return ; +// } diff --git a/packages/web/src/appobj/AppObjectList.js b/packages/web/src/appobj/AppObjectList.js index 81e996048..1930518b7 100644 --- a/packages/web/src/appobj/AppObjectList.js +++ b/packages/web/src/appobj/AppObjectList.js @@ -1,7 +1,5 @@ import React from 'react'; import _ from 'lodash'; -import { AppObjectCore } from './AppObjects'; -import { useSetOpenedTabs, useAppObjectParams } from '../utility/globalState'; import styled from 'styled-components'; import { ExpandIcon } from '../icons'; import useTheme from '../theme/useTheme'; @@ -31,53 +29,37 @@ const GroupDiv = styled.div` font-weight: bold; `; -function AppObjectListItem({ makeAppObj, data, filter, appobj, onObjectClick, SubItems }) { +function AppObjectListItem({ AppObjectComponent, data, filter, onObjectClick, isExpandable, SubItems }) { const [isExpanded, setIsExpanded] = React.useState(false); - const [isHover, setIsHover] = React.useState(false); + + const expandable = data && isExpandable && isExpandable(data); React.useEffect(() => { - if (!appobj.isExpandable) { + if (!expandable) { // if (data._id == '6pOY2iFY8Gsq7mk6') console.log('COLLAPSE1'); setIsExpanded(false); } - }, [appobj && appobj.isExpandable]); + }, [expandable]); // const { matcher } = appobj; // if (matcher && !matcher(filter)) return null; - if (onObjectClick) - appobj = { - ...appobj, - onClick: onObjectClick, - }; + const commonProps = { + prefix: SubItems ? ( + + {expandable ? : } + + ) : null, + }; + if (SubItems) { - const oldClick = appobj.onClick; - appobj = { - ...appobj, - onClick: () => { - if (oldClick) oldClick(); - // if (data._id == '6pOY2iFY8Gsq7mk6') console.log('COLLAPSE2'); - setIsExpanded((v) => !v); - }, - }; + commonProps.onClick2 = () => setIsExpanded((v) => !v); + } + if (onObjectClick) { + commonProps.onClick3 = onObjectClick; } - let res = ( - setIsHover(true)} - onMouseLeave={() => setIsHover(false)} - prefix={ - SubItems ? ( - - {appobj.isExpandable ? : } - - ) : null - } - /> - ); + let res = ; if (SubItems && isExpanded) { res = ( <> @@ -93,16 +75,10 @@ function AppObjectListItem({ makeAppObj, data, filter, appobj, onObjectClick, Su function AppObjectGroup({ group, items }) { const [isExpanded, setIsExpanded] = React.useState(true); - const [isHover, setIsHover] = React.useState(false); const theme = useTheme(); return ( <> - setIsHover(true)} - onMouseLeave={() => setIsHover(false)} - onClick={() => setIsExpanded(!isExpanded)} - theme={theme} - > + setIsExpanded(!isExpanded)} theme={theme}> @@ -115,36 +91,35 @@ function AppObjectGroup({ group, items }) { export function AppObjectList({ list, - makeAppObj, + AppObjectComponent, SubItems = undefined, onObjectClick = undefined, filter = undefined, groupFunc = undefined, groupOrdered = undefined, + isExpandable = undefined, }) { - const appObjectParams = useAppObjectParams(); - - const createComponent = (data, appobj) => ( + const createComponent = (data) => ( ); if (groupFunc) { const listGrouped = _.compact( (list || []).map((data) => { - const appobj = makeAppObj(data, appObjectParams); - const { matcher } = appobj; + // const appobj = makeAppObj(data, appObjectParams); + const matcher = AppObjectComponent.createMatcher && AppObjectComponent.createMatcher(data); if (matcher && !matcher(filter)) return null; - const component = createComponent(data, appobj); - const group = groupFunc(appobj); - return { group, appobj, component }; + const component = createComponent(data); + const group = groupFunc(data); + return { group, data, component }; }) ); const groups = _.groupBy(listGrouped, 'group'); @@ -154,9 +129,8 @@ export function AppObjectList({ } return (list || []).map((data) => { - const appobj = makeAppObj(data, appObjectParams); - const { matcher } = appobj; + const matcher = AppObjectComponent.createMatcher && AppObjectComponent.createMatcher(data); if (matcher && !matcher(filter)) return null; - return createComponent(data, appobj); + return createComponent(data); }); } diff --git a/packages/web/src/appobj/archiveFileAppObject.js b/packages/web/src/appobj/ArchiveFileAppObject.js similarity index 75% rename from packages/web/src/appobj/archiveFileAppObject.js rename to packages/web/src/appobj/ArchiveFileAppObject.js index def217f97..686655964 100644 --- a/packages/web/src/appobj/archiveFileAppObject.js +++ b/packages/web/src/appobj/ArchiveFileAppObject.js @@ -1,10 +1,10 @@ import React from 'react'; -import _ from 'lodash'; -import moment from 'moment'; import { DropDownMenuItem } from '../modals/DropDownMenu'; import { openNewTab } from '../utility/common'; import { filterName } from 'dbgate-datalib'; import axios from '../utility/axios'; +import { useSetOpenedTabs } from '../utility/globalState'; +import { AppObjectCore } from './AppObjectCore'; function openArchive(setOpenedTabs, fileName, folderName) { openNewTab(setOpenedTabs, { @@ -57,15 +57,19 @@ function Menu({ data, setOpenedTabs }) { ); } -const archiveFileAppObject = () => ({ fileName, folderName }, { setOpenedTabs }) => { - const key = fileName; - const icon = 'img archive'; +function ArchiveFileAppObject({ data, commonProps }) { + const { fileName, folderName } = data; + const setOpenedTabs = useSetOpenedTabs(); const onClick = () => { openArchive(setOpenedTabs, fileName, folderName); }; - const matcher = (filter) => filterName(filter, fileName); - return { title: fileName, key, icon, Menu, onClick, matcher }; -}; + return ( + + ); +} -export default archiveFileAppObject; +ArchiveFileAppObject.extractKey = (data) => data.fileName; +ArchiveFileAppObject.createMatcher = ({ fileName }) => (filter) => filterName(filter, fileName); + +export default ArchiveFileAppObject; diff --git a/packages/web/src/appobj/ArchiveFolderAppObject.js b/packages/web/src/appobj/ArchiveFolderAppObject.js new file mode 100644 index 000000000..dc293a187 --- /dev/null +++ b/packages/web/src/appobj/ArchiveFolderAppObject.js @@ -0,0 +1,34 @@ +import React from 'react'; +import { DropDownMenuItem } from '../modals/DropDownMenu'; +import axios from '../utility/axios'; +import { filterName } from 'dbgate-datalib'; +import { AppObjectCore } from './AppObjectCore'; +import { useCurrentArchive } from '../utility/globalState'; + +function Menu({ data }) { + const handleDelete = () => { + axios.post('archive/delete-folder', { folder: data.name }); + }; + return <>{data.name != 'default' && Delete}; +} + +function ArchiveFolderAppObject({ data, commonProps }) { + const { name } = data; + const currentArchive = useCurrentArchive(); + + return ( + + ); +} + +ArchiveFolderAppObject.extractKey = (data) => data.name; +ArchiveFolderAppObject.createMatcher = (data) => (filter) => filterName(filter, data.name); + +export default ArchiveFolderAppObject; diff --git a/packages/web/src/appobj/closedTabAppObject.js b/packages/web/src/appobj/ClosedTabAppObject.js similarity index 53% rename from packages/web/src/appobj/closedTabAppObject.js rename to packages/web/src/appobj/ClosedTabAppObject.js index 8e7ed396b..e046fdd70 100644 --- a/packages/web/src/appobj/closedTabAppObject.js +++ b/packages/web/src/appobj/ClosedTabAppObject.js @@ -2,8 +2,11 @@ import React from 'react'; import _ from 'lodash'; import moment from 'moment'; import { DropDownMenuItem } from '../modals/DropDownMenu'; +import { useSetOpenedTabs } from '../utility/globalState'; +import { AppObjectCore } from './AppObjectCore'; -function Menu({ data, setOpenedTabs }) { +function Menu({ data }) { + const setOpenedTabs = useSetOpenedTabs(); const handleDelete = () => { setOpenedTabs((tabs) => tabs.filter((x) => x.tabid != data.tabid)); }; @@ -18,9 +21,9 @@ function Menu({ data, setOpenedTabs }) { ); } -const closedTabAppObject = () => ({ tabid, props, selected, icon, title, closedTime, busy }, { setOpenedTabs }) => { - const key = tabid; - const isBold = !!selected; +function ClosedTabAppObject({ data, commonProps }) { + const { tabid, props, selected, icon, title, closedTime, busy } = data; + const setOpenedTabs = useSetOpenedTabs(); const onClick = () => { setOpenedTabs((files) => @@ -32,7 +35,20 @@ const closedTabAppObject = () => ({ tabid, props, selected, icon, title, closedT ); }; - return { title: `${title} ${moment(closedTime).fromNow()}`, key, icon, isBold, onClick, isBusy: busy, Menu }; -}; + return ( + + ); +} -export default closedTabAppObject; +ClosedTabAppObject.extractKey = (data) => data.tabid; + +export default ClosedTabAppObject; diff --git a/packages/web/src/appobj/connectionAppObject.js b/packages/web/src/appobj/ConnectionAppObject.js similarity index 60% rename from packages/web/src/appobj/connectionAppObject.js rename to packages/web/src/appobj/ConnectionAppObject.js index aadc94c2b..44ca6384f 100644 --- a/packages/web/src/appobj/connectionAppObject.js +++ b/packages/web/src/appobj/ConnectionAppObject.js @@ -6,8 +6,17 @@ import axios from '../utility/axios'; import { filterName } from 'dbgate-datalib'; import ConfirmModal from '../modals/ConfirmModal'; import CreateDatabaseModal from '../modals/CreateDatabaseModal'; +import { useCurrentDatabase, useOpenedConnections, useSetOpenedConnections } from '../utility/globalState'; +import { AppObjectCore } from './AppObjectCore'; +import useShowModal from '../modals/showModal'; +import { useConfig } from '../utility/metadataLoaders'; + +function Menu({ data }) { + const openedConnections = useOpenedConnections(); + const setOpenedConnections = useSetOpenedConnections(); + const showModal = useShowModal(); + const config = useConfig(); -function Menu({ data, setOpenedConnections, openedConnections, config, showModal }) { const handleEdit = () => { showModal((modalState) => ); }; @@ -54,21 +63,16 @@ function Menu({ data, setOpenedConnections, openedConnections, config, showModal ); } -const connectionAppObject = (flags) => ( - { _id, server, displayName, engine, status }, - { openedConnections, setOpenedConnections } -) => { - const title = displayName || server; - const key = _id; - const isExpandable = openedConnections.includes(_id); - const icon = 'img server'; - const matcher = (filter) => filterName(filter, displayName, server); - const { boldCurrentDatabase } = flags || {}; - const isBold = boldCurrentDatabase - ? ({ currentDatabase }) => { - return _.get(currentDatabase, 'connection._id') == _id; - } - : null; +function ConnectionAppObject({ data, commonProps }) { + const { _id, server, displayName, engine, status } = data; + const openedConnections = useOpenedConnections(); + const setOpenedConnections = useSetOpenedConnections(); + const currentDatabase = useCurrentDatabase(); + + // const key = _id; + // const isExpandable = openedConnections.includes(_id); + // const matcher = (filter) => filterName(filter, displayName, server); + const isBold = _.get(currentDatabase, 'connection._id') == _id; const onClick = () => setOpenedConnections((c) => [...c, _id]); let statusIcon = null; @@ -84,19 +88,37 @@ const connectionAppObject = (flags) => ( } const extInfo = engine; - return { - title, - key, - icon, - Menu, - matcher, - isBold, - isExpandable, - onClick, - statusIcon, - statusTitle, - extInfo, - }; -}; + return ( + + ); -export default connectionAppObject; + // return { + // title, + // key, + // icon, + // Menu, + // matcher, + // isBold, + // isExpandable, + // onClick, + // statusIcon, + // statusTitle, + // extInfo, + // }; +} + +ConnectionAppObject.extractKey = (data) => data._id; +ConnectionAppObject.createMatcher = ({ displayName, server }) => (filter) => filterName(filter, displayName, server); + +export default ConnectionAppObject; diff --git a/packages/web/src/appobj/databaseAppObject.js b/packages/web/src/appobj/DatabaseAppObject.js similarity index 61% rename from packages/web/src/appobj/databaseAppObject.js rename to packages/web/src/appobj/DatabaseAppObject.js index 5c8b24657..a7def8120 100644 --- a/packages/web/src/appobj/databaseAppObject.js +++ b/packages/web/src/appobj/DatabaseAppObject.js @@ -4,11 +4,17 @@ import { DropDownMenuItem } from '../modals/DropDownMenu'; import { openNewTab } from '../utility/common'; import ImportExportModal from '../modals/ImportExportModal'; import { getDefaultFileFormat } from '../utility/fileformats'; -import { useSetOpenedTabs } from '../utility/globalState'; +import { useCurrentDatabase, useSetOpenedTabs } from '../utility/globalState'; +import { AppObjectCore } from './AppObjectCore'; +import useShowModal from '../modals/showModal'; +import useExtensions from '../utility/useExtensions'; -function Menu({ data, showModal, extensions }) { - const setOpenedTabs = useSetOpenedTabs(); +function Menu({ data }) { const { connection, name } = data; + const setOpenedTabs = useSetOpenedTabs(); + const extensions = useExtensions(); + const showModal = useShowModal(); + const tooltip = `${connection.displayName || connection.server}\n${name}`; const handleNewQuery = () => { @@ -31,8 +37,8 @@ function Menu({ data, showModal, extensions }) { initialValues={{ sourceStorageType: getDefaultFileFormat(extensions).storageType, targetStorageType: 'database', - targetConnectionId: data.connection._id, - targetDatabaseName: data.name, + targetConnectionId: connection._id, + targetDatabaseName: name, }} /> )); @@ -45,8 +51,8 @@ function Menu({ data, showModal, extensions }) { initialValues={{ targetStorageType: getDefaultFileFormat(extensions).storageType, sourceStorageType: 'database', - sourceConnectionId: data.connection._id, - sourceDatabaseName: data.name, + sourceConnectionId: connection._id, + sourceDatabaseName: name, }} /> )); @@ -61,20 +67,23 @@ function Menu({ data, showModal, extensions }) { ); } -const databaseAppObject = (flags) => ({ name, connection }) => { - const { boldCurrentDatabase } = flags || {}; - const title = name; - const key = name; - const icon = 'img database'; - const isBold = boldCurrentDatabase - ? ({ currentDatabase }) => { - return ( - _.get(currentDatabase, 'connection._id') == _.get(connection, '_id') && _.get(currentDatabase, 'name') == name - ); +function DatabaseAppObject({ data, commonProps }) { + const { name, connection } = data; + const currentDatabase = useCurrentDatabase(); + return ( + + ); +} - return { title, key, icon, Menu, isBold }; -}; +DatabaseAppObject.extractKey = (props) => props.name; -export default databaseAppObject; +export default DatabaseAppObject; diff --git a/packages/web/src/appobj/databaseObjectAppObject.js b/packages/web/src/appobj/DatabaseObjectAppObject.js similarity index 78% rename from packages/web/src/appobj/databaseObjectAppObject.js rename to packages/web/src/appobj/DatabaseObjectAppObject.js index 8d55b8b7f..9fea894fb 100644 --- a/packages/web/src/appobj/databaseObjectAppObject.js +++ b/packages/web/src/appobj/DatabaseObjectAppObject.js @@ -6,6 +6,9 @@ import { getConnectionInfo } from '../utility/metadataLoaders'; import fullDisplayName from '../utility/fullDisplayName'; import { filterName } from 'dbgate-datalib'; import ImportExportModal from '../modals/ImportExportModal'; +import { useSetOpenedTabs } from '../utility/globalState'; +import { AppObjectCore } from './AppObjectCore'; +import useShowModal from '../modals/showModal'; const icons = { tables: 'img table', @@ -114,7 +117,9 @@ export async function openDatabaseObjectDetail( }); } -function Menu({ data, makeAppObj, setOpenedTabs, showModal }) { +function Menu({ data }) { + const showModal = useShowModal(); + const setOpenedTabs = useSetOpenedTabs(); return ( <> {menus[data.objectTypeField].map((menu) => ( @@ -166,13 +171,9 @@ function Menu({ data, makeAppObj, setOpenedTabs, showModal }) { ); } -const databaseObjectAppObject = () => ( - { conid, database, pureName, schemaName, objectTypeField }, - { setOpenedTabs } -) => { - const title = schemaName ? `${schemaName}.${pureName}` : pureName; - const key = title; - const icon = icons[objectTypeField]; +function DatabaseObjectAppObject({ data, commonProps }) { + const { conid, database, pureName, schemaName, objectTypeField } = data; + const setOpenedTabs = useSetOpenedTabs(); // const Icon = (props) => getIconImage(icons[objectTypeField], props); const onClick = ({ schemaName, pureName }) => { openDatabaseObjectDetail( @@ -188,10 +189,27 @@ const databaseObjectAppObject = () => ( } ); }; - const matcher = (filter) => filterName(filter, pureName); - const groupTitle = _.startCase(objectTypeField); + // const matcher = (filter) => filterName(filter, pureName); + // const groupTitle = _.startCase(objectTypeField); - return { title, key, icon, Menu, onClick, matcher, groupTitle }; -}; + return ( + + ); + // return { title, key, icon, Menu, onClick, matcher, groupTitle }; +} -export default databaseObjectAppObject; +DatabaseObjectAppObject.extractKey = ({ schemaName, pureName }) => + schemaName ? `${schemaName}.${pureName}` : pureName; + +DatabaseObjectAppObject.createMatcher = ({ pureName }) => (filter) => filterName(filter, pureName); + +// DatabaseObjectAppObject.groupTitle = ({ pureName }) => (filter) => filterName(filter, pureName); + +export default DatabaseObjectAppObject; diff --git a/packages/web/src/appobj/savedSqlFileAppObject.js b/packages/web/src/appobj/SavedSqlFileAppObject.js similarity index 56% rename from packages/web/src/appobj/savedSqlFileAppObject.js rename to packages/web/src/appobj/SavedSqlFileAppObject.js index a5525c05c..92017844b 100644 --- a/packages/web/src/appobj/savedSqlFileAppObject.js +++ b/packages/web/src/appobj/SavedSqlFileAppObject.js @@ -2,6 +2,8 @@ import React from 'react'; import axios from '../utility/axios'; import _ from 'lodash'; import { DropDownMenuItem } from '../modals/DropDownMenu'; +import { AppObjectCore } from './AppObjectCore'; +import useNewQuery from '../query/useNewQuery'; function Menu({ data }) { const handleDelete = () => { @@ -14,20 +16,22 @@ function Menu({ data }) { ); } -const savedSqlFileAppObject = () => ({ name }, { setOpenedTabs, newQuery, openedTabs }) => { - const key = name; - const title = name; - const icon = 'img sql-file'; +function SavedSqlFileAppObject({ data, commonProps }) { + const { name } = data; + const newQuery = useNewQuery(); const onClick = async () => { const resp = await axios.post('files/load', { folder: 'sql', file: name }); newQuery({ title: name, + // @ts-ignore initialScript: resp.data, }); }; - return { title, key, icon, onClick, Menu }; -}; + return ; +} -export default savedSqlFileAppObject; +SavedSqlFileAppObject.extractKey = (data) => data.name; + +export default SavedSqlFileAppObject; diff --git a/packages/web/src/appobj/archiveFolderAppObject.js b/packages/web/src/appobj/archiveFolderAppObject.js deleted file mode 100644 index 79524ea72..000000000 --- a/packages/web/src/appobj/archiveFolderAppObject.js +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import _ from 'lodash'; -import moment from 'moment'; -import { DropDownMenuItem } from '../modals/DropDownMenu'; -import axios from '../utility/axios'; -import { filterName } from 'dbgate-datalib'; - -function Menu({ data, setOpenedTabs }) { - const handleDelete = () => { - axios.post('archive/delete-folder', { folder: data.name }); - }; - return <>{data.name != 'default' && Delete}; -} - -const archiveFolderAppObject = () => ({ name }, { setOpenedTabs, currentArchive }) => { - const key = name; - const icon = 'img archive-folder'; - const isBold = name == currentArchive; - const matcher = (filter) => filterName(filter, name); - - return { title: name, key, icon, isBold, Menu, matcher }; -}; - -export default archiveFolderAppObject; diff --git a/packages/web/src/datagrid/ColumnHeaderControl.js b/packages/web/src/datagrid/ColumnHeaderControl.js index af2aa1162..1a7bb7dee 100644 --- a/packages/web/src/datagrid/ColumnHeaderControl.js +++ b/packages/web/src/datagrid/ColumnHeaderControl.js @@ -5,7 +5,7 @@ import DropDownButton from '../widgets/DropDownButton'; import { DropDownMenuItem, DropDownMenuDivider } from '../modals/DropDownMenu'; import { useSplitterDrag } from '../widgets/Splitter'; import { isTypeDateTime } from 'dbgate-tools'; -import { openDatabaseObjectDetail } from '../appobj/databaseObjectAppObject'; +import { openDatabaseObjectDetail } from '../appobj/DatabaseObjectAppObject'; import { useSetOpenedTabs } from '../utility/globalState'; import { FontIcon } from '../icons'; import useTheme from '../theme/useTheme'; diff --git a/packages/web/src/freetable/MacroManager.js b/packages/web/src/freetable/MacroManager.js index 4daf29077..f6910c6fd 100644 --- a/packages/web/src/freetable/MacroManager.js +++ b/packages/web/src/freetable/MacroManager.js @@ -24,7 +24,7 @@ export default function MacroManager({ managerSize, selectedMacro, setSelectedMa setSelectedMacro(macro)} filter={filter} groupFunc={(appobj) => appobj.groupTitle} diff --git a/packages/web/src/utility/ObjectListControl.js b/packages/web/src/utility/ObjectListControl.js index c6f07353a..d0f0a71c1 100644 --- a/packages/web/src/utility/ObjectListControl.js +++ b/packages/web/src/utility/ObjectListControl.js @@ -1,7 +1,7 @@ import React from 'react'; import styled from 'styled-components'; import TableControl, { TableColumn } from './TableControl'; -import { AppObjectControl } from '../appobj/AppObjects'; +// import { AppObjectControl } from '../appobj/AppObjects'; import useTheme from '../theme/useTheme'; const ObjectListWrapper = styled.div` @@ -39,7 +39,7 @@ export default function ObjectListControl({ collection = [], title, showIfEmpty } + // formatter={(col) => } /> {children} diff --git a/packages/web/src/utility/globalState.js b/packages/web/src/utility/globalState.js index 811aa82c8..25a6c61a1 100644 --- a/packages/web/src/utility/globalState.js +++ b/packages/web/src/utility/globalState.js @@ -80,31 +80,31 @@ export function useUpdateDatabaseForTab(tabVisible, conid, database) { } } -export function useAppObjectParams() { - const setOpenedTabs = useSetOpenedTabs(); - const currentDatabase = useCurrentDatabase(); - const newQuery = useNewQuery(); - const openedTabs = useOpenedTabs(); - const openedConnections = useOpenedConnections(); - const setOpenedConnections = useSetOpenedConnections(); - const currentArchive = useCurrentArchive(); - const showModal = useShowModal(); - const config = useConfig(); - const extensions = useExtensions(); +// export function useAppObjectParams() { +// const setOpenedTabs = useSetOpenedTabs(); +// const currentDatabase = useCurrentDatabase(); +// const newQuery = useNewQuery(); +// const openedTabs = useOpenedTabs(); +// const openedConnections = useOpenedConnections(); +// const setOpenedConnections = useSetOpenedConnections(); +// const currentArchive = useCurrentArchive(); +// const showModal = useShowModal(); +// const config = useConfig(); +// const extensions = useExtensions(); - return { - setOpenedTabs, - currentDatabase, - currentArchive, - newQuery, - openedTabs, - openedConnections, - setOpenedConnections, - config, - showModal, - extensions, - }; -} +// return { +// setOpenedTabs, +// currentDatabase, +// currentArchive, +// newQuery, +// openedTabs, +// openedConnections, +// setOpenedConnections, +// config, +// showModal, +// extensions, +// }; +// } const [OpenedConnectionsProvider, useOpenedConnections, useSetOpenedConnections] = createGlobalState([]); diff --git a/packages/web/src/widgets/ArchiveWidget.js b/packages/web/src/widgets/ArchiveWidget.js index e73f1c0be..397e4d7bb 100644 --- a/packages/web/src/widgets/ArchiveWidget.js +++ b/packages/web/src/widgets/ArchiveWidget.js @@ -6,8 +6,8 @@ import { useCurrentArchive, useSetCurrentArchive } from '../utility/globalState' import { SearchBoxWrapper, WidgetsInnerContainer } from './WidgetStyles'; import WidgetColumnBar, { WidgetColumnBarItem } from './WidgetColumnBar'; import { useArchiveFiles, useArchiveFolders } from '../utility/metadataLoaders'; -import archiveFolderAppObject from '../appobj/archiveFolderAppObject'; -import archiveFileAppObject from '../appobj/archiveFileAppObject'; +import ArchiveFolderAppObject from '../appobj/ArchiveFolderAppObject'; +import ArchiveFileAppObject from '../appobj/ArchiveFileAppObject'; import SearchInput from './SearchInput'; import InlineButton from './InlineButton'; import axios from '../utility/axios'; @@ -31,7 +31,7 @@ function ArchiveFolderList() { setArchive(archive.name)} filter={filter} /> @@ -61,7 +61,7 @@ function ArchiveFilesList() { folderName: folder, }))} filter={filter} - makeAppObj={archiveFileAppObject()} + AppObjectComponent={ArchiveFileAppObject} /> diff --git a/packages/web/src/widgets/DatabaseWidget.js b/packages/web/src/widgets/DatabaseWidget.js index e637416a4..e4cdef128 100644 --- a/packages/web/src/widgets/DatabaseWidget.js +++ b/packages/web/src/widgets/DatabaseWidget.js @@ -2,11 +2,11 @@ import React from 'react'; import _ from 'lodash'; import { AppObjectList } from '../appobj/AppObjectList'; -import connectionAppObject from '../appobj/connectionAppObject'; -import databaseAppObject from '../appobj/databaseAppObject'; +import ConnectionAppObject from '../appobj/ConnectionAppObject'; +import DatabaseAppObject from '../appobj/DatabaseAppObject'; import { useSetCurrentDatabase, useCurrentDatabase, useOpenedConnections } from '../utility/globalState'; import InlineButton from './InlineButton'; -import databaseObjectAppObject from '../appobj/databaseObjectAppObject'; +import DatabaseObjectAppObject from '../appobj/DatabaseObjectAppObject'; import { // useSqlObjectList, useDatabaseList, @@ -41,7 +41,8 @@ function SubDatabaseList({ data }) { return ( ({ ...db, connection: data }))} - makeAppObj={databaseAppObject({ boldCurrentDatabase: true })} + AppObjectComponent={DatabaseAppObject} + // makeAppObj={databaseAppObject({ boldCurrentDatabase: true })} onObjectClick={handleDatabaseClick} /> ); @@ -73,9 +74,11 @@ function ConnectionList() { openedConnections.includes(data._id)} /> @@ -112,8 +115,8 @@ function SqlObjectList({ conid, database }) { ) : ( ({ ...x, conid, database }))} - makeAppObj={databaseObjectAppObject()} - groupFunc={(appobj) => appobj.groupTitle} + AppObjectComponent={DatabaseObjectAppObject} + groupFunc={(data) => _.startCase(data.objectTypeField)} filter={filter} /> )} diff --git a/packages/web/src/widgets/FilesWidget.js b/packages/web/src/widgets/FilesWidget.js index 01181bccf..eb1ac80e3 100644 --- a/packages/web/src/widgets/FilesWidget.js +++ b/packages/web/src/widgets/FilesWidget.js @@ -3,9 +3,9 @@ import _ from 'lodash'; import { AppObjectList } from '../appobj/AppObjectList'; import { useOpenedTabs } from '../utility/globalState'; -import closedTabAppObject from '../appobj/closedTabAppObject'; +import ClosedTabAppObject from '../appobj/ClosedTabAppObject'; import { WidgetsInnerContainer } from './WidgetStyles'; -import savedSqlFileAppObject from '../appobj/savedSqlFileAppObject'; +import SavedSqlFileAppObject from '../appobj/SavedSqlFileAppObject'; import WidgetColumnBar, { WidgetColumnBarItem } from './WidgetColumnBar'; import { useFiles } from '../utility/metadataLoaders'; @@ -20,7 +20,7 @@ function ClosedTabsList() { tabs.filter((x) => x.closedTime), (x) => -x.closedTime )} - makeAppObj={closedTabAppObject()} + AppObjectComponent={ClosedTabAppObject} /> @@ -33,7 +33,7 @@ function SavedSqlFilesList() { return ( <> - + );