in website/core/Tutorial.js [48:130]
render() {
const {baseUrl, tutorialDir, tutorialID, totalExecTime} = this.props;
let htmlFile = null;
let pyFile = null;
let ipynbFile = null;
let directoryDownloadButton = null;
let totalExecTimeText = null;
if (tutorialDir != null && tutorialDir !== '') {
htmlFile = `${CWD}/_tutorials/${tutorialDir}/${tutorialID}.html`;
ipynbFile = `${baseUrl}files/${tutorialDir}/${tutorialID}.ipynb`;
pyFile = `${baseUrl}files/${tutorialDir}/${tutorialID}.py`;
directoryDownloadButton = (
<div className="tutorialButtonWrapper buttonWrapper">
<a
className="tutorialButton button"
download
href={`${baseUrl}files/${tutorialDir}/${tutorialID}.tar.gz`}
target="_blank">
{renderDownloadIcon()}
{'Download Tutorial Archive (.tar.gz): Notebook, Source and Data'}
</a>
</div>
);
} else {
htmlFile = `${CWD}/_tutorials/${tutorialID}.html`;
ipynbFile = `${baseUrl}files/${tutorialID}.ipynb`;
pyFile = `${baseUrl}files/${tutorialDir}/${tutorialID}.py`;
}
const normalizedHtmlFile = path.normalize(htmlFile);
if (totalExecTime != null) {
const minsAndSecs = timeToMinAndSec(totalExecTime);
const timeText =
'Total runtime of script: ' +
(minsAndSecs['mins'] === 0
? `${minsAndSecs['secs']} seconds.`
: `${minsAndSecs['mins']} minutes, ${minsAndSecs['secs']} seconds.`);
totalExecTimeText = (
<div className="tutorialRuntime">
<p>{timeText}</p>
</div>
);
}
return (
<div className="docMainWrapper wrapper">
<TutorialSidebar currentTutorialID={tutorialID} />
<Container className="mainContainer">
<div
className="tutorialBody"
dangerouslySetInnerHTML={{
__html: fs.readFileSync(normalizedHtmlFile, {encoding: 'utf8'}),
}}
/>
{directoryDownloadButton}
<div className="tutorialButtonWrapper buttonWrapper">
<a
className="tutorialButton button"
download
href={ipynbFile}
target="_blank">
{renderDownloadIcon()}
{'Download Tutorial Jupyter Notebook'}
</a>
</div>
<div className="tutorialButtonWrapper buttonWrapper">
<a
className="tutorialButton button"
download
href={pyFile}
target="_blank">
{renderDownloadIcon()}
{'Download Tutorial Source Code'}
</a>
</div>
{totalExecTimeText}
</Container>
</div>
);
}