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
@@ -303,57 +342,6 @@ Step 3. The user executes `add n/David …` to add a new student. The `add` c
303
342
304
343

305
344
306
-
<divmarkdown="span"class="alert alert-info">:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the TAddressBook state will not be saved into the `addressBookStateList`.
307
-
308
-
</div>
309
-
310
-
Step 4. The user now decides that adding the student was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous TAddressBook state, and restores the TAddressBook to that state.
311
-
312
-

313
-
314
-
<divmarkdown="span"class="alert alert-info">:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial TAddressBook state, then there are no previous TAddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather
315
-
than attempting to perform the undo.
316
-
317
-
</div>
318
-
319
-
The following sequence diagram shows how the undo operation works:
<divmarkdown="span"class="alert alert-info">:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
324
-
325
-
</div>
326
-
327
-
The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the TAddressBook to that state.
328
-
329
-
<divmarkdown="span"class="alert alert-info">:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest TAddressBook state, then there are no undone TAddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.
330
-
331
-
</div>
332
-
333
-
Step 5. The user then decides to execute the command `list`. Commands that do not modify the TAddressBook, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.
334
-
335
-

336
-
337
-
Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all TAddressBook states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …` command. This is the behavior that most modern desktop applications follow.
338
-
339
-

340
-
341
-
The following activity diagram summarizes what happens when a user executes a new command:
TAddress Book is a desktop app for CS2030S TAs to manage students and labs, optimized for use via a Command Line
9
-
Interface. It is based on [AddressBook Level 3](https://se-education.org/addressbook-level3/).
8
+
[TAddress Book](https://github.com/AY2122S2-CS2103-F10-1/tp) is a desktop app for CS2030S Teaching Assistants (TAs) to manage students and labs, in particular the grading process of lab assignments.
9
+
It is based on [AddressBook Level 3](https://se-education.org/addressbook-level3/).
10
10
11
-
Given below are my contributions to the project.
11
+
Given below are my contributions to the project. The code contributed can be found at this [Reposense link](https://nus-cs2103-ay2122s2.github.io/tp-dashboard/?search=channne&breakdown=true&sort=groupTitle&sortWithin=title&since=2022-02-18&timeframe=commit&mergegroup=&groupSelect=groupByRepos&checkedFileTypes=docs~functional-code~test-code~other).
12
12
13
-
**Features**
14
-
1. Implemented ability to store marks associated with individual labs for individual students.
15
-
* Allows TA to keep track of marks given when grading labs.
16
-
2. Implemented commands to allow for submission of labs, grading of labs and editing of lab details (status and/or marks).
17
-
* Allows TA to keep track of students' progress in labs as well as his/her own grading progress.
* Added `LabMark` class ([#91](https://github.com/AY2122S2-CS2103-F10-1/tp/pull/91))
18
+
***Description**: Each `Lab` is associated with a `LabMark` which is `Unknown` when `LabStatus` is `UNSUBMITTED`/`SUBMITTED` and an integer from 0 to 100 when `LabStatus` is `GRADED`
19
+
***Motivation**: Allows TA to keep track of marks given to individual labs when grading labs of students.
20
+
***Highlights**: Involved multiple defensive checks comparing `LabMark` and `LabStatus` in order to ensure that invalid labs (e.g. `GRADED` labs with `Unknown` marks) did not exist
*`SubmitLabCommand` allows for updating of `LabStatus` from `UNSUBMITTED` to `SUBMITTED`
24
+
*`GradeLabCommand` allows for updating of `LabStatus` from `UNSUBMITTED` or `SUBMITTED` to `GRADED` and updates `LabMark` from `Unknown` to a given integer from 0 to 100
25
+
*`EditLabCommand` allows for editing of `LabStatus` and/or `LabMark` (provided that the resultant lab is not invalid, e.g. `LabMark` is not `Unknown` yet `LabStatus` is not `GRADED`)
26
+
***Motivation**:
27
+
* Allows TA to keep track of students' progress in labs as well as his/her own grading progress.
28
+
* Allows TA to modify previous data which may have been incorrectly entered.
29
+
***Highlights**:
30
+
*`SubmitLabCommand` and `GradeLabCommand` are subclasses of `EditLabCommand` with an identical `Command#execute` method, which calls other methods that perform validity checks on the labs to be edited and return class-specific error messages. Differing behavior is implemented using the OOP principle of polymorphism by overriding of superclass methods.
31
+
* Originally was `EditLabStatusCommand` ([#71](https://github.com/AY2122S2-CS2103-F10-1/tp/pull/71)), but refactored to three different commands after addition of `LabMark`
32
+
33
+
#### Enhancements to existing features
34
+
* Refactored `Person` from AddressBook Level 3 to `Student`
* Refined UG by standardizing formatting and parameter constraint descriptions (e.g. for `INDEX` and `LAB_MARK`)
47
+
* Developer Guide (DG):
48
+
* Contributed to user stories and use cases UC1, UC3, UC4, UC5 ([#33](https://github.com/AY2122S2-CS2103-F10-1/tp/pull/33), [#85](https://github.com/AY2122S2-CS2103-F10-1/tp/pull/85))
49
+
* Added implementation details for `labedit` ([#143](https://github.com/AY2122S2-CS2103-F10-1/tp/pull/143))
50
+
* Added instructions for manual testing of `labedit`
51
+
* Ensured that PDF versions of UG and DG looked and worked as expected
52
+
53
+
#### Project management
54
+
* Managed issue tracker by converting user stories and other features to issues and assigning them to relevant team members
55
+
* Helped to manage milestones by adding deadlines and labeling issues
56
+
57
+
#### Review and mentoring
58
+
* Helped to review team members' PRs, e.g. [#67](https://github.com/AY2122S2-CS2103-F10-1/tp/pull/67), [#77](https://github.com/AY2122S2-CS2103-F10-1/tp/pull/77), [#90](https://github.com/AY2122S2-CS2103-F10-1/tp/pull/90)
59
+
* Contributed 11 bug reports/suggestions for another team during [PE-D](https://github.com/channne/ped/issues)
0 commit comments