From 3dc9b0925a86d02855856eedee9e21492153cef2 Mon Sep 17 00:00:00 2001 From: Deborah Low Shi Lei Date: Thu, 22 Mar 2018 09:06:02 +0800 Subject: [PATCH] Developer guide (#67) * Update * Dev guide --- docs/DeveloperGuide.adoc | 37 ++++++++++++++++++++++++++++++++ docs/diagrams/RCPersonClass.JPG | Bin 0 -> 30543 bytes 2 files changed, 37 insertions(+) create mode 100644 docs/diagrams/RCPersonClass.JPG diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 5e986bcbe758..af392a825a7d 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -448,6 +448,12 @@ CollegeZone users may now use shortcuts to perform desired tasks. These shortcut //end::find[] +// tag::tagcolours[] +=== Enhanced tag colours +Tags are now colour-coded which allows improved differentiation between many different tags. +// end::tagcolours[] + +[d] === Since v1.2 // tag::addandedit[] === Targeted add and edit command @@ -457,14 +463,45 @@ As CollegeZone is catered toward NUS RC4 Residents, we have changed the attribut *Name, Mobile Number, Birthday, Level of Friendship, RC4 Unit Number, RC4 CCAs and Tags*. + This is done by removing unwanted attributes of a person and adding new attributes of a person. +image::RCPersonClass.JPG[width="450"] + Figure 3.7.1: Person Class diagram with added attributes + ===== Aspect: Nature of new Attributes * Birthday: Must be a valid date. * Level Of Friendship: Level of friendship is an integer from 1 to 10. The level is indicated by the number of hearts via the UI. * Unit Number: Must be a valid unit number in RC4. * A RC4 resident is able to have multiple CCAs. +===== Aspect: displaying Level Of Friendship +* Level of Friendship is displayed as a string of heart symbols. It is represented this way as it more intuitive for users to understand what the symbols mean. // end::addandedit[] +=== Suggested: Set Reminders +As RC4 residents have events, classes and meetings to go to at a certain date and time, we decided on implementing a reminder feature to allow users to add reminders in CollegeZone. + +Reminder commands are undoable and redoable for the benefit users to redo and undo a command they did or did not intend to change. + +*Reminder features:* + + +* Adding a reminder to the Calendar +* Editing a reminder on the Calendar +* Deleting a reminder on the Calendar +* Acknowledging a reminder on the Calendar + +*Reminder objects will consist of 3 attributes :* + +1. the date, time and recurrence of reminder + +2. the level of urgency of reminder + +3. the reminder text content + +The reminders will be stored in an ArrayList of all the reminder objects. Each reminder will have specific positive integer index number. + +A reminder will be *green* until it is due. + +A reminder will turn and remain orange for 24 hours if it's due. + +This is when user can start acknowledging a reminder on the Calendar. + +After acknowledging it, it is removed from calendar. + +If it's overdue and not acknowledged, it will turn Grey. + + +Bottom Panel: Number of orange reminders + + + == Documentation We use asciidoc for writing documentation. diff --git a/docs/diagrams/RCPersonClass.JPG b/docs/diagrams/RCPersonClass.JPG new file mode 100644 index 0000000000000000000000000000000000000000..9c8f73c1b9f4cc8f0a651b9213790d20c620ceb6 GIT binary patch literal 30543 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 G*Z&9pk@rFX literal 0 HcmV?d00001