Skip to content

Commit 10fb5be

Browse files
committed
list queries in shared email
1 parent ae07659 commit 10fb5be

5 files changed

Lines changed: 47 additions & 37 deletions

File tree

public/js/cloud_share_modal.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export default class CloudShareModal extends React.Component {
8484
renderResults() {
8585
const { shareableurl } = this.state;
8686

87-
return <ShareURLComponent url={shareableurl} querydb={this.props.querydb} program={this.props.program} queryLength={this.props.queryLength} />;
87+
return <ShareURLComponent url={shareableurl} querydb={this.props.querydb} program={this.props.program} queries={this.props.queries} />;
8888
}
8989

9090
renderError() {

public/js/mailto.js

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,39 @@
1-
export default function asMailtoHref(querydb, program, numQueries, url, isOpenAccess) {
1+
export default function asMailtoHref(querydb, program, queries, url, isOpenAccess) {
22
const dbsArr = formatDatabases(querydb);
3-
const mailto = composeEmail(dbsArr, program, numQueries, url, isOpenAccess);
3+
const mailto = composeEmail(dbsArr, program, queries, url, isOpenAccess);
44
return encodeEmail(mailto);
55
}
66

7-
function formatDatabases(querydb) {
8-
return querydb
7+
function listTop15Items (objArr, key){
8+
return objArr
99
.slice(0, 15)
10-
.map(db => ' ' + db.title);
10+
.map(obj => `- ${obj[key]}`)
11+
.join('\n');
12+
}
13+
14+
function formatDatabases(querydb) {
15+
return 'Databases:\n' + listTop15Items(querydb, 'title');
1116
}
1217

13-
function composeEmail(dbsArr, program, numQueries, url, isOpenAccess) {
18+
function listQueryIdentifiers(queries){
19+
return 'Queries:\n' + listTop15Items(queries, 'id');
20+
}
21+
22+
function composeEmail(dbsArr, program, queries, url, isOpenAccess) {
1423
const upperProgram = program.toUpperCase();
1524
const accessStatement = isOpenAccess ? '' : 'The link will work if you have access to that particular SequenceServer instance.';
16-
25+
const queryIdentifiers = listQueryIdentifiers(queries);
1726
return `mailto:?subject=SequenceServer ${upperProgram} analysis results &body=Hello,
1827
19-
Here is a link to my recent ${upperProgram} analysis of ${numQueries} sequences.
28+
Here is a link to my recent ${upperProgram} analysis of ${queries.length} sequences.
2029
${url}
30+
31+
Below is a breakdown of the databases and queries used (up to 15 are shown for each).
2132
22-
The following databases were used (up to 15 are shown):
23-
${dbsArr}
24-
33+
${dbsArr}
34+
35+
${queryIdentifiers}
36+
2537
${accessStatement}
2638
2739
Thank you for using SequenceServer, and please remember to cite our paper.

public/js/share_url.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useState } from 'react';
22
import asMailtoHref from './mailto';
33

4-
const ShareURLComponent = ({ querydb, program, queryLength, url }) => {
4+
const ShareURLComponent = ({ querydb, program, queries, url }) => {
55
const [copied, setCopied] = useState(false);
66

77
const copyToClipboard = () => {
@@ -14,7 +14,7 @@ const ShareURLComponent = ({ querydb, program, queryLength, url }) => {
1414
<input name="shareableUrl" type="text" value={url} readOnly />
1515
<div className="actions">
1616
<button className="btn btn-primary" onClick={copyToClipboard}>{copied ? 'Copied!' : 'Copy to Clipboard'}</button>
17-
<a href={asMailtoHref(querydb, program, queryLength, url, true)}>Share via email</a>
17+
<a href={asMailtoHref(querydb, program, queries, url, true)}>Share via email</a>
1818
</div>
1919
</div>
2020
);

public/js/sidebar.js

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -361,24 +361,22 @@ export default class extends Component {
361361
</h4>
362362
</div>
363363
<ul className="nav">
364-
{!this.props.cloudSharingEnabled &&
365-
<li>
366-
<a id="copyURL" className="btn-link copy-URL cursor-pointer" data-toggle="tooltip"
367-
onClick={this.copyURL}>
368-
<i className="fa fa-copy"></i> Copy URL to clipboard
369-
</a>
370-
</li>
371-
}
372-
{!this.props.cloudSharingEnabled &&
373-
<li>
374-
<a id="sendEmail" className="btn-link email-URL cursor-pointer" data-toggle="tooltip"
375-
title="Send by email" href={asMailtoHref(this.props.data.querydb, this.props.data.program, this.props.data.queries.length, window.location.href)}
376-
target="_blank" rel="noopener noreferrer">
377-
<i className="fa fa-envelope"></i> Send by email
378-
</a>
379-
</li>
380-
}
381-
{this.props.cloudSharingEnabled &&
364+
{!this.props.cloudSharingEnabled ?
365+
<>
366+
<li>
367+
<a id="copyURL" className="btn-link copy-URL cursor-pointer" data-toggle="tooltip"
368+
onClick={this.copyURL}>
369+
<i className="fa fa-copy"></i> Copy URL to clipboard
370+
</a>
371+
</li>
372+
<li>
373+
<a id="sendEmail" className="btn-link email-URL cursor-pointer" data-toggle="tooltip"
374+
title="Send by email" href={asMailtoHref(this.props.data.querydb, this.props.data.program, this.props.data.queries, window.location.href)}
375+
target="_blank" rel="noopener noreferrer">
376+
<i className="fa fa-envelope"></i> Send by email
377+
</a>
378+
</li>
379+
</> :
382380
<li>
383381
<button className="btn-link cloud-Post cursor-pointer" data-toggle="tooltip"
384382
title="Upload results to SequenceServer Cloud where it will become accessable
@@ -393,7 +391,7 @@ export default class extends Component {
393391
ref="cloudShareModal"
394392
querydb={this.props.data.querydb}
395393
program={this.props.data.program}
396-
queryLength={this.props.data.queries.length}
394+
queries={this.props.data.queries}
397395
/>
398396
}
399397
</div>

0 commit comments

Comments
 (0)