[
ID,
Datum,
Starttijd,
Eindtijd,
Locatie,
GroepID,
TrainerID,
Baan,
Opmerkingen
]
Vanaf 2.6 moet Planning ALTIJD zo zijn:
[
ID,
Datum,
Starttijd,
Eindtijd,
Locatie,
GroepID,
TrainerID,
Baan,
Opmerkingen
]
function getTrainerPlanning(trainerId){
return (db.Planning || []).slice(1)
.filter(p => p[6] == trainerId)
.sort((a,b)=> a[1].localeCompare(b[1]));
}
function renderTrainerDashboard(){
let data = getTrainerPlanning(user.trainerId);
app.innerHTML = `
<div class="card">
<h3>๐ค Mijn Planning</h3>
${data.map(p=>`
<div style="padding:8px;border-bottom:1px solid #eee">
๐ ${p[1]} ${p[2]} - ${p[3]}ย
๐๏ธ ${p[4]} | Baan ${p[7]}ย
๐ฅ Groep: ${getGroupName(p[5])}
</div>
`).join("")}
</div>
`;
}
function renderAdminDashboard(){
let trainers = db.Trainers.slice(1);
app.innerHTML = `
<div class="card">
<h3>๐ Admin Planning Overview</h3>
${trainers.map(t=>{
let tPlan = getTrainerPlanning(t[0]);
return `
<div class="card">
<h4>${t[1]} ${t[2]}</h4>
${tPlan.map(p=>`
<div>
๐ ${p[1]} ${p[2]}-${p[3]}ย
๐๏ธ ${p[4]} | Baan ${p[7]}ย
๐ฅ ${getGroupName(p[5])}
</div>
`).join("") || "Geen planning"}
</div>
`;
}).join("")}
</div>
`;
}
function render(){
if(currentTab === "Mijn Dashboard"){
renderTrainerDashboard();
return;
}
if(currentTab === "Dashboard"){
renderAdminDashboard();
return;
}
if(currentTab === "Planning"){
renderPlanningTable();
return;
}
renderTable(currentTab);
}
function renderPlanningTable(){
let rows = db.Planning.slice(1);
app.innerHTML = `
<div class="card">
<h3>๐ Alle Planning</h3>
<table>
<tr>
<th>Datum</th>
<th>Tijd</th>
<th>Locatie</th>
<th>Groep</th>
<th>Trainer</th>
<th>Baan</th>
<th>Opmerkingen</th>
</tr>
${rows.map(p=>`
<tr>
<td>${p[1]}</td>
<td>${p[2]} - ${p[3]}</td>
<td>${p[4]}</td>
<td>${getGroupName(p[5])}</td>
<td>${getTrainerName(p[6])}</td>
<td>${p[7]}</td>
<td>${p[8]}</td>
</tr>
`).join("")}
</table>
</div>
`;
}
function getTrainerName(id){
let t = db.Trainers.find(x=>x[0]==id);
return t ? t[1]+" "+t[2] : "";
}
function getGroupName(id){
let g = db.Groepen.find(x=>x[0]==id);
return g ? g[1] : "";
}
Dit is belangrijk voor 2.7:
function generateAIPlanningHint(){
let demand = db.Planning.length;
let trainers = db.Trainers.length;
return {
suggestion: "balance_load",
trainers,
sessions: demand,
note: "AI kan planning optimaliseren per trainer load"
};
}
eigen planning dashboard
gefilterde sessies
overzicht per dag
alle trainers + hun planning
centrale planning tabel
volledige controle
clean SaaS model
trainerId-based filtering
groupId relations
Je bent niet meer bezig met:
โ โpadel toolโ
maar:
Nu komt het echte verschil met bestaande tools:
Daarin bouwen we:
auto rooster maken
trainer load balancing
baan optimalisatie
trainers geven beschikbaarheid
systeem plant automatisch
drag & drop planning
week view / maand view
wijzigingen push
reminders
analyse van trainers
drukte per baan
โmaak 2.7 AI planning engine + kalender + auto schedulingโ
Dan maken we jouw systeem echt โClubplanner / Sportivity niveau SaaSโ.