{
"cells": [
{
"cell_type": "markdown",
"id": "3c983742-6ae9-4b23-8ed4-09c10d83cb7a",
"metadata": {},
"source": [
"# Fiches de révision\n",
"\n",
"## Les commandes de base"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "5c488e20-6415-4878-9af5-a4d9e4ba8b1c",
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [],
"source": [
"from jupytercards import md2json, display_flashcards"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "2d493f84-34b2-4a0b-a4ae-24a72195edc8",
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"/*!\n",
" * swiped-events.js - v1.1.4\n",
" * Pure JavaScript swipe events\n",
" * https://github.com/john-doherty/swiped-events\n",
" * @inspiration https://stackoverflow.com/questions/16348031/disable-scrolling-when-touch-moving-certain-element\n",
" * @author John Doherty \n",
" * @license MIT\n",
" */\n",
"!function(t,e){\"use strict\";\"function\"!=typeof t.CustomEvent&&(t.CustomEvent=function(t,n){n=n||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent(\"CustomEvent\");return a.initCustomEvent(t,n.bubbles,n.cancelable,n.detail),a},t.CustomEvent.prototype=t.Event.prototype),e.addEventListener(\"touchstart\",function(t){if(\"true\"===t.target.getAttribute(\"data-swipe-ignore\"))return;s=t.target,r=Date.now(),n=t.touches[0].clientX,a=t.touches[0].clientY,u=0,i=0},!1),e.addEventListener(\"touchmove\",function(t){if(!n||!a)return;var e=t.touches[0].clientX,r=t.touches[0].clientY;u=n-e,i=a-r},!1),e.addEventListener(\"touchend\",function(t){if(s!==t.target)return;var e=parseInt(l(s,\"data-swipe-threshold\",\"20\"),10),o=parseInt(l(s,\"data-swipe-timeout\",\"500\"),10),c=Date.now()-r,d=\"\",p=t.changedTouches||t.touches||[];Math.abs(u)>Math.abs(i)?Math.abs(u)>e&&c0?\"swiped-left\":\"swiped-right\"):Math.abs(i)>e&&c0?\"swiped-up\":\"swiped-down\");if(\"\"!==d){var b={dir:d.replace(/swiped-/,\"\"),xStart:parseInt(n,10),xEnd:parseInt((p[0]||{}).clientX||-1,10),yStart:parseInt(a,10),yEnd:parseInt((p[0]||{}).clientY||-1,10)};s.dispatchEvent(new CustomEvent(\"swiped\",{bubbles:!0,cancelable:!0,detail:b})),s.dispatchEvent(new CustomEvent(d,{bubbles:!0,cancelable:!0,detail:b}))}n=null,a=null,r=null},!1);var n=null,a=null,u=null,i=null,r=null,s=null;function l(t,n,a){for(;t&&t!==e.documentElement;){var u=t.getAttribute(n);if(u)return u;t=t.parentNode}return a}}(window,document);\n",
"\n",
"function jaxify(string) {\n",
" var mystring = string;\n",
" //console.log(mystring);\n",
"\n",
" var count = 0;\n",
" var loc = mystring.search(/([^\\\\]|^)(\\$)/);\n",
"\n",
" var count2 = 0;\n",
" var loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n",
"\n",
" //console.log(loc);\n",
"\n",
" while ((loc >= 0) || (loc2 >= 0)) {\n",
"\n",
" /* Have to replace all the double $$ first with current implementation */\n",
" if (loc2 >= 0) {\n",
" if (count2 % 2 == 0) {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\[\");\n",
" } else {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\]\");\n",
" }\n",
" count2++;\n",
" } else {\n",
" if (count % 2 == 0) {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\(\");\n",
" } else {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\)\");\n",
" }\n",
" count++;\n",
" }\n",
" loc = mystring.search(/([^\\\\]|^)(\\$)/);\n",
" loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n",
" //console.log(mystring,\", loc:\",loc,\", loc2:\",loc2);\n",
" }\n",
"\n",
" //console.log(mystring);\n",
" return mystring;\n",
"}\n",
"\n",
"window.flipCard = function flipCard(ths) {\n",
" //console.log(ths);\n",
" //console.log(ths.id);\n",
" ths.classList.toggle(\"flip\"); \n",
" ths.focus();\n",
" var next=document.getElementById(ths.id+'-next');\n",
" next.style.pointerEvents='none';\n",
" /* ths.blur(); */\n",
" next.classList.add('flipped');\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([ths]);\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" setTimeout(reenableNext, 600, ths, next);\n",
"}\n",
"\n",
"window.checkKey = function checkKey(container, event) {\n",
" event.stopPropagation();\n",
" /*\n",
" console.log(container);\n",
" console.log(event.key);\n",
" console.log(event.code);\n",
" */\n",
" /* JMS: Working here*/\n",
" var next=document.getElementById(container.id+'-next');\n",
" /* Only react if not already sliding */\n",
" if (! next.classList.contains(\"hide\")) {\n",
" if ((event.key == \"j\") || (event.key == \"Enter\") || (event.key == \"ArrowRight\")) {\n",
" window.checkFlip(container.id);\n",
" }\n",
" if (event.key == \" \") {\n",
" window.flipCard(container);\n",
" }\n",
" }\n",
" event.preventDefault();\n",
"}\n",
"\n",
"\n",
"function reenableNext(ths, next) {\n",
" next.style.pointerEvents='auto';\n",
" /* ths.tabIndex= 0;*/\n",
" /* ths.focus(); */\n",
"}\n",
"\n",
"\n",
"\n",
"function slide2(containerId) {\n",
" var container = document.getElementById(containerId);\n",
" var next=document.getElementById(containerId+'-next');\n",
" var frontcard = container.children[0];\n",
" var backcard = container.children[1];\n",
" container.style.pointerEvents='none';\n",
" /* container.removeAttribute(\"tabindex\");*/\n",
" /* container.blur(); */\n",
" //backcard.style.pointerEvents='none';\n",
" next.style.pointerEvents='none';\n",
" next.classList.remove('flipped');\n",
" next.classList.add('hide');\n",
"\n",
" //container.classList.add(\"prepare\");\n",
" \n",
" container.className=\"flip-container slide\";\n",
" backcard.parentElement.removeChild(frontcard);\n",
" backcard.parentElement.appendChild(frontcard);\n",
" setTimeout(slideback, 600, container, frontcard, backcard, next);\n",
" \n",
"}\n",
"\n",
"\n",
"window.checkFlip = function checkFlip(containerId) {\n",
" var container = document.getElementById(containerId);\n",
"\n",
"\n",
" if (container.classList.contains('flip')) {\n",
" container.classList.remove('flip');\n",
" setTimeout(slide2, 600, containerId);\n",
" } \n",
" else {\n",
" slide2(containerId);\n",
" }\n",
"}\n",
"\n",
"\n",
"function slideback(container, frontcard, backcard, next) {\n",
" container.className=\"flip-container slideback\";\n",
" setTimeout(cleanup, 550, container, frontcard, backcard, next);\n",
"}\n",
"\n",
"function cleanup(container, frontcard, backcard, next) {\n",
" container.removeChild(frontcard);\n",
" backcard.className=\"flipper frontcard\";\n",
" container.className=\"flip-container\";\n",
"\n",
" var cardnum=parseInt(container.dataset.cardnum);\n",
" var cards=eval('cards'+container.id);\n",
" var flipper=createOneCard(container, false, cards, cardnum);\n",
" container.append(flipper);\n",
" cardnum= (cardnum+1) % parseInt(container.dataset.numCards);\n",
" container.dataset.cardnum=cardnum;\n",
" if (cardnum != 1){\n",
" next.innerHTML=\"Next >\";\n",
" } else {\n",
" //next.innerHTML=\"Reload \\\\(\\\\circlearrowleft\\\\) \";\n",
" next.innerHTML='Reload '\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([next]);\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" }\n",
"\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset();\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" next.style.pointerEvents='auto';\n",
" container.style.pointerEvents='auto';\n",
" /* container.tabIndex= 0; */\n",
" /* container.focus(); */\n",
" next.classList.remove('hide');\n",
" container.addEventListener('swiped-left', function(e) {\n",
" /*\n",
" console.log(e.detail);\n",
" console.log(id);\n",
" */\n",
" checkFlip(container.id);\n",
" }, {once: true });\n",
"\n",
"\n",
"}\n",
"\n",
"\n",
"function createOneCard (mydiv, frontCard, cards, cardnum) {\n",
" var colors=eval('frontColors'+mydiv.id);\n",
" var backColors=eval('backColors'+mydiv.id);\n",
" var textColors=eval('textColors'+mydiv.id);\n",
" //console.log(backColors)\n",
"\n",
" var flipper = document.createElement('div');\n",
" if (frontCard){\n",
" flipper.className=\"flipper frontcard\"; \n",
" }\n",
" else {\n",
" flipper.className=\"flipper backcard\"; \n",
" }\n",
"\n",
" var front = document.createElement('div');\n",
" front.className='front flashcard';\n",
"\n",
" var frontSpan= document.createElement('span');\n",
" frontSpan.className='flashcardtext';\n",
" frontSpan.innerHTML=jaxify(cards[cardnum]['front']);\n",
" frontSpan.style.color=textColors[cardnum % textColors.length];\n",
" //frontSpan.textContent=jaxify(cards[cardnum]['front']);\n",
" //front.style.background='var(' + colors[cardnum % colors.length] + ')';\n",
" front.style.background=colors[cardnum % colors.length];\n",
"\n",
" front.append(frontSpan);\n",
" flipper.append(front);\n",
"\n",
" var back = document.createElement('div');\n",
" back.className='back flashcard';\n",
" back.style.background=backColors[cardnum % backColors.length];\n",
"\n",
" var backSpan= document.createElement('span');\n",
" backSpan.className='flashcardtext';\n",
" backSpan.innerHTML=jaxify(cards[cardnum]['back']);\n",
" backSpan.style.color=textColors[cardnum % textColors.length];\n",
" back.append(backSpan);\n",
"\n",
" flipper.append(back);\n",
"\n",
" return flipper;\n",
"\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"function createCards(id, keyControl, grabFocus) {\n",
" console.log(id);\n",
"\n",
" var mydiv=document.getElementById(id);\n",
" /*mydiv.onclick = window.flipCard(mydiv);*/\n",
" /*\n",
" mydiv.addEventListener('click', function(){window.flipCard(mydiv);}, false);\n",
" mydiv.addEventListener('keydown', function(event){window.checkKey(mydiv,event);}, true);\n",
" */\n",
" mydiv.onclick = function(){window.flipCard(mydiv);};\n",
" //console.log(keyControl);\n",
" if (keyControl == \"True\"){\n",
" mydiv.onkeydown = function(event){window.checkKey(mydiv,event);};\n",
" }\n",
" /* mydiv.addEventListener('keydown', function(event){event.stopPropagation(); console.log(event); event.preventDefault();}, true); */\n",
" /*mydiv.onkeypress = function(event){console.log(event); event.preventDefault();};*/\n",
"\n",
" //console.log(mydiv);\n",
"\n",
" var cards=eval('cards'+id);\n",
" mydiv.dataset.cardnum=0;\n",
" mydiv.dataset.numCards=cards.length;\n",
" mydiv.addEventListener('swiped-left', function(e) {\n",
" /*\n",
" console.log(e.detail);\n",
" console.log(id);\n",
" */\n",
" checkFlip(id);\n",
" }, {once: true});\n",
"\n",
" var cardnum=0;\n",
" \n",
" for (var i=0; i<2; i++) {\n",
" \n",
" var flipper;\n",
" if (i==0){\n",
" flipper=createOneCard(mydiv, true, cards, cardnum);\n",
" }\n",
" else {\n",
" flipper=createOneCard(mydiv, false, cards, cardnum);\n",
" }\n",
"\n",
" mydiv.append(flipper);\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" if (typeof version == 'undefined') {\n",
" setTimeout(function(){\n",
" var version = MathJax.version;\n",
" console.log('After sleep, MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([flipper]);\n",
" }\n",
" }, 500);\n",
" } else{\n",
" console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([flipper]);\n",
" }\n",
" }\n",
" } else {\n",
" console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" cardnum = (cardnum + 1) % mydiv.dataset.numCards;\n",
" }\n",
" mydiv.dataset.cardnum = cardnum;\n",
"\n",
" var next=document.getElementById(id+'-next');\n",
" if (cards.length==1) {\n",
" // Don't show next if no other cards!\n",
" next.style.pointerEvents='none';\n",
" next.classList.add('hide');\n",
" } else {\n",
" next.innerHTML=\"Next >\";\n",
" }\n",
"\n",
" if (grabFocus == \"True\" )\n",
" mydiv.focus();\n",
"\n",
" return flipper;\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" function try_create() {\n",
" if(document.getElementById(\"pZtSlUkTOkLr\")) {\n",
" createCards(\"pZtSlUkTOkLr\", \"True\", \"False\");\n",
" } else {\n",
" setTimeout(try_create, 200);\n",
" }\n",
" };\n",
" \n",
"var cardspZtSlUkTOkLr=[{\"front\": \"Que fait la commande: ls ? \", \"back\": \"List information about the FILEs (the current directory by default). \"}, {\"front\": \"Que fait la commande: pwd ? \", \"back\": \"Print the full filename of the current working directory.\"}, {\"front\": \"Que fait la commande: man ?\", \"back\": \"an interface to the on-line reference manuals.\"}, {\"front\": \"Que fait la commande: tree ?\", \"back\": \"List contents of directories in a tree-like format\"}];\n",
"var frontColorspZtSlUkTOkLr= [\"var(--asparagus)\", \"var(--terra-cotta)\", \"var(--cyan-process)\" ];\n",
"var backColorspZtSlUkTOkLr= [\"var(--dark-blue-gray)\" ];\n",
"var textColorspZtSlUkTOkLr= [\"var(--snow)\" ];\n",
"try_create(); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cards = [\n",
" {\n",
" \"front\": \"Que fait la commande: ls ? \",\n",
" \"back\": \"List information about the FILEs (the current directory by default). \"\n",
" },\n",
" {\n",
" \"front\": \"Que fait la commande: pwd ? \",\n",
" \"back\": \"Print the full filename of the current working directory.\"\n",
" },\n",
" {\n",
" \"front\": \"Que fait la commande: man ?\",\n",
" \"back\": \"an interface to the on-line reference manuals.\"\n",
" },\n",
" {\n",
" \"front\": \"Que fait la commande: tree ?\",\n",
" \"back\": \"List contents of directories in a tree-like format\"\n",
" }\n",
"]\n",
"display_flashcards(cards)"
]
},
{
"cell_type": "markdown",
"id": "fe7b41eb-aac1-4e81-9520-0438188f4f2a",
"metadata": {},
"source": [
"## Les outils"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "7493d116-b9ba-4004-a426-1798f2f2a241",
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"/*!\n",
" * swiped-events.js - v1.1.4\n",
" * Pure JavaScript swipe events\n",
" * https://github.com/john-doherty/swiped-events\n",
" * @inspiration https://stackoverflow.com/questions/16348031/disable-scrolling-when-touch-moving-certain-element\n",
" * @author John Doherty \n",
" * @license MIT\n",
" */\n",
"!function(t,e){\"use strict\";\"function\"!=typeof t.CustomEvent&&(t.CustomEvent=function(t,n){n=n||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent(\"CustomEvent\");return a.initCustomEvent(t,n.bubbles,n.cancelable,n.detail),a},t.CustomEvent.prototype=t.Event.prototype),e.addEventListener(\"touchstart\",function(t){if(\"true\"===t.target.getAttribute(\"data-swipe-ignore\"))return;s=t.target,r=Date.now(),n=t.touches[0].clientX,a=t.touches[0].clientY,u=0,i=0},!1),e.addEventListener(\"touchmove\",function(t){if(!n||!a)return;var e=t.touches[0].clientX,r=t.touches[0].clientY;u=n-e,i=a-r},!1),e.addEventListener(\"touchend\",function(t){if(s!==t.target)return;var e=parseInt(l(s,\"data-swipe-threshold\",\"20\"),10),o=parseInt(l(s,\"data-swipe-timeout\",\"500\"),10),c=Date.now()-r,d=\"\",p=t.changedTouches||t.touches||[];Math.abs(u)>Math.abs(i)?Math.abs(u)>e&&c0?\"swiped-left\":\"swiped-right\"):Math.abs(i)>e&&c0?\"swiped-up\":\"swiped-down\");if(\"\"!==d){var b={dir:d.replace(/swiped-/,\"\"),xStart:parseInt(n,10),xEnd:parseInt((p[0]||{}).clientX||-1,10),yStart:parseInt(a,10),yEnd:parseInt((p[0]||{}).clientY||-1,10)};s.dispatchEvent(new CustomEvent(\"swiped\",{bubbles:!0,cancelable:!0,detail:b})),s.dispatchEvent(new CustomEvent(d,{bubbles:!0,cancelable:!0,detail:b}))}n=null,a=null,r=null},!1);var n=null,a=null,u=null,i=null,r=null,s=null;function l(t,n,a){for(;t&&t!==e.documentElement;){var u=t.getAttribute(n);if(u)return u;t=t.parentNode}return a}}(window,document);\n",
"\n",
"function jaxify(string) {\n",
" var mystring = string;\n",
" //console.log(mystring);\n",
"\n",
" var count = 0;\n",
" var loc = mystring.search(/([^\\\\]|^)(\\$)/);\n",
"\n",
" var count2 = 0;\n",
" var loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n",
"\n",
" //console.log(loc);\n",
"\n",
" while ((loc >= 0) || (loc2 >= 0)) {\n",
"\n",
" /* Have to replace all the double $$ first with current implementation */\n",
" if (loc2 >= 0) {\n",
" if (count2 % 2 == 0) {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\[\");\n",
" } else {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\]\");\n",
" }\n",
" count2++;\n",
" } else {\n",
" if (count % 2 == 0) {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\(\");\n",
" } else {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\)\");\n",
" }\n",
" count++;\n",
" }\n",
" loc = mystring.search(/([^\\\\]|^)(\\$)/);\n",
" loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n",
" //console.log(mystring,\", loc:\",loc,\", loc2:\",loc2);\n",
" }\n",
"\n",
" //console.log(mystring);\n",
" return mystring;\n",
"}\n",
"\n",
"window.flipCard = function flipCard(ths) {\n",
" //console.log(ths);\n",
" //console.log(ths.id);\n",
" ths.classList.toggle(\"flip\"); \n",
" ths.focus();\n",
" var next=document.getElementById(ths.id+'-next');\n",
" next.style.pointerEvents='none';\n",
" /* ths.blur(); */\n",
" next.classList.add('flipped');\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([ths]);\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" setTimeout(reenableNext, 600, ths, next);\n",
"}\n",
"\n",
"window.checkKey = function checkKey(container, event) {\n",
" event.stopPropagation();\n",
" /*\n",
" console.log(container);\n",
" console.log(event.key);\n",
" console.log(event.code);\n",
" */\n",
" /* JMS: Working here*/\n",
" var next=document.getElementById(container.id+'-next');\n",
" /* Only react if not already sliding */\n",
" if (! next.classList.contains(\"hide\")) {\n",
" if ((event.key == \"j\") || (event.key == \"Enter\") || (event.key == \"ArrowRight\")) {\n",
" window.checkFlip(container.id);\n",
" }\n",
" if (event.key == \" \") {\n",
" window.flipCard(container);\n",
" }\n",
" }\n",
" event.preventDefault();\n",
"}\n",
"\n",
"\n",
"function reenableNext(ths, next) {\n",
" next.style.pointerEvents='auto';\n",
" /* ths.tabIndex= 0;*/\n",
" /* ths.focus(); */\n",
"}\n",
"\n",
"\n",
"\n",
"function slide2(containerId) {\n",
" var container = document.getElementById(containerId);\n",
" var next=document.getElementById(containerId+'-next');\n",
" var frontcard = container.children[0];\n",
" var backcard = container.children[1];\n",
" container.style.pointerEvents='none';\n",
" /* container.removeAttribute(\"tabindex\");*/\n",
" /* container.blur(); */\n",
" //backcard.style.pointerEvents='none';\n",
" next.style.pointerEvents='none';\n",
" next.classList.remove('flipped');\n",
" next.classList.add('hide');\n",
"\n",
" //container.classList.add(\"prepare\");\n",
" \n",
" container.className=\"flip-container slide\";\n",
" backcard.parentElement.removeChild(frontcard);\n",
" backcard.parentElement.appendChild(frontcard);\n",
" setTimeout(slideback, 600, container, frontcard, backcard, next);\n",
" \n",
"}\n",
"\n",
"\n",
"window.checkFlip = function checkFlip(containerId) {\n",
" var container = document.getElementById(containerId);\n",
"\n",
"\n",
" if (container.classList.contains('flip')) {\n",
" container.classList.remove('flip');\n",
" setTimeout(slide2, 600, containerId);\n",
" } \n",
" else {\n",
" slide2(containerId);\n",
" }\n",
"}\n",
"\n",
"\n",
"function slideback(container, frontcard, backcard, next) {\n",
" container.className=\"flip-container slideback\";\n",
" setTimeout(cleanup, 550, container, frontcard, backcard, next);\n",
"}\n",
"\n",
"function cleanup(container, frontcard, backcard, next) {\n",
" container.removeChild(frontcard);\n",
" backcard.className=\"flipper frontcard\";\n",
" container.className=\"flip-container\";\n",
"\n",
" var cardnum=parseInt(container.dataset.cardnum);\n",
" var cards=eval('cards'+container.id);\n",
" var flipper=createOneCard(container, false, cards, cardnum);\n",
" container.append(flipper);\n",
" cardnum= (cardnum+1) % parseInt(container.dataset.numCards);\n",
" container.dataset.cardnum=cardnum;\n",
" if (cardnum != 1){\n",
" next.innerHTML=\"Next >\";\n",
" } else {\n",
" //next.innerHTML=\"Reload \\\\(\\\\circlearrowleft\\\\) \";\n",
" next.innerHTML='Reload '\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([next]);\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" }\n",
"\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset();\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" next.style.pointerEvents='auto';\n",
" container.style.pointerEvents='auto';\n",
" /* container.tabIndex= 0; */\n",
" /* container.focus(); */\n",
" next.classList.remove('hide');\n",
" container.addEventListener('swiped-left', function(e) {\n",
" /*\n",
" console.log(e.detail);\n",
" console.log(id);\n",
" */\n",
" checkFlip(container.id);\n",
" }, {once: true });\n",
"\n",
"\n",
"}\n",
"\n",
"\n",
"function createOneCard (mydiv, frontCard, cards, cardnum) {\n",
" var colors=eval('frontColors'+mydiv.id);\n",
" var backColors=eval('backColors'+mydiv.id);\n",
" var textColors=eval('textColors'+mydiv.id);\n",
" //console.log(backColors)\n",
"\n",
" var flipper = document.createElement('div');\n",
" if (frontCard){\n",
" flipper.className=\"flipper frontcard\"; \n",
" }\n",
" else {\n",
" flipper.className=\"flipper backcard\"; \n",
" }\n",
"\n",
" var front = document.createElement('div');\n",
" front.className='front flashcard';\n",
"\n",
" var frontSpan= document.createElement('span');\n",
" frontSpan.className='flashcardtext';\n",
" frontSpan.innerHTML=jaxify(cards[cardnum]['front']);\n",
" frontSpan.style.color=textColors[cardnum % textColors.length];\n",
" //frontSpan.textContent=jaxify(cards[cardnum]['front']);\n",
" //front.style.background='var(' + colors[cardnum % colors.length] + ')';\n",
" front.style.background=colors[cardnum % colors.length];\n",
"\n",
" front.append(frontSpan);\n",
" flipper.append(front);\n",
"\n",
" var back = document.createElement('div');\n",
" back.className='back flashcard';\n",
" back.style.background=backColors[cardnum % backColors.length];\n",
"\n",
" var backSpan= document.createElement('span');\n",
" backSpan.className='flashcardtext';\n",
" backSpan.innerHTML=jaxify(cards[cardnum]['back']);\n",
" backSpan.style.color=textColors[cardnum % textColors.length];\n",
" back.append(backSpan);\n",
"\n",
" flipper.append(back);\n",
"\n",
" return flipper;\n",
"\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"function createCards(id, keyControl, grabFocus) {\n",
" console.log(id);\n",
"\n",
" var mydiv=document.getElementById(id);\n",
" /*mydiv.onclick = window.flipCard(mydiv);*/\n",
" /*\n",
" mydiv.addEventListener('click', function(){window.flipCard(mydiv);}, false);\n",
" mydiv.addEventListener('keydown', function(event){window.checkKey(mydiv,event);}, true);\n",
" */\n",
" mydiv.onclick = function(){window.flipCard(mydiv);};\n",
" //console.log(keyControl);\n",
" if (keyControl == \"True\"){\n",
" mydiv.onkeydown = function(event){window.checkKey(mydiv,event);};\n",
" }\n",
" /* mydiv.addEventListener('keydown', function(event){event.stopPropagation(); console.log(event); event.preventDefault();}, true); */\n",
" /*mydiv.onkeypress = function(event){console.log(event); event.preventDefault();};*/\n",
"\n",
" //console.log(mydiv);\n",
"\n",
" var cards=eval('cards'+id);\n",
" mydiv.dataset.cardnum=0;\n",
" mydiv.dataset.numCards=cards.length;\n",
" mydiv.addEventListener('swiped-left', function(e) {\n",
" /*\n",
" console.log(e.detail);\n",
" console.log(id);\n",
" */\n",
" checkFlip(id);\n",
" }, {once: true});\n",
"\n",
" var cardnum=0;\n",
" \n",
" for (var i=0; i<2; i++) {\n",
" \n",
" var flipper;\n",
" if (i==0){\n",
" flipper=createOneCard(mydiv, true, cards, cardnum);\n",
" }\n",
" else {\n",
" flipper=createOneCard(mydiv, false, cards, cardnum);\n",
" }\n",
"\n",
" mydiv.append(flipper);\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" if (typeof version == 'undefined') {\n",
" setTimeout(function(){\n",
" var version = MathJax.version;\n",
" console.log('After sleep, MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([flipper]);\n",
" }\n",
" }, 500);\n",
" } else{\n",
" console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([flipper]);\n",
" }\n",
" }\n",
" } else {\n",
" console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" cardnum = (cardnum + 1) % mydiv.dataset.numCards;\n",
" }\n",
" mydiv.dataset.cardnum = cardnum;\n",
"\n",
" var next=document.getElementById(id+'-next');\n",
" if (cards.length==1) {\n",
" // Don't show next if no other cards!\n",
" next.style.pointerEvents='none';\n",
" next.classList.add('hide');\n",
" } else {\n",
" next.innerHTML=\"Next >\";\n",
" }\n",
"\n",
" if (grabFocus == \"True\" )\n",
" mydiv.focus();\n",
"\n",
" return flipper;\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" function try_create() {\n",
" if(document.getElementById(\"oCtslKLmtPww\")) {\n",
" createCards(\"oCtslKLmtPww\", \"True\", \"False\");\n",
" } else {\n",
" setTimeout(try_create, 200);\n",
" }\n",
" };\n",
" \n",
"var cardsoCtslKLmtPww=[{\"front\": \"Que fait la commande: FastQC ? \", \"back\": \"A high throughput sequence QC analysis tool\"}];\n",
"var frontColorsoCtslKLmtPww= [\"var(--asparagus)\", \"var(--terra-cotta)\", \"var(--cyan-process)\" ];\n",
"var backColorsoCtslKLmtPww= [\"var(--dark-blue-gray)\" ];\n",
"var textColorsoCtslKLmtPww= [\"var(--snow)\" ];\n",
"try_create(); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cards_2 = [\n",
" {\n",
" \"front\": \"Que fait la commande: FastQC ? \",\n",
" \"back\": \"A high throughput sequence QC analysis tool\"\n",
" }\n",
"]\n",
"display_flashcards(cards_2)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}