Skip to content

Commit

Permalink
Merge pull request #435 from shaowi/developer-guide
Browse files Browse the repository at this point in the history
Added 2 more planned enhancement
  • Loading branch information
jedidiahC authored Apr 9, 2023
2 parents a96c399 + 9c58438 commit 2faa603
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 26 deletions.
61 changes: 52 additions & 9 deletions docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -608,12 +608,13 @@ The following is a description of the code execution flow
Note: ModuleCode, LectureName and VideoName should not contain commas (","). Rather than throwing as errors, Le Tracker will treat it as though the user intended to delete multiple entities

3. The appropriate `DeleteCommand` subclass object is created then returned to its caller.
- `DeleteModuleCommand`: single module to be deleted
- `DeleteMultipleModulesCommand`: more than one module to be deleted
- `DeleteLectureCommand`: single lecture to be deleted
- `DeleteMultipleLecturesCommand`: more than one lecture to be deleted
- `DeleteVideoCommand`: single video to be deleted
- `DeleteMultipleVideosCommand`: more than one video to be deleted

- `DeleteModuleCommand`: single module to be deleted
- `DeleteMultipleModulesCommand`: more than one module to be deleted
- `DeleteLectureCommand`: single lecture to be deleted
- `DeleteMultipleLecturesCommand`: more than one lecture to be deleted
- `DeleteVideoCommand`: single video to be deleted
- `DeleteMultipleVideosCommand`: more than one video to be deleted

4. If no exceptions are thrown, Le Tracker has successfully maanged to delete the specified module(s)/lecture(s)/video(s) the respective context. <br>
Possible exceptions that could be thrown are:
Expand Down Expand Up @@ -698,7 +699,6 @@ As a comparison to the diagram above, the following diagram shows the Sequence D

![MarkAsUnwatched](images/mark/MarkAsMultipleAsUnwatchedExecutionSequenceDiagram.png)


The following is a description of the code execution flow:

1. `MarkAsWatchedCommandParser#parse(String)` / `MarkAsUnwatchedCommandParser#parse(String` takes the user's input as a `String` argument and determines the target video to be marked. The following table below depicts the command returned against the user's intent
Expand Down Expand Up @@ -2537,6 +2537,7 @@ Some incorrect commands to try from root context:
| 1. `nav /mod CS2040S /lec Week 1`<br/>2. `edit Week 1 /mod CS2040S /name W1 /tags Intro, BigO` | **Message:**<br/>`Edited lecture of module CS2040S: W1; Tags: [BigO][Intro]; Videos: Vid 1; Watched; Timestamp: 00:00:00; Tags: [Algo]Vid 2; Watched; Timestamp: 00:00:00; Tags: [Analysis]`<br/>**List updates:** None |

Some incorrect commands to try from root context:

- `edit /mod CS2040S` (incorrect format)
- `edit Week 1 /mod CS2040S /name Week 2` (duplicate lecture)
- `edit Week! /mod CS2040S` (invalid lecture name)
Expand All @@ -2554,6 +2555,7 @@ Some incorrect commands to try from root context:
| 1. `nav /mod CS2040S /lec Week 1`<br/>2. `edit Vid 1 /name Vid 01 /timestamp 01:04:20 /unwatch /tags Analysis, BigO` | **Message:**<br/>`Edited video of lecture Week 1 of module CS2040S: Vid 01; Not Watched; Timestamp: 01:04:20; Tags: [BigO][Analysis]`<br/>**List updates:** Entry for "Vid 1" updated to "Vid 01", with timestamp "01:04:20", tags "Analysis" and "BigO", and video marked as "not watched". |

Some incorrect commands to try from root context:

- `edit /mod CS2040S /lec Week 1` (incorrect format)
- `edit Vid 1 /mod CS2040S /lec Week 1 /name Vid 2` (duplicate video)
- `edit V!d 1 /mod CS2040S /lec Week 1` (invalid video name)
Expand Down Expand Up @@ -2731,41 +2733,47 @@ Here are some examples of poorly formatted messages that the team has identified
1. The following is a sample command for adding a module and it's output message upon success:\
Command: `add CS2103T /name Software Engineering /tags Coding, 4MCs`\
Output:

```
New module added: CS2103T; Name: Software Engineering; Tags: [4MCs][Coding]
```

2. The following is a sample command for adding a lecture and it's output message upon success:\
Command: `add Week 7 /mod CS2040S /tags AVLTree, Census`\
Output:

```
New lecture added to module CS2040S: Week 7; Tags: [Census][AVLTree]
```

3. The following is a sample command for adding a video and it's output message upon success:\
Command: `add Vid 3 /mod CS2040S /lec Week 1 /timestamp 01:04:20 /watch /tags Analysis, BigO`\
Output:

```
`New video added to module CS2040S of lecture Week 1: Vid 3; Watched; Timestamp: 01:04:20; Tags: [Big][Analysis]`
```

4. The following is a sample command for editing a module and it's output message upon success:\
Command: `edit CS2040S /code CS2040 /name DSAG /tags Analytical, 4MCs`\
Output:

```
Edited module: CS2040; Name: DSAG; Tags: [4MCs][Analytical]; Lectures: Week 1; Tags: [Intro]; Videos: Vid 1; Watched; Timestamp: 00:00:00; Tags: [Algo]Vid 2; Watched; Timestamp: 00:00:00; Tags: [Analysis]Week 2; Tags: [Sorting]; Videos: Vid; Watched; Timestamp: 00:00:00Week 3; Tags: [Arrays][LinkedList]; Videos: Vid 1; Watched; Timestamp: 00:00:00; Tags: [Algo]Vid 2; Watched; Timestamp: 00:00:00; Tags: [Analysis]Week 4; Tags: [Stacks][Queues]; Videos: Vid; Watched; Timestamp: 00:00:00Week 5; Tags: [Hashing]; Videos: Vid 1; Watched; Timestamp: 00:00:00; Tags: [Algo]Vid 2; Watched; Timestamp: 00:00:00; Tags: [Analysis]Week 6; Tags: [BloomFilter]; Videos: Vid; Not Watched; Timestamp: 00:24:20
```

5. The following is a sample command for editing a lecture and it's output message upon success:\
Command: `edit Week 1 /mod CS2040S /name W1 /tags Intro, BigO`\
Output:

```
Edited lecture of module CS2040S: W1; Tags: [BigO][Intro]; Videos: Vid 1; Watched; Timestamp: 00:00:00; Tags: [Algo]Vid 2; Watched; Timestamp: 00:00:00; Tags: [Analysis]
```

6. The following is a sample command for editing a video and it's output message upon success:\
Command: `edit Vid 1 /mod CS2040S /lec Week 1 /name Vid 01 /timestamp 01:04:20 /unwatch /tags Analysis, BigO`\
Output:

```
Edited video of lecture Week 1 of module CS2040S: Vid 01; Not Watched; Timestamp: 01:04:20; Tags: [BigO][Analysis]
```
Expand All @@ -2779,6 +2787,7 @@ Given the above 6 examples, their respective redesigned output will be as such:
1. The following is a sample command for adding a module and it's output message upon success:\
Command: `add CS2103T /name Software Engineering /tags Coding, 4MCs`\
Output:

```
New module added
Code: CS2103T
Expand All @@ -2789,6 +2798,7 @@ Tags: [4MCs] [Coding]
2. The following is a sample command for adding a lecture and it's output message upon success:\
Command: `add Week 7 /mod CS2040S /tags AVLTree, Census`\
Output:

```
New lecture added to module "CS2040S"
Name: Week 7
Expand All @@ -2798,6 +2808,7 @@ Tags: [Census] [AVLTree]
3. The following is a sample command for adding a video and it's output message upon success:\
Command: `add Vid 3 /mod CS2040S /lec Week 1 /timestamp 01:04:20 /watch /tags Analysis, BigO`\
Output:

```
New video added to lecture "Week 1" of module "CS2040S"
Name: Vid 3
Expand All @@ -2809,6 +2820,7 @@ Tags: [BigO] [Analysis]
4. The following is a sample command for editing a module and it's output message upon success:\
Command: `edit CS2040S /code CS2040 /name DSAG /tags Analytical, 4MCs`\
Output:

```
Edited module "CS2040S":
Updated Code: CS2040
Expand All @@ -2819,6 +2831,7 @@ Updated Tags: [4MCs] [Analytical]
5. The following is a sample command for editing a lecture and it's output message upon success:\
Command: `edit Week 1 /mod CS2040S /name W1 /tags Intro, BigO`\
Output:

```
Edited lecture "Week 1" of module "CS2040S":
Updated Name: W1
Expand All @@ -2828,6 +2841,7 @@ Updated Tags: [BigO] [Intro]
6. The following is a sample command for editing a video and it's output message upon success:\
Command: `edit Vid 1 /mod CS2040S /lec Week 1 /name Vid 01 /timestamp 01:04:20 /unwatch /tags Analysis, BigO`\
Output:

```
Edited video "Vid 1" of lecture "Week 1" of module "CS2040S":
Updated Name: Vid 01
Expand All @@ -2837,6 +2851,7 @@ Updated Tags: [BigO] [Analysis]
```

### Feature flaw #2: No length limit for module code, module name, lecture name, video name, and tag

**Description**

There is currently **no limit** on the length of a module code and module name that can be assigned to a module. This is the same for the name of a lecture and the name of a video. This allows users to assign ridiculously long values to these fields, causing the UI to be truncated. This may also potentially slow down the application, and increase the size of the data file.
Expand All @@ -2850,8 +2865,36 @@ The following is an example of a lecture with a very long name, causing the name
For the commands that allow a user to assign values to the mentioned fields (`add`, `edit`, `tag`, `untag`, etc.), the arguments should have their length limited to some value (e.g. 30 characters).

The checking and limiting of length can be done while parsing the arguments and should produce an error message if the maximum length is exceeded:
```

```text
The following {field} should not exceed the length limit of 30 characters: {value}
```

### Feature flaw #3:
### Feature flaw #3

### Feature flaw #4: Limited Find function capability

**Description**

When user finds a module, there is only matches for module code/name that **starts with** the keyword specified by user.
This reduces the flexibility of the find function as they might be users who do not remember what a module starts with, which may create an unpleasant experience for them.

<img src="images/FindNoResult.png" width="350"/>

**Proposed Solution**

Instead of matching contents that **starts with** a keyword, relax it to **contain** the keyword.
E.g. `find 2040` will match `CS2040` because `CS2040` contains `2040`.

### Feature flaw #5: Over buffering command history

**Description**

Commands executed by users are saved in a stack. However, no limit is set to the number of past commands that a user can see.
This can lead to having too much memory being allocated for it and having no boundary.

**Proposed Solution**

Set a limit to the number of commands viewable in command history.
Perhaps allowing user to see the last 5 or 10 or 15 commands only, the oldest command will be deleted forever if the limit
is exceeded.
Binary file added docs/images/FindNoResult.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
47 changes: 30 additions & 17 deletions docs/team/shaowi.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,50 @@ layout: page
title: Shao Wee's Project Portfolio Page
---

### Project: LE TRACKER
## Project: Le Tracker

LE TRACKER is a gamified tracking application that allows fast typist to easily log their lecture progress, search for lecture by mod code/ keywords/ topics for a stress-free learning environment. Unlike todo list applications, LE TRACKER is tailored to the needs of students; it provides additional information specific to lecture media such as watch progress and topics.
Le Tracker is a desktop application that focuses on tracking lecture watch progress. Designed for NUS students who are fast typists, it seeks to address the problem of students losing track of their watch progress, especially for students falling behind on multiple lectures.

Given below are my contributions to the project.
Le Tracker is a specialized app that caters to the specific requirements of students, offering functionalities that go beyond those of a typical to-do list app. For instance, it enables users to monitor the overall progress of a module, and to assign tags to individual lectures that describe their topic or level of difficulty. These features allow students to efficiently filter and prioritize their tasks, helping them maintain an organized approach and keep track of their progress with greater accuracy.

**New Feature**: TBA
Although it is a GUI built with JavaFX, the UI is similar to the use of a command-line interface. The code base has about 20k LoC which are all written in Java.

- TBA
Below are my contributions to the project.

**Code contributed**: [Repo link](https://github.com/shaowi/tp)
### New Feature

- Ability for users to navigate through the previous text that was inputted in command box.
- List modules, lectures and videos.
- Find modules, lectures and videos by tag or names capability.

**Code contributed**: [Repo link](https://nus-cs2103-ay2223s2.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2023-02-17&tabOpen=true&tabType=authorship&tabAuthor=shaowi&tabRepo=AY2223S2-CS2103-F10-2%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code~other&authorshipIsBinaryFileTypeChecked=false&authorshipIsIgnoredFilesChecked=false) (3k+ LoC)

**Project management**:

- TBA
- Created [milestone](https://github.com/AY2223S2-CS2103-F10-2/tp/milestone/3?closed=1) for v1.3 release.
- Assign issues as project tasks to team members.

**Enhancements to existing features**:

- TBA
| Feature | Pull Request |
| --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Updated navigation to user guide in help window | [\#68](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/68) |
| Build on `list` command | [\#94](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/94), [\#188](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/188), [\#210](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/210), [\#219](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/219) |
| Added more test to `list` command | [\#104](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/104), [\#159](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/159) |
| Build on `find` command | [\#157](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/157), [\#180](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/180) |
| Added more test to `find` command | [\#173](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/173) |
| :arrow_up: and :arrow_down: arrow keys to see previous commands | [\#210](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/210), [\#307](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/307) |

**Documentation**:

- User Guide:
- TBA
- Developer Guide:
- TBA
| Guide | Description | Pull Request |
| --------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| User | Added `Quick Start` section | [\#54](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/54), [\#361](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/361) |
| User | Added table of contents | [\#186](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/186) |
| User | Added documentation for features `list` and `find` | [\#121](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/121), [\#177](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/177), [\#186](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/186), [\#189](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/189), [\#343](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/343) |
| Developer | Added implementation for features `list` and `find` | [\#171](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/171), [\#343](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/343) |
| Other | Modified and cleaned up other documentations | [\#328](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/328) |

**Community**:

- TBA

**Tools**:

- TBA
- Reviewed PRs ([\#56](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/56), [\#59](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/59), [\#60](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/60), [\#72](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/72), [\#103](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/103), [\#110](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/110), [\#114](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/114), [\#120](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/120), [\#154](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/154), [\#158](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/158), [\#174](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/174), [\#176](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/176), [\#187](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/187), [\#192](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/192), [\#197](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/197), [\#214](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/214), [\#216](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/216), [\#217](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/217), [\#325](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/325), [\#327](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/327), [\#334](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/334), [\#341](https://github.com/AY2223S2-CS2103-F10-2/tp/pull/341))

0 comments on commit 2faa603

Please sign in to comment.