Project: AddressBook Level 3
Project: AddressBook Level 3
LeadsForce - LeadsForce is a desktop application catered towards student financial advisors (FA) for managing their leads. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.
Given below are my contributions to the project.
- New Feature: Add a filter tag panel. (Pull requests #138)
- What it does: It provides an at-a-glance view of the tags associated to all the clients.
- Justification: It complements the filter feature since it gives the user an idea of what tags and how many tags are currently assigned, thus allowing them to filter their desired clients more quickly.
- Future improvements: Each tag in the tag panel can have a client count displayed to give the user an idea of how many clients are currently associated to this tag.
- Highlights: The implementation of tag panel was rather challenging since it involves setting up a custom listener as opposed to
ListView
, which by default, already has listener set up. A garbage collection mechanism will also need to be set up to ensure that any lingering unreferenced tags are purged. For this, I have to create another listener to watch for any changes in theUniqueClientList
and trigger the removal of unreferenced tags from there.
- New Feature: Implemented clickable filter tag buttons. (Pull requests #138)
- What it does: Every tag is now a clickable button. Clicking on each tag allows the user to filter the client list based on the tag name.
- Justification: It allows users even the fastest typists to gain an extra speed when it comes up filtering by tags. e.g. instead of typing
filter t/thisisaveryextremelylongtagname
, you can just click on the button and LeadsForce will write the command for you.
- New Feature: Implemented field interface. (Pull requests #55)
- What it does: Enforces developers to declare field options for the client attribute class they created.
- Justification: It provides an encapsulation of the constraints that a certain field has e.g. is it a required field? can this field be empty? etc.
-
Code contributed: RepoSense link
- Project management:
- Manage releases
v1.2.1
(1 releases) on GitHub. - Create the team repo.
- Configure the initial state of our project e.g. update site headers, refactor the file names to tailor to our project specifications.
- Propose the usage of GitHub project Kanban and migrate all the todos over.
- Manage releases
- Enhancements to existing features:
- Documentation:
- User Guide:
- Developer Guide:
- Update model architecture section due to
Tag
class reimplementation. #109 - Add design details of
Field
interface. #109 - Add
GUI Feature
section and implementation details forFilter tag panel
. #233 - Add
Extensions and customisations
section and recommend a workflow for developers to follow to tweak or add new themes. #233
- Update model architecture section due to
- Community: