forked from CausalInferenceLab/CausalInferenceLab.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
homepage setting and chapter1 update
- Loading branch information
1 parent
617389d
commit fd9e509
Showing
64 changed files
with
8,272 additions
and
483 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
.Rproj.user | ||
.Rhistory | ||
.RData | ||
.Ruserdata | ||
|
||
/.quarto/ |
14 changes: 14 additions & 0 deletions
14
_freeze/posts/post-with-code/index/execute-results/html.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{ | ||
"hash": "1c3c128fa4d92848205ed39c1603d008", | ||
"result": { | ||
"markdown": "---\ntitle: \"Post With Code\"\nauthor: \"Harlow Malloc\"\ndate: \"2023-10-17\"\ncategories: [news, code, analysis]\nimage: \"image.jpg\"\n---\n\n\nThis is a post with executable code.\n\n\n::: {.cell}\n\n```{.r .cell-code}\n1 + 1\n```\n\n::: {.cell-output .cell-output-stdout}\n```\n[1] 2\n```\n:::\n:::\n", | ||
"supporting": [], | ||
"filters": [ | ||
"rmarkdown/pagebreak.lua" | ||
], | ||
"includes": {}, | ||
"engineDependencies": {}, | ||
"preserve": {}, | ||
"postProcess": true | ||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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; | ||
} | ||
}); | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
project: | ||
type: website | ||
|
||
website: | ||
title: "분석가를 위한 인과추론" | ||
description: "현업 데이터 분석가가 인과추론을 공부하고 현업에 적용하면서 느낀 생각을 정리한 자료입니다." | ||
search: true | ||
navbar: | ||
logo: images/causal_inference_team_logo.jpg | ||
right: | ||
- about.qmd | ||
- icon: github | ||
href: https://github.com/CausalInferenceLab/Causal-Inference-Study-for-Analyst | ||
open-graph: | ||
title: "분석가를 위한 인과추론" | ||
description: "현업 데이터 분석가가 인과추론을 공부하고 현업에 적용하면서 느낀 생각을 정리한 자료입니다." | ||
image: images/pseudo_lab_eng.png | ||
|
||
format: | ||
html: | ||
theme: | ||
light: [cosmo, theme.scss, anari-custom.scss] | ||
dark: [cosmo, theme-dark.scss, anari-custom.scss] | ||
css: styles.css | ||
|
||
execute: | ||
warning: false | ||
freeze: auto | ||
|
||
editor: visual | ||
|
Oops, something went wrong.