Verbeter grafische kwaliteit van kleurplaten (v0.4.67-beta) #5
7 changed files with 23 additions and 11 deletions
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
||||||
0.3.09-beta
|
0.3.10-beta
|
||||||
|
|
|
||||||
|
|
@ -33,11 +33,11 @@ const REGISTRY = [
|
||||||
{ id:"ball", cat:"taal", icon:"🎈", w:620, h:560, minW:480, minH:440, mount:mountBall },
|
{ id:"ball", cat:"taal", icon:"🎈", w:620, h:560, minW:480, minH:440, mount:mountBall },
|
||||||
{ id:"anchor", cat:"taal", icon:"⚓", w:680, h:500, minW:440, minH:340, mount:mountAnchor },
|
{ id:"anchor", cat:"taal", icon:"⚓", w:680, h:500, minW:440, minH:340, mount:mountAnchor },
|
||||||
{ id:"sentence", cat:"taal", icon:"🧩", w:620, h:520, minW:400, minH:360, mount:mountSentence },
|
{ id:"sentence", cat:"taal", icon:"🧩", w:620, h:520, minW:400, minH:360, mount:mountSentence },
|
||||||
{ id:"madd", cat:"rekenen", icon:"➕", w:460, h:620, minW:380, minH:520, mount:(r,s)=>mountMath(r,s,"add") },
|
{ id:"madd", cat:"rekenen", icon:"➕", w:460, h:620, minW:380, minH:520, mount:(r,s,o)=>mountMath(r,s,"add",o) },
|
||||||
{ id:"msub", cat:"rekenen", icon:"➖", w:460, h:620, minW:380, minH:520, mount:(r,s)=>mountMath(r,s,"sub") },
|
{ id:"msub", cat:"rekenen", icon:"➖", w:460, h:620, minW:380, minH:520, mount:(r,s,o)=>mountMath(r,s,"sub",o) },
|
||||||
{ id:"mmul", cat:"rekenen", icon:"✖️", w:460, h:620, minW:380, minH:520, mount:(r,s)=>mountMath(r,s,"mul") },
|
{ id:"mmul", cat:"rekenen", icon:"✖️", w:460, h:620, minW:380, minH:520, mount:(r,s,o)=>mountMath(r,s,"mul",o) },
|
||||||
{ id:"mdiv", cat:"rekenen", icon:"➗", w:460, h:620, minW:380, minH:520, mount:(r,s)=>mountMath(r,s,"div") },
|
{ id:"mdiv", cat:"rekenen", icon:"➗", w:460, h:620, minW:380, minH:520, mount:(r,s,o)=>mountMath(r,s,"div",o) },
|
||||||
{ id:"mpct", cat:"rekenen", icon:"💯", w:480, h:620, minW:400, minH:520, mount:(r,s)=>mountMath(r,s,"pct") },
|
{ id:"mpct", cat:"rekenen", icon:"💯", w:480, h:620, minW:400, minH:520, mount:(r,s,o)=>mountMath(r,s,"pct",o) },
|
||||||
{ id:"numberline", cat:"rekenen", icon:"↔️", w:660, h:430, minW:420, minH:320, mount:mountNumberline },
|
{ id:"numberline", cat:"rekenen", icon:"↔️", w:660, h:430, minW:420, minH:320, mount:mountNumberline },
|
||||||
{ id:"fractions", cat:"rekenen", icon:"🍫", w:600, h:480, minW:380, minH:320, mount:mountFractions },
|
{ id:"fractions", cat:"rekenen", icon:"🍫", w:600, h:480, minW:380, minH:320, mount:mountFractions },
|
||||||
{ id:"clock", cat:"rekenen", icon:"🕙", w:500, h:500, minW:340, minH:340, mount:mountClock },
|
{ id:"clock", cat:"rekenen", icon:"🕙", w:500, h:500, minW:340, minH:340, mount:mountClock },
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
/* version — shown until /api/version resolves (or if the fetch fails, e.g. offline).
|
/* version — shown until /api/version resolves (or if the fetch fails, e.g. offline).
|
||||||
Kept in sync by hand with the VERSION file at the repo root on every release. */
|
Kept in sync by hand with the VERSION file at the repo root on every release. */
|
||||||
const VERSION = "0.3.09-beta";
|
const VERSION = "0.3.10-beta";
|
||||||
(function(){
|
(function(){
|
||||||
const tag = document.getElementById("verTag");
|
const tag = document.getElementById("verTag");
|
||||||
tag.textContent = "v"+VERSION;
|
tag.textContent = "v"+VERSION;
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ function renderPupilWidgets(widgets){
|
||||||
pupilView.appendChild(hint);
|
pupilView.appendChild(hint);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
usable.forEach(({ w, def })=>{
|
usable.forEach(({ w, def }, idx)=>{
|
||||||
const card = document.createElement("div");
|
const card = document.createElement("div");
|
||||||
card.className = "widget pupil-card";
|
card.className = "widget pupil-card";
|
||||||
card.style.width = def.w + "px";
|
card.style.width = def.w + "px";
|
||||||
|
|
@ -34,7 +34,13 @@ function renderPupilWidgets(widgets){
|
||||||
body.className = "widget-body";
|
body.className = "widget-body";
|
||||||
card.appendChild(body);
|
card.appendChild(body);
|
||||||
pupilView.appendChild(card);
|
pupilView.appendChild(card);
|
||||||
def.mount(body, w.state || null, { readonly:true });
|
/* geen stabiel widget-instantie-id in het bord (alleen het widget-type in
|
||||||
|
w.id) - positie in de lijst is de fijnste identiteit die beschikbaar is,
|
||||||
|
stabiel zolang de leerkracht de widgets op het bord niet herschikt */
|
||||||
|
const widgetId = def.id + ":" + idx;
|
||||||
|
def.mount(body, w.state || null, { readonly:true, onProgress: (p)=>{
|
||||||
|
api("/my/progress", { method:"POST", body: { widgetId, widgetType: def.id, ...p } }).catch(()=>{});
|
||||||
|
}});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,8 @@
|
||||||
/* =========================================================
|
/* =========================================================
|
||||||
Balloon word widget — guess before the balloons pop
|
Balloon word widget — guess before the balloons pop
|
||||||
==========================================================*/
|
==========================================================*/
|
||||||
function mountBall(root, initState){
|
function mountBall(root, initState, opts){
|
||||||
|
const onProgress = opts && opts.onProgress;
|
||||||
const S = { card:0, snd:true, lives:6, guessed:new Set(), over:false, order:[], idx:0, stars:0 };
|
const S = { card:0, snd:true, lives:6, guessed:new Set(), over:false, order:[], idx:0, stars:0 };
|
||||||
if(initState){ S.card = initState.card ?? 0; S.snd = initState.snd !== false; }
|
if(initState){ S.card = initState.card ?? 0; S.snd = initState.snd !== false; }
|
||||||
const play = f=>{ if(S.snd) f(); };
|
const play = f=>{ if(S.snd) f(); };
|
||||||
|
|
@ -70,6 +71,7 @@ function mountBall(root, initState){
|
||||||
play(sndWin); confetti(el(".mt-card"));
|
play(sndWin); confetti(el(".mt-card"));
|
||||||
nextBtn.classList.add("show");
|
nextBtn.classList.add("show");
|
||||||
scoreEl.textContent = S.stars+" ★";
|
scoreEl.textContent = S.stars+" ★";
|
||||||
|
if(onProgress) onProgress({ attempts: 1, correct: 1, stars: 1 });
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
S.lives--;
|
S.lives--;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
/* widget: Letterblokken (Ik leer lezen) */
|
/* widget: Letterblokken (Ik leer lezen) */
|
||||||
function mountLetterGame(root, initState, opts){
|
function mountLetterGame(root, initState, opts){
|
||||||
const readonly = !!(opts && opts.readonly);
|
const readonly = !!(opts && opts.readonly);
|
||||||
|
const onProgress = opts && opts.onProgress;
|
||||||
const S = { level:1, card:0, wordIdx:0, stars:0, lang:LANG, count:6, order:[], snd:true, amode:"blocks" };
|
const S = { level:1, card:0, wordIdx:0, stars:0, lang:LANG, count:6, order:[], snd:true, amode:"blocks" };
|
||||||
if(initState){
|
if(initState){
|
||||||
S.level = initState.level||1;
|
S.level = initState.level||1;
|
||||||
|
|
@ -282,6 +283,7 @@ function mountLetterGame(root, initState, opts){
|
||||||
doneEl.querySelector(".dp").textContent = currentWord()[0];
|
doneEl.querySelector(".dp").textContent = currentWord()[0];
|
||||||
doneEl.classList.add("show");
|
doneEl.classList.add("show");
|
||||||
nextBtn.classList.add("show");
|
nextBtn.classList.add("show");
|
||||||
|
if(onProgress) onProgress({ attempts: 1, correct: 1, stars: 1 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function showCardDone(){
|
function showCardDone(){
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,9 @@
|
||||||
/* =========================================================
|
/* =========================================================
|
||||||
Math practice engine — add / sub / mul / div / percentages
|
Math practice engine — add / sub / mul / div / percentages
|
||||||
==========================================================*/
|
==========================================================*/
|
||||||
function mountMath(root, initState, mode){
|
function mountMath(root, initState, mode, opts){
|
||||||
const ROUND = 10;
|
const ROUND = 10;
|
||||||
|
const onProgress = opts && opts.onProgress;
|
||||||
const S = { level:1, snd:true, amode:"blocks", q:null, tries:0, done:0, good:0, input:"", busy:false };
|
const S = { level:1, snd:true, amode:"blocks", q:null, tries:0, done:0, good:0, input:"", busy:false };
|
||||||
if(initState){
|
if(initState){
|
||||||
S.level = initState.level||1;
|
S.level = initState.level||1;
|
||||||
|
|
@ -199,6 +200,7 @@ function mountMath(root, initState, mode){
|
||||||
doneEl.querySelector(".dg").textContent = S.good>=8 ? "🌟" : S.good>=5 ? "👍" : "💪";
|
doneEl.querySelector(".dg").textContent = S.good>=8 ? "🌟" : S.good>=5 ? "👍" : "💪";
|
||||||
doneEl.classList.add("show");
|
doneEl.classList.add("show");
|
||||||
if(S.good>=8) play(sndWin);
|
if(S.good>=8) play(sndWin);
|
||||||
|
if(onProgress) onProgress({ attempts: ROUND, correct: S.good, stars: 0 });
|
||||||
}
|
}
|
||||||
function next(){
|
function next(){
|
||||||
S.done++;
|
S.done++;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue