Integrated Notepad

Summary
Integrated Notepad that exists across every screen within the Building Automation Software using Niagara's Framework API. Used by specialist, support, and end users for independent, per screen tracking of edge device states.
Details
The Integrated Notepad* is a Java package that extends Niagara N4's Framework via its API to provide specialists and end users with various notepads exising across different pages. I took over this project to improve the user experience and performance while maintaining backwards compatibility.
This package is part of a bundled tools suite I designed and developed for the software team to use.
Original Faults
- Data Management & Performance: Prior to taking over this project, the Notepad system had poor performance at high data volumes and lacked an efficient data management system.
- User Experience: The Notepad system was not user-friendly with the note deletion Java action only allowing for the last note to be deleted causing end users to have to manually remove every note until they reached the desired number.
Front End Interaction
The UI was left mostly untouched to ensure backwards compatibility with the existing Notepad System with the only change being the addition of a new Java action tied to a new deletion button.
- New Button: The new button is tied to a new Java action called Remove A Note. This replaces the legacy Remove Last Note Button.
- Canvas Display: The canvas displays the current notes in the Notepad by displaying the note's ID, timestamp, user, and content.
Back End Architecture
The backend was completely redesigned. The original architecture would use Niagara's heavy database for creating BStringObject data and save it as Niagara's History data. In 60% of high volume data servers, performance was degrading while notes increased.
- In-Memory Persistence: The reworked backend now uses an in-memory data structure (Hash Map) to create and internally store notes as Niagara BObjects, ensuring fast access and retrieval times. This approach minimizes latency and maximizes performance. No more scanning through the database!
- Proactive Architecture: The BObjects are created via Java to exist within the modular component to easily organize and manage the data while still being accessible to the Niagara Framework and displayed in the UI. The internal hash map and the API Object data work synchronized to ensure consistency.
- Data Manipulation: The data is organized via the note's ID number. This allows for easy deletion and retrieval of notes. The new Remove A Note Java action uses this ID to remove the desired note and re-sync the data.
- Asynchronous Data Population: The actions are performed asynchronously to ensure the UI is responsive and the data is populated with near zero latency.




