look, a bulb [favicon]

This commit is contained in:
AG Damsbo 2023-04-28 12:03:29 +02:00
parent 03a278c05e
commit eb41f0873a
22 changed files with 826 additions and 386 deletions

View File

@ -3,14 +3,17 @@ project:
website: website:
title: "Andreas" title: "Andreas"
favicon: "docs/images/lightbulb-on-outline.png"
site-url: https://andreas.gdamsbo.dk site-url: https://andreas.gdamsbo.dk
navbar: navbar:
left: left:
- href: index.qmd - href: index.qmd
text: Home text: Home
- href: health-data.qmd
text: Projects
- href: food.qmd - href: food.qmd
text: Recepies text: Recepies
- about.qmd # - about.qmd
right: right:
- href: https://git.nikohuru.dk/andreas/web - href: https://git.nikohuru.dk/andreas/web
text: Source text: Source

BIN
_site/.DS_Store vendored

Binary file not shown.

View File

@ -84,12 +84,12 @@ ul.task-list li input[type="checkbox"] {
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="./food.html" rel="" target=""> <a class="nav-link" href="./health-data.html" rel="" target="">
<span class="menu-text">Recepies</span></a> <span class="menu-text">Projects</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" href="./about.html" rel="" target="" aria-current="page"> <a class="nav-link" href="./food.html" rel="" target="">
<span class="menu-text">About</span></a> <span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto"> <ul class="navbar-nav navbar-nav-scroll ms-auto">

View File

@ -2,13 +2,13 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="generator" content="quarto-1.2.335"> <meta name="generator" content="quarto-1.3.340">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="dcterms.date" content="2023-04-01"> <meta name="dcterms.date" content="2023-04-01">
<title>web cv</title> <title>Andreas cv</title>
<style> <style>
code{white-space: pre-wrap;} code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;} span.smallcaps{font-variant: small-caps;}
@ -18,7 +18,7 @@ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;} ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] { ul.task-list li input[type="checkbox"] {
width: 0.8em; width: 0.8em;
margin: 0 0.8em 0.2em -1.6em; margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle; vertical-align: middle;
} }
</style> </style>
@ -36,10 +36,10 @@ ul.task-list li input[type="checkbox"] {
<script src="../site_libs/quarto-html/tippy.umd.min.js"></script> <script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../site_libs/quarto-html/anchor.min.js"></script> <script src="../site_libs/quarto-html/anchor.min.js"></script>
<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet"> <link href="../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles"> <link href="../site_libs/quarto-html/quarto-syntax-highlighting-dark.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script> <script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet"> <link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light"> <link href="../site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="dark">
<script id="quarto-search-options" type="application/json">{ <script id="quarto-search-options" type="application/json">{
"location": "navbar", "location": "navbar",
"copy-button": false, "copy-button": false,
@ -61,7 +61,6 @@ ul.task-list li input[type="checkbox"] {
}</script> }</script>
<link rel="stylesheet" href="../styles.css">
</head> </head>
<body class="nav-fixed"> <body class="nav-fixed">
@ -72,24 +71,36 @@ ul.task-list li input[type="checkbox"] {
<div class="navbar-container container-fluid"> <div class="navbar-container container-fluid">
<div class="navbar-brand-container"> <div class="navbar-brand-container">
<a class="navbar-brand" href="../index.html"> <a class="navbar-brand" href="../index.html">
<span class="navbar-title">web</span> <span class="navbar-title">Andreas</span>
</a> </a>
</div> </div>
<div id="quarto-search" class="" title="Search"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarCollapse"> <div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto"> <ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../index.html"> <a class="nav-link" href="../index.html" rel="" target="">
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../about.html"> <a class="nav-link" href="../health-data.html" rel="" target="">
<span class="menu-text">About</span></a> <span class="menu-text">Projects</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="../food.html" rel="" target="">
<span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<div id="quarto-search" class="" title="Search"></div> <ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item">
<a class="nav-link" href="https://git.nikohuru.dk/andreas/web" rel="" target="">
<span class="menu-text">Source</span></a>
</li>
</ul>
<div class="quarto-navbar-tools">
</div>
</div> <!-- /navcollapse --> </div> <!-- /navcollapse -->
</div> <!-- /container-fluid --> </div> <!-- /container-fluid -->
</nav> </nav>
@ -136,12 +147,9 @@ ul.task-list li input[type="checkbox"] {
<section id="publications" class="level1"> <section id="publications" class="level1">
<h1>Publications</h1> <h1>Publications</h1>
<div class="cell"> <div class="cell">
</div>
<div class="cell">
<div class="cell-output-display"> <div class="cell-output-display">
<div id="bibliography"> <div id="bibliography">
<p>/var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpKvtCcs/file106d3f6a3d72.yaml</p> <p>/var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpqeUMeo/filed4a92a7467f9.yaml</p>
</div> </div>
</div> </div>
</div> </div>
@ -177,9 +185,23 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
icon: icon icon: icon
}; };
anchorJS.add('.anchored'); 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', { const clipboard = new window.ClipboardJS('.code-copy-button', {
target: function(trigger) { text: function(trigger) {
return trigger.previousElementSibling; 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) { clipboard.on('success', function(e) {
@ -244,6 +266,92 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
return note.innerHTML; 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 findCites = (el) => {
const parentEl = el.parentElement; const parentEl = el.parentElement;
if (parentEl) { if (parentEl) {
@ -284,6 +392,17 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}); });
</script> </script>
</div> <!-- /content --> </div> <!-- /content -->
<footer class="footer">
<div class="nav-footer">
<div class="nav-footer-left">
&nbsp;
</div>
<div class="nav-footer-center">Made using <a href="https://quarto.org/">Quarto</a>, Copyright 2023, Andreas Gammelgaard Damsbo</div>
<div class="nav-footer-right">
&nbsp;
</div>
</div>
</footer>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

View File

@ -117,12 +117,12 @@ ul.task-list li input[type="checkbox"] {
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" href="./food.html" rel="" target="" aria-current="page"> <a class="nav-link" href="./health-data.html" rel="" target="">
<span class="menu-text">Recepies</span></a> <span class="menu-text">Projects</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="./about.html" rel="" target=""> <a class="nav-link active" href="./food.html" rel="" target="" aria-current="page">
<span class="menu-text">About</span></a> <span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto"> <ul class="navbar-nav navbar-nav-scroll ms-auto">
@ -166,6 +166,7 @@ ul.task-list li input[type="checkbox"] {
<div class="topbr"> <div class="topbr">
<p style="font-size: 18px">I like cooking and baking, and especially with my girls. This is a collection of our favorite recepies for our own reference. You are welcome to use them as well.</p> <p style="font-size: 18px">I like cooking and baking, and especially with my girls. This is a collection of our favorite recepies for our own reference. You are welcome to use them as well.</p>
<p style="font-size: 18px">This is not intended as a showroom. Some recepies are original and some are not. I will try to link to sources when available. I keep this as my own library.</p>
</div> </div>

View File

@ -86,12 +86,12 @@ ul.task-list li input[type="checkbox"] {
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../food.html" rel="" target=""> <a class="nav-link" href="../health-data.html" rel="" target="">
<span class="menu-text">Recepies</span></a> <span class="menu-text">Projects</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../about.html" rel="" target=""> <a class="nav-link" href="../food.html" rel="" target="">
<span class="menu-text">About</span></a> <span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto"> <ul class="navbar-nav navbar-nav-scroll ms-auto">

View File

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="generator" content="quarto-1.2.335"> <meta name="generator" content="quarto-1.3.340">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
@ -17,7 +17,7 @@ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;} ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] { ul.task-list li input[type="checkbox"] {
width: 0.8em; width: 0.8em;
margin: 0 0.8em 0.2em -1.6em; margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle; vertical-align: middle;
} }
</style> </style>
@ -60,7 +60,6 @@ ul.task-list li input[type="checkbox"] {
}</script> }</script>
<link rel="stylesheet" href="../styles.css">
</head> </head>
<body class="nav-fixed"> <body class="nav-fixed">
@ -74,25 +73,33 @@ ul.task-list li input[type="checkbox"] {
<span class="navbar-title">Andreas</span> <span class="navbar-title">Andreas</span>
</a> </a>
</div> </div>
<div id="quarto-search" class="" title="Search"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarCollapse"> <div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto"> <ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../index.html"> <a class="nav-link" href="../index.html" rel="" target="">
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../food.html"> <a class="nav-link" href="../health-data.html" rel="" target="">
<span class="menu-text">Recepies</span></a> <span class="menu-text">Projects</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../about.html"> <a class="nav-link" href="../food.html" rel="" target="">
<span class="menu-text">About</span></a> <span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<div id="quarto-search" class="" title="Search"></div> <ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item">
<a class="nav-link" href="https://git.nikohuru.dk/andreas/web" rel="" target="">
<span class="menu-text">Source</span></a>
</li>
</ul>
<div class="quarto-navbar-tools">
</div>
</div> <!-- /navcollapse --> </div> <!-- /navcollapse -->
</div> <!-- /container-fluid --> </div> <!-- /container-fluid -->
</nav> </nav>
@ -120,7 +127,7 @@ ul.task-list li input[type="checkbox"] {
<div class="quarto-figure quarto-figure-center"> <div class="quarto-figure quarto-figure-center">
<figure class="figure"> <figure class="figure">
<p><img src="images/elses vafler.jpeg" class="img-fluid figure-img"></p> <p><img src="images/elses vafler.jpeg" class="img-fluid figure-img"></p>
<p></p><figcaption class="figure-caption">elses vafler</figcaption><p></p> <figcaption class="figure-caption">elses vafler</figcaption>
</figure> </figure>
</div> </div>
<p>Elses Valler: 27 de vand 2 de molk 74 tale salt 312 de (275g.) wel 2 tee bagpilver. 125 g sheer (wars) Bland wale, land 09 salt de pisi det i welet der is blandes med bagegoulier. Tisot swelted altedlo feditional liog inden baguinge gende papir og drysses med inasse af sukker. LesunCE</p> <p>Elses Valler: 27 de vand 2 de molk 74 tale salt 312 de (275g.) wel 2 tee bagpilver. 125 g sheer (wars) Bland wale, land 09 salt de pisi det i welet der is blandes med bagegoulier. Tisot swelted altedlo feditional liog inden baguinge gende papir og drysses med inasse af sukker. LesunCE</p>
@ -156,9 +163,23 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
icon: icon icon: icon
}; };
anchorJS.add('.anchored'); 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', { const clipboard = new window.ClipboardJS('.code-copy-button', {
target: function(trigger) { text: function(trigger) {
return trigger.previousElementSibling; 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) { clipboard.on('success', function(e) {
@ -223,6 +244,92 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
return note.innerHTML; 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 findCites = (el) => {
const parentEl = el.parentElement; const parentEl = el.parentElement;
if (parentEl) { if (parentEl) {
@ -263,6 +370,17 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}); });
</script> </script>
</div> <!-- /content --> </div> <!-- /content -->
<footer class="footer">
<div class="nav-footer">
<div class="nav-footer-left">
&nbsp;
</div>
<div class="nav-footer-center">Made using <a href="https://quarto.org/">Quarto</a>, Copyright 2023, Andreas Gammelgaard Damsbo</div>
<div class="nav-footer-right">
&nbsp;
</div>
</div>
</footer>

View File

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="generator" content="quarto-1.2.335"> <meta name="generator" content="quarto-1.3.340">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
@ -17,7 +17,7 @@ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;} ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] { ul.task-list li input[type="checkbox"] {
width: 0.8em; width: 0.8em;
margin: 0 0.8em 0.2em -1.6em; margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle; vertical-align: middle;
} }
</style> </style>
@ -60,7 +60,6 @@ ul.task-list li input[type="checkbox"] {
}</script> }</script>
<link rel="stylesheet" href="../styles.css">
</head> </head>
<body class="nav-fixed"> <body class="nav-fixed">
@ -74,25 +73,33 @@ ul.task-list li input[type="checkbox"] {
<span class="navbar-title">Andreas</span> <span class="navbar-title">Andreas</span>
</a> </a>
</div> </div>
<div id="quarto-search" class="" title="Search"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarCollapse"> <div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto"> <ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../index.html"> <a class="nav-link" href="../index.html" rel="" target="">
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../food.html"> <a class="nav-link" href="../health-data.html" rel="" target="">
<span class="menu-text">Recepies</span></a> <span class="menu-text">Projects</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../about.html"> <a class="nav-link" href="../food.html" rel="" target="">
<span class="menu-text">About</span></a> <span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<div id="quarto-search" class="" title="Search"></div> <ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item">
<a class="nav-link" href="https://git.nikohuru.dk/andreas/web" rel="" target="">
<span class="menu-text">Source</span></a>
</li>
</ul>
<div class="quarto-navbar-tools">
</div>
</div> <!-- /navcollapse --> </div> <!-- /navcollapse -->
</div> <!-- /container-fluid --> </div> <!-- /container-fluid -->
</nav> </nav>
@ -112,7 +119,7 @@ ul.task-list li input[type="checkbox"] {
<div class="quarto-figure quarto-figure-center"> <div class="quarto-figure quarto-figure-center">
<figure class="figure"> <figure class="figure">
<p><img src="images/fladmast hane med nye hvidlog.png" class="img-fluid figure-img"></p> <p><img src="images/fladmast hane med nye hvidlog.png" class="img-fluid figure-img"></p>
<p></p><figcaption class="figure-caption">fladmast hane med nye hvidlog</figcaption><p></p> <figcaption class="figure-caption">fladmast hane med nye hvidlog</figcaption>
</figure> </figure>
</div> </div>
<p>Fladmast hane med nye hvidlog</p> <p>Fladmast hane med nye hvidlog</p>
@ -155,9 +162,23 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
icon: icon icon: icon
}; };
anchorJS.add('.anchored'); 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', { const clipboard = new window.ClipboardJS('.code-copy-button', {
target: function(trigger) { text: function(trigger) {
return trigger.previousElementSibling; 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) { clipboard.on('success', function(e) {
@ -222,6 +243,92 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
return note.innerHTML; 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 findCites = (el) => {
const parentEl = el.parentElement; const parentEl = el.parentElement;
if (parentEl) { if (parentEl) {
@ -262,6 +369,17 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}); });
</script> </script>
</div> <!-- /content --> </div> <!-- /content -->
<footer class="footer">
<div class="nav-footer">
<div class="nav-footer-left">
&nbsp;
</div>
<div class="nav-footer-center">Made using <a href="https://quarto.org/">Quarto</a>, Copyright 2023, Andreas Gammelgaard Damsbo</div>
<div class="nav-footer-right">
&nbsp;
</div>
</div>
</footer>

View File

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="generator" content="quarto-1.2.335"> <meta name="generator" content="quarto-1.3.340">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
@ -17,7 +17,7 @@ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;} ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] { ul.task-list li input[type="checkbox"] {
width: 0.8em; width: 0.8em;
margin: 0 0.8em 0.2em -1.6em; margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle; vertical-align: middle;
} }
</style> </style>
@ -60,7 +60,6 @@ ul.task-list li input[type="checkbox"] {
}</script> }</script>
<link rel="stylesheet" href="../styles.css">
</head> </head>
<body class="nav-fixed"> <body class="nav-fixed">
@ -74,25 +73,33 @@ ul.task-list li input[type="checkbox"] {
<span class="navbar-title">Andreas</span> <span class="navbar-title">Andreas</span>
</a> </a>
</div> </div>
<div id="quarto-search" class="" title="Search"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarCollapse"> <div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto"> <ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../index.html"> <a class="nav-link" href="../index.html" rel="" target="">
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../food.html"> <a class="nav-link" href="../health-data.html" rel="" target="">
<span class="menu-text">Recepies</span></a> <span class="menu-text">Projects</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../about.html"> <a class="nav-link" href="../food.html" rel="" target="">
<span class="menu-text">About</span></a> <span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<div id="quarto-search" class="" title="Search"></div> <ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item">
<a class="nav-link" href="https://git.nikohuru.dk/andreas/web" rel="" target="">
<span class="menu-text">Source</span></a>
</li>
</ul>
<div class="quarto-navbar-tools">
</div>
</div> <!-- /navcollapse --> </div> <!-- /navcollapse -->
</div> <!-- /container-fluid --> </div> <!-- /container-fluid -->
</nav> </nav>
@ -152,9 +159,23 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
icon: icon icon: icon
}; };
anchorJS.add('.anchored'); 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', { const clipboard = new window.ClipboardJS('.code-copy-button', {
target: function(trigger) { text: function(trigger) {
return trigger.previousElementSibling; 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) { clipboard.on('success', function(e) {
@ -219,6 +240,92 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
return note.innerHTML; 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 findCites = (el) => {
const parentEl = el.parentElement; const parentEl = el.parentElement;
if (parentEl) { if (parentEl) {
@ -259,6 +366,17 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}); });
</script> </script>
</div> <!-- /content --> </div> <!-- /content -->
<footer class="footer">
<div class="nav-footer">
<div class="nav-footer-left">
&nbsp;
</div>
<div class="nav-footer-center">Made using <a href="https://quarto.org/">Quarto</a>, Copyright 2023, Andreas Gammelgaard Damsbo</div>
<div class="nav-footer-right">
&nbsp;
</div>
</div>
</footer>

View File

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="generator" content="quarto-1.2.335"> <meta name="generator" content="quarto-1.3.340">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
@ -17,7 +17,7 @@ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;} ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] { ul.task-list li input[type="checkbox"] {
width: 0.8em; width: 0.8em;
margin: 0 0.8em 0.2em -1.6em; margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle; vertical-align: middle;
} }
</style> </style>
@ -60,7 +60,6 @@ ul.task-list li input[type="checkbox"] {
}</script> }</script>
<link rel="stylesheet" href="../styles.css">
</head> </head>
<body class="nav-fixed"> <body class="nav-fixed">
@ -74,25 +73,33 @@ ul.task-list li input[type="checkbox"] {
<span class="navbar-title">Andreas</span> <span class="navbar-title">Andreas</span>
</a> </a>
</div> </div>
<div id="quarto-search" class="" title="Search"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarCollapse"> <div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto"> <ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../index.html"> <a class="nav-link" href="../index.html" rel="" target="">
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../food.html"> <a class="nav-link" href="../health-data.html" rel="" target="">
<span class="menu-text">Recepies</span></a> <span class="menu-text">Projects</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../about.html"> <a class="nav-link" href="../food.html" rel="" target="">
<span class="menu-text">About</span></a> <span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<div id="quarto-search" class="" title="Search"></div> <ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item">
<a class="nav-link" href="https://git.nikohuru.dk/andreas/web" rel="" target="">
<span class="menu-text">Source</span></a>
</li>
</ul>
<div class="quarto-navbar-tools">
</div>
</div> <!-- /navcollapse --> </div> <!-- /navcollapse -->
</div> <!-- /container-fluid --> </div> <!-- /container-fluid -->
</nav> </nav>
@ -162,9 +169,23 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
icon: icon icon: icon
}; };
anchorJS.add('.anchored'); 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', { const clipboard = new window.ClipboardJS('.code-copy-button', {
target: function(trigger) { text: function(trigger) {
return trigger.previousElementSibling; 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) { clipboard.on('success', function(e) {
@ -229,6 +250,92 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
return note.innerHTML; 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 findCites = (el) => {
const parentEl = el.parentElement; const parentEl = el.parentElement;
if (parentEl) { if (parentEl) {
@ -269,6 +376,17 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}); });
</script> </script>
</div> <!-- /content --> </div> <!-- /content -->
<footer class="footer">
<div class="nav-footer">
<div class="nav-footer-left">
&nbsp;
</div>
<div class="nav-footer-center">Made using <a href="https://quarto.org/">Quarto</a>, Copyright 2023, Andreas Gammelgaard Damsbo</div>
<div class="nav-footer-right">
&nbsp;
</div>
</div>
</footer>

View File

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>Andreas - Health Data</title> <title>Andreas - Health Data projects</title>
<style> <style>
code{white-space: pre-wrap;} code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;} span.smallcaps{font-variant: small-caps;}
@ -117,12 +117,12 @@ ul.task-list li input[type="checkbox"] {
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="./food.html" rel="" target=""> <a class="nav-link active" href="./health-data.html" rel="" target="" aria-current="page">
<span class="menu-text">Recepies</span></a> <span class="menu-text">Projects</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="./about.html" rel="" target=""> <a class="nav-link" href="./food.html" rel="" target="">
<span class="menu-text">About</span></a> <span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto"> <ul class="navbar-nav navbar-nav-scroll ms-auto">
@ -143,13 +143,13 @@ ul.task-list li input[type="checkbox"] {
<!-- margin-sidebar --> <!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar"> <div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<h5 class="quarto-listing-category-title">Categories</h5><div class="quarto-listing-category category-default"><div class="category" data-category="">All <span class="quarto-category-count">(1)</span></div><div class="category" data-category="Consultant">Consultant <span class="quarto-category-count">(1)</span></div><div class="category" data-category="Project">Project <span class="quarto-category-count">(1)</span></div><div class="category" data-category="R">R <span class="quarto-category-count">(1)</span></div><div class="category" data-category="REDDCap">REDDCap <span class="quarto-category-count">(1)</span></div></div></div> <h5 class="quarto-listing-category-title">Categories</h5><div class="quarto-listing-category category-default"><div class="category" data-category="">All <span class="quarto-category-count">(1)</span></div><div class="category" data-category="Consultant">Consultant <span class="quarto-category-count">(1)</span></div><div class="category" data-category="Project">Project <span class="quarto-category-count">(1)</span></div><div class="category" data-category="R">R <span class="quarto-category-count">(1)</span></div><div class="category" data-category="REDCap">REDCap <span class="quarto-category-count">(1)</span></div></div></div>
<!-- main --> <!-- main -->
<main class="content" id="quarto-document-content"> <main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default"> <header id="title-block-header" class="quarto-title-block default">
<div class="quarto-title"> <div class="quarto-title">
<h1 class="title">Health Data</h1> <h1 class="title">Health Data projects</h1>
</div> </div>
@ -167,7 +167,8 @@ ul.task-list li input[type="checkbox"] {
<div class="topbr"> <div class="topbr">
<p style="font-size: 18px">During my work in clinical research I have aquired a special set of skills in working with data collection, data bases and data analysis. I am very much interested in sharing these skils and knowledge.</p> <p style="font-size: 18px">During my work in clinical research I have aquired a special set of skills in working with data collection, data bases and data analysis. I am very much interested in sharing these skils and knowledge.</p>
<p style="font-size: 18px">I am primarily working with R and REDCap. I have published one R package to CRAN and am actively maintaining two other packages on GitHub (on is on its way to CRAN). I am also working on a handbook for clinical researchers on working with R and REDCap.</p> <p style="font-size: 18px">I am primarily working with R and REDCap. I have published one R package to CRAN and am actively maintaining two other packages on GitHub (on is on its way to CRAN). I am also working on a handbook for clinical researchers on working with R and REDCap.</p>
<p style="font-size: 18px">I have work as a data science consultant on a few projects. Here I will also share a few of them as a portfolio. Please don't hesitate to [contact me](mailto:andreas@gdamsbo.dk) if you need help on a project.</p> <p style="font-size: 18px">I have work as a data science consultant on a few projects. Here I will also share a few of them as a portfolio. Please don't hesitate to
<a href="mailto:andreas@gdamsbo.dk">contact me</a> if you need help on a project.</p>
</div> </div>
@ -175,7 +176,7 @@ ul.task-list li input[type="checkbox"] {
<div class="quarto-listing quarto-listing-container-grid" id="listing-listing"> <div class="quarto-listing quarto-listing-container-grid" id="listing-listing">
<div class="list grid quarto-listing-cols-3"> <div class="list grid quarto-listing-cols-3">
<div class="g-col-1" data-index="0" data-categories="REDDCap,Project,R,Consultant" data-listing-date-sort="1682632800000" data-listing-file-modified-sort="1682668183770" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1"> <div class="g-col-1" data-index="0" data-categories="REDCap,Project,R,Consultant" data-listing-date-sort="1682632800000" data-listing-file-modified-sort="1682674825082" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1">
<a href="./health_data/ancle.html" class="quarto-grid-link"> <a href="./health_data/ancle.html" class="quarto-grid-link">
<div class="quarto-grid-item card h-100 card-left"> <div class="quarto-grid-item card h-100 card-left">
<div class="listing-item-img-placeholder card-img-top" style="height: 150px;">&nbsp;</div> <div class="listing-item-img-placeholder card-img-top" style="height: 150px;">&nbsp;</div>
@ -184,8 +185,8 @@ ul.task-list li input[type="checkbox"] {
Project: Foot database Project: Foot database
</h5> </h5>
<div class="listing-categories"> <div class="listing-categories">
<div class="listing-category" onclick="window.quartoListingCategory('REDDCap'); return false;"> <div class="listing-category" onclick="window.quartoListingCategory('REDCap'); return false;">
REDDCap REDCap
</div> </div>
<div class="listing-category" onclick="window.quartoListingCategory('Project'); return false;"> <div class="listing-category" onclick="window.quartoListingCategory('Project'); return false;">
Project Project

View File

@ -86,12 +86,12 @@ ul.task-list li input[type="checkbox"] {
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../food.html" rel="" target=""> <a class="nav-link" href="../health-data.html" rel="" target="">
<span class="menu-text">Recepies</span></a> <span class="menu-text">Projects</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="../about.html" rel="" target=""> <a class="nav-link" href="../food.html" rel="" target="">
<span class="menu-text">About</span></a> <span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto"> <ul class="navbar-nav navbar-nav-scroll ms-auto">
@ -129,7 +129,7 @@ ul.task-list li input[type="checkbox"] {
<div class="quarto-title"> <div class="quarto-title">
<h1 class="title">Project: Foot database</h1> <h1 class="title">Project: Foot database</h1>
<div class="quarto-categories"> <div class="quarto-categories">
<div class="quarto-category">REDDCap</div> <div class="quarto-category">REDCap</div>
<div class="quarto-category">Project</div> <div class="quarto-category">Project</div>
<div class="quarto-category">R</div> <div class="quarto-category">R</div>
<div class="quarto-category">Consultant</div> <div class="quarto-category">Consultant</div>
@ -162,7 +162,7 @@ ul.task-list li input[type="checkbox"] {
<section id="background" class="level2"> <section id="background" class="level2">
<h2 class="anchored" data-anchor-id="background">Background</h2> <h2 class="anchored" data-anchor-id="background">Background</h2>
<p>This project is the most comprehensive data base migration yet.</p> <p>This project is the most comprehensive data base migration yet.</p>
<p>The clients wis, was for an old Microsoft Access data base to be migrated to REDCap, for continous use and data collection.</p> <p>The clients wish, was for an old Microsoft Access data base to be migrated to REDCap, for continous use and data collection.</p>
</section> </section>
<section id="database" class="level2"> <section id="database" class="level2">
<h2 class="anchored" data-anchor-id="database">Database</h2> <h2 class="anchored" data-anchor-id="database">Database</h2>

View File

@ -30,6 +30,7 @@ ul.task-list li input[type="checkbox"] {
<script src="site_libs/quarto-search/fuse.min.js"></script> <script src="site_libs/quarto-search/fuse.min.js"></script>
<script src="site_libs/quarto-search/quarto-search.js"></script> <script src="site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="./"> <meta name="quarto:offset" content="./">
<link href="./docs/images/lightbulb-on-outline.png" rel="icon" type="image/png">
<script src="site_libs/quarto-html/quarto.js"></script> <script src="site_libs/quarto-html/quarto.js"></script>
<script src="site_libs/quarto-html/popper.min.js"></script> <script src="site_libs/quarto-html/popper.min.js"></script>
<script src="site_libs/quarto-html/tippy.umd.min.js"></script> <script src="site_libs/quarto-html/tippy.umd.min.js"></script>
@ -83,12 +84,12 @@ ul.task-list li input[type="checkbox"] {
<span class="menu-text">Home</span></a> <span class="menu-text">Home</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="./food.html" rel="" target=""> <a class="nav-link" href="./health-data.html" rel="" target="">
<span class="menu-text">Recepies</span></a> <span class="menu-text">Projects</span></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="./about.html" rel="" target=""> <a class="nav-link" href="./food.html" rel="" target="">
<span class="menu-text">About</span></a> <span class="menu-text">Recepies</span></a>
</li> </li>
</ul> </ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto"> <ul class="navbar-nav navbar-nav-scroll ms-auto">

View File

@ -6,96 +6,19 @@
"section": "", "section": "",
"text": "Hi! I am a medical doctor, PhD-student, open source activist and father of two girls.\nOn this page is my CV, I will write about some hobby projects, and just share what I am concerned with. Some will be in English, some in Danish. Take care!\n[This is still very much a work in progress, but these are my intentions]" "text": "Hi! I am a medical doctor, PhD-student, open source activist and father of two girls.\nOn this page is my CV, I will write about some hobby projects, and just share what I am concerned with. Some will be in English, some in Danish. Take care!\n[This is still very much a work in progress, but these are my intentions]"
}, },
{
"objectID": "about.html",
"href": "about.html",
"title": "About",
"section": "",
"text": "My name is Andreas Gammelgaard Damsbo"
},
{
"objectID": "cv/cv.html",
"href": "cv/cv.html",
"title": "web",
"section": "",
"text": "About me\n\nI am a medical doctor and PhD-student\nI have a special interest in the relation betwen clinical focus on patients and data driven research\nI also do other things, and these are also shared on this page\n\n\n\nEducation\n\n\n# A tibble: 1 × 5\n what when with where why \n <chr> <chr> <chr> <chr> <list> \n1 cand.med 2011-2018 Aarhus University Aarhus, Denmark <chr [0]>\n\n\n\n\nPublications\n\n\n\n\n\n\n/var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpKvtCcs/file106d3f6a3d72.yaml"
},
{
"objectID": "food.html",
"href": "food.html",
"title": "Recepies",
"section": "",
"text": "I like cooking and baking, and especially with my girls. This is a collection of our favorite recepies for our own reference. You are welcome to use them as well.\n\n\n\n\n\n\n\n\n\n\n\n\n\nSuper nem banankage\n\n\n\nKage\n\n\nBagværk\n\n\nBørnene med!\n\n\nDansk\n\n\n\nDer er aldrig nok banan i banankage. Sådan er det ikke her!\n\n\n\n\n\n\nApr 28, 2023\n\n\n\n\n\n\n\n\nNo matching items"
},
{
"objectID": "food/formbrød.html",
"href": "food/formbrød.html",
"title": "Andreas",
"section": "",
"text": "Rest surdej (150 g) 7 dl vand 2 håndfulde havregryn 25 g salt 10 g gær 1 håndfuld hørfrø Mel\nBagt 35 min ved 200gr.\nLidt surt. Ok med mindre surdej, eller flere brød."
},
{
"objectID": "food/groft hvede-surdejsbrød.html",
"href": "food/groft hvede-surdejsbrød.html",
"title": "Andreas",
"section": "",
"text": "Groft hvede-surdejsbrød_ _ https://www.dr.dk/mad/opskrift/groft-hvede-surdejsbrod\nIngredienser\n\n5 g gær (økologisk gær anbefales pga. bedre hæve-effekt)\n6 dl koldt vand\n1,5 dl hvedesurdej\n150 g fuldkornshvedemel (f.eks. ølandshvede, spelt eller emmermel) (300)\n750 g hvedemel (600)\n20 g havsalt\n2 spsk. olie\n\nSærdeles velegnet til boller også. Deles i 16-20 stykker og bages 13-15 min ved 250gr\nDag 1\n\nRør gæren ud i det kolde vand i skålen til røremaskinen. \nTilsæt resten af ingredienserne og ælt dejen godt igennem på røremaskinen i ca. 10 minutter. \nHvis du rører dejen i hånden, skal du røre i lidt længere tid. \nDejen skal være så smidig, at den slipper skålen eller bordpladen. \nSmør olie på indersiden af en skål og kom dejen i. \nDæk med film og lad dejen koldhæve i køleskabet natten over. \n\nDag 2 1. Vend dejen ud på et meldrysset bord og del den i to brød. Rør ikke for meget ved dejen, da luften derved vil blive presset ud af den. Lad brødene hæve på et stykke bagepapir i 30-40 minutter.  2. Varm imens ovnen op til 250 grader ved varmluft med din tykkeste bageplade på den midterste hylde. Tag bagepladen ud, når ovnen er varm og træk bagepapiret, som brødene ligger på, over på den varme bageplade.  3. Sæt pladen tilbage midt i ovnen og sprøjt grundigt med vand ind i ovnen med en forstøver, så der hurtigt opstår damp. 4. Luk lågen og bag brødene i ca. 35 minutter. Vend bagepladen 1-2 gange undervejs for at sikre en jævn afbagning. Skru evt. lidt ned for temperaturen de sidste 10 minutter, hvis brødene bliver for mørke.  5. Tag brødene ud og lad dem afkøle på en rist i cirka 30 minutter, før du skærer i dem. 6."
},
{
"objectID": "food/fladmast hane med nye hvidlog.html",
"href": "food/fladmast hane med nye hvidlog.html",
"title": "Andreas",
"section": "",
"text": "fladmast hane med nye hvidlog\n\n\nFladmast hane med nye hvidlog\nFladmasning kræver ikke stor køkkensnilde. Det er en ret genial måde at stege kyllinger på, for man får sprødt skind over det hele. Samtidigt bliver den foldet på en måde, som forhindre brystkødet at blive tørt.\nTil 6 personer\nEn stor hane eller kylling 1 ½ kg. Kartofler 3 hele hvidløg 1 citron salt og peber olivenolie\nLæg hanen på et bræt med brystet nedad. Skær med en meget skarp og tung kniv langs rygbenet på begge sider og tag rygbenet væk - halsen følger med. Vend hanen om og tryk den flad. Skær kartoflerne i kvarter - gerne med skræl. Fjern de yderste seje hinder fra hvidløgene og skær dem i kvarter. Skræl den ene halvdel af citronen tyndt. Læg hvidløg og citronskal i en bradepande og læg den fladmaste hane ovenpå med skindsiden opad Arranger kartoflerne udenom, drys med salt og peber, og dryp med olivenolie. Hæld 3 dl. vand ved.\nBag ved 200° - til hanen er er mør og sprød - ca. 1 time.\nDer skal rumses lidt rundt i kartoflerne undervejs så de ikke branker.\nNår hanen tages ud af ovnen, presses citronen ud over kartoflerne.\nSpis hvidløgene som en creme til at smøre på kød og grønsager."
},
{
"objectID": "food/elses vafler.html",
"href": "food/elses vafler.html",
"title": "Andreas",
"section": "",
"text": "Elses vafler\n\n\n\nelses vafler\n\n\nElses Valler: 27 de vand 2 de molk 74 tale salt 312 de (275g.) wel 2 tee bagpilver. 125 g sheer (wars) Bland wale, land 09 salt de pisi det i welet der is blandes med bagegoulier. Tisot swelted altedlo feditional liog inden baguinge gende papir og drysses med inasse af sukker. LesunCE"
},
{
"objectID": "food/banankage.html",
"href": "food/banankage.html",
"title": "Super nem banankage",
"section": "",
"text": "Denne kage kan sagtens røres sammen med et par unger. Der er sjovt at mose bananer og røre i dej. Dejen smager også ubagt og er jo ikke så farlig. Det tager 15-20 minutter at røre det hele sammen og det passer til en klassisk rugbrødsform på ca 3 L. Kagen er særdeles velegnet til at lægge i fryseren."
},
{
"objectID": "food/banankage.html#sådan-gør-du",
"href": "food/banankage.html#sådan-gør-du",
"title": "Super nem banankage",
"section": "Sådan gør du",
"text": "Sådan gør du\nAlt blandes\nFormen smøres og drysses med rasp el. mel\nBages ca. 45 min. ved 175 grader"
},
{
"objectID": "food/banankage.html#noter",
"href": "food/banankage.html#noter",
"title": "Super nem banankage",
"section": "",
"text": "Denne kage kan sagtens røres sammen med et par unger. Der er sjovt at mose bananer og røre i dej. Dejen smager også ubagt og er jo ikke så farlig. Det tager 15-20 minutter at røre det hele sammen og det passer til en klassisk rugbrødsform på ca 3 L. Kagen er særdeles velegnet til at lægge i fryseren."
},
{
"objectID": "food/banankage.html#ingredienser",
"href": "food/banankage.html#ingredienser",
"title": "Super nem banankage",
"section": "Ingredienser",
"text": "Ingredienser\n\n3-5 godt modne bananer - moses\n200-250 ml. sukker\n2 æg - moses m. gaffel\n1 tsk. natron\n5 dl. mel\n2 dI. hakkede valnødder\n1½ dl. olie/margarine\n1 tsk. vanillesukker"
},
{ {
"objectID": "health_data/ancle.html", "objectID": "health_data/ancle.html",
"href": "health_data/ancle.html", "href": "health_data/ancle.html",
"title": "Project: Foot database", "title": "Project: Foot database",
"section": "", "section": "",
"text": "This project is the most comprehensive data base migration yet.\nThe clients wis, was for an old Microsoft Access data base to be migrated to REDCap, for continous use and data collection." "text": "This project is the most comprehensive data base migration yet.\nThe clients wish, was for an old Microsoft Access data base to be migrated to REDCap, for continous use and data collection."
}, },
{ {
"objectID": "health_data/ancle.html#background", "objectID": "health_data/ancle.html#background",
"href": "health_data/ancle.html#background", "href": "health_data/ancle.html#background",
"title": "Project: Foot database", "title": "Project: Foot database",
"section": "", "section": "",
"text": "This project is the most comprehensive data base migration yet.\nThe clients wis, was for an old Microsoft Access data base to be migrated to REDCap, for continous use and data collection." "text": "This project is the most comprehensive data base migration yet.\nThe clients wish, was for an old Microsoft Access data base to be migrated to REDCap, for continous use and data collection."
}, },
{ {
"objectID": "health_data/ancle.html#database", "objectID": "health_data/ancle.html#database",
@ -118,11 +41,95 @@
"section": "Extend of the work", "section": "Extend of the work",
"text": "Extend of the work" "text": "Extend of the work"
}, },
{
"objectID": "about.html",
"href": "about.html",
"title": "About",
"section": "",
"text": "My name is Andreas Gammelgaard Damsbo"
},
{
"objectID": "food/formbrød.html",
"href": "food/formbrød.html",
"title": "Andreas",
"section": "",
"text": "Rest surdej (150 g) 7 dl vand 2 håndfulde havregryn 25 g salt 10 g gær 1 håndfuld hørfrø Mel\nBagt 35 min ved 200gr.\nLidt surt. Ok med mindre surdej, eller flere brød."
},
{
"objectID": "food/formbrød.html#formbrød",
"href": "food/formbrød.html#formbrød",
"title": "Andreas",
"section": "",
"text": "Rest surdej (150 g) 7 dl vand 2 håndfulde havregryn 25 g salt 10 g gær 1 håndfuld hørfrø Mel\nBagt 35 min ved 200gr.\nLidt surt. Ok med mindre surdej, eller flere brød."
},
{
"objectID": "food/groft hvede-surdejsbrød.html",
"href": "food/groft hvede-surdejsbrød.html",
"title": "Andreas",
"section": "",
"text": "Groft hvede-surdejsbrød_ _ https://www.dr.dk/mad/opskrift/groft-hvede-surdejsbrod\nIngredienser\n\n5 g gær (økologisk gær anbefales pga. bedre hæve-effekt)\n6 dl koldt vand\n1,5 dl hvedesurdej\n150 g fuldkornshvedemel (f.eks. ølandshvede, spelt eller emmermel) (300)\n750 g hvedemel (600)\n20 g havsalt\n2 spsk. olie\n\nSærdeles velegnet til boller også. Deles i 16-20 stykker og bages 13-15 min ved 250gr\nDag 1\n\nRør gæren ud i det kolde vand i skålen til røremaskinen. \nTilsæt resten af ingredienserne og ælt dejen godt igennem på røremaskinen i ca. 10 minutter. \nHvis du rører dejen i hånden, skal du røre i lidt længere tid. \nDejen skal være så smidig, at den slipper skålen eller bordpladen. \nSmør olie på indersiden af en skål og kom dejen i. \nDæk med film og lad dejen koldhæve i køleskabet natten over. \n\nDag 2 1. Vend dejen ud på et meldrysset bord og del den i to brød. Rør ikke for meget ved dejen, da luften derved vil blive presset ud af den. Lad brødene hæve på et stykke bagepapir i 30-40 minutter.  2. Varm imens ovnen op til 250 grader ved varmluft med din tykkeste bageplade på den midterste hylde. Tag bagepladen ud, når ovnen er varm og træk bagepapiret, som brødene ligger på, over på den varme bageplade.  3. Sæt pladen tilbage midt i ovnen og sprøjt grundigt med vand ind i ovnen med en forstøver, så der hurtigt opstår damp. 4. Luk lågen og bag brødene i ca. 35 minutter. Vend bagepladen 1-2 gange undervejs for at sikre en jævn afbagning. Skru evt. lidt ned for temperaturen de sidste 10 minutter, hvis brødene bliver for mørke.  5. Tag brødene ud og lad dem afkøle på en rist i cirka 30 minutter, før du skærer i dem. 6."
},
{
"objectID": "food/fladmast hane med nye hvidlog.html",
"href": "food/fladmast hane med nye hvidlog.html",
"title": "Andreas",
"section": "",
"text": "fladmast hane med nye hvidlog\n\n\nFladmast hane med nye hvidlog\nFladmasning kræver ikke stor køkkensnilde. Det er en ret genial måde at stege kyllinger på, for man får sprødt skind over det hele. Samtidigt bliver den foldet på en måde, som forhindre brystkødet at blive tørt.\nTil 6 personer\nEn stor hane eller kylling 1 ½ kg. Kartofler 3 hele hvidløg 1 citron salt og peber olivenolie\nLæg hanen på et bræt med brystet nedad. Skær med en meget skarp og tung kniv langs rygbenet på begge sider og tag rygbenet væk - halsen følger med. Vend hanen om og tryk den flad. Skær kartoflerne i kvarter - gerne med skræl. Fjern de yderste seje hinder fra hvidløgene og skær dem i kvarter. Skræl den ene halvdel af citronen tyndt. Læg hvidløg og citronskal i en bradepande og læg den fladmaste hane ovenpå med skindsiden opad Arranger kartoflerne udenom, drys med salt og peber, og dryp med olivenolie. Hæld 3 dl. vand ved.\nBag ved 200° - til hanen er er mør og sprød - ca. 1 time.\nDer skal rumses lidt rundt i kartoflerne undervejs så de ikke branker.\nNår hanen tages ud af ovnen, presses citronen ud over kartoflerne.\nSpis hvidløgene som en creme til at smøre på kød og grønsager."
},
{
"objectID": "food/elses vafler.html",
"href": "food/elses vafler.html",
"title": "Elses vafler",
"section": "",
"text": "Elses vafler\n\n\n\nelses vafler\n\n\nElses Valler: 27 de vand 2 de molk 74 tale salt 312 de (275g.) wel 2 tee bagpilver. 125 g sheer (wars) Bland wale, land 09 salt de pisi det i welet der is blandes med bagegoulier. Tisot swelted altedlo feditional liog inden baguinge gende papir og drysses med inasse af sukker. LesunCE"
},
{
"objectID": "food/banankage.html",
"href": "food/banankage.html",
"title": "Super nem banankage",
"section": "",
"text": "Denne kage kan sagtens røres sammen med et par unger. Der er sjovt at mose bananer og røre i dej. Dejen smager også ubagt og er jo ikke så farlig. Det tager 15-20 minutter at røre det hele sammen og det passer til en klassisk rugbrødsform på ca 3 L. Kagen er særdeles velegnet til at lægge i fryseren."
},
{
"objectID": "food/banankage.html#noter",
"href": "food/banankage.html#noter",
"title": "Super nem banankage",
"section": "",
"text": "Denne kage kan sagtens røres sammen med et par unger. Der er sjovt at mose bananer og røre i dej. Dejen smager også ubagt og er jo ikke så farlig. Det tager 15-20 minutter at røre det hele sammen og det passer til en klassisk rugbrødsform på ca 3 L. Kagen er særdeles velegnet til at lægge i fryseren."
},
{
"objectID": "food/banankage.html#ingredienser",
"href": "food/banankage.html#ingredienser",
"title": "Super nem banankage",
"section": "Ingredienser",
"text": "Ingredienser\n\n3-5 godt modne bananer - moses\n200-250 ml. sukker\n2 æg - moses m. gaffel\n1 tsk. natron\n5 dl. mel\n2 dI. hakkede valnødder\n1½ dl. olie/margarine\n1 tsk. vanillesukker"
},
{
"objectID": "food/banankage.html#sådan-gør-du",
"href": "food/banankage.html#sådan-gør-du",
"title": "Super nem banankage",
"section": "Sådan gør du",
"text": "Sådan gør du\nAlt blandes\nFormen smøres og drysses med rasp el. mel\nBages ca. 45 min. ved 175 grader"
},
{
"objectID": "cv/cv.html",
"href": "cv/cv.html",
"title": "About me",
"section": "",
"text": "About me\n\nI am a medical doctor and PhD-student\nI have a special interest in the relation betwen clinical focus on patients and data driven research\nI also do other things, and these are also shared on this page\n\n\n\nEducation\n\n\n# A tibble: 1 × 5\n what when with where why \n &lt;chr&gt; &lt;chr&gt; &lt;chr&gt; &lt;chr&gt; &lt;list&gt; \n1 cand.med 2011-2018 Aarhus University Aarhus, Denmark &lt;chr [0]&gt;\n\n\n\n\nPublications\n\n\n\n/var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpqeUMeo/filed4a92a7467f9.yaml"
},
{
"objectID": "food.html",
"href": "food.html",
"title": "Recepies",
"section": "",
"text": "I like cooking and baking, and especially with my girls. This is a collection of our favorite recepies for our own reference. You are welcome to use them as well.\nThis is not intended as a showroom. Some recepies are original and some are not. I will try to link to sources when available. I keep this as my own library.\n\n\n\n\n\n\n\n\n\n\n\n\n\nSuper nem banankage\n\n\n\nKage\n\n\nBagværk\n\n\nBørnene med!\n\n\nDansk\n\n\n\nDer er aldrig nok banan i banankage. Sådan er det ikke her!\n\n\n\n\n\n\nApr 28, 2023\n\n\n\n\n\n\n\n\nNo matching items"
},
{ {
"objectID": "health-data.html", "objectID": "health-data.html",
"href": "health-data.html", "href": "health-data.html",
"title": "Health Data", "title": "Health Data projects",
"section": "", "section": "",
"text": "During my work in clinical research I have aquired a special set of skills in working with data collection, data bases and data analysis. I am very much interested in sharing these skils and knowledge.\nI am primarily working with R and REDCap. I have published one R package to CRAN and am actively maintaining two other packages on GitHub (on is on its way to CRAN). I am also working on a handbook for clinical researchers on working with R and REDCap.\nI have work as a data science consultant on a few projects. Here I will also share a few of them as a portfolio. Please don't hesitate to [contact me](mailto:andreas@gdamsbo.dk) if you need help on a project.\n\n\n\n\n\n\n\n\n\n\n\n\n\nProject: Foot database\n\n\n\nREDDCap\n\n\nProject\n\n\nR\n\n\nConsultant\n\n\n\nComprehensive data and data base migration to continue data collection.\n\n\n\n\n\n\nApr 28, 2023\n\n\n\n\n\n\n\n\nNo matching items" "text": "During my work in clinical research I have aquired a special set of skills in working with data collection, data bases and data analysis. I am very much interested in sharing these skils and knowledge.\nI am primarily working with R and REDCap. I have published one R package to CRAN and am actively maintaining two other packages on GitHub (on is on its way to CRAN). I am also working on a handbook for clinical researchers on working with R and REDCap.\nI have work as a data science consultant on a few projects. Here I will also share a few of them as a portfolio. Please don't hesitate to \ncontact me if you need help on a project.\n\n\n\n\n\n\n\n\n\n\n\n\n\nProject: Foot database\n\n\n\nREDCap\n\n\nProject\n\n\nR\n\n\nConsultant\n\n\n\nComprehensive data and data base migration to continue data collection.\n\n\n\n\n\n\nApr 28, 2023\n\n\n\n\n\n\n\n\nNo matching items"
} }
] ]

Binary file not shown.

View File

@ -1,171 +0,0 @@
/* quarto syntax highlight colors */
:root {
--quarto-hl-ot-color: #003B4F;
--quarto-hl-at-color: #657422;
--quarto-hl-ss-color: #20794D;
--quarto-hl-an-color: #5E5E5E;
--quarto-hl-fu-color: #4758AB;
--quarto-hl-st-color: #20794D;
--quarto-hl-cf-color: #003B4F;
--quarto-hl-op-color: #5E5E5E;
--quarto-hl-er-color: #AD0000;
--quarto-hl-bn-color: #AD0000;
--quarto-hl-al-color: #AD0000;
--quarto-hl-va-color: #111111;
--quarto-hl-bu-color: inherit;
--quarto-hl-ex-color: inherit;
--quarto-hl-pp-color: #AD0000;
--quarto-hl-in-color: #5E5E5E;
--quarto-hl-vs-color: #20794D;
--quarto-hl-wa-color: #5E5E5E;
--quarto-hl-do-color: #5E5E5E;
--quarto-hl-im-color: #00769E;
--quarto-hl-ch-color: #20794D;
--quarto-hl-dt-color: #AD0000;
--quarto-hl-fl-color: #AD0000;
--quarto-hl-co-color: #5E5E5E;
--quarto-hl-cv-color: #5E5E5E;
--quarto-hl-cn-color: #8f5902;
--quarto-hl-sc-color: #5E5E5E;
--quarto-hl-dv-color: #AD0000;
--quarto-hl-kw-color: #003B4F;
}
/* other quarto variables */
:root {
--quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
pre > code.sourceCode > span {
color: #003B4F;
}
code span {
color: #003B4F;
}
code.sourceCode > span {
color: #003B4F;
}
div.sourceCode,
div.sourceCode pre.sourceCode {
color: #003B4F;
}
code span.ot {
color: #003B4F;
}
code span.at {
color: #657422;
}
code span.ss {
color: #20794D;
}
code span.an {
color: #5E5E5E;
}
code span.fu {
color: #4758AB;
}
code span.st {
color: #20794D;
}
code span.cf {
color: #003B4F;
}
code span.op {
color: #5E5E5E;
}
code span.er {
color: #AD0000;
}
code span.bn {
color: #AD0000;
}
code span.al {
color: #AD0000;
}
code span.va {
color: #111111;
}
code span.pp {
color: #AD0000;
}
code span.in {
color: #5E5E5E;
}
code span.vs {
color: #20794D;
}
code span.wa {
color: #5E5E5E;
font-style: italic;
}
code span.do {
color: #5E5E5E;
font-style: italic;
}
code span.im {
color: #00769E;
}
code span.ch {
color: #20794D;
}
code span.dt {
color: #AD0000;
}
code span.fl {
color: #AD0000;
}
code span.co {
color: #5E5E5E;
}
code span.cv {
color: #5E5E5E;
font-style: italic;
}
code span.cn {
color: #8f5902;
}
code span.sc {
color: #5E5E5E;
}
code span.dv {
color: #AD0000;
}
code span.kw {
color: #003B4F;
}
.prevent-inlining {
content: "</";
}
/*# sourceMappingURL=debc5d5d77c3f9108843748ff7464032.css.map */

View File

@ -2,42 +2,46 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>https://andreas.gdamsbo.dk/index.html</loc> <loc>https://andreas.gdamsbo.dk/index.html</loc>
<lastmod>2023-04-28T08:02:46.247Z</lastmod> <lastmod>2023-04-28T10:03:04.294Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food.html</loc>
<lastmod>2023-04-28T07:50:15.196Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/about.html</loc>
<lastmod>2023-04-28T07:32:25.628Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food/formbrød.html</loc>
<lastmod>2023-04-28T07:11:24.304Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food/groft hvede-surdejsbrød.html</loc>
<lastmod>2023-04-28T07:11:24.679Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food/fladmast hane med nye hvidlog.html</loc>
<lastmod>2023-04-28T07:11:25.040Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food/elses vafler.html</loc>
<lastmod>2023-04-28T07:11:25.390Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food/banankage.html</loc>
<lastmod>2023-04-28T07:50:14.277Z</lastmod>
</url> </url>
<url> <url>
<loc>https://andreas.gdamsbo.dk/health_data/ancle.html</loc> <loc>https://andreas.gdamsbo.dk/health_data/ancle.html</loc>
<lastmod>2023-04-28T07:50:13.878Z</lastmod> <lastmod>2023-04-28T09:40:35.875Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/about.html</loc>
<lastmod>2023-04-28T09:40:36.197Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food/formbrød.html</loc>
<lastmod>2023-04-28T09:40:36.536Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food/groft hvede-surdejsbrød.html</loc>
<lastmod>2023-04-28T09:40:36.901Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food/fladmast hane med nye hvidlog.html</loc>
<lastmod>2023-04-28T09:40:37.312Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food/elses vafler.html</loc>
<lastmod>2023-04-28T09:40:37.647Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food/banankage.html</loc>
<lastmod>2023-04-28T09:40:37.985Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/cv/cv.html</loc>
<lastmod>2023-04-28T09:40:40.183Z</lastmod>
</url>
<url>
<loc>https://andreas.gdamsbo.dk/food.html</loc>
<lastmod>2023-04-28T09:40:40.700Z</lastmod>
</url> </url>
<url> <url>
<loc>https://andreas.gdamsbo.dk/health-data.html</loc> <loc>https://andreas.gdamsbo.dk/health-data.html</loc>
<lastmod>2023-04-28T07:50:14.735Z</lastmod> <lastmod>2023-04-28T09:40:41.114Z</lastmod>
</url> </url>
</urlset> </urlset>

View File

@ -1 +0,0 @@
/* css styles */

View File

@ -12,4 +12,7 @@ listing:
```{=html} ```{=html}
<p style = "font-size: 18px">I like cooking and baking, and especially with my girls. This is a collection of our favorite recepies for our own reference. You are welcome to use them as well.</p> <p style = "font-size: 18px">I like cooking and baking, and especially with my girls. This is a collection of our favorite recepies for our own reference. You are welcome to use them as well.</p>
``` ```
```{=html}
<p style = "font-size: 18px">This is not intended as a showroom. Some recepies are original and some are not. I will try to link to sources when available. I keep this as my own library.</p>
```
::: :::

View File

@ -1,5 +1,5 @@
--- ---
title: "Health Data" title: "Health Data projects"
listing: listing:
contents: contents:
- "health_data/*.qmd" - "health_data/*.qmd"
@ -16,6 +16,7 @@ listing:
<p style = "font-size: 18px">I am primarily working with R and REDCap. I have published one R package to CRAN and am actively maintaining two other packages on GitHub (on is on its way to CRAN). I am also working on a handbook for clinical researchers on working with R and REDCap.</p> <p style = "font-size: 18px">I am primarily working with R and REDCap. I have published one R package to CRAN and am actively maintaining two other packages on GitHub (on is on its way to CRAN). I am also working on a handbook for clinical researchers on working with R and REDCap.</p>
``` ```
```{=html} ```{=html}
<p style = "font-size: 18px">I have work as a data science consultant on a few projects. Here I will also share a few of them as a portfolio. Please don't hesitate to [contact me](mailto:andreas@gdamsbo.dk) if you need help on a project.</p> <p style = "font-size: 18px">I have work as a data science consultant on a few projects. Here I will also share a few of them as a portfolio. Please don't hesitate to
<a href="mailto:andreas@gdamsbo.dk">contact me</a> if you need help on a project.</p>
``` ```
::: :::

View File

@ -3,16 +3,17 @@ title: "Project: Foot database"
date: 2023-04-28 date: 2023-04-28
description: Comprehensive data and data base migration to continue data collection. description: Comprehensive data and data base migration to continue data collection.
categories: categories:
- REDDCap - REDCap
- Project - Project
- R - R
- Consultant - Consultant
--- ---
## Background ## Background
This project is the most comprehensive data base migration yet. This project is the most comprehensive data base migration yet.
The clients wis, was for an old Microsoft Access data base to be migrated to REDCap, for continous use and data collection. The client's wish, was for an old Microsoft Access data base to be migrated to REDCap, for continous use and data collection.
## Database ## Database
@ -29,4 +30,3 @@ Here are a few characteristics:
I have collected my scripts in a repository, which will be made public when I have finished the work. I have collected my scripts in a repository, which will be made public when I have finished the work.
## Extend of the work ## Extend of the work