Overview
This document is meant for recording the contributions I have committed and the role played in the developing of this project.
MakerManger is a free, open-sourced desktop application developed to improve the efficiency of existing facilities at makerspace at SoC. Currently, the facilities are mostly 3D printers. Without the traditional tedious and complicated method of managing the usage of the facilities, MakerManger provides a real-time list and appended job queue for each. Algorithms are also able to provide the tasking method which consumes least time.
In abstract, MakerManager has these features:
* A 2-level access system, for the normal users and lab managers.
* Normal users can add jobs to specified machines or let the system help them allocate to the most free one.
* Admin users can register/deregister machines, manage job queues of machines.
* All users can monitor the status of machines and printing progress of all jobs.
Summary of contributions
-
Major enhancement: added Job class and relevant classes in storage and UI component
-
What it does: allows the developers to work on these components to add more features.
-
Justification: These classes are crucial to MakerManager, as all the features related to jobs are based on them.
-
Credits: The development of version 1.0 is done fully by me. Later on, Teo Jun Jie (one of our team member) fixed some bugs of the integration with the storage component and UI component. After that, I picked up and added some small changes.
-
-
Major enhancement: added addJob command
-
What it does: allows the user to add a job with specified name and priority to the job list.
-
Justification: This feature is one of the key features of MakerManger. Without this, users will not be able to add any jobs to any machine.
-
Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.
-
Credits: The development of version 1.0 is done fully by me. Later on, Teo Jun Jie (one of our team member) fixed some bugs of the integration with the storage component and UI component. After that, I picked up and added some small changes.
-
-
Minor enhancement: added the findJob, listJobs command for users to locate a job by name. PR#50
-
Minor enhancement: implemented the TimeStamp object for version 1.0. TimeStamp was refactored by Sean. PR#77
-
Minor enhancement: refactored all the codes and removed all the irrelevant person class. PR#154
-
Code contributed: You can see my code contributions in this Code Dashboard by Reposense
-
Other contributions:
-
Project management:
-
Managed releases
v1.3
-v1.4
(2 releases) on GitHub -
Post issues in the Issue Tracker.
-
-
Enhancements to existing features:
-
Updated the color scheme of JobCards in GUI based on Google’s Material Design Color Pattern.
-
Wrote additional tests for existing features of jobs
-
-
Documentation:
-
Format check of the developer Guide.
-
Updated the User Guide and Developer Guide for my features.
-
Add on the manual testing cases in the Developer Guide.
-
-
Community:
-
PRs reviewed (with non-trivial review comments): PR#33, PR#65
-
Participated in the forum discussions.
-
-
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. |
Command Summary
This is a nifty little list you can print and paste somewhere for quick reference.
-
help
-
undo
-
redo
-
history
-
login ADMIN_ID PASSWORD
-
logout
-
addAdmin USERNAME PASSWORD VERIFY_PASSWORD
-
removeAdmin USERNAME
-
updatePassword USERNAME OLD_PW NEW_PW NEW_PW_VERIFY
-
addMachine n/MACHINE_NAME ms/STATUS
-
editMachine MACHINE_NAME [n/MACHINE_NAME] [ms/STATUS]
-
manageMachine MACHINE_NAME remove
-
manageMachine MACHINE_NAME flush
-
manageMachine MACHINE_NAME flush AUTO
-
manageMachine MACHINE_NAME clean
-
findMachine [MACHINE_NAME_1] [MACHINE_NAME_2]
-
listMachines
-
addJob n/PRINT_NAME m/MACHINE_NAME on/OWNER NAME pr/PRIORITY d/DURATION(in hours) jn/NOTE [t/TAG]
-
manageJob JOB_NAME start
-
manageJob JOB_NAME cancel
-
manageJob JOB_NAME restart
-
manageJob JOB_NAME swap TARGET_JOB_NAME
-
manageJob JOB_NAME move TARGET_MACHINE_NAME
-
manageJob JOB_NAME shift up
-
manageJob JOB_NAME shift down
-
manageJob JOB_NAME delete
-
requestDeletion n/JOB_NAME
-
findJob [JOB_NAME_1] [JOB_NAME_2]
-
listJobs
-
exit
AddJob Version 1.0
-
Add a Print Job
Adds a print job to a machine’s queue in MakerManager.
Outcome: You will see the job in if you scroll down the queue of the machine you specified.
SpecifyingAUTO
as MACHINE_NAME will let the software optimize which queue to add the print to.
Available priorities:URGENT
,HIGH
,NORMAL
.
Please note thatPRIORITY
is currently just a display feature aimed at helping the lab manager gain more information.Prints cannot be added to disabled
Machines!
Multiple tags can be added to one print job.Format: addJob n/PRINT_NAME m/MACHINE_NAME on/OWNER_NAME pr/PRIORITY d/DURATION(in hours) jn/NOTE [t/TAG]...
Example: addJob n/iDCP m/UpBox on/TIAN YUAN pr/HIGH d/1.5 jn/This is for the iDCP project t/iDCP
Find Job and List Jobs
-
Finding Prints: Finds Jobs based on given keywords. You have to give at least 1 argument.
Outcome: You will see only matching Jobs shown in the UI.After the filtered job list is displayed, use the listJobs
command to return to the main menu.
Format: findJob [JOB_NAME_1] [JOB_NAME_2]...
Example: findJob gears chassis cup
-
Listing Prints
Lists all prints.
Outcome: All Prints will be visible in the UI.Format: listJobs
Example: listJobs
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. |
Model component
API : Model.java
The Model
,
-
stores the Address Book data.
-
exposes an unmodifiable
ObservableList<Admin>
that can be 'observed' -
exposes an unmodifiable
ObservableList<Job>
that can be 'observed' in machines -
exposes an unmodifiable
ObservableList<Machine>
that can be 'observed' -
eg. the UI can be bound to these 3 lists so that the UI automatically updates when the data in any of the list changes.
-
does not depend on any of the other three components.
Storage component
API : Storage.java
The Storage
component,
-
stores an initialized
UserPref
object that represents the user’s preferences derived from JsonUserPrefsStorage -
can save
UserPref
objects in json format and read it back. -
can save the Address Book data in 2 separate xml format
-
XmlSerializableMakerManagerAdmins
-
XmlSerializableMakerManagerMachines
-
Manual Testing Cases
Due to the limit of page, full testing cases can be referred in the Developer Guide.
Appendix A: Instructions for Manual Testing
Given below are instructions to test the app manually.
Testers are encouraged to follow the testing codes sequentially.
These instructions only provide a starting point for testers to work on; testers are expected to do more exploratory testing. |
Launch and Shutdown
-
Initial launch
-
Download the jar file and copy into an empty folder
-
Download the data files by downloading the DemoDataV1.4.zip from the root.
-
Unzip and save the data files in a folder called 'data' in the same directoryin which you saved the jar file on your computer.
The 'data' file should contain the 3 files below. data/addressBook.xml data/makerManagerAdmins.xml data/makerManagerMachines.xml
-
Double-click the jar file
Expected view: Shows the GUI with a list of printers displayed horizontally where each column represents a printer with print jobs assigned to it. These printers are already pre-added to the maker manager local database. The window size may not be optimum.
-
-
Saving window preferences
-
Resize the window to an optimum size. Move the window to a different location. Close the window.
-
Re-launch the app by double-clicking the jar file.
Expected: The most recent window size and location is retained.
-
-
Leaving the app:
-
Enter the command:
exit
-
The window shall close automatically.
-
Ease of use
-
Test case: help window activation
help
Expected: A pop-up window containing the user guide will be displayed.