Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[chashaobao] iP #640

Open
wants to merge 45 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
68c58c1
Add Gradle support
May 24, 2020
03523ec
Bump gradle and lib version
Eclipse-Dominator Aug 5, 2023
81a9c53
build.gradle: Prevent generating a second JAR file
aureliony Jul 16, 2024
60e495d
ip_wk2_level-0
Aug 26, 2024
fddb9e9
ip wk2 level-1
Aug 26, 2024
48f9b91
ip wk2 level-2
Aug 26, 2024
064c6c3
wk2 ip level-3
Aug 31, 2024
97639d6
wk2 level-4
Aug 31, 2024
4f01857
wk2 ip level-5
Aug 31, 2024
1df1350
wk2 ip level-6
Aug 31, 2024
55989ae
add automated-text-ui-testing
Aug 31, 2024
957bf55
add Level-7 changes
Sep 3, 2024
dfae243
update reading and writing of saved tasks
Sep 4, 2024
0dea61f
add date and time for deadline and event
Sep 4, 2024
cd8b26e
abstract more classes
Sep 5, 2024
421974d
abstract out classes
Sep 5, 2024
08746c5
Merge remote-tracking branch 'origin/add-gradle-support'
Sep 5, 2024
ba6a7ef
correct packages
Sep 5, 2024
91afd9e
correctly add packages
Sep 5, 2024
3da8d0b
add JUnit: TaskListTest and UiTest
Sep 5, 2024
fb664fa
add headers
Sep 6, 2024
991b22f
add search function
Sep 6, 2024
6df0184
resolve merge conflicts
Sep 6, 2024
c7862f4
merge branches
Sep 6, 2024
1ee7602
add gui
Sep 6, 2024
5f50efb
add gui
Sep 6, 2024
e73a476
Add assertions
Sep 14, 2024
b01a403
Update packages to follow convention
Sep 14, 2024
5656a9d
Update packages
Sep 14, 2024
620f3de
Merge pull request #2 from chashaobao123/branch-A-Assertions
chashaobao123 Sep 14, 2024
20e7261
Resolve import errors
Sep 14, 2024
e543672
Merge with master
Sep 14, 2024
668af35
Merge pull request #3 from chashaobao123/branch-A-CodeQuality
chashaobao123 Sep 14, 2024
c088340
Add assertions
Sep 14, 2024
78d3987
Merge branch 'master' of github.com:chashaobao123/ip
Sep 14, 2024
1c02284
Merge Level-8 to master
Sep 17, 2024
ac340f4
Merge pull request #4 from chashaobao123/branch-Level-8
chashaobao123 Sep 17, 2024
55d7ca0
Resolved merge conflicts from pull-request
Sep 17, 2024
cd35b95
Add proper headings
Sep 17, 2024
b6f266c
Edit error messages to fit personality
Sep 17, 2024
a0b1e69
Add JUnit tests
Sep 17, 2024
6bf7a93
Update README
Sep 17, 2024
6f02cc0
Update README
Sep 17, 2024
e4dc31b
Add Ui.png to docs folder
Sep 22, 2024
dabdb0b
Update README
Sep 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ src/main/resources/docs/
bin/

/text-ui-test/ACTUAL.TXT
text-ui-test/EXPECTED-UNIX.TXT
text-ui-test/EXPECTED-UNIX.TXT
3 changes: 3 additions & 0 deletions .vs/ProjectSettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}
6 changes: 6 additions & 0 deletions .vs/VSWorkspaceState.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"ExpandedNodes": [
""
],
"PreviewInSolutionExplorer": false
}
Binary file not shown.
Binary file added .vs/ip/v17/.wsuo
Binary file not shown.
12 changes: 12 additions & 0 deletions .vs/ip/v17/DocumentLayout.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\65814\\OneDrive\\NUSY2S1\\CS2103T\\IP\\ip\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": []
}
]
}
Binary file added .vs/slnx.sqlite
Binary file not shown.
92 changes: 68 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,68 @@
# Duke project template

This is a project template for a greenfield Java project. It's named after the Java mascot _Duke_. Given below are instructions on how to use it.

## Setting up in Intellij

Prerequisites: JDK 17, update Intellij to the most recent version.

1. Open Intellij (if you are not in the welcome screen, click `File` > `Close Project` to close the existing project first)
1. Open the project into Intellij as follows:
1. Click `Open`.
1. Select the project directory, and click `OK`.
1. If there are any further prompts, accept the defaults.
1. Configure the project to use **JDK 17** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).<br>
In the same dialog, set the **Project language level** field to the `SDK default` option.
3. After that, locate the `src/main/java/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:
```
Hello from
____ _
| _ \ _ _| | _____
| | | | | | | |/ / _ \
| |_| | |_| | < __/
|____/ \__,_|_|\_\___|
```
# Ah Bang Mang

This is a Singaporean uncle helper chatbot.

## Features
1. View task list
2. Add varied tasks to task list
1. Todo: regular task that only displays a description
2. Deadline: task that can include a deadline
3. Event: task that has a start and end date
3. Mark tasks as done/ undone
4. Delete tasks from list
5. Find tasks within list


### Bonus
* Appealing GUI
* Singlish responses by chatbot
* Task list is saved to computer hard drive to retrieve when needed
* Asking `help` will provide the full list of commands and respective notations

--------------------------------------------
## User Guide
This guide will walk you through how to use the key features of Ah Bang Mang.

### 1. Viewing the Task List

To view all the tasks you have in your list, simply use the following command: ```list```

This command will display all tasks with their current status (done or not done) and their details.

### 2. Adding Tasks

You can add various types of tasks to your list. Here's how:

* #### Todo: ```todo <description>```
* for example, ```todo finish homework```


* #### Deadline: ```deadline <description> /by <date time>```
* The date-time should be in the format `yyyy-MM-ddTHH:mm`, or `yyyy-MM-dd` to set the time automatically to `23:59`.
You can also use `today` to set the deadline to the end of the current day.

* for example, ```deadline Submit report /by 2024-09-17T23:59```

* #### Event: ```event <description> /from <start-date-time> /to <end-date-time>```
* The date-time should be in the format `yyyy-MM-ddTHH:mm`, or `yyyy-MM-dd` if the event has no specific time.
* for example, ```event Team meeting /from 2024-09-17T09:00 /to 2024-09-17T11:00```

### 3. Marking Tasks
You can mark tasks as done or undone using the following commands:
* #### Mark Task as Done: `mark <task-number>`
* for example, `mark 1`
* #### Mark Task as Undone: `unmark <task-number>`
* for example, `unmark 1`

### 4. Delete Tasks
* You can delete tasks from list by this simple command: `delete <task-number>`
* for example, `delete 1`

### 5. Find Tasks
* You can find tasks from list by this simple command: `find <query>`
* for example, `find homework`

--------------------------------------------
## Acknowledgements:
1. ChatGPT: Writing JUnit command tests
2. SE-EDU JavaFX Tutorial: GUI base code
77 changes: 77 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
plugins {
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version '7.1.2'
}

repositories {
mavenCentral()
}

dependencies {
// JUnit Jupiter API
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.2'

// Mockito
testImplementation 'org.mockito:mockito-junit-jupiter:4.8.0' // Mockito for JUnit Jupiter

// Use platform-specific JavaFX dependencies based on the operating system
String javaFxVersion = '17.0.7'
implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux'
}

test {
useJUnitPlatform()

testLogging {
events "passed", "skipped", "failed"
showExceptions true
exceptionFormat "full"
showCauses true
showStackTraces true
showStandardStreams = false
}
}

application {
mainClass.set("bangmang.gui.Launcher")
}

shadowJar {
archiveBaseName = "duke"
archiveClassifier = null
archiveVersion = null
}

run {
standardInput = System.in
}

jar {
manifest {
attributes 'Main-Class': 'bangmang.gui.Launcher'
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}

tasks.jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

run {
enableAssertions = true
}
5 changes: 5 additions & 0 deletions data/LittleMissHelpful.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
D | 0 | ca1 | 2024-09-07T23:59:50.651522300
T | 0 | book grab
D | 0 | clubbing | 2024-09-20T23:59:08.299430100
E | 0 | filming | 2024-09-20T00:00 | 2024-09-21T00:00
E | 0 | wedding | 2024-09-21T18:00 | 2024-09-21T22:00
70 changes: 54 additions & 16 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,68 @@
# Duke User Guide
# Ah Bang Mang

// Update the title above to match the actual product name
This is a Singaporean uncle helper chatbot.

// Product screenshot goes here
## Features
1. View task list
2. Add varied tasks to task list
1. Todo: regular task that only displays a description
2. Deadline: task that can include a deadline
3. Event: task that has a start and end date
3. Mark tasks as done/ undone
4. Delete tasks from list
5. Find tasks within list

// Product intro goes here

## Adding deadlines
### Bonus
* Appealing GUI
* Singlish responses by chatbot
* Task list is saved to computer hard drive to retrieve when needed
* Asking `help` will provide the full list of commands and respective notations

// Describe the action and its outcome.
--------------------------------------------
## User Guide
This guide will walk you through how to use the key features of Ah Bang Mang.

// Give examples of usage
### 1. Viewing the Task List

Example: `keyword (optional arguments)`
To view all the tasks you have in your list, simply use the following command: ```list```

// A description of the expected outcome goes here
This command will display all tasks with their current status (done or not done) and their details.

```
expected output
```
### 2. Adding Tasks

## Feature ABC
You can add various types of tasks to your list. Here's how:

// Feature details
* #### Todo: ```todo <description>```
* for example, ```todo finish homework```


## Feature XYZ
* #### Deadline: ```deadline <description> /by <date time>```
* The date-time should be in the format `yyyy-MM-ddTHH:mm`, or `yyyy-MM-dd` to set the time automatically to `23:59`.
You can also use `today` to set the deadline to the end of the current day.

// Feature details
* for example, ```deadline Submit report /by 2024-09-17T23:59```

* #### Event: ```event <description> /from <start-date-time> /to <end-date-time>```
* The date-time should be in the format `yyyy-MM-ddTHH:mm`, or `yyyy-MM-dd` if the event has no specific time.
* for example, ```event Team meeting /from 2024-09-17T09:00 /to 2024-09-17T11:00```

### 3. Marking Tasks
You can mark tasks as done or undone using the following commands:
* #### Mark Task as Done: `mark <task-number>`
* for example, `mark 1`
* #### Mark Task as Undone: `unmark <task-number>`
* for example, `unmark 1`

### 4. Delete Tasks
* You can delete tasks from list by this simple command: `delete <task-number>`
* for example, `delete 1`

### 5. Find Tasks
* You can find tasks from list by this simple command: `find <query>`
* for example, `find homework`

--------------------------------------------
## Acknowledgements:
1. ChatGPT: Writing JUnit command tests
2. SE-EDU JavaFX Tutorial: GUI base code
Binary file added docs/Ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading