diff --git a/packages/web/src/markdown/MarkdownExtendedView.js b/packages/web/src/markdown/MarkdownExtendedView.js new file mode 100644 index 000000000..56af4b579 --- /dev/null +++ b/packages/web/src/markdown/MarkdownExtendedView.js @@ -0,0 +1,28 @@ +import React from 'react'; +import Markdown from 'markdown-to-jsx'; +import styled from 'styled-components'; +import OpenChartLink from './OpenChartLink'; + +const Wrapper = styled.div` + padding: 10px; + overflow: auto; + flex: 1; +`; + +export default function MarkdownExtendedView({ children }) { + return ( + + + {children || ''} + + + ); +} diff --git a/packages/web/src/charts/MarkdownToolbar.js b/packages/web/src/markdown/MarkdownToolbar.js similarity index 100% rename from packages/web/src/charts/MarkdownToolbar.js rename to packages/web/src/markdown/MarkdownToolbar.js diff --git a/packages/web/src/markdown/OpenChartLink.js b/packages/web/src/markdown/OpenChartLink.js new file mode 100644 index 000000000..66119b4a2 --- /dev/null +++ b/packages/web/src/markdown/OpenChartLink.js @@ -0,0 +1,44 @@ +import React from 'react'; +import { useCurrentDatabase, useSetOpenedTabs } from '../utility/globalState'; +import styled from 'styled-components'; +import { openNewTab } from '../utility/common'; +import axios from '../utility/axios'; +import useTheme from '../theme/useTheme'; + +const StyledLink = styled.a` + text-decoration: none; + cursor: pointer; + color: ${(props) => props.theme.main_background_blue[7]}; + &:hover { + text-decoration: underline; + } +`; + +export default function OpenChartLink({ file, children }) { + const setOpenedTabs = useSetOpenedTabs(); + const currentDb = useCurrentDatabase(); + const theme = useTheme(); + + const handleClick = async () => { + const resp = await axios.post('files/load', { folder: 'charts', file, format: 'json' }); + openNewTab( + setOpenedTabs, + { + title: file, + icon: 'img chart', + tabComponent: 'ChartTab', + props: { + conid: currentDb && currentDb.connection && currentDb.connection._id, + database: currentDb && currentDb.name, + }, + }, + resp.data + ); + }; + + return ( + + {children} + + ); +} diff --git a/packages/web/src/modals/AboutModal.js b/packages/web/src/modals/AboutModal.js index e33d3e480..8b4272e66 100644 --- a/packages/web/src/modals/AboutModal.js +++ b/packages/web/src/modals/AboutModal.js @@ -28,6 +28,9 @@ const StyledLink = styled.a` text-decoration: none; cursor: pointer; color: ${(props) => props.theme.main_background_blue[7]}; + &:hover { + text-decoration: underline; + } `; function Line({ label, children }) { diff --git a/packages/web/src/tabs/MarkdownEditorTab.js b/packages/web/src/tabs/MarkdownEditorTab.js index 6736a2236..23c09a48b 100644 --- a/packages/web/src/tabs/MarkdownEditorTab.js +++ b/packages/web/src/tabs/MarkdownEditorTab.js @@ -3,7 +3,7 @@ import ReactDOM from 'react-dom'; import _ from 'lodash'; import keycodes from '../utility/keycodes'; import GenericEditor from '../sqleditor/GenericEditor'; -import MarkdownToolbar from '../charts/MarkdownToolbar'; +import MarkdownToolbar from '../markdown/MarkdownToolbar'; import useEditorData from '../utility/useEditorData'; import SaveTabModal from '../modals/SaveTabModal'; import useModalState from '../modals/useModalState'; diff --git a/packages/web/src/tabs/MarkdownViewTab.js b/packages/web/src/tabs/MarkdownViewTab.js index 3774f97e3..94ec9ad9b 100644 --- a/packages/web/src/tabs/MarkdownViewTab.js +++ b/packages/web/src/tabs/MarkdownViewTab.js @@ -1,14 +1,7 @@ import React from 'react'; import axios from '../utility/axios'; import LoadingInfo from '../widgets/LoadingInfo'; -import Markdown from 'markdown-to-jsx'; -import styled from 'styled-components'; - -const Wrapper = styled.div` - padding: 10px; - overflow: auto; - flex: 1; -`; +import MarkdownExtendedView from '../markdown/MarkdownExtendedView'; export default function MarkdownViewTab({ file }) { const [isLoading, setIsLoading] = React.useState(false); @@ -33,9 +26,5 @@ export default function MarkdownViewTab({ file }) { ); } - return ( - - {text || ''} - - ); + return {text || ''}; }