You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>The database is first created when the application first launches and subsequently recreated if the database is missing. There is no need to do anything thereof</p>
7
+
<p>
8
+
Add the <a[routerLink]="['/subjects']">Subjects</a> and the <a[routerLink]="['/classes']">Classes</a> you teach
9
+
</p>
10
+
<p>Once the above steps are done, you are more than ready to explore the application in full</p>
11
+
</section>
12
+
<section>
13
+
<h2class="h2">Adding students</h2>
14
+
<p>Upload the list of students with an excel file. Simple as that . However a pattern must be observed to create the understanding between you and the software</p>
15
+
<ulclass="list-group">
16
+
<liclass="list-group-item-heading">Uploading students data instructions</li>
17
+
<liclass="list-group-item">Have an excel sheets that contains the list of students</li>
18
+
<liclass="list-group-item-warning">There must be no header of any sort. They will be included as students. Do not provide a header</li>
19
+
<liclass="list-group-item-success">The system reads all cells for which it can read data in the cell from columns A and B. All other columns will be ignored</li>
20
+
<liclass="list-group-item">To make life easier for yourself and the system, follow the instructions given</li>
21
+
</ul>
22
+
</section>
23
+
</article>
24
+
</div>
25
+
<divclass="col-md-4">
26
+
<article>
27
+
<section>
28
+
<h2>Managing the classes</h2>
29
+
<p>When adding classes, you need to supply some parameter which will be used later by the application to help you do things easily</p>
30
+
<dlclass="dl-horizontal">
31
+
<dt>Class Name</dt>
32
+
<dd>The name of the class as know in your school or institution. The user interface will tell you on the valid values</dd>
33
+
<dt>Prefix</dt>
34
+
<dd>The prefix is all the characters that precede the actual number of the student. E.g. "MS/2019/045" where "MS/2019/" is the prefix for all students in that class and the 045 is the actual number of the student. You would therefore store the "MS/2019/" as the prefix for all students in that class.</dd>
35
+
</dl>
36
+
<p>
37
+
The padding is the number of zeros that precede the actual number. While the developer does not personally find that behavior useful, it is a common practice. Depending on the estimated number of students, some institution pad the numbers of the students with zeros as in the example given above. The number of the student was given as 045; a padding of 1. This can be inferred that if the number ranged between 1 and 9, two zeros would have been padded to the left of the number. The user is expected to provide the padding that is used in the institution where he/she works. Default is 0, meaning no padding
38
+
</p>
39
+
</section>
40
+
</article>
41
+
</div>
42
+
<divclass="col-md-4">
43
+
<article>
44
+
<section>
45
+
<h2>Adding results</h2>
46
+
<p>From the classes page, you will have two options "Add results" button and "Smart Entry"</p>
47
+
</section>
48
+
<section>
49
+
<h2>Add Results</h2>
50
+
<p>This give the old familiar excel interface to add your results. The names and index number of the students in the class are generated and text boxes for the score added. The list is generated orderly for entry. Validation rules are enforced before saving the data is allowed.</p>
51
+
<p>This is suitable for small number of students or when the index number of the students do not follow a particular patter</p>
52
+
</section>
53
+
<section>
54
+
<h2>Smart Entry</h2>
55
+
<p>Based on the number part, the index number of the student can be inferred and used to enter the score. The user simply provides the number part, say 45, and the program will infer that, it should pad two zeros and attach the prefix of the class. Should the number match a valid student, the results are added, else you will be prompted to correct the anomaly</p>
56
+
<p>Smart entry is faster when processing large numbers of students where most of them have a predictable index number. In those occasions where some of the students do not have the class pattern, the full index number should be provided and there would be no smart inference</p>
title="select the subject for which you are recording this score"
18
+
formControlName="subjectsID"
19
+
placeholder="subjectsID">
20
+
<option[ngValue]="s.subjectsID" *ngFor="let s of subjects">{{s.subject}} - Code:{{s.subjectCode}}</option>
21
+
</select>
22
+
</div>
23
+
<span[ngClass]="form.controls.subjectsID.errors?.maxlength ? 'text-danger' : ''" *ngIf="form.controls.subjectsID.errors?.maxlength">The maximum length is {{form.controls.subjectsID.errors.max.max}} characters: Current is {{form.controls.subjectsID.errors.max.max}}</span>
<span[ngClass]="form.controls.subjectsID.errors?.minlength ? 'text-danger' : ''" *ngIf="form.controls.subjectsID.errors?.minlength">The minimum length is {{form.controls.subjectsID.errors.min.min}} characters: Current is {{form.controls.subjectsID.errors.min.min}}</span>
title="Add a tag for this assessment. This tags will be used to recollect this exams from the list. Since you can add more than one quiz, the tag will be used to find this session"
34
+
formControlName="tag"
35
+
placeholder="tag for the examination">
36
+
</div>
37
+
<span[ngClass]="form.controls.tag.errors?.maxlength ? 'text-danger' : ''" *ngIf="form.controls.tag.errors?.maxlength">The maximum length is {{form.controls.tag.errors.maxlength.requiredLength}} characters: Current is {{form.controls.tag.errors.maxlength.actualLength}}</span>
<span[ngClass]="form.controls.tag.errors?.minlength ? 'text-danger' : ''" *ngIf="form.controls.tag.errors?.minlength">The minimum length is {{form.controls.tag.errors.minlength.requiredLength}} characters: Current is {{form.controls.tag.errors.minlength.actualLength}}</span>
title="select the exams type for which you are recording this score"
47
+
formControlName="assessmentTypesID"
48
+
placeholder="assessmentTypesID">
49
+
<option[ngValue]="s.assessmentTypesID" *ngFor="let s of types">{{s.assessmentType}}</option>
50
+
</select>
51
+
</div>
52
+
<span[ngClass]="form.controls.assessmentTypesID.errors?.maxlength ? 'text-danger' : ''" *ngIf="form.controls.assessmentTypesID.errors?.maxlength">The maximum length is {{form.controls.assessmentTypesID.errors.max.max}} characters: Current is {{form.controls.assessmentTypesID.errors.max.max}}</span>
<span[ngClass]="form.controls.assessmentTypesID.errors?.minlength ? 'text-danger' : ''" *ngIf="form.controls.assessmentTypesID.errors?.minlength">The minimum length is {{form.controls.assessmentTypesID.errors.min.min}} characters: Current is {{form.controls.assessmentTypesID.errors.min.min}}</span>
title="maximum score for which you are recording this score"
62
+
formControlName="max"
63
+
placeholder="max score" />
64
+
</div>
65
+
<span[ngClass]="form.controls.max.errors?.max ? 'text-danger' : ''" *ngIf="form.controls.max.errors?.max">The maximum {{form.controls.max.errors.max.max}}</span>
66
+
<span[ngClass]="form.controls.max.errors?.required ? 'text-danger' : ''" *ngIf="form.controls.max.errors?.required">Enter maximum score</span>
67
+
<span[ngClass]="form.controls.max.errors?.min ? 'text-danger' : ''" *ngIf="form.controls.max.errors?.min">The minimum length is {{form.controls.max.errors.min.min}} characters: Current is {{form.controls.max.errors.min.min}}</span>
<buttontitle="Save button. If the actions are successful after clicking this button, you will be routed to the class page" aria-label="Save the results button" (click)="save(form,res_form)" class="btn" [ngClass]="form_valid() ? 'btn-success' : 'btn-danger'" [disabled]="!form_valid()"><spanclass="glyphicon glyphicon-floppy-save"></span> Save</button>
0 commit comments