From 3b962ac5be6fd18182dc39ef395b958cd25591d6 Mon Sep 17 00:00:00 2001 From: raydenlim Date: Fri, 10 Nov 2023 06:48:53 +0800 Subject: [PATCH 1/5] Fix UG tables Add Tabs TOC --- docs/UserGuide.md | 478 +++++++++--------- docs/stylesheets/main.css | 6 + .../model/session/SessionStudents.java | 196 +++++++ ...StudentsContainsStudentsPredicateTest.java | 93 ++++ .../model/session/SessionStudentsTest.java | 67 +++ 5 files changed, 599 insertions(+), 241 deletions(-) create mode 100644 src/main/java/seedu/address/model/session/SessionStudents.java create mode 100644 src/test/java/seedu/address/model/session/SessionStudentsContainsStudentsPredicateTest.java create mode 100644 src/test/java/seedu/address/model/session/SessionStudentsTest.java diff --git a/docs/UserGuide.md b/docs/UserGuide.md index e31988ada02..c87c72db244 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -4,17 +4,7 @@ title: "User Guide" pageNav: 3 --- # F.A.K.E.J.A.R.V.I.S. User Guide @@ -40,7 +30,7 @@ If you are new to CLI, or unfamiliar with the commands F.A.K.E.J.A.R.V.I.S. offe
-### Table of Contents +## Table of Contents  1 [Introduction](#introduction)       1.1 [Table of Contents](#table-of-contents) @@ -54,43 +44,44 @@ If you are new to CLI, or unfamiliar with the commands F.A.K.E.J.A.R.V.I.S. offe       4.1 [Command Parameters](#command-parameters)  5 [Features](#features)       5.1 [General Commands](#general-commands) -            5.1.1 [Viewing help : `help`](#viewing-help-help) -            5.1.2 [Exiting F.A.K.E.J.A.R.V.I.S. : `exit`](#exiting-f-a-k-e-j-a-r-v-i-s-exit) -            5.1.3 [Saving the Data](#saving-the-data) -            5.1.4 [Editing the Data File](#editing-the-data-file) -            5.1.5 [Archiving Data Files `[coming in v2.0]`](#archiving-data-files-coming-in-v2-0) +            5.1.1 [🔀Switching between different tabs : `tab`](#switching-between-different-tabs-tab) +            5.1.2 [👀Viewing help : `help`](#viewing-help-help) +            5.1.3 [🏃🚪Exiting F.A.K.E.J.A.R.V.I.S. : `exit`](#exiting-f-a-k-e-j-a-r-v-i-s-exit) +            5.1.4 [💾Saving the Data](#saving-the-data) +            5.1.5 [🛠️Editing the Data File](#editing-the-data-file) +            5.1.6 [💾Archiving Data Files `[coming in v2.0]`](#archiving-data-files-coming-in-v2-0)       5.2 [Student Management](#student-management) -            5.2.1 [Adding a Student: `add`](#adding-a-student-add) -            5.2.2 [Listing All Students : `list`](#listing-all-students-list) -            5.2.3 [Editing a Student Field : `edit`](#editing-a-student-field-edit) -            5.2.4 [Locating Student by Name: `find`](#locating-student-by-name-find) -            5.2.5 [Deleting a Student : `delete`](#deleting-a-student-delete) -            5.2.6 [Clearing all Entries : `clear`](#clearing-all-entries-clear) +            5.2.1 [📝Adding a Student: `add`](#adding-a-student-add) +            5.2.2 [👀Listing All Students : `list`](#listing-all-students-list) +            5.2.3 [🛠️Editing a Student Field : `edit`](#editing-a-student-field-edit) +            5.2.4 [🔎Locating Student by Name: `find`](#locating-student-by-name-find) +            5.2.5 [❌Deleting a Student : `delete`](#deleting-a-student-delete) +            5.2.6 [🗑️Clearing all Entries : `clear`](#clearing-all-entries-clear)       5.3 [Task Management](#task-management) -            5.3.1 [Adding a Task: `addtask`](#adding-a-task-addtask) -            5.3.2 [Viewing Tasks: `viewtasks`](#viewing-tasks-viewtasks) -            5.3.3 [Updating a Task's Progress: `updateprogress`](#updating-a-task-s-progress-updateprogress) -            5.3.4 [Deleting a Task: `deletetask`](#deleting-a-task-deletetask) +            5.3.1 [📝Adding a Task: `addtask`](#adding-a-task-addtask) +            5.3.2 [👀Viewing Tasks: `viewtasks`](#viewing-tasks-viewtasks) +            5.3.3 [🛠️Updating a Task's Progress: `updateprogress`](#updating-a-task-s-progress-updateprogress) +            5.3.4 [❌Deleting a Task: `deletetask`](#deleting-a-task-deletetask)       5.4 [Attendance Management](#attendance-management) -            5.4.1 [Taking Attendance: `takeattendance`](#taking-attendance-takeattendance) -            5.4.2 [Viewing Attendance: `viewattendance`](#viewing-attendance-viewattendance) +            5.4.1 [📆Taking Attendance: `takeattendance`](#taking-attendance-takeattendance) +            5.4.2 [👀Viewing Attendance: `viewattendance`](#viewing-attendance-viewattendance)       5.5 [Assignment Management](#assignment-management) -            5.5.1 [Viewing a list of Assignments: `viewassignments`](#viewing-a-list-of-assignments-viewassignments) -            5.5.2 [Editing an Assignment Grade: `editgrade`](#editing-an-assignment-grade-editgrade) -            5.5.3 [Deleting an Assignment Grade: `deletegrade`](#deleting-an-assignment-grade-deletegrade) -            5.5.4 [Editing an Assignment Comment: `editcomment`](#editing-an-assignment-comment-editcomment) -            5.5.5 [Deleting an Assignment Comment: `deletecomment`](#deleting-an-assignment-comment-deletecomment) +            5.5.1 [👀Viewing a list of Assignments: `viewassignments`](#viewing-a-list-of-assignments-viewassignments) +            5.5.2 [🛠️Editing an Assignment Grade: `editgrade`](#editing-an-assignment-grade-editgrade) +            5.5.3 [❌Deleting an Assignment Grade: `deletegrade`](#deleting-an-assignment-grade-deletegrade) +            5.5.4 [🛠️Editing an Assignment Comment: `editcomment`](#editing-an-assignment-comment-editcomment) +            5.5.5 [❌Deleting an Assignment Comment: `deletecomment`](#deleting-an-assignment-comment-deletecomment)       5.6 [Graded Test Management](#graded-test-management) -            5.6.1 [Editing a Graded Test Score: `editgradedtest`](#editing-a-graded-test-score-editgradedtest) +            5.6.1 [🛠️Editing a Graded Test Score: `editgradedtest`](#editing-a-graded-test-score-editgradedtest)       5.7 [Session Management](#session-management) -            5.7.1 [Creating a Session: `createsession`](#creating-a-session-createsession) -            5.7.2 [Updating a Session's Remark: `updatesessionremark`](#updating-a-session-s-remark-updatesessionremark) -            5.7.3 [Deleting a Session: `deletesession`](#deleting-a-session-deletesession) +            5.7.1 [📝Creating a Session: `createsession`](#creating-a-session-createsession) +            5.7.2 [🛠️Updating a Session's Remark: `updatesessionremark`](#updating-a-session-s-remark-updatesessionremark) +            5.7.3 [❌Deleting a Session: `deletesession`](#deleting-a-session-deletesession)       5.8 [Consultation Management](#consultation-management) -            5.8.1 [Creating a Consultation: `createconsult`](#creating-a-consultation-createconsult) -            5.8.2 [Adding students to a consultation: `addtoconsult`](#adding-students-to-a-consultation-addtoconsult) -            5.8.3 [Removing Students from a Consultation: `removefromconsult`](#removing-students-from-a-consultation-removefromconsult) -            5.8.4 [Deleting a Consultation: `deleteconsult`](#deleting-a-consultation-deleteconsult) +            5.8.1 [📝Creating a Consultation: `createconsult`](#creating-a-consultation-createconsult) +            5.8.2 [📝Adding students to a consultation: `addtoconsult`](#adding-students-to-a-consultation-addtoconsult) +            5.8.3 [❌Removing Students from a Consultation: `removefromconsult`](#removing-students-from-a-consultation-removefromconsult) +            5.8.4 [❌Deleting a Consultation: `deleteconsult`](#deleting-a-consultation-deleteconsult)  6 [FAQ](#faq)  7 [Known Issues](#known-issues)  8 [Command Summary](#command-summary) @@ -101,7 +92,7 @@ If you are new to CLI, or unfamiliar with the commands F.A.K.E.J.A.R.V.I.S. offe

-### How to use the User Guide +## How to use the User Guide You may refer to the **Table of Contents** on the right for easy navigation of the User Guide. The F.A.K.E.J.A.R.V.I.S. User Guide employs a variety of visual cues to enhance the information it presents. The table below offers an overview of the typographical conventions used. @@ -109,33 +100,37 @@ The F.A.K.E.J.A.R.V.I.S. User Guide employs a variety of visual cues to enhance
-|
**Convention**
|
**Description**
| -|---------------------------------|---------------------------------------------------------------------------------| -|
`Monospace`
|
Used for command inputs, syntax, and file paths.
| -|
**Bold text**
|
Highlights important keywords.
| -|
[Hyperlink](#)
|
Indicates hyperlinks to external websites or within the guide.
| +| **Convention** | **Description** | +|:--------------:|:--------------------------------------------------------------:| +| `Monospace` | Used for command inputs, syntax, and file paths. | +| **Bold text** | Highlights important keywords. | +| [Hyperlink](#) | Indicates hyperlinks to external websites or within the guide. |
-|
**Convention**
|
**Description**
| -|------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------| -|
**
:information_source: Note
**
|
Provides information of special interest or importance.
| -|
**
:bangbang: Warning
**
|
Alerts to potentially irreversible actions with data loss risk.
| +| **Convention** | **Description** | +|:-----------------------------------------------------------------------------------:|:---------------------------------------------------------------:| +| **
:information_source: Note
** | Provides information of special interest or importance. | +| **
:bangbang: Warning
** | Alerts to potentially irreversible actions with data loss risk. |
-|
**Convention**
|
**Description**
| -|---------------------------------|------------------------------------------------| -|
📝
|
Add
Create
| -|
|
Delete
Remove
| -|
🛠️
|
Edit
Modify
Update | -|
🔎
|
Find
| -|
📆
|
Take Attendance
| -|
👀
|
View
Display
List
| +| **Convention** | **Description** | +|:--------------:|:------------------------------:| +| 🏃🚪 | Exit | +| 🔀 | Switch Tabs | +| 💾 | Save Data
Archive Data | +| 📝 | Add
Create | +| ❌ | Delete
Remove | +| 🛠️ | Edit
Modify
Update | +| 🔎 | Find | +| 📆 | Take Attendance | +| 👀 | View
Display
List | +| 🗑️ | Clear | @@ -273,31 +268,31 @@ The following describes what each panel contains: Most commands given in the user guide utilise various parameters which are also known as prefixes. To add a prefix to your command, follow this format: `PREFIX/MESSAGE`. Their prefixes and their respective constraints are given in the table below. -|
**Field**
|
**Prefix**
|
**Commands**
|
**Description**
| -|---------------------------------------|-----------------------------|-------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -|
NAME
|
`n/`
| `add` `edit` `addtoconsult` `createconsult` `removefromconsult` `createsession` `takeattendance` `viewattendance` | The Name of a student. | -|
PHONE
|
`p/`
| `add` `edit` | The Phone number of a student. | -|
EMAIL
|
`e/`
| `add` `edit` | The Email of a student. | -|
TELEGRAM_HANDLE
|
`th/`
| `add` `edit` | The Telegram handle of a student. | -|
TAG
|
`t/`
| `add` `edit` | The Tag belonging to a student. | -|
GRADED_TEST
|
`gt/`
| `add` `edit` | The scores of respective graded tests. | -|
READING_ASSESSMENT_1
|
`ra1/`
| `editgradedtest` | The score of Reading Assessment 1. | -|
READING_ASSESSMENT_2
|
`ra2/`
| `editgradedtest` | The score of Reading Assessment 2. | -|
MIDTERMS
|
`mt/`
| `editgradedtest` | The score of a Midterms exam. | -|
FINALS
|
`f/`
| `editgradedtest` | The score of a Finals exam. | -|
PRACTICAL_EXAM
|
`pe/`
| `editgradedtest` | The score of a Practical exam. | -|
ASSIGNMENT
|
`as/`
| `deletecomment` `editcomment` `editgrade` | The name of an Assignment. | -|
GRADE
|
`g/`
| `editgrade` | The grade of an Assignment. | -|
COMMENT
|
`c/`
| `editcomment` | The Comment of an Assignment. | -|
DATE
|
`d/`
| `addtask` `viewtasks` `createconsult` | The Date. | -|
TIME
|
`tt/`
| `createconsult` | The Time. | -|
SESSION
|
`s/`
| `createsession` `deletesession` `takeattendance` `updatesessionremark` | The Session Number of a Tutorial. | -|
SESSION_REMARK
|
`r/`
| `updatesessionremark` | The remarks of a Session. | -|
ATTENDANCE_PRESENCE
|
`ap/`
| `takeattendance` | The presence of a student. | -|
TASK_NAME
|
`tn/`
| `addtask` `viewtasks` | The name of a Task. | -|
TASK_DESCRIPTION
|
`td/`
| `addtask` `viewtasks` | The description of a Task. | -|
TASK_PRIORITY
|
`tp/`
| `addtask` `viewtasks` | The priority of a Task. | -|
TASK_PROGRESS
|
`tprog/`
| `addtask` `viewtasks` `updateprogress` | The progress of a Task. | +| **Field** | **Prefix** | **Commands** | **Description** | +|:--------------------:|:----------:|:-----------------------------------------------------------------------------------------------------------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| NAME | `n/` | `add` `edit` `addtoconsult` `createconsult` `removefromconsult` `createsession` `takeattendance` `viewattendance` | The Name of a student. | +| PHONE | `p/` | `add` `edit` | The Phone number of a student. | +| EMAIL | `e/` | `add` `edit` | The Email of a student. | +| TELEGRAM_HANDLE | `th/` | `add` `edit` | The Telegram handle of a student. | +| TAG | `t/` | `add` `edit` | The Tag belonging to a student. | +| GRADED_TEST | `gt/` | `add` `edit` | The scores of respective graded tests. | +| READING_ASSESSMENT_1 | `ra1/` | `editgradedtest` | The score of Reading Assessment 1. | +| READING_ASSESSMENT_2 | `ra2/` | `editgradedtest` | The score of Reading Assessment 2. | +| MIDTERMS | `mt/` | `editgradedtest` | The score of a Midterms exam. | +| FINALS | `f/` | `editgradedtest` | The score of a Finals exam. | +| PRACTICAL_EXAM | `pe/` | `editgradedtest` | The score of a Practical exam. | +| ASSIGNMENT | `as/` | `deletecomment` `editcomment` `editgrade` | The name of an Assignment. | +| GRADE | `g/` | `editgrade` | The grade of an Assignment. | +| COMMENT | `c/` | `editcomment` | The Comment of an Assignment. | +| DATE | `d/` | `addtask` `viewtasks` `createconsult` | The Date. | +| TIME | `tt/` | `createconsult` | The Time. | +| SESSION | `s/` | `createsession` `deletesession` `takeattendance` `updatesessionremark` | The Session Number of a Tutorial. | +| SESSION_REMARK | `r/` | `updatesessionremark` | The remarks of a Session. | +| ATTENDANCE_PRESENCE | `ap/` | `takeattendance` | The presence of a student. | +| TASK_NAME | `tn/` | `addtask` `viewtasks` | The name of a Task. | +| TASK_DESCRIPTION | `td/` | `addtask` `viewtasks` | The description of a Task. | +| TASK_PRIORITY | `tp/` | `addtask` `viewtasks` | The priority of a Task. | +| TASK_PROGRESS | `tprog/` | `addtask` `viewtasks` `updateprogress` | The progress of a Task. | [Back to Table of Contents](#table-of-contents) @@ -321,15 +316,16 @@ This section describes commands that fit in no special category.

-#### Switching between different tabs: `tab` +#### 🔀Switching between different tabs: `tab` You can navigate between different tabs in F.A.K.E.J.A.R.V.I.S. Format: `tab TAB_INDEX` -|
**Parameter**
|
**Description**
| -|--------------------------------|-----------------------------------------------------| -|
TAB_INDEX
|
The Index of the tab to switch to.
| +| **Parameter** | **Description** | +|:-------------:|:----------------------------------:| +| TAB_INDEX | The Index of the tab to switch to. | +
@@ -337,11 +333,11 @@ Format: `tab TAB_INDEX` :information_source: Note: For the list of tab indexes to use: -* **Students List:** 1 -* **Tasks List:** 2 -* **Assignments List:** 3 -* **Sessions List:** 4 -* **Consultations List:** 5 +* **Students List:** `1` +* **Tasks List:** `2` +* **Assignments List:** `3` +* **Sessions List:** `4` +* **Consultations List:** `5`
@@ -377,7 +373,7 @@ Format: `help`
-#### Exiting F.A.K.E.J.A.R.V.I.S. : `exit` +#### 🏃🚪Exiting F.A.K.E.J.A.R.V.I.S. : `exit` You can exit the F.A.K.E.J.A.R.V.I.S. application, if you're done using the application. @@ -386,14 +382,14 @@ Format: `exit`
-#### Saving the Data +#### 💾Saving the Data F.A.K.E.J.A.R.V.I.S. data are saved in the hard disk automatically after any command that changes the data. There is no need to save data manually.
-#### Editing the Data File +#### 🛠️Editing the Data File F.A.K.E.J.A.R.V.I.S. data are saved automatically as a JSON file `[JAR file location]/data/fakejarvis.json`. Advanced users are welcome to update data directly by editing that data file. @@ -404,7 +400,7 @@ If your changes to the data file makes its format invalid, F.A.K.E.J.A.R.V.I.S.
-#### Archiving Data Files `[coming in v2.0]` +#### 💾Archiving Data Files `[coming in v2.0]` _Stay tuned for more features and enhancements in `v2.0`, including archiving data files and more!_ @@ -425,14 +421,14 @@ You can add a student to F.A.K.E.J.A.R.V.I.S. if you need to keep track of new s Format: `add n/NAME p/PHONE_NUMBER e/EMAIL th/TELEGRAM_HANDLE [t/TAG]…​ [gt/GRADED_TESTS]` -|
**Parameter**
|
**Description**
| -|----------------------------------|--------------------------------------------------------------------------| -|
NAME
|
The name of the student to be added.
| -|
PHONE_NUMBER
|
The phone number of the student.
| -|
EMAIL
|
The email address of the student.
| -|
TELEGRAM_HANDLE
|
The Telegram handle of the student.
| -|
TAG
|
Tags associated with the student.
| -|
GRADED_TESTS
|
Scores of the graded tests associated with the student.
| +| **Parameter** | **Description** | +|:---------------:|:-------------------------------------------------------:| +| NAME | The name of the student to be added. | +| PHONE_NUMBER | The phone number of the student. | +| EMAIL | The email address of the student. | +| TELEGRAM_HANDLE | The Telegram handle of the student. | +| TAG | Tags associated with the student. | +| GRADED_TESTS | Scores of the graded tests associated with the student. |
@@ -493,15 +489,15 @@ You can edit an existing student's fields in F.A.K.E.J.A.R.V.I.S. if you need to Format: `edit STUDENT_INDEX [n/NAME] [p/PHONE] [e/EMAIL] [th/TELEGRAM_HANDLE] [t/TAG]…​ [gt/GRADED_TESTS]` -|
**Parameter**
|
**Description**
| -|----------------------------------|--------------------------------------------------------------------------| -|
STUDENT_INDEX
|
The index of the student to be edited.
| -|
NAME
|
The new name for the student.
| -|
PHONE
|
The new phone number for the student.
| -|
EMAIL
|
The new email address for the student.
| -|
TELEGRAM_HANDLE
|
The new Telegram handle for the student.
| -|
TAG
|
New tags associated with the student.
| -|
GRADED_TESTS
|
Scores of the graded tests associated with the student.
| +| **Parameter** | **Description** | +|:---------------:|:-------------------------------------------------------:| +| STUDENT_INDEX | The index of the student to be edited. | +| NAME | The new name for the student. | +| PHONE | The new phone number for the student. | +| EMAIL | The new email address for the student. | +| TELEGRAM_HANDLE | The new Telegram handle for the student. | +| TAG | New tags associated with the student. | +| GRADED_TESTS | Scores of the graded tests associated with the student. |
@@ -550,9 +546,9 @@ You can find a student in F.A.K.E.J.A.R.V.I.S. if you're looking for certain stu Format: `find KEYWORD…` -|
**Parameter**
|
**Description**
| -|--------------------------------|--------------------------------------------------| -|
KEYWORD
|
The main keyword to search for.
| +| **Parameter** | **Description** | +|:-------------:|:-------------------------------:| +| KEYWORD | The main keyword to search for. |
@@ -596,9 +592,9 @@ Format: `find KEYWORD…` You can delete a specific student from F.A.K.E.J.A.R.V.I.S. if you no longer require their information in the system. Format: `delete STUDENT_INDEX` -|
**Parameter**
|
**Description**
| -|--------------------------------|----------------------------------------------------------| -|
STUDENT_INDEX
|
The index of the student to be deleted.
| +| **Parameter** | **Description** | +|:-------------:|:---------------------------------------:| +| STUDENT_INDEX | The index of the student to be deleted. |
@@ -672,12 +668,12 @@ You can add a task to your task list if you have a new item to include in your l Format: `addtask tn/TASK_NAME td/TASK_DESCRIPTION d/DUE_DATE tp/TASK_PRIORITY` -|
**Parameter**
|
**Description**
| -|-----------------------------------|--------------------------------------------------------------------------------------| -|
TASK_NAME
|
The name of the task.
| -|
TASK_DESCRIPTION
|
The description of the task.
| -|
DUE_DATE
|
The due date or deadline of the task.
| -|
TASK_PRIORITY
|
The priority level of the task. Given as `high`, `medium` or `low`.
| +| **Parameter** | **Description** | +|:----------------:|:-------------------------------------------------------------------:| +| TASK_NAME | The name of the task. | +| TASK_DESCRIPTION | The description of the task. | +| DUE_DATE | The due date or deadline of the task. | +| TASK_PRIORITY | The priority level of the task. Given as `high`, `medium` or `low`. |
@@ -710,13 +706,13 @@ You can view your list of tasks if you want to check and manage your current set Format: `viewtasks [tn/TASK_NAME] / [td/TASK_DESCRIPTION] / [d/DUE_DATE] / [tp/TASK_PRIORITY] / [tprog/TASK_PROGRESS]` -|
**Parameter**
|
**Description**
| -|-----------------------------------|-----------------------------------------------------------------------------------------------| -|
TASK_NAME
|
The name of the task.
| -|
TASK_DESCRIPTION
|
The description of the task.
| -|
DUE_DATE
|
The due date or deadline of the task.
| -|
TASK_PRIORITY
|
The priority level of the task. Given as `high`, `medium` or `low`.
| -|
TASK_PROGRESS
|
The progress level of the task. Given as `done`, `pending` or `not_started`.
| +| **Parameter** | **Description** | +|:----------------:|:----------------------------------------------------------------------------:| +| TASK_NAME | The name of the task. | +| TASK_DESCRIPTION | The description of the task. | +| DUE_DATE | The due date or deadline of the task. | +| TASK_PRIORITY | The priority level of the task. Given as `high`, `medium` or `low`. | +| TASK_PROGRESS | The progress level of the task. Given as `done`, `pending` or `not_started`. |
@@ -775,10 +771,10 @@ You can update a task's progress if there are changes to the status of a particu Format: `updateprogress TASK_INDEX tprog/NEW_PROGRESS` -|
**Parameter**
|
**Description**
| -|--------------------------------|----------------------------------------------------------------------------------------------------| -|
TASK_INDEX
|
The index of the task to update the progress.
| -|
NEW_PROGRESS
|
The new progress level of the task. Given as `done`, `pending`, or `not_started`.
| +| **Parameter** | **Description** | +|:-------------:|:---------------------------------------------------------------------------------:| +| TASK_INDEX | The index of the task to update the progress. | +| NEW_PROGRESS | The new progress level of the task. Given as `done`, `pending`, or `not_started`. |
@@ -824,9 +820,9 @@ You can delete a task from your task list if you no longer need to keep it on yo Format: `deletetask TASK_INDEX` -|
**Parameter**
|
**Description**
| -|--------------------------------|-------------------------------------------| -|
TASK_INDEX
|
The index of the task to delete.
| +| **Parameter** | **Description** | +|:-------------:|:--------------------------------:| +| TASK_INDEX | The index of the task to delete. |
@@ -882,11 +878,11 @@ You can take the attendance of your student(s) if you need to record their prese Format: `takeattendance n/STUDENT_NAME s/SESSION_NUMBER ap/PRESENCE` -|
**Parameter**
|
**Description**
| -|---------------------------------|----------------------------------------------------------------------------------------| -|
STUDENT_NAME
|
The name of the student.
| -|
SESSION_NUMBER
|
The session number of the session.
| -|
PRESENCE
|
The attendance status of the student. Given as `present` or `absent`.
| +| **Parameter** | **Description** | +|:--------------:|:---------------------------------------------------------------------:| +| STUDENT_NAME | The name of the student. | +| SESSION_NUMBER | The session number of the session. | +| PRESENCE | The attendance status of the student. Given as `present` or `absent`. |
@@ -929,9 +925,9 @@ You can view the attendance list of your students if you want to check and revie Format: `viewattendance [n/STUDENT_NAME]…` -|
**Parameter**
|
**Description**
| -|--------------------------------|---------------------------------------------------------------------------------| -|
STUDENT_NAME
|
The name of the student(s) you want to view the attendance of.
| +| **Parameter** | **Description** | +|:-------------:|:--------------------------------------------------------------:| +| STUDENT_NAME | The name of the student(s) you want to view the attendance of. |
@@ -994,9 +990,9 @@ You can view a list of assignment grades and comments if you want to assess and Format: `viewassignments STUDENT_INDEX` -|
**Parameter**
|
**Description**
| -|--------------------------------|--------------------------------------------| -|
STUDENT_INDEX
|
The index of the student.
| +| **Parameter** | **Description** | +|:-------------:|:-------------------------:| +| STUDENT_INDEX | The index of the student. |
@@ -1040,11 +1036,11 @@ You can edit your student's assignment grade if there is a need to make adjustme Format: `editgrade STUDENT_INDEX as/ASSIGNMENT g/GRADE` -|
**Parameter**
|
**Description**
| -|--------------------------------|----------------------------------------------| -|
STUDENT_INDEX
|
The index of the student.
| -|
ASSIGNMENT
|
The name of the assignment.
| -|
GRADE
|
The score of the student.
| +| **Parameter** | **Description** | +|:-------------:|:---------------------------:| +| STUDENT_INDEX | The index of the student. | +| ASSIGNMENT | The name of the assignment. | +| GRADE | The score of the student. |
@@ -1089,10 +1085,10 @@ You can delete your student's assignment grade if you need to remove or reset th Format: `deletegrade STUDENT_INDEX as/ASSIGNMENT` -|
**Parameter**
|
**Description**
| -|--------------------------------|----------------------------------------------| -|
STUDENT_INDEX
|
The index of the student.
| -|
ASSIGNMENT
|
The name of the assignment.
| +| **Parameter** | **Description** | +|:-------------:|:---------------------------:| +| STUDENT_INDEX | The index of the student. | +| ASSIGNMENT | The name of the assignment. |
@@ -1138,11 +1134,11 @@ You can edit the comment of your student's assignment if you need to make change Format: `editcomment STUDENT_INDEX as/ASSIGNMENT c/COMMENT` -|
**Parameter**
|
**Description**
| -|--------------------------------|----------------------------------------------| -|
TUDENT_INDEX
|
The index of the student.
| -|
ASSIGNMENT
|
The name of the assignment.
| -|
COMMENT
|
The new comment.
| +| **Parameter** | **Description** | +|:-------------:|:---------------------------:| +| TUDENT_INDEX | The index of the student. | +| ASSIGNMENT | The name of the assignment. | +| COMMENT | The new comment. |
@@ -1189,10 +1185,10 @@ You can delete the comment tagged to your student's assignment if you want to re Format: `deletecomment STUDENT_INDEX as/ASSIGNMENT` -|
**Parameter**
|
**Description**
| -|--------------------------------|----------------------------------------------| -|
STUDENT_INDEX
|
The index of the student.
| -|
ASSIGNMENT
|
The name of the assignment.
| +| **Parameter** | **Description** | +|:-------------:|:---------------------------:| +| STUDENT_INDEX | The index of the student. | +| ASSIGNMENT | The name of the assignment. |
@@ -1248,14 +1244,14 @@ You can edit your student's graded test scores if you need to make adjustments o Format: `editgradedtest INDEX [ra1/READING_ASSESSMENT_1] [ra2/READING_ASSESSMENT_2] [mt/MIDTERMS] [f/FINALS] [pe/PRACTICALEXAM] ` -|
**Parameter**
|
**Description**
| -|---------------------------------------|-------------------------------------------------------------------| -|
STUDENT_INDEX
|
The index of the student.
| -|
READING_ASSESSMENT_1
|
The score of the student's Reading Assessment 1.
| -|
READING_ASSESSMENT_2
|
The score of the student's Reading Assessment 2.
| -|
MIDTERMS
|
The score of the student's MidTerms.
| -|
FINALS
|
The score of the student's Final Assessment.
| -|
PRACTICALEXAM
|
The score of the student's Practical Exams.
| +| **Parameter** | **Description** | +|:--------------------:|:------------------------------------------------:| +| STUDENT_INDEX | The index of the student. | +| READING_ASSESSMENT_1 | The score of the student's Reading Assessment 1. | +| READING_ASSESSMENT_2 | The score of the student's Reading Assessment 2. | +| MIDTERMS | The score of the student's MidTerms. | +| FINALS | The score of the student's Final Assessment. | +| PRACTICALEXAM | The score of the student's Practical Exams. |
@@ -1312,10 +1308,10 @@ You can create a session for any upcoming or past sessions if you need to schedu Format: `createsession s/SESSION_NUMBER n/STUDENT_NAME…` -|
**Parameter**
|
**Description**
| -|---------------------------------|-----------------------------------------------------| -|
SESSION_NUMBER
|
The session number of the session.
| -|
STUDENT_NAME
|
The name of the student(s).
| +| **Parameter** | **Description** | +|:--------------:|:----------------------------------:| +| SESSION_NUMBER | The session number of the session. | +| STUDENT_NAME | The name of the student(s). |
@@ -1359,10 +1355,10 @@ You can update an existing session's remark if you need to change or add additio Format: `updatesessionremark s/SESSION_NUMBER r/REMARK` -|
**Parameter**
|
**Description**
| -|---------------------------------|----------------------------------------------------------------| -|
SESSION_NUMBER
|
The session number of the session.
| -|
REMARK
|
The new remark to be updated for the session.
| +| **Parameter** | **Description** | +|:--------------:|:---------------------------------------------:| +| SESSION_NUMBER | The session number of the session. | +| REMARK | The new remark to be updated for the session. |
@@ -1406,9 +1402,9 @@ You can delete an existing session specified by its session number if you need t Format: `deletesession s/SESSION_NUMBER` -|
**Parameter**
|
**Description**
| -|---------------------------------|-----------------------------------------------------| -|
SESSION_NUMBER
|
The session number of the session.
| +| **Parameter** | **Description** | +|:--------------:|:----------------------------------:| +| SESSION_NUMBER | The session number of the session. |
@@ -1458,11 +1454,11 @@ You can create a consultation for any upcoming consultations if you need to sche Format: `createconsult d/DATE tt/TIME n/STUDENT_NAME…` -|
**Parameter**
|
**Description**
| -|--------------------------------|----------------------------------------------| -|
DATE
|
The date of consultation.
| -|
TIME
|
The time of consultation.
| -|
STUDENT_NAME
|
The name of the student(s).
| +| **Parameter** | **Description** | +|:--------------:|:---------------------------:| +| DATE | The date of consultation. | +| TIME | The time of consultation. | +| STUDENT_NAME | The name of the student(s). |
@@ -1505,10 +1501,10 @@ You can add your student(s) into a consultation slot if you need to schedule or Format: `addtoconsult CONSULTATION_INDEX n/STUDENT_NAME…` -|
**Parameter**
|
**Description**
| -|-------------------------------------|-------------------------------------------------------------------------------| -|
CONSULTATION_INDEX
|
The index of the consultation in the upcoming
consultations. | -|
STUDENT_NAME
|
The name of the student to be added to the consultation.
| +| **Parameter** | **Description** | +|:------------------:|:------------------------------------------------------------:| +| CONSULTATION_INDEX | The index of the consultation in the upcoming consultations. | +| STUDENT_NAME | The name of the student to be added to the consultation. |
@@ -1554,10 +1550,10 @@ You can remove your student(s) from a consultation if you need to reschedule or Format: `removefromconsult CONSULTATION_INDEX n/STUDENT_NAME…` -|
**Parameter**
|
**Description**
| -|-------------------------------------|-------------------------------------------------------------------------------| -|
CONSULTATION_INDEX
|
The index of the consultation in the upcoming consultations.
| -|
STUDENT_NAME
|
The name of the student to be added to the consultation.
| +| **Parameter** | **Description** | +|:------------------:|:------------------------------------------------------------:| +| CONSULTATION_INDEX | The index of the consultation in the upcoming consultations. | +| STUDENT_NAME | The name of the student to be added to the consultation. |
@@ -1592,9 +1588,9 @@ You can delete the consultation slot specified by an index if you need to remove Format: `deleteconsult CONSULTATION_INDEX` -|
**Parameter**
|
**Description**
| -|-------------------------------------|-------------------------------------------------------------------------------| -|
CONSULTATION_INDEX
|
The index of the consultation in the upcoming
consultations. | +| **Parameter** | **Description** | +|:------------------:|:------------------------------------------------------------:| +| CONSULTATION_INDEX | The index of the consultation in the upcoming consultations. |
@@ -1650,33 +1646,33 @@ Format: `deleteconsult CONSULTATION_INDEX` ## Command summary -|
**Action**
|
**Format**
|
**Examples**
| -|--------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------| -|
**Add**
| `add n/NAME p/PHONE_NUMBER e/EMAIL th/TELEGRAM_HANDLE [t/TAG]…​ [gt/GRADED_TESTS]`
| `add n/James Ho p/12345678 e/jamesho@u.nus.edu th/james03 t/friend t/colleague gt/default` | -|
**Clear**
| `clear` | `clear` | -|
**Delete**
| `delete STUDENT_INDEX`
| `delete 3` | -|
**Edit**
| `edit STUDENT_INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [th/TELGRAM_HANDLE] [t/TAG]…[gt/GRADEDTEST]` | `edit 2 n/James Lee e/jameslee@u.nus.edu gt/default` | -|
**Find**
| `find KEYWORD [MORE_KEYWORDS]`
| `find John`
`find alex david` | -|
**List**
| `list` | `list` | -|
**Add Task**
| `addtask tn/TASK_NAME td/TASK_DESCRIPTION d/DUE_DATE tp/TASK_PRIORITY` | `addtask tn/Prepare Lecture slides d/30/09/2023 tp/high`,
`addtask tn/Read Chapter 5` | -|
**View Tasks**
| `viewtasks [tn/TASK_NAME] / [td/TASK_DESCRIPTION] / [d/DUE_DATE] / [tp/TASK_PRIORITY] /
[tprog/TASK_PROGRESS]` | `viewtasks`,
`viewtasks tp/high`,
`viewtasks d/30/09/2023` | -|
**Update Progress**
| `updateprogress TASK_INDEX tprog/NEW_PROGRESS` | `updateprogress 1 tprog/pending`,
`updateprogress 3 tprog/done` | -|
**Delete Task**
| `deletetask TASK_INDEX` | `deletetask 3`,
`deletetask 2` | -|
**View Grade**
| `viewgrade STUDENT_INDEX as/ASSIGNMENT` | `viewgrade 1 as/Functional Expressionism`,
`viewgrade 2 as/Rune Reading` | -|
**Edit Grade**
| `editgrade STUDENT_INDEX as/ASSIGNMENT g/GRADE` | `editgrade 1 as/Functional Expressionism g/1200`,
`editgrade 2 as/Rune Reading g/1000` | -|
**Delete Grade**
| `deletegrade STUDENT_INDEX as/ASSIGNMENT` | `deletegrade 1 as/Functional Expressionism`,
`deletegrade 2 as/Rune Reading` | -|
**Edit Comment**
| `editcomment STUDENT_INDEX as/ASSIGNMENT c/COMMENT` | `editcomment 1 as/Functional Expressionism c/Decent`,
`editcomment 2 as/Rune Reading c/Great` | -|
**Delete Comment**
| `deletecomment STUDENT_INDEX as/ASSIGNMENT` | `deletecomment 1 as/Functional Expressionism`,
`deletecomment 2 as/Rune Reading` | -|
**Edit Graded Test**
| `editgradedtest STUDENT_INDEX [ra1/READING_ASSESSMENT_1] [ra2/READING_ASSESSMENT_2] [mt/MIDTERMS] [f/FINALS] [pe/PRACTICALEXAM]` | `editgradedtest 1 ra1/90 ra2/80 mt/85 f/88 pe/95`,
`editgradedtest 2 ra1/88 ra2/92 mt/78 f/80 pe/89` | -|
**Take Attendance**
| `takeattendance n/STUDENT_NAME s/SESSION p/PRESENCE` | `takeattendance n/John Doe s/5 present`,
`takeattendance n/Foo Bar s/2 absent` | -|
**View Attendance**
| `viewattendance [n/STUDENT_NAME]…` | `viewattendance`,
`viewattendance n/Rayan`,
`viewattendance n/Jayson Resley` | -|
**Create Consultation**
| `createconsult d/DATE tt/TIME n/STUDENT_NAME…` | `createconsult d/30/10/2023 tt/12:30 n/Alex Yeoh`,
`createconsult d/30/09/2023 tt/15:30 n/Alex Yeoh n/Betsy Crower n/David Li` | -|
**Add To Consult**
| `addtoconsult CONSULTATION_INDEX n/STUDENT_NAME…`
| `addtoconsult 2 n/Betsy Crower`,
`addtoconsult 1 n/David Li n/Roy Balakrishnan` | -|
**Remove From Consult**
| `removefromconsult CONSULTATION_INDEX n/STUDENT_NAME…` | `removefromconsult 2 n/Betsy Crower` | -|
**Delete Consult**
| `deleteconsult CONSULTATION_INDEX` | `deleteconsult 1` | -|
**Create Session**
| `createsession s/SESSION_NUMBER n/STUDENT_NAME…` | `createsession s/4 n/Betsy Crower n/David Li` | -|
**Update Session Remark**
| `updatesessionremark s/SESSION_NUMBER r/REMARK` | `updatesessionremark s/2 r/Teach Essence of Recursion`,
`updatesessionremark s/4 r/Taught streams and metacircular evalutator` | -|
**Delete Session**
| `deletesession s/SESSION_NUMBER` | `deletesession s/1`,
`deletesession s/4` | +| **Action** | **Format** | **Examples** | +|:-------------------------:|:--------------------------------------------------------------------------------------------------------------------------------:|------------------------------------------------------------------------------------------------------------------------------------| +| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL th/TELEGRAM_HANDLE [t/TAG]…​ [gt/GRADED_TESTS]` | `add n/James Ho p/12345678 e/jamesho@u.nus.edu th/james03 t/friend t/colleague gt/default` | +| **Clear** | `clear` | `clear` | +| **Delete** | `delete STUDENT_INDEX` | `delete 3` | +| **Edit** | `edit STUDENT_INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [th/TELGRAM_HANDLE] [t/TAG]…[gt/GRADEDTEST]` | `edit 2 n/James Lee e/jameslee@u.nus.edu gt/default` | +| **Find** | `find KEYWORD [MORE_KEYWORDS]` | `find John`
`find alex david` | +| **List** | `list` | `list` | +| **Add Task** | `addtask tn/TASK_NAME td/TASK_DESCRIPTION d/DUE_DATE tp/TASK_PRIORITY` | `addtask tn/Prepare Lecture slides d/30/09/2023 tp/high`,
`addtask tn/Read Chapter 5` | +| **View Tasks** | `viewtasks [tn/TASK_NAME] / [td/TASK_DESCRIPTION] / [d/DUE_DATE] / [tp/TASK_PRIORITY] /
[tprog/TASK_PROGRESS]` | `viewtasks`,
`viewtasks tp/high`,
`viewtasks d/30/09/2023` | +| **Update Progress** | `updateprogress TASK_INDEX tprog/NEW_PROGRESS` | `updateprogress 1 tprog/pending`,
`updateprogress 3 tprog/done` | +| **Delete Task** | `deletetask TASK_INDEX` | `deletetask 3`,
`deletetask 2` | +| **View Grade** | `viewgrade STUDENT_INDEX as/ASSIGNMENT` | `viewgrade 1 as/Functional Expressionism`,
`viewgrade 2 as/Rune Reading` | +| **Edit Grade** | `editgrade STUDENT_INDEX as/ASSIGNMENT g/GRADE` | `editgrade 1 as/Functional Expressionism g/1200`,
`editgrade 2 as/Rune Reading g/1000` | +| **Delete Grade** | `deletegrade STUDENT_INDEX as/ASSIGNMENT` | `deletegrade 1 as/Functional Expressionism`,
`deletegrade 2 as/Rune Reading` | +| **Edit Comment** | `editcomment STUDENT_INDEX as/ASSIGNMENT c/COMMENT` | `editcomment 1 as/Functional Expressionism c/Decent`,
`editcomment 2 as/Rune Reading c/Great` | +| **Delete Comment** | `deletecomment STUDENT_INDEX as/ASSIGNMENT` | `deletecomment 1 as/Functional Expressionism`,
`deletecomment 2 as/Rune Reading` | +| **Edit Graded Test** | `editgradedtest STUDENT_INDEX [ra1/READING_ASSESSMENT_1] [ra2/READING_ASSESSMENT_2] [mt/MIDTERMS] [f/FINALS] [pe/PRACTICALEXAM]` | `editgradedtest 1 ra1/90 ra2/80 mt/85 f/88 pe/95`,
`editgradedtest 2 ra1/88 ra2/92 mt/78 f/80 pe/89` | +| **Take Attendance** | `takeattendance n/STUDENT_NAME s/SESSION p/PRESENCE` | `takeattendance n/John Doe s/5 present`,
`takeattendance n/Foo Bar s/2 absent` | +| **View Attendance** | `viewattendance [n/STUDENT_NAME]…` | `viewattendance`,
`viewattendance n/Rayan`,
`viewattendance n/Jayson Resley` | +| **Create Consultation** | `createconsult d/DATE tt/TIME n/STUDENT_NAME…` | `createconsult d/30/10/2023 tt/12:30 n/Alex Yeoh`,
`createconsult d/30/09/2023 tt/15:30 n/Alex Yeoh n/Betsy Crower n/David Li` | +| **Add To Consult** | `addtoconsult CONSULTATION_INDEX n/STUDENT_NAME…` | `addtoconsult 2 n/Betsy Crower`,
`addtoconsult 1 n/David Li n/Roy Balakrishnan` | +| **Remove From Consult** | `removefromconsult CONSULTATION_INDEX n/STUDENT_NAME…` | `removefromconsult 2 n/Betsy Crower` | +| **Delete Consult** | `deleteconsult CONSULTATION_INDEX` | `deleteconsult 1` | +| **Create Session** | `createsession s/SESSION_NUMBER n/STUDENT_NAME…` | `createsession s/4 n/Betsy Crower n/David Li` | +| **Update Session Remark** | `updatesessionremark s/SESSION_NUMBER r/REMARK` | `updatesessionremark s/2 r/Teach Essence of Recursion`,
`updatesessionremark s/4 r/Taught streams and metacircular evalutator` | +| **Delete Session** | `deletesession s/SESSION_NUMBER` | `deletesession s/1`,
`deletesession s/4` |
@@ -1691,14 +1687,14 @@ Format: `deleteconsult CONSULTATION_INDEX` ## Encountering Errors This section outlines a list of error messages that you may encounter during your usage of the application. It aims to help you better understand the messages that you may receive and what it means to you. -|
Error
|
What it means
|
How to resolve
| -|--------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------| -|
**Unknown command**
| You have supplied a command that was unrecognisable.
E.g., Command word was given in upper case. | 1. Double-check the spelling and case of the command.
2. Refer to the [features](#features) section above for the correct commands. | -|
**Invalid command format!**
| You have supplied a command with the incorrect format.
E.g., Command is missing the compulsory parameters. | 1. Double-check the command format and the parameters required.
2. Refer to the [features](#features) section above for the correct command formats. | -|
**The Index provided is invalid**
| You have provided an index that is out of the range of the items. | 1. Only provide Indexes that are within the range of the list.
E.g., if there are 3 items in the list, the valid indexes that can be used are (1, 2, 3). | -|
**At least one field to edit must be provided.**
| You have not provided a field to edit. | 1. Double-check that a prefix and a field was provided together with the command. | -|
**This `task` / `person` already exists in the `task list` / `students list`.**
| You have tried to either add a duplicate entry with the same fields, or edit an entry such that all the fields are duplicates of an existing entry. | 1. Double-check that the fields supplied are correct.
2. Remove the old entry from F.A.K.E.J.A.R.V.I.S. | -|
**Date needs to be in the format dd/MM/yyyy, or date has already crossed.**
| You have either supplied the date in an unrecognisable format, or provided a date that is in the past. | 1. Double-check that the format of the date provided is dd/MM/yyyy (e.g. 28/10/2023)
2. Choose a date from today or later. | -|
**Time needs to be in the format HH:mm.**
| You have supplied the time in an unrecognisable format. | 1. Double-check that the format of the time provided is HH:mm (e.g. 22:00) | +| Error | What it means | How to resolve | +|:-------------------------------------------------------------------------------:|-----------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Unknown command** | You have supplied a command that was unrecognisable.
E.g., Command word was given in upper case. | 1. Double-check the spelling and case of the command.
2. Refer to the [features](#features) section above for the correct commands. | +| **Invalid command format!** | You have supplied a command with the incorrect format.
E.g., Command is missing the compulsory parameters. | 1. Double-check the command format and the parameters required.
2. Refer to the [features](#features) section above for the correct command formats. | +| **The Index provided is invalid** | You have provided an index that is out of the range of the items. | 1. Only provide Indexes that are within the range of the list.
E.g., if there are 3 items in the list, the valid indexes that can be used are (1, 2, 3). | +| **At least one field to edit must be provided.** | You have not provided a field to edit. | 1. Double-check that a prefix and a field was provided together with the command. | +| **This `task` / `person` already exists in the `task list` / `students list`.** | You have tried to either add a duplicate entry with the same fields, or edit an entry such that all the fields are duplicates of an existing entry. | 1. Double-check that the fields supplied are correct.
2. Remove the old entry from F.A.K.E.J.A.R.V.I.S. | +| **Date needs to be in the format dd/MM/yyyy, or date has already crossed.** | You have either supplied the date in an unrecognisable format, or provided a date that is in the past. | 1. Double-check that the format of the date provided is dd/MM/yyyy (e.g. 28/10/2023)
2. Choose a date from today or later. | +| **Time needs to be in the format HH:mm.** | You have supplied the time in an unrecognisable format. | 1. Double-check that the format of the time provided is HH:mm (e.g. 22:00) | [Back to Table of Contents](#table-of-contents) diff --git a/docs/stylesheets/main.css b/docs/stylesheets/main.css index c11201b6a03..b83a225cf1a 100644 --- a/docs/stylesheets/main.css +++ b/docs/stylesheets/main.css @@ -135,6 +135,12 @@ mark { } } +table { + width: 60%; + margin-left: auto; + margin-right: auto; +} + h2, h3, h4, diff --git a/src/main/java/seedu/address/model/session/SessionStudents.java b/src/main/java/seedu/address/model/session/SessionStudents.java new file mode 100644 index 00000000000..54c5117a73a --- /dev/null +++ b/src/main/java/seedu/address/model/session/SessionStudents.java @@ -0,0 +1,196 @@ +package seedu.address.model.session; + +import static java.util.Objects.requireNonNull; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.stream.Stream; + +import seedu.address.model.person.Person; + +/** + * Represents a collection of students in a session. This class provides methods for managing and manipulating + * the set of students within a session. + */ +public class SessionStudents implements Iterable { + public static final String MESSAGE_CONSTRAINTS = + "Session students must not be null"; + + /** The set of students in the session. */ + public final Set students; + + /** + * Constructs an empty SessionStudents object. + */ + public SessionStudents() { + this.students = new HashSet<>(); + } + + /** + * Constructs a SessionStudents object with a given set of students. + * + * @param students The set of students to initialize the object with. + */ + public SessionStudents(Set students) { + requireNonNull(students); + this.students = students; + } + + /** + * Constructs a SessionStudents object with a single student. + * + * @param student The student to add to the session. + */ + public SessionStudents(Person student) { + requireNonNull(student); + this.students = new HashSet<>(); + this.students.add(student); + } + + + /** + * Constructs a SessionStudents object with an array of students. + * + * @param students The students to add to the session. + */ + public SessionStudents(Person ...students) { + this.students = new HashSet<>(); + for (Person student : students) { + this.students.add(student); + } + } + + /** + * Adds a student to the session. + * + * @param student The student to add. + */ + public void add(Person student) { + this.students.add(student); + } + + /** + * Removes a student from the session. + * + * @param student The student to remove. + */ + public void remove(Person student) { + this.students.remove(student); + } + + /** + * Returns a string containing the names of the students in the session, sorted alphabetically. + * + * @return A string with student names. + */ + public String toStudentNames() { + List studentsArray = new ArrayList<>(students); + studentsArray.sort(Comparator.comparing(p -> p.getName().toString())); + StringBuilder studentNames = new StringBuilder(); + for (Person student : studentsArray) { + studentNames.append(String.format("%s, ", student.getName())); + } + if (!students.isEmpty()) { + studentNames.delete(studentNames.length() - 2, studentNames.length()); + } + return studentNames.toString(); + } + + + /** + * Creates and returns a new SessionStudents object with the same students as this one. + * + * @return A new SessionStudents object with a copy of the students. + */ + public SessionStudents getStudents() { + SessionStudents anotherSet = new SessionStudents(); + for (Person student : students) { + anotherSet.add(student); + } + return anotherSet; + } + + /** + * Checks if the session contains a specific student. + * + * @param student The student to check for existence. + * @return True if the student exists in the session, false otherwise. + */ + public boolean contains(Person student) { + return students.contains(student); + } + + /** + * Provides a stream of students in the session. + * + * @return A stream of students. + */ + public Stream stream() { + return students.stream(); + } + + /** + * Returns the number of students in the session. + * + * @return The number of students in the session. + */ + public int size() { + return students.size(); + } + + /** + * Provides an iterator to iterate through the students in the session. + * + * @return An iterator for the students in the session. + */ + @Override + public Iterator iterator() { + return students.iterator(); + } + + /** + * Returns a string representation of the students in the session. + * + * @return A string representation of the students. + */ + @Override + public String toString() { + return students.toString(); + } + + /** + * Checks if this SessionStudents object is equal to another object. + * + * @param other The object to compare with. + * @return True if the objects are equal, false otherwise. + */ + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof SessionStudents)) { + return false; + } + + SessionStudents otherSessionStudents = (SessionStudents) other; + return students.equals(otherSessionStudents.students); + } + + /** + * Returns the hash code of this SessionStudents object. + * + * @return The hash code of the session students. + */ + @Override + public int hashCode() { + return students.hashCode(); + } + +} diff --git a/src/test/java/seedu/address/model/session/SessionStudentsContainsStudentsPredicateTest.java b/src/test/java/seedu/address/model/session/SessionStudentsContainsStudentsPredicateTest.java new file mode 100644 index 00000000000..c8c04f9dea6 --- /dev/null +++ b/src/test/java/seedu/address/model/session/SessionStudentsContainsStudentsPredicateTest.java @@ -0,0 +1,93 @@ +package seedu.address.model.session; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import org.junit.jupiter.api.Test; + +import seedu.address.model.person.Person; +import seedu.address.testutil.PersonBuilder; +import seedu.address.testutil.SessionBuilder; +import seedu.address.testutil.TypicalPersons; + +public class SessionStudentsContainsStudentsPredicateTest { + + @Test + public void equals() { + Set firstPredicateStudentsSet = Collections.singleton( + new PersonBuilder(TypicalPersons.ALICE).build()); + Set secondPredicateStudentsSet = new HashSet<>(Arrays.asList( + new PersonBuilder(TypicalPersons.ALICE).build(), new PersonBuilder(TypicalPersons.BOB).build())); + + SessionStudentsContainsStudentsPredicate firstPredicate = + new SessionStudentsContainsStudentsPredicate(firstPredicateStudentsSet); + SessionStudentsContainsStudentsPredicate secondPredicate = + new SessionStudentsContainsStudentsPredicate(secondPredicateStudentsSet); + + // same object -> returns true + assertTrue(firstPredicate.equals(firstPredicate)); + + // same values -> returns true + SessionStudentsContainsStudentsPredicate firstPredicateCopy = + new SessionStudentsContainsStudentsPredicate(firstPredicateStudentsSet); + assertTrue(firstPredicate.equals(firstPredicateCopy)); + + // different types -> returns false + assertFalse(firstPredicate.equals(1)); + + // null -> returns false + assertFalse(firstPredicate.equals(null)); + + // different predicate -> returns false + assertFalse(firstPredicate.equals(secondPredicate)); + } + + @Test + public void test_sessionStudentsContainsStudents_returnsTrue() { + // One keyword + Set firstPredicateStudentsSet = Collections.singleton(new PersonBuilder(TypicalPersons.ALICE).build()); + SessionStudentsContainsStudentsPredicate predicate = + new SessionStudentsContainsStudentsPredicate(firstPredicateStudentsSet); + assertTrue(predicate.test(new SessionBuilder().withStudent(TypicalPersons.ALICE).build())); + + // Multiple keywords + Set secondPredicateStudentsSet = new HashSet<>(Arrays.asList( + new PersonBuilder(TypicalPersons.ALICE).build(), new PersonBuilder(TypicalPersons.BOB).build())); + predicate = new SessionStudentsContainsStudentsPredicate(secondPredicateStudentsSet); + assertTrue(predicate.test(new SessionBuilder().withStudents(TypicalPersons.ALICE, TypicalPersons.BOB).build())); + + // Only one matching keyword + predicate = new SessionStudentsContainsStudentsPredicate(secondPredicateStudentsSet); + assertTrue(predicate.test(new SessionBuilder().withStudent(TypicalPersons.BOB).build())); + } + + @Test + public void test_sessionStudentDoesNotContainStudents_returnsFalse() { + // Zero keywords + SessionStudentsContainsStudentsPredicate predicate = + new SessionStudentsContainsStudentsPredicate(Collections.emptySet()); + assertFalse(predicate.test(new SessionBuilder().withStudent(TypicalPersons.CARL).build())); + + // Non-matching keyword + Set studentSet = Collections.singleton(new PersonBuilder().withName("Alice").build()); + predicate = new SessionStudentsContainsStudentsPredicate(studentSet); + assertFalse(predicate.test(new SessionBuilder().withStudent(TypicalPersons.CARL).build())); + } + + @Test + public void toStringMethod() { + Set studentSet = new HashSet<>(Arrays.asList( + new PersonBuilder().withName("student1").build(), new PersonBuilder().withName("student2").build())); + SessionStudentsContainsStudentsPredicate predicate = new SessionStudentsContainsStudentsPredicate(studentSet); + + String expected = SessionStudentsContainsStudentsPredicate.class.getCanonicalName() + + "{session students=" + studentSet + "}"; + assertEquals(expected, predicate.toString()); + } +} diff --git a/src/test/java/seedu/address/model/session/SessionStudentsTest.java b/src/test/java/seedu/address/model/session/SessionStudentsTest.java new file mode 100644 index 00000000000..5f7bdd4080d --- /dev/null +++ b/src/test/java/seedu/address/model/session/SessionStudentsTest.java @@ -0,0 +1,67 @@ +package seedu.address.model.session; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +import seedu.address.model.person.Person; +import seedu.address.testutil.PersonBuilder; + +public class SessionStudentsTest { + + @Test + public void addStudent_validStudent_success() { + SessionStudents sessionStudents = new SessionStudents(); + Person student = new PersonBuilder().withName("Alice").build(); + + sessionStudents.add(student); + assertTrue(sessionStudents.contains(student)); + assertEquals(1, sessionStudents.size()); + } + + @Test + public void removeStudent_validStudent_success() { + SessionStudents sessionStudents = new SessionStudents(); + Person student = new PersonBuilder().withName("Alice").build(); + + sessionStudents.add(student); + assertTrue(sessionStudents.contains(student)); + + sessionStudents.remove(student); + assertFalse(sessionStudents.contains(student)); + assertEquals(0, sessionStudents.size()); + } + + @Test + public void toStudentNames_validSessionStudents_success() { + SessionStudents sessionStudents = new SessionStudents( + new PersonBuilder().withName("Zoe").build(), + new PersonBuilder().withName("Bob").build(), + new PersonBuilder().withName("Alice").build() + ); + + String expected = "Alice, Bob, Zoe"; + assertEquals(expected, sessionStudents.toStudentNames()); + } + + @Test + public void equals() { + SessionStudents sessionStudents1 = new SessionStudents(new PersonBuilder().withName("Alice").build()); + SessionStudents sessionStudents2 = new SessionStudents(new PersonBuilder().withName("Bob").build()); + SessionStudents sessionStudents1Copy = new SessionStudents(new PersonBuilder().withName("Alice").build()); + + // Testing equality with itself + assertTrue(sessionStudents1.equals(sessionStudents1)); + + // Testing equality with an equivalent object + assertTrue(sessionStudents1.equals(sessionStudents1Copy)); + + // Testing equality with a different object + assertFalse(sessionStudents1.equals(sessionStudents2)); + + // Testing equality with null + assertFalse(sessionStudents1.equals(null)); + } +} From 86c527972248ab43a7f13d253a8c309a9511c566 Mon Sep 17 00:00:00 2001 From: raydenlim Date: Fri, 10 Nov 2023 06:54:59 +0800 Subject: [PATCH 2/5] Removed junk files --- .../model/session/SessionStudents.java | 196 ------------------ ...StudentsContainsStudentsPredicateTest.java | 93 --------- .../model/session/SessionStudentsTest.java | 67 ------ 3 files changed, 356 deletions(-) delete mode 100644 src/main/java/seedu/address/model/session/SessionStudents.java delete mode 100644 src/test/java/seedu/address/model/session/SessionStudentsContainsStudentsPredicateTest.java delete mode 100644 src/test/java/seedu/address/model/session/SessionStudentsTest.java diff --git a/src/main/java/seedu/address/model/session/SessionStudents.java b/src/main/java/seedu/address/model/session/SessionStudents.java deleted file mode 100644 index 54c5117a73a..00000000000 --- a/src/main/java/seedu/address/model/session/SessionStudents.java +++ /dev/null @@ -1,196 +0,0 @@ -package seedu.address.model.session; - -import static java.util.Objects.requireNonNull; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.stream.Stream; - -import seedu.address.model.person.Person; - -/** - * Represents a collection of students in a session. This class provides methods for managing and manipulating - * the set of students within a session. - */ -public class SessionStudents implements Iterable { - public static final String MESSAGE_CONSTRAINTS = - "Session students must not be null"; - - /** The set of students in the session. */ - public final Set students; - - /** - * Constructs an empty SessionStudents object. - */ - public SessionStudents() { - this.students = new HashSet<>(); - } - - /** - * Constructs a SessionStudents object with a given set of students. - * - * @param students The set of students to initialize the object with. - */ - public SessionStudents(Set students) { - requireNonNull(students); - this.students = students; - } - - /** - * Constructs a SessionStudents object with a single student. - * - * @param student The student to add to the session. - */ - public SessionStudents(Person student) { - requireNonNull(student); - this.students = new HashSet<>(); - this.students.add(student); - } - - - /** - * Constructs a SessionStudents object with an array of students. - * - * @param students The students to add to the session. - */ - public SessionStudents(Person ...students) { - this.students = new HashSet<>(); - for (Person student : students) { - this.students.add(student); - } - } - - /** - * Adds a student to the session. - * - * @param student The student to add. - */ - public void add(Person student) { - this.students.add(student); - } - - /** - * Removes a student from the session. - * - * @param student The student to remove. - */ - public void remove(Person student) { - this.students.remove(student); - } - - /** - * Returns a string containing the names of the students in the session, sorted alphabetically. - * - * @return A string with student names. - */ - public String toStudentNames() { - List studentsArray = new ArrayList<>(students); - studentsArray.sort(Comparator.comparing(p -> p.getName().toString())); - StringBuilder studentNames = new StringBuilder(); - for (Person student : studentsArray) { - studentNames.append(String.format("%s, ", student.getName())); - } - if (!students.isEmpty()) { - studentNames.delete(studentNames.length() - 2, studentNames.length()); - } - return studentNames.toString(); - } - - - /** - * Creates and returns a new SessionStudents object with the same students as this one. - * - * @return A new SessionStudents object with a copy of the students. - */ - public SessionStudents getStudents() { - SessionStudents anotherSet = new SessionStudents(); - for (Person student : students) { - anotherSet.add(student); - } - return anotherSet; - } - - /** - * Checks if the session contains a specific student. - * - * @param student The student to check for existence. - * @return True if the student exists in the session, false otherwise. - */ - public boolean contains(Person student) { - return students.contains(student); - } - - /** - * Provides a stream of students in the session. - * - * @return A stream of students. - */ - public Stream stream() { - return students.stream(); - } - - /** - * Returns the number of students in the session. - * - * @return The number of students in the session. - */ - public int size() { - return students.size(); - } - - /** - * Provides an iterator to iterate through the students in the session. - * - * @return An iterator for the students in the session. - */ - @Override - public Iterator iterator() { - return students.iterator(); - } - - /** - * Returns a string representation of the students in the session. - * - * @return A string representation of the students. - */ - @Override - public String toString() { - return students.toString(); - } - - /** - * Checks if this SessionStudents object is equal to another object. - * - * @param other The object to compare with. - * @return True if the objects are equal, false otherwise. - */ - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof SessionStudents)) { - return false; - } - - SessionStudents otherSessionStudents = (SessionStudents) other; - return students.equals(otherSessionStudents.students); - } - - /** - * Returns the hash code of this SessionStudents object. - * - * @return The hash code of the session students. - */ - @Override - public int hashCode() { - return students.hashCode(); - } - -} diff --git a/src/test/java/seedu/address/model/session/SessionStudentsContainsStudentsPredicateTest.java b/src/test/java/seedu/address/model/session/SessionStudentsContainsStudentsPredicateTest.java deleted file mode 100644 index c8c04f9dea6..00000000000 --- a/src/test/java/seedu/address/model/session/SessionStudentsContainsStudentsPredicateTest.java +++ /dev/null @@ -1,93 +0,0 @@ -package seedu.address.model.session; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -import org.junit.jupiter.api.Test; - -import seedu.address.model.person.Person; -import seedu.address.testutil.PersonBuilder; -import seedu.address.testutil.SessionBuilder; -import seedu.address.testutil.TypicalPersons; - -public class SessionStudentsContainsStudentsPredicateTest { - - @Test - public void equals() { - Set firstPredicateStudentsSet = Collections.singleton( - new PersonBuilder(TypicalPersons.ALICE).build()); - Set secondPredicateStudentsSet = new HashSet<>(Arrays.asList( - new PersonBuilder(TypicalPersons.ALICE).build(), new PersonBuilder(TypicalPersons.BOB).build())); - - SessionStudentsContainsStudentsPredicate firstPredicate = - new SessionStudentsContainsStudentsPredicate(firstPredicateStudentsSet); - SessionStudentsContainsStudentsPredicate secondPredicate = - new SessionStudentsContainsStudentsPredicate(secondPredicateStudentsSet); - - // same object -> returns true - assertTrue(firstPredicate.equals(firstPredicate)); - - // same values -> returns true - SessionStudentsContainsStudentsPredicate firstPredicateCopy = - new SessionStudentsContainsStudentsPredicate(firstPredicateStudentsSet); - assertTrue(firstPredicate.equals(firstPredicateCopy)); - - // different types -> returns false - assertFalse(firstPredicate.equals(1)); - - // null -> returns false - assertFalse(firstPredicate.equals(null)); - - // different predicate -> returns false - assertFalse(firstPredicate.equals(secondPredicate)); - } - - @Test - public void test_sessionStudentsContainsStudents_returnsTrue() { - // One keyword - Set firstPredicateStudentsSet = Collections.singleton(new PersonBuilder(TypicalPersons.ALICE).build()); - SessionStudentsContainsStudentsPredicate predicate = - new SessionStudentsContainsStudentsPredicate(firstPredicateStudentsSet); - assertTrue(predicate.test(new SessionBuilder().withStudent(TypicalPersons.ALICE).build())); - - // Multiple keywords - Set secondPredicateStudentsSet = new HashSet<>(Arrays.asList( - new PersonBuilder(TypicalPersons.ALICE).build(), new PersonBuilder(TypicalPersons.BOB).build())); - predicate = new SessionStudentsContainsStudentsPredicate(secondPredicateStudentsSet); - assertTrue(predicate.test(new SessionBuilder().withStudents(TypicalPersons.ALICE, TypicalPersons.BOB).build())); - - // Only one matching keyword - predicate = new SessionStudentsContainsStudentsPredicate(secondPredicateStudentsSet); - assertTrue(predicate.test(new SessionBuilder().withStudent(TypicalPersons.BOB).build())); - } - - @Test - public void test_sessionStudentDoesNotContainStudents_returnsFalse() { - // Zero keywords - SessionStudentsContainsStudentsPredicate predicate = - new SessionStudentsContainsStudentsPredicate(Collections.emptySet()); - assertFalse(predicate.test(new SessionBuilder().withStudent(TypicalPersons.CARL).build())); - - // Non-matching keyword - Set studentSet = Collections.singleton(new PersonBuilder().withName("Alice").build()); - predicate = new SessionStudentsContainsStudentsPredicate(studentSet); - assertFalse(predicate.test(new SessionBuilder().withStudent(TypicalPersons.CARL).build())); - } - - @Test - public void toStringMethod() { - Set studentSet = new HashSet<>(Arrays.asList( - new PersonBuilder().withName("student1").build(), new PersonBuilder().withName("student2").build())); - SessionStudentsContainsStudentsPredicate predicate = new SessionStudentsContainsStudentsPredicate(studentSet); - - String expected = SessionStudentsContainsStudentsPredicate.class.getCanonicalName() - + "{session students=" + studentSet + "}"; - assertEquals(expected, predicate.toString()); - } -} diff --git a/src/test/java/seedu/address/model/session/SessionStudentsTest.java b/src/test/java/seedu/address/model/session/SessionStudentsTest.java deleted file mode 100644 index 5f7bdd4080d..00000000000 --- a/src/test/java/seedu/address/model/session/SessionStudentsTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package seedu.address.model.session; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import org.junit.jupiter.api.Test; - -import seedu.address.model.person.Person; -import seedu.address.testutil.PersonBuilder; - -public class SessionStudentsTest { - - @Test - public void addStudent_validStudent_success() { - SessionStudents sessionStudents = new SessionStudents(); - Person student = new PersonBuilder().withName("Alice").build(); - - sessionStudents.add(student); - assertTrue(sessionStudents.contains(student)); - assertEquals(1, sessionStudents.size()); - } - - @Test - public void removeStudent_validStudent_success() { - SessionStudents sessionStudents = new SessionStudents(); - Person student = new PersonBuilder().withName("Alice").build(); - - sessionStudents.add(student); - assertTrue(sessionStudents.contains(student)); - - sessionStudents.remove(student); - assertFalse(sessionStudents.contains(student)); - assertEquals(0, sessionStudents.size()); - } - - @Test - public void toStudentNames_validSessionStudents_success() { - SessionStudents sessionStudents = new SessionStudents( - new PersonBuilder().withName("Zoe").build(), - new PersonBuilder().withName("Bob").build(), - new PersonBuilder().withName("Alice").build() - ); - - String expected = "Alice, Bob, Zoe"; - assertEquals(expected, sessionStudents.toStudentNames()); - } - - @Test - public void equals() { - SessionStudents sessionStudents1 = new SessionStudents(new PersonBuilder().withName("Alice").build()); - SessionStudents sessionStudents2 = new SessionStudents(new PersonBuilder().withName("Bob").build()); - SessionStudents sessionStudents1Copy = new SessionStudents(new PersonBuilder().withName("Alice").build()); - - // Testing equality with itself - assertTrue(sessionStudents1.equals(sessionStudents1)); - - // Testing equality with an equivalent object - assertTrue(sessionStudents1.equals(sessionStudents1Copy)); - - // Testing equality with a different object - assertFalse(sessionStudents1.equals(sessionStudents2)); - - // Testing equality with null - assertFalse(sessionStudents1.equals(null)); - } -} From 4e28e6a2d748235282fcc4fcbbcff34848f10b3f Mon Sep 17 00:00:00 2001 From: raydenlim Date: Fri, 10 Nov 2023 07:31:59 +0800 Subject: [PATCH 3/5] Update Styles --- docs/UserGuide.md | 10 +++++++++- docs/stylesheets/main.css | 24 ++++++++++++++++++++---- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index c87c72db244..0f06b587b62 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -207,10 +207,18 @@ The following describes what each panel contains: 3. Copy the file to the folder you want to use as the _home folder_ for your F.A.K.E.J.A.R.V.I.S.. 4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar fakejarvis.jar` command to run the application.
- A GUI similar to the image below should appear in a few seconds. Note how the app contains some sample data.
+ A GUI similar to the image below should appear in a few seconds.
![Ui](images/Ui.png) + Note that the app will contain some sample data initially. You can use the `clear` command for a blank state.
+
+ + :bangbang: Warning: + * This action is irreversible + +
+ 5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.
Some example commands you can try: diff --git a/docs/stylesheets/main.css b/docs/stylesheets/main.css index b83a225cf1a..1f1268ae8a8 100644 --- a/docs/stylesheets/main.css +++ b/docs/stylesheets/main.css @@ -141,10 +141,26 @@ table { margin-right: auto; } -h2, -h3, -h4, +h1 { + color: #FFFFFF; //black + font-size: 2.5em; + margin: 2px; + text-align: center; +} +h2 { + color: #005CBF; //dark blue + font-size: 2em; +} +h3 { + color: #007ACC; // lighter dark blue + font-size: 1.7em; +} +h4 { + color: #0F70D1; // lighter lighter dark blue + font-size: 1.5em; +} + h5, h6 { - color: #194665; + color: #003366; } From 4ff858bb94683326c1cca036d5630e5c65085545 Mon Sep 17 00:00:00 2001 From: raydenlim Date: Fri, 10 Nov 2023 07:33:29 +0800 Subject: [PATCH 4/5] Remove redundant style --- docs/UserGuide.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 0f06b587b62..7978411f4c3 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -3,9 +3,7 @@ layout: default.md title: "User Guide" pageNav: 3 --- - + # F.A.K.E.J.A.R.V.I.S. User Guide ## Introduction From aa3ecedcac3190df532c842b54f1cc062197370a Mon Sep 17 00:00:00 2001 From: raydenlim Date: Fri, 10 Nov 2023 07:35:35 +0800 Subject: [PATCH 5/5] Add emoji for viewing help --- docs/UserGuide.md | 64 +++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 7978411f4c3..d3f857f93dc 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -42,44 +42,44 @@ If you are new to CLI, or unfamiliar with the commands F.A.K.E.J.A.R.V.I.S. offe       4.1 [Command Parameters](#command-parameters)  5 [Features](#features)       5.1 [General Commands](#general-commands) -            5.1.1 [🔀Switching between different tabs : `tab`](#switching-between-different-tabs-tab) -            5.1.2 [👀Viewing help : `help`](#viewing-help-help) -            5.1.3 [🏃🚪Exiting F.A.K.E.J.A.R.V.I.S. : `exit`](#exiting-f-a-k-e-j-a-r-v-i-s-exit) -            5.1.4 [💾Saving the Data](#saving-the-data) -            5.1.5 [🛠️Editing the Data File](#editing-the-data-file) -            5.1.6 [💾Archiving Data Files `[coming in v2.0]`](#archiving-data-files-coming-in-v2-0) +            5.1.1 [🔀 Switching between different tabs : `tab`](#switching-between-different-tabs-tab) +            5.1.2 [👀 Viewing help : `help`](#viewing-help-help) +            5.1.3 [🏃🚪 Exiting F.A.K.E.J.A.R.V.I.S. : `exit`](#exiting-f-a-k-e-j-a-r-v-i-s-exit) +            5.1.4 [💾 Saving the Data](#saving-the-data) +            5.1.5 [🛠️ Editing the Data File](#editing-the-data-file) +            5.1.6 [💾 Archiving Data Files `[coming in v2.0]`](#archiving-data-files-coming-in-v2-0)       5.2 [Student Management](#student-management) -            5.2.1 [📝Adding a Student: `add`](#adding-a-student-add) -            5.2.2 [👀Listing All Students : `list`](#listing-all-students-list) -            5.2.3 [🛠️Editing a Student Field : `edit`](#editing-a-student-field-edit) -            5.2.4 [🔎Locating Student by Name: `find`](#locating-student-by-name-find) -            5.2.5 [❌Deleting a Student : `delete`](#deleting-a-student-delete) -            5.2.6 [🗑️Clearing all Entries : `clear`](#clearing-all-entries-clear) +            5.2.1 [📝 Adding a Student: `add`](#adding-a-student-add) +            5.2.2 [👀 Listing All Students : `list`](#listing-all-students-list) +            5.2.3 [🛠️ Editing a Student Field : `edit`](#editing-a-student-field-edit) +            5.2.4 [🔎 Locating Student by Name: `find`](#locating-student-by-name-find) +            5.2.5 [❌ Deleting a Student : `delete`](#deleting-a-student-delete) +            5.2.6 [🗑️ Clearing all Entries : `clear`](#clearing-all-entries-clear)       5.3 [Task Management](#task-management) -            5.3.1 [📝Adding a Task: `addtask`](#adding-a-task-addtask) -            5.3.2 [👀Viewing Tasks: `viewtasks`](#viewing-tasks-viewtasks) -            5.3.3 [🛠️Updating a Task's Progress: `updateprogress`](#updating-a-task-s-progress-updateprogress) -            5.3.4 [❌Deleting a Task: `deletetask`](#deleting-a-task-deletetask) +            5.3.1 [📝 Adding a Task: `addtask`](#adding-a-task-addtask) +            5.3.2 [👀 Viewing Tasks: `viewtasks`](#viewing-tasks-viewtasks) +            5.3.3 [🛠️ Updating a Task's Progress: `updateprogress`](#updating-a-task-s-progress-updateprogress) +            5.3.4 [❌ Deleting a Task: `deletetask`](#deleting-a-task-deletetask)       5.4 [Attendance Management](#attendance-management) -            5.4.1 [📆Taking Attendance: `takeattendance`](#taking-attendance-takeattendance) -            5.4.2 [👀Viewing Attendance: `viewattendance`](#viewing-attendance-viewattendance) +            5.4.1 [📆 Taking Attendance: `takeattendance`](#taking-attendance-takeattendance) +            5.4.2 [👀 Viewing Attendance: `viewattendance`](#viewing-attendance-viewattendance)       5.5 [Assignment Management](#assignment-management) -            5.5.1 [👀Viewing a list of Assignments: `viewassignments`](#viewing-a-list-of-assignments-viewassignments) -            5.5.2 [🛠️Editing an Assignment Grade: `editgrade`](#editing-an-assignment-grade-editgrade) -            5.5.3 [❌Deleting an Assignment Grade: `deletegrade`](#deleting-an-assignment-grade-deletegrade) -            5.5.4 [🛠️Editing an Assignment Comment: `editcomment`](#editing-an-assignment-comment-editcomment) -            5.5.5 [❌Deleting an Assignment Comment: `deletecomment`](#deleting-an-assignment-comment-deletecomment) +            5.5.1 [👀 Viewing a list of Assignments: `viewassignments`](#viewing-a-list-of-assignments-viewassignments) +            5.5.2 [🛠️ Editing an Assignment Grade: `editgrade`](#editing-an-assignment-grade-editgrade) +            5.5.3 [❌ Deleting an Assignment Grade: `deletegrade`](#deleting-an-assignment-grade-deletegrade) +            5.5.4 [🛠️ Editing an Assignment Comment: `editcomment`](#editing-an-assignment-comment-editcomment) +            5.5.5 [❌ Deleting an Assignment Comment: `deletecomment`](#deleting-an-assignment-comment-deletecomment)       5.6 [Graded Test Management](#graded-test-management) -            5.6.1 [🛠️Editing a Graded Test Score: `editgradedtest`](#editing-a-graded-test-score-editgradedtest) +            5.6.1 [🛠️ Editing a Graded Test Score: `editgradedtest`](#editing-a-graded-test-score-editgradedtest)       5.7 [Session Management](#session-management) -            5.7.1 [📝Creating a Session: `createsession`](#creating-a-session-createsession) -            5.7.2 [🛠️Updating a Session's Remark: `updatesessionremark`](#updating-a-session-s-remark-updatesessionremark) -            5.7.3 [❌Deleting a Session: `deletesession`](#deleting-a-session-deletesession) +            5.7.1 [📝 Creating a Session: `createsession`](#creating-a-session-createsession) +            5.7.2 [🛠️ Updating a Session's Remark: `updatesessionremark`](#updating-a-session-s-remark-updatesessionremark) +            5.7.3 [❌ Deleting a Session: `deletesession`](#deleting-a-session-deletesession)       5.8 [Consultation Management](#consultation-management) -            5.8.1 [📝Creating a Consultation: `createconsult`](#creating-a-consultation-createconsult) -            5.8.2 [📝Adding students to a consultation: `addtoconsult`](#adding-students-to-a-consultation-addtoconsult) -            5.8.3 [❌Removing Students from a Consultation: `removefromconsult`](#removing-students-from-a-consultation-removefromconsult) -            5.8.4 [❌Deleting a Consultation: `deleteconsult`](#deleting-a-consultation-deleteconsult) +            5.8.1 [📝 Creating a Consultation: `createconsult`](#creating-a-consultation-createconsult) +            5.8.2 [📝 Adding students to a consultation: `addtoconsult`](#adding-students-to-a-consultation-addtoconsult) +            5.8.3 [❌ Removing Students from a Consultation: `removefromconsult`](#removing-students-from-a-consultation-removefromconsult) +            5.8.4 [❌ Deleting a Consultation: `deleteconsult`](#deleting-a-consultation-deleteconsult)  6 [FAQ](#faq)  7 [Known Issues](#known-issues)  8 [Command Summary](#command-summary) @@ -368,7 +368,7 @@ For the list of tab indexes to use:
-#### Viewing help : `help` +#### 👀Viewing help : `help` You can view a message explaining how to access the help page, if you require assistance in understanding the commands and their formats.