Skip to content

Commit

Permalink
Update user guide (#26)
Browse files Browse the repository at this point in the history
* Update build.gradle file (minor changes)

* Complete set-up for project (as per the Developer Guide)

* Update README.adoc with Travis CI build status

* Update some files to ensure that ./config/travis/run-checks.sh runs fine

* Create the 4 different ListStorages. Create AlfredStorage. Create AlfredStorageManager (halfway done).

* Creation of all necessary Storage classes (with the exception of the TeamListStorage handler classes)

* Added Storage classes for TeamList

* Fix bracket issue

* Update Storage classes with appropriate JSON adaptation

* Update User Guide

* Update README.adoc
  • Loading branch information
brianyenna authored and hcwong committed Oct 3, 2019
1 parent 69566aa commit c1bf3a8
Show file tree
Hide file tree
Showing 3 changed files with 138 additions and 79 deletions.
22 changes: 11 additions & 11 deletions README.adoc
Original file line number Diff line number Diff line change
@@ -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"]
Expand All @@ -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

* <<UserGuide#, User Guide>>
* <<DeveloperGuide#, Developer Guide>>
* <<LearningOutcomes#, Learning Outcomes>>
* <<AboutUs#, About Us>>
* <<ContactUs#, Contact Us>>

== 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]

Expand Down
195 changes: 127 additions & 68 deletions docs/UserGuide.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
= AddressBook Level 3 - User Guide
= Alfred - The Hackathon Butler (User Guide)
:site-section: UserGuide
:toc:
:toc-title:
Expand All @@ -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 <<Quick Start>> 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 <<Quick Start>> 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.
+
Expand All @@ -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/[email protected] a/John street, block 123, #01-01`
* `add participant n/Betsy Crowe t/friend e/[email protected] 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/[email protected] a/John street, block 123, #01-01`
* `add n/Betsy Crowe t/friend e/[email protected] 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/[email protected]` +
Edits the phone number and email address of the 1st person to be `91234567` and `[email protected]` 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

Expand Down
Binary file modified docs/images/Ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit c1bf3a8

Please sign in to comment.