Skip to content

Commit

Permalink
Merge pull request #397 from machbase/fix-some-bugs
Browse files Browse the repository at this point in the history
Fix some bugs
  • Loading branch information
kevin-lee0604 committed May 28, 2024
2 parents 29afbba + 98f685e commit 572959e
Show file tree
Hide file tree
Showing 21 changed files with 163 additions and 119 deletions.
6 changes: 3 additions & 3 deletions src/api/repository/machiot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ export const fetchMountTimeMinMax = async (aTargetInfo: any) => {
}
}

if (sData.data.rows.length === 0) {
if (!sData.data?.rows || sData.data.rows.length === 0) {
const sNowTime = moment().unix() * 1000000;
const sNowTimeMinMax = [moment(sNowTime).subtract(1, 'h').unix() * 1000000, sNowTime];
return sNowTimeMinMax;
Expand Down Expand Up @@ -369,7 +369,7 @@ export const fetchTimeMinMax = async (aTargetInfo: any) => {
}
}

if (sData.data.rows.length === 0) {
if (!sData.data?.rows || sData.data.rows.length === 0) {
const sNowTime = moment().unix() * 1000000;
const sNowTimeMinMax = [moment(sNowTime).subtract(1, 'h').unix() * 1000000, sNowTime];
return sNowTimeMinMax;
Expand Down Expand Up @@ -493,7 +493,7 @@ const getRollupTableList = async () => {
}
}
const sConvertArray: any = {};
if (sData.data.rows && sData.data.rows.length > 0) {
if (sData.data && sData.data.rows && sData.data.rows.length > 0) {
for (const [user, table, value] of sData.data.rows) {
if (!sConvertArray[user]) {
sConvertArray[user] = {};
Expand Down
2 changes: 1 addition & 1 deletion src/components/bridge/createBridge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ export const CreateBridge = () => {

<ExtensionTab.ContentBlock>
<ExtensionTab.DpRow>
<ExtensionTab.ContentTitle>path</ExtensionTab.ContentTitle>
<ExtensionTab.ContentTitle>Connection string</ExtensionTab.ContentTitle>
<ExtensionTab.ContentDesc>
<span style={{ marginLeft: '4px', color: '#f35b5b' }}>*</span>
</ExtensionTab.ContentDesc>
Expand Down
92 changes: 36 additions & 56 deletions src/components/bridge/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ import { useRecoilState, useSetRecoilState } from 'recoil';
import { gActiveBridge, gBoardList, gBridgeList } from '@/recoil/recoil';
import { Pane, SashContent } from 'split-pane-react';
import SplitPane from 'split-pane-react/esm/SplitPane';
import { BridgeItemType, CommandBridgeStateType, commandBridge, delBridge, getBridge } from '@/api/repository/bridge';
import { BridgeItemType, commandBridge, delBridge, getBridge } from '@/api/repository/bridge';
import { CreateBridge } from './createBridge';
import { useEffect, useRef, useState } from 'react';
import { IconButton } from '../buttons/IconButton';
import { LuFlipVertical } from 'react-icons/lu';
import { ConfirmModal } from '../modal/ConfirmModal';
import { getCommandState } from '@/utils/bridgeCommandHelper';

export const Bridge = ({ pCode }: { pCode: BridgeItemType }) => {
const [sBoardList, setBoardList] = useRecoilState<any[]>(gBoardList);
Expand All @@ -17,10 +18,11 @@ export const Bridge = ({ pCode }: { pCode: BridgeItemType }) => {
const sBodyRef: any = useRef(null);
const [sGroupWidth, setGroupWidth] = useState<number[]>([50, 50]);
const [isVertical, setIsVertical] = useState<boolean>(true);
const [sIsRunCommand, setIsRunCommand] = useState<boolean>(false);
const [sCommandRes, setCommandRes] = useState<{ exec: { message: string; data: any }; query: { message: string; data: any }; test: { message: string; data: any } }>({
exec: { message: '', data: undefined },
query: { message: '', data: undefined },
const [sCommandRes, setCommandRes] = useState<{
command: { message: string; data: any };
test: { message: string; data: any };
}>({
command: { message: '', data: undefined },
test: { message: '', data: undefined },
});
const setResList = useSetRecoilState<BridgeItemType[] | undefined>(gBridgeList);
Expand Down Expand Up @@ -76,27 +78,28 @@ export const Bridge = ({ pCode }: { pCode: BridgeItemType }) => {
e.stopPropagation();
setIsDeleteModal(true);
};
const handlePayload = (aState: CommandBridgeStateType, e: React.FormEvent<HTMLTextAreaElement>) => {
const handlePayload = (e: React.FormEvent<HTMLTextAreaElement>) => {
const sTmp = JSON.parse(JSON.stringify(sPayload));
sTmp[aState] = (e.target as HTMLInputElement).value;
sTmp.command = (e.target as HTMLInputElement).value;
setPayload(sTmp);
};
const handleCommand = async (aState: CommandBridgeStateType) => {
if (sIsRunCommand) return;
setIsRunCommand(true);

const handleCommand = async (aState: 'test' | 'command') => {
let sCommand: any = undefined;
let sState: any = undefined;

switch (aState) {
case 'exec':
sCommand = sPayload.exec;
break;
case 'query':
sCommand = sPayload.query;
case 'command':
sCommand = sPayload?.command ?? '';
sState = getCommandState(sPayload?.command ?? '');
break;
default:
sState = 'test';
break;
}
const sResCommand = await commandBridge(aState, pCode.name, sCommand);
const sTmpRes = JSON.parse(JSON.stringify(sCommandRes));
const sTmpRes: any = JSON.parse(JSON.stringify(sCommandRes));

const sResCommand = await commandBridge(sState, pCode.name, sCommand);
if (sResCommand.success) {
sTmpRes[aState].message = '';
if (sResCommand.data) {
Expand All @@ -114,18 +117,17 @@ export const Bridge = ({ pCode }: { pCode: BridgeItemType }) => {
}
}
setCommandRes(sTmpRes);
setIsRunCommand(false);
};
const Resizer = () => {
return <SashContent className={`security-key-sash-style`} />;
};

useEffect(() => {
setPayload(pCode);
setCommandRes({ exec: { message: '', data: undefined }, query: { message: '', data: undefined }, test: { message: '', data: undefined } });
setCommandRes({ command: { message: '', data: undefined }, test: { message: '', data: undefined } });
}, [pCode]);
useEffect(() => {
if (sBodyRef && sBodyRef.current) {
if (sBodyRef && sBodyRef.current && sBodyRef.current.offsetWidth) {
setGroupWidth([sBodyRef.current.offsetWidth / 2, sBodyRef.current.offsetWidth / 2]);
}
}, [sBodyRef]);
Expand All @@ -148,48 +150,32 @@ export const Bridge = ({ pCode }: { pCode: BridgeItemType }) => {
<ExtensionTab.ContentDesc>{sPayload.type}</ExtensionTab.ContentDesc>
</ExtensionTab.ContentBlock>
<ExtensionTab.ContentBlock>
<ExtensionTab.ContentTitle>Path</ExtensionTab.ContentTitle>
<ExtensionTab.ContentTitle>Connection string</ExtensionTab.ContentTitle>
<ExtensionTab.ContentDesc>{sPayload.path}</ExtensionTab.ContentDesc>
</ExtensionTab.ContentBlock>
{/* Test */}
<ExtensionTab.ContentBlock>
<ExtensionTab.DpRow>
<ExtensionTab.ContentTitle>bridge connection</ExtensionTab.ContentTitle>
<ExtensionTab.StatusCircle pState={sCommandRes.test?.data?.success?.toString() ?? 'none'} />
</ExtensionTab.DpRow>
<ExtensionTab.ContentTitle>bridge connection</ExtensionTab.ContentTitle>
<div style={{ marginTop: '8px' }}>
<ExtensionTab.TextButton pText="Delete" pType="DELETE" pCallback={handleDelete} />
<ExtensionTab.TextButton pIsDisable={sIsRunCommand} pText="Test" pType="CREATE" pCallback={() => handleCommand('test')} />
<ExtensionTab.TextButton pText="Test" pType="CREATE" pCallback={() => handleCommand('test')} />
</div>
{sCommandRes.test?.data && sCommandRes.test?.data?.success && <ExtensionTab.TextResSuccess pText={'success'} />}
{sCommandRes.test.message !== '' && <ExtensionTab.TextResErr pText={sCommandRes.test.message} />}
</ExtensionTab.ContentBlock>

{sPayload.type !== 'mqtt' && (
<>
{/* Exec */}
<ExtensionTab.ContentBlock>
<ExtensionTab.Collapse
pTrigger={<ExtensionTab.ContentTitle>Execute command</ExtensionTab.ContentTitle>}
pChildren={
<>
<ExtensionTab.TextArea pContent={sPayload.exec} pHeight={100} pCallback={(event) => handlePayload('exec', event)} />
<ExtensionTab.TextButton pIsDisable={sIsRunCommand} pText="Send " pType="CREATE" pCallback={() => handleCommand('exec')} />
{sCommandRes.exec.message !== '' && <ExtensionTab.TextResErr pText={sCommandRes.exec.message} />}
</>
}
/>
</ExtensionTab.ContentBlock>

{/* Command */}
<ExtensionTab.ContentBlock>
<ExtensionTab.Collapse
pTrigger={<ExtensionTab.ContentTitle>Query command</ExtensionTab.ContentTitle>}
pTrigger={<ExtensionTab.ContentTitle>Command</ExtensionTab.ContentTitle>}
pChildren={
<>
<ExtensionTab.ContentDesc>Only works with “SQL” type bridges</ExtensionTab.ContentDesc>
<ExtensionTab.TextArea pContent={sPayload.query} pHeight={100} pCallback={(event) => handlePayload('query', event)} />
<ExtensionTab.TextButton pIsDisable={sIsRunCommand} pText="Send " pType="CREATE" pCallback={() => handleCommand('query')} />
{sCommandRes.query.message !== '' && <ExtensionTab.TextResErr pText={sCommandRes.query.message} />}
<ExtensionTab.TextArea pContent={sPayload.exec} pHeight={100} pCallback={(event) => handlePayload(event)} />
<ExtensionTab.TextButton pText="Send" pType="CREATE" pCallback={() => handleCommand('command')} />
{sCommandRes.command.message === '' && sCommandRes.command?.data && <ExtensionTab.TextResSuccess pText={'success'} />}
{sCommandRes.command.message !== '' && <ExtensionTab.TextResErr pText={sCommandRes.command.message} />}
</>
}
/>
Expand All @@ -212,21 +198,15 @@ export const Bridge = ({ pCode }: { pCode: BridgeItemType }) => {
<pre style={{ overflow: 'auto', whiteSpace: 'pre-wrap' }}>{JSON.stringify(sCommandRes.test.data, null, 4)}</pre>
</ExtensionTab.ContentBlock>
)}
{sCommandRes.exec.data && (
<ExtensionTab.ContentBlock>
<ExtensionTab.ContentTitle>{'exec response'}</ExtensionTab.ContentTitle>
<pre style={{ overflow: 'auto', whiteSpace: 'pre-wrap' }}>{JSON.stringify(sCommandRes.exec.data, null, 4)}</pre>
</ExtensionTab.ContentBlock>
)}
{sCommandRes.query.data && (
{sCommandRes.command.data && (
<ExtensionTab.ContentBlock>
<ExtensionTab.ContentTitle>{'query response'}</ExtensionTab.ContentTitle>
{sCommandRes.query.data.column && sCommandRes.query.data.rows ? (
<ExtensionTab.ContentTitle>{'Command response'}</ExtensionTab.ContentTitle>
{sCommandRes.command.data.column && sCommandRes.command.data.rows ? (
<div style={{ margin: '10px 20px', padding: '12px 16px 12px 0' }}>
<ExtensionTab.Table pList={{ columns: sCommandRes.query.data.column, rows: sCommandRes.query.data.rows }} />
<ExtensionTab.Table pList={{ columns: sCommandRes.command.data.column, rows: sCommandRes.command.data.rows }} />
</div>
) : (
<pre style={{ overflow: 'auto', whiteSpace: 'pre-wrap' }}>{JSON.stringify(sCommandRes.query.data, null, 4)}</pre>
<pre style={{ overflow: 'auto', whiteSpace: 'pre-wrap' }}>{JSON.stringify(sCommandRes.command.data, null, 4)}</pre>
)}
</ExtensionTab.ContentBlock>
)}
Expand Down
1 change: 0 additions & 1 deletion src/components/buttons/OpenFileBtn.scss
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
justify-content: center;
align-items: center;
font-size: 12px;
// margin-left: 8px;

&-button {
color: #dbdbdb;
Expand Down
6 changes: 3 additions & 3 deletions src/components/console/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ const Console = ({ pSetTerminalSizes, pExtentionList, pTerminalSizes }: any) =>
/** return shell list */
const getShellList = useMemo((): any[] => {
const sExtensionListWithoutTerm = pExtentionList.filter((aExtension: any) => aExtension.type !== 'term');
return sExtensionListWithoutTerm.concat(sShellList);
return sExtensionListWithoutTerm.concat(sShellList ?? []);
}, [sShellList]);

useOutsideClick(MenuRef, () => setIsContextMenu(false));
Expand Down Expand Up @@ -150,8 +150,8 @@ const Console = ({ pSetTerminalSizes, pExtentionList, pTerminalSizes }: any) =>
{getShellList.map((aItem: any) => {
return (
<Menu.Item onClick={(aEvent: any) => addConsoleTab(aEvent, aItem)} key={aItem.id}>
{icons(aItem.icon)}
{aItem.label}
{icons(aItem?.icon) ?? ''}
{aItem?.label ?? ''}
</Menu.Item>
);
})}
Expand Down
1 change: 1 addition & 0 deletions src/components/editor/Body.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ const Body = ({ pExtentionList, pSideSizes, pDraged, pGetInfo, pGetPath, pSetDra

useEffect(() => {
const expiredRt = () => {
localStorage.removeItem('refreshToken');
sNavigate('/login');
};
window.addEventListener('logoutEvent', expiredRt);
Expand Down
20 changes: 20 additions & 0 deletions src/components/extension/ExtensionTab/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -584,4 +584,24 @@
color: rgb(255, 83, 83);
}
}
.extension-tab-res-success {
display: flex;
flex-direction: row;
padding: 20px 0 0 0;

svg {
margin-top: 2px;
min-width: 16px;
min-height: 16px;
width: 16px;
height: 16px;
fill: #71e071;
}
span {
margin-left: 4px;
font-family: 'Pretendard';
font-size: 14px;
color: #71e071;
}
}
}
12 changes: 10 additions & 2 deletions src/components/extension/ExtensionTab/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
import useOutsideClick from '@/hooks/useOutsideClick';
import moment from 'moment';
import './index.scss';
import { VscCheck, VscCircleFilled } from 'react-icons/vsc';
import { VscCheck, VscCircleFilled, VscPass } from 'react-icons/vsc';
import { generateUUID } from '@/utils';
import { MdKeyboardArrowRight, MdOutlineKeyboardArrowDown } from 'react-icons/md';

Expand Down Expand Up @@ -372,7 +372,14 @@ const TextResErr = ({ pText }: { pText: string }) => {
</div>
);
};

const TextResSuccess = ({ pText }: { pText: string }) => {
return (
<div className="extension-tab-res-success">
<VscPass />
<span>{pText}</span>
</div>
);
};
const Table = ({ pList, dotted }: { pList: any; dotted?: boolean }) => {
return (
<div className="extension-tab-table-wrapper">
Expand Down Expand Up @@ -495,3 +502,4 @@ ExtensionTab.Selector = Selector;
ExtensionTab.TextResErr = TextResErr;
ExtensionTab.StatusCircle = StatusCircle;
ExtensionTab.Collapse = Collapse;
ExtensionTab.TextResSuccess = TextResSuccess;
8 changes: 4 additions & 4 deletions src/components/inputs/TagSearchSelect.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useEffect, useMemo, useRef, useState } from 'react';
import { ArrowLeft, ArrowRight, Close, Search } from '@/assets/icons/Icon';
import { MdKeyboardDoubleArrowLeft, MdOutlineKeyboardArrowDown, MdOutlineKeyboardDoubleArrowRight } from 'react-icons/md';
import { ArrowLeft, ArrowRight, Search } from '@/assets/icons/Icon';
import { MdKeyboardDoubleArrowLeft, MdOutlineKeyboardArrowDown, MdOutlineKeyboardArrowUp, MdOutlineKeyboardDoubleArrowRight } from 'react-icons/md';
import { getTagPagination, getTagTotal } from '@/api/repository/machiot';
import { Input } from './Input';
import { Tooltip } from 'react-tooltip';
Expand Down Expand Up @@ -106,7 +106,7 @@ export const TagSearchSelect = ({ pTable, pCallback }: { pTable: string; pCallba
useOutsideClick(tagRef, () => sIsOpen && handleOutSideClick());

return (
<div ref={tagRef} className="tag-search-select-wrapper" id="tag-search-select-wrapper" style={{ backgroundColor: sIsOpen ? '#bd2222' : '#323644' }}>
<div ref={tagRef} className="tag-search-select-wrapper" id="tag-search-select-wrapper" style={{ backgroundColor: '#323644' }}>
<div
className="tag-search-select-open-btn-wrapper"
onClick={(e: any) => {
Expand All @@ -115,7 +115,7 @@ export const TagSearchSelect = ({ pTable, pCallback }: { pTable: string; pCallba
}}
>
{!sIsOpen && <MdOutlineKeyboardArrowDown />}
{sIsOpen && <Close />}
{sIsOpen && <MdOutlineKeyboardArrowUp />}
</div>
{sIsOpen && (
<div className="tag-search-select-content-wrapper">
Expand Down
1 change: 1 addition & 0 deletions src/components/modal/ConfirmModal.scss
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.confirm-modal {
font-size: 13px;
.modal {
width: 400px;
}
Expand Down
7 changes: 4 additions & 3 deletions src/components/modal/ConfirmModal.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { Close, VscWarning } from '@/assets/icons/Icon';
import { Close } from '@/assets/icons/Icon';
import { TextButton } from '@/components/buttons/TextButton';
import Modal from './Modal';
import './ConfirmModal.scss';
import React from 'react';
import { VscQuestion } from 'react-icons/vsc';

export interface DeleteModalProps {
setIsOpen: any;
Expand All @@ -29,9 +30,9 @@ export const ConfirmModal = (props: DeleteModalProps) => {
<div className="confirm-modal-title">
<div className="confirm-modal-title-content">
<div className="confirm-modal-title-icon">
<VscWarning />
<VscQuestion />
</div>
<span>Warning</span>
<span>Confirm</span>
</div>
<Close className="close" onClick={handleClose} />
</div>
Expand Down
Loading

0 comments on commit 572959e

Please sign in to comment.