Added the ability to create and edit students and staff. Still cannot delete.

This commit is contained in:
2022-08-21 11:13:19 -07:00
parent 8d4b72c581
commit 23838990d4
4 changed files with 66 additions and 14 deletions

View File

@@ -58,6 +58,13 @@
const studentColumns = [
{
key: "id",
title: "ID",
value: v => v.id,
minWidth: 100,
weight: 1,
cls: "id",
}, {
key: "email",
title: "Email",
value: v => v.email,
@@ -80,9 +87,9 @@
cls: "lastName",
}, {
key: "grade",
title: "Grade",
title: "GRD",
value: v => v.grade,
minWidth: 100,
minWidth: 50,
weight: 1,
cls: "grade",
},
@@ -103,15 +110,15 @@
}
let dirtyStudent;
// Copy the edited value when ever it changes, set some defaults for a new value object (to make the view happy).
editedStudent.subscribe(v => {dirtyStudent = Object.assign({email: "", firstName: "", lastName: "", grade: ""}, v)});
editedStudent.subscribe(v => {dirtyStudent = Object.assign({id: "", email: "", firstName: "", lastName: "", grade: "", siteId: selectedSiteId}, v)});
const deleteStudent = student => {
//TODO:
//TODO: Need to ensure no assets are assigned to the student first.
};
const applyStudentChanges = () => {
if(dirtyStudent._id)
Meteor.call("students.update", dirtyStudent);
Meteor.call("students.update", dirtyStudent._id, dirtyStudent.id, dirtyStudent.firstName, dirtyStudent.lastName, dirtyStudent.email, dirtyStudent.siteId, dirtyStudent.grade);
else
Meteor.call("students.add", dirtyStudent);
Meteor.call("students.add", dirtyStudent.id, dirtyStudent.firstName, dirtyStudent.lastName, dirtyStudent.email, dirtyStudent.siteId, dirtyStudent.grade);
editedStudent.set(null);
dirtyStudent = null;
}
@@ -143,6 +150,10 @@
<GridTable bind:rows={students} columns="{studentColumns}" actions="{studentsActions}" rowKey="{(v) => {return v._id}}" bind:edited="{editedStudent}" on:selection={onStudentSelection}>
{#if dirtyStudent}
<div class="editorContainer">
<div style="grid-column: 1/span 1">
<TextField type="number" style="width: 100%" bind:value={dirtyStudent.id} label="Student ID">
</TextField>
</div>
<div style="grid-column: 1/span 1">
<TextField type="text" style="width: 100%" bind:value={dirtyStudent.email} label="Email">
</TextField>
@@ -159,6 +170,13 @@
<TextField type="text" style="width: 100%" bind:value={dirtyStudent.grade} label="Grade">
</TextField>
</div>
<div style="grid-column: 1/span 1">
<Select bind:value={dirtyStudent.siteId} label="Site">
{#each $sites as site}
<Option value={site._id}>{site.name}</Option>
{/each}
</Select>
</div>
<button type="button" style="grid-column: 2/span 1;" class="button accept-button material-icons material-symbols-outlined" on:click={applyStudentChanges}>
check