Compare commits
4 Commits
6fb13ebc75
...
03a278c05e
Author | SHA1 | Date | |
---|---|---|---|
|
03a278c05e | ||
|
03ac4912fb | ||
|
402399ad15 | ||
|
13a5e4a8aa |
1
.gitignore
vendored
@ -2,6 +2,7 @@
|
||||
# History files
|
||||
.Rhistory
|
||||
.Rapp.history
|
||||
.DS_Store
|
||||
|
||||
# Session Data files
|
||||
.RData
|
||||
|
15
_quarto.yml
@ -2,17 +2,26 @@ project:
|
||||
type: website
|
||||
|
||||
website:
|
||||
title: "web"
|
||||
title: "Andreas"
|
||||
site-url: https://andreas.gdamsbo.dk
|
||||
navbar:
|
||||
left:
|
||||
- href: index.qmd
|
||||
text: Home
|
||||
- href: food.qmd
|
||||
text: Recepies
|
||||
- about.qmd
|
||||
right:
|
||||
- href: https://git.nikohuru.dk/andreas/web
|
||||
text: Source
|
||||
page-footer:
|
||||
background: light
|
||||
center: "Made using [Quarto](https://quarto.org/), Copyright 2023, Andreas Gammelgaard Damsbo"
|
||||
|
||||
format:
|
||||
html:
|
||||
theme: cosmo
|
||||
css: styles.css
|
||||
theme: solar
|
||||
# css: styles.css
|
||||
toc: true
|
||||
|
||||
editor: visual
|
||||
|
BIN
_site/.DS_Store
vendored
Normal file
146
_site/about.html
@ -2,12 +2,12 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<title>web - About</title>
|
||||
<title>Andreas - About</title>
|
||||
<style>
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
@ -17,7 +17,7 @@ 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 -1.6em;
|
||||
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
@ -35,10 +35,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/anchor.min.js"></script>
|
||||
<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>
|
||||
<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">{
|
||||
"location": "navbar",
|
||||
"copy-button": false,
|
||||
@ -60,7 +60,6 @@ ul.task-list li input[type="checkbox"] {
|
||||
}</script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
|
||||
<body class="nav-fixed">
|
||||
@ -71,24 +70,36 @@ ul.task-list li input[type="checkbox"] {
|
||||
<div class="navbar-container container-fluid">
|
||||
<div class="navbar-brand-container">
|
||||
<a class="navbar-brand" href="./index.html">
|
||||
<span class="navbar-title">web</span>
|
||||
<span class="navbar-title">Andreas</span>
|
||||
</a>
|
||||
</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(); }">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
||||
<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>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./about.html" aria-current="page">
|
||||
<a class="nav-link" href="./food.html" rel="" target="">
|
||||
<span class="menu-text">Recepies</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./about.html" rel="" target="" aria-current="page">
|
||||
<span class="menu-text">About</span></a>
|
||||
</li>
|
||||
</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> <!-- /container-fluid -->
|
||||
</nav>
|
||||
@ -152,9 +163,23 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
|
||||
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', {
|
||||
target: function(trigger) {
|
||||
return trigger.previousElementSibling;
|
||||
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) {
|
||||
@ -219,6 +244,92 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
|
||||
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) {
|
||||
@ -259,6 +370,17 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
|
||||
});
|
||||
</script>
|
||||
</div> <!-- /content -->
|
||||
<footer class="footer">
|
||||
<div class="nav-footer">
|
||||
<div class="nav-footer-left">
|
||||
|
||||
</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">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
|
@ -141,7 +141,7 @@ ul.task-list li input[type="checkbox"] {
|
||||
<div class="cell">
|
||||
<div class="cell-output-display">
|
||||
<div id="bibliography">
|
||||
<p>/var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpdaIYrQ/filea951a7142b9.yaml</p>
|
||||
<p>/var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpKvtCcs/file106d3f6a3d72.yaml</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
BIN
_site/data/portrait.png
Normal file
After Width: | Height: | Size: 1.5 MiB |
466
_site/food.html
Normal file
@ -0,0 +1,466 @@
|
||||
<!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.340">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
|
||||
|
||||
<title>Andreas - Recepies</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="site_libs/quarto-nav/quarto-nav.js"></script>
|
||||
<script src="site_libs/quarto-nav/headroom.min.js"></script>
|
||||
<script src="site_libs/clipboard/clipboard.min.js"></script>
|
||||
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
|
||||
<script src="site_libs/quarto-search/fuse.min.js"></script>
|
||||
<script src="site_libs/quarto-search/quarto-search.js"></script>
|
||||
<meta name="quarto:offset" content="./">
|
||||
<script src="site_libs/quarto-listing/list.min.js"></script>
|
||||
<script src="site_libs/quarto-listing/quarto-listing.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/tippy.umd.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/quarto-syntax-highlighting-dark.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
||||
<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.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="dark">
|
||||
<script id="quarto-search-options" type="application/json">{
|
||||
"location": "navbar",
|
||||
"copy-button": false,
|
||||
"collapse-after": 3,
|
||||
"panel-placement": "end",
|
||||
"type": "overlay",
|
||||
"limit": 20,
|
||||
"language": {
|
||||
"search-no-results-text": "No results",
|
||||
"search-matching-documents-text": "matching documents",
|
||||
"search-copy-link-title": "Copy link to search",
|
||||
"search-hide-matches-text": "Hide additional matches",
|
||||
"search-more-match-text": "more match in this document",
|
||||
"search-more-matches-text": "more matches in this document",
|
||||
"search-clear-button-title": "Clear",
|
||||
"search-detached-cancel-button-title": "Cancel",
|
||||
"search-submit-button-title": "Submit"
|
||||
}
|
||||
}</script>
|
||||
<script>
|
||||
|
||||
window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
const listingTargetEl = window.document.querySelector('#listing-listing .list');
|
||||
if (!listingTargetEl) {
|
||||
// No listing discovered, do not attach.
|
||||
return;
|
||||
}
|
||||
|
||||
const options = {
|
||||
valueNames: ['listing-title','listing-author','listing-date','listing-image','listing-description','listing-categories',{ data: ['index'] },{ data: ['categories'] },{ data: ['listing-date-sort'] },{ data: ['listing-file-modified-sort'] }],
|
||||
|
||||
searchColumns: ["listing-title","listing-author","listing-date","listing-image","listing-description","listing-categories"],
|
||||
};
|
||||
|
||||
window['quarto-listings'] = window['quarto-listings'] || {};
|
||||
window['quarto-listings']['listing-listing'] = new List('listing-listing', options);
|
||||
|
||||
if (window['quarto-listing-loaded']) {
|
||||
window['quarto-listing-loaded']();
|
||||
}
|
||||
});
|
||||
|
||||
window.addEventListener('hashchange',() => {
|
||||
if (window['quarto-listing-loaded']) {
|
||||
window['quarto-listing-loaded']();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="nav-fixed">
|
||||
|
||||
<div id="quarto-search-results"></div>
|
||||
<header id="quarto-header" class="headroom fixed-top">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark ">
|
||||
<div class="navbar-container container-fluid">
|
||||
<div class="navbar-brand-container">
|
||||
<a class="navbar-brand" href="./index.html">
|
||||
<span class="navbar-title">Andreas</span>
|
||||
</a>
|
||||
</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(); }">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./index.html" rel="" target="">
|
||||
<span class="menu-text">Home</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./food.html" rel="" target="" aria-current="page">
|
||||
<span class="menu-text">Recepies</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./about.html" rel="" target="">
|
||||
<span class="menu-text">About</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
<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> <!-- /container-fluid -->
|
||||
</nav>
|
||||
</header>
|
||||
<!-- content -->
|
||||
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
||||
<!-- 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="Bagværk">Bagværk <span class="quarto-category-count">(1)</span></div><div class="category" data-category="Børnene med!">Børnene med! <span class="quarto-category-count">(1)</span></div><div class="category" data-category="Dansk">Dansk <span class="quarto-category-count">(1)</span></div><div class="category" data-category="Kage">Kage <span class="quarto-category-count">(1)</span></div></div></div>
|
||||
<!-- main -->
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
<header id="title-block-header" class="quarto-title-block default">
|
||||
<div class="quarto-title">
|
||||
<h1 class="title">Recepies</h1>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="quarto-title-meta">
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
<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>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="quarto-listing quarto-listing-container-grid" id="listing-listing">
|
||||
<div class="list grid quarto-listing-cols-3">
|
||||
<div class="g-col-1" data-index="0" data-categories="Kage,Bagværk,Børnene med!,Dansk" data-listing-date-sort="1682632800000" data-listing-file-modified-sort="1682668192200" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1">
|
||||
<a href="./food/banankage.html" class="quarto-grid-link">
|
||||
<div class="quarto-grid-item card h-100 card-left">
|
||||
<div class="listing-item-img-placeholder card-img-top" style="height: 150px;"> </div>
|
||||
<div class="card-body post-contents">
|
||||
<h5 class="no-anchor card-title listing-title">
|
||||
Super nem banankage
|
||||
</h5>
|
||||
<div class="listing-categories">
|
||||
<div class="listing-category" onclick="window.quartoListingCategory('Kage'); return false;">
|
||||
Kage
|
||||
</div>
|
||||
<div class="listing-category" onclick="window.quartoListingCategory('Bagværk'); return false;">
|
||||
Bagværk
|
||||
</div>
|
||||
<div class="listing-category" onclick="window.quartoListingCategory('Børnene med!'); return false;">
|
||||
Børnene med!
|
||||
</div>
|
||||
<div class="listing-category" onclick="window.quartoListingCategory('Dansk'); return false;">
|
||||
Dansk
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-text listing-description">
|
||||
Der er aldrig nok banan i banankage. Sådan er det ikke her!
|
||||
</div>
|
||||
<div class="card-attribution card-text-small justify">
|
||||
<div class="listing-author">
|
||||
|
||||
</div>
|
||||
<div class="listing-date">
|
||||
Apr 28, 2023
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-no-matching d-none">
|
||||
No matching items
|
||||
</div>
|
||||
</div></main> <!-- /main -->
|
||||
<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 -->
|
||||
<footer class="footer">
|
||||
<div class="nav-footer">
|
||||
<div class="nav-footer-left">
|
||||
|
||||
</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">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
</body></html>
|
436
_site/food/banankage.html
Normal file
@ -0,0 +1,436 @@
|
||||
<!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.340">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
|
||||
<meta name="dcterms.date" content="2023-04-28">
|
||||
<meta name="description" content="Der er aldrig nok banan i banankage. Sådan er det ikke her!">
|
||||
|
||||
<title>Andreas - Super nem banankage</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="../site_libs/quarto-nav/quarto-nav.js"></script>
|
||||
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
|
||||
<script src="../site_libs/clipboard/clipboard.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
|
||||
<script src="../site_libs/quarto-search/fuse.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/quarto-search.js"></script>
|
||||
<meta name="quarto:offset" content="../">
|
||||
<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/tippy.umd.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/quarto-syntax-highlighting-dark.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
||||
<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.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="dark">
|
||||
<script id="quarto-search-options" type="application/json">{
|
||||
"location": "navbar",
|
||||
"copy-button": false,
|
||||
"collapse-after": 3,
|
||||
"panel-placement": "end",
|
||||
"type": "overlay",
|
||||
"limit": 20,
|
||||
"language": {
|
||||
"search-no-results-text": "No results",
|
||||
"search-matching-documents-text": "matching documents",
|
||||
"search-copy-link-title": "Copy link to search",
|
||||
"search-hide-matches-text": "Hide additional matches",
|
||||
"search-more-match-text": "more match in this document",
|
||||
"search-more-matches-text": "more matches in this document",
|
||||
"search-clear-button-title": "Clear",
|
||||
"search-detached-cancel-button-title": "Cancel",
|
||||
"search-submit-button-title": "Submit"
|
||||
}
|
||||
}</script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body class="nav-fixed">
|
||||
|
||||
<div id="quarto-search-results"></div>
|
||||
<header id="quarto-header" class="headroom fixed-top">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark ">
|
||||
<div class="navbar-container container-fluid">
|
||||
<div class="navbar-brand-container">
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<span class="navbar-title">Andreas</span>
|
||||
</a>
|
||||
</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(); }">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../index.html" rel="" target="">
|
||||
<span class="menu-text">Home</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 class="nav-item">
|
||||
<a class="nav-link" href="../about.html" rel="" target="">
|
||||
<span class="menu-text">About</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
<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> <!-- /container-fluid -->
|
||||
</nav>
|
||||
</header>
|
||||
<!-- content -->
|
||||
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
||||
<!-- sidebar -->
|
||||
<!-- margin-sidebar -->
|
||||
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
||||
<nav id="TOC" role="doc-toc" class="toc-active">
|
||||
<h2 id="toc-title">On this page</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="#noter" id="toc-noter" class="nav-link active" data-scroll-target="#noter">Noter</a></li>
|
||||
<li><a href="#ingredienser" id="toc-ingredienser" class="nav-link" data-scroll-target="#ingredienser">Ingredienser</a></li>
|
||||
<li><a href="#sådan-gør-du" id="toc-sådan-gør-du" class="nav-link" data-scroll-target="#sådan-gør-du">Sådan gør du</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<!-- main -->
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
<header id="title-block-header" class="quarto-title-block default">
|
||||
<div class="quarto-title">
|
||||
<h1 class="title">Super nem banankage</h1>
|
||||
<div class="quarto-categories">
|
||||
<div class="quarto-category">Kage</div>
|
||||
<div class="quarto-category">Bagværk</div>
|
||||
<div class="quarto-category">Børnene med!</div>
|
||||
<div class="quarto-category">Dansk</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="description">
|
||||
Der er aldrig nok banan i banankage. Sådan er det ikke her!
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="quarto-title-meta">
|
||||
|
||||
|
||||
<div>
|
||||
<div class="quarto-title-meta-heading">Published</div>
|
||||
<div class="quarto-title-meta-contents">
|
||||
<p class="date">April 28, 2023</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
<section id="noter" class="level2">
|
||||
<h2 class="anchored" data-anchor-id="noter">Noter</h2>
|
||||
<p>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.</p>
|
||||
</section>
|
||||
<section id="ingredienser" class="level2">
|
||||
<h2 class="anchored" data-anchor-id="ingredienser">Ingredienser</h2>
|
||||
<ul>
|
||||
<li><p>3-5 godt modne bananer - moses</p></li>
|
||||
<li><p>200-250 ml. sukker</p></li>
|
||||
<li><p>2 æg - moses m. gaffel</p></li>
|
||||
<li><p>1 tsk. natron</p></li>
|
||||
<li><p>5 dl. mel</p></li>
|
||||
<li><p>2 dI. hakkede valnødder</p></li>
|
||||
<li><p>1½ dl. olie/margarine</p></li>
|
||||
<li><p>1 tsk. vanillesukker</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="sådan-gør-du" class="level2">
|
||||
<h2 class="anchored" data-anchor-id="sådan-gør-du">Sådan gør du</h2>
|
||||
<p>Alt blandes</p>
|
||||
<p>Formen smøres og drysses med rasp el. mel</p>
|
||||
<p>Bages ca. 45 min. ved 175 grader</p>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
</main> <!-- /main -->
|
||||
<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 -->
|
||||
<footer class="footer">
|
||||
<div class="nav-footer">
|
||||
<div class="nav-footer-left">
|
||||
|
||||
</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">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
</body></html>
|
269
_site/food/elses vafler.html
Normal file
@ -0,0 +1,269 @@
|
||||
<!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.2.335">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
|
||||
|
||||
<title>Andreas – elses-vafler</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 -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
|
||||
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
|
||||
<script src="../site_libs/clipboard/clipboard.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
|
||||
<script src="../site_libs/quarto-search/fuse.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/quarto-search.js"></script>
|
||||
<meta name="quarto:offset" content="../">
|
||||
<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/tippy.umd.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/quarto-syntax-highlighting-dark.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
||||
<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.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="dark">
|
||||
<script id="quarto-search-options" type="application/json">{
|
||||
"location": "navbar",
|
||||
"copy-button": false,
|
||||
"collapse-after": 3,
|
||||
"panel-placement": "end",
|
||||
"type": "overlay",
|
||||
"limit": 20,
|
||||
"language": {
|
||||
"search-no-results-text": "No results",
|
||||
"search-matching-documents-text": "matching documents",
|
||||
"search-copy-link-title": "Copy link to search",
|
||||
"search-hide-matches-text": "Hide additional matches",
|
||||
"search-more-match-text": "more match in this document",
|
||||
"search-more-matches-text": "more matches in this document",
|
||||
"search-clear-button-title": "Clear",
|
||||
"search-detached-cancel-button-title": "Cancel",
|
||||
"search-submit-button-title": "Submit"
|
||||
}
|
||||
}</script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../styles.css">
|
||||
</head>
|
||||
|
||||
<body class="nav-fixed">
|
||||
|
||||
<div id="quarto-search-results"></div>
|
||||
<header id="quarto-header" class="headroom fixed-top">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark ">
|
||||
<div class="navbar-container container-fluid">
|
||||
<div class="navbar-brand-container">
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<span class="navbar-title">Andreas</span>
|
||||
</a>
|
||||
</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(); }">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../index.html">
|
||||
<span class="menu-text">Home</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../food.html">
|
||||
<span class="menu-text">Recepies</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../about.html">
|
||||
<span class="menu-text">About</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="quarto-search" class="" title="Search"></div>
|
||||
</div> <!-- /navcollapse -->
|
||||
</div> <!-- /container-fluid -->
|
||||
</nav>
|
||||
</header>
|
||||
<!-- content -->
|
||||
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
||||
<!-- sidebar -->
|
||||
<!-- margin-sidebar -->
|
||||
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
||||
<nav id="TOC" role="doc-toc" class="toc-active">
|
||||
<h2 id="toc-title">On this page</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="#elses-vafler" id="toc-elses-vafler" class="nav-link active" data-scroll-target="#elses-vafler">Elses vafler</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<!-- main -->
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
|
||||
|
||||
<section id="elses-vafler" class="level1">
|
||||
<h1>Elses vafler</h1>
|
||||
<div class="quarto-figure quarto-figure-center">
|
||||
<figure class="figure">
|
||||
<p><img src="images/elses vafler.jpeg" class="img-fluid figure-img"></p>
|
||||
<p></p><figcaption class="figure-caption">elses vafler</figcaption><p></p>
|
||||
</figure>
|
||||
</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>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
</main> <!-- /main -->
|
||||
<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 clipboard = new window.ClipboardJS('.code-copy-button', {
|
||||
target: function(trigger) {
|
||||
return trigger.previousElementSibling;
|
||||
}
|
||||
});
|
||||
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;
|
||||
});
|
||||
}
|
||||
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>
|
268
_site/food/fladmast hane med nye hvidlog.html
Normal file
@ -0,0 +1,268 @@
|
||||
<!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.2.335">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
|
||||
|
||||
<title>Andreas – fladmast-hane-med-nye-hvidlog</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 -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
|
||||
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
|
||||
<script src="../site_libs/clipboard/clipboard.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
|
||||
<script src="../site_libs/quarto-search/fuse.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/quarto-search.js"></script>
|
||||
<meta name="quarto:offset" content="../">
|
||||
<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/tippy.umd.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/quarto-syntax-highlighting-dark.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
||||
<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.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="dark">
|
||||
<script id="quarto-search-options" type="application/json">{
|
||||
"location": "navbar",
|
||||
"copy-button": false,
|
||||
"collapse-after": 3,
|
||||
"panel-placement": "end",
|
||||
"type": "overlay",
|
||||
"limit": 20,
|
||||
"language": {
|
||||
"search-no-results-text": "No results",
|
||||
"search-matching-documents-text": "matching documents",
|
||||
"search-copy-link-title": "Copy link to search",
|
||||
"search-hide-matches-text": "Hide additional matches",
|
||||
"search-more-match-text": "more match in this document",
|
||||
"search-more-matches-text": "more matches in this document",
|
||||
"search-clear-button-title": "Clear",
|
||||
"search-detached-cancel-button-title": "Cancel",
|
||||
"search-submit-button-title": "Submit"
|
||||
}
|
||||
}</script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../styles.css">
|
||||
</head>
|
||||
|
||||
<body class="nav-fixed">
|
||||
|
||||
<div id="quarto-search-results"></div>
|
||||
<header id="quarto-header" class="headroom fixed-top">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark ">
|
||||
<div class="navbar-container container-fluid">
|
||||
<div class="navbar-brand-container">
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<span class="navbar-title">Andreas</span>
|
||||
</a>
|
||||
</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(); }">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../index.html">
|
||||
<span class="menu-text">Home</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../food.html">
|
||||
<span class="menu-text">Recepies</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../about.html">
|
||||
<span class="menu-text">About</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="quarto-search" class="" title="Search"></div>
|
||||
</div> <!-- /navcollapse -->
|
||||
</div> <!-- /container-fluid -->
|
||||
</nav>
|
||||
</header>
|
||||
<!-- content -->
|
||||
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
||||
<!-- sidebar -->
|
||||
<!-- margin-sidebar -->
|
||||
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
||||
|
||||
</div>
|
||||
<!-- main -->
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
|
||||
|
||||
<div class="quarto-figure quarto-figure-center">
|
||||
<figure class="figure">
|
||||
<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>
|
||||
</figure>
|
||||
</div>
|
||||
<p>Fladmast hane med nye hvidlog</p>
|
||||
<p>Fladmasning 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.</p>
|
||||
<p>Til 6 personer</p>
|
||||
<p>En stor hane eller kylling 1 ½ kg. Kartofler 3 hele hvidløg 1 citron salt og peber olivenolie</p>
|
||||
<p>Læ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.</p>
|
||||
<p>Bag ved 200° - til hanen er er mør og sprød - ca. 1 time.</p>
|
||||
<p>Der skal rumses lidt rundt i kartoflerne undervejs så de ikke branker.</p>
|
||||
<p>Når hanen tages ud af ovnen, presses citronen ud over kartoflerne.</p>
|
||||
<p>Spis hvidløgene som en creme til at smøre på kød og grønsager.</p>
|
||||
|
||||
|
||||
|
||||
</main> <!-- /main -->
|
||||
<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 clipboard = new window.ClipboardJS('.code-copy-button', {
|
||||
target: function(trigger) {
|
||||
return trigger.previousElementSibling;
|
||||
}
|
||||
});
|
||||
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;
|
||||
});
|
||||
}
|
||||
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>
|
265
_site/food/formbrød.html
Normal file
@ -0,0 +1,265 @@
|
||||
<!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.2.335">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
|
||||
|
||||
<title>Andreas – formbrød</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 -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
|
||||
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
|
||||
<script src="../site_libs/clipboard/clipboard.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
|
||||
<script src="../site_libs/quarto-search/fuse.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/quarto-search.js"></script>
|
||||
<meta name="quarto:offset" content="../">
|
||||
<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/tippy.umd.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/quarto-syntax-highlighting-dark.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
||||
<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.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="dark">
|
||||
<script id="quarto-search-options" type="application/json">{
|
||||
"location": "navbar",
|
||||
"copy-button": false,
|
||||
"collapse-after": 3,
|
||||
"panel-placement": "end",
|
||||
"type": "overlay",
|
||||
"limit": 20,
|
||||
"language": {
|
||||
"search-no-results-text": "No results",
|
||||
"search-matching-documents-text": "matching documents",
|
||||
"search-copy-link-title": "Copy link to search",
|
||||
"search-hide-matches-text": "Hide additional matches",
|
||||
"search-more-match-text": "more match in this document",
|
||||
"search-more-matches-text": "more matches in this document",
|
||||
"search-clear-button-title": "Clear",
|
||||
"search-detached-cancel-button-title": "Cancel",
|
||||
"search-submit-button-title": "Submit"
|
||||
}
|
||||
}</script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../styles.css">
|
||||
</head>
|
||||
|
||||
<body class="nav-fixed">
|
||||
|
||||
<div id="quarto-search-results"></div>
|
||||
<header id="quarto-header" class="headroom fixed-top">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark ">
|
||||
<div class="navbar-container container-fluid">
|
||||
<div class="navbar-brand-container">
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<span class="navbar-title">Andreas</span>
|
||||
</a>
|
||||
</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(); }">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../index.html">
|
||||
<span class="menu-text">Home</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../food.html">
|
||||
<span class="menu-text">Recepies</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../about.html">
|
||||
<span class="menu-text">About</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="quarto-search" class="" title="Search"></div>
|
||||
</div> <!-- /navcollapse -->
|
||||
</div> <!-- /container-fluid -->
|
||||
</nav>
|
||||
</header>
|
||||
<!-- content -->
|
||||
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
||||
<!-- sidebar -->
|
||||
<!-- margin-sidebar -->
|
||||
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
||||
<nav id="TOC" role="doc-toc" class="toc-active">
|
||||
<h2 id="toc-title">On this page</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="#formbrød" id="toc-formbrød" class="nav-link active" data-scroll-target="#formbrød">Formbrød</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<!-- main -->
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
|
||||
|
||||
<section id="formbrød" class="level2">
|
||||
<h2 class="anchored" data-anchor-id="formbrød">Formbrød</h2>
|
||||
<p>Rest surdej (150 g) 7 dl vand 2 håndfulde havregryn 25 g salt 10 g gær 1 håndfuld hørfrø Mel</p>
|
||||
<p>Bagt 35 min ved 200gr.</p>
|
||||
<p>Lidt surt. Ok med mindre surdej, eller flere brød.</p>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
</main> <!-- /main -->
|
||||
<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 clipboard = new window.ClipboardJS('.code-copy-button', {
|
||||
target: function(trigger) {
|
||||
return trigger.previousElementSibling;
|
||||
}
|
||||
});
|
||||
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;
|
||||
});
|
||||
}
|
||||
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>
|
275
_site/food/groft hvede-surdejsbrød.html
Normal file
@ -0,0 +1,275 @@
|
||||
<!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.2.335">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
|
||||
|
||||
<title>Andreas – groft-hvede-surdejsbrød</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 -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
|
||||
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
|
||||
<script src="../site_libs/clipboard/clipboard.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
|
||||
<script src="../site_libs/quarto-search/fuse.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/quarto-search.js"></script>
|
||||
<meta name="quarto:offset" content="../">
|
||||
<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/tippy.umd.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/quarto-syntax-highlighting-dark.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
||||
<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.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="dark">
|
||||
<script id="quarto-search-options" type="application/json">{
|
||||
"location": "navbar",
|
||||
"copy-button": false,
|
||||
"collapse-after": 3,
|
||||
"panel-placement": "end",
|
||||
"type": "overlay",
|
||||
"limit": 20,
|
||||
"language": {
|
||||
"search-no-results-text": "No results",
|
||||
"search-matching-documents-text": "matching documents",
|
||||
"search-copy-link-title": "Copy link to search",
|
||||
"search-hide-matches-text": "Hide additional matches",
|
||||
"search-more-match-text": "more match in this document",
|
||||
"search-more-matches-text": "more matches in this document",
|
||||
"search-clear-button-title": "Clear",
|
||||
"search-detached-cancel-button-title": "Cancel",
|
||||
"search-submit-button-title": "Submit"
|
||||
}
|
||||
}</script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../styles.css">
|
||||
</head>
|
||||
|
||||
<body class="nav-fixed">
|
||||
|
||||
<div id="quarto-search-results"></div>
|
||||
<header id="quarto-header" class="headroom fixed-top">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark ">
|
||||
<div class="navbar-container container-fluid">
|
||||
<div class="navbar-brand-container">
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<span class="navbar-title">Andreas</span>
|
||||
</a>
|
||||
</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(); }">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../index.html">
|
||||
<span class="menu-text">Home</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../food.html">
|
||||
<span class="menu-text">Recepies</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../about.html">
|
||||
<span class="menu-text">About</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="quarto-search" class="" title="Search"></div>
|
||||
</div> <!-- /navcollapse -->
|
||||
</div> <!-- /container-fluid -->
|
||||
</nav>
|
||||
</header>
|
||||
<!-- content -->
|
||||
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
||||
<!-- sidebar -->
|
||||
<!-- margin-sidebar -->
|
||||
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
||||
|
||||
</div>
|
||||
<!-- main -->
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
|
||||
|
||||
<p>Groft hvede-surdejsbrød_ <em> </em> _ <em>https://www.dr.dk/mad/opskrift/groft-hvede-surdejsbrod</em></p>
|
||||
<p><strong>Ingredienser</strong></p>
|
||||
<ul>
|
||||
<li>5 g gær (økologisk gær anbefales pga. bedre hæve-effekt)</li>
|
||||
<li>6 dl koldt vand</li>
|
||||
<li>1,5 dl hvedesurdej</li>
|
||||
<li>150 g fuldkornshvedemel (f.eks. ølandshvede, spelt eller emmermel) (300)</li>
|
||||
<li>750 g hvedemel (600)</li>
|
||||
<li>20 g havsalt</li>
|
||||
<li>2 spsk. olie</li>
|
||||
</ul>
|
||||
<p>Særdeles velegnet til boller også. Deles i 16-20 stykker og bages 13-15 min ved 250gr</p>
|
||||
<p><strong>Dag 1</strong></p>
|
||||
<ol type="1">
|
||||
<li>Rør gæren ud i det kolde vand i skålen til røremaskinen. </li>
|
||||
<li>Tilsæt resten af ingredienserne og ælt dejen godt igennem på røremaskinen i ca. 10 minutter. </li>
|
||||
<li>Hvis du rører dejen i hånden, skal du røre i lidt længere tid. </li>
|
||||
<li>Dejen skal være så smidig, at den slipper skålen eller bordpladen. </li>
|
||||
<li>Smør olie på indersiden af en skål og kom dejen i. </li>
|
||||
<li>Dæk med film og lad dejen koldhæve i køleskabet natten over. </li>
|
||||
</ol>
|
||||
<p><strong>Dag 2</strong> 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.</p>
|
||||
|
||||
|
||||
|
||||
</main> <!-- /main -->
|
||||
<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 clipboard = new window.ClipboardJS('.code-copy-button', {
|
||||
target: function(trigger) {
|
||||
return trigger.previousElementSibling;
|
||||
}
|
||||
});
|
||||
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;
|
||||
});
|
||||
}
|
||||
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>
|
BIN
_site/food/images/elses vafler.jpeg
Normal file
BIN
_site/food/images/fladmast hane med nye hvidlog.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
468
_site/health-data.html
Normal file
@ -0,0 +1,468 @@
|
||||
<!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.340">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
|
||||
|
||||
<title>Andreas - Health Data</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="site_libs/quarto-nav/quarto-nav.js"></script>
|
||||
<script src="site_libs/quarto-nav/headroom.min.js"></script>
|
||||
<script src="site_libs/clipboard/clipboard.min.js"></script>
|
||||
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
|
||||
<script src="site_libs/quarto-search/fuse.min.js"></script>
|
||||
<script src="site_libs/quarto-search/quarto-search.js"></script>
|
||||
<meta name="quarto:offset" content="./">
|
||||
<script src="site_libs/quarto-listing/list.min.js"></script>
|
||||
<script src="site_libs/quarto-listing/quarto-listing.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/tippy.umd.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/quarto-syntax-highlighting-dark.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
||||
<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.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="dark">
|
||||
<script id="quarto-search-options" type="application/json">{
|
||||
"location": "navbar",
|
||||
"copy-button": false,
|
||||
"collapse-after": 3,
|
||||
"panel-placement": "end",
|
||||
"type": "overlay",
|
||||
"limit": 20,
|
||||
"language": {
|
||||
"search-no-results-text": "No results",
|
||||
"search-matching-documents-text": "matching documents",
|
||||
"search-copy-link-title": "Copy link to search",
|
||||
"search-hide-matches-text": "Hide additional matches",
|
||||
"search-more-match-text": "more match in this document",
|
||||
"search-more-matches-text": "more matches in this document",
|
||||
"search-clear-button-title": "Clear",
|
||||
"search-detached-cancel-button-title": "Cancel",
|
||||
"search-submit-button-title": "Submit"
|
||||
}
|
||||
}</script>
|
||||
<script>
|
||||
|
||||
window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
const listingTargetEl = window.document.querySelector('#listing-listing .list');
|
||||
if (!listingTargetEl) {
|
||||
// No listing discovered, do not attach.
|
||||
return;
|
||||
}
|
||||
|
||||
const options = {
|
||||
valueNames: ['listing-title','listing-author','listing-date','listing-image','listing-description','listing-categories',{ data: ['index'] },{ data: ['categories'] },{ data: ['listing-date-sort'] },{ data: ['listing-file-modified-sort'] }],
|
||||
|
||||
searchColumns: ["listing-title","listing-author","listing-date","listing-image","listing-description","listing-categories"],
|
||||
};
|
||||
|
||||
window['quarto-listings'] = window['quarto-listings'] || {};
|
||||
window['quarto-listings']['listing-listing'] = new List('listing-listing', options);
|
||||
|
||||
if (window['quarto-listing-loaded']) {
|
||||
window['quarto-listing-loaded']();
|
||||
}
|
||||
});
|
||||
|
||||
window.addEventListener('hashchange',() => {
|
||||
if (window['quarto-listing-loaded']) {
|
||||
window['quarto-listing-loaded']();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="nav-fixed">
|
||||
|
||||
<div id="quarto-search-results"></div>
|
||||
<header id="quarto-header" class="headroom fixed-top">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark ">
|
||||
<div class="navbar-container container-fluid">
|
||||
<div class="navbar-brand-container">
|
||||
<a class="navbar-brand" href="./index.html">
|
||||
<span class="navbar-title">Andreas</span>
|
||||
</a>
|
||||
</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(); }">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./index.html" rel="" target="">
|
||||
<span class="menu-text">Home</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 class="nav-item">
|
||||
<a class="nav-link" href="./about.html" rel="" target="">
|
||||
<span class="menu-text">About</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
<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> <!-- /container-fluid -->
|
||||
</nav>
|
||||
</header>
|
||||
<!-- content -->
|
||||
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
||||
<!-- 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>
|
||||
<!-- main -->
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
<header id="title-block-header" class="quarto-title-block default">
|
||||
<div class="quarto-title">
|
||||
<h1 class="title">Health Data</h1>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="quarto-title-meta">
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
<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">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>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="quarto-listing quarto-listing-container-grid" id="listing-listing">
|
||||
<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">
|
||||
<a href="./health_data/ancle.html" class="quarto-grid-link">
|
||||
<div class="quarto-grid-item card h-100 card-left">
|
||||
<div class="listing-item-img-placeholder card-img-top" style="height: 150px;"> </div>
|
||||
<div class="card-body post-contents">
|
||||
<h5 class="no-anchor card-title listing-title">
|
||||
Project: Foot database
|
||||
</h5>
|
||||
<div class="listing-categories">
|
||||
<div class="listing-category" onclick="window.quartoListingCategory('REDDCap'); return false;">
|
||||
REDDCap
|
||||
</div>
|
||||
<div class="listing-category" onclick="window.quartoListingCategory('Project'); return false;">
|
||||
Project
|
||||
</div>
|
||||
<div class="listing-category" onclick="window.quartoListingCategory('R'); return false;">
|
||||
R
|
||||
</div>
|
||||
<div class="listing-category" onclick="window.quartoListingCategory('Consultant'); return false;">
|
||||
Consultant
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-text listing-description">
|
||||
Comprehensive data and data base migration to continue data collection.
|
||||
</div>
|
||||
<div class="card-attribution card-text-small justify">
|
||||
<div class="listing-author">
|
||||
|
||||
</div>
|
||||
<div class="listing-date">
|
||||
Apr 28, 2023
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-no-matching d-none">
|
||||
No matching items
|
||||
</div>
|
||||
</div></main> <!-- /main -->
|
||||
<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 -->
|
||||
<footer class="footer">
|
||||
<div class="nav-footer">
|
||||
<div class="nav-footer-left">
|
||||
|
||||
</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">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
</body></html>
|
435
_site/health_data/ancle.html
Normal file
@ -0,0 +1,435 @@
|
||||
<!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.340">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
|
||||
<meta name="dcterms.date" content="2023-04-28">
|
||||
<meta name="description" content="Comprehensive data and data base migration to continue data collection.">
|
||||
|
||||
<title>Andreas - Project: Foot database</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="../site_libs/quarto-nav/quarto-nav.js"></script>
|
||||
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
|
||||
<script src="../site_libs/clipboard/clipboard.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
|
||||
<script src="../site_libs/quarto-search/fuse.min.js"></script>
|
||||
<script src="../site_libs/quarto-search/quarto-search.js"></script>
|
||||
<meta name="quarto:offset" content="../">
|
||||
<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/tippy.umd.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/quarto-syntax-highlighting-dark.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
||||
<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.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="dark">
|
||||
<script id="quarto-search-options" type="application/json">{
|
||||
"location": "navbar",
|
||||
"copy-button": false,
|
||||
"collapse-after": 3,
|
||||
"panel-placement": "end",
|
||||
"type": "overlay",
|
||||
"limit": 20,
|
||||
"language": {
|
||||
"search-no-results-text": "No results",
|
||||
"search-matching-documents-text": "matching documents",
|
||||
"search-copy-link-title": "Copy link to search",
|
||||
"search-hide-matches-text": "Hide additional matches",
|
||||
"search-more-match-text": "more match in this document",
|
||||
"search-more-matches-text": "more matches in this document",
|
||||
"search-clear-button-title": "Clear",
|
||||
"search-detached-cancel-button-title": "Cancel",
|
||||
"search-submit-button-title": "Submit"
|
||||
}
|
||||
}</script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body class="nav-fixed">
|
||||
|
||||
<div id="quarto-search-results"></div>
|
||||
<header id="quarto-header" class="headroom fixed-top">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark ">
|
||||
<div class="navbar-container container-fluid">
|
||||
<div class="navbar-brand-container">
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<span class="navbar-title">Andreas</span>
|
||||
</a>
|
||||
</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(); }">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../index.html" rel="" target="">
|
||||
<span class="menu-text">Home</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 class="nav-item">
|
||||
<a class="nav-link" href="../about.html" rel="" target="">
|
||||
<span class="menu-text">About</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
<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> <!-- /container-fluid -->
|
||||
</nav>
|
||||
</header>
|
||||
<!-- content -->
|
||||
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
||||
<!-- sidebar -->
|
||||
<!-- margin-sidebar -->
|
||||
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
||||
<nav id="TOC" role="doc-toc" class="toc-active">
|
||||
<h2 id="toc-title">On this page</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="#background" id="toc-background" class="nav-link active" data-scroll-target="#background">Background</a></li>
|
||||
<li><a href="#database" id="toc-database" class="nav-link" data-scroll-target="#database">Database</a></li>
|
||||
<li><a href="#coding" id="toc-coding" class="nav-link" data-scroll-target="#coding">Coding</a></li>
|
||||
<li><a href="#extend-of-the-work" id="toc-extend-of-the-work" class="nav-link" data-scroll-target="#extend-of-the-work">Extend of the work</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<!-- main -->
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
<header id="title-block-header" class="quarto-title-block default">
|
||||
<div class="quarto-title">
|
||||
<h1 class="title">Project: Foot database</h1>
|
||||
<div class="quarto-categories">
|
||||
<div class="quarto-category">REDDCap</div>
|
||||
<div class="quarto-category">Project</div>
|
||||
<div class="quarto-category">R</div>
|
||||
<div class="quarto-category">Consultant</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="description">
|
||||
Comprehensive data and data base migration to continue data collection.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="quarto-title-meta">
|
||||
|
||||
|
||||
<div>
|
||||
<div class="quarto-title-meta-heading">Published</div>
|
||||
<div class="quarto-title-meta-contents">
|
||||
<p class="date">April 28, 2023</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
<section id="background" class="level2">
|
||||
<h2 class="anchored" data-anchor-id="background">Background</h2>
|
||||
<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>
|
||||
</section>
|
||||
<section id="database" class="level2">
|
||||
<h2 class="anchored" data-anchor-id="database">Database</h2>
|
||||
<p>Here are a few characteristics:</p>
|
||||
<ul>
|
||||
<li><p>Around 3000 entries</p></li>
|
||||
<li><p>5 collection instruments, 4 of them were to be used as repeatable instruments.</p></li>
|
||||
<li><p>80 variables</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="coding" class="level2">
|
||||
<h2 class="anchored" data-anchor-id="coding">Coding</h2>
|
||||
<p>I have collected my scripts in a repository, which will be made public when I have finished the work.</p>
|
||||
</section>
|
||||
<section id="extend-of-the-work" class="level2">
|
||||
<h2 class="anchored" data-anchor-id="extend-of-the-work">Extend of the work</h2>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
</main> <!-- /main -->
|
||||
<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 -->
|
||||
<footer class="footer">
|
||||
<div class="nav-footer">
|
||||
<div class="nav-footer-left">
|
||||
|
||||
</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">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
</body></html>
|
214
_site/index.html
@ -2,12 +2,12 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
<title>web - Andreas Gammelgaard Damsbo</title>
|
||||
<title>Andreas - Andreas Gammelgaard Damsbo</title>
|
||||
<style>
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
@ -17,7 +17,7 @@ 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 -1.6em;
|
||||
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
@ -33,12 +33,11 @@ ul.task-list li input[type="checkbox"] {
|
||||
<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/tippy.umd.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/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>
|
||||
<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">{
|
||||
"location": "navbar",
|
||||
"copy-button": false,
|
||||
@ -60,10 +59,9 @@ ul.task-list li input[type="checkbox"] {
|
||||
}</script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
|
||||
<body class="nav-fixed">
|
||||
<body class="nav-fixed fullcontent">
|
||||
|
||||
<div id="quarto-search-results"></div>
|
||||
<header id="quarto-header" class="headroom fixed-top">
|
||||
@ -71,24 +69,36 @@ ul.task-list li input[type="checkbox"] {
|
||||
<div class="navbar-container container-fluid">
|
||||
<div class="navbar-brand-container">
|
||||
<a class="navbar-brand" href="./index.html">
|
||||
<span class="navbar-title">web</span>
|
||||
<span class="navbar-title">Andreas</span>
|
||||
</a>
|
||||
</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(); }">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./index.html" aria-current="page">
|
||||
<a class="nav-link active" href="./index.html" rel="" target="" aria-current="page">
|
||||
<span class="menu-text">Home</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./about.html">
|
||||
<a class="nav-link" href="./food.html" rel="" target="">
|
||||
<span class="menu-text">Recepies</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./about.html" rel="" target="">
|
||||
<span class="menu-text">About</span></a>
|
||||
</li>
|
||||
</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> <!-- /container-fluid -->
|
||||
</nav>
|
||||
@ -97,34 +107,52 @@ ul.task-list li input[type="checkbox"] {
|
||||
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
||||
<!-- sidebar -->
|
||||
<!-- margin-sidebar -->
|
||||
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
||||
|
||||
</div>
|
||||
|
||||
<!-- main -->
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
<header id="title-block-header" class="quarto-title-block default">
|
||||
<div class="quarto-about-solana column-body">
|
||||
<div class="about-entity">
|
||||
<div class="entity-contents">
|
||||
<header id="title-block-header" class="quarto-title-block default">
|
||||
<div class="quarto-title">
|
||||
<h1 class="title">Andreas Gammelgaard Damsbo</h1>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="quarto-title-meta">
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
<p>This is my website.</p>
|
||||
</header> <div class="about-links">
|
||||
<a href="mailto:andreas@gdamsbo.dk" class="about-link" rel="" target="">
|
||||
<i class="bi bi-envelope"></i>
|
||||
<span class="about-link-text">Mail</span>
|
||||
</a>
|
||||
<a href="https://github.com/agdamsbo" class="about-link" rel="" target="">
|
||||
<i class="bi bi-github"></i>
|
||||
<span class="about-link-text">GitHub</span>
|
||||
</a>
|
||||
<a href="https://social.gdamsbo.dk/@andreas" class="about-link" rel="" target="">
|
||||
<i class="bi bi-mastodon"></i>
|
||||
<span class="about-link-text">Mastodon</span>
|
||||
</a>
|
||||
<a href="https://orcid.org/0000-0002-7559-1154" class="about-link" rel="" target="">
|
||||
<i class="bi bi-paperclip"></i>
|
||||
<span class="about-link-text">ORCiD</span>
|
||||
</a>
|
||||
<a href="/docs/cv.pdf" class="about-link" rel="" target="">
|
||||
<i class="bi bi-file-earmark-person"></i>
|
||||
<span class="about-link-text">CV</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="about-contents"><main class="content" id="quarto-document-content">
|
||||
<p>Hi! I am a medical doctor, PhD-student, open source activist and father of two girls.</p>
|
||||
<p>On 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!</p>
|
||||
<p>[This is still very much a work in progress, but these are my intentions]</p>
|
||||
|
||||
|
||||
|
||||
</main> <!-- /main -->
|
||||
</main></div>
|
||||
</div>
|
||||
<img src="docs/images/portrait.png" class="about-image
|
||||
rounded " style="width: 15em;">
|
||||
</div>
|
||||
</div>
|
||||
<!-- /main -->
|
||||
<script id="quarto-html-after-body" type="application/javascript">
|
||||
window.document.addEventListener("DOMContentLoaded", function (event) {
|
||||
const toggleBodyColorMode = (bsSheetEl) => {
|
||||
@ -145,16 +173,23 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
|
||||
}
|
||||
}
|
||||
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', {
|
||||
target: function(trigger) {
|
||||
return trigger.previousElementSibling;
|
||||
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) {
|
||||
@ -219,6 +254,92 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
|
||||
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) {
|
||||
@ -259,6 +380,17 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
|
||||
});
|
||||
</script>
|
||||
</div> <!-- /content -->
|
||||
<footer class="footer">
|
||||
<div class="nav-footer">
|
||||
<div class="nav-footer-left">
|
||||
|
||||
</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">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
|
14
_site/listings.json
Normal file
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"listing": "/food.html",
|
||||
"items": [
|
||||
"/food/banankage.html"
|
||||
]
|
||||
},
|
||||
{
|
||||
"listing": "/health-data.html",
|
||||
"items": [
|
||||
"/health_data/ancle.html"
|
||||
]
|
||||
}
|
||||
]
|
1
_site/robots.txt
Normal file
@ -0,0 +1 @@
|
||||
Sitemap: https://andreas.gdamsbo.dk/sitemap.xml
|
@ -4,7 +4,7 @@
|
||||
"href": "index.html",
|
||||
"title": "Andreas Gammelgaard Damsbo",
|
||||
"section": "",
|
||||
"text": "This is my website."
|
||||
"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",
|
||||
@ -18,6 +18,111 @@
|
||||
"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//RtmpdaIYrQ/filea951a7142b9.yaml"
|
||||
"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",
|
||||
"href": "health_data/ancle.html",
|
||||
"title": "Project: Foot database",
|
||||
"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."
|
||||
},
|
||||
{
|
||||
"objectID": "health_data/ancle.html#background",
|
||||
"href": "health_data/ancle.html#background",
|
||||
"title": "Project: Foot database",
|
||||
"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."
|
||||
},
|
||||
{
|
||||
"objectID": "health_data/ancle.html#database",
|
||||
"href": "health_data/ancle.html#database",
|
||||
"title": "Project: Foot database",
|
||||
"section": "Database",
|
||||
"text": "Database\nHere are a few characteristics:\n\nAround 3000 entries\n5 collection instruments, 4 of them were to be used as repeatable instruments.\n80 variables"
|
||||
},
|
||||
{
|
||||
"objectID": "health_data/ancle.html#coding",
|
||||
"href": "health_data/ancle.html#coding",
|
||||
"title": "Project: Foot database",
|
||||
"section": "Coding",
|
||||
"text": "Coding\nI have collected my scripts in a repository, which will be made public when I have finished the work."
|
||||
},
|
||||
{
|
||||
"objectID": "health_data/ancle.html#extend-of-the-work",
|
||||
"href": "health_data/ancle.html#extend-of-the-work",
|
||||
"title": "Project: Foot database",
|
||||
"section": "Extend of the work",
|
||||
"text": "Extend of the work"
|
||||
},
|
||||
{
|
||||
"objectID": "health-data.html",
|
||||
"href": "health-data.html",
|
||||
"title": "Health Data",
|
||||
"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"
|
||||
}
|
||||
]
|
BIN
_site/site_libs/.DS_Store
vendored
Normal file
316
_site/site_libs/bootstrap/bootstrap-icons.css
vendored
@ -1,7 +1,8 @@
|
||||
@font-face {
|
||||
font-display: block;
|
||||
font-family: "bootstrap-icons";
|
||||
src:
|
||||
url("./bootstrap-icons.woff?524846017b983fc8ded9325d94ed40f3") format("woff");
|
||||
url("./bootstrap-icons.woff?2ab2cbbe07fcebb53bdaa7313bb290f2") format("woff");
|
||||
}
|
||||
|
||||
.bi::before,
|
||||
@ -1702,3 +1703,316 @@ url("./bootstrap-icons.woff?524846017b983fc8ded9325d94ed40f3") format("woff");
|
||||
.bi-filetype-json::before { content: "\f791"; }
|
||||
.bi-filetype-pptx::before { content: "\f792"; }
|
||||
.bi-filetype-xlsx::before { content: "\f793"; }
|
||||
.bi-1-circle-1::before { content: "\f794"; }
|
||||
.bi-1-circle-fill-1::before { content: "\f795"; }
|
||||
.bi-1-circle-fill::before { content: "\f796"; }
|
||||
.bi-1-circle::before { content: "\f797"; }
|
||||
.bi-1-square-fill::before { content: "\f798"; }
|
||||
.bi-1-square::before { content: "\f799"; }
|
||||
.bi-2-circle-1::before { content: "\f79a"; }
|
||||
.bi-2-circle-fill-1::before { content: "\f79b"; }
|
||||
.bi-2-circle-fill::before { content: "\f79c"; }
|
||||
.bi-2-circle::before { content: "\f79d"; }
|
||||
.bi-2-square-fill::before { content: "\f79e"; }
|
||||
.bi-2-square::before { content: "\f79f"; }
|
||||
.bi-3-circle-1::before { content: "\f7a0"; }
|
||||
.bi-3-circle-fill-1::before { content: "\f7a1"; }
|
||||
.bi-3-circle-fill::before { content: "\f7a2"; }
|
||||
.bi-3-circle::before { content: "\f7a3"; }
|
||||
.bi-3-square-fill::before { content: "\f7a4"; }
|
||||
.bi-3-square::before { content: "\f7a5"; }
|
||||
.bi-4-circle-1::before { content: "\f7a6"; }
|
||||
.bi-4-circle-fill-1::before { content: "\f7a7"; }
|
||||
.bi-4-circle-fill::before { content: "\f7a8"; }
|
||||
.bi-4-circle::before { content: "\f7a9"; }
|
||||
.bi-4-square-fill::before { content: "\f7aa"; }
|
||||
.bi-4-square::before { content: "\f7ab"; }
|
||||
.bi-5-circle-1::before { content: "\f7ac"; }
|
||||
.bi-5-circle-fill-1::before { content: "\f7ad"; }
|
||||
.bi-5-circle-fill::before { content: "\f7ae"; }
|
||||
.bi-5-circle::before { content: "\f7af"; }
|
||||
.bi-5-square-fill::before { content: "\f7b0"; }
|
||||
.bi-5-square::before { content: "\f7b1"; }
|
||||
.bi-6-circle-1::before { content: "\f7b2"; }
|
||||
.bi-6-circle-fill-1::before { content: "\f7b3"; }
|
||||
.bi-6-circle-fill::before { content: "\f7b4"; }
|
||||
.bi-6-circle::before { content: "\f7b5"; }
|
||||
.bi-6-square-fill::before { content: "\f7b6"; }
|
||||
.bi-6-square::before { content: "\f7b7"; }
|
||||
.bi-7-circle-1::before { content: "\f7b8"; }
|
||||
.bi-7-circle-fill-1::before { content: "\f7b9"; }
|
||||
.bi-7-circle-fill::before { content: "\f7ba"; }
|
||||
.bi-7-circle::before { content: "\f7bb"; }
|
||||
.bi-7-square-fill::before { content: "\f7bc"; }
|
||||
.bi-7-square::before { content: "\f7bd"; }
|
||||
.bi-8-circle-1::before { content: "\f7be"; }
|
||||
.bi-8-circle-fill-1::before { content: "\f7bf"; }
|
||||
.bi-8-circle-fill::before { content: "\f7c0"; }
|
||||
.bi-8-circle::before { content: "\f7c1"; }
|
||||
.bi-8-square-fill::before { content: "\f7c2"; }
|
||||
.bi-8-square::before { content: "\f7c3"; }
|
||||
.bi-9-circle-1::before { content: "\f7c4"; }
|
||||
.bi-9-circle-fill-1::before { content: "\f7c5"; }
|
||||
.bi-9-circle-fill::before { content: "\f7c6"; }
|
||||
.bi-9-circle::before { content: "\f7c7"; }
|
||||
.bi-9-square-fill::before { content: "\f7c8"; }
|
||||
.bi-9-square::before { content: "\f7c9"; }
|
||||
.bi-airplane-engines-fill::before { content: "\f7ca"; }
|
||||
.bi-airplane-engines::before { content: "\f7cb"; }
|
||||
.bi-airplane-fill::before { content: "\f7cc"; }
|
||||
.bi-airplane::before { content: "\f7cd"; }
|
||||
.bi-alexa::before { content: "\f7ce"; }
|
||||
.bi-alipay::before { content: "\f7cf"; }
|
||||
.bi-android::before { content: "\f7d0"; }
|
||||
.bi-android2::before { content: "\f7d1"; }
|
||||
.bi-box-fill::before { content: "\f7d2"; }
|
||||
.bi-box-seam-fill::before { content: "\f7d3"; }
|
||||
.bi-browser-chrome::before { content: "\f7d4"; }
|
||||
.bi-browser-edge::before { content: "\f7d5"; }
|
||||
.bi-browser-firefox::before { content: "\f7d6"; }
|
||||
.bi-browser-safari::before { content: "\f7d7"; }
|
||||
.bi-c-circle-1::before { content: "\f7d8"; }
|
||||
.bi-c-circle-fill-1::before { content: "\f7d9"; }
|
||||
.bi-c-circle-fill::before { content: "\f7da"; }
|
||||
.bi-c-circle::before { content: "\f7db"; }
|
||||
.bi-c-square-fill::before { content: "\f7dc"; }
|
||||
.bi-c-square::before { content: "\f7dd"; }
|
||||
.bi-capsule-pill::before { content: "\f7de"; }
|
||||
.bi-capsule::before { content: "\f7df"; }
|
||||
.bi-car-front-fill::before { content: "\f7e0"; }
|
||||
.bi-car-front::before { content: "\f7e1"; }
|
||||
.bi-cassette-fill::before { content: "\f7e2"; }
|
||||
.bi-cassette::before { content: "\f7e3"; }
|
||||
.bi-cc-circle-1::before { content: "\f7e4"; }
|
||||
.bi-cc-circle-fill-1::before { content: "\f7e5"; }
|
||||
.bi-cc-circle-fill::before { content: "\f7e6"; }
|
||||
.bi-cc-circle::before { content: "\f7e7"; }
|
||||
.bi-cc-square-fill::before { content: "\f7e8"; }
|
||||
.bi-cc-square::before { content: "\f7e9"; }
|
||||
.bi-cup-hot-fill::before { content: "\f7ea"; }
|
||||
.bi-cup-hot::before { content: "\f7eb"; }
|
||||
.bi-currency-rupee::before { content: "\f7ec"; }
|
||||
.bi-dropbox::before { content: "\f7ed"; }
|
||||
.bi-escape::before { content: "\f7ee"; }
|
||||
.bi-fast-forward-btn-fill::before { content: "\f7ef"; }
|
||||
.bi-fast-forward-btn::before { content: "\f7f0"; }
|
||||
.bi-fast-forward-circle-fill::before { content: "\f7f1"; }
|
||||
.bi-fast-forward-circle::before { content: "\f7f2"; }
|
||||
.bi-fast-forward-fill::before { content: "\f7f3"; }
|
||||
.bi-fast-forward::before { content: "\f7f4"; }
|
||||
.bi-filetype-sql::before { content: "\f7f5"; }
|
||||
.bi-fire::before { content: "\f7f6"; }
|
||||
.bi-google-play::before { content: "\f7f7"; }
|
||||
.bi-h-circle-1::before { content: "\f7f8"; }
|
||||
.bi-h-circle-fill-1::before { content: "\f7f9"; }
|
||||
.bi-h-circle-fill::before { content: "\f7fa"; }
|
||||
.bi-h-circle::before { content: "\f7fb"; }
|
||||
.bi-h-square-fill::before { content: "\f7fc"; }
|
||||
.bi-h-square::before { content: "\f7fd"; }
|
||||
.bi-indent::before { content: "\f7fe"; }
|
||||
.bi-lungs-fill::before { content: "\f7ff"; }
|
||||
.bi-lungs::before { content: "\f800"; }
|
||||
.bi-microsoft-teams::before { content: "\f801"; }
|
||||
.bi-p-circle-1::before { content: "\f802"; }
|
||||
.bi-p-circle-fill-1::before { content: "\f803"; }
|
||||
.bi-p-circle-fill::before { content: "\f804"; }
|
||||
.bi-p-circle::before { content: "\f805"; }
|
||||
.bi-p-square-fill::before { content: "\f806"; }
|
||||
.bi-p-square::before { content: "\f807"; }
|
||||
.bi-pass-fill::before { content: "\f808"; }
|
||||
.bi-pass::before { content: "\f809"; }
|
||||
.bi-prescription::before { content: "\f80a"; }
|
||||
.bi-prescription2::before { content: "\f80b"; }
|
||||
.bi-r-circle-1::before { content: "\f80c"; }
|
||||
.bi-r-circle-fill-1::before { content: "\f80d"; }
|
||||
.bi-r-circle-fill::before { content: "\f80e"; }
|
||||
.bi-r-circle::before { content: "\f80f"; }
|
||||
.bi-r-square-fill::before { content: "\f810"; }
|
||||
.bi-r-square::before { content: "\f811"; }
|
||||
.bi-repeat-1::before { content: "\f812"; }
|
||||
.bi-repeat::before { content: "\f813"; }
|
||||
.bi-rewind-btn-fill::before { content: "\f814"; }
|
||||
.bi-rewind-btn::before { content: "\f815"; }
|
||||
.bi-rewind-circle-fill::before { content: "\f816"; }
|
||||
.bi-rewind-circle::before { content: "\f817"; }
|
||||
.bi-rewind-fill::before { content: "\f818"; }
|
||||
.bi-rewind::before { content: "\f819"; }
|
||||
.bi-train-freight-front-fill::before { content: "\f81a"; }
|
||||
.bi-train-freight-front::before { content: "\f81b"; }
|
||||
.bi-train-front-fill::before { content: "\f81c"; }
|
||||
.bi-train-front::before { content: "\f81d"; }
|
||||
.bi-train-lightrail-front-fill::before { content: "\f81e"; }
|
||||
.bi-train-lightrail-front::before { content: "\f81f"; }
|
||||
.bi-truck-front-fill::before { content: "\f820"; }
|
||||
.bi-truck-front::before { content: "\f821"; }
|
||||
.bi-ubuntu::before { content: "\f822"; }
|
||||
.bi-unindent::before { content: "\f823"; }
|
||||
.bi-unity::before { content: "\f824"; }
|
||||
.bi-universal-access-circle::before { content: "\f825"; }
|
||||
.bi-universal-access::before { content: "\f826"; }
|
||||
.bi-virus::before { content: "\f827"; }
|
||||
.bi-virus2::before { content: "\f828"; }
|
||||
.bi-wechat::before { content: "\f829"; }
|
||||
.bi-yelp::before { content: "\f82a"; }
|
||||
.bi-sign-stop-fill::before { content: "\f82b"; }
|
||||
.bi-sign-stop-lights-fill::before { content: "\f82c"; }
|
||||
.bi-sign-stop-lights::before { content: "\f82d"; }
|
||||
.bi-sign-stop::before { content: "\f82e"; }
|
||||
.bi-sign-turn-left-fill::before { content: "\f82f"; }
|
||||
.bi-sign-turn-left::before { content: "\f830"; }
|
||||
.bi-sign-turn-right-fill::before { content: "\f831"; }
|
||||
.bi-sign-turn-right::before { content: "\f832"; }
|
||||
.bi-sign-turn-slight-left-fill::before { content: "\f833"; }
|
||||
.bi-sign-turn-slight-left::before { content: "\f834"; }
|
||||
.bi-sign-turn-slight-right-fill::before { content: "\f835"; }
|
||||
.bi-sign-turn-slight-right::before { content: "\f836"; }
|
||||
.bi-sign-yield-fill::before { content: "\f837"; }
|
||||
.bi-sign-yield::before { content: "\f838"; }
|
||||
.bi-ev-station-fill::before { content: "\f839"; }
|
||||
.bi-ev-station::before { content: "\f83a"; }
|
||||
.bi-fuel-pump-diesel-fill::before { content: "\f83b"; }
|
||||
.bi-fuel-pump-diesel::before { content: "\f83c"; }
|
||||
.bi-fuel-pump-fill::before { content: "\f83d"; }
|
||||
.bi-fuel-pump::before { content: "\f83e"; }
|
||||
.bi-0-circle-fill::before { content: "\f83f"; }
|
||||
.bi-0-circle::before { content: "\f840"; }
|
||||
.bi-0-square-fill::before { content: "\f841"; }
|
||||
.bi-0-square::before { content: "\f842"; }
|
||||
.bi-rocket-fill::before { content: "\f843"; }
|
||||
.bi-rocket-takeoff-fill::before { content: "\f844"; }
|
||||
.bi-rocket-takeoff::before { content: "\f845"; }
|
||||
.bi-rocket::before { content: "\f846"; }
|
||||
.bi-stripe::before { content: "\f847"; }
|
||||
.bi-subscript::before { content: "\f848"; }
|
||||
.bi-superscript::before { content: "\f849"; }
|
||||
.bi-trello::before { content: "\f84a"; }
|
||||
.bi-envelope-at-fill::before { content: "\f84b"; }
|
||||
.bi-envelope-at::before { content: "\f84c"; }
|
||||
.bi-regex::before { content: "\f84d"; }
|
||||
.bi-text-wrap::before { content: "\f84e"; }
|
||||
.bi-sign-dead-end-fill::before { content: "\f84f"; }
|
||||
.bi-sign-dead-end::before { content: "\f850"; }
|
||||
.bi-sign-do-not-enter-fill::before { content: "\f851"; }
|
||||
.bi-sign-do-not-enter::before { content: "\f852"; }
|
||||
.bi-sign-intersection-fill::before { content: "\f853"; }
|
||||
.bi-sign-intersection-side-fill::before { content: "\f854"; }
|
||||
.bi-sign-intersection-side::before { content: "\f855"; }
|
||||
.bi-sign-intersection-t-fill::before { content: "\f856"; }
|
||||
.bi-sign-intersection-t::before { content: "\f857"; }
|
||||
.bi-sign-intersection-y-fill::before { content: "\f858"; }
|
||||
.bi-sign-intersection-y::before { content: "\f859"; }
|
||||
.bi-sign-intersection::before { content: "\f85a"; }
|
||||
.bi-sign-merge-left-fill::before { content: "\f85b"; }
|
||||
.bi-sign-merge-left::before { content: "\f85c"; }
|
||||
.bi-sign-merge-right-fill::before { content: "\f85d"; }
|
||||
.bi-sign-merge-right::before { content: "\f85e"; }
|
||||
.bi-sign-no-left-turn-fill::before { content: "\f85f"; }
|
||||
.bi-sign-no-left-turn::before { content: "\f860"; }
|
||||
.bi-sign-no-parking-fill::before { content: "\f861"; }
|
||||
.bi-sign-no-parking::before { content: "\f862"; }
|
||||
.bi-sign-no-right-turn-fill::before { content: "\f863"; }
|
||||
.bi-sign-no-right-turn::before { content: "\f864"; }
|
||||
.bi-sign-railroad-fill::before { content: "\f865"; }
|
||||
.bi-sign-railroad::before { content: "\f866"; }
|
||||
.bi-building-add::before { content: "\f867"; }
|
||||
.bi-building-check::before { content: "\f868"; }
|
||||
.bi-building-dash::before { content: "\f869"; }
|
||||
.bi-building-down::before { content: "\f86a"; }
|
||||
.bi-building-exclamation::before { content: "\f86b"; }
|
||||
.bi-building-fill-add::before { content: "\f86c"; }
|
||||
.bi-building-fill-check::before { content: "\f86d"; }
|
||||
.bi-building-fill-dash::before { content: "\f86e"; }
|
||||
.bi-building-fill-down::before { content: "\f86f"; }
|
||||
.bi-building-fill-exclamation::before { content: "\f870"; }
|
||||
.bi-building-fill-gear::before { content: "\f871"; }
|
||||
.bi-building-fill-lock::before { content: "\f872"; }
|
||||
.bi-building-fill-slash::before { content: "\f873"; }
|
||||
.bi-building-fill-up::before { content: "\f874"; }
|
||||
.bi-building-fill-x::before { content: "\f875"; }
|
||||
.bi-building-fill::before { content: "\f876"; }
|
||||
.bi-building-gear::before { content: "\f877"; }
|
||||
.bi-building-lock::before { content: "\f878"; }
|
||||
.bi-building-slash::before { content: "\f879"; }
|
||||
.bi-building-up::before { content: "\f87a"; }
|
||||
.bi-building-x::before { content: "\f87b"; }
|
||||
.bi-buildings-fill::before { content: "\f87c"; }
|
||||
.bi-buildings::before { content: "\f87d"; }
|
||||
.bi-bus-front-fill::before { content: "\f87e"; }
|
||||
.bi-bus-front::before { content: "\f87f"; }
|
||||
.bi-ev-front-fill::before { content: "\f880"; }
|
||||
.bi-ev-front::before { content: "\f881"; }
|
||||
.bi-globe-americas::before { content: "\f882"; }
|
||||
.bi-globe-asia-australia::before { content: "\f883"; }
|
||||
.bi-globe-central-south-asia::before { content: "\f884"; }
|
||||
.bi-globe-europe-africa::before { content: "\f885"; }
|
||||
.bi-house-add-fill::before { content: "\f886"; }
|
||||
.bi-house-add::before { content: "\f887"; }
|
||||
.bi-house-check-fill::before { content: "\f888"; }
|
||||
.bi-house-check::before { content: "\f889"; }
|
||||
.bi-house-dash-fill::before { content: "\f88a"; }
|
||||
.bi-house-dash::before { content: "\f88b"; }
|
||||
.bi-house-down-fill::before { content: "\f88c"; }
|
||||
.bi-house-down::before { content: "\f88d"; }
|
||||
.bi-house-exclamation-fill::before { content: "\f88e"; }
|
||||
.bi-house-exclamation::before { content: "\f88f"; }
|
||||
.bi-house-gear-fill::before { content: "\f890"; }
|
||||
.bi-house-gear::before { content: "\f891"; }
|
||||
.bi-house-lock-fill::before { content: "\f892"; }
|
||||
.bi-house-lock::before { content: "\f893"; }
|
||||
.bi-house-slash-fill::before { content: "\f894"; }
|
||||
.bi-house-slash::before { content: "\f895"; }
|
||||
.bi-house-up-fill::before { content: "\f896"; }
|
||||
.bi-house-up::before { content: "\f897"; }
|
||||
.bi-house-x-fill::before { content: "\f898"; }
|
||||
.bi-house-x::before { content: "\f899"; }
|
||||
.bi-person-add::before { content: "\f89a"; }
|
||||
.bi-person-down::before { content: "\f89b"; }
|
||||
.bi-person-exclamation::before { content: "\f89c"; }
|
||||
.bi-person-fill-add::before { content: "\f89d"; }
|
||||
.bi-person-fill-check::before { content: "\f89e"; }
|
||||
.bi-person-fill-dash::before { content: "\f89f"; }
|
||||
.bi-person-fill-down::before { content: "\f8a0"; }
|
||||
.bi-person-fill-exclamation::before { content: "\f8a1"; }
|
||||
.bi-person-fill-gear::before { content: "\f8a2"; }
|
||||
.bi-person-fill-lock::before { content: "\f8a3"; }
|
||||
.bi-person-fill-slash::before { content: "\f8a4"; }
|
||||
.bi-person-fill-up::before { content: "\f8a5"; }
|
||||
.bi-person-fill-x::before { content: "\f8a6"; }
|
||||
.bi-person-gear::before { content: "\f8a7"; }
|
||||
.bi-person-lock::before { content: "\f8a8"; }
|
||||
.bi-person-slash::before { content: "\f8a9"; }
|
||||
.bi-person-up::before { content: "\f8aa"; }
|
||||
.bi-scooter::before { content: "\f8ab"; }
|
||||
.bi-taxi-front-fill::before { content: "\f8ac"; }
|
||||
.bi-taxi-front::before { content: "\f8ad"; }
|
||||
.bi-amd::before { content: "\f8ae"; }
|
||||
.bi-database-add::before { content: "\f8af"; }
|
||||
.bi-database-check::before { content: "\f8b0"; }
|
||||
.bi-database-dash::before { content: "\f8b1"; }
|
||||
.bi-database-down::before { content: "\f8b2"; }
|
||||
.bi-database-exclamation::before { content: "\f8b3"; }
|
||||
.bi-database-fill-add::before { content: "\f8b4"; }
|
||||
.bi-database-fill-check::before { content: "\f8b5"; }
|
||||
.bi-database-fill-dash::before { content: "\f8b6"; }
|
||||
.bi-database-fill-down::before { content: "\f8b7"; }
|
||||
.bi-database-fill-exclamation::before { content: "\f8b8"; }
|
||||
.bi-database-fill-gear::before { content: "\f8b9"; }
|
||||
.bi-database-fill-lock::before { content: "\f8ba"; }
|
||||
.bi-database-fill-slash::before { content: "\f8bb"; }
|
||||
.bi-database-fill-up::before { content: "\f8bc"; }
|
||||
.bi-database-fill-x::before { content: "\f8bd"; }
|
||||
.bi-database-fill::before { content: "\f8be"; }
|
||||
.bi-database-gear::before { content: "\f8bf"; }
|
||||
.bi-database-lock::before { content: "\f8c0"; }
|
||||
.bi-database-slash::before { content: "\f8c1"; }
|
||||
.bi-database-up::before { content: "\f8c2"; }
|
||||
.bi-database-x::before { content: "\f8c3"; }
|
||||
.bi-database::before { content: "\f8c4"; }
|
||||
.bi-houses-fill::before { content: "\f8c5"; }
|
||||
.bi-houses::before { content: "\f8c6"; }
|
||||
.bi-nvidia::before { content: "\f8c7"; }
|
||||
.bi-person-vcard-fill::before { content: "\f8c8"; }
|
||||
.bi-person-vcard::before { content: "\f8c9"; }
|
||||
.bi-sina-weibo::before { content: "\f8ca"; }
|
||||
.bi-tencent-qq::before { content: "\f8cb"; }
|
||||
.bi-wikipedia::before { content: "\f8cc"; }
|
||||
|
4
_site/site_libs/bootstrap/bootstrap.min.css
vendored
4
_site/site_libs/clipboard/clipboard.min.js
vendored
189
_site/site_libs/quarto-html/quarto-syntax-highlighting-dark.css
Normal file
@ -0,0 +1,189 @@
|
||||
/* quarto syntax highlight colors */
|
||||
:root {
|
||||
--quarto-hl-al-color: #f07178;
|
||||
--quarto-hl-an-color: #d4d0ab;
|
||||
--quarto-hl-at-color: #00e0e0;
|
||||
--quarto-hl-bn-color: #d4d0ab;
|
||||
--quarto-hl-bu-color: #abe338;
|
||||
--quarto-hl-ch-color: #abe338;
|
||||
--quarto-hl-co-color: #f8f8f2;
|
||||
--quarto-hl-cv-color: #ffd700;
|
||||
--quarto-hl-cn-color: #ffd700;
|
||||
--quarto-hl-cf-color: #ffa07a;
|
||||
--quarto-hl-dt-color: #ffa07a;
|
||||
--quarto-hl-dv-color: #d4d0ab;
|
||||
--quarto-hl-do-color: #f8f8f2;
|
||||
--quarto-hl-er-color: #f07178;
|
||||
--quarto-hl-ex-color: #00e0e0;
|
||||
--quarto-hl-fl-color: #d4d0ab;
|
||||
--quarto-hl-fu-color: #ffa07a;
|
||||
--quarto-hl-im-color: #abe338;
|
||||
--quarto-hl-in-color: #d4d0ab;
|
||||
--quarto-hl-kw-color: #ffa07a;
|
||||
--quarto-hl-op-color: #ffa07a;
|
||||
--quarto-hl-ot-color: #00e0e0;
|
||||
--quarto-hl-pp-color: #dcc6e0;
|
||||
--quarto-hl-re-color: #00e0e0;
|
||||
--quarto-hl-sc-color: #abe338;
|
||||
--quarto-hl-ss-color: #abe338;
|
||||
--quarto-hl-st-color: #abe338;
|
||||
--quarto-hl-va-color: #00e0e0;
|
||||
--quarto-hl-vs-color: #abe338;
|
||||
--quarto-hl-wa-color: #dcc6e0;
|
||||
}
|
||||
|
||||
/* other quarto variables */
|
||||
:root {
|
||||
--quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
code span.al {
|
||||
background-color: #2a0f15;
|
||||
font-weight: bold;
|
||||
color: #f07178;
|
||||
}
|
||||
|
||||
code span.an {
|
||||
color: #d4d0ab;
|
||||
}
|
||||
|
||||
code span.at {
|
||||
color: #00e0e0;
|
||||
}
|
||||
|
||||
code span.bn {
|
||||
color: #d4d0ab;
|
||||
}
|
||||
|
||||
code span.bu {
|
||||
color: #abe338;
|
||||
}
|
||||
|
||||
code span.ch {
|
||||
color: #abe338;
|
||||
}
|
||||
|
||||
code span.co {
|
||||
font-style: italic;
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
code span.cv {
|
||||
color: #ffd700;
|
||||
}
|
||||
|
||||
code span.cn {
|
||||
color: #ffd700;
|
||||
}
|
||||
|
||||
code span.cf {
|
||||
font-weight: bold;
|
||||
color: #ffa07a;
|
||||
}
|
||||
|
||||
code span.dt {
|
||||
color: #ffa07a;
|
||||
}
|
||||
|
||||
code span.dv {
|
||||
color: #d4d0ab;
|
||||
}
|
||||
|
||||
code span.do {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
code span.er {
|
||||
color: #f07178;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
code span.ex {
|
||||
font-weight: bold;
|
||||
color: #00e0e0;
|
||||
}
|
||||
|
||||
code span.fl {
|
||||
color: #d4d0ab;
|
||||
}
|
||||
|
||||
code span.fu {
|
||||
color: #ffa07a;
|
||||
}
|
||||
|
||||
code span.im {
|
||||
color: #abe338;
|
||||
}
|
||||
|
||||
code span.in {
|
||||
color: #d4d0ab;
|
||||
}
|
||||
|
||||
code span.kw {
|
||||
font-weight: bold;
|
||||
color: #ffa07a;
|
||||
}
|
||||
|
||||
pre > code.sourceCode > span {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
code span {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
code.sourceCode > span {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
div.sourceCode,
|
||||
div.sourceCode pre.sourceCode {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
code span.op {
|
||||
color: #ffa07a;
|
||||
}
|
||||
|
||||
code span.ot {
|
||||
color: #00e0e0;
|
||||
}
|
||||
|
||||
code span.pp {
|
||||
color: #dcc6e0;
|
||||
}
|
||||
|
||||
code span.re {
|
||||
background-color: #f8f8f2;
|
||||
color: #00e0e0;
|
||||
}
|
||||
|
||||
code span.sc {
|
||||
color: #abe338;
|
||||
}
|
||||
|
||||
code span.ss {
|
||||
color: #abe338;
|
||||
}
|
||||
|
||||
code span.st {
|
||||
color: #abe338;
|
||||
}
|
||||
|
||||
code span.va {
|
||||
color: #00e0e0;
|
||||
}
|
||||
|
||||
code span.vs {
|
||||
color: #abe338;
|
||||
}
|
||||
|
||||
code span.wa {
|
||||
color: #dcc6e0;
|
||||
}
|
||||
|
||||
.prevent-inlining {
|
||||
content: "</";
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=935a306eefa94366c21e1a970dddb765.css.map */
|
@ -259,6 +259,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
|
||||
const manageSidebarVisiblity = (el, placeholderDescriptor) => {
|
||||
let isVisible = true;
|
||||
let elRect;
|
||||
|
||||
return (hiddenRegions) => {
|
||||
if (el === null) {
|
||||
@ -269,11 +270,6 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
const lastChildEl = el.lastElementChild;
|
||||
|
||||
if (lastChildEl) {
|
||||
// Find the top and bottom o the element that is being managed
|
||||
const elTop = el.offsetTop;
|
||||
const elBottom =
|
||||
elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight;
|
||||
|
||||
// Converts the sidebar to a menu
|
||||
const convertToMenu = () => {
|
||||
for (const child of el.children) {
|
||||
@ -281,100 +277,112 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
child.style.overflow = "hidden";
|
||||
}
|
||||
|
||||
const toggleContainer = window.document.createElement("div");
|
||||
toggleContainer.style.width = "100%";
|
||||
toggleContainer.classList.add("zindex-over-content");
|
||||
toggleContainer.classList.add("quarto-sidebar-toggle");
|
||||
toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom
|
||||
toggleContainer.id = placeholderDescriptor.id;
|
||||
toggleContainer.style.position = "fixed";
|
||||
nexttick(() => {
|
||||
const toggleContainer = window.document.createElement("div");
|
||||
toggleContainer.style.width = "100%";
|
||||
toggleContainer.classList.add("zindex-over-content");
|
||||
toggleContainer.classList.add("quarto-sidebar-toggle");
|
||||
toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom
|
||||
toggleContainer.id = placeholderDescriptor.id;
|
||||
toggleContainer.style.position = "fixed";
|
||||
|
||||
const toggleIcon = window.document.createElement("i");
|
||||
toggleIcon.classList.add("quarto-sidebar-toggle-icon");
|
||||
toggleIcon.classList.add("bi");
|
||||
toggleIcon.classList.add("bi-caret-down-fill");
|
||||
const toggleIcon = window.document.createElement("i");
|
||||
toggleIcon.classList.add("quarto-sidebar-toggle-icon");
|
||||
toggleIcon.classList.add("bi");
|
||||
toggleIcon.classList.add("bi-caret-down-fill");
|
||||
|
||||
const toggleTitle = window.document.createElement("div");
|
||||
const titleEl = window.document.body.querySelector(
|
||||
placeholderDescriptor.titleSelector
|
||||
);
|
||||
if (titleEl) {
|
||||
toggleTitle.append(titleEl.innerText, toggleIcon);
|
||||
}
|
||||
toggleTitle.classList.add("zindex-over-content");
|
||||
toggleTitle.classList.add("quarto-sidebar-toggle-title");
|
||||
toggleContainer.append(toggleTitle);
|
||||
|
||||
const toggleContents = window.document.createElement("div");
|
||||
toggleContents.classList = el.classList;
|
||||
toggleContents.classList.add("zindex-over-content");
|
||||
toggleContents.classList.add("quarto-sidebar-toggle-contents");
|
||||
for (const child of el.children) {
|
||||
if (child.id === "toc-title") {
|
||||
continue;
|
||||
const toggleTitle = window.document.createElement("div");
|
||||
const titleEl = window.document.body.querySelector(
|
||||
placeholderDescriptor.titleSelector
|
||||
);
|
||||
if (titleEl) {
|
||||
toggleTitle.append(
|
||||
titleEl.textContent || titleEl.innerText,
|
||||
toggleIcon
|
||||
);
|
||||
}
|
||||
toggleTitle.classList.add("zindex-over-content");
|
||||
toggleTitle.classList.add("quarto-sidebar-toggle-title");
|
||||
toggleContainer.append(toggleTitle);
|
||||
|
||||
const clone = child.cloneNode(true);
|
||||
clone.style.opacity = 1;
|
||||
clone.style.display = null;
|
||||
toggleContents.append(clone);
|
||||
}
|
||||
toggleContents.style.height = "0px";
|
||||
toggleContainer.append(toggleContents);
|
||||
el.parentElement.prepend(toggleContainer);
|
||||
const toggleContents = window.document.createElement("div");
|
||||
toggleContents.classList = el.classList;
|
||||
toggleContents.classList.add("zindex-over-content");
|
||||
toggleContents.classList.add("quarto-sidebar-toggle-contents");
|
||||
for (const child of el.children) {
|
||||
if (child.id === "toc-title") {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Process clicks
|
||||
let tocShowing = false;
|
||||
// Allow the caller to control whether this is dismissed
|
||||
// when it is clicked (e.g. sidebar navigation supports
|
||||
// opening and closing the nav tree, so don't dismiss on click)
|
||||
const clickEl = placeholderDescriptor.dismissOnClick
|
||||
? toggleContainer
|
||||
: toggleTitle;
|
||||
|
||||
const closeToggle = () => {
|
||||
if (tocShowing) {
|
||||
toggleContainer.classList.remove("expanded");
|
||||
toggleContents.style.height = "0px";
|
||||
tocShowing = false;
|
||||
const clone = child.cloneNode(true);
|
||||
clone.style.opacity = 1;
|
||||
clone.style.display = null;
|
||||
toggleContents.append(clone);
|
||||
}
|
||||
};
|
||||
toggleContents.style.height = "0px";
|
||||
const positionToggle = () => {
|
||||
// position the element (top left of parent, same width as parent)
|
||||
if (!elRect) {
|
||||
elRect = el.getBoundingClientRect();
|
||||
}
|
||||
toggleContainer.style.left = `${elRect.left}px`;
|
||||
toggleContainer.style.top = `${elRect.top}px`;
|
||||
toggleContainer.style.width = `${elRect.width}px`;
|
||||
};
|
||||
positionToggle();
|
||||
|
||||
const positionToggle = () => {
|
||||
// position the element (top left of parent, same width as parent)
|
||||
const elRect = el.getBoundingClientRect();
|
||||
toggleContainer.style.left = `${elRect.left}px`;
|
||||
toggleContainer.style.top = `${elRect.top}px`;
|
||||
toggleContainer.style.width = `${elRect.width}px`;
|
||||
};
|
||||
toggleContainer.append(toggleContents);
|
||||
el.parentElement.prepend(toggleContainer);
|
||||
|
||||
// Get rid of any expanded toggle if the user scrolls
|
||||
window.document.addEventListener(
|
||||
"scroll",
|
||||
throttle(() => {
|
||||
closeToggle();
|
||||
}, 50)
|
||||
);
|
||||
// Process clicks
|
||||
let tocShowing = false;
|
||||
// Allow the caller to control whether this is dismissed
|
||||
// when it is clicked (e.g. sidebar navigation supports
|
||||
// opening and closing the nav tree, so don't dismiss on click)
|
||||
const clickEl = placeholderDescriptor.dismissOnClick
|
||||
? toggleContainer
|
||||
: toggleTitle;
|
||||
|
||||
// Handle positioning of the toggle
|
||||
window.addEventListener(
|
||||
"resize",
|
||||
throttle(() => {
|
||||
positionToggle();
|
||||
}, 50)
|
||||
);
|
||||
positionToggle();
|
||||
const closeToggle = () => {
|
||||
if (tocShowing) {
|
||||
toggleContainer.classList.remove("expanded");
|
||||
toggleContents.style.height = "0px";
|
||||
tocShowing = false;
|
||||
}
|
||||
};
|
||||
|
||||
// Process the click
|
||||
clickEl.onclick = () => {
|
||||
if (!tocShowing) {
|
||||
toggleContainer.classList.add("expanded");
|
||||
toggleContents.style.height = null;
|
||||
tocShowing = true;
|
||||
} else {
|
||||
closeToggle();
|
||||
}
|
||||
};
|
||||
// Get rid of any expanded toggle if the user scrolls
|
||||
window.document.addEventListener(
|
||||
"scroll",
|
||||
throttle(() => {
|
||||
closeToggle();
|
||||
}, 50)
|
||||
);
|
||||
|
||||
// Handle positioning of the toggle
|
||||
window.addEventListener(
|
||||
"resize",
|
||||
throttle(() => {
|
||||
elRect = undefined;
|
||||
positionToggle();
|
||||
}, 50)
|
||||
);
|
||||
|
||||
window.addEventListener("quarto-hrChanged", () => {
|
||||
elRect = undefined;
|
||||
});
|
||||
|
||||
// Process the click
|
||||
clickEl.onclick = () => {
|
||||
if (!tocShowing) {
|
||||
toggleContainer.classList.add("expanded");
|
||||
toggleContents.style.height = null;
|
||||
tocShowing = true;
|
||||
} else {
|
||||
closeToggle();
|
||||
}
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
// Converts a sidebar from a menu back to a sidebar
|
||||
@ -398,6 +406,11 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
convertToMenu();
|
||||
isVisible = false;
|
||||
} else {
|
||||
// Find the top and bottom o the element that is being managed
|
||||
const elTop = el.offsetTop;
|
||||
const elBottom =
|
||||
elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight;
|
||||
|
||||
if (!isVisible) {
|
||||
// If the element is current not visible reveal if there are
|
||||
// no conflicts with overlay regions
|
||||
@ -424,20 +437,72 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
".column-margin.column-container > * "
|
||||
);
|
||||
|
||||
nexttick(() => {
|
||||
const layoutMarginEls = () => {
|
||||
let lastBottom = 0;
|
||||
for (const marginChild of marginChildren) {
|
||||
const top = marginChild.getBoundingClientRect().top + window.scrollY;
|
||||
if (top < lastBottom) {
|
||||
const margin = lastBottom - top;
|
||||
marginChild.style.marginTop = `${margin}px`;
|
||||
if (marginChild.offsetParent !== null) {
|
||||
// clear the top margin so we recompute it
|
||||
marginChild.style.marginTop = null;
|
||||
const top = marginChild.getBoundingClientRect().top + window.scrollY;
|
||||
if (top < lastBottom) {
|
||||
const margin = lastBottom - top;
|
||||
marginChild.style.marginTop = `${margin}px`;
|
||||
}
|
||||
const styles = window.getComputedStyle(marginChild);
|
||||
const marginTop = parseFloat(styles["marginTop"]);
|
||||
lastBottom =
|
||||
top + marginChild.getBoundingClientRect().height + marginTop;
|
||||
}
|
||||
const styles = window.getComputedStyle(marginChild);
|
||||
const marginTop = parseFloat(styles["marginTop"]);
|
||||
|
||||
lastBottom = top + marginChild.getBoundingClientRect().height + marginTop;
|
||||
}
|
||||
});
|
||||
};
|
||||
nexttick(layoutMarginEls);
|
||||
|
||||
const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]');
|
||||
for (const tabEl of tabEls) {
|
||||
const id = tabEl.getAttribute("data-bs-target");
|
||||
if (id) {
|
||||
const columnEl = document.querySelector(
|
||||
`${id} .column-margin, .tabset-margin-content`
|
||||
);
|
||||
if (columnEl)
|
||||
tabEl.addEventListener("shown.bs.tab", function (event) {
|
||||
|
||||
const el = event.srcElement;
|
||||
if (el) {
|
||||
const visibleCls = `${el.id}-margin-content`;
|
||||
// walk up until we find a parent tabset
|
||||
let panelTabsetEl = el.parentElement;
|
||||
while (panelTabsetEl) {
|
||||
if (panelTabsetEl.classList.contains("panel-tabset")) {
|
||||
break;
|
||||
}
|
||||
panelTabsetEl = panelTabsetEl.parentElement;
|
||||
}
|
||||
|
||||
if (panelTabsetEl) {
|
||||
const prevSib = panelTabsetEl.previousElementSibling;
|
||||
if (
|
||||
prevSib &&
|
||||
prevSib.classList.contains("tabset-margin-container")
|
||||
) {
|
||||
const childNodes = prevSib.querySelectorAll(
|
||||
".tabset-margin-content"
|
||||
);
|
||||
for (const childEl of childNodes) {
|
||||
if (childEl.classList.contains(visibleCls)) {
|
||||
childEl.classList.remove("collapse");
|
||||
} else {
|
||||
childEl.classList.add("collapse");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
layoutMarginEls();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Manage the visibility of the toc and the sidebar
|
||||
const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, {
|
||||
@ -506,8 +571,9 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
const kOverlapPaddingSize = 10;
|
||||
function toRegions(els) {
|
||||
return els.map((el) => {
|
||||
const boundRect = el.getBoundingClientRect();
|
||||
const top =
|
||||
el.getBoundingClientRect().top +
|
||||
boundRect.top +
|
||||
document.documentElement.scrollTop -
|
||||
kOverlapPaddingSize;
|
||||
return {
|
||||
@ -517,11 +583,51 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
});
|
||||
}
|
||||
|
||||
let hasObserved = false;
|
||||
const visibleItemObserver = (els) => {
|
||||
let visibleElements = [...els];
|
||||
const intersectionObserver = new IntersectionObserver(
|
||||
(entries, _observer) => {
|
||||
entries.forEach((entry) => {
|
||||
if (entry.isIntersecting) {
|
||||
if (visibleElements.indexOf(entry.target) === -1) {
|
||||
visibleElements.push(entry.target);
|
||||
}
|
||||
} else {
|
||||
visibleElements = visibleElements.filter((visibleEntry) => {
|
||||
return visibleEntry !== entry;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
if (!hasObserved) {
|
||||
hideOverlappedSidebars();
|
||||
}
|
||||
hasObserved = true;
|
||||
},
|
||||
{}
|
||||
);
|
||||
els.forEach((el) => {
|
||||
intersectionObserver.observe(el);
|
||||
});
|
||||
|
||||
return {
|
||||
getVisibleEntries: () => {
|
||||
return visibleElements;
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
const rightElementObserver = visibleItemObserver(rightSideConflictEls);
|
||||
const leftElementObserver = visibleItemObserver(leftSideConflictEls);
|
||||
|
||||
const hideOverlappedSidebars = () => {
|
||||
marginScrollVisibility(toRegions(rightSideConflictEls));
|
||||
sidebarScrollVisiblity(toRegions(leftSideConflictEls));
|
||||
marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries()));
|
||||
sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries()));
|
||||
if (tocLeftScrollVisibility) {
|
||||
tocLeftScrollVisibility(toRegions(leftSideConflictEls));
|
||||
tocLeftScrollVisibility(
|
||||
toRegions(leftElementObserver.getVisibleEntries())
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -543,7 +649,6 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
manageTransition("TOC", slow);
|
||||
manageTransition("quarto-sidebar", slow);
|
||||
};
|
||||
|
||||
const readerMode = !isReaderMode();
|
||||
setReaderModeValue(readerMode);
|
||||
|
||||
@ -590,6 +695,9 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
};
|
||||
let localReaderMode = null;
|
||||
|
||||
const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded");
|
||||
const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1;
|
||||
|
||||
// Walk the TOC and collapse/expand nodes
|
||||
// Nodes are expanded if:
|
||||
// - they are top level
|
||||
@ -615,7 +723,13 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
|
||||
// Process the collapse state if this is an UL
|
||||
if (el.tagName === "UL") {
|
||||
if (depth === 1 || hasActiveChild || prevSiblingIsActiveLink(el)) {
|
||||
if (tocOpenDepth === -1 && depth > 1) {
|
||||
el.classList.add("collapse");
|
||||
} else if (
|
||||
depth <= tocOpenDepth ||
|
||||
hasActiveChild ||
|
||||
prevSiblingIsActiveLink(el)
|
||||
) {
|
||||
el.classList.remove("collapse");
|
||||
} else {
|
||||
el.classList.add("collapse");
|
||||
|
2
_site/site_libs/quarto-listing/list.min.js
vendored
Normal file
243
_site/site_libs/quarto-listing/quarto-listing.js
Normal file
@ -0,0 +1,243 @@
|
||||
const kProgressiveAttr = "data-src";
|
||||
let categoriesLoaded = false;
|
||||
|
||||
window.quartoListingCategory = (category) => {
|
||||
if (categoriesLoaded) {
|
||||
activateCategory(category);
|
||||
setCategoryHash(category);
|
||||
}
|
||||
};
|
||||
|
||||
window["quarto-listing-loaded"] = () => {
|
||||
// Process any existing hash
|
||||
const hash = getHash();
|
||||
|
||||
if (hash) {
|
||||
// If there is a category, switch to that
|
||||
if (hash.category) {
|
||||
activateCategory(hash.category);
|
||||
}
|
||||
// Paginate a specific listing
|
||||
const listingIds = Object.keys(window["quarto-listings"]);
|
||||
for (const listingId of listingIds) {
|
||||
const page = hash[getListingPageKey(listingId)];
|
||||
if (page) {
|
||||
showPage(listingId, page);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const listingIds = Object.keys(window["quarto-listings"]);
|
||||
for (const listingId of listingIds) {
|
||||
// The actual list
|
||||
const list = window["quarto-listings"][listingId];
|
||||
|
||||
// Update the handlers for pagination events
|
||||
refreshPaginationHandlers(listingId);
|
||||
|
||||
// Render any visible items that need it
|
||||
renderVisibleProgressiveImages(list);
|
||||
|
||||
// Whenever the list is updated, we also need to
|
||||
// attach handlers to the new pagination elements
|
||||
// and refresh any newly visible items.
|
||||
list.on("updated", function () {
|
||||
renderVisibleProgressiveImages(list);
|
||||
setTimeout(() => refreshPaginationHandlers(listingId));
|
||||
|
||||
// Show or hide the no matching message
|
||||
toggleNoMatchingMessage(list);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
// Attach click handlers to categories
|
||||
const categoryEls = window.document.querySelectorAll(
|
||||
".quarto-listing-category .category"
|
||||
);
|
||||
|
||||
for (const categoryEl of categoryEls) {
|
||||
const category = categoryEl.getAttribute("data-category");
|
||||
categoryEl.onclick = () => {
|
||||
activateCategory(category);
|
||||
setCategoryHash(category);
|
||||
};
|
||||
}
|
||||
|
||||
// Attach a click handler to the category title
|
||||
// (there should be only one, but since it is a class name, handle N)
|
||||
const categoryTitleEls = window.document.querySelectorAll(
|
||||
".quarto-listing-category-title"
|
||||
);
|
||||
for (const categoryTitleEl of categoryTitleEls) {
|
||||
categoryTitleEl.onclick = () => {
|
||||
activateCategory("");
|
||||
setCategoryHash("");
|
||||
};
|
||||
}
|
||||
|
||||
categoriesLoaded = true;
|
||||
});
|
||||
|
||||
function toggleNoMatchingMessage(list) {
|
||||
const selector = `#${list.listContainer.id} .listing-no-matching`;
|
||||
const noMatchingEl = window.document.querySelector(selector);
|
||||
if (noMatchingEl) {
|
||||
if (list.visibleItems.length === 0) {
|
||||
noMatchingEl.classList.remove("d-none");
|
||||
} else {
|
||||
if (!noMatchingEl.classList.contains("d-none")) {
|
||||
noMatchingEl.classList.add("d-none");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setCategoryHash(category) {
|
||||
setHash({ category });
|
||||
}
|
||||
|
||||
function setPageHash(listingId, page) {
|
||||
const currentHash = getHash() || {};
|
||||
currentHash[getListingPageKey(listingId)] = page;
|
||||
setHash(currentHash);
|
||||
}
|
||||
|
||||
function getListingPageKey(listingId) {
|
||||
return `${listingId}-page`;
|
||||
}
|
||||
|
||||
function refreshPaginationHandlers(listingId) {
|
||||
const listingEl = window.document.getElementById(listingId);
|
||||
const paginationEls = listingEl.querySelectorAll(
|
||||
".pagination li.page-item:not(.disabled) .page.page-link"
|
||||
);
|
||||
for (const paginationEl of paginationEls) {
|
||||
paginationEl.onclick = (sender) => {
|
||||
setPageHash(listingId, sender.target.getAttribute("data-i"));
|
||||
showPage(listingId, sender.target.getAttribute("data-i"));
|
||||
return false;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function renderVisibleProgressiveImages(list) {
|
||||
// Run through the visible items and render any progressive images
|
||||
for (const item of list.visibleItems) {
|
||||
const itemEl = item.elm;
|
||||
if (itemEl) {
|
||||
const progressiveImgs = itemEl.querySelectorAll(
|
||||
`img[${kProgressiveAttr}]`
|
||||
);
|
||||
for (const progressiveImg of progressiveImgs) {
|
||||
const srcValue = progressiveImg.getAttribute(kProgressiveAttr);
|
||||
if (srcValue) {
|
||||
progressiveImg.setAttribute("src", srcValue);
|
||||
}
|
||||
progressiveImg.removeAttribute(kProgressiveAttr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getHash() {
|
||||
// Hashes are of the form
|
||||
// #name:value|name1:value1|name2:value2
|
||||
const currentUrl = new URL(window.location);
|
||||
const hashRaw = currentUrl.hash ? currentUrl.hash.slice(1) : undefined;
|
||||
return parseHash(hashRaw);
|
||||
}
|
||||
|
||||
const kAnd = "&";
|
||||
const kEquals = "=";
|
||||
|
||||
function parseHash(hash) {
|
||||
if (!hash) {
|
||||
return undefined;
|
||||
}
|
||||
const hasValuesStrs = hash.split(kAnd);
|
||||
const hashValues = hasValuesStrs
|
||||
.map((hashValueStr) => {
|
||||
const vals = hashValueStr.split(kEquals);
|
||||
if (vals.length === 2) {
|
||||
return { name: vals[0], value: vals[1] };
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
})
|
||||
.filter((value) => {
|
||||
return value !== undefined;
|
||||
});
|
||||
|
||||
const hashObj = {};
|
||||
hashValues.forEach((hashValue) => {
|
||||
hashObj[hashValue.name] = decodeURIComponent(hashValue.value);
|
||||
});
|
||||
return hashObj;
|
||||
}
|
||||
|
||||
function makeHash(obj) {
|
||||
return Object.keys(obj)
|
||||
.map((key) => {
|
||||
return `${key}${kEquals}${obj[key]}`;
|
||||
})
|
||||
.join(kAnd);
|
||||
}
|
||||
|
||||
function setHash(obj) {
|
||||
const hash = makeHash(obj);
|
||||
window.history.pushState(null, null, `#${hash}`);
|
||||
}
|
||||
|
||||
function showPage(listingId, page) {
|
||||
const list = window["quarto-listings"][listingId];
|
||||
if (list) {
|
||||
list.show((page - 1) * list.page + 1, list.page);
|
||||
}
|
||||
}
|
||||
|
||||
function activateCategory(category) {
|
||||
// Deactivate existing categories
|
||||
const activeEls = window.document.querySelectorAll(
|
||||
".quarto-listing-category .category.active"
|
||||
);
|
||||
for (const activeEl of activeEls) {
|
||||
activeEl.classList.remove("active");
|
||||
}
|
||||
|
||||
// Activate this category
|
||||
const categoryEl = window.document.querySelector(
|
||||
`.quarto-listing-category .category[data-category='${category}'`
|
||||
);
|
||||
if (categoryEl) {
|
||||
categoryEl.classList.add("active");
|
||||
}
|
||||
|
||||
// Filter the listings to this category
|
||||
filterListingCategory(category);
|
||||
}
|
||||
|
||||
function filterListingCategory(category) {
|
||||
const listingIds = Object.keys(window["quarto-listings"]);
|
||||
for (const listingId of listingIds) {
|
||||
const list = window["quarto-listings"][listingId];
|
||||
if (list) {
|
||||
if (category === "") {
|
||||
// resets the filter
|
||||
list.filter();
|
||||
} else {
|
||||
// filter to this category
|
||||
list.filter(function (item) {
|
||||
const itemValues = item.values();
|
||||
if (itemValues.categories !== null) {
|
||||
const categories = itemValues.categories.split(",");
|
||||
return categories.includes(category);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -8,6 +8,47 @@ const headroomChanged = new CustomEvent("quarto-hrChanged", {
|
||||
window.document.addEventListener("DOMContentLoaded", function () {
|
||||
let init = false;
|
||||
|
||||
// Manage the back to top button, if one is present.
|
||||
let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;
|
||||
const scrollDownBuffer = 5;
|
||||
const scrollUpBuffer = 35;
|
||||
const btn = document.getElementById("quarto-back-to-top");
|
||||
const hideBackToTop = () => {
|
||||
btn.style.display = "none";
|
||||
};
|
||||
const showBackToTop = () => {
|
||||
btn.style.display = "inline-block";
|
||||
};
|
||||
if (btn) {
|
||||
window.document.addEventListener(
|
||||
"scroll",
|
||||
function () {
|
||||
const currentScrollTop =
|
||||
window.pageYOffset || document.documentElement.scrollTop;
|
||||
|
||||
// Shows and hides the button 'intelligently' as the user scrolls
|
||||
if (currentScrollTop - scrollDownBuffer > lastScrollTop) {
|
||||
hideBackToTop();
|
||||
lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
|
||||
} else if (currentScrollTop < lastScrollTop - scrollUpBuffer) {
|
||||
showBackToTop();
|
||||
lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
|
||||
}
|
||||
|
||||
// Show the button at the bottom, hides it at the top
|
||||
if (currentScrollTop <= 0) {
|
||||
hideBackToTop();
|
||||
} else if (
|
||||
window.innerHeight + currentScrollTop >=
|
||||
document.body.offsetHeight
|
||||
) {
|
||||
showBackToTop();
|
||||
}
|
||||
},
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
function throttle(func, wait) {
|
||||
var timeout;
|
||||
return function () {
|
||||
@ -149,6 +190,18 @@ window.document.addEventListener("DOMContentLoaded", function () {
|
||||
};
|
||||
}
|
||||
|
||||
window.addEventListener(
|
||||
"hashchange",
|
||||
function (e) {
|
||||
if (
|
||||
getComputedStyle(document.documentElement).scrollBehavior !== "smooth"
|
||||
) {
|
||||
window.scrollTo(0, window.pageYOffset - headerOffset());
|
||||
}
|
||||
},
|
||||
false
|
||||
);
|
||||
|
||||
// Observe size changed for the header
|
||||
const headerEl = window.document.querySelector("header.fixed-top");
|
||||
if (headerEl && window.ResizeObserver) {
|
||||
@ -172,7 +225,9 @@ window.document.addEventListener("DOMContentLoaded", function () {
|
||||
if (window.location.protocol !== "file:") {
|
||||
const links = window.document.querySelectorAll("a");
|
||||
for (let i = 0; i < links.length; i++) {
|
||||
links[i].href = links[i].href.replace(/\/index\.html/, "/");
|
||||
if (links[i].href) {
|
||||
links[i].href = links[i].href.replace(/\/index\.html/, "/");
|
||||
}
|
||||
}
|
||||
|
||||
// Fixup any sharing links that require urls
|
||||
|
6
_site/site_libs/quarto-search/fuse.min.js
vendored
@ -45,7 +45,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
// highlight matches on the page
|
||||
if (query !== null && mainEl) {
|
||||
// perform any highlighting
|
||||
highlight(query, mainEl);
|
||||
highlight(escapeRegExp(query), mainEl);
|
||||
|
||||
// fix up the URL to remove the q query param
|
||||
const replacementUrl = new URL(window.location);
|
||||
@ -80,23 +80,20 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
// the media query since we generate different HTML for sidebar overlays than we do
|
||||
// for sidebar input UI)
|
||||
const detachedMediaQuery =
|
||||
quartoSearchOptions.type === "overlay"
|
||||
? "all"
|
||||
: quartoSearchOptions.location === "navbar"
|
||||
? "(max-width: 991px)"
|
||||
: "none";
|
||||
quartoSearchOptions.type === "overlay" ? "all" : "(max-width: 991px)";
|
||||
|
||||
// If configured, include the analytics client to send insights
|
||||
const plugins = configurePlugins(quartoSearchOptions);
|
||||
|
||||
let lastState = null;
|
||||
const { setIsOpen } = autocomplete({
|
||||
const { setIsOpen, setQuery, setCollections } = autocomplete({
|
||||
container: searchEl,
|
||||
detachedMediaQuery: detachedMediaQuery,
|
||||
defaultActiveItemId: 0,
|
||||
panelContainer: "#quarto-search-results",
|
||||
panelPlacement: quartoSearchOptions["panel-placement"],
|
||||
debug: false,
|
||||
openOnFocus: true,
|
||||
plugins,
|
||||
classNames: {
|
||||
form: "d-flex",
|
||||
@ -280,6 +277,10 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
}
|
||||
},
|
||||
getItems({ query }) {
|
||||
if (query === null || query === "") {
|
||||
return [];
|
||||
}
|
||||
|
||||
const limit = quartoSearchOptions.limit;
|
||||
if (quartoSearchOptions.algolia) {
|
||||
return algoliaSearch(query, limit, quartoSearchOptions.algolia);
|
||||
@ -299,9 +300,15 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
},
|
||||
templates: {
|
||||
noResults({ createElement }) {
|
||||
const hasQuery = lastState.query;
|
||||
|
||||
return createElement(
|
||||
"div",
|
||||
{ class: "quarto-search-no-results" },
|
||||
{
|
||||
class: `quarto-search-no-results${
|
||||
hasQuery ? "" : " no-query"
|
||||
}`,
|
||||
},
|
||||
language["search-no-results-text"]
|
||||
);
|
||||
},
|
||||
@ -361,6 +368,12 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
},
|
||||
});
|
||||
|
||||
window.quartoOpenSearch = () => {
|
||||
setIsOpen(false);
|
||||
setIsOpen(true);
|
||||
focusSearchInput();
|
||||
};
|
||||
|
||||
// Remove the labeleledby attribute since it is pointing
|
||||
// to a non-existent label
|
||||
if (quartoSearchOptions.type === "overlay") {
|
||||
@ -976,6 +989,10 @@ function clearHighlight(searchterm, el) {
|
||||
}
|
||||
}
|
||||
|
||||
function escapeRegExp(string) {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
||||
}
|
||||
|
||||
// highlight matches
|
||||
function highlight(term, el) {
|
||||
const termRegex = new RegExp(term, "ig");
|
||||
|
43
_site/sitemap.xml
Normal file
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://andreas.gdamsbo.dk/index.html</loc>
|
||||
<lastmod>2023-04-28T08:02:46.247Z</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>
|
||||
<loc>https://andreas.gdamsbo.dk/health_data/ancle.html</loc>
|
||||
<lastmod>2023-04-28T07:50:13.878Z</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://andreas.gdamsbo.dk/health-data.html</loc>
|
||||
<lastmod>2023-04-28T07:50:14.735Z</lastmod>
|
||||
</url>
|
||||
</urlset>
|
@ -2,4 +2,4 @@
|
||||
title: "About"
|
||||
---
|
||||
|
||||
My name is Andreas Gammelgaard Damsbo
|
||||
My name is Andreas Gammelgaard Damsbo
|
||||
|
15
food.qmd
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "Recepies"
|
||||
listing:
|
||||
contents:
|
||||
- "food/*.qmd"
|
||||
type: grid
|
||||
sort: "date desc"
|
||||
categories: numbered
|
||||
---
|
||||
|
||||
::: topbr
|
||||
```{=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>
|
||||
```
|
||||
:::
|
BIN
food/.DS_Store
vendored
Normal file
40
food/banankage.qmd
Normal file
@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "Super nem banankage"
|
||||
date: 2023-04-28
|
||||
description: Der er aldrig nok banan i banankage. Sådan er det ikke her!
|
||||
categories:
|
||||
- Kage
|
||||
- Bagværk
|
||||
- Børnene med!
|
||||
- Dansk
|
||||
---
|
||||
|
||||
## Noter
|
||||
|
||||
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.
|
||||
|
||||
## Ingredienser
|
||||
|
||||
- 3-5 godt modne bananer - moses
|
||||
|
||||
- 200-250 ml. sukker
|
||||
|
||||
- 2 æg - moses m. gaffel
|
||||
|
||||
- 1 tsk. natron
|
||||
|
||||
- 5 dl. mel
|
||||
|
||||
- 2 dI. hakkede valnødder
|
||||
|
||||
- 1½ dl. olie/margarine
|
||||
|
||||
- 1 tsk. vanillesukker
|
||||
|
||||
## Sådan gør du
|
||||
|
||||
Alt blandes
|
||||
|
||||
Formen smøres og drysses med rasp el. mel
|
||||
|
||||
Bages ca. 45 min. ved 175 grader
|
20
food/elses vafler.md
Normal file
@ -0,0 +1,20 @@
|
||||
# Elses vafler
|
||||
|
||||
![elses vafler](images/elses%20vafler.jpeg)
|
||||
|
||||
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
|
30
food/fladmast hane med nye hvidlog.md
Normal file
@ -0,0 +1,30 @@
|
||||
![fladmast hane med nye hvidlog](images/fladmast%20hane%20med%20nye%20hvidlog.png)
|
||||
|
||||
Fladmast hane med nye hvidlog
|
||||
|
||||
Fladmasning 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.
|
||||
|
||||
Til 6 personer
|
||||
|
||||
En stor hane eller kylling
|
||||
1 ½ kg. Kartofler
|
||||
3 hele hvidløg
|
||||
1 citron
|
||||
salt og peber
|
||||
olivenolie
|
||||
|
||||
Læ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.
|
||||
|
||||
Bag ved 200° - til hanen er er mør og sprød - ca. 1 time.
|
||||
|
||||
Der skal rumses lidt rundt i kartoflerne undervejs så de ikke branker.
|
||||
|
||||
Når hanen tages ud af ovnen, presses citronen ud over kartoflerne.
|
||||
|
||||
Spis hvidløgene som en creme til at smøre på kød og grønsager.
|
13
food/formbrød.md
Normal file
@ -0,0 +1,13 @@
|
||||
## Formbrød
|
||||
|
||||
Rest surdej (150 g)
|
||||
7 dl vand
|
||||
2 håndfulde havregryn
|
||||
25 g salt
|
||||
10 g gær
|
||||
1 håndfuld hørfrø
|
||||
Mel
|
||||
|
||||
Bagt 35 min ved 200gr.
|
||||
|
||||
Lidt surt. Ok med mindre surdej, eller flere brød.
|
35
food/groft hvede-surdejsbrød.md
Normal file
@ -0,0 +1,35 @@
|
||||
Groft hvede-surdejsbrød_
|
||||
_
|
||||
_
|
||||
_
|
||||
_https://www.dr.dk/mad/opskrift/groft-hvede-surdejsbrod_
|
||||
|
||||
**Ingredienser**
|
||||
|
||||
* 5 g gær (økologisk gær anbefales pga. bedre hæve-effekt)
|
||||
* 6 dl koldt vand
|
||||
* 1,5 dl hvedesurdej
|
||||
* 150 g fuldkornshvedemel (f.eks. ølandshvede, spelt eller emmermel) (300)
|
||||
* 750 g hvedemel (600)
|
||||
* 20 g havsalt
|
||||
* 2 spsk. olie
|
||||
|
||||
Særdeles velegnet til boller også. Deles i 16-20 stykker og bages 13-15 min ved 250gr
|
||||
|
||||
**Dag 1**
|
||||
|
||||
1. Rør gæren ud i det kolde vand i skålen til røremaskinen.
|
||||
2. Tilsæt resten af ingredienserne og ælt dejen godt igennem på røremaskinen i ca. 10 minutter.
|
||||
3. Hvis du rører dejen i hånden, skal du røre i lidt længere tid.
|
||||
4. Dejen skal være så smidig, at den slipper skålen eller bordpladen.
|
||||
5. Smør olie på indersiden af en skål og kom dejen i.
|
||||
6. Dæk med film og lad dejen koldhæve i køleskabet natten over.
|
||||
|
||||
**Dag 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.
|
||||
|
BIN
food/images/banankage.jpeg
Normal file
After Width: | Height: | Size: 389 KiB |
BIN
food/images/biryani a la gellerup.png
Normal file
After Width: | Height: | Size: 773 KiB |
BIN
food/images/bouillabaisse med fennikel.jpeg
Normal file
After Width: | Height: | Size: 376 KiB |
BIN
food/images/bouillabaisse.png
Normal file
After Width: | Height: | Size: 2.4 MiB |
BIN
food/images/coq au vin-1.jpeg
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
food/images/coq au vin.jpeg
Normal file
After Width: | Height: | Size: 2.0 MiB |
BIN
food/images/elses guldkage.jpeg
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
food/images/elses leverpostej.jpeg
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
food/images/elses vafler.jpeg
Normal file
BIN
food/images/falafel.jpeg
Normal file
After Width: | Height: | Size: 408 KiB |
BIN
food/images/fladmast hane med nye hvidlog.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
food/images/fyhn elgaards æblekage.jpeg
Normal file
After Width: | Height: | Size: 1.9 MiB |
BIN
food/images/halloumi, bønner og tomat.jpeg
Normal file
After Width: | Height: | Size: 263 KiB |
BIN
food/images/harissa.jpeg
Normal file
After Width: | Height: | Size: 1.9 MiB |
BIN
food/images/kikærteburger.jpeg
Normal file
After Width: | Height: | Size: 290 KiB |
BIN
food/images/krabbesuppe-1.jpeg
Normal file
After Width: | Height: | Size: 155 KiB |
BIN
food/images/krabbesuppe.jpeg
Normal file
After Width: | Height: | Size: 1.9 MiB |
BIN
food/images/lakridssmåkager.png
Normal file
After Width: | Height: | Size: 1.5 MiB |
BIN
food/images/linsesuppe-1.jpeg
Normal file
After Width: | Height: | Size: 2.0 MiB |
BIN
food/images/linsesuppe.jpeg
Normal file
After Width: | Height: | Size: 1.8 MiB |
BIN
food/images/lyst rugbrød efter meyers brød.jpeg
Normal file
After Width: | Height: | Size: 1.9 MiB |
BIN
food/images/mary’s courgette casserole.png
Normal file
After Width: | Height: | Size: 3.2 MiB |
BIN
food/images/mors brunkager.jpeg
Normal file
After Width: | Height: | Size: 140 KiB |
BIN
food/images/rabarberkage.jpeg
Normal file
After Width: | Height: | Size: 443 KiB |
BIN
food/images/spinatlasagne med linser og gorgonzola.jpeg
Normal file
After Width: | Height: | Size: 465 KiB |
BIN
food/images/spuash- eller gullerodskage.jpeg
Normal file
After Width: | Height: | Size: 3.1 MiB |
BIN
food/images/tofu-rösti.jpeg
Normal file
After Width: | Height: | Size: 324 KiB |
21
health-data.qmd
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
title: "Health Data"
|
||||
listing:
|
||||
contents:
|
||||
- "health_data/*.qmd"
|
||||
type: grid
|
||||
sort: "date desc"
|
||||
categories: numbered
|
||||
---
|
||||
|
||||
::: topbr
|
||||
```{=html}
|
||||
<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>
|
||||
```
|
||||
```{=html}
|
||||
<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}
|
||||
<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>
|
||||
```
|
||||
:::
|
32
health_data/ancle.qmd
Normal file
@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "Project: Foot database"
|
||||
date: 2023-04-28
|
||||
description: Comprehensive data and data base migration to continue data collection.
|
||||
categories:
|
||||
- REDDCap
|
||||
- Project
|
||||
- R
|
||||
- Consultant
|
||||
---
|
||||
## Background
|
||||
|
||||
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.
|
||||
|
||||
## Database
|
||||
|
||||
Here are a few characteristics:
|
||||
|
||||
- Around 3000 entries
|
||||
|
||||
- 5 collection instruments, 4 of them were to be used as repeatable instruments.
|
||||
|
||||
- 80 variables
|
||||
|
||||
## Coding
|
||||
|
||||
I have collected my scripts in a repository, which will be made public when I have finished the work.
|
||||
|
||||
## Extend of the work
|
||||
|
34
index.qmd
@ -1,10 +1,38 @@
|
||||
---
|
||||
title: "Andreas Gammelgaard Damsbo"
|
||||
about:
|
||||
template: solana
|
||||
image: "docs/images/portrait.png"
|
||||
links:
|
||||
- href: "mailto:andreas@gdamsbo.dk"
|
||||
icon: "envelope"
|
||||
text: Mail
|
||||
- href: https://github.com/agdamsbo
|
||||
text: GitHub
|
||||
icon: "github"
|
||||
- href: "https://social.gdamsbo.dk/@andreas"
|
||||
icon: "mastodon"
|
||||
text: Mastodon
|
||||
- href: "https://orcid.org/0000-0002-7559-1154"
|
||||
icon: paperclip
|
||||
text: ORCiD
|
||||
- href: "docs/cv.pdf"
|
||||
icon: "file-earmark-person"
|
||||
text: CV
|
||||
---
|
||||
|
||||
|
||||
```{r}
|
||||
```{r include=FALSE}
|
||||
# Notes
|
||||
#
|
||||
# icons: https://icons.getbootstrap.com/
|
||||
#
|
||||
# multilanguage: https://quarto-dev.marioangst.com/en/blog/posts/multi-language-quarto/
|
||||
#
|
||||
# knitr::knit("cv/cv.Rmd",output = "cv/cv.pdf",quiet = TRUE,)
|
||||
```
|
||||
|
||||
This is my website.
|
||||
Hi! I am a medical doctor, PhD-student, open source activist and father of two girls.
|
||||
|
||||
On 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!
|
||||
|
||||
\[This is still very much a work in progress, but these are my intentions\]
|
||||
|