From 1f0d0c1d3d8f649bd442031f902854d68e787c69 Mon Sep 17 00:00:00 2001 From: Deadbeef Date: Fri, 24 Dec 2021 00:11:43 +0800 Subject: [PATCH] Add a button to copy markdown formatted report --- ui/frontend/Output/Gist.tsx | 30 ++++++++++++++++++++++++++++++ ui/frontend/selectors/index.ts | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/ui/frontend/Output/Gist.tsx b/ui/frontend/Output/Gist.tsx index ef50afffd..10a49af71 100644 --- a/ui/frontend/Output/Gist.tsx +++ b/ui/frontend/Output/Gist.tsx @@ -54,12 +54,41 @@ class Copied extends React.PureComponent { } } +interface ReportProps { + snippet: string; +} + +class CopyReport extends React.PureComponent { + public constructor(props: ReportProps) { + super(props); + this.state = { copied: false }; + } + + public render() { + return ( +

+ +

Copy a Markdown formatted report of results +
+ + Copied! +

+ ); + } + + private copied = () => { + this.setState({ copied: true }); + setTimeout(() => { this.setState({ copied: false }); }, 1000); + } +} + const Links: React.FC = () => { const codeUrl = useSelector(selectors.codeUrlSelector); const gistUrl = useSelector((state: State) => state.output.gist.url); const permalink = useSelector(selectors.permalinkSelector); const urloUrl = useSelector(selectors.urloUrlSelector); const textChanged = useSelector(selectors.textChangedSinceShareSelector); + const markdownSnippet = useSelector(selectors.snippetSelector); return ( @@ -70,6 +99,7 @@ const Links: React.FC = () => { {textChanged ?
Source code has been changed since gist was saved
: null } +
); }; diff --git a/ui/frontend/selectors/index.ts b/ui/frontend/selectors/index.ts index 332d28477..aacade776 100644 --- a/ui/frontend/selectors/index.ts +++ b/ui/frontend/selectors/index.ts @@ -222,7 +222,7 @@ const maybeOutput = (code: string | undefined, whenPresent: (_: string) => void) if (code && code.length !== 0) { whenPresent(code); } }; -const snippetSelector = createSelector( +export const snippetSelector = createSelector( gistSelector, permalinkSelector, (gist, permalink) => { let snippet = '';