Owen Chew - Project Portfolio Page for traKCAL

Overview

traKCAL is a desktop application for managing calorie intake, optimized for use via Command Line Interface (CLI) whilst retaining the benefits of a Graphical User Interface (GUI). traKCAL can manage your activities faster than traditional GUI applications.

Summary of Contributions

I have implemented the following -

Code contributed

Repo sense link: Link to RepoSense

Enhancements implemented

  1. List drawing classes (listDrawer and findDrawer)
    • Implemented a responsive list when the users want to see a list of activities for a specific day. In the list, users can see their list of activities, respective calorie gain or lost, date of the list and their net calorie for that day in a more user-friendly environment.

    • Implemented a responsive list when the users use the ‘find’ command to see a list of activities containing the keyword/s corresponding to the type of ‘find’ command. In the list, users can see the activities containing the keyword/s, the respective date of each activity and the respective calorie gain or lost.

    • Implementing the drawer classes for the list command was difficult as there were many things to be taken into consideration when creating this list. For example,

      • When the numbering of the activities become very large, the formatting of the list may get distorted and the alignment will be off. Therefore, it was important for the start index of each column to be responsive to the index of the numbering.

      • When the description of each activities become too long, the formatting of the list will once again get distorted. It was important for there to be a fixed length per line for the description and let the trailing lines roll over to the next line, aligned to the start index of the description above so as to maximise the user experience of the user when looking at the list of activities.

      • Making this list responsive allowed me to integrate the date column for the findDrawer class in between the numbering and the type of activity easily without affecting the other columns.

  2. Implementing the data structure
    • Implemented the data structure of how the dates and the respective activities are stored in the system. Using a hashmap, with the key being the date and the value being the activityList for that day.

    • Implementing the correct data structure from the start of the project was essential so as to avoid unnecessary refactoring. Using a hashmap was the only logical way to store the data and improve the performance of our application.

Contributions to the User Guide

I contributed to section 5.0 (List), section 8.0(Move), contributed to the overall formatting and proofreading of the User Guide.

Contributions to the Developer Guide

I contributed to the -

Contributions to team-based tasks

I contributed to the -

Review/mentoring contributions

Link to PRs reviewed: Link to PR

Contributions beyond the project team

Link to contributions: Link to contributions