v0.3.16-beta: deel één widget via de Toewijzingen-tab
All checks were successful
dev - build & deploy naar test / build-and-deploy (push) Successful in 34s
All checks were successful
dev - build & deploy naar test / build-and-deploy (push) Successful in 34s
- assignmentRow: na bordkeuze verschijnt een widget-select ("heel bord" of
één widget van dat bord, client-side uit BS-borddata); bij een widgetkeuze
een modus-select (kijken/werken); PUT-body krijgt widgetId + mode mee
- Widgets zonder wid (borden van vóór v0.3.13) worden overgeslagen tot de
eerstvolgende save van dat bord
- Infotekst toont nu ook widget en modus van de huidige toewijzing
- Nieuwe i18n-teksten amWholeBoard/amModeWatch/amModeWork (nl/en)
This commit is contained in:
parent
873f8e0bee
commit
d0ab0b2483
3 changed files with 48 additions and 5 deletions
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
||||||
0.3.15-beta
|
0.3.16-beta
|
||||||
|
|
|
||||||
|
|
@ -420,6 +420,23 @@
|
||||||
live op, dus nieuwe woorden die je toevoegt komen vanzelf door zonder opnieuw
|
live op, dus nieuwe woorden die je toevoegt komen vanzelf door zonder opnieuw
|
||||||
toe te wijzen. Een expliciete "Toewijzen"-knop i.p.v. direct bij het kiezen van
|
toe te wijzen. Een expliciete "Toewijzen"-knop i.p.v. direct bij het kiezen van
|
||||||
een bord opslaan, zodat een klas-brede wijziging niet per ongeluk gebeurt. */
|
een bord opslaan, zodat een klas-brede wijziging niet per ongeluk gebeurt. */
|
||||||
|
/* widgets van een eigen bord (voor de één-widget-keuze in assignmentRow);
|
||||||
|
widgets zonder wid komen uit borden van vóór v0.3.13 en verschijnen pas
|
||||||
|
na de eerstvolgende save van dat bord */
|
||||||
|
function boardWidgets(boardId){
|
||||||
|
let found = null;
|
||||||
|
BS.folders.forEach(fo=>fo.boards.forEach(bo=>{ if(bo.id===boardId) found = bo; }));
|
||||||
|
return ((found && found.data && found.data.widgets) || []).filter(w=>w.wid);
|
||||||
|
}
|
||||||
|
function describeCurrent(current){
|
||||||
|
if(!current) return "";
|
||||||
|
let s = `${T("amAssignedAs")} “${current.boardName || current.boardId}”`;
|
||||||
|
if(current.widgetId){
|
||||||
|
const wName = current.widgetType ? T("wg_"+current.widgetType) : current.widgetId;
|
||||||
|
s += ` › ${wName} (${current.mode==="kijken" ? T("amModeWatch") : T("amModeWork")})`;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
function assignmentRow(target, boardOptions, current){
|
function assignmentRow(target, boardOptions, current){
|
||||||
const row = h("div","am-row");
|
const row = h("div","am-row");
|
||||||
row.appendChild(h("span","am-name", target.label));
|
row.appendChild(h("span","am-name", target.label));
|
||||||
|
|
@ -427,19 +444,43 @@
|
||||||
sel.appendChild(new Option(T("amNoAssignment"), ""));
|
sel.appendChild(new Option(T("amNoAssignment"), ""));
|
||||||
boardOptions.forEach(b=>sel.appendChild(new Option(b.label, b.id)));
|
boardOptions.forEach(b=>sel.appendChild(new Option(b.label, b.id)));
|
||||||
sel.value = current ? current.boardId : "";
|
sel.value = current ? current.boardId : "";
|
||||||
const info = h("span","am-code", current ? `${T("amAssignedAs")} “${current.boardName || current.boardId}”` : "");
|
/* keuze: heel bord (default, bestaand gedrag) of één widget + modus */
|
||||||
|
const widgetSel = h("select","am-sel am-widget-sel");
|
||||||
|
const modeSel = h("select","am-sel am-mode-sel");
|
||||||
|
modeSel.appendChild(new Option(T("amModeWork"), "werken"));
|
||||||
|
modeSel.appendChild(new Option(T("amModeWatch"), "kijken"));
|
||||||
|
const syncWidgetSel = ()=>{
|
||||||
|
widgetSel.innerHTML = "";
|
||||||
|
widgetSel.appendChild(new Option(T("amWholeBoard"), ""));
|
||||||
|
boardWidgets(sel.value).forEach(w=>widgetSel.appendChild(new Option(T("wg_"+w.id), w.wid)));
|
||||||
|
widgetSel.value = (current && current.boardId===sel.value && current.widgetId) ? current.widgetId : "";
|
||||||
|
widgetSel.style.display = sel.value ? "" : "none";
|
||||||
|
syncModeSel();
|
||||||
|
};
|
||||||
|
const syncModeSel = ()=>{ modeSel.style.display = (sel.value && widgetSel.value) ? "" : "none"; };
|
||||||
|
modeSel.value = current && current.mode ? current.mode : "werken";
|
||||||
|
sel.addEventListener("change", syncWidgetSel);
|
||||||
|
widgetSel.addEventListener("change", syncModeSel);
|
||||||
|
const info = h("span","am-code", describeCurrent(current));
|
||||||
row.appendChild(sel);
|
row.appendChild(sel);
|
||||||
|
row.appendChild(widgetSel);
|
||||||
|
row.appendChild(modeSel);
|
||||||
row.appendChild(info);
|
row.appendChild(info);
|
||||||
|
syncWidgetSel();
|
||||||
const apply = h("button","am-btn", T("amAssign"));
|
const apply = h("button","am-btn", T("amAssign"));
|
||||||
apply.type = "button";
|
apply.type = "button";
|
||||||
apply.addEventListener("click", async ()=>{
|
apply.addEventListener("click", async ()=>{
|
||||||
try{
|
try{
|
||||||
if(sel.value) await api(`/assignments/${target.type}/${target.id}`, {method:"PUT", body:{boardId: sel.value}});
|
if(sel.value){
|
||||||
|
const body = { boardId: sel.value };
|
||||||
|
if(widgetSel.value){ body.widgetId = widgetSel.value; body.mode = modeSel.value; }
|
||||||
|
await api(`/assignments/${target.type}/${target.id}`, {method:"PUT", body});
|
||||||
|
}
|
||||||
else await api(`/assignments/${target.type}/${target.id}`, {method:"DELETE"});
|
else await api(`/assignments/${target.type}/${target.id}`, {method:"DELETE"});
|
||||||
if(target.type==="class"){ await reload(); }
|
if(target.type==="class"){ await reload(); }
|
||||||
else{
|
else{
|
||||||
const a = (await api("/assignments/pupil/"+target.id)).assignment;
|
const a = (await api("/assignments/pupil/"+target.id)).assignment;
|
||||||
info.textContent = a ? `${T("amAssignedAs")} “${a.boardName || a.boardId}”` : "";
|
info.textContent = describeCurrent(a);
|
||||||
msg(T("amAssignSaved"));
|
msg(T("amAssignSaved"));
|
||||||
}
|
}
|
||||||
}catch(e){ msg(e.message); }
|
}catch(e){ msg(e.message); }
|
||||||
|
|
|
||||||
|
|
@ -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.15-beta";
|
const VERSION = "0.3.16-beta";
|
||||||
(function(){
|
(function(){
|
||||||
const tag = document.getElementById("verTag");
|
const tag = document.getElementById("verTag");
|
||||||
tag.textContent = "v"+VERSION;
|
tag.textContent = "v"+VERSION;
|
||||||
|
|
@ -176,6 +176,7 @@ const I18N = {
|
||||||
amAssignments:"Toewijzingen", amAssignClasses:"Per klas (standaard)", amAssignPupils:"Per leerling (uitzondering)",
|
amAssignments:"Toewijzingen", amAssignClasses:"Per klas (standaard)", amAssignPupils:"Per leerling (uitzondering)",
|
||||||
amPickPupil:"— kies een leerling —", amNoAssignment:"— geen toewijzing —",
|
amPickPupil:"— kies een leerling —", amNoAssignment:"— geen toewijzing —",
|
||||||
amAssignedAs:"Toegewezen:", amAssign:"Toewijzen", amAssignSaved:"Toewijzing opgeslagen.",
|
amAssignedAs:"Toegewezen:", amAssign:"Toewijzen", amAssignSaved:"Toewijzing opgeslagen.",
|
||||||
|
amWholeBoard:"— heel bord —", amModeWatch:"kijken", amModeWork:"werken",
|
||||||
amProgress:"Voortgang", amProgressEmpty:"Nog geen voortgang voor deze leerling.",
|
amProgress:"Voortgang", amProgressEmpty:"Nog geen voortgang voor deze leerling.",
|
||||||
amConfirmDel:"Weet je zeker dat je deze gebruiker wilt verwijderen?",
|
amConfirmDel:"Weet je zeker dat je deze gebruiker wilt verwijderen?",
|
||||||
amCopy:"kopieer", amCopyAll:"kopieer alles",
|
amCopy:"kopieer", amCopyAll:"kopieer alles",
|
||||||
|
|
@ -337,6 +338,7 @@ const I18N = {
|
||||||
amAssignments:"Assignments", amAssignClasses:"Per class (default)", amAssignPupils:"Per pupil (override)",
|
amAssignments:"Assignments", amAssignClasses:"Per class (default)", amAssignPupils:"Per pupil (override)",
|
||||||
amPickPupil:"— pick a pupil —", amNoAssignment:"— no assignment —",
|
amPickPupil:"— pick a pupil —", amNoAssignment:"— no assignment —",
|
||||||
amAssignedAs:"Assigned:", amAssign:"Assign", amAssignSaved:"Assignment saved.",
|
amAssignedAs:"Assigned:", amAssign:"Assign", amAssignSaved:"Assignment saved.",
|
||||||
|
amWholeBoard:"— whole board —", amModeWatch:"watch", amModeWork:"work",
|
||||||
amProgress:"Progress", amProgressEmpty:"No progress for this pupil yet.",
|
amProgress:"Progress", amProgressEmpty:"No progress for this pupil yet.",
|
||||||
amConfirmDel:"Are you sure you want to delete this user?",
|
amConfirmDel:"Are you sure you want to delete this user?",
|
||||||
amCopy:"copy", amCopyAll:"copy all",
|
amCopy:"copy", amCopyAll:"copy all",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue