-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #28 from RConsortium/README
JBR: Rewrote introduction to README and added instructions for contri…
- Loading branch information
Showing
13 changed files
with
3,570 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,360 @@ | ||
<!DOCTYPE html> | ||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> | ||
|
||
<meta charset="utf-8"> | ||
<meta name="generator" content="quarto-1.3.450"> | ||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> | ||
|
||
|
||
<title>readme</title> | ||
<style> | ||
code{white-space: pre-wrap;} | ||
span.smallcaps{font-variant: small-caps;} | ||
div.columns{display: flex; gap: min(4vw, 1.5em);} | ||
div.column{flex: auto; overflow-x: auto;} | ||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} | ||
ul.task-list{list-style: none;} | ||
ul.task-list li input[type="checkbox"] { | ||
width: 0.8em; | ||
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ | ||
vertical-align: middle; | ||
} | ||
</style> | ||
|
||
|
||
<script src="README_files/libs/clipboard/clipboard.min.js"></script> | ||
<script src="README_files/libs/quarto-html/quarto.js"></script> | ||
<script src="README_files/libs/quarto-html/popper.min.js"></script> | ||
<script src="README_files/libs/quarto-html/tippy.umd.min.js"></script> | ||
<script src="README_files/libs/quarto-html/anchor.min.js"></script> | ||
<link href="README_files/libs/quarto-html/tippy.css" rel="stylesheet"> | ||
<link href="README_files/libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles"> | ||
<script src="README_files/libs/bootstrap/bootstrap.min.js"></script> | ||
<link href="README_files/libs/bootstrap/bootstrap-icons.css" rel="stylesheet"> | ||
<link href="README_files/libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light"> | ||
|
||
|
||
</head> | ||
|
||
<body class="fullcontent"> | ||
|
||
<div id="quarto-content" class="page-columns page-rows-contents page-layout-article"> | ||
|
||
<main class="content" id="quarto-document-content"> | ||
|
||
|
||
|
||
<section id="rmedicine_website" class="level1"> | ||
<h1>RMedicine_website</h1> | ||
<p>This is Quarto-based and updates and supersedes the website <a href="https://events.linuxfoundation.org/r-medicine/">here:</a></p> | ||
<section id="contributing-to-this-website" class="level2"> | ||
<h2 class="anchored" data-anchor-id="contributing-to-this-website">Contributing to this website</h2> | ||
<p>This website is being built live, bit-by-bit by members of the R/Medicine organizing committee and other volunteer contributors. The idea is to get information about the conference up as soon as it comes in. It is unlikely that the website will not be finalized until shortly before the conference. If you follow the progress of the website you will likely see information go up initially with modest formatting and little aesthetic charm. It is our hope that subsequent contributions will produce something worth saving for next year. This is an exercise in what the Japanese call <a href="https://kaizen.com/what-is-kaizen/">“Kaizen”</a> or continuous improvement.</p> | ||
<section id="the-workflow-for-making-contributions" class="level3"> | ||
<h3 class="anchored" data-anchor-id="the-workflow-for-making-contributions">The workflow for making contributions</h3> | ||
<section id="clone-this-website" class="level4"> | ||
<h4 class="anchored" data-anchor-id="clone-this-website">1. Clone this website</h4> | ||
</section> | ||
<section id="select-the-appropriate-branch" class="level4"> | ||
<h4 class="anchored" data-anchor-id="select-the-appropriate-branch">2. Select the appropriate branch</h4> | ||
<p>From your cloned (local) copy of the repository select a branch that is appropriate for your contribution. If you click on the pull-down branch button in the upper left hand corner of the first main <a href="https://github.com/RConsortium/RMedicine_website">GitHub page</a> for this website you will see a number of branches.</p> | ||
<p>You will see that there are branches that correspond to each page listed on the tab bar at the top of the website:</p> | ||
<table class="table"> | ||
<thead> | ||
<tr class="header"> | ||
<th>Website Page</th> | ||
<th>Corresponding Branch</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr class="odd"> | ||
<td>Home</td> | ||
<td>home</td> | ||
</tr> | ||
<tr class="even"> | ||
<td>Register</td> | ||
<td>register</td> | ||
</tr> | ||
<tr class="odd"> | ||
<td>Program</td> | ||
<td>program</td> | ||
</tr> | ||
<tr class="even"> | ||
<td>Code of Conduct</td> | ||
<td>Code_of_Conduct</td> | ||
</tr> | ||
<tr class="odd"> | ||
<td>Competition</td> | ||
<td>competition</td> | ||
</tr> | ||
<tr class="even"> | ||
<td>Contact us</td> | ||
<td>Contact_us</td> | ||
</tr> | ||
<tr class="odd"> | ||
<td>Past Events</td> | ||
<td>Past_events</td> | ||
</tr> | ||
</tbody> | ||
</table> | ||
<p>Do not select the “operations” branch for anything. This is the main branch that drives the GitHub Actions code that publishes the website at https://rconsortium.github.io/RMedicine_website/.</p> | ||
</section> | ||
<section id="do-a-pull-request" class="level4"> | ||
<h4 class="anchored" data-anchor-id="do-a-pull-request">3. Do a Pull Request</h4> | ||
<p>Do a pull request from your local copy to make sure branch is in sync with the website branch</p> | ||
</section> | ||
<section id="commit-your-changes" class="level4"> | ||
<h4 class="anchored" data-anchor-id="commit-your-changes">4. Commit your changes</h4> | ||
<p>Make your changes locally save them and commit them. Be sure to make your commit message descriptive of the work you did.</p> | ||
</section> | ||
<section id="open-a-pull-request" class="level4"> | ||
<h4 class="anchored" data-anchor-id="open-a-pull-request">5. Open a pull request</h4> | ||
<p>If your changes are accepted they will be merged by a website administrator</p> | ||
<p>Note: to look at the website locally you can execute it in your terminal:</p> | ||
<pre><code>quarto preview</code></pre> | ||
</section> | ||
</section> | ||
</section> | ||
</section> | ||
|
||
</main> | ||
<!-- /main column --> | ||
<script id="quarto-html-after-body" type="application/javascript"> | ||
window.document.addEventListener("DOMContentLoaded", function (event) { | ||
const toggleBodyColorMode = (bsSheetEl) => { | ||
const mode = bsSheetEl.getAttribute("data-mode"); | ||
const bodyEl = window.document.querySelector("body"); | ||
if (mode === "dark") { | ||
bodyEl.classList.add("quarto-dark"); | ||
bodyEl.classList.remove("quarto-light"); | ||
} else { | ||
bodyEl.classList.add("quarto-light"); | ||
bodyEl.classList.remove("quarto-dark"); | ||
} | ||
} | ||
const toggleBodyColorPrimary = () => { | ||
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap"); | ||
if (bsSheetEl) { | ||
toggleBodyColorMode(bsSheetEl); | ||
} | ||
} | ||
toggleBodyColorPrimary(); | ||
const icon = ""; | ||
const anchorJS = new window.AnchorJS(); | ||
anchorJS.options = { | ||
placement: 'right', | ||
icon: icon | ||
}; | ||
anchorJS.add('.anchored'); | ||
const isCodeAnnotation = (el) => { | ||
for (const clz of el.classList) { | ||
if (clz.startsWith('code-annotation-')) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
} | ||
const clipboard = new window.ClipboardJS('.code-copy-button', { | ||
text: function(trigger) { | ||
const codeEl = trigger.previousElementSibling.cloneNode(true); | ||
for (const childEl of codeEl.children) { | ||
if (isCodeAnnotation(childEl)) { | ||
childEl.remove(); | ||
} | ||
} | ||
return codeEl.innerText; | ||
} | ||
}); | ||
clipboard.on('success', function(e) { | ||
// button target | ||
const button = e.trigger; | ||
// don't keep focus | ||
button.blur(); | ||
// flash "checked" | ||
button.classList.add('code-copy-button-checked'); | ||
var currentTitle = button.getAttribute("title"); | ||
button.setAttribute("title", "Copied!"); | ||
let tooltip; | ||
if (window.bootstrap) { | ||
button.setAttribute("data-bs-toggle", "tooltip"); | ||
button.setAttribute("data-bs-placement", "left"); | ||
button.setAttribute("data-bs-title", "Copied!"); | ||
tooltip = new bootstrap.Tooltip(button, | ||
{ trigger: "manual", | ||
customClass: "code-copy-button-tooltip", | ||
offset: [0, -8]}); | ||
tooltip.show(); | ||
} | ||
setTimeout(function() { | ||
if (tooltip) { | ||
tooltip.hide(); | ||
button.removeAttribute("data-bs-title"); | ||
button.removeAttribute("data-bs-toggle"); | ||
button.removeAttribute("data-bs-placement"); | ||
} | ||
button.setAttribute("title", currentTitle); | ||
button.classList.remove('code-copy-button-checked'); | ||
}, 1000); | ||
// clear code selection | ||
e.clearSelection(); | ||
}); | ||
function tippyHover(el, contentFn) { | ||
const config = { | ||
allowHTML: true, | ||
content: contentFn, | ||
maxWidth: 500, | ||
delay: 100, | ||
arrow: false, | ||
appendTo: function(el) { | ||
return el.parentElement; | ||
}, | ||
interactive: true, | ||
interactiveBorder: 10, | ||
theme: 'quarto', | ||
placement: 'bottom-start' | ||
}; | ||
window.tippy(el, config); | ||
} | ||
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); | ||
for (var i=0; i<noterefs.length; i++) { | ||
const ref = noterefs[i]; | ||
tippyHover(ref, function() { | ||
// use id or data attribute instead here | ||
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href'); | ||
try { href = new URL(href).hash; } catch {} | ||
const id = href.replace(/^#\/?/, ""); | ||
const note = window.document.getElementById(id); | ||
return note.innerHTML; | ||
}); | ||
} | ||
let selectedAnnoteEl; | ||
const selectorForAnnotation = ( cell, annotation) => { | ||
let cellAttr = 'data-code-cell="' + cell + '"'; | ||
let lineAttr = 'data-code-annotation="' + annotation + '"'; | ||
const selector = 'span[' + cellAttr + '][' + lineAttr + ']'; | ||
return selector; | ||
} | ||
const selectCodeLines = (annoteEl) => { | ||
const doc = window.document; | ||
const targetCell = annoteEl.getAttribute("data-target-cell"); | ||
const targetAnnotation = annoteEl.getAttribute("data-target-annotation"); | ||
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); | ||
const lines = annoteSpan.getAttribute("data-code-lines").split(","); | ||
const lineIds = lines.map((line) => { | ||
return targetCell + "-" + line; | ||
}) | ||
let top = null; | ||
let height = null; | ||
let parent = null; | ||
if (lineIds.length > 0) { | ||
//compute the position of the single el (top and bottom and make a div) | ||
const el = window.document.getElementById(lineIds[0]); | ||
top = el.offsetTop; | ||
height = el.offsetHeight; | ||
parent = el.parentElement.parentElement; | ||
if (lineIds.length > 1) { | ||
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]); | ||
const bottom = lastEl.offsetTop + lastEl.offsetHeight; | ||
height = bottom - top; | ||
} | ||
if (top !== null && height !== null && parent !== null) { | ||
// cook up a div (if necessary) and position it | ||
let div = window.document.getElementById("code-annotation-line-highlight"); | ||
if (div === null) { | ||
div = window.document.createElement("div"); | ||
div.setAttribute("id", "code-annotation-line-highlight"); | ||
div.style.position = 'absolute'; | ||
parent.appendChild(div); | ||
} | ||
div.style.top = top - 2 + "px"; | ||
div.style.height = height + 4 + "px"; | ||
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); | ||
if (gutterDiv === null) { | ||
gutterDiv = window.document.createElement("div"); | ||
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter"); | ||
gutterDiv.style.position = 'absolute'; | ||
const codeCell = window.document.getElementById(targetCell); | ||
const gutter = codeCell.querySelector('.code-annotation-gutter'); | ||
gutter.appendChild(gutterDiv); | ||
} | ||
gutterDiv.style.top = top - 2 + "px"; | ||
gutterDiv.style.height = height + 4 + "px"; | ||
} | ||
selectedAnnoteEl = annoteEl; | ||
} | ||
}; | ||
const unselectCodeLines = () => { | ||
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"]; | ||
elementsIds.forEach((elId) => { | ||
const div = window.document.getElementById(elId); | ||
if (div) { | ||
div.remove(); | ||
} | ||
}); | ||
selectedAnnoteEl = undefined; | ||
}; | ||
// Attach click handler to the DT | ||
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); | ||
for (const annoteDlNode of annoteDls) { | ||
annoteDlNode.addEventListener('click', (event) => { | ||
const clickedEl = event.target; | ||
if (clickedEl !== selectedAnnoteEl) { | ||
unselectCodeLines(); | ||
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active'); | ||
if (activeEl) { | ||
activeEl.classList.remove('code-annotation-active'); | ||
} | ||
selectCodeLines(clickedEl); | ||
clickedEl.classList.add('code-annotation-active'); | ||
} else { | ||
// Unselect the line | ||
unselectCodeLines(); | ||
clickedEl.classList.remove('code-annotation-active'); | ||
} | ||
}); | ||
} | ||
const findCites = (el) => { | ||
const parentEl = el.parentElement; | ||
if (parentEl) { | ||
const cites = parentEl.dataset.cites; | ||
if (cites) { | ||
return { | ||
el, | ||
cites: cites.split(' ') | ||
}; | ||
} else { | ||
return findCites(el.parentElement) | ||
} | ||
} else { | ||
return undefined; | ||
} | ||
}; | ||
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]'); | ||
for (var i=0; i<bibliorefs.length; i++) { | ||
const ref = bibliorefs[i]; | ||
const citeInfo = findCites(ref); | ||
if (citeInfo) { | ||
tippyHover(citeInfo.el, function() { | ||
var popup = window.document.createElement('div'); | ||
citeInfo.cites.forEach(function(cite) { | ||
var citeDiv = window.document.createElement('div'); | ||
citeDiv.classList.add('hanging-indent'); | ||
citeDiv.classList.add('csl-entry'); | ||
var biblioDiv = window.document.getElementById('ref-' + cite); | ||
if (biblioDiv) { | ||
citeDiv.innerHTML = biblioDiv.innerHTML; | ||
} | ||
popup.appendChild(citeDiv); | ||
}); | ||
return popup.innerHTML; | ||
}); | ||
} | ||
} | ||
}); | ||
</script> | ||
</div> <!-- /content --> | ||
|
||
|
||
|
||
</body></html> |
Oops, something went wrong.