diff --git a/docs/UserGuide.md b/docs/UserGuide.md
index 5156b4c020e..f8bcc7476b1 100644
--- a/docs/UserGuide.md
+++ b/docs/UserGuide.md
@@ -3,44 +3,46 @@ layout: default.md
title: "User Guide"
pageNav: 3
---
-
-# ProfBook User Guide
-
-ProfBook is a **student management system** specially made for **CS2103T tutors**, built by CS2103T students. As current
-students of CS2103T, we understand that CS2103T tutors have a high administrative workload on top of their existing
-tutor duties. On top of that, any administrative mistakes or oversights can increase that workload exponentially and may
-adversely impact student's learning. To address the aforementioned issues, Profbook was designed as a student management
-system which can **dramatically decrease administrative mistakes and workload**.
-
-It is optimized for tutors use via a **familiar Command Line Interface (CLI) that uses linux-styled commands** while
-still having the benefits of a Graphical User Interface (GUI). If you can type fast, ProfBook can track and manage your
-student's progress and tasks much faster than traditional GUI apps with a gentle learning curve.
-
----
+# ProfBook User Guide :bulb:
+
+Welcome to ProfBook, a specialised **student management system** exclusively tailored for **CS2103T tutors** by CS2103T
+students. This guide is your gateway to unlocking the potential of ProfBook, where you will discover how ProfBook can
+help streamline your administrative tasks, alleviate workload and most importantly reduce any administrative errors.
+
+## What can ProfBook do :raising_hand:
+As current students of CS2103T, we understand that CS2103T tutors have a high administrative workload on top of their
+existing tutor duties. On top of that, any administrative mistakes or oversights can increase that workload
+exponentially and may adversely impact student's learning. We deeply appreciate your role, and it is precisely to
+address these aforementioned issues that we designed ProfBook. ProfBook aims to
+**drastically decrease administrative mistakes and your workload**.
+
+ProfBook is optimized for tutors' use via a **familiar Command Line Interface (CLI) that uses linux-styled commands**
+while retaining the benefits of a Graphical User Interface (GUI). If you are a fast typer, ProfBook will empower you
+to efficiently track and manage students' progress and tasks, surpassing the capabilities of traditional GUI apps
+with a gentle learning curve.
+
+---
## Features overview
### Consolidated Information
-As a project based module, CS2103T tutors have to juggle multiple groups **within** multiple tutorial slots. ProfBook
-aims to expedite this process by allowing tutors to keep track of all their tutorial groups and all the project groups
-within that in a centralised location. Tutors are able to traverse between tutorial slots and groups quickly through
-familiar linux commands.
+As a project-based module, CS2103T tutors have to juggle multiple groups. ProfBook
+aims to expedite this process by allowing you to keep track of all your groups and their progress within a centralised
+location. You would be able to traverse between the different groups quickly through familiar Linux commands.
-### Student Information Management
+### Student and Group Management
-ProfBook aids with the **management of student information**. Student's information can be **readily** added, edited,
-deleted quickly. In addition, ProfBook supports the managment of additional information vital for a tutor. Tutors can
-track their student progress through creating various tasks such as Todo and Deadline. Furthermore, Tutors can store
-short description of a student or links to their GitHub Repository if desired.
+ProfBook aids with the **management of student and group information**. ProfBook efficiently encapsulates information of
+every project group so that you can easily monitor their progress and relevant information. You can
+effortlessly **add, delete and edit students or groups** and even **move students from one group to another**.
-### Tutorial and Groups Information Management
+### Task Management
-ProfBook aids with the **management of Tutorial and Groups information**. Profbook efficiently encapsulates information
-of every tutorial group and every project group so that tutors can management their progress and relevant information *
-*seamlessly**. Tutors can easily add, move, delete students from groups. Similiar to students, tutors are able to track
-each group progress through tasks. In addition, Tutors can store short description of the groups or links to their
-GitHub Repository if desired.
+In addition to the efficient management of student and group information, ProfBook also aids with the
+**management of task information**. You can quickly and seamlessly **allocate tasks to specific student or group**
+and track their progress. With ProfBook, you can easily monitor each stage of the task journey,
+from start to finish, ensuring optimal productivity.
@@ -66,7 +68,7 @@ GitHub Repository if desired.
## Quick start
-1. Ensure you have Java `11` or above installed in your Computer.
+1. Ensure you have Java `11` or above installed in your computer.
1. Download the latest `ProfBook.jar` from [here](https://github.com/AY2324S1-CS2103T-W15-2/tp/releases).
@@ -81,18 +83,17 @@ GitHub Repository if desired.
-1. 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:
+1. Type the command in the command box and press Enter to execute it.
+
Some example commands you can try:
- `cat grp-001` : Lists all tasks belonging to grp-001.
- - `touch grp-001/stu-200 --name Bob --email bobby@example.com --phone 92929292 --address blk 258 Toa Payoh`
+ - `touch grp-001/0123Y --name Bob`
: Adds a student named `Bob` to the grp-001.
- `rm grp-001` : Deletes grp-001.
-1. Refer to the [General Commands](#general-commands), [Student/Group Commands](#student-or-group-commands), [Task Commands](#tasks-command) below for details of each command.
+1. Refer to the [General Commands](#general-commands), [Student or Group Commands](#student-or-group-commands), [Tasks Commands](#tasks-command) below for details of each command.
---
@@ -100,13 +101,11 @@ GitHub Repository if desired.
-## Understanding ProfBook
+## Understanding ProfBook :books:
-
+### ProfBook Software Structure
- **ProfBook Software Structure**
-
- ProfBook is organized hierarchically with the following structure:
+ProfBook is organized hierarchically with the following structure:
~/
@@ -123,84 +122,134 @@ GitHub Repository if desired.
The Root Directory serves as the main container for the ProfBook software. This is where all the data is organized.
**Group Directories (e.g., `grp-001`, `grp-002`, ...)**
-
Within the Root Directory, there are Group Directories. Each Group Directory is dedicated to managing a specific group of students.
+
+
- **Student Directories (e.g., `1001Z`, `5815Y`, ...)**
+ **Required format for `GroupId`:**
+ - Must be in the format `grp-XXX` where `XXX` is replaceable with any 3 digit number
+ - eg. `grp-001`
+
+
+**Student Directories (e.g., `1001Z`, `5815Y`, ...)**
Inside each Group Directory, you'll find Student Directories. These directories represent individual students within each group.
This hierarchical structure enables a well-organized and efficient way to manage groups and students within ProfBook.
-
-
-
-
-
+
+
+ **Required format for `StudentId`:**
+ - Must be in the format `XXXXA` where `XXXX` is replaceable with any 4 digit number and `A` is replaceable with any
+ capitalised alphabet.
+ - This format accurately reflects the last 5 place of an NUS student's matriculation number while maintaining
+ privacy and security.
+ - eg. `8467U`
+
+
+
+### ProfBook Command Format
+
+- Words in `UPPER_CASE` are the parameters to be supplied by you.
+ * e.g. In `touch SPECIFIED_PATH -n NAME`, `SPECIFIED_PATH` and the other field in `UPPER_CASE` can be substituted
+ with the desired details to form `touch 2000Y --name Bob`.
+* Words in `UPPER_CASE` that are surrounded by `[square brackets]` are optional parameters to be supplied by you.
+ * e.g. In `cat [SPECIFIED_PATH]`, `[SPECIFIED_PATH]` can be substituted with details or left empty,
+ `cat 2000Y` and `cat` are acceptable commands.
+- Parameters can be in any order.
+ * e.g. If the command specifies `-n NAME -e EMAIL`, `-e EMAIL -n NAME` is also acceptable.
+* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be
+ ignored.
+ * e.g. If the command specifies `help 123`, it will be interpreted as `help`.
+- Duplicate can only be detected if all field is exactly the same.
+* If you would like to pass in a field that starts with `-` or `--`, you need to use `\` before the start of that field.
+ * e.g. To pass in `-Clementi` in the `edit` command, the command would be `edit -a \-Clementi`.
+- If you are using a PDF version of this document, please be careful when copying and pasting commands that span
+multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
+
+### Flags :triangular_flag_on_post::triangular_flag_on_post::triangular_flag_on_post:
+Flags come before essential details required by the command and are compatible in both long and short forms:
+
+- `--name` / `-n` followed by name of student or group specified by command.
+- `--email` / `-e` followed by email of student.
+- `--phone` / `-p` followed by phone number of student.
+- `--address` / `-a` followed by address of student.
+- `--desc` followed by description of task specified by command.
+- `--datetime` / `-dt` followed by due date of a deadline task in the `yyyy-MM-dd HH:mm` format.
+- `--all` / `-al` followed by either:
+ - `allStu` to add a task to all students.
+ - can only be used at a group directory.
+ - `allGrp` to add a task to all groups.
+ - can only be used at root directory.
+
+### Acceptable values for each parameter:
-
+`SPECIFIED_PATH`:
+- Must be a valid path.
-**Notes about the command format:**
+`NAME`:
+- Must be a non-empty string.
-- Words in `UPPER_CASE` are the parameters to be supplied by the user.
- - e.g. in `touch SPECIFIED_PATH -n NAME -e EMAIL - p PHONE_NUMBER -a ADDRESS`, `SPECIFIED_PATH` and the other words
- in `UPPER_CASE` can be substituted to form `touch stu-200 --name Bob --email bobby@example.com --phone 92929292
- --address blk 258 Toa Payoh`.
+`EMAIL`:
+- Must be a non-empty string.
-- Parameters can be in any order.
- - e.g. if the command specifies `-n NAME -e EMAIL`, `-e EMAIL -n NAME` is also acceptable.
+`PHONE_NUMBER`:
+- Must be a non-empty string.
-- Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be
- ignored.
- e.g. if the command specifies `help 123`, it will be interpreted as `help`.
+`ADDRESS`:
+- Must be a non-empty string
-- If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines
- as space characters surrounding line-breaks may be omitted when copied over to the application.
+`TASK_INDEX`:
+- Must be a valid index starts from 1.
+---
+
+
+
-
+## How to use the User Guide :heart_eyes:
+We understand that it may be daunting to delve into a completely new user guide. This section is designed
+to make this journey more smooth sailing for you and enhance your understanding of the commonly used icons and boxes.
+We hope you enjoy your reading experience! :blush: :book:
-
+
-**Acceptable values for each parameter:**
+**Light blue boxes** like this with an **"i" icon** are designated for information-related content.
+
-`SPECIFIED_PATH`:
+
-- must be valid path
+Keep a look-out for **green boxes** like this with a **light bulb icon**, they provide valuable suggestions on
+how you can better make use of the commands for greater efficiency and convenience once you have mastered
+the basics of the command.
+
-`NAME`:
+
-- must be a non-empty string
+When you come across **yellow boxes** like this with a **"!" icon**, do take extra note and caution!
+It contains crucial cautionary information that is definitely a **must read**.
+
-`EMAIL`:
+
-- must be a non-empty string
+This is utilized to indicate the output if command succeeds.:ok_woman:
-`PHONE_NUMBER`:
+
-- must be a non-empty string
+
-`ADDRESS`:
+This is utilized to indicate the output if command fails.:no_good:
-- must be a non-empty string
+- There are [hyperlinks to some commonly made mistakes](#commonly-made-mistake) to help you recover from them!
-`TASK_INDEX`:
-- must be a valid index starts from 1
---
-
## General Commands
-### View help : `help`
-
-Shows a message explaning how to access the help page.
-
-**Format:** `help`
-
### Change Directory: `cd`
Changes the current directory in the ProfBook.
@@ -210,46 +259,43 @@ Changes the current directory in the ProfBook.
#### Acceptable values for each parameter:
`SPECIFIED_PATH`:
-
-- must be a valid path to a group or root
+- Must be a valid path to a student, group or root.
#### Output if command succeeds:
-
-- displays message indicating successful navigation to target path.
+- Displays message indicating successful navigation to target path.
#### Output if command fails:
-
-- displays message indicating either:
- - Invalid command format
- - Invalid path
+- Displays message indicating either:
+ - [Invalid command format.](#mistake-1-invalid-command-format)
+ - [Invalid path.](#mistake-2-invalid-path)
-#### Examples:
-- When user is at the directory `~/grp-001`
- - User can change directory from `grp-001` to `grp-002` using `cd ../grp-002`
+#### Example(s):
+- When you are at the directory `~/grp-001` and would like to change directory from `grp-001` to `grp-002` you could
+use the command:
+ - `cd ../grp-002` -> type `..` to step up one level before proceeding to the `grp-002` directory.
### Display Directories : `ls`
-Shows the list of children in the current directory
+Shows the list of children in specified directory.
-**Format:** `ls SPECIFIED_PATH`
+**Format:** `ls [SPECIFIED_PATH]`
#### Acceptable values for each parameter:
-`SPECIFIED_PATH`:
-
-- must be a valid path to a group or root
+`[SPECIFIED_PATH]`:
+- Must be a valid path to a group or root.
- If no `SPECIFIED_PATH` is given, the `ls` command will default to the current directory.
+ If `[SPECIFIED_PATH]` is not provided, the `ls` command will show the list of children in the current directory.
@@ -257,8 +303,8 @@ Shows the list of children in the current directory
#### Output if command succeeds:
-- displays message indicating successful display of children list.
-- displays directories under target path on display panel.
+- Displays message indicating successful display of children list.
+- Displays directories under target path on display panel.
@@ -267,56 +313,68 @@ Shows the list of children in the current directory
#### Output if command fails:
Displays message indicating either:
- - Invalid command format
- - Invalid path
+ - [Invalid command format.](#mistake-1-invalid-command-format)
+ - [Invalid path.](#mistake-2-invalid-path)
-#### Examples:
+#### Example(s):
+
+- When you are at the root directory `~/` and would like to see all the groups you have,
+ - `ls` will return all the current groups.
-- When user is at the directory `~/grp-001`:
- - `ls` will return all the students in grp-001
-- When user is at the root directory `~/`:
- - `ls` will return all the current groups
+
+- When you are at the root directory `~/` and would like to see the students under `grp-001`,
+ - `ls grp-001` will return all the students in `grp-001`.
+
+
### Display all tasks: `cat`
-Searches for tasks depending on the environment.
+Displays all tasks depending on the directory you are at.
-**Format:** `cat SPECIFIED_PATH`
+**Format:** `cat [SPECIFIED_PATH]`
#### Acceptable values for parameter:
-`SPECIFIED_PATH`:
-- must be a valid path
+`[SPECIFIED_PATH]`:
+- Must be a valid path to a group or student.
+- Must **not** be a path to root.
+
+
+
+If `[SPECIFIED_PATH]` is not provided, the `ls` command will show the list of children in the current directory.
+
+
#### Output if command succeeds:
-
-- display updates with tasks assigned under input Path
+- Displays list of tasks assigned under input path.
#### Output if command fails:
+- If `cat` in root directory,
+ - Displays message indicating that task list cannot be shown within root directory.
-If `cat` in root directory
-
-- display updates indicating that tasks cannot be shown within root directory.
+* If `cat` with invalid parameter,
+ - Displays message showing invalid path with user's input Path.
-If `cat` with invalid parameter
+
-- display updates showing invalid path with user entered Path
+#### Example(s):
+- When you are at the directory `~/grp-001` and would like to see all tasks allocated to `grp-001`,
+ - `cat` will return all the tasks allocated to grp-001.
-
+
-#### Examples:
-`cat grp-001`, `cat 1234A`
+If you are at the directory `~/grp-001` and would like take a quick look of the tasks allocated to student `0010Y`,
+- `cat 0010Y` will return all the tasks allocated to student of studentId, `0010Y`.
-- The first command will display all tasks assigned to group 001
-- The second command will display all tasks that are assigned to student with Id 1234A
+
---
@@ -324,30 +382,24 @@ If `cat` with invalid parameter
-## Student or Group Commands
+## Student or Group Commands :family:
### Add a student: `touch`
Adds a student into the specified directory.
-**Format:** `touch SPECIFIED_PATH -n NAME -e EMAIL - p PHONE_NUMBER -a ADDRESS`
-
-- `--name` / `-n` : Name of Student
-- `--email` / `-e` : Email of Student
-- `--phone` / `-p`: Phone number of Student
-- `--address` / `-a`: Address of Student
+**Format:** `touch SPECIFIED_PATH -n NAME [-e EMAIL] [-p PHONE_NUMBER] [-a ADDRESS]`
#### Acceptable values for each parameter:
`SPECIFIED_PATH`:
-
-- must be a valid path to a student
+- Must be a valid path to a student.
#### Output if command succeeds:
-- Displays message indicating successful creation together with information of created student
+- Displays message indicating successful creation and information of the new student.
@@ -356,44 +408,91 @@ Adds a student into the specified directory.
#### Output if command fails:
- Displays message indicating either:
- - Invalid command format
- - Invalid path
+ - [Invalid command format.](#mistake-1-invalid-command-format)
+ - [Invalid path.](#mistake-2-invalid-path)
-#### Examples:
+#### Example(s):
+
+- When you are at the directory `~/grp-001`, you could add a new student to this group through this command,
+ - `touch 0200Y --name Bob`
-- The following commands when executed at the different current path directory will create the same student at the same
- path directory`~/grp-001/stu-200`
- - When user is at the directory `~/grp-001` and keys in command:
- - `touch stu-200 --name Bob --email bobby@example.com --phone 92929292 --address blk 258 Toa Payoh `
- - When user is at the root directory `~/` and keys in command:
- - `touch ~/grp-001/stu-200 --name Bob --email bobby@example.com --phone 92929292 --address blk 258 Toa Payoh `
+
+When you are at the directory `~/grp-001` and would like to add a new student, Bob, to another directory
+`~/grp-002`,
+- You could use the command `touch ../grp-002/0200Y --name Bob` to save yourself the trouble for having to change
+ directory before executing the `touch` command!
+
+
#### To note:
-- Command creates a student within the group if command is used from within the group or specified path has indicated
- the group path.
-- If a command is executed outside a specific group, specified path must be to the group and to the student.
+- If the command is executed outside a specific group, the specified path must extend to encompass both the
+group and the student to ensure accurate execution.
+
+### Edit a student: `edit`
+Edits a student's details including name, email, phone or address in the specified path.
+One or more fields can be edited in a single command.
-### Delete a Student or Group: `rm`
+**Format:** `edit [SPECIFIED_PATH] [-n NAME] [-e EMAIL] [-p PHONE_NUMBER] [-a ADDRESS]`
+
+#### Acceptable values for each parameter:
+
+`[SPECIFIED_PATH]`:
+- Must be a valid path to a student.
+
+
+
+If `[SPECIFIED_PATH]` is not provided, current directory must be a student directory.
+The `edit` command will edit the student at current directory.
+
+
+#### Output if command succeeds:
+- Displays message indicating successful edition of specified student.
+
+
-Deletes a student/group from the specified directory.
+
+
+#### Output if command fails:
+- Displays message indicating either:
+ - [Invalid command format.](#mistake-1-invalid-command-format)
+ - [Invalid path.](#mistake-2-invalid-path)
+ - At least one field (`NAME`, `EMAIL`, `PHONE_NUMBER` or `ADDRESS`)to edit must be provided.
+
+
+
+#### Example(s):
+
+- If a student in `grp-001` of StudentId `0010Y` changes his phone number, you could execute the following command
+at the directory `~/grp-001`, to make the necessary changes.
+ - `edit 0010Y --phone 91919191`
+
+
+When you are at the root directory `~/` and would like to edit the same student's phone number,
+- You could use the command `edit ~/grp-001/0010Y --phone 91919191` to save yourself the trouble for having to change
+directory before executing the `touch` command!
+
+
+
+### Deletes a Student or Group: `rm`
+
+Removes a student or group from the specified directory.
**Format:** `rm SPECIFIED_PATH`
#### Acceptable values for each parameter:
`SPECIFIED_PATH`:
-
-- must be a valid path to a student/group that user wants to delete
+- Must be a valid path to a student or group that you would like to delete.
#### Output if command succeeds
-- Displays message indicating target successfully removed
+- Displays message indicating successfully removal of student or group.
@@ -402,42 +501,46 @@ Deletes a student/group from the specified directory.
#### Output if command fails:
- Displays message indicating either:
- - Invalid command format
- - No such target to delete
+ - [Invalid command format](#mistake-1-invalid-command-format)
+ - [No such student or group to delete.](#mistake-3-no-such-student-or-group-to-delete)
-#### Examples:
+#### Example(s):
+
+- When you are at the root directory `~/` and would like to remove the group, `grp-001`,
+ - `rm grp-001` will remove grp-001
-- When user is at the directory `~/grp-001` and keys in the following command, student with specified
- path `~/grp-001/0123Y` will be deleted:
- - `rm 0123Y`
-- When user is at the root directory `~/` and keys in the following command, will delete group with specified
- path `~/grp-001` will be deleted:
- - `rm grp-001`
+
+When you are at the root directory `~/` and would like to remove the student with the StudentId, `0123Y`,
+in `~/grp-001`,
+- You could use the command `rm ~/grp-001/0123Y` to save yourself the hassle for having to change directory!
-### Move Student or Group: `mv`
+
+
+
+### Move Student: `mv`
-Moves student from one group to another group
+Moves student from one group to another group.
-**Format:** `mv SPECIFIED_PATH SPECIFIED_PATH`
+**Format:** `mv SPECIFIED_PATH_TO_STUDENT SPECIFIED_PATH_TO_GROUP`
#### Acceptable values for each parameter:
-`SPECIFIED_PATH`:
+`SPECIFIED_PATH_TO_STUDENT`:
-- must be a valid path to a student
+- Must be a valid path to a student that you would like to move.
-`SPECIFIED_PATH`:
+`SPECIFIED_PATH_TO_GROUP`:
-- must be a valid path to a group
+- Must be a valid path to a group that you would like to move the student to.
#### Output if command succeeds
-- Displays message to indicate the successful transfer of a student from one group to another group
+- Displays message to indicate the successful transferal of a student from one group to another.
@@ -446,37 +549,40 @@ Moves student from one group to another group
#### Output if command fails
- Displays message indicating either:
- - Invalid command format
- - No such student to move
- - Invalid destination path
+ - [Invalid command format](#mistake-1-invalid-command-format)
+ - [No such student to move.](#mistake-4-no-such-student-to-move)
+ - Invalid destination path.
-#### Examples:
-- When user is at the root directory `~` and keys in the following command, student with specified path `~/grp-001/0123Y` will be moved from grp-001 to grp-002:
+#### Example(s):
+- In the beginning of the semester, student transfers amongst groups are common. When you are at the root directory
+`~/` you could move a student, `0123Y`, from `grp-001` to `grp-002` through this command easily,
- `mv grp-001/0123Y grp-002`
-- When user is at the group directory `~/grp-001` and keys in the following command, student with specified path `~/grp-001/0123Y` will be moved from grp-001 to grp-002:
- - `mv 0123Y ../grp-002`
+
+When you are at the directory `~/grp-001` and would like to move a student to `grp-002` without changing to the
+root directory,
+- You could use the command `mv 0123Y ../grp-002`!
+
+
### Create Group : `mkdir`
-Creates a group consists of students
+Creates a group that can contain students.
-**Format:** `mkdir PATH_TO_THE_GROUP`
+**Format:** `mkdir SPECIFIED_PATH_TO_GROUP`
#### Acceptable values for each parameter:
-`PATH_TO_THE_GROUP`:
-
-- must be a valid path to a group
+`SPECIFIED_PATH_TO_GROUP`:
+- Must be a valid path to a group.
#### Output if command succeeds
-
-- pop up message indicates group with specific groupId was created successfully.
+- Displays message indicating successful creation and information of the new group.
@@ -485,16 +591,52 @@ Creates a group consists of students
#### Output if command fails
- Displays message indicating either:
- - Invalid command format
- - Invalid path to a group
+ - [Invalid command format.](#mistake-1-invalid-command-format)
+ - Invalid path to a group.
-#### Examples:
+#### Example(s):
-- When user is at the root directory `~` and keys in the following command, a group with groupId called grp-001 will be created
+- When you are at the root directory `~/` and would like to add a new group with GroupId `grp-001`,
- `mkdir grp-001`
+### View help : `help`
+
+Shows a message of some commands you could use.
+
+**Format:** `help`
+
+### Clearing all entries : `clear`
+
+Clears all entries from ProfBook.
+
+**Format:** `clear`
+
+
+
+The `clear` command, upon confirmation by pressing enter, will clear all entries from ProfBook.
+It is crucial to note that there is **no way to recover these entries** once the `clear` command has been executed.
+Therefore, we strongly advise exercising caution when using this command.
+
+
+
+This command is particularly valuable at the beginning of a new semester when you wish to clear all your previous
+students and groups, making way for the addition of new students.
+
+
+### Exiting the program : `exit`
+
+Exits the program.
+
+**Format:** `exit`
+
+
+
+
+This command is a time-saver for those who would rather avoid using the mouse to click on the close button
+positioned in the top-left corner of the window.
+
---
@@ -502,23 +644,30 @@ Creates a group consists of students
-## Tasks command
+## Tasks command :clipboard:
### Create Todo Task : `todo`
Creates todo tasks for specific student(s) or group(s).
-**Format:** `todo SPECIFIED_PATH --desc DESCRIPTION --all CATERGORY`
+**Format:** `todo [SPECIFIED_PATH] --desc DESCRIPTION [--all CATERGORY]`
+
+#### Acceptable values for each parameter:
-- `--desc` / `-d` : Description of the todo task
-- `--all` / `-al` : (Optional) Either `allStu` or `allGrp` to add a deadline task to all students/groups in the
- specified path
+`[SPECIFIED_PATH]`:
+- Must be a valid path to a student or group.
+
+
+
+If `[SPECIFIED_PATH]` is not provided, current directory must be a student or group directory.
+The `todo` command will create todo task for the student or group at current directory.
+
#### Output if command succeeds
-- Displays message indicating todo task created successfully.
+- Displays message indicating the successful creation of the todo task.
@@ -527,40 +676,47 @@ Creates todo tasks for specific student(s) or group(s).
#### Output if command fails:
- Displays message indicating either:
- - Invalid command format
- - Invalid path
+ - [Invalid command format.](#mistake-1-invalid-command-format)
+ - [Invalid path.](#mistake-2-invalid-path)
-#### Examples:
+#### Example(s):
+
+- When a specific student, `0010Y`, has to redo his tutorial, you could use the following command when you are in the directory
+`~/grp-001` to allocate the task to just this student,
+ - `todo 0001Y --desc Redo tutorial`
+
+
-- When user is at the directory `~/grp-001` and keys in the following command, a todo task with
- description `Assignment 1`, will be allocated to student from path `grp-001/stu-001`.
- - `todo stu-001 --desc Assignment 1 `
-- When user is at the root directory `~/` and keys in the following command, a todo task with
- description `Assignment 1`, will be allocated to student from path `grp-001/stu-001`.
- - `todo ~/grp-001/stu-001 --desc Assignment 1 `
-- When user is at the root directory `~` and keys in the following command, a todo task with description `Assignment 1`, will
- be allocated to all students in path `~/grp-001`.
- - `todo ~/grp-001 --desc Assignment 1 --all allStu`
+When you have an assignment, `Assignment 1` to be allocated to **all your students** in `grp-001`, you could use the
+following command,
+- `todo ~/grp-001 --desc Assignment 1 --all allStu`
+
+
### Create Deadline task : `deadline`
Creates task with a deadline for specific student(s) or group(s).
-**Format:** `deadline SPECIFIED_PATH --desc DESCRIPTION --datetime DATE_AND_TIME --all CATERGORY`
+**Format:** `deadline [SPECIFIED_PATH] --desc DESCRIPTION --datetime DATE_AND_TIME [--all CATERGORY]`
-- `--desc` / `-d` : Description of the deadline task
-- `--datetime` / `-dt` : The duedate of the task. In the following format: `yyyy-MM-dd HH:mm`
-- `--all` / `-al` : (Optional) Either `allStu` or `allGrp` to add a deadline task to all students/groups in the
- specified path
+#### Acceptable values for each parameter:
+`[SPECIFIED_PATH]`:
+- Must be a valid path to a student.
+
+
+
+If `[SPECIFIED_PATH]` is not provided, current directory must be a student or group directory.
+The `deadline` command will create task with deadline for the student or group at current directory.
+
#### Output if command succeeds
-- Displays message indicating deadline task created successfully.
+- Displays message indicating the successful creation of the deadline task.
@@ -569,41 +725,37 @@ Creates task with a deadline for specific student(s) or group(s).
#### Output if command fails:
- Displays message indicating either:
- - Invalid command format
- - Invalid path
+ - [Invalid command format.](#mistake-1-invalid-command-format)
+ - [Invalid path.](#mistake-2-invalid-path)
-#### Examples:
+#### Example(s):
-- When user is at the directory `~/grp-001` and keys in the following command, a task with a deadline `2023-10-11 23:59`
- for the task with description `Assignment 1`, will be allocated to student from path `grp-001/stu-001`.
- - `deadline stu-001 --desc Assignment 1 --datetime 2023-10-11 23:59`
-- When user is at the root directory `~/` and keys in the following command, a task with a deadline `2023-10-11 23:59`
- for the task with description `Assignment 1`, will be allocated to student from path `grp-001/stu-001`.
- - `deadline ~/grp-001/stu-001 --desc Assignment 1 --datetime 2023-10-11 23:59 `
-- When user is at the root directory `~/` and keys in the following command, a task with a deadline `2023-10-11 23:59`
- for the task with description `Assignment 1`, will be allocated to all students in path `~/grp-001`.
- - `deadline ~/grp-001 --desc Assignment 1 --datetime 2023-10-11 23:59 --all allStu`
+- When a specific student has to hand in his assignment again by a certain date,
+you could use the following command when you are in the directory `~/grp-001`,
+ - `deadline 0001Y --desc resubmit Assignment 1 --datetime 2023-10-11 23:59`
+
-### Mark tasks as completed: `mark`
+When you have a task, `Project 1 submission` with a deadline to be allocated to **all your groups**,
+you could use the following command at the root directory, `~/`,
+- `deadline --desc Project 1 submission --datetime 2023-10-11 23:59 --all allGrp`
-Marks the specified task as done for the student
+
-**Format:** `mark TASK_INDEX`
+### Mark tasks as completed: `mark`
-#### Acceptable parameter should be:
+Marks the specified task as done for the specified student or group.
-`TASK_INDEX`:
+**Format:** `mark TASK_INDEX`
-- must be a valid index starts from 1
#### Output if command succeeds
-- displays message indicating mark is done successfully as well as specific task that is marked
+- Displays message indicating mark is done successfully as well as specific task that is marked.
@@ -611,39 +763,35 @@ Marks the specified task as done for the student
#### Output if command fails
-- displays message indicating either:
- - Invalid command format
- - Invalid task index
- - The display panel is not showing task list
+- Displays message indicating either:
+ - [Invalid command format](#mistake-1-invalid-command-format)
+ - [Invalid task index.](#mistake-5-invalid-task-index)
+ - [The display panel is not showing task list.](#mistake-6-the-display-panel-is-not-showing-task-list)
+
+
+
+
+When using this command, you will first need to [cat](#display-all-tasks-cat) at the path where the task list is at before executing `mark`.
-#### Examples:
+#### Example(s):
-- When user is at the group directory `~/grp-001` and keys in the following command, the task list of a student with specified path `~/grp-001/0123Y` will be shown after entering the command `cat 0123Y`. Then, user can mark task by specifying the task index:
+- When you are at `~/grp-001` and would like to mark the first task allocated to student with StudentId, `0123Y`,
- `cat 0123Y`
- `mark 1`
### Unmark completed task: `unmark`
-Unmarks the specified task for the student
+Unmarks the specified task for the student or group.
**Format:** `unmark TASK_INDEX`
-#### Acceptable parameter should be:
-
-`TASK_INDEX`:
-
-- must be a valid index starts from 1
-
#### Output if command succeeds:
-- displays message indicating either:
- - Invalid command format
- - Invalid task index
- - The display panel is not showing task list
+- Displays message indicating unmark is done successfully as well as specific task that is unmarked.
@@ -651,13 +799,20 @@ Unmarks the specified task for the student
#### Output if command fails:
-- displays message indicating unmark is done successfully as well as specific task that is unmarked
+- Displays message indicating either:
+ - [Invalid command format](#mistake-1-invalid-command-format)
+ - [Invalid task index.](#mistake-5-invalid-task-index)
+ - [The display panel is not showing task list.](#mistake-6-the-display-panel-is-not-showing-task-list)
+
+
+
+When using this command, you will first need to [cat](#display-all-tasks-cat) at the path where the task list is at before executing `unmark`.
-#### Examples:
+#### Example(s):
-- When user is at the group directory `~/grp-001` and keys in the following command, the task list of a student with specified path `~/grp-001/0123Y` will be shown after entering the command `cat 0123Y`. Then, user can unmark task by specifying the task index:
+- You are at `~/grp-001` would like to unmark the first task allocated to student with StudentId, `0123Y`,
- `cat 0123Y`
- `unmark 1`
@@ -687,10 +842,55 @@ _Details coming soon ..._
+## Commonly made mistake
+
+
+
+As Albert Einstein wisely said, "A person who never made a mistake never tried anything new"
+
+
+At ProfBook, we wholeheartedly believe that mistakes are part of the learning journey. We are here to support
+you in your quest of mastering ProfBook, helping you recover from any hiccups that may happen along the way.
+As such, we have collated a list of some commonly made mistakes and solutions to them. :muscle:
+
+##### Mistake 1: Invalid command format
+**Solution:**
+Ensure that the command you enter adheres to the format provided in the user guide.
+
+##### Mistake 2: Invalid path
+**Solution:**
+Please check that the path you have entered is the path required by the command. Additionally, do ensure that it is
+the intended path you wish you utilise, and it exists within ProBook.
+
+##### Mistake 3: No such student or group to delete.
+**Solution:**
+Verify that the StudentId or GroupId belonging to the student or group you wish to delete is correct
+and that the student or group exists in the specified path from which you wish to delete them.
+
+##### Mistake 4: No such student to move.
+**Solution:**
+Verify that the StudentId belonging to the student you wish to move is correct
+and that the student exists in the specified path from which you wish to move them.
+
+##### Mistake 5: Invalid task index
+**Solution:**
+Task index starts from 1. Check that the index you input is a whole number and falls within the range
+of 1 to the total number of tasks in the task list.
+
+##### Mistake 6: The display panel is not showing task list
+**Solution:**
+Please do not forget to execute the [`cat`](#display-all-tasks-cat) command prior to executing the required command.
+
+---
+
+
+
+
+
## FAQ
-**Q**: How do I transfer my data to another Computer?
-**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains
+**Q**: How do I transfer my data to another computer?
+**A**: Install ProfBook in the other computer and overwrite the empty data file it creates with the file that contains
the data of your previous ProfBook home folder.
---
@@ -709,16 +909,19 @@ the data of your previous ProfBook home folder.
## Command summary
-| Action | Format, Examples|
-|:------ |:------|
-| **Help** | `help` |
-| **Change Directory**| `cd SPECIFIED_PATH`
e.g., `cd ../grp-001`|
-| **Display Directories**| `ls SPECIFIED_PATH`
e.g., `ls grp-001`|
-| **Display Task List** | `cat SPECIFIED_PATH`
e.g., `cat 1234A, cat grp-001`|
-| **Add Student** | `touch SPECIFIED_PATH -n NAME -e EMAIL - p PHONE_NUMBER -a ADDRESS`
e.g., `touch stu-200 --name Bob --email bobby@example.com --phone 92929292 --address blk 258 Toa Payoh ` |
-| **Create Group** | `mkdir [groupId]`
e.g., `mkdir grp-1`|
-| **Delete** | `rm SPECIFIED_PATH`
e.g., `rm 0123Y`, `rm grp-002`|
-| **Create Todo** | `todo SPECIFIED_PATH --desc DESCRIPTION --all CATERGORY`
e.g., `todo stu-001 --desc Assignment 1|
-| **Create Deadline** | `deadline SPECIFIED_PATH --desc DESCRIPTION --datetime DATE_AND_TIME --all CATERGORY`
e.g., `deadline stu-001 --desc Assignment 1 --datetime 2023-10-11 23:59 `|
-| **Mark** | `mark TASK_INDEX`
e.g.,`mark 1`|
-| **Unmark** | `unmark TASK_INDEX`
e.g.,`unmark 2`|
+| Action | Format, Example(s) |
+|:------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Help** | `help` |
+| **Clear all entries** | `clear` |
+| **Exit the program** | `exit` |
+| **Change Directory** | `cd SPECIFIED_PATH`
e.g., `cd ../grp-001` |
+| **Display Directories** | `ls [SPECIFIED_PATH]`
e.g., `ls grp-001` |
+| **Display Task List** | `cat [SPECIFIED_PATH]`
e.g., `cat 1234A, cat grp-001` |
+| **Add Student** | `touch SPECIFIED_PATH -n NAME [-e EMAIL] [- p PHONE_NUMBER] [-a ADDRESS]`
e.g., `touch 2000Y --name Bob --email bobby@example.com --phone 92929292 --address blk 258 Toa Payoh ` |
+| **Edit Student** | `edit SPECIFIED_PATH [-n NAME] [-e EMAIL] [-p PHONE_NUMBER] [-a ADDRESS]`
e.g., `edit 0010Y --phone 91919191` |
+| **Create Group** | `mkdir [groupId]`
e.g., `mkdir grp-1` |
+| **Delete** | `rm SPECIFIED_PATH`
e.g., `rm 0123Y`, `rm grp-002` |
+| **Create Todo** | `todo SPECIFIED_PATH --desc DESCRIPTION --all CATERGORY`
e.g., `todo 2000Y --desc Assignment 1 |
+| **Create Deadline** | `deadline SPECIFIED_PATH --desc DESCRIPTION --datetime DATE_AND_TIME --all CATERGORY`
e.g., `deadline 2000Y --desc Assignment 1 --datetime 2023-10-11 23:59 ` |
+| **Mark** | `mark TASK_INDEX`
e.g.,`mark 1` |
+| **Unmark** | `unmark TASK_INDEX`
e.g.,`unmark 2` |
diff --git a/docs/package-lock.json b/docs/package-lock.json
index 63a232e05dc..ea3b661b1fa 100644
--- a/docs/package-lock.json
+++ b/docs/package-lock.json
@@ -779,9 +779,9 @@
}
},
"node_modules/crypto-js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
- "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
"dev": true
},
"node_modules/css-select": {
@@ -836,9 +836,9 @@
}
},
"node_modules/decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
"dev": true,
"engines": {
"node": ">=0.10"
@@ -4662,9 +4662,9 @@
}
},
"node_modules/winston-daily-rotate-file/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -5367,9 +5367,9 @@
}
},
"crypto-js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
- "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
"dev": true
},
"css-select": {
@@ -5418,9 +5418,9 @@
}
},
"decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
"dev": true
},
"define-property": {
@@ -8526,9 +8526,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true
}
}