forked from GISMentors/geopython-english
-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Converted docs to using material theme (#132)
* Converted docs to using material theme * removed olderd mkdocs * removed unwanted js and css files
- Loading branch information
1 parent
55db0e4
commit 995abe4
Showing
8 changed files
with
772 additions
and
18 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,180 @@ | ||
const div = document.querySelector('.github-topic-projects') | ||
|
||
async function getDataBatch(page) { | ||
const response = await fetch(`https://api.github.com/search/repositories?q=topic:fastapi&per_page=100&page=${page}`, { headers: { Accept: 'application/vnd.github.mercy-preview+json' } }) | ||
const data = await response.json() | ||
return data | ||
} | ||
|
||
async function getData() { | ||
let page = 1 | ||
let data = [] | ||
let dataBatch = await getDataBatch(page) | ||
data = data.concat(dataBatch.items) | ||
const totalCount = dataBatch.total_count | ||
while (data.length < totalCount) { | ||
page += 1 | ||
dataBatch = await getDataBatch(page) | ||
data = data.concat(dataBatch.items) | ||
} | ||
return data | ||
} | ||
|
||
function setupTermynal() { | ||
document.querySelectorAll(".use-termynal").forEach(node => { | ||
node.style.display = "block"; | ||
new Termynal(node, { | ||
lineDelay: 500 | ||
}); | ||
}); | ||
const progressLiteralStart = "---> 100%"; | ||
const promptLiteralStart = "$ "; | ||
const customPromptLiteralStart = "# "; | ||
const termynalActivateClass = "termy"; | ||
let termynals = []; | ||
|
||
function createTermynals() { | ||
document | ||
.querySelectorAll(`.${termynalActivateClass} .highlight`) | ||
.forEach(node => { | ||
const text = node.textContent; | ||
const lines = text.split("\n"); | ||
const useLines = []; | ||
let buffer = []; | ||
function saveBuffer() { | ||
if (buffer.length) { | ||
let isBlankSpace = true; | ||
buffer.forEach(line => { | ||
if (line) { | ||
isBlankSpace = false; | ||
} | ||
}); | ||
dataValue = {}; | ||
if (isBlankSpace) { | ||
dataValue["delay"] = 0; | ||
} | ||
if (buffer[buffer.length - 1] === "") { | ||
// A last single <br> won't have effect | ||
// so put an additional one | ||
buffer.push(""); | ||
} | ||
const bufferValue = buffer.join("<br>"); | ||
dataValue["value"] = bufferValue; | ||
useLines.push(dataValue); | ||
buffer = []; | ||
} | ||
} | ||
for (let line of lines) { | ||
if (line === progressLiteralStart) { | ||
saveBuffer(); | ||
useLines.push({ | ||
type: "progress" | ||
}); | ||
} else if (line.startsWith(promptLiteralStart)) { | ||
saveBuffer(); | ||
const value = line.replace(promptLiteralStart, "").trimEnd(); | ||
useLines.push({ | ||
type: "input", | ||
value: value | ||
}); | ||
} else if (line.startsWith("// ")) { | ||
saveBuffer(); | ||
const value = "💬 " + line.replace("// ", "").trimEnd(); | ||
useLines.push({ | ||
value: value, | ||
class: "termynal-comment", | ||
delay: 0 | ||
}); | ||
} else if (line.startsWith(customPromptLiteralStart)) { | ||
saveBuffer(); | ||
const promptStart = line.indexOf(promptLiteralStart); | ||
if (promptStart === -1) { | ||
console.error("Custom prompt found but no end delimiter", line) | ||
} | ||
const prompt = line.slice(0, promptStart).replace(customPromptLiteralStart, "") | ||
let value = line.slice(promptStart + promptLiteralStart.length); | ||
useLines.push({ | ||
type: "input", | ||
value: value, | ||
prompt: prompt | ||
}); | ||
} else { | ||
buffer.push(line); | ||
} | ||
} | ||
saveBuffer(); | ||
const div = document.createElement("div"); | ||
node.replaceWith(div); | ||
const termynal = new Termynal(div, { | ||
lineData: useLines, | ||
noInit: true, | ||
lineDelay: 500 | ||
}); | ||
termynals.push(termynal); | ||
}); | ||
} | ||
|
||
function loadVisibleTermynals() { | ||
termynals = termynals.filter(termynal => { | ||
if (termynal.container.getBoundingClientRect().top - innerHeight <= 0) { | ||
termynal.init(); | ||
return false; | ||
} | ||
return true; | ||
}); | ||
} | ||
window.addEventListener("scroll", loadVisibleTermynals); | ||
createTermynals(); | ||
loadVisibleTermynals(); | ||
} | ||
|
||
function shuffle(array) { | ||
var currentIndex = array.length, temporaryValue, randomIndex; | ||
while (0 !== currentIndex) { | ||
randomIndex = Math.floor(Math.random() * currentIndex); | ||
currentIndex -= 1; | ||
temporaryValue = array[currentIndex]; | ||
array[currentIndex] = array[randomIndex]; | ||
array[randomIndex] = temporaryValue; | ||
} | ||
return array; | ||
} | ||
|
||
async function showRandomAnnouncement(groupId, timeInterval) { | ||
const announceFastAPI = document.getElementById(groupId); | ||
if (announceFastAPI) { | ||
let children = [].slice.call(announceFastAPI.children); | ||
children = shuffle(children) | ||
let index = 0 | ||
const announceRandom = () => { | ||
children.forEach((el, i) => {el.style.display = "none"}); | ||
children[index].style.display = "block" | ||
index = (index + 1) % children.length | ||
} | ||
announceRandom() | ||
setInterval(announceRandom, timeInterval | ||
) | ||
} | ||
} | ||
|
||
async function main() { | ||
if (div) { | ||
data = await getData() | ||
div.innerHTML = '<ul></ul>' | ||
const ul = document.querySelector('.github-topic-projects ul') | ||
data.forEach(v => { | ||
if (v.full_name === 'tiangolo/fastapi') { | ||
return | ||
} | ||
const li = document.createElement('li') | ||
li.innerHTML = `<a href="${v.html_url}" target="_blank">★ ${v.stargazers_count} - ${v.full_name}</a> by <a href="${v.owner.html_url}" target="_blank">@${v.owner.login}</a>` | ||
ul.append(li) | ||
}) | ||
} | ||
|
||
setupTermynal(); | ||
showRandomAnnouncement('announce-left', 5000) | ||
showRandomAnnouncement('announce-right', 10000) | ||
} | ||
|
||
main() |
Oops, something went wrong.