{ "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 }