-
Notifications
You must be signed in to change notification settings - Fork 101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CS2113-T11-3] MeetingJio #34
base: master
Are you sure you want to change the base?
Changes from 250 commits
e06aa8b
a22fae6
caab62d
808b07e
9f6d1f5
d3f3eee
170d290
5fea7ae
6130c8e
6b40637
36551a6
878a500
8708046
48431d4
2fda9a5
5e4c8f5
c95ac26
c403530
b7ba033
84d452e
760d2b8
f5efa3e
e1aa56b
1c57d14
157b2f5
71473dd
046f728
4173d9e
df9034d
561c55b
efa2e68
afc5da9
c6ff9f7
b3b5925
03e3bf2
af2acc8
2a3edeb
c083bab
bea75da
50e84d2
0c55f2c
a18f9f5
3d60910
2c4f808
6fea9e7
203b563
52ba42f
4c302c3
818ac6d
db391d6
8ded86a
e0f3010
511c2d5
807ba3b
bcb44aa
6d9b8b1
34d718f
a3ac2d7
a91bc94
95fceb1
c76645a
735d412
61d3ea1
e4bf253
fc04414
5a2574a
ed9d41f
a44ed52
f24fda4
603a8e8
423f434
50a76e2
278840f
6f92911
899d59c
a786440
8472f87
2af69d6
46860e5
36582df
59bafd0
4c5119c
64461ad
094c1a8
f853d3f
5e7996c
79ad211
1bd36bc
6f2f576
4b6c36e
9073bf7
c5b0eed
21a408a
e52afac
d3fe687
c289b09
7164a1f
ddf5101
ef268f6
644fc9e
d776ee0
693cec5
d2f4116
c8e9818
5a712a6
55c636e
4c0ce0b
ecfa9d0
bf58b9d
d680c6e
1fcfc1a
05535b5
ac0e993
ca25c88
4055810
e896802
5603b29
143326e
8671b4f
68d5de9
9ce6826
e3cdcb1
24dc1b7
96e5df4
8252a73
446db4e
52107c7
655300a
d3c9ba2
ef6e20b
2753457
840b728
e297649
7cc538e
f36230a
3ebdaec
0717535
571483e
ae3d805
a7cbd6e
98de929
b687f12
123a5a5
43ab3ab
7733918
9383b88
127640d
888e9f1
e5e9ded
0fa70d0
0bdf164
38cd27d
fe9c00f
91f5dd7
be647ef
0d84291
6b11693
f45bbfc
2d04853
29dfc43
9b1110c
017d71c
5647b85
1033fe1
f1e1f5e
62d093b
cccc0fa
dffac24
24803d8
25e0c51
2934d16
554bb39
69be4a8
4936cf3
51f7840
aba9c9a
9c14896
f6318c8
53ef3f1
9bef13b
06bde4a
aa5ab13
a7ee1c5
f3612fb
89fac75
36a598c
4f04f0e
afa8c72
fc9ce88
e998247
d055461
60d7024
4b07742
2649260
08d3321
ddf699c
0b20b14
a6cad4e
f61013f
482d51a
dc0d84e
7f0c5f6
fca3fa5
af3b48d
91ec4a2
08cd9eb
9512669
f26c8ea
3d49e55
5cf144c
a5580ac
1affd27
64237f3
eb2ab18
ed39713
7aa2a22
4d1adc2
ac5024d
e3f7f44
e7aca37
a96265f
d0c580a
8965e3c
1a0c0fc
9e26550
f475ec3
feec4a7
9a41220
362ec6b
9fb32d8
3476f7c
a0008ec
863f873
281a46b
bf1eae7
a43de92
55244e6
c239e6a
71a5550
40e6a55
e92392e
9a61d10
7a7daa9
fa399c5
de19a9a
0a3ccc7
14c3c43
2076b34
4e862f1
5872042
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
ibra | ||
1.[M] TITLE: meeting5 DAY: wednesday START: 1230 END: 1330 MODE: online | ||
2.[M] TITLE: meeting5 DAY: thursday START: 1230 END: 1330 MODE: online | ||
3.[L] TITLE: cs2113 DAY: friday START: 1100 END: 1300 MODE: online | ||
4.[L] TITLE: cs2113 DAY: friday START: 1430 END: 1530 MODE: online | ||
5.[L] TITLE: abc DAY: saturday START: 1230 END: 1330 MODE: physical | ||
ym | ||
1.[M] TITLE: meeting2 DAY: wednesday START: 1230 END: 1330 MODE: online | ||
2.[M] TITLE: meeting DAY: thursday START: 1230 END: 1330 MODE: online | ||
3.[L] TITLE: cs2113 DAY: friday START: 1230 END: 1330 MODE: online | ||
4.[L] TITLE: cs2113 DAY: friday START: 1430 END: 1530 MODE: online | ||
john | ||
1.[L] TITLE: cs2113 DAY: monday START: 1200 END: 1300 MODE: online | ||
2.[L] TITLE: cs2102 DAY: monday START: 1300 END: 1400 MODE: online | ||
3.[M] TITLE: meeting2 DAY: wednesday START: 1230 END: 1330 MODE: online | ||
4.[M] TITLE: meeting4 DAY: thursday START: 1230 END: 1330 MODE: online | ||
peter | ||
1.[L] TITLE: cs2113 DAY: monday START: 1200 END: 1300 MODE: online | ||
2.[M] TITLE: meeting2 DAY: wednesday START: 1230 END: 1330 MODE: online | ||
3.[M] TITLE: meeting DAY: thursday START: 1230 END: 1330 MODE: online |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,10 @@ | ||
# About us | ||
|
||
Display | Name | Github Profile | Portfolio | ||
--------|:----:|:--------------:|:---------: | ||
![](https://via.placeholder.com/100.png?text=Photo) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
|
||
| Display | Name | Github Profile | Portfolio | | ||
|-----------------------------------------------------|:--------------:|:-------------------------------------------:|:----------------------------------:| | ||
| ![](https://via.placeholder.com/100.png?text=Photo) | Ibrahim Sharul | [Github](https://github.com/ibrahimisramos) | [Portfolio](team/ibrahimsharul.md) | | ||
| ![](https://via.placeholder.com/100.png?text=Photo) | Ang Yong Ming | [Github](https://github.com/angyongming) | [Portfolio](team/angyongming.md) | | ||
| ![](https://via.placeholder.com/100.png?text=Photo) | Toh Yan Jie | [Github](https://github.com/yanjie1017) | [Portfolio](team/tohyanjie.md) | | ||
| ![](https://via.placeholder.com/100.png?text=Photo) | Li Hao | [Github](https://github.com/lihao-InfoSec) | [Portfolio](team/lihao.md) | | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,26 +4,207 @@ | |
|
||
{list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well} | ||
|
||
## Design & implementation | ||
# 1. Overview | ||
MeetingJio is a program for **finding potential time slots for team meetings based on everyone’s availability**. | ||
|
||
# 2. Design | ||
|
||
## 2.1 Architecture | ||
|
||
{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} | ||
|
||
## 2.2 UI Component | ||
|
||
## 2.3 Logic Component | ||
- Parsers | ||
- Commands | ||
|
||
## 2.4 Model Component | ||
- Timetables | ||
- Events | ||
|
||
## 2.5 Storage Component | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps StorageFile class can be mentioned here. |
||
|
||
# 3. Implementation | ||
This section describes some noteworthy details on how certain features are implemented. | ||
|
||
## 3.1 Add Feature | ||
The `add` command is a command that allows user to | ||
1. add new users to the master timetable. | ||
2. add new events to the timetables. | ||
|
||
The following sequence diagram shows how the `add` operation generally works. | ||
|
||
![AddCommandSequenceDiagram](diagrams/AddCommandSequenceDiagram.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
**_Note:_** | ||
|
||
This is a condensed diagram. Several terms in the sequence diagram above have been substituted by a common term. | ||
|
||
Common Term | User-specific term | Lesson-specific term | Meeting-specific term | | ||
------------|-------------------|----------------------|----------------------------| | ||
add | `"add_user ..."` | `"add_lesson ..."` | `"add_meeting ..."` | ||
AddCommand | `AddUserCommand` | `AddLessonCommand` | `AddMeetingCommand` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This annotaion is very clear and rigorous. Good job! |
||
|
||
|
||
## 3.1.1 Add User Feature | ||
`add_user` adds new user and his or her timetable into the master timetable. | ||
|
||
The following sequence diagram shows how the `add_user` command works: | ||
![AddUserCommandSequenceDiagram](diagrams/AddUserCommandSequenceDiagram.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
|
||
## 3.1.2 Add Events Feature | ||
|
||
`add_lesson` allows users to create a new lesson and add it to their own timetables. | ||
|
||
`add_meeting` allows users to create a new meeting and add it to all the existing timetables. | ||
|
||
|
||
The following sequence diagram shows how the `add_lesson` operation works in detail. | ||
![AddMeetingCommandSequenceDiagram](diagrams/AddLessonCommandSequenceDiagram.png) | ||
|
||
Given below is the steps on how the `add_lesson` operation works. | ||
|
||
>To be added | ||
|
||
The following sequence diagram shows how the `add_meeting` operation works in detail. | ||
![AddMeetingCommandSequence](diagrams/AddMeetingCommandSequence.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If the checkIfClash() method is always called, perhaps it should not be inside the opt frame. Rather, the guard condition can be "[If clash]", then only the returning error message part is inside the opt frame. |
||
|
||
Given below is the steps on how the `add_meeting` operation works. | ||
|
||
>To be added | ||
> | ||
## 3.2 Listing Events Feature | ||
The `list` command is a command that the user can input in order to list out the events he has in his timetable. | ||
|
||
`list [user]` displays the timetable for the particular user. | ||
|
||
`list all` displays the timetable for all users. | ||
|
||
In essence, the `list all` command repeatedly calls `list [user]` for all users. | ||
|
||
Before the timetable is listed out, it will also be sorted according to day and time for easy reading. | ||
|
||
The following sequence diagram shows how the command `` is executed. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Which command is executed? |
||
![ListCommandSequenceDiagram](diagrams/ListCommandSequenceDiagram.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
## 3.3 Finding Common Free Timeslots Feature | ||
The `free` command is a command that the user can input in order to find timeslots where all users are free. | ||
|
||
For greater customisation, `free [duration]` displays all common timeslots which has a duration longer than specified. | ||
|
||
The searching algorithm works by marking the busy slots of each timetable first. | ||
Timings that are not marked 'busy' are then identified as free time slots. | ||
|
||
The following sequence diagram shows how the command `free` is executed. | ||
![FreeCommandSequenceDiagram](diagrams/FreeCommandSequenceDiagram.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can the footer be removed?
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider adding in object deletion notations where appropriate |
||
|
||
## 3.4 Delete events `delete` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is the additional |
||
Deletes an event from the user's specified timetable | ||
|
||
**Format:** ` delete n/NAME i/INDEX` | ||
|
||
* Deletes from the timetable of user | ||
* Deletes the lesson at the specified `INDEX`. | ||
* The `INDEX` refers to the index number shown in the displayed lesson list. | ||
|
||
Example of usage: | ||
|
||
`delete n/John i/1` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps there is a lack of example inputs/outputs? Consider adding this for your |
||
|
||
If the event is a meeting, it will delete this event from all users | ||
|
||
The following sequence diagram shows how the `delete` command works: | ||
![DeleteCommandSequenceDiagram](diagrams/DeleteCommandSequenceDiagram.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is it possible to use ref to break up the diagrams into smaller pieces? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
Before the timetable is listed out, it will also be sorted according to day and time for easy reading. | ||
|
||
## 3.4 Data Saving Feature | ||
|
||
The save mechanism is facilitated by StorageFile. It creates a text file in the local machine and writes all the elements | ||
in the MasterTimetable and Timetable to the text file in human-readable format. | ||
|
||
Given below is the steps on how the save operation works. | ||
|
||
Step 1: When the user exits the application. The StorageFile.saveData will be initialized. | ||
|
||
Step 2: It will check for the existence of the data file. If the file is not found, it will create the file. | ||
Else do nothing. | ||
|
||
Step 3: After creating the file, collateAll method will be called to consolidate all elements in the MasterTimetable and Timetable list, | ||
and write them into the data file. | ||
|
||
Step 4: A message will be shown to the user, informing him that the data has been saved successfully. For any exception | ||
encountered along the way, an error message will be shown. | ||
|
||
The following sequence diagram shows how the save operation works: | ||
![SaveSequenceDiagram](diagrams/SaveSequenceDiagram.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
## 3.5 Loading Data Feature | ||
|
||
The save mechanism is facilitated by StorageFile. It reads the data specified in the local machine and stores all | ||
the records back into the MasterTimetable and Timetable list. | ||
|
||
Given below is the steps on how the load operation works. | ||
|
||
Step 1: When the user starts the application. The StorageFile.LoadData will be initialized. | ||
|
||
Step 2: It will check for the existence of the data file. If the file is not found, do nothing. | ||
Else it will open the file and extract the record line by line. | ||
|
||
Step 3: If a record is a lesson type, then it will call ParserLocalData.prepareLoadLesson method. | ||
Else if the record is a meeting type, then it will add the record into the meetingList. | ||
|
||
Step 4: If there is no record left, the program will check if the previous record contain a meeting. | ||
If yes, it will call for ParserLocalData.prepareLoadMeeting method to add all the meetings into the list. | ||
|
||
The following sequence diagram shows how the load operation works: | ||
![LoadSequenceDiagram](diagrams/LoadSequenceDiagram.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since theres only one condition, can the 2nd alt be replaced by opt? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
## 3.6 Clear events `clear` | ||
The `clear` command is a command that the user can clear a certain user's timetable or everyone's timetable. | ||
|
||
`clear [user]` clears the timetable for the particular user. | ||
|
||
`clear all` clearss the timetable for all users. | ||
|
||
## 3.7 Edit events feature | ||
|
||
The `edit` command is a command that allows users to edit a specified event. | ||
|
||
The following sequence diagram shows how the `edit` command works: | ||
![EditCommandSequenceDiagram](diagrams/EditCommandSequenceDiagram.png) | ||
|
||
Given below is the steps on how the `edit` operation works. | ||
|
||
>To be added | ||
|
||
## Product scope | ||
### Target user profile | ||
|
||
{Describe the target user profile} | ||
NUS Students who wish to meet as a group (be it for project meetings or to eat together) | ||
|
||
### Value proposition | ||
|
||
{Describe the value proposition: what problem does it solve?} | ||
1. Allow a group of students to quickly identify a common time slot such that all of them are free to meet up | ||
|
||
2. If no common time slot, allow students to see who is free at certain time slots | ||
|
||
3. The longest time slot with the most number of available students should be suggested first, followed by either shorter time slots or time slots where lesser students are able to make it | ||
|
||
|
||
## User Stories | ||
|
||
|Version| As a ... | I want to ... | So that I can ...| | ||
|--------|----------|---------------|------------------| | ||
|v1.0|new user|see usage instructions|refer to them when I forget how to use the application| | ||
|v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| | ||
| Version | As a ... | I want to ... | So that I can ... | | ||
|---------|----------|----------------------------------------------|----------------------------------------------------------| | ||
| v1.0 |new user| see usage instructions | refer to them when I forget the command format | | ||
| v1.0 |user| add a lesson | view my schedule easily | | ||
| v1.0 |user| delete a lesson | modify my schedule accordingly | | ||
| v1.0 |user| view all the lessons i have in my timetable | plan my activities accordingly | | ||
| v1.0 |user| add the location paramter to my lesson | plan my route in advance | | ||
| v1.0 |user| add a start time and end time to my lessons | know what time a lesson starts and ends | | ||
| v1.0 |user| clear all the lessons saved in the timetable | reset my timetable without the need to delete one by one | | ||
|
||
## Non-Functional Requirements | ||
|
||
|
@@ -36,3 +217,9 @@ | |
## Instructions for manual testing | ||
|
||
{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing} | ||
|
||
##Clear Command | ||
The clear command is one of the commands the user can execute to clear the whole list. | ||
|
||
|
||
Here is the sequence when the command `clear` is executed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be updated?