Skip to content

Commit 1f0d0c1

Browse files
committed
Add a button to copy markdown formatted report
1 parent b64a8d4 commit 1f0d0c1

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

ui/frontend/Output/Gist.tsx

+30
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,41 @@ class Copied extends React.PureComponent<CopiedProps, CopiedState> {
5454
}
5555
}
5656

57+
interface ReportProps {
58+
snippet: string;
59+
}
60+
61+
class CopyReport extends React.PureComponent<ReportProps, CopiedState> {
62+
public constructor(props: ReportProps) {
63+
super(props);
64+
this.state = { copied: false };
65+
}
66+
67+
public render() {
68+
return (
69+
<p className={this.state.copied ? styles.active : styles.container}>
70+
<CopyToClipboard text={this.props.snippet} onCopy={this.copied}>
71+
<div className={styles.container}><a href="#">Copy a Markdown formatted report of results</a>
72+
<button className={styles.button}><ClipboardIcon /></button></div>
73+
</CopyToClipboard>
74+
<span className={styles.text}>Copied!</span>
75+
</p>
76+
);
77+
}
78+
79+
private copied = () => {
80+
this.setState({ copied: true });
81+
setTimeout(() => { this.setState({ copied: false }); }, 1000);
82+
}
83+
}
84+
5785
const Links: React.FC = () => {
5886
const codeUrl = useSelector(selectors.codeUrlSelector);
5987
const gistUrl = useSelector((state: State) => state.output.gist.url);
6088
const permalink = useSelector(selectors.permalinkSelector);
6189
const urloUrl = useSelector(selectors.urloUrlSelector);
6290
const textChanged = useSelector(selectors.textChangedSinceShareSelector);
91+
const markdownSnippet = useSelector(selectors.snippetSelector);
6392

6493
return (
6594
<Fragment>
@@ -70,6 +99,7 @@ const Links: React.FC = () => {
7099
{textChanged ? <Section kind="warning" label="Code changed">
71100
Source code has been changed since gist was saved
72101
</Section>: null }
102+
<CopyReport snippet={markdownSnippet} />
73103
</Fragment>
74104
);
75105
};

ui/frontend/selectors/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ const maybeOutput = (code: string | undefined, whenPresent: (_: string) => void)
222222
if (code && code.length !== 0) { whenPresent(code); }
223223
};
224224

225-
const snippetSelector = createSelector(
225+
export const snippetSelector = createSelector(
226226
gistSelector, permalinkSelector,
227227
(gist, permalink) => {
228228
let snippet = '';

0 commit comments

Comments
 (0)