diff --git a/README.adoc b/README.adoc index d34211c9341..b6388c8b108 100644 --- a/README.adoc +++ b/README.adoc @@ -1,11 +1,11 @@ -= Address Book (Level 3) += Alfred: The Hackathon Butler ifdef::env-github,env-browser[:relfileprefix: docs/] -https://travis-ci.org/se-edu/addressbook-level3[image:https://travis-ci.org/se-edu/addressbook-level3.svg?branch=master[Build Status]] -https://ci.appveyor.com/project/damithc/addressbook-level3[image:https://ci.appveyor.com/api/projects/status/3boko2x2vr5cc3w2?svg=true[Build status]] -https://coveralls.io/github/se-edu/addressbook-level3?branch=master[image:https://coveralls.io/repos/github/se-edu/addressbook-level3/badge.svg?branch=master[Coverage Status]] -https://www.codacy.com/app/damith/addressbook-level3?utm_source=github.com&utm_medium=referral&utm_content=se-edu/addressbook-level3&utm_campaign=Badge_Grade[image:https://api.codacy.com/project/badge/Grade/fc0b7775cf7f4fdeaf08776f3d8e364a[Codacy Badge]] -https://gitter.im/se-edu/Lobby[image:https://badges.gitter.im/se-edu/Lobby.svg[Gitter chat]] +https://travis-ci.com/AY1920S1-CS2103T-F11-1/main[image:https://travis-ci.com/AY1920S1-CS2103T-F11-1/main.svg?branch=master[Build Status]] + +**Alfred isn't just for Batman. He's for all you Hackathon Organisers out there, too!** +[quote, Alfred Pennyworth, The Dark Knight] +Will you be wanting the Batpod, sir? ifdef::env-github[] image::docs/images/Ui.png[width="600"] @@ -15,21 +15,21 @@ ifndef::env-github[] image::images/Ui.png[width="600"] endif::[] -* This is a desktop Address Book application. It has a GUI but most of the user interactions happen using a CLI (Command Line Interface). -* It is a Java sample application intended for students learning Software Engineering while using Java as the main programming language. -* It is *written in OOP fashion*. It provides a *reasonably well-written* code example that is *significantly bigger* (around 6 KLoC)than what students usually write in beginner-level SE modules. +* Targeting the Human Resource Managers tasked with organising and managing Hackathons, Alfred is a Desktop application meant to make the job easier. +* The application provides a quick, simple and intuitive interface to manage the logistics and administrative details behind Hackathons. +* The application has a Graphical User Interface, but most of the user interactions happen using a CLI (Command Line Interface) == Site Map * <> * <> -* <> * <> * <> == Acknowledgements -* Some parts of this sample application were inspired by the excellent http://code.makery.ch/library/javafx-8-tutorial/[Java FX tutorial] by +* The origin of this codebase is the AddressBook-Level3 project, created by SE-EDU initiative at https://se-education.org +* Some parts of this sample application for AddressBook-Level3 were in turn inspired by the excellent http://code.makery.ch/library/javafx-8-tutorial/[Java FX tutorial] by _Marco Jakob_. * Libraries used: https://openjfx.io/[JavaFX], https://github.com/FasterXML/jackson[Jackson], https://github.com/junit-team/junit5[JUnit5] diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index 4e5d297a19f..86ae3822ebf 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -1,4 +1,4 @@ -= AddressBook Level 3 - User Guide += Alfred - The Hackathon Butler (User Guide) :site-section: UserGuide :toc: :toc-title: @@ -14,16 +14,25 @@ ifdef::env-github[] endif::[] :repoURL: https://github.com/se-edu/addressbook-level3 -By: `Team SE-EDU` Since: `Jun 2016` Licence: `MIT` +By: `Team F11-1` Since: `August 2019` Licence: `MIT` == Introduction -AddressBook Level 3 (AB3) is for those who *prefer to use a desktop app for managing contacts*. More importantly, AB3 is *optimized for those who prefer to work with a Command Line Interface* (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. Interested? Jump to the <> to get started. Enjoy! +Alfred is a desktop application for helping Human Resource managers organise a Hackathon event. +Hackathons are difficult to manage manually as they involve different groups of individuals, each +of whom have a different role to play and agenda to fulfill in the Hackathon. Alfred helps streamline +this organisation and management process, allowing you to quickly get up to speed with the logistics +and administrative details of the Hackathon you are organising. + +Furthermore, Alfred is *optimized for those who prefer to work with a Command Line Interface (CLI)*, while +maintaining the benefits of having visual responses in a Graphical User Interface. + +Interested? Well, head to <> to get started. We hope Alfred serves you well! == Quick Start . Ensure you have Java `11` or above installed in your Computer. -. Download the latest `addressbook.jar` link:{repoURL}/releases[here]. +. Download the latest `alfred.jar` link:{repoURL}/releases[here]. . Copy the file to the folder you want to use as the home folder for your Address Book. . Double-click the file to start the app. The GUI should appear in a few seconds. + @@ -46,116 +55,166 @@ e.g. typing *`help`* and pressing kbd:[Enter] will open the help window. ==== *Command Format* -* Words in `UPPER_CASE` are the parameters to be supplied by the user e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. -* Items in square brackets are optional e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`. -* Items with `…`​ after them can be used multiple times including zero times e.g. `[t/TAG]...` can be used as `{nbsp}` (i.e. 0 times), `t/friend`, `t/friend t/family` etc. +* Words in `UPPER_CASE` are the parameters to be supplied by the user e.g. in `add mentor n/NAME`, `NAME` is a parameter which can be used as `add mentor n/John Doe`. +* Words in {curly braces} indicate values for the command that need to be supplied e.g. in `add {mentor/participant/list}`, you can choose to type `add mentor`, `add participant` or `add team` * Parameters can be in any order e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. ==== === Viewing help : `help` +This command displays a help page in a separate pop-up window. Should you require further information, +the pop-up window also includes links to further references and documentation. + Format: `help` -=== Adding a person: `add` +=== Adding an Entity: `add {participant/mentor/team}` + +Adds an entity for Alfred to keep track of + +**** +* Creates an Entity. Each Entity object will have a unique ID assigned to it. +* As of version 1.1, all the fields must be provided. There are no optional fields. +**** + +==== Adding a Participant: `add participant [PARAMETERS]` +Format: `add participant n/NAME` + +Examples: -Adds a person to the address book + -Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...` +* `add participant n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` +* `add participant n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` -[TIP] -A person can have any number of tags (including 0) +==== Adding a Mentor: `add mentor [PARAMETERS]` +Format: `add mentor n\NAME` Examples: -* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` -* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` +* `add mentor /nProfessor Superman` +* `add mentor /nDoctor Batman` -=== Listing all persons : `list` +==== Adding a Team: `add team [PARAMETERS]` +Format: `add team n\NAME` -Shows a list of all persons in the address book. + -Format: `list` +Examples: +* `add team /nTeam01` +* `add team /nHackathonWinnersForSure` -=== Editing a person : `edit` +=== Updating an Entity: `edit {mentor/participant/team} ID [PARAMETERS]` -Edits an existing person in the address book. + -Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]...` +Edits an entity based on the supplied parameter values **** -* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index *must be a positive integer* 1, 2, 3, ... +* Updates the Entity with the specified `ID`. The ID is a unique identifier for the Entity. * At least one of the optional fields must be provided. * Existing values will be updated to the input values. -* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person's tags by typing `t/` without specifying any tags after it. **** Examples: +* `edit mentor M01 \nNewMentorName` +* `edit team T01 \nNewTeamName` +* `edit participant P01 \nNewParticipantNAme` -* `edit 1 p/91234567 e/johndoe@example.com` + -Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively. -* `edit 2 n/Betsy Crower t/` + -Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. +=== Listing all Entities : `list {mentor/team/participant}` -=== Locating persons by name: `find` +Shows a list of all the Entities that Alfred keeps track of + + +**** +* The fields of the Entity will be displayed on the Graphical User Interface. +**** + +Examples: +* `list mentor` +* `list participant` +* `list team` -Finds persons whose names contain any of the given keywords. + -Format: `find KEYWORD [MORE_KEYWORDS]` +=== Deleting an Entity: `delete {participant/mentor/team} ID` +Deletes an Entity, so that Alfred will no longer keep track of that Entity. +This is a permanent operation, so please be careful. **** -* The search is case insensitive. e.g `hans` will match `Hans` -* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` -* Only the name is searched. -* Only full words will be matched e.g. `Han` will not match `Hans` -* Persons matching at least one keyword will be returned (i.e. `OR` search). e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` +* Deletes the Entity with the specified ID. +* As of version 1.1, the delete operation is permanent and irreversible. Be careful. **** Examples: +* `delete mentor M01` +* `delete participant P01` +* `delete team T01` -* `find John` + -Returns `john` and `John Doe` -* `find Betsy Tim John` + -Returns any person having names `Betsy`, `Tim`, or `John` +=== Saving the data: `save` -// tag::delete[] -=== Deleting a person : `delete` +Data in Alfred is saved to the hard disk automatically after any command that changes the data. + +There is no need to save the data manually. -Deletes the specified person from the address book. + -Format: `delete INDEX` +=== Finding a Specific Entity: `find {mentor/team/participant} NAME` -**** -* Deletes the person at the specified `INDEX`. -* The index refers to the index number shown in the displayed person list. -* The index *must be a positive integer* 1, 2, 3, ... -**** +A single Entity can be searched for via their name, instead of the ID, which is hard to remember. + Examples: +* `find participant n/John Doe` +* `find mentor n/Joshua Wong` +* `find team n/FutureHackathonWinner` + +=== Judging and Leaderboard Features + +==== List Team Ranking: `listDescending` +Lists the teams in descending order by the team + +==== Get the top k teams: `getTopK NUMBER` +List the top k teams in descending order + +Example: +* `getTopK 5` + +==== Update points: `updatePoints TEAM_ID NEW_POINTS` +Update the points that a particular team receives. -* `list` + -`delete 2` + -Deletes the 2nd person in the address book. -* `find Betsy` + -`delete 1` + -Deletes the 1st person in the results of the `find` command. +==== Update Winner: `updateWinnerCategiry PRIZE_CATEGORY TEAM_ID` +Updates the winner of a particular prize category + +==== List Prize Categories: `listPrizes` +Lists the prize categories and their winners (if any) + + +=== Bulk Registration: `addBulk PATH_TO_CSV_FILE` +Allow the addition of multiple participants at once through the specification of a .csv file + +Example: +* `addBulk C:\User\Hackathon2019\participant.csv` + +=== Seating: `locate {participant_name/team_name}` (Coming in v2.0) +Track where participants are seated + +Examples: +* `locate n/ParticipantName` +* `locate n/TeamName` -// end::delete[] -=== Clearing all entries : `clear` +=== Swag (Coming in v2.0) +==== Add Swag: `add swag DESCRIPTION QUANTITY` +Add swag to inventory +Examples: `add swag Android Plushie 5` +==== Track inventory of available swags: `list swag` +List the currently available swag -Clears all entries from the address book. + -Format: `clear` +=== Schedule (Coming in v2.0) +==== Add schedule: `addSchedule TIME TEAM_ID MENTOR_ID` +Add a schedule for a team -=== Exiting the program : `exit` +==== Update schedule: `updateSchedule SCHEDULE_ID TIME TEAM_ID MENTOR_ID` +Update a schedule for a team -Exits the program. + -Format: `exit` +==== Delete schedule: `deleteSchedule SCHEDULE_ID` +Delete a Schedule for a Team -=== Saving the data +=== Food (Coming in v2.0) +==== Add Food Company and Inventory: `addFoodCompany COMPANY_NAME INVENTORY QUANTITY` +==== Mark Food as Received: `receiveFood COMPANY_NAME INVENTORY QUANTITY` +==== List Food Inventory: `list food` -Address book data are saved in the hard disk automatically after any command that changes the data. + -There is no need to save manually. +=== Waitlist (Coming in v2.0) +==== Add to waitlist: `addToWaitList USER_ID` +==== Remove from waitlist: `removeFromWaitList USER_ID` +==== List by Registration Time: `listWaitList` -// tag::dataencryption[] -=== Encrypting data files `[coming in v2.0]` -_{explain how the user can enable/disable data encryption}_ -// end::dataencryption[] == FAQ diff --git a/docs/images/Ui.png b/docs/images/Ui.png index 5bd77847aa2..0c784edf63c 100644 Binary files a/docs/images/Ui.png and b/docs/images/Ui.png differ