Skip to content

Commit

Permalink
Merge branch 'master' into add-Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
koh-jx authored Nov 4, 2021
2 parents efcb344 + fc864e9 commit 524c85c
Show file tree
Hide file tree
Showing 15 changed files with 183 additions and 213 deletions.
77 changes: 37 additions & 40 deletions docs/team/jeffsieu.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,40 @@ layout: page
title: Jeff Sieu's Project Portfolio Page

---

## Technical skills

Programming competencies: Java, JavaScript, Python, C/C++, HTML/CSS, Dart

Technologies: ReactJS, Flutter

## Work Experience

NA (Enlisted in the RSAF)

## Projects and Competitions

#### [Multiverse](https://github.com/wlren/multiverse)

- Co-developed an all-in-one NUS app as part of CP2106 Independent Software Development Project (Orbital 2020).

#### [Stops](https://play.google.com/store/apps/details?id=com.jeffsieu.stops)

- Simple, elegant Flutter app displaying live bus timings in Singapore.

#### [txthlpr](https://jeffsieu.github.io/txthlpr/)

- Web app to perform repetitive actions on a block of text

#### [tzcharts](https://tzcharts.xyz/)

- Web app to view information on tzTokens

#### [quards](https://github.com/jeffsieu/quards)

- Solitaire Flutter App

#### Google Code-in 2017

- Grand Prize winner

## Additional Information

- Fluent in English, Chinese, Japanese and German (spoken and written)
## Project: TaskMaster2103

TaskMaster2103 is an extension to [AddressBook - Level 3](https://se-education.org/addressbook-level3/), a CLI-based address book JavaFX application.
It adds task-tracking functionalities to the base application, while boasting intuitive GUI features that complement the main CLI workflow.

Given below are my contributions to the project.

- **New feature**: Added the ability to filter tasks by tags (GUI: [`#57`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/57), CLI: [`#75`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/75), [`#144`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/144)).
- What it does: allows the user to filter the main task list by certain conditions.
- Justification: the user may have many tasks; allowing a way to quickly narrow down the scope of displayed tasks is beneficial to efficiency.
- Highlights: filters are implemented as abstract classes to allow for extensibility (e.g., filter by date range).
- **New feature**: Added a GUI dialog interface to create/edit tasks ([`#86`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/86), [`#179`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/179), [`#185`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/185)).
- What it does: allows the user to create/edit tasks using a graphical interface
- Justification: the CLI version of the interaction requires all fields of the editied task to be specified of the task. The GUI allows the user the edit a single field without having to re-specify other existing fields.
- Highlights: All GUI interactions route their logic in the same way as a CLI command, reducing the need for repeated code.
- **Code reorganization**: Overhauled the command parsing logic for **more robust and extensible command handling** ([`#175`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/175)). New commands can be easily added, command format errors are more succinct. The help window and usage messages are also automatically generated.
- What it does: parses all instances of `abc/def` as a command argument with prefix `abc/` and value `def`.
This is to prevent unexpected behaviour with the base application, where `/` was used in all prefixes but could also be present in data values.
- Justification: Outdated usage messages were common as they were hard-coded strings. Commands knew nothing about their syntax, and handled arguments individually. This caused lots of logic repetition and room for error.
- Highlights: To solve this, ***every command and command parser*** had to be refactored to include information about every parameter accepted, and their *multiplicity* (optional or not, can accept multiple or not). Once this was done, however, it allowed for many useful abstractions like auto-generation of command usage message, and detailed error messages that tell the user how exactly the format is wrong.
- **Code contributed**: [RepoSense link](https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-09-17&tabOpen=true&tabType=authorship&tabAuthor=jeffsieu&tabRepo=AY2122S1-CS2103-F09-2%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code~other&authorshipIsBinaryFileTypeChecked=false)
- **Enhancement to existing features**
- Rethemed the GUI to have a more uniform aesthetic [`#179`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/179).
- Update help window [`#184`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/184)
- Slash to focus on command input [`#56`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/56)

- **Testing**
- Added test cases for task-related commands. [`#58`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/58)

- **Documentation**
- Added `task add`, `task edit` and `task delete` use cases in [`#32`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/32)
- Added `task filter` in Developer Guide [`#71`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/71), [`#77`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/77)

- **GUI**
- Added GUI task list with checkboxes in [`#40`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/40), [`#51`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/51), [`#57`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/57)
- Community:
- PRs reviewed (with non-trivial comments):[`#44`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/44)[`#70`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/70), [`#89`](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/89)
63 changes: 62 additions & 1 deletion docs/team/yeppog.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,66 @@ layout: page
title: Jonathan Lee's Project Portfolio Page

---
## Project: TaskMaster2103

TaskMaster2103 is an extension to [AddressBook- Level3](https://se-education.org/addressbook-level3/)
, a CLI-based address book JavaFX application. It adds on task tracking functionalities and allowing for a hybrid
GUI and CLI usage of the application.

Below are my contributions to the project.

- **New Feature**: Added undo/redo functionality to the application (undo:
[#70](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/70),
redo: [#100](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/100))

- What it does: allows the user to navigate back and forth through their commands executed, allowing them to be undone or redone.

- Justification: every application that has command capabilities that alter the state of the app should have an undo
or redo functionality to rectify errors that could have been made. This speeds up the overall usage of the app.

- Highlights: the feature can be accessed through CLI or simply using familiar shortcuts such as `Ctrl/CMD + Z` for
**undo**, and `Ctrl/CMD + Shift + Z` or `Ctrl/CMD + Y` for **redo**.

- **New Feature**: Added command history to the application [#79](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/79)

- What it does: allows the user to toggle through their previously executed commands.

- Justification: to align with a true CLI interface, this function is built innately in most terminals and we wanted
to give the same feel to the CLI users of the application. Users who chose CLI are likely to be more comfortable with
terminal environments and it only feels right to have this feature in.

- Highlights: Pressing up cycles through previous commands, and pressing down cycles through the preceeding commands.
The feature also keeps track of whatever one has currently typed. Pressing up or down after typing something that
has not been executed stores the typed command down, and can be accessed simply by pressing down to the very last
command.

- **Code contributed**: [Reposense link](https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-09-17&tabOpen=true&tabType=authorship&tabAuthor=yeppog&tabRepo=AY2122S1-CS2103-F09-2%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code&authorshipIsBinaryFileTypeChecked=false)]

- **Enhancements to existing features**: Improved the preliminary design of the help window.

- What it does: Revamp the help window to contain information on the commands that can be viewed without the User Guide.

- Justification: The application is intended to be used without an internet connection, and users may not be able to
access the hosted User Guide. The help window should be able to display command information without an internet
connection.

- Highlights: also added a hyperlink to the hosted User Guide that opens the browser, to prevent unneccesary copy
pasting of the guide link.

- **Testing**: Added test cases for respective commands or features that were added by myself.

- **Documentation**:

- Add documentation for `undo`, `redo` and **Command History** in the User Guide.

- Add documentation for `undo`, `redo` and **Command History** in the Developer Guide, together with
Activity Diagrams.

- **Community**:

- PRs reviewed (non-trivial) [#86](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/86), [#188](https://github.com/AY2122S1-CS2103-F09-2/tp/pull/188)



## Technical skills

Expand All @@ -11,7 +71,8 @@ Technologies: ReactJS, ReactTS, Redux, Angular 2, MongoDB, Postgressql, SQL, Doc

## Work Experience

### Software Engineering Intern, Qavar Pte Ltd
### Software Engineering Intern, Qavar Pte Lt


- Handled a full stack project in Golang, Angular and Docker
- Used Angular to create front-end site from given wireframes.
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/seedu/address/MainApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {
if (taskListOptional.isEmpty()) {
logger.info("Data file not found. Will be starting with empty");
}
initialTasksData = taskListOptional.orElseGet(TaskList::new);
initialTasksData = taskListOptional.orElseGet(SampleDataUtil::getSampleTaskList);
} catch (DataConversionException e) {
logger.warning("Data file not in the correct format. Will be starting with an empty TaskList");
initialTasksData = new TaskList();
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/seedu/address/commons/core/Messages.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ public class Messages {

public static final String MESSAGE_UNKNOWN_COMMAND = "Unknown command";
public static final String MESSAGE_INVALID_COMMAND_FORMAT = "Invalid command format! \n%1$s";
public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX = "The person index provided is invalid";
public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX = "The person index provided is out of bounds";
public static final String MESSAGE_PERSONS_LISTED_OVERVIEW = "%1$d person(s) listed!";
public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX = "The task index provided is invalid";
public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX = "The task index provided is out of bounds";
public static final String MESSAGE_TASKS_LISTED_OVERVIEW = "%1$d task(s) listed!";
public static final String MESSAGE_UNABLE_TO_EXECUTE = "This command has already been executed!";
public static final String MESSAGE_UNABLE_TO_UNDO = "This command has already been undone!";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ private static Task createEditedTask(Task taskToEdit, EditTaskDescriptor editTas
.or(taskToEdit::getDescription).orElse(null);
Timestamp updatedTimestamp = editTaskDescriptor.getTimestamp()
.or(taskToEdit::getTimestamp).orElse(null);
boolean updatedDone = editTaskDescriptor.isDone().orElse(taskToEdit.isDone());
Set<Tag> updatedTags = editTaskDescriptor.getTags()
.orElse(taskToEdit.getTags());
Set<Contact> updatedContacts = editTaskDescriptor.getContacts()
Expand All @@ -94,7 +95,7 @@ private static Task createEditedTask(Task taskToEdit, EditTaskDescriptor editTas
updatedDescription,
updatedTimestamp,
updatedTags,
taskToEdit.isDone(),
updatedDone,
updatedContacts);
}

Expand Down Expand Up @@ -159,6 +160,7 @@ public static class EditTaskDescriptor {
private String title;
private String description;
private Timestamp timestamp;
private Boolean isDone;
private Set<Tag> tags;
private Set<Contact> contacts;

Expand All @@ -173,6 +175,7 @@ public EditTaskDescriptor(EditTaskDescriptor toCopy) {
setTitle(toCopy.title);
setDescription(toCopy.description);
setTimestamp(toCopy.timestamp);
setDone(toCopy.isDone);
setTags(toCopy.tags);
setContacts(toCopy.contacts);
}
Expand All @@ -190,6 +193,7 @@ public static EditTaskDescriptor from(Task toCopy) {
descriptor.setTags(toCopy.getTags());
descriptor.setDescription(toCopy.getDescription().orElse(null));
descriptor.setContacts(toCopy.getContacts());
descriptor.setDone(toCopy.isDone());
return descriptor;
}

Expand Down Expand Up @@ -220,6 +224,14 @@ public void setDescription(String description) {
this.description = description;
}

public Optional<Boolean> isDone() {
return Optional.ofNullable(isDone);
}

public void setDone(Boolean done) {
isDone = done;
}

public Optional<Timestamp> getTimestamp() {
return Optional.ofNullable(timestamp);
}
Expand Down

This file was deleted.

3 changes: 2 additions & 1 deletion src/main/java/seedu/address/logic/parser/ParserUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
*/
public class ParserUtil {

public static final String MESSAGE_INVALID_INDEX = "Index is not a non-zero unsigned integer.";
public static final String MESSAGE_INVALID_INDEX =
"Index is not a non-zero unsigned integer from 1 to 2147483647 (max int value)";

/**
* Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be
Expand Down
36 changes: 36 additions & 0 deletions src/main/java/seedu/address/model/util/SampleDataUtil.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
package seedu.address.model.util;

import java.time.LocalDate;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

import seedu.address.model.AddressBook;
import seedu.address.model.ReadOnlyAddressBook;
import seedu.address.model.ReadOnlyTaskList;
import seedu.address.model.TaskList;
import seedu.address.model.person.Address;
import seedu.address.model.person.Email;
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.tag.Tag;
import seedu.address.model.task.Contact;
import seedu.address.model.task.Task;
import seedu.address.model.task.Timestamp;

/**
* Contains utility methods for populating {@code AddressBook} with sample data.
Expand Down Expand Up @@ -49,6 +55,36 @@ public static ReadOnlyAddressBook getSampleAddressBook() {
return sampleAb;
}

public static Task[] getSampleTasks() {
Set<Contact> contacts = new HashSet<>();
contacts.add(new Contact(new Name("Jeremy")));
contacts.add(new Contact(new Name("Roy Balakrishnan"), true));
HashSet<Tag> tags = new HashSet<Tag>();
tags.add(new Tag("todo"));
tags.add(new Tag("urgent"));
return new Task[] {
new Task("Finish CS2103 tasks", "1. Settle merge conflicts \n2. Create new PR"
+ "\n3. Triage PE-D Bugs",
Timestamp.of(LocalDate.now()),
tags,
contacts),
new Task("Finish CS2105 Assignment", "Finish up the last question",
Timestamp.of(LocalDate.now()), new HashSet<Tag>(), new HashSet<Contact>()),
new Task("Submit CS2100 Assignment", "Upload to Luminus", Timestamp.of(LocalDate.now()),
tags, true, new HashSet<Contact>()),
new Task("Finish this mod", "Submit this project", Timestamp.of(LocalDate.now()), tags,
contacts)
};
}

public static ReadOnlyTaskList getSampleTaskList() {
TaskList sampleTl = new TaskList();
for (Task sampleTask: getSampleTasks()) {
sampleTl.addTask(sampleTask);
}
return sampleTl;
}

/**
* Returns a tag set containing the list of strings given.
*/
Expand Down
Loading

0 comments on commit 524c85c

Please sign in to comment.