PROJECT: Tasketch


Hello there~! :)

This is Jingchen from the Tasketch project team. This project is under National University of Singapore, School of Computing’s module CS2113T and CS2101. My teammates and I aim to create a software which helps NUS students manage their time properly. This portfolio serves to document my work on Tasketch.

Overview

Ui

Tasketch is a time management software aiming to help NUS students who need to manage their time by allocating time to daily tasks. More importantly, Tasketch is optimized for those who prefer to use a desktop app and work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
Tasketch is morphed from addressbook-level4 by 5 students, namely Cheah Zhi Kang, Jin Shibo, Li Zeyang, Wan Chunwei (my teammates) and Zhang Jingchen(me).

Summary of contributions

  • Main enhancement: Enhance visual feedback with timeline feature.

    • What it does: It arranges the tasks on a given day into a timeline according to their categories and display the timelines in parallel.

    • Justification: By visually showing the arranged timeline, this feature helps the user to better manage their tasks and decide on time allocation.

    • Highlights: Each category timeline will have their own color to be distinguished.

    • Credits: {Shibo’s idea is used on filtering the tasks according to date}

  • Other enhancement: Added command for changing calendar. Changed the find and history command that allows the user to easily locate a task and see history commands.

  • Code contributed: [Functional code] [Test code] {give links to collated code files}

  • Other contributions:

    • Project management:

      • The UI designer and the person in charge of group work coordination.

      • Managed releases v1.0 - v1.4 (2 releases) on GitHub

      • Helped in setting up issue trackers, set up Travis-CI and auto-update of project page.

    • Enhancements to existing features:

      • Improved the GUI structure.

      • Updated the GUI arrangement and corresponding enhancing features (Pull requests #83, #91, #96)

      • Updated previous commands (Pull requests #51, #45)

    • Documentation:

    • Community:

      • Reviewed most of the Pull Request.

      • Some parts of the history feature I added was referenced by several other class mates.

      • My UI structure and design are referenced.

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

View calender & timeline

Set the calendar to desired month : month

Shows the desired month to the user. Noted that only previous month and next month will be shown.
e.g. Current month is April, then only March and May can be shown.

The feature for changing the background color of each day on the calendar will come in v2.0!

Format:

  • month +
    Changes the current calendar to next month.

    month plus
  • month -
    Changes the current calendar to previous month.

  • month
    Show current month’s calendar.

    month this

Shows the timeline of a specific day to the user : timeline

timeline command will arrange the tasks on one day to real timelines.

Noted that if there are multiple tasks at the same time under same category, the timeline will only display one task name and time period. e.g Academic task1: 12:00-14:00, Academic task2: 12:00-15:00 (in one day). The academic timeline will only show 12:00-15:00 is reserved.

  • timeline
    Shows the timeline of today by default.

  • timeline [DATE]
    Shows the timeline of that date.

After adding or editing a task, user needs to retype timeline [DATE] to refresh the timeline.
This implementation is to make sure this feature is not purely part of UI.

Examples:

  • timeline
    Shows the timeline for today.

    timeline today
  • timeline 01-04-19
    Shows the whole timeline for 1st April 2019.

    timeline date
Timeline will only show the tasks between 6:00am to 24:pm. Sleeping early is a good habit~

Searching tasks by keywords: find/f

Finds tasks whose topic or description contain any of the given keywords.

Format: search KEYWORD [MORE_KEYWORDS] …​

  • The search is case insensitive. e.g Tutorial will match tutorial.

  • The order of the keywords does not matter. e.g. CS2113T tutorial will match tutorial CS2113T.

  • Only the description is searched.

  • Only full words will be matched e.g. tut will not match tutorial.

  • Tasks matching at least one keyword will be returned (i.e. OR search). e.g. CS2113T tutorial will return CS2113T lecture, CS3235 tutorial.

Examples:

  • find CS2113T
    Returns CS2113T lecture

  • f Lecture
    Returns CS2113T lecture and CS3235 lecture

Deleting a task : delete/d

Deletes the specified task from Tasketch.

Format: delete INDEX_NUMBER

  • Each tasks is identified by the index number shown in the task list.

  • Deletes the task with the index number.

Examples:

  • list
    delete 1
    Deletes the task with index number 1 in task list.

  • find cs2113t
    delete 1
    Deletes the task with index number 1 in task list.

Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.

Effective Visualization feature

Current Implementation

There are mainly two parts in this features, calendar and timeline arrangement

These two parts will help the user better arrange their time usage by visualization of time.

  • There are currently two commands with parameters to help achieve this, month and timeline.

    • Implementation for Calendar: Using GridPane to separate the whole calendar area into 35 grids.

      • Each one of the 35 grids is filled with PaneNode which is defined as area for a day.

      • PaneNode extends AnchorPane.


  • Implementation for Timeline: Using JavaFx and segment each part of the browserPanel.

    • First, separate the whole browserPanel into 2 parts: upperPane and timelinePane.

    • Second, separate the upperPane into calendarPane and reminderPane.

    • The whole implementation of timeline is in timelinePane using JavaFx.

    • The overall structure is JavaFx VBox, which is a vertical arrangement structure.

    • Inside the VBox, there are key time points for interval of 2 hours. Then the timeline for each category.

Design Considerations

Aspect: How timeline executes
  • Alternative 1 (current choice): Delete current timeline area and re-render timeline.

    • Pros: Easy to implement. User has the freedom to choose which day to display.

    • Cons: May have performance issues in terms of execution and computation power.

  • Alternative 2: The timeline is auto-updated after each add or edit command.

    • Pros: More intuitive to use.

    • Cons: User lost the freedom to choose which day to display the timeline.

Aspect: Special Data structure to support timeline commands
  • Alternative 1 (current choice): Use a 2-D array to store of PreTask objects instead of using Task objects.

    • Pros: Saves memory since filtering requires a copy of task details.

    • Cons: Similar class is created.

  • Alternative 2: Use a 2-D array to store Task objects.

    • Pros: More intuitive and easy to implement since no new class is created.

    • Cons: Requires more memory and computation power.

PROJECT: PowerPointLabs


{Optionally, you may include other projects in your portfolio.}